Gentoo LinuxからWebカメラを使うのもずいぶん簡単になった。 emerge libv4l としてから qvidcap ってするだけで、とりあえず動作確認ができた。
HaskellでStackを使ってると、カレントディレクトリ化に作られる.stack/下にだだーっていろんなパッケージがビルドされて、しかもバージョンアップごとにたまっていく。で、ビルドされるものなので速度も欲しいし容量も欲しいのでSSDにしてもHDDにしても、どうにも快適ではない。 Stackの仕様がそもそもHDD時代の「水と容量はただ」的考えかたから来てるのだと思う。
もうしばらく自作してないのだけど、このあいだドスパラでパンフレットだけもらってきた。
HDDからSSDへの移行って、人間がはじめて経験する「記憶容量の減少」な気がする。 「古いファイルを消さない」という習慣が身についていたので、ディスク容量がすぐ100%になってしまう。 よく使うファイルをSSDに置き、あまり使わないファイルはHDDに置くみたいな、そういう仕組みが必要。というこすでにあるんじゃないかって気はする。
そろそろPC1台組みたいなという気持ちもなくはないのだけど、場所取るんだよなー 小さいのだと選択肢がかなりせばまるし。 一時期はインテルのマザーボードがLinuxのインストールという観点から安心感があったけど、今はどうなのだろうか。
個人的にはPC光るのは嫌いではない。チープさが好き
あと、ライフゲームの盤を定義してるモジュールの例だけど。 盤の一部に特定のパターンがあるかどうかを確認したいみたいな話があったときに、盤の一部を取り出して、それとパターンを比較するみたいな話になるけど、盤、パターン、取り出した部分は、どれもたとえば[[Bool]]で表現できる。 でも、これはあまり筋が良くない。 盤とパターンと取り出した部分はそれぞれモノとしてはちがうので、 newtype Board = Board [[Bool]] newtype Pattern = Pattern [[Bool]] newtype Clipped = Clipped [[Bool]] としたほうが良い。
あと「位置」を表すのに(Int, Int)みたいなタプルを使うのは「本当のところ良くな」くて、 data Pos = Pos { posX :: Int, poxY :: Int } みたいにしたほうが良くて、さらにもっと冗長で安全にするなら、 newtype X = X Int newtype Y = Y Int data Pos = Pos { posX :: X, posY :: Y } みたいにすれば「もっとベター」な感じはある。 けど、まあ「安全と簡潔」のトレードオフがある。
りとりんもそう思うよね
名前付けるのに「型でわかる情報はいらない」という考え方もある。 clearBoardArea :: Board -> Area -> Board ではなくて、 clear :: Board -> Area -> Board としてもいいのではという話。 もちろん名前がかぶる場合にはclearBoardAreaみたいに「区別のため」に冗長にする場合はある。 「説明のため」に冗長にする必要は「より実態にそくしている『型という情報』がある」からいらないという話。