--/--/--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2007/12/27

xmonad と Pugs 6.0.0

どっちも Haskell で書かれたプログラムの代表作。どちらも共通してコードが短い(現在の最新版 Pugs はだいぶ大きくなってるみたい)。xmonad はモナドを駆使したプログラムということなので、こちらも読んでみたい。

2007/12/27

Xmodmap

日本語配列キーボードを setxkbmap us して使うと、右シフトキーの1つ左のキーを使わないから、これも右シフトにしたいんだけど、なぜか反映されない。試しに他のキーでやってみたらちゃんとシフトになった。なんでだろう。

keycode 211 = Shift_R
add shift = Shift_R

設定はあってると思うんだけどなぁ。

2007/12/26

haskell 練習その2 - 99 shinichiroes of hamaji

99 shinichiroes of hamaji

問題の意図がよくわからなかったけど、関数の途中に IO (モナド)を含む関数を書く練習のためにやってみた。プログラムの短さ、速さとかを競うサイトみたいだけど、そんなの関係なしにやった。

shinichiroes :: Int -> IO ()
shinichiroes 1 = putStrLn $ getMessage 1
shinichiroes n = (putStrLn $ getMessage n) >> shinichiroes (n-1)

getMessage 1 = "1 shinichiro of hamaji on the wall, 1 shinichiro of hamaji.\n" ++
    "Go to the store and buy some more, 99 shinichiroes of hamaji on the wall."
getMessage n = (show n) ++ " shiniciroes of hamaji on the wall, " ++
    (show n) ++ "shinichiroes of hamaji.\n" ++
    "Take one down and pass it around, " ++ (show (n-1)) ++
    "shinichiroes of hamaji on the wall."

main = shinichiroes 99
  • bind の使い方はだいぶ慣れてきた。
  • printf みたいなことってできないのかな。

2007/12/24

haskell 練習その1 - 暗号

haskell の練習。文字列を XOR で暗号化する関数 crypt。暗号キーを外部から渡すようにすればなおよかっただろうけど、省略した。

-- 暗号化プログラム
-- 文字列の各文字と暗号化キー k で排他的論理和をとる

import Char
import Data.Bits

crypt :: Int -> String -> String
crypt k = map (convert k)
    where
        convert k = chr . flip xor k . ord

main = do
    print $ crypt 7777 "hoge"
    print $ crypt 7777 $ crypt 7777 "hoge" -- 元に戻る
  • リスト関連の関数はやっぱ強力。
  • 関数合成も強力。
  • 再帰も(ry

2007/12/24

celeron 420

現デスクトップ機をサーバ化しようという計画のもと、サーバにするまでの準備として、省電力化と静音化を計ることにした。Pen 4 Prescott でリテールクーラーな環境なので、どちらもひどい有様なのである。

省電力化のために、CPU を変えることにした。性能はそこまで必要ないから安くて消費電力の小さいものを探した結果、celeron 420 に行き着いた。値段は4000円代、消費電力も Pen 4 のそれと比べると圧倒的に小さい。ついでに価格対性能もそこまでひどくないという評判。CPU はこれに決めた。

ただし、リテールクーラーの出来がひどいものらしく、静音化を計るにはこれだけでは役不足というレビューが多かったので、CPU クーラーもこれを機に載せ替えることにした。これは特に事前調査をせずに店頭でとりあえず人気のあるもの、取付できるものをターゲットに選んできた。(celeron の箱開けて見てみたら、確かにひどいものだった。ヒートシンクは薄っぺらくて、接触部分もちゃちかった。)

で、昨日の夜に取付作業を行った。初のCPU換装。緊張する。

結果からいうと celeron 420 では電源は入ったもののモニタがつかず。要は動かなかった。ソケットはあってるはずなんだけど。マザボとの相性とかあるのかなぁ。

取り付けに2時間くらい要した CPU クーラー。こちらは無事に取り付けることができた。これの取り付け作業は手が痛くなるし、難しいし、もうこりごり。多少は静かになったかな。冷却性能が飛躍したのか、爆音になりにくくなった気がする。

celeron はそのうちマザボから変える時のためにとっておく。

2007/12/20

haskell 学習進捗

大体の構文の使い方は分かるようになり、あまり高度でないものに限るが、モナドを使ったプログラムも含めて、コードを読めるようになった。おかげで関数型言語のすごさに触れる機会がひろがった。

それから型システムへの理解も深まった。オブジェクト指向に例えることができたのが幸いかな。それに気づくまでに時間がかかった。

逆にまだできないことは、書くことモナドを使うこと。なのでこれからは haskell を使って多くのプログラムを書くこととモナドを使ったプログラムを書くことに重きをおいて学習を進めたい。と、自分のために書き留めておく。

具体的には、

  1. haskell を使って多くのプログラムを書く
    • アルゴリズム本をこなす。
    • どう書く.orgをこなす
  2. モナドを使ったプログラムを書く
    • モナドの全てを読む
    • モナドの全ての、モナドを使ったプログラムのサンプルを読む
    • モナドを使って 1. をやる

2007/12/20

メモリ不足

ウィンドウ分割で導入した Split Browser だが、難点をあげるのを忘れていた。非常に重くなることだ。

我が家のPCのメインメモリは 1GB で、会社のPCは 2GB。会社PCではそれなりに使える程度の重さなんだけど、自宅だと結構厳しい面もある(Javascript 使いまくりのサイトが厳しい)。今までは 1GB で十分に事足りたし、これからも Split Browser を使わない限りは十分なんだけど、いかんせんこれが快適なので増設したいと考え中。

相性とかあって面倒みたいだけど、とりあえず探してみる。

2007/12/19

ウィンドウ分割

ウィンドウ分割にはまっている。特に何かを見ながら何かを書かなければない時に、ウィンドウ分割は威力を発揮する。

事の発端はウェブを見ながらコンソールにメモをとっていたときのこと。

コンソールでは常に screen を立ち上げていて、コンソールの中に限ってはウィンドウ分割は既に実現できていた。が、たまに man ページを眺めながら何かをしたりする程度で、あまり活用はできていなかった。

で、事の発端に至る。その時は やさしい haskell 入門 へのリベンジをやっているときで、懸命に一字一句睨みつけて、ちょっとでも分からないところがあれば必ず調べるような読み進めかたをしていた。(これが正しいやり方かどうかはとりあえず置いておく。)

デスクトップをブラウザとコンソールで半々に割り使っていたが、やはりウィンドウの行き来というのは面倒なもの。と、ここでふと w3m を使えばいいんじゃないかと気づいた。盲点だった。

なんとなく w3m って使いにくいイメージがあったからか避けてたせいで忘れてたんだけど、そのイメージがついたのって linux 始めて間もないころだったし、評判は悪くないし、man ページとかヘルプ眺めながらやりゃいいでしょって感じで気軽にやってみたらこれが便利過ぎて感動。今まで誤解しててごめんなさい w3m。想像以上に機能が充実している。しかももともと CUI での操作を想定しているため、vimperator 以上にキーボードで操作しやすい。画像などのマルチメディアコンテンツが見ることができないことや、クッキー関係が面倒臭そうなので常用とはいかないが、テキスト主体のサイトを見ながらコンソール作業をするという場合においては最強ではなかろうか。

話が逸れたけれども、というわけで screen + vim + w3m で調べごととそのメモとりをかなりシームレスに行う環境ができた。

大変気に入ったので firefox でも似たようなのあるんじゃねーのと思って調べてみたらやっぱりあった。

Split Browser

ネックになるのは画面がそれなりに大きいものじゃないと使いづらいということだろうか。1280 x 1024 (我が家の環境)だと小さく感じる。

さらに、そのままだと vimperator からは若干使いにくい(キーボードから手を離さないといけない)。なんかいいものはないかと検索してみたら、やはり同じ考えの人はいるもので、既にそういうカスタマイズ例が web に転がっていた。

Split Browser とは関係ないけど、Feedボタンをステータスバーに移動カスタマイズができるということに軽く衝撃を受けた。firefox いじりのための javascript を覚えようかなと思ってしもうた。

2007/12/12

typespeed on Ubuntu

Unix には typespeed なる、コンソールで動作するタイピングゲームがある。ついこないだ知った。ubuntu ではいつものコマンドでインストールできる。

お題には Unix commands や Programming functions(Cの関数群)、English words など、なんともそれらしいお題が選ばれている。なかなか難しい。Unix commands で 438 点がいまんとこベスト。

紹介記事あった。typespeed

2007/12/07

HHK Lite 2 が俺の肩を壊す

先日会社に HHK Pro を持っていった。理由は単純に会社のほうがキーボードに触ってる時間が長いから。というわけで自宅は HHK Lite になってしまった。これはこれでしょうがないので、とりあえず英語配列にして使っている。横長の Enter キーになれたので間違って [ キーを打ったり、シフトの位置がずれてて _ キーを打ったりとか色々町が得るけど、まぁ配列はどうにでもなる。でもやっぱ硬いしうるさい。

eclim とか haskell mode for vim を試したり、ほぼデフォルト状態で使ってた vimrc をいじったりとかするために久しぶりに Lite を叩きまくってたら肩が痛くなった。力抜こうとはするけど、硬すぎて自然と力が入ってしまう不思議。

eclim は覚えれば快適なんだろうけどなぜか今は覚える気がしない。gVim + eclipse で十分なんだよなぁ。

haskell mode for vim はこれから試す。会社の gVim で試したときは重すぎて使いものにならないというのが感想だった。Linux の vim でも大差はないだろうけど、とりあえず試す。個人的にはインデントさえどうにかする機能が備わってれば使いやすいかなぁと。あとは map を駆使し、vim から GHCi に突っ込みやすくして、エディット <-> 実行をシームレスに行えるような環境を作ることができれば十分なのかなと思ってるけど。

ま、何はともあれ試す。

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。