トップ 最新 追記

Route 477



2008-09-04

[games] ゲームセンター 終 了 の お 知 ら せ

銀閣寺GOLD、下鴨ヒーロータウン、プレイシティ車庫前が閉店していた。

[ohai日誌(2008-09-04)より引用]

    /\___/ヽ   ヽ
   /    ::::::::::::::::\ つ
  . |  ,,-‐‐   ‐‐-、 .:::| わ
  |  、_(o)_,:  _(o)_, :::|ぁぁ
.   |    ::<      .::|あぁ
   \  /( [三] )ヽ ::/ああ
   /`ー‐--‐‐—´\ぁあ

夢だと言ってくれ…。

[softs] Google Chromeのチートっぷりをベンチマークで体感してみた

僕はBiwaSchemeっていうJavaScriptで書いたScheme処理系を開発してるんですけど、 そのユニットテストがSchemeの関数をいっこいっこテストするんで だいたい15〜20秒くらいかかるんですよ。

んでChromeでどうなるか試してみたら:

Firefox 3.0.115.921秒15.863秒15.785秒
Safari 3.1.116.391秒16.360秒17.079秒
Opera 9.5215.359秒20.141秒20.156秒
IE 6.023.344秒23.875秒28.843秒
IE 7.5 27.328秒28.375秒33.734秒
Chrome5.733秒5.427秒5.276秒

Google Chromeはえええええええwwwwwww

なんでこんなに速いの?死ぬの?

あとIE7が6より遅くなっててしょんぼりした。

ベンチマーク環境はこんな感じです。

  • WinXP
  • CPU Celeron D 2.80GHz
  • メモリ 1024MB

[linux][lisp] StumpWMをUbuntuで使ってみた

StumpWMはCommon Lispで書かれたタイルベースのウィンドウマネージャだ。操作系統はratpoisonに(つまり、GNU Screenに)似ている。 全てがCLで制御されているため、WMを再起動せずに挙動をハックすることができるのがウリらしい。

とりあえずインストールは

sudo aptitude install stumpwm

でいけた。

んで、起動する前に

sudo vi /usr/share/xsessions/stumpwm.desktop

として、以下の内容を書き込んでおくと、ログイン時に「セッションの選択」でStumpWMを選べるようになる。

[Desktop Entry]

Encoding=UTF-8

Type=XSession

Exec=stumpwm

TryExec=stumpwm

Name=StumpWM

Comment=Stump window manager

[Gutsy + Stumpwm - Ubuntu Forumsより引用]

初回起動時はコンパイルするので結構時間がかかるようだ。

キーバインドはとりあえず C-t ? だけ覚えておけば大丈夫(ヘルプが出る)。C-t cでターミナルが開く。

日本語入力する方法が分からなかったんだが、設定ファイルに書けばいいのか。

(run-shell-command “scim &”)

(setf (stumpwm::getenv “XMODIFIERS”) “@im=SCIM”)

(setf (stumpwm::getenv “GTK_IM_MODULE”) “scim-bridge”)

[stumpwm « Kazusan’s Weblogより引用]

リンク先でも書かれてるけど、setf + setenvなのがCLらしくていいね。

  •  

awesome wm も触ってみたけど、機能はこっちの方が豊富そうかなぁ。キーバインドはScreen系ではない(Windowsキー+hjklとか)。


2008-09-05 最近書き溜めてたエントリまとめうp

[ruby] _why先生のShoes本が通販できるらしい

NOBODY KNOWS SHOES (nks) といえば_why先生のRuby Shoes本なわけですが、

こいつがlulu.comで通販されているらしい。

これは買うしかないだろ!と思って注文しかけたんだが、送料含めたら3000円とかになって 我に返った。普通にPDFから印刷するか…。

廉価版もあるんだけど見開き綴じになってないっぽい。

[ruby] Proc#===を定義してFizzBuzzを綺麗に書く

class Proc
  def ===(*args)
    self.call(*args)
  end
end

def divide0?(n)
  proc{|x|
    x % n == 0
  }
end

のように定義しておくと、FizzBuzzが

1.upto(15) do |i|
  case i
  when divide0?(15)
    puts "FizzBuzz"
  when divide0?(3)
    puts "Fizz"
  when divide0?(5)
    puts "Buzz"
  else
    puts i
  end
end

みたいに書ける。divide0?がProcオブジェクトを返して、case〜whenなのでProc#===が呼ばれて 、その返り値が真か偽かでマッチしたかが判定されると。なるほどなぁ。

一応、実行結果。

/Users/yhara/ % ruby ~/tmp/fb.rb
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz

[misc] ruby-talkの流量がruby-listより多いのは

そもそもMLに書くメールの概念が違うよなぁ。1行付け足しただけのメールとか普通にあるし。

ruby-talkの方がチャットに近い雰囲気であるといえる。

[haskell] AppleCatcherがHaskellに移植されそうです

AppleCatcherというのは僕が作ったこういう感じのゲームなのですが、

?c=plugin;plugin=attach_download;p=RubySDLStarterKit;file_name=apple2s.png

それがHaskellのYampaに移植されそうです。wktk。

YampaというのはHaskellでFunctional Reactive Programmingするためのライブラリで、 内部実装にArrowが使われてるとかなんとか。

Yampa自体はデータの流れを制御するだけなので特定のViewには結びついてないようで、 ViewとしてはSDLが使われてます。

[rails][rspec] it_renders, it_assignes, it_flashes

RSpec+Railsで、こういうありがちなのは↓

 flash[:error].should_not be_nil
 response.should render_template("new")

こういう風に書けた方が嬉しくね?という話。

 it_flashes :error
 it_renders :new

実装はリンク先をどうぞ。spec/spec_helper.rbに追記するだけらしい。簡単ですね。

関係ないけど、

 def it_renders(what)
   response.should render_template(what.to_s)
 end

の仮引数に「what」を使うという発想はなかったなぁ。

[rspec][prog] RSpecみたいな英語DSL的なものが

日本語に存在しないのが遺憾である。

誰か、日本語をそのまま書いたら仕様になるようなシステムも作るべき。なでしこに期待。

…っていうかなでしこそのまんまか?

[haskell][prog] Re: 超似非G-Machineを実装してみた - Yet Another Ranha

これは遅延評価言語を作るのに役立ちそう。日本語で読めるのがありがたいですね。

Haskellとか実装したい人は読むといいのかな。

[idea] 壁紙とかもう古い!

これからは壁動画だと思うんです。

山奥の渓流を、風に揺れる稲穂を、太平洋のさざ波を見ながらコーディングとかしたくはないかね?

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

Yuya [Windows DreamScene? 僕的には気が散ってダメでした・・・]

yhara [おお、既に実現されてるのですね。 あまり動きのないほうが作業には向いてるかもなぁ。]


2008-09-09

[web] Google先生が気を利かせすぎてバグってる件

Mercurialに「glog」というとてもグラフィカルで分かりやすいコマンドが実装されてるらしいんですが、 なぜか手元のhgでは「そんなコマンドないよ」と言われてしまう。

そこでGoogleで「mercurial glog」で検索してみたんです。

c311d0f47f65ab2cb9bb33828284d3cc.png

違うよ!それは「mercurial blog」の検索結果だよ!(「ブログ」が太字になってるし)

(9/11追記: 「mercurial "glog"」でいけるらしい。ありがとうございます>znzさん)

(10/15追記: 「mercurial +glog」でもいいらしい!)

[hg] Mercurialでブランチをグラフ状に表示してくれるhg glogコマンドを使う方法

~/.hgrcに

[extensions]
hgext.graphlog = 

と書いておくと、hg glogでこんなんが出るらしいですよ。

/Users/yhara/proj/bookmak % hg glog |head -n 20
@  changeset:   37:d60c1340fa62
|  tag:         tip
|  parent:      35:0af16b7aeccd
|  user:        Yutaka HARA <yhara.kmc.gr.jp>
|  date:        Sat Jul 26 00:29:09 2008 +0900
|  summary:     add: ignore tmp/*
|
| o  changeset:   36:118025881181
|/   branch:      instant_login
|    user:        Yutaka HARA <yhara.kmc.gr.jp>
|    date:        Sat Jul 26 00:26:24 2008 +0900
|    summary:     branch: try to impl. instant login
|
o  changeset:   35:0af16b7aeccd
|  user:        Yutaka HARA <yhara.kmc.gr.jp>
|  date:        Sun Jul 20 21:24:06 2008 +0900
|  summary:     add: ideas by Kanasan.JS attendee
|
o  changeset:   34:cba942c72f32
|  user:        Yutaka HARA <yhara.kmc.gr.jp>

いいね!

[rails] Rails Cells

よくblogのサイドバーに置かれてたりする「簡易投票ボタン」とか「ML参加ボタン」みたいなコンポーネントを Railsで扱うためのライブラリ。

View内で

render_cell :mailing_list, :join_form

みたいにするとHTMLができるらしい。

Cellを作るのもなかなか簡単そうでよさげ。

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

naoya_t [Googleさん最近気を利かせすぎですね。 http://www.google.co.jp/search?num=5..]

yhara [KY(空気読みすぎ)も困ったものですね。]

znz [そういうときは「mercurial "glog"」でぐぐり直しで。]



2008-09-11

[idea][softs] ウィンドウ全体を半透明にできるペイントツール

があれば、写真をトレースしたりするのにとても便利なのではないだろうか。

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

okkez [compiz (fusion) とかの 3D デスクトップ環境なら任意のウィンドウを半透明にできますよ!]

yhara [compizかっこいい!!]


2008-09-14

[softs][mac] MacでDropbox使い始めたけど

同期するときにCPUのコアを一つ使い切るのでうざい。熱いよ。

/Users/yhara/proj/ 以下 (ソースコードがいろいろ置いてある) を同期させてるんだが、再起動するたびに全ファイルをスキャンし直してる疑惑。

それさえ目を瞑れば、バックアップソフトとしては非常にお手軽ではある。勝手に同期するんでいちいちソフト起動する手間がないし、ディスク用意する必要すらないし。

[ruby][scheme] RubyistがSchemeに惹かれたわけ

まつもとさんの指摘によれば「LISP-2という点で、RubyはSchemeよりCommon Lispに似ている」。

じゃあなんで僕はSchemeを気に入ったんだろう?と考えてみたところ、「統一感」や「一貫性」を重視するところじゃないかという案を思いついた。

Rubyの統一感
全てがオブジェクトであること。どこでもselfが定義されていること。
Schemeの統一感
述語は「?」で終わるとか、「foo->bar」みたいな命名規則。

…いまいち説得力に欠けるかな。どうだろう。

[prog][stack] Factorやるじゃん

: qsort ( array -- new )

  dup length 1 > [ [ rest ] [ first ] bi [ [ > ] curry filter qsort ]

  [ nip suffix ] [ [ <= ] curry filter qsort append ] 2tri ] when ;

[Factorでクイックソート - anatoo記 - ハチロク世代より引用]

みじかくね?

一般に普及するには独特すぎる(少なくとも時間はかかるだろう)と思うのだけど、スタック言語気になるわー。


追記

なんでスタック言語がここに来て一部で流行ってるのかというと、「関数を組み合わせて」プログラムを作るという 関数型言語のパラダイムとスタックが意外にも相性が良いことが分かったからだと理解している。

てかPEGライブラリとかあるのかー


2008-09-16

[junk] 爪っていう字はギリシャ文字っぽい

巻き爪について調べてたらゲシュタルト崩壊した。

[gadget] テクノ民族楽器入門 を見て物欲が爆発した

DS-10とか、大人の科学シンセとかの「テクノっぽい音が出るおもちゃ」のまとめ記事です。

というわけで以下は自分用メモ。

YouTube - Stylophone+DS-10 - The Girl From Ipanema

DS-10の有効利用。

YouTube - DS-10 / Stylophone / SX-150

同作者。プロの犯行か!?

B0012HT9TI B0012I9DQQ B0012IPLNA

USB接続のスピーカー。色は赤、黒、白。

TR433LLA_a.jpg Belkin RockStar Splitter

簡易ミキサーとして使えるらしい。欲しい。


2008-09-19

[web] はてなアンケートの回答者は適当な奴ばっかりか

このアンケートから分かることは、「回答者は質問文を真面目に読まない」ということだな。 まぁ、締め切られるまでの時間の短さを考えると、アンケート回答者は定期的に新着アンケートを監視している「プロ回答者」が多そうだし、 アンケートに答える作業がルーチンワークになっていて質問文を流し読みしてしまうことは想像に難くない。

西尾さんの設問にも実は穴があって、一問目のタイトルは

Q01 〜を選んでください。これに答えられない方は解答をご遠慮ください。

だけど、「答える」という日本語は別に「正解する」という意味ではなく「回答する」という意味にすぎない。だから取りようによっては、 Q01でいずれかの選択肢を選んだ人は全員Q02に答える権利がある(笑)。 しかも警告がQ02の頭ではなくQ01の終わりに入っているので、悪意を持って無視したというよりは単に警告を見落とした人が多いんじゃないか。

ここはいっそ、回答者が質問文を流し読みすることを前提にして

Q02 【☆★☆警告☆ Q01に自信のない方はご遠慮ください!!☆★☆】 どの言語がよいでしょう(複数選択)

くらいスイーツ(笑)な感じで装飾し、質問文も

☆★☆                          ☆★☆                                                   
☆★☆ プログラミングに詳しい人に質問です。              ☆★☆
☆★☆ 一問目に正解できる自信のある人だけお答えください。☆★☆
☆★☆                          ☆★☆  

大学でプログラミング経験の学部一年生向けにプログラミングを教えることを想定しています。週1コマ×半年程度の限られた時間で、プログラミングとはどういうものかという本質を教えたいのですが、どの言語を使うのが適切でしょうか。

みたいに見落としようがないくらい警告を目立たせたらどうだろう。 それでもまだ適当な回答が相次いだなら、「はてなアンケートの回答者はポイント欲しさに質問文を無視する悪い奴らだ!!」と言えるかと思う。

…そこまでしないといけないのかって?うーん、はてなアンケートはそういうものだと思うしかないのが現状じゃない?

余談

[link] 今日のメモ

masuidrive on rails - ブラウザの言語をJavascriptから調べる。
JavaScriptのみでブラウザの言語設定を取得する方法。静的ファイルでも英語・日本語を自動的に切り替えたりできるよ、ということか。
llv8call 0.01 released - TokuLog 改めB日記
Chromeで有名になったV8エンジンからFile()とかプロセス管理とかできるらしい。…これそろそろUnbabelが実装できるんじゃね?
Scheme Compiler の勉強(0) - cranebirdの日記
なんかSchemeでSchemeコンパイラ*1を作ったよ!という論文があるらしい(pdf *2)。んで、それをLLVMに移植してらっしゃるらしい。なんかすげー−。
ほぼ日刊イトイ新聞 - 原丈人さんと初対面。
全ハチロク世代がよむべき
プログラミングの道しるべと道路舗装 - プログラマーの脳みそ
「ペアプログラミングをオンラインで行える環境」って、Partty!使ってなんとかできたりしないかなぁ。教える人のttyと教わる人のttyが左右に並んでて、その下にustreamみたいなチャットウィンドウがあるかんじ。

*1 つまりScheme->アセンブラですな

*2 1ページ目から[FIXME]で吹いた


2008-09-26

[prog] Webアプリはカルいのか

はてブでさまざまな新サービスがhotentryに並んでいるのを見ると、Webアプリは華やかでクリエイティブなものに思えるが、 それは樹木の地上に出ている部分を見ているにすぎなくて、実際にはセキュリティとか、スケーラビリティとか、フレームワークとかの技術的な側面がしっかりと地面の下に根を張っている。

木が小さいときは根っこも小さくて済むが、小さい根っこのままで木を大きくすることはできない。風が吹いたら倒れてしまうだろう。

[ruby] 札幌Ruby会議

http://regional.rubykaigi.org/sapporo01

あ、意外と道外のスピーカが多いんだ。

つまり、Rubyistが地方に遠征して発表を行うという側面もRegional RubyKaigiにはあるのだな。憧れのあの人があなたの街に!


2008-09-29

[tetris] ついにTAP/Tiのサントラが?

 Club TGMの話。

なんと、Club TGM設立記念の大会が、

とある市のイベントとして開催出来そうな流れです(おぃ)。

がんばりますよ。

 んで、上記のイベントにおいてサントラ化の話を進めるので

取り締まりをビシビシいきますのでご協力をお願いします(ぺこり)。

つーか、自主的削除推奨。

お願いします。

サントラは歴代+アレンジ+映像で検討中。

がんばりますよ。

[Mihara's sub Layer | 『Amazon.co.jpからのお知らせ』と、Club TGMの事より引用]

映像とな?(wktk)

[scheme] Re: Scheme どう書く?的 - ひげぽん OSとか作っちゃうかMona-

先頭から1ずつ増えてる部分を取ってくる関数があればいいんじゃないかなぁと思って書いてみた。

(use srfi-1)  ; last
(use srfi-11) ; let-values

(define (group-numbers ls)
  (define (take-sequence+cdr ls seq)
    (cond 
      [(null? ls)
        (values seq ls)]
      [(null? seq)
       (take-sequence+cdr (cdr ls) (list (car ls)))]
      [(= (car ls) (+ 1 (car seq)))
       (take-sequence+cdr (cdr ls) (cons (car ls) seq))]
      [else 
        (values (reverse seq) ls)]))

  (if (null? ls)
    '()
    (let-values (((seq rest) (take-sequence+cdr ls '())))
      (cons (if (= (length seq) 1)
              (car seq)
              (cons (car seq) (last seq)))
            (group-numbers rest)))))

(print (group-numbers '(1 3 4 5 6 12 13 15)))

技巧的で短いのよりは、長くても読みやすい方が好きです(←長くなったいいわけ)。

id:katonaさんのutil.match版は短くてわりと読みやすいので良いなぁと思った。いろいろ書き換えながら動作を確認してみた。x+1?みたいな関数名が許されるのはLispならでは。

(use util.match)

(define (group-numbers ls)
  (match ls
    (() ())
    ((x . xs) (let1 x+1? 
                    (lambda (y) (and (number? y) (= (- y x) 1)))
                (match (group-numbers xs)
                  ((((? x+1? y) . z) . rest) (cons (cons x z) rest))
                  (((? x+1? y) . rest)       (cons (cons x y) rest))
                  (rest                      (cons x rest)))))))

(print (group-numbers '(1 3 4 5 6 12 13 15)))

おおむね、こんな感じ↓で動きます。

;          x  y    z   rest
;          6 (12 . 13) 15
;        5
;      4
;    3
;  1

[prog][idea] ツリーマシン

スタックマシン、キューマシンがあるならツリーマシンもあってもいいんじゃないの?と思ったんだが、 どんな構造なんだそれ。


2008-09-30

[mac] port install graphviz +no_x11 +ruby +guile +gui とかしたら

なんかApacheのインストールが始まったんだが…。

  |l、{   j} /,,ィ//|     /‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
  i|:!ヾ、_ノ/ u {:}//ヘ     | あ…ありのまま 今 起こった事を話すぜ!
  |リ u' }  ,ノ _,!V,ハ |     < 『おれはgraphvizをインストールしていたと
  fト、_{ル{,ィ'eラ , タ人.    |  思ったらいつのまにかWebサーバを入れていた』
 ヾ|宀| {´,)⌒`/ |<ヽトiゝ   | 催眠術だとか超スピードだとか
  ヽ iLレ  u' | | ヾlトハ〉.   | そんなチャチなもんじゃあ 断じてねえ
   ハ !ニ⊇ '/:}  V:::::ヽ. │ もっと恐ろしいものの片鱗を味わったぜ…
  /:::丶'T'' /u' __ /:::::::/`ヽ \____________________

しかも入らねーしwww

/opt/local/share/apr-1/build/libtool --silent --mode=link /usr/bin/gcc-4.0 -I/opt/local/include  -O2   -L/opt/local/lib/db46  -L/opt/local/lib -o httpd  modules.lo buildmark.o -export-dynamic server/libmain.la modules/http/libmod_http.la modules/mappers/libmod_so.la server/mpm/prefork/libprefork.la os/unix/libos.la -L/opt/local/lib -lpcre /opt/local/lib/libaprutil-1.la -ldb-4.6 -lexpat -liconv /opt/local/lib/libapr-1.la -lpthread 
Undefined symbols:
  "_ap_ugly_hack", referenced from:
      _ap_ugly_hack$non_lazy_ptr in libmain.a(main.o)
  "_ap_prelinked_module_symbols", referenced from:
      _ap_prelinked_module_symbols$non_lazy_ptr in libmain.a(core.o)
  "_ap_prelinked_modules", referenced from:
      _ap_prelinked_modules$non_lazy_ptr in libmain.a(main.o)
      _ap_prelinked_modules$non_lazy_ptr in libmain.a(config.o)
  "_ap_http_input_filter_handle", referenced from:
      _ap_http_input_filter_handle$non_lazy_ptr in libmain.a(protocol.o)
  "_ap_preloaded_modules", referenced from:
      _ap_preloaded_modules$non_lazy_ptr in libmain.a(config.o)
ld: symbol(s) not found

_ap_ugly_hackってなんだ。

+rubyだけでもApache入れようとするなぁ。何に使うんだ。