Myページ
ホーム
コミュニティの人々
ソフトウェア
技術紹介
適用分野
Tyzohとは
ご意見お問い合わせ

kkatoのブログ

2008年10月アーカイブ

Haskellでのデバッグ:traceの使い方のコツ

今日のちょっといい話:「朝出かける前に、娘(3歳)に『逝ってよし』と言われた」

Haskellにはデバッグ用にtraceという関数があって、詳しい使い方はここここを参照してほしいのですが、さらに便利に使う方法を考えついたのでメモっておく。

デバッグ出力というのは、あまり出しすぎてもデバッグしづらかったりするので、状況に応じてON/OFFをしながら動かしたいのですが、Haskellだとそこが不便に感じました。

JavaやCのような手続き型の言語だと、デバッグ出力は大抵独立行になっているので、適宜「//」などをいれてcomment/uncommentをすれば、デバッグ出力の調整は比較的簡単にできます。

その点、Haskellだと本体コードと混ざりがち。

なので、

= let dbg=trace (show hoge) in

のように、関数定義の最初の行でdbgという関数を定義しておくのはどうでしょう。そして本文て適宜dbgを入れたり消したりする。遅延評価なのでdbgが一度も本文に出てこなければ何もしません。

あるいは、

=
let dbg=trace (show hoge) in
-- let dbg=id in


のようにしておいて、デバッグ出力不要な場合はtraceの行をcomment、idの行をuncommentすればいいです。

単純にデバッグ出力を独立行にしたいだけなら

=
trace (show hoge) $
(本文)


としておいて、必要に応じてtraceの行をcomment/uncommentするという手もありますが、これだとデバッグ出力する場所が限られるので上記の方法の方が柔軟性が高いかと思いました。



kkato (2008-10-29 16:18) | コメント(0)| トラックバック(0)

これ、なんの競争?

新聞記事で笑った。

 長門市、焼き鳥世界一奪還 「これ以上長い竹串は無理」

引用:
23.42メートルの新記録を樹立した
引用:
1本の竹串でつくるのがルールで、長門市側は「これ以上長い竹を探すのは無理」とみるが

これって要するに長い焼き鳥を競ってるんじゃなくて、長い竹串を競っているのでは?

このためだけに遺伝子組換え竹とか作り出すんじゃないかと想像してしまい怖い。だって...

引用:
同市は(中略)世界記録を出したが、戊辰戦争以来のライバルの福島県会津若松市が今年4月に(中略)、同県川俣町が8月に(中略)世界一になった。

昔からの怨念というのはおそろしいものだから...



kkato (2008-10-27 13:41) | コメント(2)| トラックバック(0)

.NETでのスレッド処理について

机の上に.NETの本が置いてあると、どうしたの?と心配される今日この頃、みなさんいかがお過ごしでしょうか。

私だって.NETくらい使いますとも。っていうか、むしろちょっと.NETを使ってみて楽しくなってきている。

ということで、久しぶりに技術的な話でもしようかと思います。

C#でコードを書いていて、こんなことやってみたくなりました。
・二つのスレッドを立ち上げる(これをA, Bとおく)
・スレッドAはスレッドBに処理してもらいたいものをキューに入れて、スレッドBはキューにたまった仕事を順番に処理する

こんなこと簡単にできそうなんですが、.NETフレームワークではできないっぽいんです。(私が知らないだけかも、教えて、エロい人詳しい人)

問題になるのはキューにジョブが無いときで、その場合、スレッドBは待ち状態にならなければいけません。もちろん、無限ループで待つなんていうリソースの無駄遣いはいやなわけで、その間スレッドBはお休みしておいてほしい。pthread(Linux等で使われるスレッドライブラリ)だとpthread_cond_waitですが、それが.NETではないんです。

近そうなのは、RegisterWaitForSingleObjectですが、これは他のスレッドを待つのではなく、同一スレッド内のイベント発生を待って、イベントが発生すると別スレッドを起こすというものです。これを使って上記の所望の機能を実現することは不可能ではないですが、毎回スレッドを起こすのは気持ちが悪いですし、オーバーヘッドも気になります。

.NETにはなくてもWindowsにはpthread_cond_waitにあたるものがあるようで、結局Win32APIを直接たたくことにしました。kernel32.dllにあるWaitForSingleObjectがそれです。でも、なんで.NETの開発チームはこのAPIを.NETフレームワークから出してくれなかったでしょう。不思議です。

結局なにか本格的なことをやろうとすると、Windowsのハラワタに手を突っ込んでグリグリしなきゃいけないんでしょうか。せっかく.NETを好きになりかけてきたのに、残念な気持ちです。

kkato (2008-10-22 09:14) | コメント(0)| トラックバック(0)

英語バブル??

今日の名言:「アメリカ出張から帰った直後に神戸に出張って、まるでデキるビジネスマンみたいじゃない?(w」

時事ネタにしてはかなり乗り遅れていますが、ゲートウェイ21の破綻の話をしよう思います。

被害にあった方々は本当にお気の毒だと思います。私が気に入らないのは、マスコミの取り上げ方で、「若者の夢をふみにじった」という論調。

夢の実現のために海外に留学するという、典型的な若者像をマスコミが勝手に作り上げたんでしょうか。それとも、事実として「夢の実現のために」留学するような人たちばかりなんでしょうか。

本当にちょっと留学したくらいで大きくキャリアアップできると思っているとしたら、それはかなりのスイーツ脳なんじゃないかと思います。たしかに英語が金になるのは事実かと思いますが、かけたお金に見合うだけの英語力が身につくのかと疑問に思いました(報道によると結構な金額になるんですよねえ)。ちょっとくらい英語ができるようになったところで、「夢の実現」なんて無理でしょう。

どうも日本の英語教育関連商品って、実価値以上の価格がついているんじゃないかなって思うんです。だからこの業界はあくどい、なんてこと言うつもりはなくて、それが資本主義ってものなのでしょうがないんです。英語でキャリアアップしようとしている人たちの妄想プレミアムがついているのかと。英語バブルなんじゃないかなって。

この前のNOVAの倒産といい、今回のゲートウェイ21の破綻といい、そのバブルが崩壊に近づいてるのかなって気がしたわけです。これは考えすぎ?

参考文献:
栄陽子「留学で人生を棒に振る日本人」(扶桑社新書)



kkato (2008-10-20 16:50) | コメント(0)| トラックバック(0)

旅のおみやげ(その2)

IMG_0941.jpg
もう帰ってきてからしばらく経つのに、ウクライナの話の続きですみません。
おみやげに、定番のマトリョーシカを買ってきたのですが、これはちょっと失敗だったかも。上の写真を見ればわかるように、多重度が低すぎます。3体しかない。

2年前にチェコで買ってきたやつと並べてみましょう。
IMG_0942.jpg
チェコのやつのほうが小さいのに多重度は5です。納得いかない。

あと、2体目以降が老け顔なのも納得いかない。



kkato (2008-10-15 16:14) | コメント(1)| トラックバック(0)

良い論文を書くために

うちの会社では毎年社内の論文コンテストがあるのですが、先日某偉い方が最近論文の質が落ちてきたと嘆いていました。

じゃあ、どうやったらいい論文が書けるのだろうかと議論したところ、意見が一致した点は良い論文をたくさん読むこと。社内でも「論文の書き方」のようなHow-to的な研修はあるのですが、結局そこで学習できるのは小手先の技術に限られるでしょう。やはり良い論文をたくさん読まなきゃ良い論文は書けないんだろうなあと感覚的に思います。

丸谷才一が「文章読本」の中で、文章上達のコツを「名文をたくさん読むこと」と言っていたのを思い出しました。科学・技術についても同じことが言えるんじゃないのかと思います。

じゃあ、何が名文なのかというと、丸谷は「あなたが名文と思う文章が名文」と言っています。技術論文についても同じことが言えるんだろうと思います。読んでいてこれはすごいと思った論文を何度も読み返すのがいいのではと思います。

昨日ノーベル物理学賞が発表になりました。日本人2人(一部報道には日本人3人とありますが、1人はアメリカ人です)が受賞したということで、本当に喜ばしいことです。一応、理論物理をちょっとは(本当にちょっぴり)学んだことがある者として、受賞のもととなった原論文を読んでみたくなりました。ノーベル賞をとったくらいだから、これは名文に違いないだろうと。

でも、それがみつからないんです。古い論文のようなので、電子化されていないのが原因でしょうね。受賞者の名前で検索しても、受賞のニュースばかりが出てきて、全然みつかりません。

昨日の夜はそれであきらめたのですが、一夜明けてやっとここに論文を見つけました。でも、見つけたきっかけがスラッシュドットの記事だったっていうのはちょっとアレですよねえ。

まあ予想されたことではありますが、いざ読んでみるとさっぱり分かりません。「あなたが名文と思う文章が名文」という基準からするとこれは名文ではないですね。



kkato (2008-10-08 12:06) | コメント(5)| トラックバック(0)

旅のおみやげ


IMG_0922.jpgIMG_0927.jpg


ボロノイ記念硬貨をもらったのに、自慢するのを忘れてました。
いいだろ~

ボロノイさんの顔とボロノイ図がデザインされています。

kkato (2008-10-07 14:30) | コメント(2)| トラックバック(0)

ウクライナはビールの国だった

酒の話ばかりで恐縮です。
もうとっくに帰国しているのですが、ウクライナレポートの締めくくりということで。

アムステルダムからウクライナ国際航空に乗ったとき、飲み物は?と聞かれてビールを頼んだら、500ml缶が出てきたのでびっくり。いままでの経験で言うと、飛行機の中は350mlが出てくるものかと思っていたので。

でも実際キエフに着いてみてその理由が分かりました。350ml缶なんてどこにも売ってない。需要がないんでしょう。そんなもんじゃ飲んだ気がしないと。

実際キエフの人たちはよくビールを飲みます。ファストフード店でもビールが置いてあります。しかも生ビール。で、みんな結構朝から飲んでます。

街の中でも、ビールの瓶を片手に持って、道を歩いている人が多いです。若者が輪になって談笑しながらみんなビールを飲んでるという光景も、よく道端で見かけます。しかも私が行っていたころは気温5度とかなのに、みんな外でグビグビ飲んでます。オープンエアーのバー(日本で言うビアガーデンみたいなもんかな)も深夜まで賑わってます。5度なのに。

実際ウクライナのビールは安くてうまいんです。

で、私の座右の銘は「郷に入っては郷に従え」なのですが、
1. さすがに朝からビールはやめておきました。ダメ人間度がアップしそうな気がして。
2. でも昼食時には飲みました。(写真参照)
3. 気温5度のビアガーデンもやってみました。体が芯から冷えてヤバいです。

IMG_7172.jpgIMG_7169.jpg


ちなみに、成田・アムステルダム間のKLM航空機内のビールは250mlでした。これには、責任者出て来い!的気分になりました。

kkato (2008-10-02 13:08) | コメント(0)| トラックバック(0)

« 2008年9月 | メインページ | 2008年11月 »

プロフィール

kkato

・10年以上前からのdebian使いです。
・C++, Ruby, perl, ocamlなどの言語をよく使います。
・数値計算などが得意です。
・スパムメールの文面をよく読むのが好きです。
ホームページ:
http://sites.google.com/site/kimikazu/

カテゴリ

RSSフィード

コミュニティの人々 | ソフトウェア | 技術紹介 | 適用分野 | Tyzohとは | ご意見お問い合わせ

Copyright (C) 2004-2011 Nihon Unisys, Ltd. All Rights Reserved.
Powered by Movable Type Open Source