トップ «前月 最新 翌月» 追記

はじめてのにき

ここの位置付け

2004|11|
2005|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|

ToDo:


2008-05-01

_ 50てん

またもむちゃくちゃである。

(21:39)

_ 間抜けは死ねって感じだなー

  • 250 は2個所腐ってた
  • そもそも long long の sqrt は sqrt(double) で全く問題ないのだが
  • 500 は問題読み間違っていたというか読んでなかった
  • 正しく読めていたとしても間違いなく解けていない
  • それはともかく読めてないのにとりあえず遅そうなヤツに適当に challenge してたので challenge が失敗してるのを見ると ?? とか思ってアホだった

500はこれこそ DP ってヤツなんだろーなーとは思った。 int a[51][51][51][51]; とか書いてるんだろーな おめでてーなとか思っていた。 予習する時間なかったのでまぁそれはそれでしょうがないから 可及的すみやかに練習しようと思う。

あとまぁ他にも間抜け祭りな近頃ですね…

(22:09)

_

とりあえず SDL なんちゃらの後に 三次回は回避して友達の家に行って 酒呑んでなんとなく出来心でケータイ破壊して 5時くらいに寝て起きて出社してやっと家に帰宅みたいな流れだった。

今日は早めに会社出てケータイを修理に出して 会社で走らせた時間かかる処理の結果を見ると間違ってたので アホアホと思いつつやり直しをしてもらいつつ SRM とかやって、 また処理が間違ってて、アホアホと思いつつやり直して今に。

アホアホ

(22:32)


2008-05-02

_ ああそうか

かずやさんって参加表明で見たっけ…! とか真剣に考えてたんだけど、

http://d.hatena.ne.jp/kazuya_a/20080429/1209478318

前日に見てた c-wrapper で GL 動かすとか 明らかに茨な感じのことされてた人か… もうちょい話聞いときゃ良かった。

(01:25)

本日のツッコミ(全2件) [ツッコミを入れる]

_ kazuya_a [c-wrapperで動かしているのはSDLです。GLの方はGauche-glという拡張パッケージで利用できます。]

_ shinh [なるほど。 SDL なら c-wrapper でたいてい動きそうではありますねえ。]


2008-05-04

_ エレベータ特集

http://longlong.way-nifty.com/blog/2008/04/post_0a75.html

http://cvs.m17n.org/~akr/diary/2007-05.html#a2007_05_22_1

http://shinh.skr.jp/m/?date=20070523#p03

http://cvs.m17n.org/~akr/diary/2007-05.html#a2007_05_25_1

http://cvs.m17n.org/~akr/diary/2007-05.html#a2007_05_26_1

http://shinh.skr.jp/m/?date=20070528#p03

最後のは何が言いたかったんだっけなーと思い出しても 思い出せなかった。 たぶん2階から10階に行く時に よく2階から1階を利用してるとかでうっかり下を 押してしまった時に中入ったら 最初っから1階押されてたりしたらせつないなー とか考えたんじゃないかとおもう。

あとどうせ閉めるボタンは押さなければならないので 自明な1階を押すくらいはやってもいいかなぁ とかエレベータは色々考えられて良いな

(06:25)

_ 週末

マラソンとゴルフとかそろそろ セレブ度で島耕作あたりに勝てると思う。

それはそうとマラソンやる気起きなくて困る。

(23:44)

_ エレベータ

http://twitter.com/yanbe/statuses/803012478

世の中には賢い&邪悪な人がいるんだな。

(23:44)

本日のツッコミ(全4件) [ツッコミを入れる]

_ Gus [基本だと思ってました > 逆方向のエレベータに乗る。 満員のエレベータを二、三回見送る間に思いつくような技かと。]

_ shinh [さすが都会人…! 渋谷路上から銀座線に乗る時に半蔵門線に入って表参道で乗り換えるとかいうテクニックを見た時に似..]

_ irori [前回のマラソンでそれ使いました。 長く待たされている人がいたら逆向きのエレベータでも乗せちゃう。 ほんの少し点数..]

_ kodera [リンク先が見れてないですが、呼び出し時点で行き先階指定する というのは結構考えた人居るのでしょうね。まぁ、shin..]


2008-05-05

_ 再帰関数

って書きかたわからないよなーといつもおもう。 難しいのはこう、最初に引数がバシっとわからないんだよな。

たいてい、なんとなく再帰で書こうと思ってから 引数を足しつつ書いてくことになるんだけど、 再帰なんていうややこしいことやってる最中に引数を後で足すのは割とめんどくさい。 IDE とかあればラクにやれるのかなぁ。

(01:45)

_ 天才的なアイデアを

思いついた。

http://d.hatena.ne.jp/giveup/20080504#c1209968390

を見てて、 -std=c99 とかタイプするの超めどいじゃん かといって gcc を alias しちゃうとゴルフでめんどくさいし… とか思ってて別名で alias すれば良いと当然の。

> cat ~/bin/g99
#!/bin/sh
gcc -g -std=c99 -W -Wall -ansi -pendantic -fverbose-asm "$@"

個人的に -W はあんま好きじゃないけど。

(15:51)

_ Io

があのランキングに認識されたらしい

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Scala より上なのか。

(16:02)

_ C++

最近データ構造作らずに pair とかの力技でコード書くこと多いから tuple 組み込みで欲しいなぁと思った。 てか tr1::tuple はよく考えると topcoder で使えるのか。

(16:27)

本日のツッコミ(全2件) [ツッコミを入れる]

_ あろは [コンパイラのバージョンにも依存するのかもしれませんが(よく確認せず脊髄反射ですいません…),std=c99 の後に ..]

_ shinh [わ、ホントですね。ありがとうございます。 -W がなんか消えつつあるというのは見たことがあったんですが忘れていました..]


2008-05-06

_ うーむ

そろそろ速度が効いてきたから アルゴリズム的に最適化せんといかんな…

(02:10)

_ iroriさん

すごすぎてこまる

http://www.topcoder.com/longcontest/?module=ViewStandings&rd=12200

(04:30)


2008-05-08

_ PFI

http://kzk9.net/blog/2008/05/gw.html

呼んでいただいたのでありがたくいってきた。 なんかまーこいつら賢いなーと思いました。

呑みながらプログラム書いてること多いとかいうと意外がられたんのは 意外であった。

適当に黒歴史を掘ってきてみるに そいや500円1.8リットルの工業製品的な日本酒とか呑んでたなーと思った。

http://shinh.skr.jp/misc/index.html?2002082901#2002082901

(02:32)

_ あと

たしか 300 円 3 リットルくらい入ってる日本酒とか 信濃屋で見たのが最安だった気がする。

(02:38)

_ なんか

こう、見る人みんな頭いいからバッドノウハウだけが 心の支えであると最近言ってるんだけど、 nyaxt さんとか autotools とかみたいな バッドなことも色々知ってて、 こうもうどうしようもないなと。 ついでに英語力も人格も勝てなさげなのでもう基本的にだめ

(23:32)


2008-05-09

_ そういえば

ケータイの修理費用は1万円らしい。 ケータイをへし折るのは長年の夢だったわけだけど、 今は後悔しかしないな。 今後はケータイに力を入れたくなった時は この事を思い出して自重しよう

(09:18)


2008-05-11

_ るびーかいぎ

をかんがえよう

21日

- 朝: VM => おもしろそう - 13:30- m17n => ASCII でいいんじゃねウソですごめんなさい - 16:00- Ruby 教育 => まぁどうでもいい - (matz江市, DB, 連投) - 17:30- LT => まぁ面白いの、かな?

22日

- ライブラリ? => 興味ないかなぁ。 - matz 説得 => 面白そう - リファレンス, OSX => まぁどうでも良いか - あと => うーん面白そうではないか

初日はまぁ面白そうと出た。

(01:05)

_ インクリメンタルワープ

これが w3m 手放せない要因の一つだったりする。 ちなみに要因はたぶん100個くらいある。

http://gusmachine.blog49.fc2.com/blog-entry-341.html

たとえば gus さんとこを見たくなったとすると まず適当にアンテナを開いて (w3m C-j TAB j C-j C-j というコマンド列で叩いたら アンテナに着くようになっていて、 何度も繰り返したためにほとんど暗記した動作で2秒もあれば アンテナが開いている。 あるいは C-r w3m a. C-j あたり) / youd C-j あたりで着く。 実際は youdou あたりまで打って目で正しいか確認するのは一瞬入るので、 まぁそれでも全体で10秒もあればまず確実に着いてるんじゃないかなぁと思う。

要はよく見るとこのアンカーテキストはだんだん 頭に入るから移動が早いみたいなそういう。

(13:22)


2008-05-12

_ gmail

そういえば gmail の html モードは割と w3m に優しくて良いみたい。

https://mail.google.com/mail/?ui=html

とかにアクセスするが正しいのかな?

さてこれを例のごとく mod_python でフィルタリングしたいんだけど、 HTTPS は今のところフィルタかましてないので保留。

(02:24)

_ なんか

http://shichiseki.jp/m/?date=20080509#p02

僕はどうやら頭が良いと思われがちのようだというのは事実だと思う。 おそらく挙動とか風体が不審者めいてるからだと思う。 まぁこれは全体的に得してると思うので良い。 あとすぐに知ったかぶりをするのでそれも影響してそう。

僕はまぁ平均より頭が悪いとかそういうことは無さげ。 なんだかんだで人生で頭使った時間はかなり平均より多いはず。

のあたりはそう思うんだけど、 まぁ特別賢そうなこととか何もしてないと思うんだよな。 僕がやって人に誉められたようなことっていうのは、

  • ヘンな用途にヘンなものを使ってにやにやした
  • アホみたいな時間をムダなことに投入した

のどっちかだと思う。 前者はたぶん RubyFS とか sed でほげほげそういうので、 後者はたぶん ICFPC2008 とかゴルフとかまーそいうのだろう。 sed でほげほげなんかは両方兼ねてる気もする。

でまぁそいうのをもって賢いと定義するなら別にいいんだけど、 一般的に言って上記2つというのは賢いとかそいうものではない気がする。

で、問題は、あまり自分で賛同できない誉められ方をしても 嬉しくないというのがあって、賢いとか誉めらるより、 アホだとか変態だとか辛抱強いとか 言われる方がはるかに嬉しいんだよなーという。

あとまぁなんだかんだで投下した時間は多いので、 ごちゃごちゃと色んなことを知ってるとは思う。 しかしそれも賢さとは違うんじゃないかと思うので、 sed とかの話をしてお前年齢詐称してるだろとか 言われる方がまだ嬉しいわけだ。

あとゴルフは賢そうに見えそうだけど、 僕のゴルフの記録って基本的に膨大な時間を使ってあれこれやってたら たまたま短くなった、というものが多い上に、 基本的に1位を取ってるような問題は極めて少ないことは ゴルフやってる人にはまぁ同意してもらえそう。

(02:52)

_ wiki

なんとなく wiki が欲しくなってきた。 どっかに作るか。

(02:54)

_ TODO

久々に TODO が落ち着いたのでメモ

  • sevilwm
  • topcoder の 500 点問題やる
  • hello
  • sed
  • wiki というか
  • X
  • 読む

http://www.dodgson.org/omo/t/?date=20080510#p02

http://d.hatena.ne.jp/suu-g/

(02:59)

_

そいや酒呑みながらコーディングするのは、 くだらない作業を苦痛に感じないため、 という側面が大きいと思う。

例えば似たような関数宣言の繰り返しなんかがあると、 酒とか呑んでないとマクロとかで妙に凝った書き方をしたくなったり、 あるいは単にそこで飽きたりする。 そいうのが酒によってカバーされるというような。

(03:01)

_ あと

ちらほら名前を見る PCASTL というのが面白そう

(03:04)

_ おーさか

http://natu.txt-nifty.com/natsutan/2008/04/sicp_0391.html

なつたんさんって大阪らへんの人なのかな

(03:11)


2008-05-13

_ IA-32 architecture

http://www.sandpile.org/ia32/index.htm

めも

(04:39)


2008-05-14

_ いきたいいきたい

http://twitter.com/natsutan/statuses/810758231

(14:41)

本日のツッコミ(全4件) [ツッコミを入れる]

_ なつたん [15日19時頃、正門から入ったスタバに行きます。 私の東大の認識はこんな感じなので、無事に到着できるか不安です。 ..]

_ きむら(K) [おいおい、そろそろ電番は消しておいたら?(^^;]

_ shinh [ああそういえば忘れていました。]

_ shinh [けしました。ありがとうございます。]


2008-05-15

_ 喰えてるのか

http://twitter.com/hogelog/statuses/811105271

http://ja.wikipedia.org/wiki/G%EF%BC%9D%E3%83%92%E3%82%B3%E3%83%AD%E3%82%A6

どのへんが生存圏なんだろうなー。

はっはっはーはじまるよー

(00:36)


2008-05-17

_ 休日

週末です!

最近思うに腕が痛すぎると思う。 そろそろなんかコーディングに普通に支障でまくってる程度に痛い気がする。 あとビールが持ち上がらない。 甘太郎の中ジョッキはもういい加減無理だと思う。

最近はこう最近に限らず常に、 休みになるととても嬉しいわけなんだけど、 仕事が楽しくないかと言われるとそんなに楽しくはないのだけど、 楽しいかと楽しいかと言われるとそれなりに楽しく、 全くやりたくないかと言われるとノーであるというような 感じかなぁとなんとなく思う。

週休4日ならいいのに。

ちょっと前に書いた文章を思い出したので 書き足してはっておく:

そいやサイボウズ☆ラボが100%の時間が20%みたいな感じだと聞いて、 少しうらやましいかもと思いつつも、 積極的にそれは実際のところイヤかなぁと思う理由について、 いまいちうまく説明できない感じなので、 言語化しておこうかと思う。

まず普通に考えるとたぶん、 実際に世の中の役に立つ可能性がないのではないか、 なんていう真人間的なつっこみがあると思うんだけど、 まぁ僕はそんなことはどうでもいいのでどうでもいい。

にも関わらずイヤだと感じるので説明がしにくかったと。

で漠然と考えると、 僕の好きなクソコードとか、バッドノウハウとか、 技術の目的外転用とか、そういうのは、 それと対比できるまともなものがどっかにあるから 面白い、っていうのは一つあると思う。

そういうのと(僕にとっては)似た話として、 プログラムの楽しさってのはこう、あれこれ勉強した知識を、 ああこれはあれに使えるそれはこれに使える、 と色んなアイデアに適用していくのが まぁ楽しいというのがあって、 クソコードとかの楽しさは、 せっかく覚えた技術をどうでもいいけど 何やら難解なことについやすのがなんとも楽しい。

というわけで成果物が実用的であることは 僕にとってはどうでもいい。

あと、どうでもいいことに時間をついやす倒錯した楽しさはなくなるけど、 問題が難解であるならば、成果物がたまたま実用的でもそれはそれで問題はない。 ただ残念ながら実用的な問題は難解でない ただ面倒なだけの作業が多く含まれてることが多くて、 それは僕はそんなに好きではない。

ここまではこう、基本的に自由にできるという 仕事環境に魅力を感じる部分の説明。 めんどくさい部分をやらないですむなんてなんてすばらしい。

にも関わらず、僕がなんとなくなんかしら 一定のなんらかの現実の要求が一定ある 仕事を(家で勝手にやってる遊びの他に)与えられたいと感じているのは、 俺が一人で考えてることなんてたいしたことじゃないよなーということと、 めんどくさいとこ全部避けちゃうと めんどくささに対する感覚が麻痺するとか、 単にボケるとかいうようなことが あるんじゃないかなぁと思う。

僕はめんどくさいとこ避けるのはいつものことなので、 すぐ興味が色々うつって結局なんもわかってないなんてことが よくあったりとかそういう。

でまぁめんどくさいとかは、そんなもんだろうと思うんだけど、 前者はこうネットとか見りゃいいじゃんとかあるんだけど、 そういう話ではなくて。

プログラムを始めた時に、 こうなんか本とか読むわけです。 (僕の場合はプログラミング言語C++第三版なので その時点で何か人生が大きく狂ってる感がある。 すっぽすっぽのせいで未来の偉大な物理屋が失われたんですよ! というのはどう考えてもありえないので、 すっぽすっぽに救われたのかなぁと本気で思う)

でさっぱりわからんなりに読んだ後に内容を全て忘れつつも、 なんとかおーおーぴーとかをちょっと使った コードを試しに書いてみるわけだけど、 おーおーぴー使ったメリットがイマイチわからなかったり、 これ動いてるけど本当にみんなこんな感じで書いてるのかなぁとか、 そういうことを思って不安になると思う。

そういうのってこうそれなりにプログラム書けるようになっても 似たような現象は色々あって、 俺のやってること面白いのかなーとか、 俺のやってること誰かとっくに答え出してるんじゃないかなーとか、 そういう。

さてそいう現象の克服に一定の自由でない仕事が、 完全に自由な遊びに比べて、役に立つ気がする…と思ってるんだけど、

はてなんでだっけ。 なんかそれなりの説明は考えた気がするけど忘れた。

でまぁめんどいので全部すっとばして結論に急ぐと、 自由にやれって言われても一つのことに打ち込むようなら、 それは自由な仕事もいいかもしれない。知らんけど。 でも少なくとも俺はそうじゃないので一定の不自由があるといいなぁというような ことを思っている気がする。 でもまぁその「一定」ってのはそんなに多くない方がいいと思っていて、

というわけで結論は週休4日

(01:05)


2008-05-18

_ w3m -reqlog

http://cvs.m17n.org/~akr/diary/2008-05.html#a2008_05_18_2

を使うと strace とか使わなくても ~/.w3m/request.log に 手軽に残せたりとか。

(16:52)

_ 電話番号

消してみてから、どうせ絶対消し忘れがあるよなーと 思ってぐぐったらあった。 得に美人ストーカーの方から連絡をいただいたりはしてない気がするので、 野郎の電話番号なんて隠すような情報でもなんでもないとよくわかる。

(17:31)

_ 定期預金

高くて金利1%弱くらいみたいだ。 ついでに外貨とかインデックスファンドとか 30分くらい勉強してみたところ 基本的に外貨とかも別に単にオトクなんじゃなくて、 それなりのリスクとかあるんだなぁと勉強になって面白かった。

たぶん

  • 定期預金: 利率低いけど損はしない。
  • なんちゃら預金: 利率はちょっと高く見えるけど銀行に有利なよくわからん機能がたくさんついてる。このシステムはあまりにひどいと思った。
  • 外貨(ドルとかユーロとか): 利率高め(2-3%とか?)だけど変換するのに1回1%とかくらい(円に戻すなら2%くらいってことだと思う)の手数料かかるので結局そんなにかわらなくないか。ドルならまぁドルのまま使うとかあるかもだけど。あとこんなのを見ると日本人としてはバクチでしかない気がしてくる: http://www.shinseibank.com/unyo_info/2010_usd/index.html
  • 外貨(ニュージーランドドルとか): 利率もっと高い(7%とか)けどバクチ要素がさらに高いんだろうと思う
  • インデックスファンド: 安定してるのかなーと思ってたんだけど、思ったよりすごい上下してる(-20% から +30% 程度を見た気がする)。あと万が一倒産したらやばいんだよねこれ。

なんとなく結局リスクが大きいものほど利率多いんだなぁというような 当たり前の結論に至った。 あと国債とかあったか。見てないけど似たようなもんだろう。

結局リスクとかいやで面倒なのもイヤな僕のような子は 年に一度くらい定期預金に入れるといいんだろうなとわかった。

(18:08)

_ cheque

ついでに小切手について勉強したところ、 小切手は check ではなく cheque であるということがわかった!

(18:34)


2008-05-20

_ xpdf

http://d.hatena.ne.jp/mtkh/20080519

をいじるって発想はなかったな… 明らかに便利そうなのでとりあえず入れておく

(13:53)

_ 平日

平日でした!

なんか週末は麻雀打った記憶しかなくてもったいないなーと思う。 麻雀はクソゲーだと信じている。同じ4人ゲーならカタンの方が面白いよ

で今日はしんどいから休んだのでまた休日

(14:20)


2008-05-21

_ だるい

きょうやったこと

http://jp.youtube.com/watch?v=nrFMRuB2lbA

をみた。とても良かった。

ニコニコをみた。

http://www.nicovideo.jp/mylist/4491340

の人がすごいな。

(01:25)


2008-05-22

_ だんまくやさん

なんか色々増やしていただいていたのでちょっとやってみた。

http://shinh.skr.jp/sdmkun/zipup.cgi?mode=txt&down=sonic.bml

これいいな。明らかに僕の好み

(01:33)

_ 謎 putnil

http://markmail.org/message/ozva662lcvxdg76b

とりあえずめも

たぶんレシーバが無いことを示してるとかなんとか。 でも VM_CALL_FCALL_BIT があるんなら良くねーとか思ってしまうんだけど

(02:14)

_

http://www.youtube.com/v/WEBOdWyGE3E

なんか Gauche のやつ出たんだな。

(23:50)


2008-05-23

_ 週休4日

カゼにより予定より早期に実現した。

サボったんならともかく、割と本当にしんどいから全然意味ねーな…

今日は我が家がアリに侵略されてここはサバンナかと思った。 ゴミ袋を捨てたら平和的に退散してくれた。

あとカーネルなんちゃら行きたかったな。無念。 kzkさんにkosakiさんにf/tさんとかいろいろ珍しい感じ

(19:43)

_ ICFPC

2003年って車かー。なつかしいな。 http://d.hatena.ne.jp/ranha/20080523/1211474043

ちょっと ICFPC で上位どんくらいだったのかなと振り返ってみた。

  • 2007: 10/357/869 (2.8%)
  • 2006: 30/361 (8.3%)
  • 2005: 放棄
  • 2004: 86/361 (23.8%)
  • 2003: 20/90 (22.2%)

去年は卑怯なマグレでしかないので、 まぁ上位 10% くらいに入れるといいなぁという感じか。

(19:44)

_ TODO

名刺をつくる

(22:16)

_ Coda

http://d.hatena.ne.jp/suu-g/20080523/1211498211

って今どうなってるんだろう。

kernel 見たら fs/coda とかちゃんとあるね。

あとそいや 9p が何やらメインに入ったらしいとか言ってたなーと 思って見てみるとあった。

だからどうだという感じもするけど Documentation/filesystems/coda.txt は長い。 1600行とかある。

i@u4 ~/src/linux-2.6.25.4/fs/coda
> wc *
   12    43   324 Makefile
  116   354  2970 cache.c
  166   512  4219 cnode.c
   20    41   434 coda_int.h
  195   623  5259 coda_linux.c
  698  2163 17202 dir.c
  243   641  6331 file.c
  306   762  6700 inode.c
   95   304  2467 pioctl.c
  436  1173 10451 psdev.c
   53   136  1221 symlink.c
   71   173  1373 sysctl.c
  875  2690 23291 upcall.c
 3286  9615 82242 total

えっと

(23:35)

_ scope

i = 0
1.upto(3){|i|}
p i

みたいなののブロック内の YARV コード見て、 なんで getdynamic i, 0 なんだよ 1 だろボケ… とか思って少し悩んだ僕は ruby1.8 に毒されてると思う。

ところで getdynamic ?, 0 と getlocal ? って 何が違うのかしらという。

(23:59)

本日のツッコミ(全2件) [ツッコミを入れる]

_ ku-ma-me [getlocal はメソッドとか直下の変数アクセスな気がします。 def foo  x = 1  1.ti..]

_ shinh [がーんそうなんですね…ふーむとなると(mameさんの例の) getdynamic ?, 3 を getlocal ?..]


2008-05-24

_ あー

Xbox で斑鳩あるんだっけ…

http://d.hatena.ne.jp/KouMikage/20080523#p1

やりたいなあ Xbox 買いたす

(03:24)

_ getspecial

うあこれ $_ とかのためか…

ふーむむ

(03:59)

_ ほえー

def factor4(a)
  r = 1
  (1..a).each{|i|r *= i}
  r
end

local table (size: 3, argc: 1 [opts: 0, rest: -1, post: 0, block: -1] s1)
[ 3] a<Arg>     [ 2] r
0000 putobject        1                                               (  85)
0002 setlocal         r(2)
0004 putobject        1                                               (  86)
0006 getlocal         a(3)
0008 newrange         0
0010 send             :each, 0, block in factor4, 0, <ic>
0016 pop
0017 getlocal         r(2)                                            (  87)
0019 leave

local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1] s3)
[ 1] i<Arg>
0000 getdynamic       r(2), 1                                         (  86)
0003 getdynamic       i(1), 0
0006 opt_mult
0007 dup
0008 setdynamic       r(2), 1
0011 leave

def factor2(a)
  r = 1
  for i in 1..a
    r *= i
  end
  r
end

local table (size: 4, argc: 1 [opts: 0, rest: -1, post: 0, block: -1] s1)
[ 4] a<Arg>     [ 3] r          [ 2] i
0000 putobject        1                                               (  77)
0002 setlocal         r(3)
0004 putobject        1                                               (  78)
0006 getlocal         a(4)
0008 newrange         0
0010 send             :each, 0, block in factor2, 0, <ic>
0016 pop
0017 getlocal         r(3)                                            (  81)
0019 leave
local table (size: 1, argc: 0 [opts: 0, rest: 0, post: 0, block: -1] s0)
[ 1] <CFUNC><Rest>
0000 getdynamic       <CFUNC>(1), 0                                   (  80)
0003 expandarray      1, 0
0006 setlocal         i(2)                                            (  78)
0008 getlocal         r(3)                                            (  79)
0010 getlocal         i(2)
0012 opt_mult
0013 dup
0014 setlocal         r(3)
0016 leave

なのか。

えーと…

(06:55)

_ つまり

for の方はなぜこんな複雑なことになってしまうのかー。

あと

*a=1

local table (size: 2, argc: 0 [opts: 0, rest: -1, post: 0, block: -1] s1)
[ 2] a
0000 putobject        1                                               (   1)
0002 dup
0003 expandarray      0, 1
0006 setlocal         a(2)
0008 leave

か。とりあえず expandarray の flag&4 は実装されてない… そして flag&2 もなにやら難解だな。

(07:03)

_ Ruby

スラッシュのオーバーライドってそいや組み込みには無いんか。

(10:30)

_ ニコニコのロースコアの人

なんか見たような名前で呼称されてるのを見てちょっと調べた。

つまるところ僕的にはエスプの人な TAC の人のとこの兄弟はみな異常というような話みたいだ。 HAL の人らしい。

(11:14)

_ Xbyak

       void protect(const void *addr, size_t size, bool canExec)
       {
#ifdef __linux__
               long pageSize = sysconf(_SC_PAGESIZE);
               char *p = (char*)(reinterpret_cast<size_t>(addr) & ~(pageSize - 1ULL));
               int mode = PROT_READ | PROT_WRITE | (canExec ? PROT_EXEC : 0);
               mprotect(p, ((size + (pageSize - 1)) / pageSize) * pageSize, mode);

これひょっとしてダメか。

size < pageSize でも p + size が page 境界をまたぐことはある気がする。

(16:56)

_ はてなー

なんかまわりに見たような名前が多くて面白い。

http://tophatenar.com/ranking/subscriber/78

via: http://d.hatena.ne.jp/lethevert/20080524/p2

odzさんに少しまけ、はともかく、 ABAさんに勝ってる!

(18:14)


2008-05-25

_ break

は throw で実現されてるらしい。

(03:44)

_ とりあえず

x86 の Ruby を作ろうと思った

なんか 404: http://www.ruby-lang.org/ja/

(19:31)

_ ruby x86

でけた。適当にとりあえずこんなかんじでできた。

% ./configure --target=i386-linux --program-suffix=86
% make CFLAGS='-fPIC -O -g -m32' LDSHARED='gcc -m32 -shared -Wl,-R'
% sudo make LDFLAGS='-m32 -L.' LDSHARED='gcc -m32 -shared' CFLAGS='-m32 -O -g' prefix=/usr/local/stow/ruby_x86 PREFIX=/usr/local/stow/ruby_x86 install-nodoc
% ruby86 -v
ruby 1.9.0 (2008-05-25 revision 0) [i386-linux]

でも extconf.rb 実行してもうまいこといかんので 手作業コンパイルするか。

(21:12)

_ Yajit::send

が悲惨すぎる。 結局スタックの積み方が逆なんだよというのが一番大きい問題である。

f(a, b)

とかを呼ぶ時、

push b
push a
call f

となって欲しいのだけど、 YARV は a から順に積んでくので、 順番を逆向きにしなくてはならない。

あーうーん rb_funcall を直接呼んでるのがアホなんだな。 rb_funcall2_rev とか作ってやれば良い気がする。

案外簡単だった。

(22:28)

_ あれ

アホな勘違いしたような

←若いアドレス
"%d\n"  4   self
  SP

なんだそのままじゃん。やはり rb_funcall 呼んでたヤツがおおまぬけ

(22:37)

_ やっぱ逆だろう…

落ち着いて考えるべき

YARV は

putnil
putstring "%d\n"
putobject 4

とかしてくるので、 CPU スタックの上では、

←若いアドレス
4  "%d\n"  self
SP

となる。向きを逆向ける必要はやはりあるだろー。

まぁ逆向けるコード入れることによって解決。 だいぶ簡潔になったのでやっと x86 に行く気が起きる、か

(23:08)

_ めも

i@u4 ~/wrk/yajit
> time ruby1.7 euler55.rb
zsh: correct 'ruby1.7' to 'ruby1.8' [nyae]? y
249
ruby1.8 euler55.rb  2.40s user 0.04s system 99% cpu 2.449 total
i@u4 ~/wrk/yajit
> time ruby1.9 euler55.rb
249
ruby1.9 euler55.rb  1.71s user 0.00s system 98% cpu 1.743 total
i@u4 ~/wrk/yajit
> time ./rubyjit.rb euler55.rb
249
./rubyjit.rb euler55.rb  1.66s user 0.10s system 99% cpu 1.775 total

(23:22)

_ x86

だと全部スタックで渡すので、

←
4 "%d\n" self
SP

とかなってるのだが、 受け手としては

←
argv argc mid self
SP

を期待しているため、

←
argv argc mid self 4 "%d\n" self
SP                argv

とすれば良いか。 つまり普通通りだな

あと argv の引っくり返しは C 側でやっても tail call が jmp になるので良さげ。

(23:35)


2008-05-26

_ 本名

http://d.hatena.ne.jp/moira/20080502/1209734354

似た感覚があるなぁ。

匿名だとデタラメなことを色々したあげく バレて恥ずかしいことになりそうとかいう

(00:08)


2008-05-27

_ mprotect(2)

man がおかしそうに思ったので レポートしたところ次回には反映されるとのこと

(01:36)

本日のツッコミ(全2件) [ツッコミを入れる]

_ kosaki [え? なんか間違ってるっけ? mmap()のmanが間違ってるのは最近LKMLで話題になってたけど]

_ shinh [SYNOPSIS の第二引数が size_t* になってるというような。]


2008-05-28

_ 1.9.0-0 からの流れ

  • 1.9.0-0: 81個
  • 1.9.0-1: emptstack が消えて adjuststack が発生
  • current: putcbase が発生

(07:11)

_ toregexp

げー引数の数変わってる…

(07:17)

_ colordiff.pl

いけてないな…

   @inputstream = <STDIN>;

の時点でアウトだろう

(00:01)

本日のツッコミ(全1件) [ツッコミを入れる]

_ Qxsvoswy [この間も俊太郎の詩をお http://www.stlouisbusinesslist.com/business/5..]


2008-05-29

_ マジスパ

http://d.hatena.ne.jp/ytqwerty/20080525#p1

行くんなら呼んでくだされば飛んでいくのにという。 あと下北は迷うと思う。何年たっても迷う。 あとマジスパは体にいいどころか基本的に毒物だと思うあれは。 虚空100らへんあたり喰うと確実に腹下すし、 アクエリアス喰ってる最中に腹壊してる感じがした。 たぶん体がこれは毒だー出せー出せーと緊急指令を出してるんだと思い込んでいる

(00:54)

_ 体調

ずっと悪いが行けないほどでもないのがにんとも。 出社した方がラクに補食できるというのもにんとも

(08:36)

_ 体調

なんかよく考えると次々症状が変わってる気がする。

最初は熱っぽい、だるい、頭がいたい、って感じで、 まぁ普通に仕事とかいう感じじゃなかった。 その後に熱系はおさまりつつのどが痛くなって、 次にセキとハナが出るようになった。 セキとハナと平行して腹壊して、下痢っぽくなった。 で今はセキハナなくなったけど腹壊し&&胃がむかついたり吐き気とか。

(20:20)

_ STM

は流行らないと勝手に素人考えで考えてるので流行って欲しくない。 面白いかどうかとかよく知らないけど、 単に失敗しなくなるだけの技術ってもえないとかいう個人的なアレと、 スレッドとかどうでもいいよという個人的なアレから 基本的に来てるわけだけど。

一応僕の考えによると、 みんなスレッドプログラミング難しいとか言ってるけど、 あるルールを守れば全然難しくない。 そのルールっていうのは「スレッドを使わない」 っていう簡単なものなんだけど、 なかなかこんな簡単なルールを守れない子もいるらしいので、 例外が2つくらいたぶんある。

outputs = Array.new(N)
threads = []
N.times do |i|
  threads << Thread.start(i) do |t|
    # なんかして output[t] に入れる
  end
end
threads.each{|th|th.join}

みたいに明らかにそれぞれが独立で動くパターンか、 タスクキュー的なのを挟んで生産者消費者の形になるパターン。 http://shinh.skr.jp/m/?date=20080424#p01

前者はまぁロックとかいらんし、 後者もタスクキューだけロックすりゃ基本的に大丈夫なはずなので 全然難しくない。 まぁログ吐くとか、共通部分もちょっとはあるだろうけど、 まぁそこだけ気をつければOKなわけで、 まぁそんなにむずかしくはならんと思う。

その二つのパターンの時も、 パフォーマンス的をすごく考えなきゃいけない事情とかがないなら、 プロセスわけちゃってもいい。 前者のパターンは別のマシンで動かしたりとかしやすいパターンだし、 後者は Unix pipe という強力で簡単な物体が助けてくれるはず。

でまぁ僕のルールを守らずに 並列性がそんなに高くないシーンでスレッドを使うと、 まぁ大変なことになるんだけど、 そういうシーンってのは、 スレッドを無理に使ってるってわけで、 速度が欲しいシーンだと思うんだけど、 そんなシーンだと STM は遅くなるんじゃないのかな。

あと関係そんなないけど、デッドロックが起きるから スレッドむずかしいとか聞くことがあるけど、 あれもおかしいと思う。 デッドロック起きたら gdb でアタッチして バックトレース見たら終わるやろという。 レースコンディションが困るというのはその通りだと思う。 今度これ読もう: http://valgrind.org/docs/manual/hg-manual.html#hg-manual.data-races.summary

でまぁ話戻して結局スレッドプログラムが本当に必要で、 かつスレッドプログラムが難しいプログラムのドメインって あんまり知らないんだよなーということがあって、 たぶん並列 GC だとか、プログラム言語作るとか、 すごい基本的なライブラリ作るとか、 要は言語処理系まわり以外にそういうドメイン思いつかんという。 でもそいうの作るのって一握りの人たちなので、 そんなこんなでスレッドってそんなに難しいのかなーと思っている。

たぶんポインタくらいの難易度なんじゃないかな。 意味不明な比較だが。

あーでも HPC の世界とか全く知らんので知らん。

(22:44)

_ もちろん

単に複雑なプログラムを楽しみたいというなら同意するので 存分にスレッド地獄を味わったらいいと思う。 しかしそんな人は STM とかいらないよね?

(22:46)

_ mprotect

やめたらだいぶ速くなった。

Ruby 1.9

> ruby1.9 bench_loop.rb
      user     system      total        real
for:     3.400000   0.010000   3.410000 (  3.431349)
times:   0.980000   0.000000   0.980000 (  0.976049)
upto:    0.920000   0.000000   0.920000 (  0.913937)
while:   0.480000   0.000000   0.480000 (  0.488412)

yajit

for:   SEGV
times: ./rubyjit.rb hoge.rb  0.52s user 0.01s system 98% cpu 0.532 total
upto:  ./rubyjit.rb hoge.rb  0.52s user 0.00s system 97% cpu 0.531 total
while: ./rubyjit.rb hoge.rb  0.19s user 0.00s system 96% cpu 0.199 total

これが機械語の力だー(SEGV含む)

http://shinh.skr.jp/m/?date=20080525#p07

適当にひっこぬいてきた Euler 55 をいじったコード

> time ruby1.9 euler55.rb
249
ruby1.9 euler55.rb  1.75s user 0.00s system 98% cpu 1.785 total
> time ./rubyjit.rb euler55.rb
249
./rubyjit.rb euler55.rb  1.66s user 0.01s system 99% cpu 1.677 total

こっちも勝ったか。

とりあえず速いとこ benchmark モジュール動くようにしよう。 あとなんか OSX とかでも試そうと思ったら OSX mremap 無いのねー

(23:36)

本日のツッコミ(全1件) [ツッコミを入れる]

_ YT [いやその昼に行こうと決心して晩飯になってしまうような体調だったわけでしてそのゴメンナサイ。]


2008-05-31

_ C=1

1.9.0-0, 1.9.0-1

== disasm: <ISeq:<compiled>@<compiled>>=================================
0000 putobject        1                                               (  16)
0002 dup
0003 putnil
0004 setconstant      :C
0006 leave

== disasm: <ISeq:<compiled>@<compiled>>=================================
0000 putobject        1                                               (  16)
0002 dup
0003 putcbase
0004 setconstant      :C
0006 leave

とりあえず putcbase ってなんなのという問題がですね。 そして vm_get_ev_const もよくわからんのだよ

(03:18)

_ cbase

http://i.loveruby.net/ja/hack/frame.html

とりあえず self.type でそれなりに動きそう。 ていうか問題は self がちゃんと実装されてないことすね。

(04:17)


2008年
5月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
1.Qxsvoswy(2010-03-29 15:54) 2.YT(2008-05-31 11:53) 3.shinh(2008-05-28 11:21)
search / home / index

全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。

shinichiro.hamaji _at_ gmail.com / shinichiro.h