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

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

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

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

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

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

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

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

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

2021年1月7日 · 4 分 · nchika
【Iteratorパターン】C言語で見かけるぐらい頻出のデザインパターン【コード例:Java、Ruby】

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

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

2021年1月2日 · 7 分 · nchika
ドスパラのTHIRDWAVE VF-AD4にelementary OS(Ubuntu派生)を入れた感想

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

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

2021年1月2日 · 7 分 · nchika
【roff形式を手書きは無理ゲー】manページをMarkdown + Pandocで作成【with manページお作法】

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

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

2020年12月19日 · 7 分 · nchika
【コーディングルール】C言語ライブラリのAPIを実装する際に注意すべき事柄

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

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

2020年12月19日 · 7 分 · nchika
【visudo / vigr / vipw】システムファイルをsudo viで編集は駄目【sudoers / group / passwd】

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

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

2020年12月16日 · 3 分 · nchika
【プログラマ歴5年の戯言】インプット(資格取得、書籍読み)ばかりだと成長しなかった話

【プログラマ歴5年の戯言】インプット(資格取得、書籍読み)ばかりだと成長しなかった話

前書き:インプット、アウトプット、両方大事 2020年現在、Web系エンジニア界隈の駆け出しエンジニア(主にフロントエンド技術を触り始めた人)が、**「#今日の積み上げ XXX 2h XXX ◯ページ――」**といった形で学習報告する姿をTwitterでチラホラ見かけるようになりました。 ...

2020年12月12日 · 5 分 · nchika
【静的解析】ソースコード解析補助ツールSourcetrailの導入方法【例:systemd(C言語)】

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

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

2020年12月12日 · 9 分 · nchika
【HR/HM】2020年に聴いてハマったメタルバンド4選【スラッシュ/ジャパメタ】

【HR/HM】2020年に聴いてハマったメタルバンド4選【スラッシュ/ジャパメタ】

前書き:30歳、メタラー歴10年 10代はV系で音楽の良さに目覚め、20代はメタルに傾倒し、30歳で90年代の懐メロを楽しむようになり始めたオッサン。 本記事では、そんな私が2020年に聴いて「いいね!」となったバンド4組について、紹介したいと思います。あくまでも2020年に聴いたバンドであり、2020年デビューではありませんので、ご注意ください。 ...

2020年12月2日 · 5 分 · nchika
【LPICで見た】/etc/motdの内容を出力しているのは誰?【答え:sshd】

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

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

2020年12月1日 · 4 分 · nchika
【CPU温度やI/Oの監視】Rapberry Pi4サーバにMonitorixをインストールする方法

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

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

2020年11月28日 · 7 分 · nchika
【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 ...

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

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

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

2020年11月21日 · 5 分 · nchika
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)に対する調査内容を備忘録としてまとめています。 ...

2020年11月21日 · 7 分 · nchika
【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()をコールするメソッドを呼び出しても、その結果を取得できません。 ...

2020年11月20日 · 4 分 · nchika
【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パッケージによるコマンドライン引数パースをテストする方法が出てこなかったため、本記事ではその方法(ベストな方法ではなく、妥協した方法)を紹介します。 ...

2020年11月20日 · 3 分 · nchika
【Bash】同じシェルスクリプトの二重起動(並列実行)を防止する方法

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

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

2020年11月8日 · 3 分 · nchika
【苦行】C言語で正規表現を用いる方法【標準Cライブラリ(glibc)使用】

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

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

2020年11月1日 · 18 分 · nchika
【環境構築】Raspberry PiにPlex Media Serverをインストール【Kodi、Embyとの比較】

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

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

2020年10月31日 · 7 分 · nchika
【Tips】何度も繰り返す開発環境構築をMakefileとシェルスクリプトで楽にする

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

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

2020年10月29日 · 7 分 · nchika
【環境構築】Raspberry Pi 4台で作るKubernetesクラスタ

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

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

2020年9月27日 · 9 分 · nchika
Raspberry Pi3/4にDockerとdocker-composeをインストールする方法

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

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

2020年9月27日 · 3 分 · nchika
感想:ランス03 リーザス陥落

感想:ランス03 リーザス陥落

ランス03は、ランス3のリメイク作品(24年ぶり) ランス03(2015)は、1991年に発売されたランス3のリメイク作品です。 ランスシリーズは、02→01→03の順でリメイクされ続けており、03の段階でシステム面が一通りブラッシュアップされた印象です。絵柄を比較しただけで時代の流れを感じてしまう。 ...

2020年9月26日 · 更新: 2026年8月9日 · 7 分 · nchika
Raspberry Pi4のimage(データ)をバックアップし、より大容量なmicroSDカードにリストアする方法

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

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

2020年9月2日 · 4 分 · nchika
【セキュリティ対策】Raspberry Pi4に新規ユーザを追加し、piユーザを削除

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

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

2020年9月1日 · 4 分 · nchika
【環境構築】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環境では実行時にエラーが出てしまいます。 ...

2020年8月30日 · 5 分 · nchika
【環境構築】Debian 10にSteamをインストールする方法:glXChooseVisual failedエラー回避

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

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

2020年8月28日 · 3 分 · nchika
元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が好きです。 ...

2020年8月26日 · 7 分 · nchika