Tue, 22 Jul 2008
さようならblosxom、こんにちはpyblosxom
…数日前からこっそりと、pyblosxomに移行しております。
テンプレートやら設定ファイル、ディレクトリ名もcgi本体も全てpyblosxomと名のつくものはblosxomへ変更しました。絶対何か問題が出ると思っていましたが、特に何もないようです。…柔軟なもんやなぁ。
移行の決め手となったのは…やっぱり、こっちのほうが設計が新しいおかげで色々便利になっているのと、pythonのほうが覚えやすいから、でしょうか。覚えやすいというのは違うか、pythonで書かれたpyblosxomのコードが、初心者なりにとても読みやすかったから、かな。他の、例えばrubyで書かれたblosxonomyを選ばなかったのは、単純に動かせなかったから…それにblosxonomyに関する日本語の情報って、まったくみつけられなかったので。…pyblosxomに関する情報だって、ほとんどないけど。
…いずれにせよ、blosxomの系統以外は考えられませんでした。blosxomは、とても楽しいツールだと思います。pyblosxomにも、その特徴は受け継がれています。
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)
…ともかく、ビール(スウォッチ社本社のあるエリア)標準時を求める部分は、もっとスマートなやりかたが絶対にあるはず。なお、コメントアウトしてある部分は、上手く動きませんでした。
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)
これで、少しマシな感じに。
はじめての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からのコピペであるため)。まだダメだなぁ。
Wed, 02 Jul 2008
pythonとpyblosxomの勉強中なのです
いや、blosxomのrubyによる実装が今でもあったなら、たぶんそっちで遊んだだろうけれど、無いのは仕方ないんだよ、だよ。
大したことはしていなくても、書き留めていくことは大事。…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とか、読むともりもり勉強になるなぁ。
まだ続きそう。
Page 1 of 13 >>