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

はじめてのにき

ここの位置付け

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|

ToDo:


2008-08-01

_ ねむい

http://codezine.jp/a/article/aid/2834.aspx

なんか #sdl-fan-jp にはられてたので見たけど、 不審な翻訳だなぁ…と思った。

(09:06)

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

_ きむら(K) [アヤシイですよねえw。 すっぽすっぽ先生の名前使って自分の意見を言いたいだけなんじゃないのかと。]


2008-08-02

_ jsstr.c

http://d.hatena.ne.jp/Gimite/20080802/1217647596

の予想は正しげ。

JSString *
js_ConcatStrings(JSContext *cx, JSString *left, JSString *right)
{
    if (!JSSTRING_IS_MUTABLE(left)) {
        /* We must copy if left does not own a buffer to realloc. */
        s = (jschar *) JS_malloc(cx, (ln + rn + 1) * sizeof(jschar));
        if (!s)
            return NULL;
        js_strncpy(s, ls, ln);
        ldep = NULL;
    } else {
        /* We can realloc left's space and make it depend on our result. */
        JS_ASSERT(JSSTRING_IS_FLAT(left));
        // これ!
        s = (jschar *) JS_realloc(cx, ls, (ln + rn + 1) * sizeof(jschar));
        if (!s)
            return NULL;

        /* Take care: right could depend on left! */
        lrdist = (size_t)(rs - ls);
        if (lrdist < ln)
            rs = s + lrdist;
        left->u.chars = ls = s;
        ldep = left;
    }

    js_strncpy(s + ln, rs, rn);
    n = ln + rn;
    s[n] = 0;
    str = js_NewString(cx, s, n);
    if (!str) {
        /* Out of memory: clean up any space we (re-)allocated. */
    } else {
        JSFLATSTR_SET_MUTABLE(str);

        /* Morph left into a dependent prefix if we realloc'd its buffer. */
        if (ldep) {
            JSPREFIX_INIT(ldep, str, ln);
        }
    }

    return str;
}

(14:34)

_

Ruby の String ってたしかゼロ終端かつ文字数知ってる みたいな感じだったっけ。 となると + にこの最適化はできないだろう。 C 拡張書かせること考えると正しい判断なんだろう

(14:46)

_ プロゴルファーへの道

  • プログラマの労働量の定量化は大変です
  • 以下の方法を提案します
    • 納品物から、10関数程度をランダムに選択する
    • それらからコメントや空白を除去したバイト数 A を計算する
    • プロゴルファーが圧縮したバイト数 B を計算する
    • 総バイト数 * B / A == 総ゴルフバイト数 が当社の提案する新評価法です
  • ゴルフバイト見積り屋としてプロゴルファーが商売として成立するようになる
  • ゴルフバイト対策コンサルとしてもプロゴルファーが成立
  • ゴルフバイトを大きく見積ってもらうように賄賂が常習化

(14:57)

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

Before...

_ shinh [StringValueCStr 使うのがグッドプラクティスらしいです]

_ 星一 [StringValuePtr ではだめなんでしょうか。 StringValueCStr だと途中に Null 文字が..]

_ 星一 [途中に Null 文字があるような文字列を扱う場合は、何にせよ文字の長さを意識する必要があるので、ゼロ終端である必要..]

_ なかむら(う) [星さんの理解で正しいです。 なおその辺の仕様については1.9のREADME.EXT(.ja)に明記されています。]

_ 星一 [ありがとうございます。]


2008-08-03

_

何事かと思ったら rb_iseq_struct の構造変わってるのかぁ。 どしたもんすかね。

r17781 | mame | 2008-07-02 01:55:30 +0900 (Wed, 02 Jul 2008) | 29 lines

これか。

#if RUBY_REVISION > 17780 || RUBY_REVISION == 0
    VALUE coverage;     /* coverage array */
#endif

まぁ僕は深く考えない

(00:11)

_ ほげ

http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/yukoba/20080729/p1

これは本当にひどいことになってるな…

(00:26)

_ GCC x86_64 i386

/usr/bin/ld: skipping incompatible /usr/lib/../lib/libc.so when searching for -lc
/usr/bin/ld: skipping incompatible /usr/lib/../lib/libc.a when searching for -lc
/usr/bin/ld: skipping incompatible /usr/bin/../lib/libc.so when searching for -lc
/usr/bin/ld: skipping incompatible /usr/bin/../lib/libc.a when searching for -lc
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/lib/../lib/crti.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/lib/../lib/crtn.o' is incompatible with i386 output
collect2: ld returned 1 exit status
make[4]: *** [32/libgcc_s.so] Error 1
make[4]: Leaving directory `/home/i/src/gem-1.7/gcc-4.1.0/host-x86_64-unknown-linux-gnu/gcc'
make[3]: *** [stmp-multilib] Error 2
make[3]: Leaving directory `/home/i/src/gem-1.7/gcc-4.1.0/host-x86_64-unknown-linux-gnu/gcc'
make[2]: *** [all-gcc] Error 2
make[2]: Leaving directory `/home/i/src/gem-1.7/gcc-4.1.0'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/i/src/gem-1.7/gcc-4.1.0'

このエラーを見たら --disable-multilib を。

あと tree の dump は dump_node(tree, 0, stdout); とかです

(02:14)

_ うーむり

初結婚式いってきた。 がんばったという感じだったと思う。 直前とはいえ事前に色々調べたし

  • 祝儀袋と筆っぽいのをコンビニで
  • 新しいお金を手に入れる
  • なんか袋をさらに包みっぽいのに入れるのが良いらしい(が見つからなかったので諦めた)
  • ネクタイはぐぐればしめかたわかる
  • 不吉なことは言わない(まぁでもそんなに問題ないみたいだった)
  • 実は2-3時間しかない
  • 徹夜でびびって待ってるほどこわいものではない

新郎新婦を祝う気持ちはあるつもりなんだけど (中二病なので微妙な表現) 中二病なのでかしこまった場にいると 体力がもりもりへっていく感じだった。 マント無しで砂漠に入ったワルキューレみたいな感じ。

(17:47)

_ 中二病

そういえば会社で中二病の症状として 「shinh ブログを読んでる」とかいうのが 挙げられていて、まぁ

  • 僕自身中二病なので指摘自体は完全に正しいと思う
  • 僕はこっちもあっちもブログとは決して呼びたがらないのでその指摘をした人はそこまでヘビーに見てないと予想されて安心
  • 中二病の定義とかよくわかってないけど(たぶんこいうこと書くのが既に)

そういう

(17:52)

_ いやー

まだ増えるだろー

http://twitter.com/alohakun/statuses/876232435

と思うのでした。 つか 4G も乗ってるマシン家に無い。

MemTotal:      4056664 kB

と思ったらこのマシン 4G 乗ってた。

あと LL Golf #2 はさっさと Perl 出動しろ。

(18:42)

_ と思ってたら出動してた

http://ja.doukaku.org/196/lang/perl/

てか uc とかそういえばあったね!それはざんねん!!! _& が見たかった!

あと sed を応援したい

(18:50)


2008-08-04

_ 交換日記

http://www.liarsoft.org/diary/20080803.html#20080803p1

なんか僕の方はかなり良くなってる感じで、 良くなってるのが申し訳なく感じるのです。 つくづくヤな病気だと思う。

  • 金曜にまた医者に行った
  • 前回ついでだしやってちょとアレルギー検査やってもらった結果が出てた
    • 全くアレルギー無い的な
    • 部屋掃除しなくて良い
    • 猫も問題なさげ
    • ピーナッツだけなんか疑陽性とかそんな
    • 言われてみると前発症した時はピーナッツを100円ショップで大量に買って喰ってたりしたかも
    • まぁあんま関係はなさそうだけど
  • だいたいひいてるから非ステロイドのプロトピックとかいうので行くと良いということでそれをもらった
    • 炎症がある時にプロトピックを塗ると熱かったりして大変らしい。実際塗るとちょっと熱を感じる。寒さへの耐性がついただけかもしれないけど。
    • 飲み薬は悪くなんなきゃあんま飲まんでええよとのこと
    • 半錠ずつ飲むと眠けはだいぶマシ
    • プロトピックの前はプロパデルムとかいうステロイドのやつだった
    • 医者行く前はだいぶ前に買ったキンダロンとかいうのを使ってて、これも強さは同じレベルぽいんだけど、あんまり症状がきかなかったのは、古くなってるとダメって感じなのか、医者の判断なしでステロイドってどうなんかねとかなり控えめに塗ってたからなのか。
    • あるいは飲み薬によってかゆみをおさえたことか、あやしげな水が効いた説

(01:46)

_ 信念

RMS や Theo は YouTube とか見ないのかなぁ…

てか OpenBSD はフラッシュ見れるのかな。

(02:10)

_ duck typing

http://shinh.skr.jp/h/?DuckTyping

うめるといいのです

(11:30)

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

_ ksw [や、ぼくも大体治りましたです。貰ったステが強かったのと、ダニアースが効いた感じです。あと壷も。壷マジ最強だと思った。..]


2008-08-05

_ 大変面白いことになった

http://shinh.skr.jp/h/?DuckTyping

うれしいなぁ。 しかし俺はなぜ structural subtyping を static 分類にしてたのかみたいな。 まぁ他にも色々おかしかった気がするけど。

Haskell の template? て TemplateHaskell のことかな。 もしそうなら template? よりは TemplateHaskell? の方が嬉しいので 書いた人だれかたのむ的な。

あと Ada のあのめんどくさいやつはどこなんだろう。 nonintrusive-explicit-static?

型クラスやら implicit conversion と Obj.magic とか C のポインタを ごっちゃに置くのは超違和感だな。 だから推定 kinaba さんが最後のテーブルを 足してくださったんだろうけど。

nonintrusive-implicit のとこに 「普通 duck typing と言うとこれ」 とか足しといた。

(02:54)

_ あと

だめなわけないのでした

http://twitter.com/kmizu/statuses/876864306

まぁ明らかに書いて下さってますが!

(03:08)

_ leonid たん降臨

http://d.hatena.ne.jp/Ozy/20080801#c1217829284

が面白かった。

(03:12)

_ Symbol

http://twitter.com/hajimehoshi/statuses/877740043

だと思う。 ID でひいた先の文字列がずっとあるって話かな

http://i.loveruby.net/ja/rhg/book/object.html

http://i.loveruby.net/ja/rhg/book/name.html

(11:28)

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

_ k.inaba [たぶん最後のテーブルは推定soutaroさん]

_ YT [おお素晴らしいまとめです。 Adaはnonintrusive-explicit-staticでいいと思いますです。 ..]

_ soutaro [私です。 だから、もう書いてある表を写したやつと、これはさすがに間違えないと思うtyped/untypedしかないと..]

_ shinh [なんと soutaro さんでしたか。編集ありがとうございます。 YTさんもぜひ Ada を表に]

_ みずしま [> まぁ明らかに書いて下さってますが! ご察しの通り、書いてました。Scalaの辺りとか、OCamlの項目 を微妙に..]


2008-08-06

_ いいよいいよー

Lightning division 途中結果 via http://d.hatena.ne.jp/KeisukeNakano/20080806/1217981842

http://www.icfpcontest.org/results/lightning/results-by-score-Lightning-7.html

まだ死んでない。 Trial 7 やばすぎだけど!

http://www.icfpcontest.org/results/lightning/results-by-score-Lightning-3.html

この trial はなぜか3位とかにいていわゆる黄金時代。

(12:19)


2008-08-07

_ quine

http://pc11.2ch.net/test/read.cgi/tech/1187527909/32

なるほど

#!/bin/cat

って quine なのか

(03:26)


2008-08-10

_ D 2.018

http://d.digitalmars.com/2.0/changelog.html#new2_018

無事入ったか。 これで pbgd のスレッド実装動くと思うけど だからどうしたってレベルではあるな…

(18:48)


2008-08-12

_ めもりかくほ

http://d.hatena.ne.jp/isshiki/20080808/p1

http://risky-safety.org/~zinnia/d/2008/08/#20080809

一般的に標準ライブラリのようなものだと、 間違いなく呼び出し側が正しいんだけど、 一貫しては支持できないあたりいい加減なんだと思う。

理想を言えば C++ 文字列みたいに、 実体はヒープにあるんだけど スタックにあるみたいな扱いができる物体があれば 一番いいんだけど。

C でもやっぱめんどくさくて、 特に小さな物体とかだと平然と malloc した領域を返す 便利関数作っちゃうなぁ。 確かにそういう関数はメモリリークを 起こしやすいんだけど、 一方サイズ指定系の API はバッファ破壊系の バグを起こしやすくて、 昔は逆だったと思うんだけど、 現在の PC 環境では、 前者のバグの方がはるかに発見しやすいように感じる。

リークなんて多少気をつけてても、する時はするわけで、 とりあえずヒープチェッカはかけるからなぁ。

PC 的な環境だと malloc/free が十分速くて、 速度的な問題にはあんまりならない的な話も。

ただ free 以外の解放関数が必要な可能性があると確かにうっとうしいなぁ。 あとデバッグビルドリリースビルド的な問題があるので、 まぁやはりライブラリでは最低限 malloc した領域返す API があるなら その領域を解放する API を用意しにゃならんとかいう話はあると思う。

まとめてないけどざっと

  • ライブラリでない
  • ヒープチェッカがある
  • 最高速はいらない

あたりの条件がそろえば内部確保でもいいんじゃないかなぁ。

(11:24)


2008-08-13

_ 棒けしゲーム

http://www.nicovideo.jp/watch/sm2842969

これを見てマジメに人力でプレイすることもなく Rubyスクリプトちょっと書いて勝ってみた。

コードはかなり読みにくい感じ。 こいうの Prolog とか得意だと思うんだけど、 ET とかで書くとなんかメリットあるのかなぁとか、 こいう例のサンプルが見られるといいなぁとか思いましたまる

露骨な要求に見えますがその通りなのですが、 お忙しければ全然無くて良いですはいとかそういう

(01:32)

_ いいよいいよー

http://www.icfpcontest.org/results/final/results-by-score-Final-7.html

生きてるってすばらしす。

知ってそうな名前は PFI と kstm.org って感じかな

(12:23)

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

_ シンX [棒けしゲーム懐かしいなあ。高校の頃突然流行って、受験勉強そっちのけで戦略を考えてましたよ(←) ある日、「同じ棒数..]

_ shinh [将棋や囲碁と等価どころか、なんで棒けしと等価なのかすらよくわからん程度に単順なゲームですね…]


2008-08-14

_ GBU

lamさんが人狼作ったとかいう

http://gbu.sakura.ne.jp/

前見た時は過去ログなかったんだけど、 今はあったから見てたら、 過去ログがにょきにょき伸びてて、どうなってるのかなと見てみると、 カスみたいなHTML + データ + JS を送って JS でデータを整形してるみたいだった。

たぶん進行中も同じシステムで 静的 HTML じゃなくて、 動的にデータ作る感じかなぁ。

(22:13)


2008-08-16

_ 明日

1時から SRM かー。 久々に参加したいな。

(01:51)

_ valgrind

むずかしいなぁ。 マクロが冗談みたいに多い。 まぁでもマジメに斜め読みすると それなりにわかったり 全然わからんかったりするな。 いや何もわかってないな。

たぶんなんか

  • 起動して tool 起動。こっちの世界が client 。
  • シンボル読みにかかる。バイナリ→共有オブジェクト→tool→vgpreload_core.so→vgpreload_tool.so
  • でヘンなシンボルは redir がなんかいじる。
  • んで guest が simulated CPU 上で動く
  • フックされた malloc に来て、 VALGRIND_DO_CLIENT_REQUEST でたぶん client と通信する
  • したらなんか VG_(needs_client_requests) に刺した hook が client サイドで呼ばれる。

ここで

#define __SPECIAL_INSTRUCTION_PREAMBLE                            \
                     "roll $3,  %%edi ; roll $13, %%edi\n\t"      \
                     "roll $29, %%edi ; roll $19, %%edi\n\t"

これはなんだ!

さすがに 64bit の bit rotate は NOP に過ぎないことはわかるので、 まぁたぶんこの instruction 列を見たら client にビビビっ っていうか simulated CPU における割込みみたいな感じかな。

でめでたく client の世界に戻ってきたとして、 こっちから guest の世界の関数を呼ぶとすぐ死ぬ。 何もせず帰るくらいなら大丈夫なんだけど。 まぁたぶんアドレスがズレてる…とかだと思う。 これがわかれば

Note that you can't use anything from the C library (there are deep reasons for this, trust us).

とかいうナメたアドバイスの意味がわかるのだが。 http://valgrind.org/docs/manual/writing-tools.html#writing-tools.otherinfo

で client の世界から guest の世界のメモリとかは見えてるわけだけど、 データ通信とかはどうやってるねん。 単に client request だけで十分なのか。

意味不明なメモ書いてたら まぁなんとなく整理できてきた…

本当だろうか

(05:00)

_ あと

valgrind を gdb で走らすと tool の開幕でいきなり sigtrap くらうわけだけど、 これはなんだろうなぁ。

launch するまでには ptrace とかやってるんかなぁ。 コードはあるけど strace では出てこない。

つか gcc に渡してるオプションが既におかしいな…

gcc  -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector   -o rmemcheck-amd64-linux -static -Wl,-defsym,valt_load_address=0x38000000 -nodefaultlibs -nostartfiles -u _start -m64 -Wl,-T,../valt_load_address_amd64_linux.lds rmemcheck_amd64_linux-mc_leakcheck.o rmemcheck_amd64_linux-mc_malloc_wrappers.o rmemcheck_amd64_linux-mc_main.o rmemcheck_amd64_linux-mc_translate.o ../coregrind/libcoregrind_amd64_linux.a ../VEX/libvex_amd64_linux.a -lgcc

tool の直接実行は怒られる、と。

> ./memcheck/memcheck-amd64-linux ls
valgrind: You cannot run './memcheck/memcheck-amd64-linux' directly.
valgrind: You should use $prefix/bin/valgrind.

もちょいちゃんと追わんとわからんね。

(05:22)

_

mayah さんとこふっかつしてる。

おめでとうございます。

(16:50)


2008-08-17

_ SRM

問題読み間違いに1分前に気付いた…

ぎぎぎ

(02:15)

_ ぎぎぎ

始めて500通った、んだけど250とチャレンジでミスったので嬉しくねええ…

250 はコレ、 form は任意の順番で来るもんだとばかり思って、 なんだこれー難しすぎだろーとかちょっとコード書いてみたあと 捨てた。

500はすんなり解けすぎて本当かよと思って びくつきながらサブミットしたら通った。 これは普通に簡単すぎなんじゃ。

そこで1000を見たのが間違いで、 点数少なくてももう一度250考えれば良かったなぁ… 1000は例のごとく問題きっちり読まずに適当に書いたら 全然問題違ってて、あーもう mod とかわかんねーていうか 部屋で誰も解いてねーしこれ難しいんじゃねとか あたりまえのことに気付いて、 もう数分しか無いし challenge 考えるかーと 問題見てたら250の問題勘違いに気付いた。

あとはチャレンジで 500 これ example 通らんだろ ってコード見つけたのでチャレンジしたら失敗した。 全文字列の末尾に 'a' を足してた。賢いなぁ。

てかまぁ常識で考えて Div1 の子は example は通してあるよな…

(02:53)


2008-08-20

_ informative null po

http://www.kmonos.net/wlog/88.html#_2233080818

全体的にすんごい同意するんだけど、 まぁ同意しすぎてこう何もないなぁ。 なんか言うとしたら、 僕の場合は一人で書くなら、って留保がつくかなぁと。

一人で書き散らかすなら

  • エラーは本当にやばくなるまで起きない (IndexBoundError なんてクソくらえだし nil.dup は当然 nil かえす)
  • できれば Informative null po あるといいね☆

複数人(長期的に一人で書く場合含む)でなら

  • とにかく予想外の場所で落ちて欲しくない
  • やばそうな時はすぐに例外なり abort なりして欲しい
  • 引数も返り値もそれなりにきちんとチェックするのはコーディング規約とか
  • むしろ non_negligible_bool とかそいう型作って、その返り値無視してたらコンパイル通らんくらいの勢いで

(23:22)

_ w3m gmail

http://assam-at-night.blogspot.com/2007/07/w3mgmail.html

めも。 なんかたしかに苦労した記憶はびみょうにある

(23:27)


2008-08-21

_ LLVM

さっくりなんか書いてみるも 出てくるコードはこんなもんなのかなぁ的なかんじ。

うーむ萌えない

(23:53)


2008-08-23

_ 任意の

RubyコードをRubyで等価に実行可能な記号だけに変換する プログラムは書けるだろうか。 特にできない理由もないとおもうけど、 できないんじゃないかなぁといまのところおもう。 深く考えてないからわからないけど。 で、できないとすると、それを証明するのは難しいのかなぁとか。

BF 実装してはいおわりとかとはなかなか違うよな…

(02:14)


2008-08-24

_ 死蔵しているコマンド

面白いテーマだと思う。スラド見直した!

http://slashdot.jp/askslashdot/article.pl?sid=08/08/24/0255253

> ls `echo $PATH | sed 's/:/ /g'` | wc
   3926    3918   41560
> ls `echo $PATH | sed 's/:/ /g'` | sort | uniq | wc
   3834    3833   40819
> alias | wc
     99     305    3329
> (ls `echo $PATH | sed 's/:/ /g'`; alias) | sort | uniq | wc
   3933    4138   44148

4000程度か。本当は zsh function もあるわけだけど。

さて俺には CIA がある。

i@u4 ~/wrk/cia/db/cmd/2008
> awk '!/[>~\/\\(=;.]/ {print $3}' * | sort | uniq | wc
    530     517    3457

ざっと見た感じ 20-30 くらいはコマンドじゃないけど

> ruby -e 'p (`(ls \`echo $PATH | sed "s/:/ /g"\`; alias) | sort | uniq `.split - `awk "{print $3}" * | sort | uniq`.split).size'
3233

死蔵は 3200 程度かなぁ。

(12:42)

_ todo reordering

  • ll golf
  • valgrind あそび
  • tamarin あそび?
  • ET べんきょう
  • 追悼考える→ LL で考えればいいか

(13:25)

_

今日 RHGSB か…

まぁいいか。

(13:43)

_ u

i@u ~> ls `echo $PATH | sed 's/:/ /g'` | wc
   6348    6339   65518

やっぱ使ってる時間長いマシンの方が 多いな

(14:48)

_ test_status_and_stop_p

 def test_status_and_stop_p
   a = ::Thread.new { raise("die now") }
   b = Thread.new { Thread.stop }
   c = Thread.new { Thread.exit }
   d = Thread.new { sleep }
   e = Thread.current
   sleep 0.5
   d.kill
   assert_equal(nil, a.status)
   assert_equal("sleep", b.status)
   assert_equal(false, c.status)
   assert_match(/^#<TestThread::Thread:.* dead>$/, c.inspect)
   assert_equal("aborting", d.status)
   assert_equal("run", e.status)

このテストたまに通らなくなるのね。 d.status が false になっちゃう。 せめて d.kill を直前にするとかかなぁ。

   Thread.pass
   d.kill
   assert_equal("aborting", d.status)

とかすれば失敗率は減りそうだけど。

そいや GC とか見ててもそうだけど、 他のスレッドラクに止める手段って無いのかな。

(15:27)

_ 紙こうりん

http://d.hatena.ne.jp/kurimura/20080824

そうかそれでいいのか…

(22:50)


2008-08-25

_ 適当に

opt_aref とか opt_aset 実装してみたが あんま速くならんな。 send のオーバヘッドが悪いとばかり思ってたんだけど…

(00:03)


2008-08-26

_ LL Golf #3

書いてみた。 cal + awk がいいんじゃないかなぁ。

http://ja.doukaku.org/comment/7367/

eval `date '+y=%Y;m=$((%-m+(%e>13)))'`

とかトリッキーな感じでいいなぁとか思いました。

(23:13)

_ LL Golf #4

Perl の得意分野だよなぁ。

http://ja.doukaku.org/comment/7370/

(23:35)

_ LL Golf #5

Perl でさっくりと。

http://ja.doukaku.org/comment/7372/

(23:56)


2008-08-27

_ LL Golf Hole #5

sed だと普通のカウントの方が大変というのが面白かった。

http://ja.doukaku.org/comment/7374/

(01:10)

_ continuous build

http://ruby.shinh.org/

なんとなくこんなの作った。

(23:08)


2008-08-30

_

基調講演 Larry Wall か!

それはいかんといかん

(02:54)


2008-08-31

_ えるえる

あつかましく Larry のサインもらた! もう俺はそれで全て良い。

何度か語ってると思うけど実はそんなに語ってないかもしれないけど、 僕はそんなに好きなプログラム書籍とかそんなに語れないんだけど、 いわゆるラクダ本は大好きな本で、 すっぽすっぽのプログラミング言語 C++ とかと 同じ程度には影響とかはある気がするんだ。 まぁ僕は本に影響されるとか今一つピンときてないのであやしいけど。

サインもらった記念に Perl をベタボメする。

Perl っていうのはこう、変態言語愛好会にとっての LISP と 考えても全く問題ないと思う。 ヤツらはこう10年先を行ってると考えてよく、 LL とか好きな子がこんなハッキーなことやったぜ!! っていうのは、 「あーそれ Perl が 3000年前に通った道」 みたいなこと言われてもおかしくない程度には すごいというのを認識してからの方が安心かもしれないのです。

例えば今日とか Perl Golf というのを Web ベースで… とかほげほげ司会のかたがおっしゃってたけど、 あれはたぶんウソで、当初は newsgroup で行なわれてたんだと思う。 newsgroup とかいう時代からゴルフやってた連中なわけですよ。 知らんけど。

まぁゴルフのこととか書くとまたそんな話か的な感があるけど、 Perl で実行できる詩を書く perl poem とか、 Acme::* とか、 JAPH とか、 ほげほげとか、ふがふがとか、

…と書きたかったんだけど、ぶっちゃけあんま Perl とか知らんな。 まぁそいう子はとにかく Perl を学ぶべきなんです。たぶん。

でまぁラクダ本も Larry がそいうの好きなんだなぁ という感じがすごくするのでこう良いのですよ。

用心しろよ、 emacs さん。言語を内蔵するのは、君だけの専売特許じゃないよ :-)

とか、まぁこうなんというかこいうのいいね。

だいぶ前に書いたこのへんの頭おかしい話とかも 別に秘奥義とかじゃなくて単にラクダ本に書いてあったわけだし

http://d.hatena.ne.jp/shinichiro_h/20071107#1194442793

(00:49)

_ title

http://d.hatena.ne.jp/takkaw/20080830/p2

ちなみに Python にも capitalize もあります。 (is)?(upper|lower|title) とさらに capitalize がある、というのが現状らしく、 Python は大文字小文字変換界の雄と言っても良いのではないかと思います。 iscapitalize が何故ないのか、それを考えて余生を過ごそうかと思います。

(00:55)

_ isakr

で、今日の呑み会で、 isakr みたいなのがあるといいんじゃないかということなので さっそく作ってみました!

class String
  def akr?
    # must not be capitalized
    return false unless self[/^[a-z]/]
    # there should be continuous upcases
    return false unless self[/[A-Z][A-Z]/]
    return true
  end
end

puts "defLATE: #{'defLATE'.akr?}"
puts "deflate: #{'deflate'.akr?}"
puts "Deflate: #{'Deflate'.akr?}"
puts "dEflate: #{'dEflate'.akr?}"
puts "DEFLATE: #{'DEFLATE'.akr?}"
puts "deFLate: #{'deFLate'.akr?}"

実行結果:

defLATE: true
deflate: false
Deflate: false
dEflate: false
DEFLATE: false
deFLate: true

とりあえず現実の例が一つしか無いので、 仕様策定が難しそうですね…!

(01:04)

_ String#akr

akr? があるなら実装はかんたん

class String
  def akr
    akrize = proc{|s|s.split('').map{|_|rand<0.5 ? _.upcase : _.downcase} * ''}
    until (s = akrize[self]).akr?
    end
    s
  end
end

10.times{puts 'deflate'.akr}

実行例

dEFlate
deFLaTe
dEFlaTE
dEFlAte
dEFLATE
dEFLatE
deflATE
dEFLATe
dEFlAtE
dEflATe

いかにもいやなかんじのものが

(01:09)

_

昔見た時は deflate 違ったような気がするなぁ… とか思ってぐぐったらやはり別の事例を発見した。 うん僕が見た時は DeFLaTe だったような気がする。

というわけで先程のコードには重大なバグがあるので プロダクションでは使わないようにおねがいします

(02:01)

_ そういえば

ほげほげより C++ の方が中二病としてはほげほげな気が するというような気がする的指摘。

たしかにほげほげは中二病そのものだと思うけど、 C++ はこうやりたくなることはわかるなぁ うん実際にはそんなに書かないんだけどね、

というあなた

は中二病なので問題ないというような。 いやそういう話だったか

(23:44)


2008年
8月
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.星一(2014-05-24 01:41) 2.なかむら(う)(2014-05-24 01:41) 3.星一(2014-05-24 01:41)
search / home / index

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

shinichiro.hamaji _at_ gmail.com / shinichiro.h