技術

A tool was configured, tested, broken, and sometimes fixed. These entries document what worked and what didn't: recording setups, network infrastructure, text editors, file formats, and the quiet satisfaction of making something behave.

技術

NTPのStratum階層とGPS時刻同期の仕組み

Windowsの時刻がずれやすいと感じたことをきっかけに、NTPの仕組みやStratum階層、GPSを用いた時刻同期について調べた内容をまとめる。 NTPとは NTP(Network Time Protocol)は、ネットワーク上の機器間で時刻を同期するためのプロトコルである。現在広く使われているのはNTPv4(RFC 5905)で、1985年の初版から改良が重ねられている。 NTPはStratum(階層)と呼ばれるツリー構造で時刻を配信する。上位の正確な時刻源から下位へ順に同期することで、ネットワーク全体の時刻精度を維持している。 Stratum階層 NTPのStratum階層は以下のように定義される。 * Stratum 0 : 基準時刻源そのもの。原子時計やGPS受信機などのハードウェアデバイスが該当する。Stratum 0はネットワーク上のサーバではなく、シリアルポートやUSBなどでStratum 1サーバに直接接続される * Stratum 1 : Stratum 0に直接接続されたNTPサーバ。プライマリタイムサーバとも呼ばれる * Stratum 2

By Sakashita Yasunobu

技術

Ghost CMSでKaTeXを使って数式を表示する方法

Ghost CMSには数式レンダリング機能が組み込まれていないため、外部ライブラリを導入する必要がある。本記事では、Khan Academyが開発した軽量な数式レンダリングライブラリであるKaTeXをGhostに導入する手順を解説する。 KaTeXの読み込み GhostのCode Injection機能を使い、サイト全体のヘッダーにKaTeXのCSSとJavaScriptを追加する。 Settings > Code injection > Site Header に以下のコードを貼り付ける。 <link rel="stylesheet" href="<https://cdn.jsdelivr.net/npm/katex@0.16.25/dist/katex.min.css>" integrity="sha384-WcoG4HRXMzYzfCgiyfrySxx90XSl2rxY5mnVY5TwtWE6KLrArNKn0T/mOgNL0Mmi" crossorigin="anonymous&

By Sakashita Yasunobu

技術

Markdownで文献出典を扱う実用的な方法

Markdownで文章を書いていると、学術的な小論や技術記事など、ある程度の正確さを求められる文書で文献出典をどう扱うかという問題に直面する。Markdownの仕様には脚注や参考文献を管理する標準的な仕組みがなく、エディタごとの独自拡張に頼ると将来の移行時に困る。本稿では、プレーンテキストとしての可搬性を保ちながら文献出典を扱う方法を比較し、実用的な選択肢を検討する。 前提と要件 文献出典の記法に求められる性質は以下の通りである。 * 可搬性: 特定のエディタやプラットフォームに依存しない。プレーンテキストとして意味が通じる * 執筆時の効率: 書いている途中で文献リストとの間を行き来する必要がない * 可読性: 出典の挿入が本文の読みやすさを大きく損なわない * 検索性: 後から特定の文献を参照している箇所を検索できる * 自己完結性: リンクや外部参照に依存せず、テキスト単体で出典情報が完結する リンクベースの参照([[]] やハイパーリンク)は、リンク先が移動・消失すると出典情報そのものが失われるため、長期的な文書管理には不向きである。 主な方法の比較

By Sakashita Yasunobu

技術

小さなブログにコメント欄もアナリティクスもいらない

小さな、熱意のあるサイト運営者へ。 ブログのコメント欄は閉じよう。まだ導入していないなら、導入しなくていい。 そしてアナリティクスも入れなくていい。少なくとも、Google Analytics(GA4)は入れるべきではない。 突拍子もないことを言っているように聞こえるかもしれない。でも、これは思いつきでも逆張りでもなく、実際に小規模ブログを運営してきた多くの人たちが、試行錯誤の末にたどり着いた結論だ。 コメント欄を閉じよう そもそも誰もコメントしない まず、厳しい現実から始めなければならない。 Jakob Nielsenが2006年に提唱した「参加の不平等(Participation Inequality)」の法則によると、オンラインコミュニティではユーザーの90%が閲覧のみ、9%がたまに参加し、積極的に投稿するのはわずか1%にとどまる。ブログのコメント欄ではこの偏りがさらに極端になり、95対5対0.1ほどになるとも指摘されている。 Participation Inequality: The 90-9-1 Rule for Social FeaturesIn mos

By Sakashita Yasunobu

技術

デジタルの紙を超えて

紙の資料がPDFになった。たったそれだけのことが、実際にはどれほど革命的だったか。そしてなぜ、それだけでは足りないのか。 紙からPDFへ 少し前まで、「資料」といえば紙のことだった。コピー機を通すたびに劣化する文字。数世代のコピーを経て原形をとどめないページ。手書きの注釈が入り混じった印刷物。回覧のために物理的に持ち運ばなければならない書類の束。それが「資料を配布する」ということの実態だった。 コロナ禍を契機にオンライン化が一気に進み、紙の資料は急速にPDFへと置き換わった。コミュニケーションツールが普及し、ファイル共有が当たり前になった。 この変化の大きさを、過小評価すべきではないと心から思う。 ニール・アームストロング船長の有名な言葉が頭に浮かぶ。 That's one small step for a man, one giant leap for mankind. 一人の人間にとっては小さな一歩だが、人類にとっては偉大な飛躍である。 紙からPDFへ。ファイルを送るだけで同じ文書が相手の画面に表示される。文字を検索できる。拡大しても潰れない。地球の裏側にいる人に

By Sakashita Yasunobu

生きること

ストレージを信じるということ

ストレージに求められるのは、便利さと信頼性の両方だ。この二つが揃っている限り、裏側がどんな技術で動いていようと気にする必要はない。ファイルを保存して、必要なときに取り出せる。それだけのことが当たり前に機能し続けること。ストレージへの信頼とは、つまるところそういうことだと思う。 ところが、ストレージには他の技術レイヤーにはない厄介な性質がある。 不可逆性という特殊性 ソフトウェアにおける抽象化とは、内部の複雑さを隠して、使う側に必要な操作だけを見せる設計思想だ。ファイルを「保存」するとき、実際にディスク上でどのようにデータが書き込まれているかを意識する必要がないのは、この抽象化が正しく機能しているからにほかならない。 多くの技術レイヤーでは、抽象化が破綻しても回復の手段がある。計算の誤りはやり直せる。通信の途切れは再送できる。しかしストレージの喪失は、バックアップが存在しなければ取り返しがつかない。破綻したときに巻き戻せないという不可逆性が、ストレージを特別な領域にしている。 同じ性質を持つ分野は他にもある。たとえば暗号鍵の管理がそうだ。秘密鍵を紛失すれば、署名能力は不可逆的

By Sakashita Yasunobu

技術

Pi-holeをdocker runだけで起動する

Pi-holeのDocker公式イメージはdocker-composeでの起動が案内されている。しかしNAS製品の多くはGUIからコンテナを管理する設計であり、docker-composeを使うにはSSHでログインする必要がある。Pi-holeを動かすためだけにSSHの管理を増やすのは合理的でない。 実際にはdocker-composeの設定はすべて docker run のオプションに変換できるため、docker-compose無しでもPi-holeは起動できる。本稿では、公式のdocker-compose設定を docker run コマンドに変換した例を示し、あわせて各オプションの意味を整理する。 docker runコマンド 以下は、Pi-hole公式のdocker-compose設定と同等の docker run コマンドである。 docker run -d \\ --name pihole \\ -p 53:53/tcp \\ -p 53:53/udp \\ -p 80:80/tcp \\ -p 443:443/tcp \\ -e TZ='

By Sakashita Yasunobu

技術

ScanSnap iX1300のカラー解像度が白黒の半分になる理由

はじめに PFUのドキュメントスキャナー ScanSnap iX1300の自動画質モード(Best)では、カラーと白黒で読み取り解像度が異なる。 原稿の短辺が約105mm以下の場合は、カラー/グレー300dpi、白黒600dpi相当に設定。原稿の短辺が約105mmよりも長い場合は、カラー/グレー200dpi、白黒400dpi相当に設定。 どの条件でも白黒はカラーのちょうど2倍の解像度である。光学解像度は600dpiと記載されているにもかかわらず、なぜカラーではその性能をそのまま発揮できないのか。本記事では、iX1300が採用するCISセンサーの仕組みからその理由を解説する。 なお、iX1300は手動で「Excellent」モードを選択すればカラー600dpi(白黒1200dpi相当)でのスキャンにも対応している。ただしスキャン速度は大幅に低下する(Best:30枚/分 → Excellent:9枚/分)。本記事で扱うのは、速度を維持する自動画質モードでなぜ解像度が制限されるかという問題である。 参考:ScanSnap iX1300 | PFU CISセンサーの基本構造

By Sakashita Yasunobu

技術

ドメインレジストラの選び方

ウェブサイトを運営するならドメインが要る。ドメインが要るなら、それを登録・管理するレジストラを選ばなくてはいけない。 Cloudflare×Ghost Proで簡単!.pageドメインを使ったカスタムドメイン設定ガイド.pageドメインでのセットアップをしている人を見なかったので。 ドメインといえば.comがいまでも主流ですが、ドメインを新規で使う分にはどれを選んでも同じなため、ちょっと面白いものを選びたいですね。 今回は.pageドメインを利用してみました。Googleがレジストラーとして管理しており、HTTPSが強制され、HSTS Preloadも勝手に登録されるのでブログを使う身としては安心でらくちんです。 HSTSとはなんぞや HSTS(HTTP Strict Transport Security)って、簡単に言うと「ブラウザが自動でHTTPアクセスをHTTPSアクセスに切り替えるようにする仕組み」です。たとえばふつうならHTTPでアクセスすると、そのままHTTPでサーバーに行くわけですよね。でもHSTSを設定しておくと、いったんブラウザが「このサイトはHSTSに対応してるん

By Sakashita Yasunobu

光と写真

ストロボのガイドナンバーは照射角でどう変わるか

ストロボの照射角(ズーム位置)を変えると、ガイドナンバー(GN)はどう変化するか。本稿では物理法則から理論式を導出し、Canon スピードライト EL-1の公称データと照合する。 GNの定義 GNはISO 100において次式で定義される。 \[ GN = d \times F \] \(d\) は被写体距離(m)、 \(F\) は絞り値である。 GNと光度の関係 光軸上の光度を \(I\) (cd)とする。逆二乗則より、距離 \(d\) における照度は次のようになる。 \[ E = \frac{I}{d^2} \] 適正露光の条件として、被写体面での照度 \(E\) と絞り値 \(F\) の間には \(E \propto F^2\) の関係がある(ISO感度一定)。絞りを絞るほど、より明るい照度が必要になるためである。

By Sakashita Yasunobu

技術

エネループのプロとスタンダードとライトは何が違うのか

Panasonicのニッケル水素充電池「エネループ(eneloop)」には、ハイエンドモデル(エネループ プロ)、スタンダードモデル(エネループ)、お手軽モデル(エネループ ライト) の3ラインナップがある。「とりあえず高いやつが良いだろう」と思いがちだが、実はモデルごとに容量・充放電サイクル寿命・自己放電率のバランスが異なり、用途に応じた選択が重要になる。 各モデルのスペック比較 エネループ プロ(ハイエンドモデル) * 展開サイズ: 単3形 / 単4形 * 最小容量: 単3形 2,500 mAh / 単4形 930 mAh * 自己放電: 満充電から1年後に約85%残存(室温20℃保管時) * くり返し回数: 旧JIS基準で約150回 / 現行JIS基準で約500回 3モデルの中で最も容量が大きい。ただし、くり返し使用回数はスタンダードモデルの約4分の1と大幅に少なく、自己放電率もやや高い。 エネループ(スタンダードモデル) * 展開サイズ: 単1形

By Sakashita Yasunobu

光と写真

立体角の限界効果から求めるソフトボックスの最適サイズ

影の柔らかさは、被写体から見た光源の見かけの大きさによって決まる。光源の見かけが大きいほど影のエッジは緩やかに遷移し、柔らかい影が得られる。ソフトボックスを大きくすれば見かけの光源は大きくなるが、その効果には収穫逓減がある。 本稿では、ソフトボックスを均一発光する円盤と近似し、被写体位置から見た立体角を影の柔らかさの代理指標として定式化する。そのうえで、半径を増加させたときの立体角の増加率(限界効果)が最大となる最適半径を解析的に導出する。 モデルの定義 以下の仮定を置く。 * ソフトボックスを半径 \(R\) ( \(R > 0\) ) の均一発光円盤とする。 * 被写体上の注目点 \(P\) は円盤の中心軸上にあり、発光面中心からの距離を \(d\) ( \(d > 0\) ) とする。 * 影の柔らかさの代理指標として、点 \(P\) から円盤を見込む立体角 \(\Omega(R, d)\) を採用する。 なお、本モデルは軸上の1点に対する評価であり、被写体の広がりや光源の配光特性は考慮していない。 解析 円盤が張る立体角 点 \(P\) から円盤の縁

By Sakashita Yasunobu