Python,Ruby,PerlのMicroframework

Flask周りを調べていたらいくつかあった

Python

Ruby

Perl

Dancer面白そう。

#!/usr/bin/perl
use Dancer;

get '/hello/:name' => sub {
    return "Why, hello there " . params->{name};
};

dance;

Scalaプログラミング入門 6-9章

一通り読んだ。

次の2章は内容がついて行けないとこがあったので、また読み返すことになると思う。

  • 6章 アクターと並行処理
  • 7章 トレイトと型、アーキテクトの秘密道具

7章でドウェムジーのRubyのやつをScalaに移植するっていう話があったんだけどRubyの元ネタ知らんかったので。

8章はパーサーで、よくある四則演算だったのでわかりやすかった。後半でJSONパーサ書いてtwitterにアクセスするというサンプルがあったのだけど、後で手動かしてみる。

ProductName Scalaプログラミング入門
デイビッド・ポラック
日経BP社 / ¥ 3,360 ()
在庫あり。

入門ってかいてあるけど、最初に読む本としてはつらいかも。Scalaスケーラブルプログラミングのほうが入門には適してる。

ProductName Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)
Martin Odersky,Lex Spoon、Bill Venners
インプレスジャパン / ¥ 4,830 ()
在庫あり。

ゼロから学ぶOAuth

ゼロから学ぶOAuthの第二回のサンプルを試した。

tcpflowはifconfigで適切なインターフェースを調べてから

sudo tcpflow -c -i en1

とかやった。

pythonのOAuthのモジュールはoauthoauth2ってのがあって、どっちがよいんだかわからん。

あとで読む

hikiにコードを貼付けるためのちょっとしたコマンドのメモ

markdownだとspace4つだがhikiの場合はspace一つなのでrubyで

#!/usr/bin/env ruby
File::open(ARGV[0]) {|f| f.each {|line| print " " + line}}

コードを貼付けるためにスペース入れたりするのは結構めんどうなのではてなの記法はなかなか便利(ただ忘れやすい)

wikiの記法をつくる記法(metaな記法)があるとよいんではなかろうかとか思う。wiki記法ってDSLみたいだもんね。

amazon認証プロキシ

amazonの認証に対応するためにhikiのバージョンを0.8.8.1にあげたついでにamazonプラグインを覗いてみたらプロキシで対応していた。

drkcoreのほうはNet::Amazon使っているので、ローカルでSignature組み立ててるんだけど、wikiりたいだけのユーザーがわざわざsecret_keyとか取得すんのもあほくさいからwikiみたいのはプロキシーでいいのかと。

ProductName パターン、Wiki、XP ~時を超えた創造の原則 (WEB+DB PRESS plusシリーズ)
江渡 浩一郎
技術評論社 / ¥ 2,394 ()
在庫あり。

Rubyによるデザイン・パターン

気になる本。

ProductName Rubyによるデザイン・パターン
Russ Olsen,ラス・オルセン
ピアソンエデュケーション / ¥ 3,990 ()
近日発売 予約可

Bolic

再帰下降パーサを利用して、Unicodeを利用した言語を実装

ProductName Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~
原 悠
毎日コミュニケーションズ / ¥ 2,814 ()
在庫あり。

  • 式と文の違い
  • 変数の実装

というわけで、一通り読了。Rubyの初級者向けの本としても良かった。コードの解説が丁寧だったので、たいしてRubyを知らなくてもすっと入っていけた(素晴らしい!)

言語実装的には、特にスタック型の言語を実装してみたおかげで、なんでも継続がかなり理解できて、満足の一冊。

あと読み終えたら、SICPで飛ばしていた、レジスタ計算機の実装のところがちょっと気になり始めた。

ProductName 計算機プログラムの構造と解釈
ジェラルド・ジェイ サスマン,ジュリー サスマン,ハロルド エイブルソン
ピアソンエデュケーション / ¥ 4,830 ()
在庫あり。

さらに、実践Common Lispも読んでおくかなぁという気にさせられた。

ProductName 実践Common Lisp
Peter Seibel
オーム社 / ¥ 4,410 ()
在庫あり。

Starry

スタック型のオリジナル言語を本を読みながら写経

サポートサイトの正誤表

ProductName Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~
原 悠
毎日コミュニケーションズ / ¥ 2,814 ()
在庫あり。

シンタックスとセマンティクス

次は最後の言語で、再帰下降パーサを使って構文解析をするやつを作るらしい。Higer-Order Perlだと8章あたり。

ゲノム言語ATGC

プログラムとして実行できるfasta形式のプログラミング言語を作ってみた。いちおうチューリング完全(なはず)。

>HELLO_WORLD
ccggaccgcg gggcaccgcc ggcggaccgc cgccggaccg cccggcgacc gccgccccac
cgcccgccca ccgcggggga ccgccgcccc accgccgccg gaccgccgcc ggaccgccgg
cgcaccgcgg cgggaaccga cacatccata ccacagaacc caaaa

これはatgcというコマンドで解釈して実行します。

$ bin/atgc hello_world.fasta 
Hello world!

ゲノム的にGCリッチなほうがいいだろうということで0と1にg,cをそれぞれ割り当てて数字を表現するようにしてる。exitコマンドには終止コドンを割り当てようかとも思ったが、なんとなくaaaにしてみた(polyA)。

しかも(というか当たり前だけど)blastでホモロジーサーチがかけられるし、multifastaにしておけばソース管理もできるうえに、データベース化してインデックスはっておけば、NCBIのツール群でコマンド一発で取り出せる。

ただ今回作ったHELLO_WORLDの配列はblastnだといい感じにヒットしなくて悲しかったので、blastxかけたらブラックコットンウッドからなんかひっかかった。

>gb|ABK94795.1|  unknown [Populus trichocarpa]
Length=229

 Score = 33.5 bits (75),  Expect = 5.9
 Identities = 14/21 (66%), Positives = 15/21 (71%), Gaps = 0/21 (0%)
 Frame = +1

Query  100  GPPPDRRRTAAGTDTSIPQNP  162
            GPPPDRRRT  GT  S P +P
Sbjct  209  GPPPDRRRTRQGTTKSEPASP  229

コンパイラ側のソースはこんな感じでほとんどWhitespaceだ。

VMとかは特にいじってないのでEsotericの本を参照のこと。

ProductName Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~
原 悠
毎日コミュニケーションズ / ¥ 2,814 ()
在庫あり。

VMを使った中間言語方式の強力さを理解した。

Brainf*ck

Brainf*ckの実装を通して、チューリングマシンに対する理解が深まった。

ProductName Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~
原 悠
毎日コミュニケーションズ / ¥ 2,814 ()
在庫あり。

この本おもしろいですのう。

Next Page