2004-05-01から1ヶ月間の記事一覧

WWW::Mechanize

WWW::Mechanizeは、LWP::UserAgent + HTML::TokeParser 相当の働きをしてくれるモジュール。(LWP::UserAgentのsubclass) 簡易ブラウザのシミュレートっぽいことが出来るので、WebTestUnit代わりに使える。WWW::Mechanizeのインストールでは、 make testの為…

Mixiの新着メッセージをチェックするスクリプト

biffって言う新着メールのチェックをするプログラムのMixi版。 使い方は、以下の perl script をシェルで適当に sleep 入れてループで回す。 #!/usr/bin/env perl use strict; use warnings; use WWW::Mechanize; my ($count, $agent); my ($email, $passwor…

欠陥ピースをチェックする方法。

ファイルの "piece length"バイト分のSHA hash値と、メタ情報ファイル(.torrent)に含まれる metainfo["info"]["pieces"] の 20 bytesを比較するとチェックできるらしい。BEncodingのソースは以前載せたので、.torrentのデコードにはそれを利用して。 require…

開発者向けリンク集

http://bitconjurer.org/BitTorrent/ http://btfaq.com/ http://wiki.theory.org/index.php/BitTorrentFAQ BitTorrentSpecification がBitTorrentの仕様。非公式な文書だけど。公式な仕様書は、実際にプログラムを実装するに当たっては少しわかり難くく、不…

Lazy programming in Eager language

http://www.bagley.org/~doug/ocaml/Notes/lazy.shtml OCamlでの遅延評価。Lazy Stream。Lazy to do Lazy programing in Eager lang. Lazyモジュールは、Schemeのdelay/forceみたいなもの。

HaskellのHumorのリンク http://www.haskell.org/humor/The Evolution of a Haskell Programmer factorial関数をいろんな方法で宣言。僕はSenior Haskell programmerに該当した。 http://www.willamette.edu/~fruehr/haskell/evolution.html let fac n = fol…

遅延リスト

Haskell [0..10] ++ [20..30] Python import itertools ietrtools.chain(xrange(0,11), xrange(20,31)) xrangeは厳密には違うらしいけど、似たような動作をするものという事で。 ここでの利点は、リストの生成を遅らせる事で一時的なメモリの使用量を抑える…

Ruby ビットフィールドをpack

packがArrayのメソッドだから。 bitfield.pack("B*")みたいなの期待したけど、無理だった。 [bitfield.join].pack("B*") bitfield.join.to_a.pack("B*") そういえば、packやprintfの書式も独自のルールもっているよな。packの拡張って出来るかな。TODO

文字列を n バイト毎に分割

前にRubyで手続で書いたけど、改良。 foo = "...適当に長い文字列..." foo.scan(/.{1,#{n}}/) 例を上げると。 foo = "foobarhoge" p foo.scan(/.{1,3}/) ["foo","bar","hog","e"] ところで、これは正規表現にマッチしたものを リストで返しているのだと思う…

KJSEmbed

QComboBoxの件はバグだったらしく、cvsではfixされている。 cvsで最新版(HEAD)をダウンロードした。 QComboBoxは表示されたが、Itemが表示ない。 開発者の人にリポートしようとメール書いてたら、 いつの間にか、最新のCVS版では直ってる。(THX) #/usr/bin/e…

minimum KDE application

コンパイルするには、KDEとQTのincludeを含める。 lkdecore -lkdeui -lqt(-lqt-mt) をリンク。 #include #include int main(int argc, char **argv) { KApplication app(argc, argv, "Hello, world"); KLineEdit *entry = new KLineEdit; entry->setText("He…

Objective C

#include の代わりに #import #import は、Cのヘッダでは必須のマクロ。 #ifndef __foo_h ... #endif // __foo_h の代用になるらしい。なんてICQで友達が話してた。 折角、GCCをフルインストールしたので試してみる。 #import int main(int argc, char **arg…