‘programming’ カテゴリーのアーカイブ

時間のインターバルをcron的に扱うPythonモジュール書いた

2010年8月11日 水曜日

ちょっと前の話なんですが、croniterというモジュールを書きました。これは何かというと時間に紐付いた繰り返し処理を扱うモジュールです。例えば「毎週火曜日と木曜日の9時」とか「日曜日の5時から10時まで1時間ごと」にとか、そういう繰り返しを扱いたいときに使う事を想定しています。

(続きを読む…)

Pythonでタイムゾーンを扱うメモ

2010年8月10日 火曜日

日本だと普段扱わないので、忘れがちなタイムゾーンの処理をメモ書きです。ここでは例として、日本時間とアメリカ東海岸標準時の変換してみます。

(続きを読む…)

Pythonでいろんなバイナリファイルを覗いてみる

2010年8月1日 日曜日

プログラマをしていると、ちょくちょくバイナリデータから情報を読みたくなりますね。そんな時は、ブツブツ言いながらバイナリエディタと睨めっこすることになるわけですが、これが結構大変なので、何とか楽にならないかなぁと思って探していると、hachoirというナイスなpythonモジュールが見つかりました。このモジュールを使うとバイナリデータをパースして様々なデータを取得できます。かなり多くのデータフォーマットに対応している(現時点で70種類)のが素晴らしいです。

(続きを読む…)

Hello elisp World

2010年7月23日 金曜日

以前にtrampのデバッグでちょろっとだけ触ったきりのelispですが、emacsユーザである以上いつまでも避けては通れなさそうです。とりあえず触りだけ覚えておくことにしました。ただ今のところelispの習得度がpythonやperl並みになることは考えにくいので、elispから外部コマンドを叩いて出力を受け取るというところまでをメモしておきます。

(続きを読む…)

何故かAppleScriptが動かない時はactivateしたら良いよという話

2010年7月9日 金曜日

覚えたばかりのAppleScriptが動かなくて、ハマり倒したのでメモしておきます。まず動かなかったのは以下のコードで、やろうとしてるのは一番新しい送信ボックス中のメールに返信する形で新しいメールを作って件名と本文に適当な文字列を設定すると言うことです。単純ですね。

on run
  tell application "Mail"
       set last_msg to the first message of sent mailbox
       set reply_msg to reply last_msg with opening window
       tell reply_msg
            set subject to "replied"
            set content to "this is replied message"
       end tell
  end tell
end run

パッと見は動きそうなのですが、実行するとsubjectの設定でAppleEvent handler failedという謎のエラーが出ます。replyではなくて新しくメールを作った場合は動作するので、さっぱり原因が予想できず自己解決できませんでした。

(続きを読む…)

Hello AppleScript World

2010年7月3日 土曜日

最近ではデザイナさんもAppleScriptを使いこなすようで、プログラマの自分がまったく理解してないのはどうかと言うことでかじってみる事にしました。まぁ日常的に使ってるのはTerminalとEmacsとYoruFukuroだけなので、個人的にはあんまり使う機会が無いかもなのですが、ひょっとするとXcode周辺で役に立つかもしれないという甘い期待を抱いています。

(続きを読む…)

Hello Yacc & Lex World

2010年6月18日 金曜日

最近ちまちまとyacc/lex(実際はbison/flex)を触っているのですが、やたらと苦労しています。真面目に学校に行ってなかったのが悔やまれますが、愚痴っていても仕方が無いのでメモ書きです。

ここでは以下の様なTinyCモドキのコードをyaccとlexで扱ってみます。

main()
{
    var i;
    var s;
    s = 0;
    i = 0; 
    while(i < 10){
	  s = s + i;
	  i = i + 1;
    }
    println("s = %d",s);
}

TinyCについてはコチラのページを参考にさせて頂きました。何故モドキかと言うと、僕にはTinyCですら複雑だったので、TinyCを更に小さくしたモドキをパースする事にしました。ヘタレですいません。

(続きを読む…)

[メモ] Pythonのデコレータ

2010年5月30日 日曜日

出てくる度に調べる割に、いつまで経っても覚えられなかったデコレータですが、今回こそ仕留める為にメモエントリーです。まずよく見かけるのは関数の時間を計測するという例ですね。僕はこの形だけを何となく覚えては忘れていました。

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import time
 
# デコレータ定義
def time_func(func):
  def decorator(*args):
    start = time.time()    
    ret = func()
    print '%s was executed, it took %s sec' % (func.func_name, time.time() - start)
    return ret
  return decorator
 
# デコレータ適用
@time_func
def test():
  time.sleep(1)
 
def main():
  test()
 
if __name__ == '__main__':
   main()

(続きを読む…)

Hello Autotools World

2010年5月13日 木曜日

名前とぼんやりとした役割や機能だけは知ってるけど、腰が引けて使えないという状態だったautomakeやautoconfですが、覚える必要が出てきたので概要だけでも把握しようという事で調べてみました。出てくるツールや中間ファイルの種類が多いので、まずは図を書いて整理してみました。

Autotoolsのフローチャート

(続きを読む…)

Cでのコマンドラインパラメータの受け方メモ

2010年5月3日 月曜日

Cのプログラムでコマンドラインからパラメータを受けたい訳ですが、自力でやろうとしてもargv経由で文字列配列が渡されるだけなので非常に面倒です(LL病な自分としてはハッシュで欲しい)。例えば以下のgrepコマンドの用に複数のパラメータを順不同で受けたいとかになると、かなり大変ですね。

$ grep -nH -I -R search_text *

そこで、なんか無いのかと思って調べてみるとgetoptを使えば良い事がわかりました。

(続きを読む…)