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

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

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

2021年5月22日 · 7 分 · nchika
【C/C++/C#/Java対応】循環的複雑度の計測ツール lizardの導入方法【Swift/Rust/GoもOK】

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

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

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

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

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

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

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

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

2021年5月15日 · 6 分 · nchika
【C言語】_Generic(C11、gcc4.6以降)または__attribute__((overloadable))によるオーバーロード

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

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

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

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

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

2021年2月21日 · 7 分 · nchika
【Androidアプリ】コードリーディングに使うアプリをUserLAndからSource Code Viewer Proに浮気した話

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

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

2021年2月20日 · 5 分 · nchika
【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している記述を見かけました。 ...

2021年2月20日 · 7 分 · nchika
【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