How My Heart Sings

Tue, 22 Jul 2008

さようならblosxom、こんにちはpyblosxom

…数日前からこっそりと、pyblosxomに移行しております。

テンプレートやら設定ファイル、ディレクトリ名もcgi本体も全てpyblosxomと名のつくものはblosxomへ変更しました。絶対何か問題が出ると思っていましたが、特に何もないようです。…柔軟なもんやなぁ。

移行の決め手となったのは…やっぱり、こっちのほうが設計が新しいおかげで色々便利になっているのと、pythonのほうが覚えやすいから、でしょうか。覚えやすいというのは違うか、pythonで書かれたpyblosxomのコードが、初心者なりにとても読みやすかったから、かな。他の、例えばrubyで書かれたblosxonomyを選ばなかったのは、単純に動かせなかったから…それにblosxonomyに関する日本語の情報って、まったくみつけられなかったので。…pyblosxomに関する情報だって、ほとんどないけど。

…いずれにせよ、blosxomの系統以外は考えられませんでした。blosxomは、とても楽しいツールだと思います。pyblosxomにも、その特徴は受け継がれています。

Meta Infomation of this entry

You can add this Entry to your  はてなブックマーク and Delicious

Tue, 08 Jul 2008

はじめてのpyblosxomプラグイン、swatchbeatそのさん

ローカル時刻で表わされているエントリの更新時間を、協定世界時へ変換、さらにビール標準時へ変換。これも、もっと良い方法があると思うんだ…


import time, datetime

def get_beat(entry):
    if not entry:
        return ""

    local_time_tuple = entry['timetuple']
    
    year = int(local_time_tuple[0])
    month = int(local_time_tuple[1])
    day = int(local_time_tuple[2])
    hour = int(local_time_tuple[3])
    minute = int(local_time_tuple[4])
    sec = int(local_time_tuple[5])
    
    ptime  = time.mktime((year,month,day,hour,minute,sec,0,0,-1))
    gtime = time.gmtime(ptime)

    beat_tmp_hour = int(time.strftime('%H', gtime)) + 1
    if beat_tmp_hour == 24:
        beat_tmp_hour = 0
    beat_tmp_hour = beat_tmp_hour * 60 * 60
    
    beat_tmp_min = int(time.strftime('%M', gtime)) * 60

    beat_tmp_sec = int(time.strftime('%S', gtime))

#    bm_time_delta = datetime.timedelta(hours=1)
#    bmtime = gtime + bm_time_delta
#    bm_time_tuple = datetime.datetime.fromtimestamp(gtime)
#    
#    beat_tmp_hour = int(bm_time_tuple[3]) * 60 * 60
#    beat_tmp_min = int(bm_time_tuple[4]) * 60
#    beat_tmp_sec = int(bm_time_tuple[5])
    beat_tmp = int((beat_tmp_hour + beat_tmp_min + beat_tmp_sec) / 86.4)

    beat = "@" + str(beat_tmp)
    return beat

def cb_story(args):
    entry = args['entry']
    entry["beat"] = get_beat(entry)

…ともかく、ビール(スウォッチ社本社のあるエリア)標準時を求める部分は、もっとスマートなやりかたが絶対にあるはず。なお、コメントアウトしてある部分は、上手く動きませんでした。

Meta Infomation of this entry

You can add this Entry to your  はてなブックマーク and Delicious

Sun, 06 Jul 2008

はじめてのpyblosxomプラグイン、swatchbeatそのに

…欲しいものは、最初からタプルの中に、望んだ形式で入っているのが分ったんだよ、だよ。


import time


def get_beat(entry):
    if not entry:
        return ""

    local_time_tuple = entry['timetuple']

    beat_tmp_hour = int(local_time_tuple[3])
    if beat_tmp_hour == 24:
        beat_tmp_hour = 0
    beat_tmp_hour = beat_tmp_hour * 60 * 60
    
    beat_tmp_min = int(local_time_tuple[4]) * 60

    beat_tmp_sec = int(local_time_tuple[5])

    beat_tmp = int((beat_tmp_hour + beat_tmp_min + beat_tmp_sec) / 86.4)

    beat = "#" + str(beat_tmp)
    return beat

def cb_story(args):
    entry = args['entry']
    entry["beat"] = get_beat(entry)

これで、少しマシな感じに。

Meta Infomation of this entry

You can add this Entry to your  はてなブックマーク and Delicious

はじめてのpyblosxomプラグイン、swatchbeat

このプラグインは、エントリの更新日付けをswatchbeatの形式で表示します。…何か、思っていたのとは違う出来上がりになってしまったのですが…

import time

def get_beat(entry):
    if not entry:
        return ""

    local_time_tuple = entry['timetuple']
#    local_time_tuple = int(local_time_tuple) + 32400
#    local_time_tuple = str(local_time_tuple)
    beat_tmp_hour = int(time.strftime('%H' , local_time_tuple))
    if beat_tmp_hour == 24:
        beat_tmp_hour = 0
    beat_tmp_hour = beat_tmp_hour * 60 * 60
    
    beat_tmp_min = int(time.strftime('%M' , local_time_tuple))
    beat_tmp_min = beat_tmp_min * 60

    beat_tmp_sec = int(time.strftime('%S' , local_time_tuple))

    beat_tmp = int((beat_tmp_hour + beat_tmp_min + beat_tmp_sec) / 86.4)
#ok
    beat ="#" + str(beat_tmp)
    return beat
#ng
#    gmtime_tuple = entry['gmtimetuple']
#    beat_tmp = time.strftime('%H' , gmtime_tuple)

def cb_story(args):
    entry = args['entry']
    entry["beat"] = get_beat(entry)

何か、何か…すごく迂遠なことをしているというか、もっとすぱっと書けそうな気がしてならないというか。それにこれだと、ローカルな日付けでしか情報が取れないんだけど…でも何といっても一番の問題は、local_time_tuple = entry['timetuple']で何をしているか、どんなデータがこの中に入っているか分っていないこと(他所様のプラグイン、w3cdate.pyからのコピペであるため)。まだダメだなぁ。

Meta Infomation of this entry

You can add this Entry to your  はてなブックマーク and Delicious

Wed, 02 Jul 2008

pythonとpyblosxomの勉強中なのです

いや、blosxomrubyによる実装が今でもあったなら、たぶんそっちで遊んだだろうけれど、無いのは仕方ないんだよ、だよ。

大したことはしていなくても、書き留めていくことは大事。…plugininfo.pyという、pyblosxomで現在使用中のプラグインの作者や連絡先等を一覧表示するプラグインがあります。pyblosxomでは、どのプラグインも大体においてとても簡単に特に問題もなく導入できるので、色々ホイホイ入れていっていたのですが、突然plugininfoによる表示ができなくなってしまいました。ブラウザで見ると、check_javascript.pyの作者を表示するところで止っています。…作者のメールアドレスが<>で括られていて、それがエスケープされないままになっているのが原因でした。当サイトはapplication/xhtml+xmlとして文書を吐いているので、ここら辺り厳しくされてしまうのです。

    import cgi
    plugindata.append("AUTHOR: " + cgi.escape(str(getattr(mem, "__author__", None)) + "¥n"))
    plugindata.append("VERSION: " + str(getattr(mem, "__version__", None)) + "¥n")

追加修正したのは最初の二行。二行目は元は三行目と同じ形をしていました。まだ何も分っていない状態ながら、ともかくここを何とかエスケープしてやれば良いのだなと…エスケープする方法はコメントプラグインのcomments.pyを読めばすぐ分ったし、pythonって読み易くて簡単なんだ、と思った瞬間です。プラグインだけでなく本体の方も、pyblosxom.pyとかtools.pyとか、読むともりもり勉強になるなぁ。

まだ続きそう。

Meta Infomation of this entry

You can add this Entry to your  はてなブックマーク and Delicious

Page 1 of 13  >>

Le violon intérieur....
Yasuo Yamashita
vaiorinnhiATTOnaDOTrimDOTorjye-pi-
Y.A.S.U.O Ytterbium Artificial Sabotage and Utility Organism Y.A.S.U.O Yelling Abomination from the Sunless Underground Oasis

Pyblosxom and plugins. For detail, see http://viole.sakura.ne.jp/blosxom/blosxom.cgi/plugin_info