プログラミング

PNGを端末に表示するプログラムをRustで書いた

PNGを端末に表示するプログラムを作りました。 github.com 使い方 cargo run /Path/to/Windows_logo.png とすると、のように端末に画像が表示されます。透過画像も表示できます。 ちなみに、PNGの画像形式は何パターンかあるのですが、そのすべてに対応して…

PNGの規格を簡単に説明する

PNGの規格を勉強する機会があったので、その内容を簡単に説明します*1。 PNGはいくつかの"チャンク"が集まって構成されています。例えば、IHDRチャンクやIDATチャンク、PLTEチャンクなどがあります。では、PNGファイルという単なるバイト列から、どのように…

機能追加と同時にリファクタリングをしてもいいか

「機能追加と同時にリファクタリングをしてもいい」という記事がはてブに上がっていたので、思うところを述べる。 scrapbox.io 結論 機能追加とリファクタリングを同時にするのは 機能追加とリファクタリングを混ぜてPRを出すのは 問題意識 機能追加をする…

iter()とinto_iter()の違いを整理した

VectorをIteratorに変換する時にいつも混乱していたので整理した。 混乱 あるVectorの要素すべてを3倍するコードを考える。 fn main() { let vec1 = vec![1,2,3,4,5]; let vec2 = vec1.iter() .map(|i| i * 3) .collect::<Vec<i32>>(); println!("{:?}", vec1); print</vec<i32>…