【C言語】完全なオブジェクト指向ではなく、Interfaceのみを利用する選択【Golangを参考に】

【C言語】完全なオブジェクト指向ではなく、Interfaceのみを利用する選択【Golangを参考に】

C言語とオブジェクト指向は相性悪い オブジェクト指向は、C言語でも実現できます。 C言語は、言語によるオブジェクト指向プログラミングのサポートがありません。しかし、開発者が注意深く実装する事によって、オブジェクト指向プログラミングが可能です。 ...

November 17, 2021 · 5 min
【退職エントリ】新潟在住の組み込みエンジニアが転職を考えたキッカケ、転職活動、退職した会社への感謝

【退職エントリ】新潟在住の組み込みエンジニアが転職を考えたキッカケ、転職活動、退職した会社への感謝

本画像は新潟駅南の写真であり、著作権およびその他の権利はtownphoto.net様が保有しています。 前書き 2015年4月から2021年12月まで勤めていた会社を退職しました。 退職間近では、私は組み込みソフト開発およびGUIコンソール開発を担当するプロジェクトリーダーでした。多くの方に期待されている事を理解していましたが、様々な要因が積み重なった結果として退職を選択しました。 ...

November 13, 2021 · 8 min
shc(Shell Script Compiler)でスクリプトをバイナリ化(暗号化)する方法

shc(Shell Script Compiler)でスクリプトをバイナリ化(暗号化)する方法

前書き:Shell Scriptの中身を見せたくない 通常の開発業務では、Shell Scriptをバイナリ化(かつ暗号化)する利点はありません。自分しか解読できないShell Scriptは、他のチームメンバにとっては迷惑な存在(負債)になります。 ...

August 29, 2021 · 4 min
Shell Scriptにバイナリ(例:tarball)を埋め込み、実行時にバイナリを取り出す方法

Shell Scriptにバイナリ(例:tarball)を埋め込み、実行時にバイナリを取り出す方法

前書き:スクリプトサイズが大きい理由 プロプラエタリソフト(例:商用ソフト)のShell Scriptインストーラのサイズを見たら、数百MBだった事はありませんか? そのような場合は、.deb/.rpmパッケージやtarball等のバイナリがShell Scriptに埋め込まれている可能性が高いです。このようなインストーラは、実行時にバイナリ部分だけを取り出してから、バイナリを操作します。 ...

August 29, 2021 · 5 min
Ubuntu (20.04)へsshログインした際に表示されるWelcomeメッセージの仕組みと表示しない方法

Ubuntu (20.04)へsshログインした際に表示されるWelcomeメッセージの仕組みと表示しない方法

前書き:UbuntuはWelcomeメッセージが立派で邪魔 ラズパイサーバ(Raspberry Pi OS)からHP小型PC(Ubuntu 20.04)にサーバ移行した時、UbuntuのWelcomeメッセージがラズパイより立派な事に気づきました。 例えば、Ubuntuにsshログインした時、以下のようなWelcomeメッセージが出ます。 ...

August 14, 2021 · 7 min
【Java】immutable object(不変クラス)の利点/欠点/作成方法および不変クラスで実装する場面

【Java】immutable object(不変クラス)の利点/欠点/作成方法および不変クラスで実装する場面

前書き:これだからC言語プログラマは…… Immutable object(不変クラス)とは、コンストラクタによるインスタンス生成時から状態(フィールド変数の値)が変わらないクラスを意味します。代表例はStringクラス。 ...

May 23, 2021 · 5 min
【オススメ】ソフト開発/エンタメ(余暇)で使用するLinuxアプリ【Debian/elementary OS】

【オススメ】ソフト開発/エンタメ(余暇)で使用するLinuxアプリ【Debian/elementary OS】

前書き:オススメ?当たり前? 本記事は、読者の皆様にLinuxアプリをオススメするように見せかけた備忘録記事です。 私は、2018年から開発環境(≒普段使いのPC)をMacからLinuxに移行しました。Linux環境に移行した後もDebian → elementary OSと移行を続けていて、開発や余暇で使用するアプリを記録しておく必要性が出てきました。 ...

May 22, 2021 · 7 min
【C/C++/C#/Java対応】循環的複雑度の計測ツール lizardの導入方法【Swift/Rust/GoもOK】

【C/C++/C#/Java対応】循環的複雑度の計測ツール lizardの導入方法【Swift/Rust/GoもOK】

前書き:ネストの深さを指摘する時間が勿体無い コードレビューを効果的に実施したいと考えた事はありませんか? 例えば、短い期間でソフト開発する場合、レビュー時間を潤沢に取れないケースがあります。このような場合は、 ...

May 19, 2021 · 7 min
【可読性向上】java.utils.Objects.isNull()によるnullチェック【関数型プログラミングに便利】

【可読性向上】java.utils.Objects.isNull()によるnullチェック【関数型プログラミングに便利】

前書き:"==“や”!=“による判定と何が違う? Javaでコードを書くと、nullチェック(NullPointerException防止)は避けられません。 私のようにC言語脳の人は、"=="(等価演算子)や”!="(不等価演算子)を用いてnullチェックを行うかもしれません。しかし、Java SE8以降は、null関係の判定メソッドとしてjava.utils.ObjectsにisNull()やnonNull()が用意されています。 ...

May 17, 2021 · 5 min
【Abstract Factoryパターン】コンポジットの部品変更を容易にするデザインパターン【コード例:Java】

【Abstract Factoryパターン】コンポジットの部品変更を容易にするデザインパターン【コード例:Java】

前書き:Abstract Factoryパターンとは Abstract Factoryパターンは、関連するインスタンスの生成APIを抽象化クラスに集約し(= 生成に関するインターフェースを定義し)、生成処理は抽象化クラスを継承(実装)したクラスに任せる設計手法です。 ...

May 15, 2021 · 6 min
【C言語】_Generic(C11、gcc4.6以降)または__attribute__((overloadable))によるオーバーロード

【C言語】_Generic(C11、gcc4.6以降)または__attribute__((overloadable))によるオーバーロード

前書き C言語にはオーバーロードがない。そんな風に考えていた時期が私にもありました。 オーバーロードとは、メソッド(関数)を多重定義する言語仕様です。例えば、Javaでは引数の順番もしくは引数の個数を変える事によって同名メソッドを複数定義できます。 ...

May 15, 2021 · 4 min
【Java】enum(列挙子)の持つメソッド、基本的な使い方、応用(シングルトン)【実装例付き】

【Java】enum(列挙子)の持つメソッド、基本的な使い方、応用(シングルトン)【実装例付き】

前書き:君、C言語のenumと雰囲気違うね 仕事でJavaのコードを読んでいる時、「Javaのenumは、C言語のenumより多機能だな」と感じる場面がありました。 Javaのenumを多機能と感じた例として、以下の3点が挙げられます。 ...

February 21, 2021 · 7 min
【Androidアプリ】コードリーディングに使うアプリをUserLAndからSource Code Viewer Proに浮気した話

【Androidアプリ】コードリーディングに使うアプリをUserLAndからSource Code Viewer Proに浮気した話

前書き:UserLAndは遅かった 約2年前の2019年、私はAndroidスマホでコードリーディングするにはUserLAndが最適だと結論づけていました。 しかし、使い込んでいく内にUserLAnd特有の**「ファイル操作が遅い点」**に我慢できなくなりました。 システムコール単位でフック処理を入れているUserLAndは、ミドルレンジスマホがCeleron PCと同等に感じられるぐらい遅いです。特に、パッケージマネージャによるインストール処理などの待ち時間は長く、下手すると数十分から数時間待たされます。 ...

February 20, 2021 · 5 min
【Java】Serializableの実装、役割、使い方、危険性とその対策【serialVersionUIDとは】

【Java】Serializableの実装、役割、使い方、危険性とその対策【serialVersionUIDとは】

前書き: Javaの勉強中に見つけたSerializable 2021年になってから、腰を据えてJavaの勉強を始めました。 今年はJavaを後輩に教える機会があり、自分もJava歴が短くて手探り感がある。勉強が必要だ。 JavaのOSS(小規模)を読みたいが、何か良いものはないかなー。以前、「Apacheのコードを読もう!」と考えた時期があった記憶もある。が、もう少し小規模なプロジェクトから始めたい。 — Nao03@疲れて会話がUDP (@ARC_AED) February 7, 2021 私はJava学習の一環としてJava Core APIのソースコードを読んでおり、その際にjava.io.FileクラスでSerializableインターフェースをimplementsしている記述を見かけました。 ...

February 20, 2021 · 7 min
【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
【プログラマ歴5年の戯言】インプット(資格取得、書籍読み)ばかりだと成長しなかった話

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

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

December 12, 2020 · 5 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
【HR/HM】2020年に聴いてハマったメタルバンド4選【スラッシュ/ジャパメタ】

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

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

December 2, 2020 · 5 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
感想:ランス03 リーザス陥落

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

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

September 26, 2020 · 7 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
【記事総数100本】1万PV/月に到達せず、収益が1000〜3000円/月とフラつく。その原因は?【技術ブログだから】

【記事総数100本】1万PV/月に到達せず、収益が1000〜3000円/月とフラつく。その原因は?【技術ブログだから】

前書き:記事100本書けば1万PV/月?違うよ Debimate(本サイト)は、2020年4月に記事総数が100本に達しました。 本記事では、ブロガーがよく行う収益報告と振り返りを行います。 本記事で紹介する内容 ...

May 1, 2020 · 5 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