2008-02-01から1ヶ月間の記事一覧

Perlでカレンダー

30分プログラム、その255。上(id:mzp:20080228:wday)で書いたことがやっぱり納得できないので、Perlで実装してみる。 たしかにそれっぽい値にはなるんだけど、1違う気がする。あと、元コードではうるう年の判定コードが間違っていることも発見。divとmodを間…

Mozartのデータフロー変数すげぇ

コンピュータプログラミングの概念・技法・モデル (IT Architects' Archiveクラシックモダン・コンピューティング)作者: セイフ・ハリディ,ピーター・ヴァン・ロイ,Peter Van-Roy,Seif Haridi,羽永洋出版社/メーカー: 翔泳社発売日: 2007/11/08メディア: 大…

カレンダーの計算がよく分からない

ガウディ本(asin:4798113468)より。 次に月初めの1より前の格子の空白部分の個数を計算する。 SD=(((7-(T.mDay mod 7))+T.wDay) mod 7) このときTは今日の日付。T.mDayは日(1から31)、T.wDayは曜日(0から6で0が日曜)。 これでなんで計算できるかと、そもそも…

Adapterパターン

30分プログラム、その254。AdapterパターンをPythonで。 id:rednesがid:rednes:20080227でAdapterパターンを書いていたので、マネしてみる。 pythonでは抽象メソッドを定義出来ないんで、抽象メソッドの役割を持たせたかったら例外を投げるようにします。 py…

色付きのcal

30分プログラム、その254。色付きのcalコマンド。 calendarモジュールを使ってみたかったので。 これを使うとcalコマンドが簡単に作れる。 >>> import calendar >>> print calendar.month(2008,2) February 2008 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 …

Prologすげぇ

ガウディ本(asin:4798113468)を読んでいるんだけど、Prologというか関係プログラミングすげぇ。 要するにAppendを {Append [1 2 3] [4 5 6] X}と使うとXが[1 2 3 4 5 6]に束縛されるけど、 {Append X Y [1 2 3 4 5 6]}と使うと結合すると[1 2 3 4 5 6]になる…

PythonでINIファイルを

30分プログラム、その253。PythonでINIファイルを読んでみる。 ConfigParserを使えば楽チン。コメントや変数も使えるから、自前で作るよりずっといい。でも、最近はYAMLとかのほうが流行りだろうなぁ。 >>> import ConfigParser >>> config = ConfigParser.R…

Pythonでdiff

30分プログラム、その252。Pythonでdiffを作ってみる。 diffをちゃんと作ると大変そうだけど、Pythonのdifflibを使えば簡単にできる。 >>> import >>> a = file('foo').readlines() >>> b = file('bar').readlines() >>> difflib.unified_diff(a,b) とするだ…

BluePrint CSS使ってみた

Blueprint CSSを使ってみた。CSSフレームワークという概念そのものが熱すぎる。あと、CSSのくせにtestsやpluginとかいうディレクトリをもっているあたりも素敵。 グリッドレイアウトするために使ったんだけど、なかなか便利。 英語/日本語を含めてドキュメン…

時候の挨拶

30分プログラム、その251。時候の挨拶を出力するプログラム。 単に日付にあわせて、直子の代筆から時候の挨拶を取得して、ランダムに一つ出力するだけ。 詰ったのは、PythonでUTF-8以外を扱う方法。Python でUTF-8, shift_jis, euc_jpなど日本語を使う方法に…

whois

30分プログラム、その250。Pythonでドメイン検索。 海外サーバを借りて、ついでにもう一つドメインを取得しようかと考えている。とりあえず、空いてて格好いいドメインがないか探してみる。 毎回、Webインタフェースから検索するのも嫌なので、コマンドライ…

caseの書き方

Rubyコーディング規約 caseを使用できる場合は、caseを使用する。 やっぱりどう考えても、このcaseの使い方は変だろう。 case path.basename.exist? when true name = alt_name(Pathname.new("."),path.basename(".*"),path.extname) FileUtils.mv(path,name…

ディレクトリの平坦化

30分プログラム、その249。ディレクトリの平坦化。 あるディレクトリとその子孫に含まれるファイルをひとつのディレクトリに集めるスクリプト。 特に意味はないんだけれども、思いついたので。ただ単に書くだけではつまらないので、Rubyコーディング規約に従…

相性占い

30分プログラム、その248。新しくプログラミング言語を覚えたいときに行うべき10の練習問題 | IDEA*IDEAより相性占い。 ある名前とある名前を入れると相性診断を10段階で出してくれるプログラム。診断結果は適当でもいいけど、同じ組み合わせだったら同じ数…

ping

id:mallowlabsに教えてもらった。Rubyでpingは2行で書ける。 require 'ping' puts Ping.pingecho('localhsot') http://www.ruby-lang.org/ja/man/html/ping.htmlすげー。

文章ジェネレータ

30分プログラム、その247。新しくプログラミング言語を覚えたいときに行うべき10の練習問題 | IDEA*IDEAより、Tclで文章ジェネレータ。 8. 「(名前)が、(場所)で、(アクション)した」がランダムに組み合わされて出てくるプログラム。 要するに、配列・…

赤ちゃん言葉変換(正規表現によるReplace)

30分プログラム、その246。新しくプログラミング言語を覚えたいときに行うべき10の練習問題 | IDEA*IDEAより「赤ちゃん言葉変換」。 6. テキストを入れると語尾が赤ちゃん言葉に(例:ですよ→でちゅよ)。 正規表現による文字列置き換えで十分。ちなみに前に…

CometがOperaで動かない

Rails2.0.2にShootingStar 3.2.6をいれてみたけど、Opera9.5でうまく動かない。Controllerではforkを使って、表示してから3秒後にalertを出すようにしている。 def foo fork{ sleep 3 Meteor.shoot 'shoot','alert("hoge")' } end Viewでは単純にShootingSta…

Tclで電卓

30分プログラム、その245。新しくプログラミング言語を覚えたいときに行うべき10の練習問題 | IDEA*IDEAの4つめ「電卓を作ろう」。 4. 簡易電卓。0で割ったときの処理を自分なりに作りこむ。 電卓っぽい動きをするだけで大変だったので、0割り算は無視。電卓…

Operaの設定ファイルの同期

30分プログラム、その244。Operaの設定ファイルの同期。 大学と家のOperaの設定を同期したかったので、rsyncで同期するようにしてみた。ポイントはタイムスタンプが新しい場合だけ上書きする-uオプション。 ショートカットキーと全体の設定、アドレスバーで…

最小値と最大値の計算

30分プログラム、その243。昨日に続いて新しくプログラミング言語を覚えたいときに行うべき10の練習問題 | IDEA*IDEAより「最大値と最小値の計算」。 3. 複数の数値を入力させ、昇順に並び替え、最大値と最小値を出す(例:同僚の体重を入力して計算)。 初…

時刻に合わせたメッセージの表示

30分プログラム、その242。新しくプログラミング言語を覚えたいときに行うべき10の練習問題 | IDEA*IDEAの問題をやってみる。 2. 現在時刻にあわせてやる気のでるメッセージを出力(例:もうすぐランチ!がんばれ!)。 使い方 $ wish time-msg.sh ソースコ…

Tclの正規表現は最速

>> id:syd_syd:20080209:p3その話は、詳説 正規表現 第2版で読んだことがあります。曰く、 正規表現エンジンにはDFA型とNFA型がある DFA型は高速だが能力が低い。NFA型は低速だが能力が高い。たしかDFAはキャプチャができなかった気がする でも、Tclのエンジ…

TclでFizzBuzz

30分プログラム、その241。TclでFizzBuzzを。 初心者入門といったらFizzBuzzでしょう、ということで書いてみた。 GUIの配置でかなり苦労した。ああ、Tkのリファレンスが欲しい。小さいフレームをつくって、その中にWidgetを配置して、そのフレームを積み重ね…

Tclを試してみた

30分プログラム、その240。Tclを試してみた。 最も初心者に有用な言語はtcl/tkなる記事を読んだので、Tcl/tkを試してみた。 感想は、 文法は簡単そう。構文がないんだから、当然なんどけど Tkのリファレンスが欲しい。探せばでてくるかな レイアウトのやりか…

PraggerのCustomFeed

30分プログラム、その239。Praggerでお気に入りの酒屋さん、酒泉洞をRSS化した。 Feed::custom_feedで切り出したあと、相対パスによるリンクを修正している。ところで、ちょうど今入荷している而今は、いいお酒だと思うんだ。しかも、なぜかはてなキーワード…

Proxy CGI

30分プログラム、その238。Proxy CGI。リクエストを肩代りするやつ。 昔(id:mzp:20060521)、似たやつを作ったけど、今回は画像ファイルなどにも対応した。画像ファイルへのアクセス時に、Refererを殺したかったので作ってみた。 使い方 http://howdyworld.or…

LeopardでのRubyGems

LeopardでRubyGemsを使おうとすると、sourcesがロードできないと怒られる。 $ sudo gem install mysql /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- sources (LoadError) from /…

アスキーアートの画像化

http://howdyworld.org/junk/aa.html30分プログラム、その237。AAの画像化。 とりあえずCGI化した。一部ブラウザでは使えない予感。 ソースコード #! /usr/bin/env ruby # -*- mode:ruby; coding:utf-8 -*- # # aa.rb - # # Copyright(C) 2008 by mzp # Auth…

アスキーアートの画像化

30分プログラム、その236。アスキーアートの画像化 http://www.geocities.jp/ipa_mona/を使って、アスキーアートを簡単に画像化できるようにしてみた。そのうち、Webインターフェースを書くかもしれない。 ImageMagickで文字列を画像にする場合は、 convert …