2006年09月30日

オセロ思考ルーチン

レジュメ

今日の朝から必死で作り始めた。最初探索が全く動いてないと思って苦労していたら、結局評価関数が後半戦において最低な戦い方をするようになっていたので、それを直したら割と強いのが出来た。要は途中まで中々良い戦い方をしていたけど後半戦に一気に巻き返されるという。

まぁしかし他の人の作ってる奴にどこまで対抗できるかは謎。とりあえず付属のサンプル(MAK)には普通に勝てるようになったぐらいな。

  • 評価関数
    • 着手可能手数
    • テーブル引き
    • wingの数
  • 探索
    • negascout

さてこれでやっと夏休みに入れる(明日までのなー)。明後日からもう学校ですか、そうですか。

2006年09月28日

Linuxデバドラ課題

提出した。ethernetの仮想デバドラを作成する課題(これの17章辺り)。TAの人の書いたパッチで無理やり割り込み関数を設定してパケットを覗くのでちょっと普通とは違う形だが、sk_buffの扱い等は他と全く一緒なのでネットワーク周りのデバドラを垣間見る非常に良い経験になった。Ethernetパケットの中身にも詳しくなれたし。ただCPUが複数個になった場合にやばかったりするコードを書いてるので、もうちょっとその辺を詰めた方が良かったかな...。

後は明日のテストとOCamlのオセロの思考ルーチン。


<9/29 追記>
OKきました。VMWare(3G * 2)がHDDから消せる。F田さん、お疲れ様です。

is2007歓迎会

10/4はis2007歓迎会です。よろしければお越しくださいませ < 上の人。

しかし内定が決定してからもう1年経ったのか。あの時はCすら書けなかった人が今はデバドラとか書いているのを見ると、なんだか凄い場所だなぁと思ってしまう。

2006年09月26日

glibc malloc

革命の日々!カーネル読書会で講演してきました

The 67th kernel reading party

kosakiさんのglibc mallocに関する講演。楽しすぎて、1時間半も有るのに気づいたら見終わってしまった。個人的にはマルチスレッド環境におけるロックの取り方 -> アリーナの確保周りが凄い参考になった。ってかカーネル読書会はツッコミが鋭くて素晴らしい会すぎる。MLに登録したので気になるネタが会ったら行ってみよー。

さて、H木先生のテストの日程が遂に決まって29日に。1ヶ月ほど前から昔のサークルの仲間と温泉行く約束してたのですが、断るハメに。もっと早く決めて頂きたかったですよ、ほんと...。

2006年09月24日

情報論理テスト

明日山場です。終わったら飲みにでも行きたい。8, 9月はかなり稼働してた気がするな...。結局実家にも帰ってないし。まぁ10月からもフル稼働しますが。

孤島からビンを流す会

孤島からビンを流す会

yoira君が面白いモノをはじめたので宣伝。新感覚SNS過ぎる。

2006年09月23日

GDB: Debugging programs with multiple threads

Debugging programs with multiple threads

GDBでマルチスレッドプログラムをデバッグするのはどうやるのだろう、と思っていたらこんなのが。「strace -f」というのも最近教えて頂いて、如何に自分がツールを使いこなせていないか身にしみた。やっぱりgdbとgccは一度ドキュメントに全部目を通すべきだな。もっと「早く知ってれば...」的なのが多すぎる。

マルチスレッドでのバックトレースの吐き方はここらへんのソースを読めば分かりそう。

OCaml課題: Reversi その1

レジュメ

情報論理の試験勉強がダルいので、やっつけた。嫌なものの上に更に嫌なものが重なると、前者をやるらしい。試験が終わったら木の探索の辺りを実装しよう。横でnaoki氏がやたら頑張っている。

2006年09月22日

CPU実験までもうすぐ

CPU実験

裏で班員確保の為の工作が行われている模様...

ルイーダの酒場って絶対に殺伐としてるよな。あいつとは冒険に出たくないとか。まぁラスボスを倒せるかどうかは8割方ここで決まるから仕方ないか。

2006年09月19日

2次元積符号用デコーダ

Design Wave設計コンテスト2006

これを作る課題。案の定VHDLという言語が頭からすっかり抜けていた。とりあえずこれでハードウェア課題は終了。

2006年09月18日

liblog

Replay Debugging for Distributed Applications

Presentation

Dennis Geels

分散ソフトウェアを開発している時に一番頼りになるのは、というか唯一頼りになるのはログ。バグが起こったときには、それこそ行単位にログを吐かせまくって原因を特定する。ローカルに吐かせたものを見るのはどうしても面倒なので、中央にログサーバーを立てて集中的にログを見れるようにもしてみた。しかし台数が増えると色々なサーバーのログが入り混じってしまうので、結局見るのはローカルに吐かせたログになってしまう。

liblogはなんとログからその時の状況をreplayするという凄いハック。thread, signal, malloc, network等の状況も再現してくれる。thread対応には独自のスケジューラーを作ってみたり、gdbをインターフェースにしてみたりと色々ハッカーすぎる技術が詰まっている。しかし肝心のliblogのページが落ちてるのが悲しすぎる。

個人的にはlibcの関数をrecordしてくれるだけでも十分嬉しい。straceはログ吐き過ぎなので、10時間後に止まるバグなんかを突き止めるにはちょっと向いてない...。しかし今思い出して見ると、Jockeyも同じような事が出来るのか。こっちはソースが読めるのでちょっと見てみよう。

こういう事してるから課題が進まない。

2006年09月16日

QM法

ふと学科wikiを見たら、ハードウェア課題の「ハードリミット」まで後4日。なんと。後3つ残ってるから1日1個片付けんと。周りの人がかなり苦しんでたハードウェア構成法課題第5回を片付ける。課題やるのは2ヶ月ぶりぐらいだ。

真理値表を入力とし、Quine - McClusky法によって回路を簡単化するプログラムを書く。

OCamlのプログラムを久々に書いてみると文法エラー & 型エラー出まくりで全然効率が上がらなかったので、C++で一からさくさく書いた。OCamlで書いてた人は上手く末尾再帰で書かないとスタックオーバーフローしたりしてたみたい。

C++だとそれは無かったので助かったけどやっぱ本質的に再帰なアルゴリズムの所とか超書きづらい。STLまみれになってしまって凄い読みづらいし。一応2時間ぐらいでプログラム仕上げて1時間ぐらいでレポート書いて提出。

明日明後日で1個ずつFPGA課題を仕上げる。最終課題は何を作ろうかねぇ。VHDL忘れてそう。

ちょっとQDBM触ってみた。APIの名前に全く統一性が無くて最初は困惑した。一体どのコンポーネントを使えば良いのか全然分からんかった。DepotとCuriaの違いは何やねん、とか。が、一度触ってみると結構使いやすい。HyperEstraierのAPIもよく出来てるしなぁ。これは良い。

2006年09月15日

Asynchronous IO

例の自前のライブラリに非同期I/Oを組み込もうとしてみたのだが、どうも上手く行かない。多少パフォーマンスはあがるのだけど、エラー処理どうするの?とか。

世界中でこいつを有効に使えているソフトウェアって有るんですかねぇ...。

Bigtable

Databaseにお熱。Bigtableとか見せつけられたら作りたくなるよなぁ。このGoogle特有の割り切り方が良い。そして競合してみたくなる。色々資料読んだり、nvacaさんの紹介でXerialの中の人のお話を聞かせて頂いたり。

地下クラスタ使って色々楽しいことしたいけど、結局ルート権が無いから結構不便...。I川研の人くれないかなぁ。ライブラリとか入れるのとか面倒す。

しかし複数台のマシンを使ったプログラミングというのは楽しすぎる。身辺が落ち着いたら & もうちょい調べたらちょっと簡単なのを実装してみる。負荷テストをクリアした超強力なネットワークライブラリとスレッドライブラリが手元に有るので本題から入れそう。3~6ノードぐらいで最高性能が発揮できてwebのバックエンドに向いている奴を作ってみるというのが、手頃でしかも需要がありそうで良いかなぁ。

とかまぁ妄想中。

2006年09月13日

Programming with POSIX threads

9月前半のテストが終了しました。まだ後半の方にも有るので、まだやっていない夏休みの課題をさささっと片付けてしまう事にしよう。それにしてもH木先生はいつテスト日程を決めてくれるのか(笑)

最近はpthreadを用いたthread pooling式のマルチスレッドサーバーアプリケーションと毎日のように格闘しています。pthreadを使うにあたり良い本は無いものかとある人に紹介して頂いたのがProgramming with POSIX threadsです。

Programming With Posix Threads (Addison-Wesley Professional Computing Series)

Programming With Posix Threads (Addison-Wesley Professional Computing Series)

  • David R. Butenhof
  • Addison-Wesley Pub (Sd)
  • 1997-05-06
  • ¥ 8,528

Programming with POSIX threadsの続きを読む

2006年09月10日

21st Century Compilers発売?

所謂ドラゴンブックの第2版。まだかなぁとか言ってたら買えるようになっていました。

Compilers

Compilers

  • Monica S. Lam、 Ravi Sethi、 Jeffrey D. Ullman、 Alfred V. Aho
  • Addison-Wesley
  • 2006-08-31
  • ¥ 12,239

が、ちょっと高すぎ。積読が有るのでまた今度買うか。

画像SPAM

最近gmailのSPAM判定に漏れてくるメールが多いなと思ったら、「画像に本文が書かれたSPAMメール」で驚きました。これフィルタ作るの難しそうだなぁ。こんなのが増えたらもぅメールボックスを見る気すら失せてしまいます。

画像照合技術を駆使した上手いやり方でスパムフィルターが作れれば良いんですけど...。

2006年09月08日

言語処理系論: テスト

H谷先生担当のコンパイラのテストがありました。教科書が非常に良く出来ているため、授業の内容も大体これに沿っていました。Coinsの中田先生の本です。とにかく説明が分かり易い。1万円しますが1家に1冊は必須だと思われます(笑) ISer 30人中半分ぐらい買ってた気が...。

コンパイラの構成と最適化

内容はこんな感じです。

  • 構文解析(LL, SLR, LALR)
  • 属性文法
  • 関数呼び出し(スタックの構造等)
  • 生存解析(データフロー方程式)
  • 干渉グラフ
  • レジスタ割付
  • 命令タイリング(Maximum Munch, DP)
  • 最適化(共通部分式の削除, 定数伝播, コピー伝播等)
  • ループ解析

最適化については最後の授業でしかやらなかったので、もうちょっとやって欲しかった。次は離散数学です。数学苦手。

2006年09月07日

Google Code Jam 2006

テスト期間中だけど、時間も区切られてるらしいので参加してみました。やってみると画面がやたら格好良い。近未来感溢れてます。topcoder.comというプログラミングコンテストサイトのシステムがそのまま使用されています。

とりあえず1問目(250点)を通して右上をみたら残り40分ぐらいあったので、点数もうちょっと上がらんかなぁと思って最適化かけたり省メモリ化したりしてました。しかし点数は下がる一方。なんで速いコードなのに点数下がんねん!どうやったら点数上がんねん!と唸ってたら1時間経ってしまいました。

で、2問目(750点)にとりかかり20分ぐらいでテストケースが通ったのでさぁcommitしようとしたら「Time Expired」の文字が!

なんと「2問で1時間だった」ようです。しかも「早く解けた方が点が高い」らしい。そりゃどんどん点が下がっていく訳だよねぇ。まずRuleをきちんと読んだ方が良かったようです。一問目はSystem Testが通ったので一応「75.0」という点はついたみたいです(笑)

2006年09月04日

ハッカー養成塾!: 入塾案内を公開

ハッカー養成塾!: 入塾案内

OpenSourceMagazine 2006年4月号 「ハッカー養成塾」 に寄稿させて頂いた文章を公開しました。

このコーナーは毎月凄腕の人達が登場していて楽しみにしていたら、なんと高林さんからバトンが回って来たという...。僕の次は井上さんに回しました。

千葉滋先生に「アカデミックな世界ではどうしても論文を重視し、実装を軽視する傾向が有るという事です」という部分に反論されてしまいました。自分自信も半年ぐらい専門教育を受けてちょっと考えが変わり「実装を軽視する」というよりは「論文もソフトウェアも書ける人自体が少ないんじゃないか」とかいう考えになってきました。まぁこの辺の実情は後数年内に分かるかな。