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

httpd.py

30分シリーズ、その13。PythonでHTTPサーバ。 BaseHTTPServerを使うと簡単に書ける。 単純にHTMLを返すだけだと30分たたなかったので、faviconにも対応してみた。 import time import BaseHTTPServer class Handler(BaseHTTPServer.BaseHTTPRequestHandler):…

補完関数を書こう(3)-コマンド配信-

zsh

続いて、各サブコマンドに対する補完関数を書いていきます。ただし local cmd=${word[2]} ((CURRENT --) shift words case $cmd (add) ......... ;; (commit) ......... ;; esac のように書いていくとどんどん長くなっていくので、各サブコマンドごとに関数…

svnの補完関数を書こう(2) -サブコマンド-

zsh

svnは、第一引数にサブコマンドを取る。 $ svn add hoge.c $ svn commitなので、まずはこのサブコマンドの補完関数を用意する。完成するとこうなる。 $ svn ^D Subversion command ? cleanup diff log pe propedit rename switch add co export ls pedit pro…

svnの補完関数を書こう(1) -準備編-

zsh

svnの補完関数を書いてみよう。まずは、ディレクトリ等の準備から。補完関数はfpathに記述されたディレクトリから自動でロードされる。なので、まずfpathに好きなディレクトリを設定する。 # .zshrc fpath=(~/config/fun $fpath) そして、そのディレクトリに…

CGI.pl

30分シリーズ、その12。PerlでCGI。言語に依存しないことばかりやっていてもしょうがないので、CGIライブラリをいじって簡単なCGIを書いてみる。フォームに名前を入れると挨拶してくれるだけのCGI。 #!/usr/bin/env perl use strict; use warnings; use CGI;…

字幕ファイル->TypingManiaコンバータ

http://mzp.sakura.ne.jp/files/tm.rb 概要 [00:30:59] [00:44:18]当[00:44:58]た[00:44:99]り[00:45:12]前[00:45:59]と [00:51:26]オ[00:51:66]モ[00:52:10]テ[00:52:23]と[00:52:49]ウのような字幕ファイルがすでにある場合、それをTypingMania用の歌詞デ…

coin.scm

30分シリーズ、その11。ある金額を持つとき、硬貨と紙幣が最低何枚必要かを求めるプログラム。SICPに載ってたネタ。 gosh> (jp-change 3) ; 3円 = 1円玉 * 3 ((1 3)) gosh> (jp-change 15) ; 15円 = 10円玉 * 1 + 5円玉 * 1 ((10 1) (5 1)) gosh> (jp-change…

ftp.rb

id:mzp:20070426:ftpの続き。http://mzp.sakura.ne.jp/files/ftp.rb 必要ライブラリ Ruby/ProgressBar - gemsにも有り 説明 lsなどの結果を表示する前に、UTF-8に変換して表示する。サーバに日本語名のファイルが置いてあるときなどに便利。 ftpクライアント…

tex.rb

mimetexなプラグインです。hikiconf.rbで、mimetexへのURLを指定してください。 @options['mimetex.url'] = 'http://mzp.sakura.ne.jp/mimetex/mimetex.cgi' def tex(eq) url = @options['mimetex.url'] + '?' + eq.escape.gsub('+','%20') %(<img src="#{url}">) end 単純に、…

sieve.rb

「そうねえ。素数を遅延評価で求めたりしてるわね」よくわかる現代魔法 (集英社スーパーダッシュ文庫) 30分シリーズ、その10。今回は、遅延評価で素数を求めてみる。 $ ruby sieve.rb [2, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, …

OCamlの本が出ます

OCamlの本がでますよ。ちょっとだけ書いてます。 入門OCaml プログラミング基礎と実践理解 OCaml-Nagoya 著 A5版 ISBN978-4-8399-2311-2

FTPクライアントを作ろう

探せども探せども、日本語に対応したFTPクライアントが見つからず、じっと手を見る。 というわけで、毎回日本語ファイルに出会うたびにブツブツ文句を言わずに、さくっと作ってしまおう。 必要な機能だけにしぼれば、それほど大変じゃないはずだ。以下実装メ…

newton.py

30分シリーズ。その9。ネタがねぇ。 今回はニュートン法。数値計算の教科書までもひっぱり出した。いやね、アルゴリズムの本はすべからく手続き的・反復的に書いてあるのよ。それを、再帰で書き直していると30分で終わらないのです。というわけで、今回はニ…

虫食い算

id:selvaggio:20070421:1177177934より出題。 ○○○ × ○○ ----------- ○○○零○ただし、零=0 さあ、Prologの出番だ。 ?- use_module(library(bounds)). product(A,B,C,D,E,F,G,H,I) :- Digits = [A,B,C,D,E,F,G,H,I], Digits in 1..9, all_different(Digits), A…

lcs.pl

30分シリーズ。その8。なんか不調。 今回は最長共通部分列問題。http://mono.kmc.gr.jp/~oxy/acmicpc/hiki.cgi?%C6%B0%C5%AA%B7%D7%B2%E8%CB%A1あたりが参考になるかも。要するに、2つの文字列を受け取って、その両方に登場する最長の文字列を取り出す問題。…

qsort.scm

病み上がりなので、楽そうなのを選んだら10分で終わった。まあ、いいか。 今日のネタはクイックソート。 gosh> (qsort '(2 4 1 5 5)) (1 2 4 5 5){friend:hiro}あたりはクイックソートは複雑だと思っているみたいだけれども、再帰とリストを使えばとてもシン…

TypingManiaのディレクトリ構成

SightSeekerStudio.com - TYPINGMANIA 4がどのような構成になっているかの解析結果。 ディレクトリ構成 ファイル名 説明 XML/* 歌詞データ。書式は後述 mpegoneaudiolayerthreedata/* 音楽データ。MPEG-1 Audio-3 dataの意味だろう tm.swf typingmania.swfを…

msort.rb

30分シリーズ、その6。ネタ切れしたら、アルゴリズムの本を取り出せばいいことに気がついた。 ということで今回はマージソート。 $ ruby msort.rb オリジナル:[41, 26, 21, 26, 53, 93, 33, 11, 37, 25] 正順ソート:[11, 21, 25, 26, 26, 33, 37, 41, 53, 93…

TypingMania用データ変換 開発中

{friend:hmx}やら{friend:dmp}がカラオケ用にぽちぽち打った歌詞データをTypingMania用に変換してやろうと、がんばってます。 英語に対応してません。どうしてくれましょう -> どうしようもない 曲が速すぎて、ぜんぜんクリアできません カラオケ用だったた…

TypingMania for offline

SightSeekerStudio.com - TYPINGMANIA 4{friend:dmp}がやっていたので、やってみようとしたらその日に公開が中止されていたやつ。 とても悔しかった、ローカルで動かしてやった。あとで勝手に歌詞を追加してやる。(解析結果をあとで書く)で、結局歌詞は次の…

wc補完関数

zsh

wcつながりで、wcの補完関数を書いてみた。 #compdef wc _arguments -s : \ {-c,--chars}"[the number of bytes]" \ {-w,--words}"[the number of words]" \ {-l,--lines}"[the number of lines]" \ "--help[show help]" \ "--version[show version]" \ "*::…

wc.py

30分シリーズ、その5。ネタ切れの予感。今回はwc。 $ python wc.py pn.rb 15 34 239 pn.rb $ python wc.py pn.rb bible 15 34 239 pn.rb 23589 39315 1609575 bible 23604 39349 1609814 total#!/usr/bin/env python import sys import re def wc(path): fil…

zsh tutorial

Tutorialは読み終わった。 補完には_descriptionや_argumentsなどを使うといい これらの関数はタグを生成したりする 特定のスタイルの値を取り出す方法がわからない あと、g:zshに参加しようかどうか悩み中。

fortune

30分シリーズ、その4。fortuneプログラム。引数にfortune用のデータを与えるとそこから、適当なやつをピックアップする。 アブラハムの子であるダビデの子、イエス・キリストの系図。 -- マタイの福音書 1:1 % アブラハムはイサクの父であり、イサクはヤコブ…

zstyle勉強中

zshの補完関数を書きたい。User Friendly Manualを読んでいる。追記: なんとなくスタイルとタグの意味がわかった。明日は、Tutorialを呼んでみよう。

ポーランド記法計算機

30分で何かをつくってみようシリーズ、その3。良いネタが思いつかなかったので、id:mzp:20070416:rpnの焼き直し。手に馴染んだ言語なので、とても奇麗に書けた。 lhs.send op,rhs あたりがすばらしいと思う。 def parse(tokens) op = tokens.shift if op =~ …

unlambda失敗版

関数型言語の悪夢がやってくる 30分で何かをつくってみようシリーズ、その2。 id:selvaggioをまねしてunlmabdaを実装しようとして失敗しようとしたバージョン。dとcが実装できなかった。テストプログラムを書くのに死ぬほど苦労した。もう二度と手を出さない…

逆ポーランド計算機

Web連載の準備中に考えていることをマネして、30分で何かを作ってみよう。というわけで、30分で作ったPerlによる逆ポーランド記法計算機。5分ぐらいオーバしたけど。使い方: $ rpn "1 2 +" 3 $ rpn "2 1 - 10 *" 10 $ rpn "1 A +" A is not number/operator.…

ソートの解答

id:mzp:20070412:exersiceの解答。一応、出題した以上は解答をば。ちなみに肝はインターフェイスの使い方。まず、ソート対象が何かの配列となっているので、比較メソッドが一意に決まらない。なので、ソートを行うメソッドに比較メソッドを渡してやる必要が…

クイックソート

id:namipikaがJavaを勉強してるので出題。Javaでソートを行うプログラムを記述せよ。条件は次の通り。 ソート対象は配列。ただし、それがStringの配列なのか、Integerの配列かは指定しちゃだめ 比較関数を外部から与えられるようにすること ソートアルゴリズ…