2010-08-01から1ヶ月間の記事一覧

今日の昼ごはん(フィボナッチ)

id:TAKESAKOさんに「フィボナッチはボナッチの息子という意味だ」と聞いたのでWikipediaで調べる フィボナッチの本名はレオナルド・ダ・ピサ フィボナッチは「ボナッチオの息子」という言葉由来のあだ名、父のボナッチオも本名ではなく「単純」という意味の…

Pretty Print 6

n=18で5秒くらいかかっていたのだが、馬鹿なミスをしていたhttp://gist.github.com/556393n=18で0.2秒、n=30で1秒になった。再帰呼び出しを大部分削ってみた。http://gist.github.com/556394 before 107607/1 0.406 0.000 0.905 0.905 prettyprint.py:181(be…

Pretty Print 5

子ノードではないパラメータの表示の仕方を少し変えた。(Name 'x' (Load))じゃなくて(Name (id: 'x') (Load))にした。 >>> for i in range(10): ... x, y = y, x + y ... print x, ... ===== AST ===== (Interactive (For (Name (id: 'i') (Store)) (Call (N…

Pretty Print 4

あー。 (Interactive (Expr (BoolOp (And) (Call (Name 'callable' (Load)) (Name 'x' (Load))) (Call (Name 'callable' (Load)) (Name 'x' (Load)))))) という表示になってしまって、期待しているのはそうじゃないんだよなぁ、とprettyprintライブラリのど…

Pretty Print 3

カバレッジが100%になるようにテストを書いたらfillにバグがあることに気づいた。xsとzsを間違えて無限ループになってた。名前ひどい。色々変数名の変更とかリファクタリングを実行。テストが100%だと安心だ。テスト重要。そしてようやくAUTOASTの作るS式を…

coverageを使う

http://pypi.python.org/pypi/coverage/2.6/ $ coverage run prettyprint.py $ coverage htmlまあ僕は面倒なので $ coverage run prettyprint.py && coverage htmlとやるのだけど。これをやるとこんなふうになるカバレッジで覆われてないところのテストを書…

Pretty Print 2

前回論文のリンクを張り忘れていたので: http://homepages.inf.ed.ac.uk/wadler/papers/prettier/prettier.pdf今朝の電車で試しに実行してみたら、おしい、カンマを忘れるの構文エラーが1つあった!まだまだ精進が必要ですな。で、実行してみると案の定書い…

PrettyPrint 1

とりあえず論文のHaskellで書かれた実装を帰りの電車で気合でPythonに逐語訳した。写経。まだ実行すらしていないので構文エラーとかあるかも。Python向きの設計はこれから考える。続きは明日の出勤電車で。http://gist.github.com/551349

今日の昼ごはん(括弧個数ゴルフ)

いつも昼ごはんを一緒に食べている二人がお休みだったので [10/08/26 13:05:30]: カッコの話ってこれか [10/08/26 13:05:31]: http://e-arrows.sakura.ne.jp/2010/08/is-lisp-really-has-too-many-parenthesis.html [10/08/26 13:07:51]: factをlambdaにすれ…

日本人の大部分が誤訳する英語

prettier printの論文を読んでいたのだが冒頭の一文 Here <> is the associative operation that concatenates two documents, which has the empty document nil as its left and right unit. を見て、prettier printを実装したいだけの人が見ても序盤から…

Pythonいじり2

今朝の出勤電車ここまではできるようになった >>> pprintast.build(_mod) ===== AST ===== <_ast.Interactive object at 0x100606690> ===== END AST ===== (Interactive (Expr (Call (Attribute (Name (Load)) (Load)) (Name (Load)))))Python側で_astを見やすく表示するモジュールを作るという選択</_ast.interactive>…

Pythonいじり

オブジェクトの生成を表示させようとして予期せず対話的に入力したトークンが出るようになったRubyいじりなんだけども、これって「プログラミング言語はコードの文字列からトークン列、構文木、バイトコードを経て実行されている」って授業をする際に実際に…

セキュリティ&プログラミングキャンプの講義資料に加筆して公開しました

http://www.slideshare.net/nishio/ss-5019563 「プログラミング言語の設計判断」というタイトルでは要約しきれてない内容ですが。図が足りないとか図が足りないとかを修正してから公開しようと思っていたのに気がついたら1週間もたってしまった(即日公開す…

アリエッティを見てきた感想を6文字で書くと

「主人公は病気」

Rubyの可視化

セキュリティ&プログラミングキャンプの参加者 TaKUMA7 の成果物が YouTube と Vimeo にアップロードされていた。素晴らしい!何が素晴しいってちゃんと英語で説明が書いてある!欲をいえばズームインしてちゃんと各クラスの名前やメソッドの名前を見せれば…

Ruby 1.9.2リリースとWEBrick脆弱性問題の顛末

はい、Ruby 1.9.2がリリースされましたね。このバージョンではWEBrick にゼロデイ攻撃可能な脆弱性 - スラッシュドット・ジャパンで紹介されている脆弱性が僕が書いたパッチで修正されているわけなのですけど、そもそもなんで僕が修正しているのか、って顛末…

日常

最近片付けの日記が多いからとても片付けているんじゃないかという誤解があるようだけども、日記は日常を平等にサンプリングしたものではない。日常的に当たり前になったことはあんまり日記に書こうというモチベーションがわかないから、逆に言えば日記に書…

地獄への道は善意で...

名言「地獄への道はいつも善意で満ちている」の解釈パターン - KENJI’S BLOG 地獄への道は善意で舗装されているとは - はてなキーワード

一瞬正論のような気がしたが

「時々勘違いしてる子がいるから言っとこうかな。読者にあるのは作品の話を変える権利じゃない。その作品を読むか読まないかを選択する権利だ。気に食わなければ読むのをやめればいい」 痛いニュース(ノ ∀`) : ブリーチ作者「才能も無く努力もせず不平言って…

Rubyいじり2

環境変数で挙動を変えるサンプルコードをチューターの須永くんに作ってもらったので、それを使ってもっと発展的な例を作ってみた。 diff: http://gist.github.com/526180 $ RUBY_VERBOSE=1 ruby -e "class Foo; end; Foo.new(42, :foo)" rb_class_new_instan…

Rubyいじり

Rubyをいじってるナウ --- object.c (revision 28759) +++ object.c (working copy) @@ -1542,7 +1542,7 @@ rb_class_new_instance(int argc, VALUE *argv, VALUE klass) { VALUE obj; + printf("rb_class_new_instance %s\n", rb_class2name(klass)); obj =…

圏論はデザインパターン

セキュリティ&プログラミングキャンプのヒトコマ圏論とモナドの話をしていて、ふと気づいたら僕よりモナドに詳しい人がいるんだから積年の疑問をぶつけてみるべきだ!と思って「モナドはデザインパターンだと思うんだ」と言ったら @yugui 「代数的構造って…

ハッシュのキーとして同一視されるものはなんであるか

http://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-list/47272?47272-47298+split-mode-vertical # ruby p({1 => true}[1.0]) #=> nil あー。Pythonはそこのところゆるいよなぁ # python >>> {1: True}[1.0] True >>> {1: 1, 1.0: 1.0} {1: 1.0} Py…

Makefile

つくれと言われた気がしたので作った $ make love make: *** No rule to make target `girlfriend', needed by `love'. Stop.

Perlのスコープがわからない→わかった!

use strict; use warnings; sub foo{ my $x = "static"; sub bar{ print $x; } &bar(); } &foo(); Variable "$x" will not stay shared at tmp.pl line 7. むむ、当然参照できると思ったらできなかった。なぜだ? @miyagawa それはwarning なので参照はでき…

(Python|Ruby)でネストしたスコープの外側の変数に再束縛する

抜粋翻訳 PEP3104: Access to Names in Outer Scopesの内容をコードで。 Rubyでの挙動(1.9.3dev) メソッドの中で定義されたメソッドは外のスコープにアクセス出来ない。 > def foo(x) > def bar() > p x > end > bar > end => nil > foo 1 NameError: undefi…

OSCしらべ

Linux環境で、ソケット経由でなるべくきれいな音をコントロールしたい。調べてわかったことをつらつら書く OSC(OpenSound Control)とOSS(Open Sound System)は紛らわしいが全然別物なので混同しないように気をつける OSCの仕様とかを見ても全然具体的にどう…

というわけでさ

詳しい話は聞いていないけど、一人3500円の懇親会費がドタキャンの人のせいで5300円になったとかいうのはゆゆしき自体だし、それをブラックリスト作成とかで回避できないかって考える技術者マインドもよく分かるが、おそらくそういうブラックリストに入って…

利他主義のススメ

ネット上のまだあったことのない人のことを、人は簡単に裏切る。関係を継続せず、裏切ることによって別のコストが派生しないなら、正直に自分がコストを支払うよりも相手を騙して相手に払わせるほうが得だからだ。倫理的に見てほめられた行為でないことはも…

Ruby|Pythonでバイトコードをディスアセンブル

RubyにはPythonのdisみたいなものはないのかなぁと言っていたら、ささださんに教えてもらった。 irb(main):017:0> def facto(n) irb(main):018:1> if n == 0 then 1 else facto(n - 1) * n end irb(main):019:1> end => nil irb(main):020:0> puts RubyVM::I…