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みたいに「区別のため」に冗長にする場合はある。
「説明のため」に冗長にする必要は「より実態にそくしている『型という情報』がある」からいらないという話。