【Commandパターン】GUIイベント処理や履歴管理で用いるデザインパターン【コード例:Java】

【Commandパターン】GUIイベント処理や履歴管理で用いるデザインパターン【コード例:Java】

前書き:Commandパターンとは Commandパターンは、一つの命令(操作)に対応するメソッドを作成するのではなく、命令に対応するクラス(コマンド)を作成する方法です。 命令をクラス化する事によって得られるメリットは、以下の3点があります ...

January 9, 2021 · 5 min
【推しは誰?】OSS開発をサポートしたく、金銭的なコントリビュートを始めました【elementary OS】

【推しは誰?】OSS開発をサポートしたく、金銭的なコントリビュートを始めました【elementary OS】

 前書き:日頃からお世話になっているOSSへの貢献 2021年は、elementary OSに金銭面(超少額)サポートします! 私はプロプラエタリソフトよりも、ソースコードが公開されているOSS(Open Source Software)を好んで使用します。OSSは技術的な仕様がコードベースで確認でき、プロプラエタリと違って企業の方針転換に振り回される事が少ないからです。 ...

January 9, 2021 · 5 min
【オブジェクト指向】全23種類のGoFデザインパターンに関する説明と参考書籍

【オブジェクト指向】全23種類のGoFデザインパターンに関する説明と参考書籍

Gang Of Fourデザインパターンを学ぶメリット Gang of Fourのデザインパターンとは、「よく見かける機能要件(解決したい問題)」と「各機能要件に対応する設計方針」を23種類に整理したものです。例えば、「単一リソースにアクセスする場合はSingletonデザインパターンが良い」というように、機能要件に適した設計(デザインパターン)を提案しています。 ...

January 7, 2021 · 4 min
【Iteratorパターン】C言語で見かけるぐらい頻出のデザインパターン【コード例:Java、Ruby】

【Iteratorパターン】C言語で見かけるぐらい頻出のデザインパターン【コード例:Java、Ruby】

前書き:デザインパターンという認識がなかった Iteratorデザインパターンは、配列/List/Mapなどのコレクション(要素の集合)を順次アクセスする際に、どのようなコレクションであっても同じAPIで操作可能にする設計方法です。 ...

January 2, 2021 · 7 min
ドスパラのTHIRDWAVE VF-AD4にelementary OS(Ubuntu派生)を入れた感想

ドスパラのTHIRDWAVE VF-AD4にelementary OS(Ubuntu派生)を入れた感想

前書き:安価なノートPC VF-AD4を購入しました 私は以前から、物書きやコードリーディングの用途で、ノートPCの購入を検討していました。 で、2020年 賞与をいただいたタイミングで、ドスパラ THIRDWAVE VF-AD4の購入に踏み切りました。お金をケチって整備品を購入したので、27,755円!安い! ...

January 2, 2021 · 7 min
【roff形式を手書きは無理ゲー】manページをMarkdown + Pandocで作成【with manページお作法】

【roff形式を手書きは無理ゲー】manページをMarkdown + Pandocで作成【with manページお作法】

前書き:manualページは伝統的なドキュメント manページは、UNIX系OSのドキュメントであり、コマンドやシステムコールなどの説明が記載されています。 Unix v7の時代(1979年)から変化が少ないため、2020年現在の視点で見ると表現力に難があります。具体的には以下のような欠点があり、manページを良質なドキュメントとするには文章力を試されます。 ...

December 19, 2020 · 7 min
【コーディングルール】C言語ライブラリのAPIを実装する際に注意すべき事柄

【コーディングルール】C言語ライブラリのAPIを実装する際に注意すべき事柄

前書き:未だにC言語で消耗中 2020年現在、C言語ライブラリをフルスクラッチで開発する機会はほぼ無いと思われますが、歴史のある企業に勤めている方は内製ライブラリ(秘伝のタレ)を修正/機能追加する機会があるのではないでしょうか。 ...

December 19, 2020 · 7 min
【visudo / vigr / vipw】システムファイルをsudo viで編集は駄目【sudoers / group / passwd】

【visudo / vigr / vipw】システムファイルをsudo viで編集は駄目【sudoers / group / passwd】

前書き:システムファイルの編集は慎重に Linuxは、ユーザ/パスワード/管理者権限などの情報を/etc以下に存在するシステムファイルで管理しています。 管理者権限があればシステムファイルを自由に書き換えられますが、書式を間違えた状態で保存してしまうとシステムが正しく動作しなくなります。下手すると、ログインできない状態に陥ります。 ...

December 16, 2020 · 3 min
【静的解析】ソースコード解析補助ツールSourcetrailの導入方法【例:systemd(C言語)】

【静的解析】ソースコード解析補助ツールSourcetrailの導入方法【例:systemd(C言語)】

前書き:Sourcetrailとは Sourcetrailは、C/C++/Java/Pythonで書かれたコードを解析し、クラス(構造体)やメソッドの依存関係/呼び出し関係を可視化してくれるツールです。 以下の特徴を持つため、会社での業務利用でも気軽にSourcetrailを使用可能です。 Windows/Mac/Linuxで動作 ライセンスはGPL v3(使用は自由ですが、Sourcetrail自体の改変や販売はソースコード公開義務が発生) オフラインで動作(DBを作成しますが、外部サーバにアップロードしません) 使用例を下図に示します。 ...

December 12, 2020 · 9 min
【LPICで見た】/etc/motdの内容を出力しているのは誰?【答え:sshd】

【LPICで見た】/etc/motdの内容を出力しているのは誰?【答え:sshd】

 前書き:Message Of The Dayファイルとは LPIC受験者は、よくご存知の/etc/motd (Message Of The Day)ファイル。 ユーザがLinuxサーバにsshログインした際に、/etc/motdファイルの内容がターミナル上に表示されます。 ...

December 1, 2020 · 4 min
【CPU温度やI/Oの監視】Rapberry Pi4サーバにMonitorixをインストールする方法

【CPU温度やI/Oの監視】Rapberry Pi4サーバにMonitorixをインストールする方法

前書き:ラズパイサーバが停止するので監視したい Raspberry Pi4にPLEXマルチメディアサーバを導入して、約一ヶ月ほど運用した結果、2〜3日の稼働でシステム停止してしまう問題に遭遇しています。 この問題の対症療法として、Watch Dog Timerとheartbeatを用いてシステム停止時に自動再起動を行う対応を実施しました。 ...

November 28, 2020 · 7 min
【WatchDogTimer】Raspberry Pi4サーバがフリーズ(停止)した場合に自動再起動する方法【HeartBeat】

【WatchDogTimer】Raspberry Pi4サーバがフリーズ(停止)した場合に自動再起動する方法【HeartBeat】

前書き:ラズパイサーバがよく止まる ラズパイにPLEXマルチメディアサーバを導入して、約一ヶ月ほど運用した結果、2〜3日の稼働でシステム停止してしまう問題に遭遇しています。半日で停止する事もありました。 Plexメディアサーバー用に、 ・ラズパイ4(8GB) ・HDD 1TB ・SSD 128GB(Boot用) ・microSDは無し の環境を作成中。 このケースはmicroSDカード差込口を逆方向まで持ってくる基板が付いてきたけど、それを経由するとmicroSDの読み込みでエラーが頻出する。 なのでSSDブートに切り替え中。 pic.twitter.com/uvqZR5Gz0s ...

November 28, 2020 · 7 min
Cortex-A8 (ARMv7-A, e.x. BeagleBone Black)におけるコンテキストスイッチ/割り込み操作/Halt

Cortex-A8 (ARMv7-A, e.x. BeagleBone Black)におけるコンテキストスイッチ/割り込み操作/Halt

前書き:XINUソースコードから学ぶアセンブラ実装 本記事では、ARM Cortex-A8における コンテキストスイッチ 割り込み処理 Halt(システム停止) に関して、XINUソースコードのアセンブラ実装を例として紹介します。 ...

November 21, 2020 · 5 min
Cortex-A8 (ARMv7-A, e.x. BeagleBone Black)のレジスタ情報/アセンブラ命令/インラインアセンブラの書き方

Cortex-A8 (ARMv7-A, e.x. BeagleBone Black)のレジスタ情報/アセンブラ命令/インラインアセンブラの書き方

 前書き:XINU (Real Time OS)で学んだARMに関する情報 本記事では、ARM CPU(Cortex-A8、32bit)に対する調査内容を備忘録としてまとめています。 ...

November 21, 2020 · 7 min
【Go言語(Golang)】os.Exit()をユニットテストする方法(カバレッジも取得する方法)

【Go言語(Golang)】os.Exit()をユニットテストする方法(カバレッジも取得する方法)

前書き:os.Exit()の結果は親プロセスが受信 Go言語のos.Exit()は以下に示すコードで実装されており、最終的にシステムコールのexit()を呼び出し、プロセスを終了させます。 func Exit(code int) { if code == 0 { // Give race detector a chance to fail the program. // Racy programs do not have the right to finish successfully. runtime_beforeExit() } syscall.Exit(code) } システムコールExit()の引数codeは、そのプロセスの終了状態として親プロセスに伝わる仕様です(他言語のexit()コードも同等の挙動をします)。つまり、テストコードからos.Exit()をコールするメソッドを呼び出しても、その結果を取得できません。 ...

November 20, 2020 · 4 min
【Go言語(Golang)】ユニットテスト時にgo-flagsに任意の引数を渡す方法

【Go言語(Golang)】ユニットテスト時にgo-flagsに任意の引数を渡す方法

前書き:flag(Go標準)のテスト方法ばかり検索ヒット Go言語は、コマンドライン引数をパースする機能を持つflagパッケージが標準機能として提供されています。flagパッケージは、引数パース機能に対するユニットテストを簡単にするために、“flag.Commandline.Set()“が用意されています。 その一方で、OSSとして公開されているgo-flagsパッケージはどうでしょうか?flagパッケージよりも、go-flagsの方がコマンドライン引数を簡単に扱える特徴(ショート/ロングオプションサポート、Helpメッセージ自動生成など)がありますが、テスト用の仕組みが見当たりません。 Googleで検索しても、go-flagsパッケージによるコマンドライン引数パースをテストする方法が出てこなかったため、本記事ではその方法(ベストな方法ではなく、妥協した方法)を紹介します。 ...

November 20, 2020 · 3 min
【Bash】同じシェルスクリプトの二重起動(並列実行)を防止する方法

【Bash】同じシェルスクリプトの二重起動(並列実行)を防止する方法

前書き :同じタイミングで動かれると困る 同じシェルスクリプトが二重起動すると、処理によっては「無駄で時間のかかる処理を二重に行い、システムリソースを消費する事」があります。 ...

November 8, 2020 · 3 min
【苦行】C言語で正規表現を用いる方法【標準Cライブラリ(glibc)使用】

【苦行】C言語で正規表現を用いる方法【標準Cライブラリ(glibc)使用】

 前書き:C言語で正規表現を使う理由などない 正規表現(Regular Expression)は強力な機能なため、様々なLinuxコマンドやプログラミング言語、アプリに導入されています。特に、sed/awk/egrepコマンドやPerl/Rubyは、正規表現による文字列操作の代名詞のような存在です。 ...

November 1, 2020 · 18 min
【環境構築】Raspberry PiにPlex Media Serverをインストール【Kodi、Embyとの比較】

【環境構築】Raspberry PiにPlex Media Serverをインストール【Kodi、Embyとの比較】

前書き:メディアサーバの候補はどれか 撮りためた写真や動画、購入した音楽などが増えてくると、ローカルで管理するよりもメディアサーバで管理した方が家族にも共有しやすくて便利です。 Raspbery Piをメディアサーバとして運用する事を考え、使いやすそうなアプリを探した結果、Plex、Kodi、Embyの3種類が候補に上がりました。 ...

October 31, 2020 · 7 min
【Tips】何度も繰り返す開発環境構築をMakefileとシェルスクリプトで楽にする

【Tips】何度も繰り返す開発環境構築をMakefileとシェルスクリプトで楽にする

前書き:環境構築は面倒だから、楽をしたい 開発環境の構築は、その規模の大小に関わらず、面倒な作業です。 環境構築の面倒な部分 忘れてしまった環境構築手順を思い出す事 設定ファイルの修正(数が多いと特に面倒) パッケージマネージャが使えない場合、アプリの手動ビルド&インストール 依存関係が自動解決できない場合、依存関係を調査 構築を複数回繰り返す事(自宅/会社PCへの対応あるいは環境を壊した時) 環境構築は、プログラミングをする前段階の作業ですので、ここで消耗したくありません。 ...

October 29, 2020 · 7 min
【環境構築】Raspberry Pi 4台で作るKubernetesクラスタ

【環境構築】Raspberry Pi 4台で作るKubernetesクラスタ

前書き:憧れのラズパイクラスタ Raspberry Piでスパコンを構築する取り組みは昔からありましたが、最近は「Kubernetesクラスタを作ったよ」という報告が増えてきました。私もラズパイ4(8GB)を一台購入してラズパイが合計4台となったのをキッカケに、憧れのラズパイクラスタに手を出してみました! ...

September 27, 2020 · 9 min
Raspberry Pi3/4にDockerとdocker-composeをインストールする方法

Raspberry Pi3/4にDockerとdocker-composeをインストールする方法

前書き 本記事では、Raspberry Pi3/4(32bit、64bit)のいずれかに対して、Dockerおよびdocker-composeをインストールする方法を紹介します。 ...

September 27, 2020 · 3 min
Raspberry Pi4のimage(データ)をバックアップし、より大容量なmicroSDカードにリストアする方法

Raspberry Pi4のimage(データ)をバックアップし、より大容量なmicroSDカードにリストアする方法

前書き 本記事では、Raspberry Pi4のOS imageをバックアップし、より大容量なmicroSDカードにバックアップimageをリストアする方法を紹介します。 ...

September 2, 2020 · 4 min
【セキュリティ対策】Raspberry Pi4に新規ユーザを追加し、piユーザを削除

【セキュリティ対策】Raspberry Pi4に新規ユーザを追加し、piユーザを削除

前書き:piユーザは脆弱 Raspberry Piのデフォルトユーザであるpiユーザ(管理者権限あり)は、パスワードがraspberryに設定されています。この情報は悪意のあるユーザも当然知っているため、近年ではpiユーザを狙い撃ちにしたマルウェアが増えています。 ...

September 1, 2020 · 4 min
【環境構築】fish shellを用いたDebian環境にSDKMANおよびJava(JDK)をインストールする方法

【環境構築】fish shellを用いたDebian環境にSDKMANおよびJava(JDK)をインストールする方法

前書き:SDKMANはbash(もしくはzsh)前提 SDKMANは、JDK(Java開発環境)やGroovy、Scala、Gradleなどのバージョン管理ツールです。主に、JVM系のツールを管理します。Rubyのrbenv、Pythonのpyenvと同様の立ち位置のツールであり、CLIから任意のバージョンのソフト(例:Java)をインストール/使用/削除できます。 SDKMANの公式サイトに書かれている通り、SDKMANはbashで実装されています。そのため、Login Shellがbashの場合は問題なく動作しますが、fish環境では実行時にエラーが出てしまいます。 ...

August 30, 2020 · 5 min
【環境構築】Debian 10にSteamをインストールする方法:glXChooseVisual failedエラー回避

【環境構築】Debian 10にSteamをインストールする方法:glXChooseVisual failedエラー回避

前書き:Steam公式はLinuxをサポート済み Steamは、PCゲームの購入ができるプラットフォームであり、2012年からLinux環境でも動作します。Debian公式サイトにSteamの導入方法を紹介した記事がありますが、グラフィックボードがNVIDIA環境の場合は追加手順が必要です。 本記事では、追加手順を含めて、Steamのインストール方法を紹介します。 ...

August 28, 2020 · 3 min
元Win/MacユーザがメインPCをLinux(Debian)にした感想

元Win/MacユーザがメインPCをLinux(Debian)にした感想

前書き 本記事では、メインPCをLinuxに変えて良かった事/不便だった事を紹介します。 前提情報ですが、私のPC使用歴はWindowsが18年(Win2000〜Win10)、Macが8年(OS X 10.8〜macOS 10.15)、Linuxが4年(Debian8〜10)です。WindowsとLinuxは仕事で使用しており、ターミナルでのコマンド操作(CLI)に苦手意識はありません。むしろ、CLIが好きです。 ...

August 26, 2020 · 7 min
Debian(64bit)で32bitバイナリを実行もしくは作成する方法(C言語)

Debian(64bit)で32bitバイナリを実行もしくは作成する方法(C言語)

検証環境 Debian10(64Bit)、Ryzen 7 3800X環境で検証します。CPUアーキテクチャはIntel/AMDを想定しており、ARMに関しては本記事で説明しません。 ...

August 19, 2020 · 3 min
【Java 11】Shebangを用いたJavaソースファイル(単一)の実行方法 + Shebangエラー回避方法

【Java 11】Shebangを用いたJavaソースファイル(単一)の実行方法 + Shebangエラー回避方法

前書き:コンパイル無しでJavaアプリが動かせる 最近のJavaは、リリースペースが半年に一回と早まり、新機能が次々と追加されています。新機能の中で、Java 11からコンパイル無しでJavaソースファイル(単一ファイル)が実行できる機能があり、本記事ではその使い方(およびShebangエラー回避方法)を説明します。 ...

July 23, 2020 · 3 min
起動済みプロセス(例:デーモンプロセス)の標準出力を確認する方法

起動済みプロセス(例:デーモンプロセス)の標準出力を確認する方法

前書き:ログを残さないデーモンと出会った DBにアクセスするデーモンプロセスが、稀にSegmentation Faultでお亡くなりになる現象に遭遇しました。 このデーモンプロセスは、C言語で書かれており、デバッグ情報をログファイルに殆ど出力していませんでした。多くの情報は標準出力に出力されていたため、デバッグするにはデーモンプロセスの標準出力を確認する必要がありました(もしくは、GDBを使う)。 ...

July 4, 2020 · 2 min
【C言語】static(private)関数をユニットテストする3つの方法【単体テストのバッドノウハウ】

【C言語】static(private)関数をユニットテストする3つの方法【単体テストのバッドノウハウ】

前書き:C言語のstatic関数は単体テストできます C言語で単体テストを作成する際に、**「どうやってstatic関数をテストコードから呼び出せばいいのか?」**と迷った事はありませんか?例えば、以下のコードのprivate_func()を他のCソースファイル(例:テストコード)から呼び出せるでしょうか。 ...

April 26, 2020 · 4 min
【Singeltonパターン】考え方は単純だが、使いどころが大切なデザインパターン【コード例はRubyとJava】

【Singeltonパターン】考え方は単純だが、使いどころが大切なデザインパターン【コード例はRubyとJava】

前書き:Singletonパターンは奥が深い Singletonパターンは、GoF(Gang of Four)デザインパターンの一つであり、あるクラスのインスタンスが一つしかない状態を保証する方法です。「インスタンスが一つしか無い」という前提を生み出す事で、複数のインスタンスを用いる事によるバグの発生リスクを無くせます(正しく実装できていれば)。 ...

April 26, 2020 · 5 min
【Builderパターン】コンストラクタの初期化(new)引数が多い場合にオススメなデザインパターン

【Builderパターン】コンストラクタの初期化(new)引数が多い場合にオススメなデザインパターン

 前書き:Builderパターンとは Builderパターンは、GoF(Gang of Four)デザインパターンの一つであり、複雑な構造を持つインスタンス生成を容易にするための手法です。 ...

April 25, 2020 · 4 min
/etc/passwdに記載された/usr/sbin/nologin, /bin/falseとは何か【ログイン禁止】

/etc/passwdに記載された/usr/sbin/nologin, /bin/falseとは何か【ログイン禁止】

前書き 先日、Rubyのコーディング練習がてらに、ユーザ情報を出力するコマンドの仕様をボンヤリと考えていました。 Rubyの練習用に「neofetchがシステムの情報出すなら、自分はユーザ情報を表示するコマンド作るか」と思ったが、既に類似仕様のfingerコマンド(https://t.co/epoOGD4zlC)があった。 そりゃ、あるよね。 — Nao (@ARC_AED) April 16, 2020 出力すべきユーザ情報には「ユーザが使用しているログインシェル」を含めようと考え、「/etc/passwd」を確認したら、ログインシェルを記載するセクションに予想外の記述がありました。その記述とは、「/usr/sbin/nologin」および「/bin/false」です。明らかに、シェルではありません。 ...

April 16, 2020 · 7 min
【Bash / Ruby / Python3】ユーザ名 / UID / グループ名 / GIDを取得する方法の比較

【Bash / Ruby / Python3】ユーザ名 / UID / グループ名 / GIDを取得する方法の比較

前書き 自動化Script作成時に、Bash (Shell Script)ではなく、RubyやPython3を用いた方がScriptのメンテナンス負荷が低くなります。自動化Scriptに使用するプログラミング言語変更を目的として、各言語の実装を比較します。 ...

April 12, 2020 · 3 min
【Bash / Ruby / Python3】外部コマンドを実行する方法の比較

【Bash / Ruby / Python3】外部コマンドを実行する方法の比較

自動化Script作成時に、Bash (Shell Script)ではなく、RubyやPython3を用いた方がScriptのメンテナンス負荷が低くなります。自動化Scriptに使用するプログラミング言語変更を目的として、各言語の実装を比較します。 ...

April 12, 2020 · 4 min
【Bash / Ruby / Python3】ANSIエスケープシーケンスを用いた出力文字色の変更方法を比較

【Bash / Ruby / Python3】ANSIエスケープシーケンスを用いた出力文字色の変更方法を比較

前書き 自動化Script作成時に、Bash (Shell Script)ではなく、RubyやPython3を用いた方がScriptのメンテナンス負荷が低くなります。自動化Scriptに使用するプログラミング言語変更を目的として、各言語の実装を比較します。 ...

April 11, 2020 · 3 min
【Bash / Ruby / Python3】root権限を確認する方法の比較

【Bash / Ruby / Python3】root権限を確認する方法の比較

前書き 自動化Script作成時に、Bash (Shell Script)ではなく、RubyやPython3を用いた方がScriptのメンテナンス負荷が低くなります。自動化Scriptに使用するプログラミング言語変更を目的として、各言語の実装を比較します。 ...

April 11, 2020 · 3 min
【Bash / Ruby / Python3】オプション解析する方法の比較

【Bash / Ruby / Python3】オプション解析する方法の比較

前書き 自動化Script作成時に、Bash (Shell Script)ではなく、RubyやPython3を用いた方がScriptのメンテナンス負荷が低くなります。自動化Scriptに使用するプログラミング言語変更を目的として、各言語の実装を比較します。 ...

April 11, 2020 · 7 min
【Bash / Ruby / Python3】新規ディレクトリ作成方法、ディレクトリ削除方法の比較

【Bash / Ruby / Python3】新規ディレクトリ作成方法、ディレクトリ削除方法の比較

前書き 自動化Script作成時に、Bash (Shell Script)ではなく、RubyやPython3を用いた方がScriptのメンテナンス負荷が低くなります。自動化Scriptに使用するプログラミング言語変更を目的として、各言語の実装を比較します。 ...

April 10, 2020 · 4 min
【Bash / Ruby / Python3】ファイルのコピー、ファイルの移動方法の比較

【Bash / Ruby / Python3】ファイルのコピー、ファイルの移動方法の比較

前書き 自動化Script作成時に、Bash (Shell Script)ではなく、RubyやPython3を用いた方がScriptのメンテナンス負荷が低くなります。自動化Scriptに使用するプログラミング言語変更を目的として、各言語の実装を比較します。 ...

April 9, 2020 · 3 min
【Bash / Ruby / Python3】ファイル一覧の取得方法、ファイル数の確認方法の比較

【Bash / Ruby / Python3】ファイル一覧の取得方法、ファイル数の確認方法の比較

前書き 自動化Script作成時に、Bash (Shell Script)ではなく、RubyやPython3を用いた方がScriptのメンテナンス負荷が低くなります。自動化Scriptに使用するプログラミング言語変更を目的として、各言語の実装を比較します。 ...

April 9, 2020 · 3 min
【Bash / Ruby / Python3】ユーザ入力(input)受け付け方法の比較

【Bash / Ruby / Python3】ユーザ入力(input)受け付け方法の比較

前書き 自動化Script作成時に、Bash (Shell Script)ではなく、RubyやPython3を用いた方がScriptのメンテナンス負荷が低くなります。自動化Scriptに使用するプログラミング言語変更を目的として、各言語の実装を比較します。 ...

April 9, 2020 · 4 min
【Bash / Ruby / Python3】PATHからファイル名の抽出、ファイル名(拡張子なし)の取得、拡張子の取得方法の比較

【Bash / Ruby / Python3】PATHからファイル名の抽出、ファイル名(拡張子なし)の取得、拡張子の取得方法の比較

前書き 自動化Script作成時に、Bash (Shell Script)ではなく、RubyやPython3を用いた方がScriptのメンテナンス負荷が低くなります。自動化Scriptに使用するプログラミング言語変更を目的として、各言語の実装を比較します。 ...

April 8, 2020 · 4 min
【Bash / Ruby / Python3】ファイル読み込み、ファイル書き込みの方法を比較

【Bash / Ruby / Python3】ファイル読み込み、ファイル書き込みの方法を比較

前書き 自動化Script作成時に、Bash (Shell Script)ではなく、RubyやPython3を用いた方がScriptのメンテナンス負荷が低くなります。自動化Scriptに使用するプログラミング言語変更を目的として、各言語の実装を比較します。 ...

April 8, 2020 · 3 min
【Bash / Ruby / Python3】ヒアドキュメント(文字列リテラル埋め込み)の書き方を比較

【Bash / Ruby / Python3】ヒアドキュメント(文字列リテラル埋め込み)の書き方を比較

前書き 自動化Script作成時に、Bash (Shell Script)ではなく、RubyやPython3を用いた方がScriptのメンテナンス負荷が低くなります。自動化Scriptに使用するプログラミング言語変更を目的として、各言語の実装を比較します ...

April 7, 2020 · 6 min
【Bash / Ruby / Python3】新規ファイル作成(一時ファイル作成含む)やファイル削除する方法の比較

【Bash / Ruby / Python3】新規ファイル作成(一時ファイル作成含む)やファイル削除する方法の比較

前書き 自動化Script作成時に、Bash (Shell Script)ではなく、RubyやPython3を用いた方がScriptのメンテナンス負荷が低くなります。自動化Scriptに使用するプログラミング言語変更を目的として、各言語の実装を比較します。 ...

April 7, 2020 · 4 min
【Bash / Ruby / Python3】ディレクトリの存在を確認する方法の比較

【Bash / Ruby / Python3】ディレクトリの存在を確認する方法の比較

前書き 自動化Script作成時に、Bash (Shell Script)ではなく、RubyやPython3を用いた方がScriptのメンテナンス負荷が低くなります。自動化Scriptに使用するプログラミング言語変更を目的として、各言語の実装を比較します。 ...

April 6, 2020 · 3 min
【Bash / Ruby / Python3】ファイルの存在を確認する方法の比較

【Bash / Ruby / Python3】ファイルの存在を確認する方法の比較

前書き 自動化Script作成時に、Bash (Shell Script)ではなく、RubyやPython3を用いた方がScriptのメンテナンス負荷が低くなります。自動化Scriptに使用するプログラミング言語変更を目的として、各言語の実装を比較します。 ...

April 6, 2020 · 4 min
【Bash / Ruby / Python3】カレントワーキングディレクトリを取得する方法の比較

【Bash / Ruby / Python3】カレントワーキングディレクトリを取得する方法の比較

前書き 自動化Script作成時に、Bash (Shell Script)ではなく、RubyやPython3を用いた方がScriptのメンテナンス負荷が低くなります。自動化Scriptに使用するプログラミング言語変更を目的として、各言語の実装を比較します。 ...

April 5, 2020 · 2 min
【Bash / Ruby / Python3】実行ファイル名、実行ファイルの絶対 / 相対PATHを取得する方法の比較

【Bash / Ruby / Python3】実行ファイル名、実行ファイルの絶対 / 相対PATHを取得する方法の比較

前書き 自動化Script作成時に、Bash (Shell Script)ではなく、RubyやPython3を用いた方がScriptのメンテナンス負荷が低くなります。自動化Scriptに使用するプログラミング言語変更を目的として、各言語の実装を比較します。 ...

April 5, 2020 · 2 min
Bash(Shell Script)からRubyやPythonに乗り換え!頻繁に使う処理を各言語で比較

Bash(Shell Script)からRubyやPythonに乗り換え!頻繁に使う処理を各言語で比較

前書き:自動化にBashを使うと後々辛い 本記事では、自動化で用いる言語をBash(Shell Script)からRubyやPython3に変更する方法を紹介します。Bash / Ruby / Python3のそれぞれで、ファイル操作やディレクトリ操作などをどのように書くか、コード例と実行例を示しながら紹介します(正確には、別記事で実装例を説明します)。 ...

April 5, 2020 · 5 min
環境構築:Debian 10(buster) にPostgreSQL 11をインストールし、新規DBを作成する方法

環境構築:Debian 10(buster) にPostgreSQL 11をインストールし、新規DBを作成する方法

前書き PostgreSQLは、オープンソースのオブジェクト関係リレーショナルデータベース関係システム(ORDBMS)です。2020年時点のシェアランキングは、4位です。やや人気のないDBと言えるでしょう。 シェア1位のOracle DatabaseおよびMicrosoft SQL Serverは、有償です(Microsoft SQL Severは無償版も存在)。そのため、PostgreSQLは同じくオープンソースであるMySQL(シェア2位)と比較される機会が多いです。PostgreSQLは高機能・堅牢な設計、MySQLは速度に重きを置いた設計であり、用途に応じて使い分けられるようです。 ...

March 20, 2020 · 7 min
manコマンドによる「ASCII ⇔ 8進数、10進数、16進数の変換表」

manコマンドによる「ASCII ⇔ 8進数、10進数、16進数の変換表」

ASCII<->N進数への変換は、Terminalで確認可能 ASCIIコードは、10進数(8進数、16進数)から英数字・記号に変換するための文字コードです。正確には、文字コードとは以下の定義のように、2進数との変換を指します。 ...

January 17, 2020 · 5 min
autofsを用いてHDD/SSD/USBメモリを起動時に自動マウントする方法(Debian)

autofsを用いてHDD/SSD/USBメモリを起動時に自動マウントする方法(Debian)

前書き 本記事では、autofsを用いて、HDD/SSD/USBメモリ(SATA接続 or M.2接続 or USB接続)を自動的にマウントする方法を紹介します。 ...

October 5, 2019 · 4 min
gdisk/mkfsコマンドで2TB以上の大容量HDDをフォーマットする方法

gdisk/mkfsコマンドで2TB以上の大容量HDDをフォーマットする方法

前書き:何故HDDを2TBまでしか認識しないか 本記事では、gdisk/mkfsコマンドを用いて2TB超のHDDをフォーマットする方法を紹介します。 前提知識ですが、HDDは2TBの壁が存在します。HDDは、MBR(Master Boot Record)形式を用いて、パーティション(領域)をセクター単位で管理しています。通常のHDDは、セクターサイズが512Byteであり、パーティション内のセクター開始位置とセクター数の管理には4Byte(32bit)を使用します。この制約によって、「最大2TB(アクセスできるセクター数×セクターサイズ = 2の32乗×512)」までしか管理できません。 ...

October 5, 2019 · 6 min
Debian10をRyzen 3800X環境で動かそうとしてハマった内容(グラボ必須、BIOS設定、Kernel設定)

Debian10をRyzen 3800X環境で動かそうとしてハマった内容(グラボ必須、BIOS設定、Kernel設定)

前書き 増税前(2019年9月)に、自作PCパーツをドサッと買いました。 https://twitter.com/ARC_AED/status/1177817660777582592 構成は、下表の通りです。評判の良い第三世代Ryzen CPUを中心に据えつつ、メモリ量を現状の32GBから64GBに増やし、ストレージも複数OSをインストール可能な環境を目指しました。 ...

September 29, 2019 · 9 min
Terminalベースのブラウザw3m

Terminalベースのブラウザw3m

前書き 前回、キーボードのみで操作を完結させる手段として、keynavを紹介しました。 マウスポインタをキーボードで操作するkeynav 同じように、キーボードで操作が完結できるw3mを本記事で紹介します。w3m(WWW-wo-Miru)は、日本人が作成したテキストベースWebブラウザです。端末上でWeb検索作業できますが、使いづらい部分があったため、それらを補うスクリプトも本記事に記載します。 検証環境 _,met$$$$$gg. nao@debian ,g$$$$$$$$$$$$$$$P. ---------- ,g$$P" """Y$$.". OS: Debian GNU/Linux 10 (buster) x86_64 ,$$P' `$$$. Kernel: 4.19.0-6-amd64 ',$$P ,ggs. `$$b: Uptime: 46 minutes `d$$' ,$P"' . $$$ Packages: 2476 (dpkg) $$P d$' , $$P Shell: fish 3.0.2 $$: $$. - ,d$$' Resolution: 2560x1080 $$; Y$b._ _,d$P' DE: Cinnamon 3.8.8 Y$$. `.`"Y$$$$P"' WM: Mutter (Muffin) `$$b "-.__ WM Theme: cinnamon (Albatross) `Y$$ Theme: BlackMATE [GTK2/3] `Y$$. Icons: gnome [GTK2/3] `$$b. Terminal: gnome-terminal `Y$$b. CPU: Intel i3-6100U (4) @ 2.300GHz `"Y$b._ GPU: Intel HD Graphics 520 `""" Memory: 2974MiB / 32060MiB w3mのインストール方法 $ sudo apt update $ sudo apt install w3m $ sudo apt install w3m-img (注釈)端末上で画像を表示したい場合はインストール w3mの起動方法 [起動書式] ...

September 15, 2019 · 2 min
マウスポインタをキーボードで操作するkeynav

マウスポインタをキーボードで操作するkeynav

前書き Linuxエンジニアの中には、マウスを嫌う人が居ます。なるべくキーボードで操作を完結させる事を美徳と考える人(変人)です。しかし、マウスを完全に排除したくても、マウス(マウスポインタ)で無ければ操作できないタイミングがあります。 ...

September 15, 2019 · 3 min
【Vim8.1.xから標準機能】VimからGDBを起動する方法(マウスでGDBを操作可能)

【Vim8.1.xから標準機能】VimからGDBを起動する方法(マウスでGDBを操作可能)

前書き GDBをリッチなText User interface環境で実行するツールは、以前から複数ありました。例えば、 CGDB:ViライクなキーバインドのGDBフロントエンド GDB TUI mode:EmacsライクなキーバインドのGDB標準のTUI環境(オプションtui) NeoDebug:Vim用GDBフロントエンドプラグイン。Vim標準(Termdebug)より高機能 などがあります。 ...

September 14, 2019 · 4 min