2007-12-01から1ヶ月間の記事一覧

特定ディレクトリ以下のdoctest -サブディレクトリ対応版-

30分プログラム、その211。前回の特定ディレクトリ以下のdoctest(id:mzp:20071230)をサブディレクトリに対応させてみた。 os.walkでディレクトリを辿りつつ、fnmatch.filterで欲しいやつだけ取り出す戦略で。 始めはos.listdirとos.path.isdirを組合せて自分…

第一章 練習問題

第一章の問題。Mozart/OZの紹介が多い。

練習問題を解いてみる

コンピュータプログラミングの概念・技法・モデル(asin:4798113468)を放置気味なので、ちゃんと練習問題を解いてみようと思う。 ターミナルのEmacsでやりたいので、ちょっとカスタマイズした。 OZEMACSをMacPortsのemacsにした。デフォルトだとCarbonEmacsが…

特定ディレクトリ以下のdoctest

30分プログラム、その210。特定ディレクトリ以下のdoctestをまとめて実行する。サブディレクトリへの対応はまだ。最初はDocFileSuiteを使うつもりだったけど、これはどうやら違うらしい。これはモジュールのロードはせずに、テストだけをロードするっぽい。…

doctestを使ってみる

30分プログラム、その209。doctestを使ってみる。なかなか素敵。 doctestは関数のドキュメンテーション文字列に実行例を埋め込むと、それを自動でテストしてくれる。unittestよりも読みやすいと思う。 def fact(n): """>>> fact(6) 120 """ .... これだけだ…

拡張スライスってなんだろう?

30分プログラム、その208。拡張スライスってなんだろう? http://www.python.jp/doc/release/lib/を読んでいたら、拡張スライスなるものを見つけたので調べてみた。まあ、結局分からなかったんだけどさ。文法は、BNFによると xs[0,1,2] xs[... ,1:3] といった…

Ruby勉強会でS6を使ってみた

今日のRuby勉強会で、S6を試してみた。印刷がもっと楽にできるようになるといいなぁ。資料はこちらです。http://howdyworld.org/slide/ruby-slide.html

ID3Tagの文字コード変換

30分プログラム、その207。iTunesでの文字化けを解消するために、ID3Tagの文字コード変換プログラムを作ってみた。 結局はこれでは解決せずに、http://ipod-life.org/archives/2004/12/itunes_aaaaeaa_1.phpに書いてある方法で解決した。もしかして文字コー…

風邪引いてました

また風邪を引いてました。熱が上ったり下ったりで、やたら長びきました。 みなさん、注意してください。あと注文していたiPod touchとアドエスが同時に届いて、ちょっと幸せです。

S6印刷用CSS

S6の印刷用ページ。まだ、完成してないけど、とりあえず使えるようになったので。このCSSを適用してインデックスページを印刷すると、A4一枚にちょうど6ページ収まるようになる。Firefoxで確認、Safari/Operaは微妙。IEは知らない。複数ページには対応してな…

S6印刷モードが欲しい

前からHTML+CSS+Javascriptでスライドを作りたかった。でも、Slidyの印刷モードは格好悪いので敬遠してた。 でも、S6のインデックスモードが、とてもいい感じ。これをちょっと改造したら、印刷モードになるんじゃないかと思ってがんばっている。まだ、できて…

iPod touch注文した

iPod touchを注文しました。16GBのほう。 アドエス(id:mzp:20071130:ades)と、どちらが先に届くかな。

二分探索木

30分プログラム、その206。二分探索木を作る。 そういえば、二分探索木は30分プログラムで作ったことがなかったので。ただ、削除は面倒そうなので、また次回。 ツリーなので、Compositeパターンを多少意識してる。duck typingなので、インターフェースは不要…

set(集合)型を使う

30分プログラム、その205。新しめの機能であるset(集合)型を使ってみる。 名前から分かるように重複が許されていない。それ以外のインターフェースは、シーケンス型に似ている。 使い方 # 重複の削除 >>> uniq("aba") ['a', 'b'] >>> uniq("ab") ['a', 'b'] …

Pythonのイメージ

なんでPythonが流行ってるんだろう。自分はあまりPythonにいい印象を持ってない。 今、もっているPythonのイメージはこんな感じ。 インデントが意味を持つのは素敵 自分が勉強したときよりも、いくつかの構文が追加されている。yield式とかconditional expre…

リストのグルーピング

30分プログラム、その204。最近、周辺でPythonが流行ってるので、しばらく使ってみる。 まずは、手始めにリスト操作関数をば。prototype.jsのinGroupOfを実装してみる。 使い方 >>> groupOf(range(10),3) [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]] >>> groupO…

多相なprintを求めて -その3-

30分プログラム、その203。多相なprintシリーズの最後。リストに対応した辺りで、ExtLibのStd.Printを知ったので、ここで終了。 使い方 # to_string [1;2;3];; - : string = "[1; 2; 3; ]" ソースコード let ($) f g x = f (g x) let (@@) f g = f g let to_…

はてブとはてなスター

howdyworld.orgのタイトルの横に、はてブボタンとはてなスターボタンを表示するようにした。これだけで、一気にWeb2.0っぽくなった気がする:)。ところで、こういったボタンの設置方法は、はてなウェブサービスではなく各サービスのヘルプページに書いてある…

派閥ジェネレータ

派閥ジェネレータなるものを作ってみた。twitter派閥やカラスはなんで感電しないのか?にあるようなアスキーアートを生成するやつ。例えば、こんなやつが簡単に作れる。 変数名派閥 ├─簡単なやつは略語でいいよ派 │ ├─x,y,z派 │ ├─foo,bar派 │ └─hoge,hage派 …

match withとObj.tag

open Obj let f x = match tag (repr x) with | int_tag -> "<int>" | string_of_int -> "<string>" とやると、 let f x = match tag @@ repr x with | int_tag -> "<int>" | string_of_int -> "<string>";; Characters 468-481: Warning U: this match case is unused. | string_of_in</string></int></string></int>…

多相なprintを求めて -その2-

30分プログラム、その202。多相なprintが欲しいので、Obj.tagで分岐してみる。 前回、Objモジュールを使えば、型に関する操作ができそうだということが分ったので、調べてみた。ここで、Obj.magicとかを適当に説明するつもりだったけど、#006 禁断の Obj - K…

風邪

風邪引いてました。みなさん、体には気をつけてください。

多相なprintを求めて-その1-

30分プログラムその201。いい加減ネタを探すのが大変なので、ちょっと大きめな課題を一日30分づつ進める方針にチャレンジ。 で、デバッグに便利な多相なprintをOCamlで実装してみよう。 要するに、Haskellで言うとshow、型で言うと'a -> stringのような関数…

携帯メールで散財.com

予告通り、散財.comにメールで投稿できるようにした。 ただ、来年の2月のアップデータで携帯に対応されるらしいので、適当に作ってある。 どう適当かと言うと、品名と値段しか登録できない。添付画像ができたり、ジャンル・カテゴリが選べたりしたら楽しいと…

スレッドセーフな文字列出力

30分プログラム、その200。OCmalでスレッドセーフな文字列出力。 マルチスレッドでプログラミングしていたら出力文字列が混ざってしまったので、スレッドセーフな文字列出力を作ってみた。 Mutexを使っている。あと、デバッグ目的で使いたかったので、即座に…

散財.comへメールで投稿

上で書いたやつを使って、メールから投稿できるようにしてみた。 でも、パスワードがべったり書いてあるし、ジャンルとかにも対応してないから、まだ公開できない。そのうちね。

散財.com

30分プログラム、その199。散財.comにプログラムから投稿する。 最近、散財.comを始めたんだけど、携帯から投稿できないのが面倒。そこで、メールを送るだけで投稿できるプログラムを作ろうと思う。 で、それの下準備としてWWW::Mechanizeを使って投稿してみ…

リフレクション

30分プログラム、その198。Javaのリフレクション。やることが思いつかないので、昔のプログラムをひっぱりだしてきて、お茶を濁す。動機は、 Javaって遅いよなぁ 遅いのは最初にVMを立ち上げるときだよな じゃあ、VMを立ち上げたままにしとけばいいんじゃね?…

テキストをPDFに変換

30分プログラム、その197。複数のファイルを一つのPDFに変換するスクリプト。 印刷したいファイルが大量にある場合、それを一枚一枚印刷するのは面倒。そこで、全部を一枚のPDFに変換して印刷できるようにする。 本当は、lprを使って印刷までする予定だった…

VPS

VPS(Virtual private server)なるものを使うと、root権限付きのサーバが借りられるらしいですよ。 さくらの専用サーバと比べて、それほどお得感がないですけど。