RFC2822ライブラリforPython

RFC2822はWebAppがはやってきた訳でなかなか使う場面も多いかと思う.

自分もtwitterいじってて,相互変換できたほうが良さそうなので簡単なライブラリにしてみた.

  • mylib/rfc2822.py
#coding:utf-8
# need python 2.4 or newer, maybe!

import datetime

# timezone class for JST
class JST (datetime.tzinfo):
    def utcoffset (self, dt=None):
        # default offset of this timezone from UTC
        return datetime.timedelta (hours=9)
    def dst (self, dt=None):
        # offset in daylight saving time
        return datetime.timedelta (hours=9)
    def tzname (self, dt=None):
        # name of this timezone
        return "JST"

class UTC (datetime.tzinfo):
    def utcoffset (self, dt=None):
        return datetime.timedelta (hours=0)
    def dst (self, dt=None):
        return datetime.timedelta (hours=0)
    def tzname (self, dt=None):
        return "UTC"

def date_to_rfc2822 (d):
    # d : datetime object with timezone
    from time import mktime
    import email
    from email.utils import formatdate, mktime_tz
    import datetime
    if not d.tzinfo:
        print 'date_to_rfc2822 : argument d must be aware datetime object'
        raise

    tzdelta = d.tzinfo.utcoffset ().seconds
    dt_tz = datetime.datetime.timetuple (d) + (tzdelta,)
    return formatdate (mktime_tz (dt_tz))

def rfc2822_to_date (t, tz=UTC ()):
    # t : string
    # this argument assumes string expression of RFC2822, i.e. 'WeekDay Month Day HH:MM:SS UTCOffset Year'
    # tz : tzinfo object
    # tz detetmines the timezone of the returning string
    import email
    from email.utils import parsedate_tz, mktime_tz
    import datetime
    from time import mktime
    
    return datetime.datetime.fromtimestamp(mktime_tz (parsedate_tz (t)), tz)

で,使い方

>>> from rfc2822 import rfc2822_to_date, date_to_rfc2822, JST, UTC
>>> from datetime import datetime
>>>
>>> date_to_rfc2822 (datetime.now (UTC ()))
'Tue, 25 Aug 2009 18:43:28 -0000'
>>> date_to_rfc2822 (datetime.now (JST ()))
'Tue, 25 Aug 2009 18:43:32 -0000'
>>> rfc2822_to_date ('Tue Aug 25 06:41:01 +0000 2009', JST ())
datetime.datetime(2009, 8, 25, 15, 41, 1, tzinfo=<rfcutils.JST object at 0x8cd70>)
>>> rfc2822_to_date ('Tue Aug 25 06:41:01 +0200 2009', JST ())
datetime.datetime(2009, 8, 25, 13, 41, 1, tzinfo=<rfcutils.JST object at 0xbd530>)
>>> rfc2822_to_date ('Tue Aug 25 06:41:01 +0200 2009')
datetime.datetime(2009, 8, 25, 4, 41, 1, tzinfo=<rfcutils.UTC object at 0xbd4d0>)
>>> rfc2822_to_date ('Tue Aug 25 06:41:01 +0000 2009')
datetime.datetime(2009, 8, 25, 6, 41, 1, tzinfo=<rfcutils.UTC object at 0xbd4d0>)

ポイントはtimezoneを指定すること.

date_to_rfc2822のクラスは必ずtzinfoフィールドを持つようにしなければいけない.

そのために,利用者が簡単に使えるようライブラリ内にJST,UTCクラスを用意している.

必要に応じて自分のタイムゾーンに合ったdatetime.tzinfoを継承したクラスを作ればいくらでも対応できる.*1

OpenVPNで自宅へ接続

自宅のUbuntuServerにOpneVPNサーバをたてて,そこから自宅のネットワークにアクセスできるようにしたんだけど,

ブリッジのルーティングが上手く行かない..

外のネットワークからVPN接続し,IPアドレスを割り当ててもらう事には成功したんだけど,

ルーティングがおかしい..

;;外のローカルネットワークから,自宅のVPNに接続.
;;とりあえずルータをさがしてみる..
$ traceroute 192.168.1.1
raceroute to 192.168.1.1 (192.168.1.1), 64 hops max, 40 byte packets
1 192.168.182.1 (192.168.182.1) 13.845 ms 2.632 ms 2.632 ms
2 * * *
3 * * *

あのー,192.168.182.1って,今割り当てられているローカルネットワークですよ...

うーん,ルーティングがおかしい...

さて,どうやってこれを直すか...

哲学書来た

やっぱDebian好きだけどね..

でも今更ながら深淵なるFreeBSDの世界へ.

まず良い本を買うことが全ての一歩.

Absolute BSD FreeBSD システム管理とチューニング FreeBSD4.x/5.x対応 Mycom UNIX books

Absolute BSD FreeBSD システム管理とチューニング FreeBSD4.x/5.x対応 Mycom UNIX books

1章インストール,2章Manの引き方,..4章カーネルというなんとも固いコンテンツw

ちょっと古い本だけど,思想を知るのには十分そうです.

サマーソニック09

行ってきました.初日と最終日.

東京会場です.といっても,筑波からなにげに遠い...

で,軽く振り返ってみます.

2009年8月7日(金)



Who The Bitch

オープニングアクトでした.良かったです,思いのほか.

テイストが日本らしくないが,MCは関西弁だった...

あと,ドラム上手かったです.

朝一番なのに異常にテンションが高い,Bitchなやつらでした.



WHO THE BITCH (1) @ B.B. Street 2007/5/22

このライブビデオ,OPのSEが'The Band'の'Theme From The Last Wartz'というのは彼らのセンスを感じます.

Totalfat

時間が空いていたので聞いてみたバンド.

日本のメロコアみたいな感じ.

もうちょっとリフがかっこ良ければ...

にしても,21世紀にライトハンドを聞けるとは思いもしませんでした...



Totalfat - Show me your corage

Slimmy

Eguに誘われ見に行ったバンド.

R&Bとグラムとポップを混ぜたものをモダンに解釈したようなバンド.

ボーカルが気持ち悪い.動作が...

だが,これもかなり良かったです.アルバムがiTunesStoreで出たら買いたい.



SLIIMY - WAKE UP

Paramore

結構有名らしいですね.

ヘヴィなAvrilLavigneとでも形容すればいいのでしょうか?

実際Hayley嬢は相当上手かった.

自分は全く知りませんでしたが,散々暴れさせてもらいました.



For a Pessimist, I'm Pretty Optimistic - Paramore

BoomBoomSatellites

人力系テクノバンド.

さすが古参.あの複雑な曲をよく再現できる.

ドラムの正確さも驚嘆.





BoomBoomSatellites - Kick It Out

ラスト'Kick It Out'で一つの事が分かりました.

クラブミュージックでもモッシュができる

NineInchNails

神降臨.伝説のライブになります,これ.

TheFrailで雨が降り出してDavidBowieのカバー' I'm Afraid Of Americans'で土砂降り...

どういう演出ですか?ソ連の秘密兵器でも使ったとしか言いようがない...

そしてラストのHurt,今まで最高のHurtでした...

ありがとう,Trent先生...



2009年8月9日(日)



朝からちょっと曇っている.

まー夏フェスだと,ちょっと曇ってるくらいがいいのかもしれませんが,死者が出ないという点で.

Triceratops

朝一.クロークに行くついでに聞いてみた.

名前はしってたけど,聞く事自体10年ぶり.

うーん,ちょっと温すぎて聞いてられなかった...



TRICERATOPS - GOING TO THE MOON

タバコすってたら..



MountainStage横の喫煙所.次のバンド'FiveFingerDeathPunch'の待ち時間に.

ちょっと分かりずらいかと思いますが,黒いTシャツの奴らが多いw

そして,地べたに座ってる奴大杉...サマソニ中もっとも行儀が悪い場所でした.
(僕も疲れたのでウンコ座りしてましたけど..)

Five Finger Death Punch

ちょっとだけエモいスラッシュ.

お昼からモッシュさせてもらいました.きもちいい.

このバンド以降,鋼鉄/キッズ率の高いバンドのモッシュはクオリティが高い.

ボクサーみたいな奴とかいて怖かった.



Five Finger Death Punch - The Way Of The Fist

あと,途中で客が一緒にあわせてくれなくてMCのヴォーカルが凹んでました.かわいそす.

ここで一言.

通はモッシュを端でする - Egu

KEANE

飯食いながらみてました.

スラッシュ聞いた後には温すぎる...いや,いいバンドなんだけどね..



Keane - Somewhere Only We Know

In Case Of Fire

始まる前にガラ空きだったので遊んでました...





ばか...

で,ほぼその状態ではじまりました.うーん,知名度が無いようですね.



In Case Of Fire - Enemies

Enter Shikari

トランスコアとも言うべき,トランスとメタルコアが合体したようなバンド.

非常に斬新.これもモッシュ&サークル天国.

そして,目当てのオーディエンスの作る人間ピラミッドも見れました.満腹.



Enter Shikari - Sorry You're Not A Winner

僕も"パンパンパン"してきましたよ!

マキシマムザホルモン

日本の現役メタルバンドの最高峰.まかさこんなにファンがいるとは...

MountainStageがいっぱいでした.

EnterShikariで相当体力を消費して辛かったw

半分くらい聞いてドリンク飲みながら聞いてました.

いやー,若いファンの体力すげー.

あと,噂通り気持ち悪いファンがいっぱいいました.

CAVALERA CONSPIRACY

仲間割れしてたカヴァレラ兄弟が仲直りして作ったバンド.

Seplutura/Soulflyの流れを汲むブラジリアンメタル.Sepluturaはブラジルの民族音楽スラッシュメタルに最初に取り込んだバンド.

マックスのヴォーカルは相変わらずすばらしい.歳の割には声量が落ちていない.

Roots/ChaosADからの選曲もあってファンを楽しませてくれました!



Seplutura - Roots Bloody Roots

疑問なんだけど,マキシマムザホルモン後にめっちゃ客の数が減ってた...なぜマキシマムザホルモンを聞けて,CavaleraConspiracyを聞けない...?

Limb Bizkit

90年代のメインストリーム, ラップメタルの形成と普及に大きな役割をしたバンド.

今回の来日は脱退していたWesBorlandが復帰したオリジナルメンバー!



Wesはこんな人です.街に居たらこわいw



で,さすが,Wesのギターは前回見たMikeSmithとは大きく違う.リフ一つをとっても鋭さの中に独特のしなやかさがある!

FredDurstも歳をくったのか,過去のバッシングが聞いたのか歳くってましたが,ライブが上手くなってよい.

JohnOttoの繊細なドラミングも光ります!

シメにふさわしいすばらしいパフォーマンスでした.



Limp Bizkit - Break Stuff

まとめ

つかれた.全身筋肉痛...

それはさておき,今回のサマソニは90年代ロックのおさらい的な内容だった.

90年代の懐古ができて改めてあの10年は音楽にとって実り多い年月だっことを再度認識しました.

SPAM研究

なかなか最近のSPAMは手が込んでいるようですね.

ベイジャンフィルタをかいくぐるべく日本語の盲点をついた文章で巧みにフィルタをくぐり抜ける.

SPAM観察

いかに実際自分のはてなダイアリーに張られたものを示す.

ex.1

うぇwwうぇっうぇwwwwwww 2009/07/27 09:27

ドーユーリメンバー?私アルパカに似てるタケシねwwwwwww
んぉふーww 雑誌に載ってたのやってみたらコスプレ姫の魔法のフィラチオにハマっちゃって思考回路がフィラチオ中心になってるぉwwwwww
てか気持ちよくしてもらってんのに何で5万貰えんの? カオスwwwww

http://netoge.bolar.net/bZ0qGmC/

ex.2

オッス!ニートの桜井だよ!いやいや毎度毎度!!!!!
ここで釣った女でコンニャクオナと生マヌコのどっちが気持ちいいか試したお!!
えとうん・・・問答無用で生マヌコの勝ちだわwwwwwwwwwww
てかハメさせてくれた女子が当たり前のように10万くれたんだけど何でー???

http://ene.creampie2.net/E4cSp2Y/

特徴

    • うぇwwうぇっうぇwwwwwww
  • 怪しい日本語
  • 隠語の変形
    • フィラチオ
    • マヌコ
    • 女子
  • リンク先の偽装
    • 暗号化したようなURI
    • バーチャルホスト

など,上手い事隠語の変形でスパムコーパスにない単語を選んでいる.

なかなかフィルタを研究されているようですね.

でも,リンク先のIPを引いてみると,みんな66.71.248.210になっているのできっと単一サーバでやりくりしているんでしょうね.

なかなかおもしろい...

対策

この手の業者は一つではないはず.

だが,穴はある.

彼らは結局どこかのページに見た人を誘導したい訳だから.

なら,そのリンク先のページをベイジャンフィルタにかけてスパムサイトIPのリストをつくれば,簡単にブロックできるわけだと思う.

実際,スパムの送ってくるページには普通のSPAMコーパスに入っていそうなトークンがちりばめられている.

もちろん,そんな事にサーバの計算機コストを裂こうとはてなの管理者様が思うかは不明ですが.

技術的には興味があります...

追記

さっきのスパム文をmecab形態素解析してみたらおもしろい...

$ mecab < spam.txt > spam.out.txt
$ cat spam.out.txt
ドーユーリメンバー 名詞,一般,*,*,*,*,*
? 記号,一般,*,*,*,*,?,?,?
私 名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ
アルパカ 名詞,一般,*,*,*,*,アルパカ,アルパカ,アルパカ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
似 動詞,自立,*,*,一段,連用形,似る,ニ,ニ
てる 動詞,非自立,*,*,一段,基本形,てる,テル,テル
タケシ 名詞,固有名詞,人名,名,*,*,タケシ,タケシ,タケシ
ね 助詞,終助詞,*,*,*,*,ね,ネ,ネ
wwwwwww 名詞,固有名詞,組織,*,*,*,*
EOS
ん 助詞,特殊,*,*,*,*,ん,ン,ン
ぉふ 名詞,一般,*,*,*,*,*
ー 名詞,一般,*,*,*,*,*
w 記号,アルファベット,*,*,*,*,w,ダブリュー,ダブリュー
w 記号,アルファベット,*,*,*,*,w,ダブリュー,ダブリュー
  記号,空白,*,*,*,*, , , 
雑誌 名詞,一般,*,*,*,*,雑誌,ザッシ,ザッシ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
載っ 動詞,自立,*,*,五段・ラ行,連用タ接続,載る,ノッ,ノッ
て 動詞,非自立,*,*,一段,連用形,てる,テ,テ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
の 名詞,非自立,一般,*,*,*,の,ノ,ノ
やっ 動詞,自立,*,*,五段・ラ行,連用タ接続,やる,ヤッ,ヤッ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
み 動詞,非自立,*,*,一段,連用形,みる,ミ,ミ
たら 助動詞,*,*,*,特殊・タ,仮定形,た,タラ,タラ
コス 名詞,固有名詞,人名,姓,*,*,コス,コス,コス
プレ 名詞,固有名詞,組織,*,*,*,プレ,プレ,プレ
姫 名詞,一般,*,*,*,*,姫,ヒメ,ヒメ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
魔法 名詞,一般,*,*,*,*,魔法,マホウ,マホー
の 助詞,連体化,*,*,*,*,の,ノ,ノ
フィラチオ 名詞,一般,*,*,*,*,*
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
ハマっ 動詞,自立,*,*,五段・ラ行,連用タ接続,ハマる,ハマッ,ハマッ
ちゃっ 動詞,非自立,*,*,五段・ワ行促音便,連用タ接続,ちゃう,チャッ,チャッ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
思考 名詞,サ変接続,*,*,*,*,思考,シコウ,シコー
回路 名詞,一般,*,*,*,*,回路,カイロ,カイロ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
フィラチオ 名詞,一般,*,*,*,*,*
中心 名詞,一般,*,*,*,*,中心,チュウシン,チューシン
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
なっ 動詞,自立,*,*,五段・ラ行,連用タ接続,なる,ナッ,ナッ
てる 動詞,非自立,*,*,一段,基本形,てる,テル,テル
ぉ 名詞,一般,*,*,*,*,*
wwwwww 名詞,固有名詞,組織,*,*,*,*
EOS
てか 接続詞,*,*,*,*,*,てか,テカ,テカ
気持ちよく 形容詞,自立,*,*,形容詞・アウオ段,連用テ接続,気持ちよい,キモチヨク,キモチヨク
し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
もらっ 動詞,非自立,*,*,五段・ワ行促音便,連用タ接続,もらう,モラッ,モラッ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
ん 助動詞,*,*,*,不変化型,基本形,ん,ン,ン
のに 助詞,接続助詞,*,*,*,*,のに,ノニ,ノニ
何で 副詞,一般,*,*,*,*,何で,ナンデ,ナンデ
5 名詞,数,*,*,*,*,5,ゴ,ゴ
万 名詞,数,*,*,*,*,万,マン,マン
貰え 動詞,自立,*,*,一段,未然形,貰える,モラエ,モラエ
ん 助動詞,*,*,*,不変化型,基本形,ん,ン,ン
の 助詞,終助詞,*,*,*,*,の,ノ,ノ
? 記号,一般,*,*,*,*,?,?,?
  記号,空白,*,*,*,*, , , 
カオス 名詞,一般,*,*,*,*,カオス,カオス,カオス
wwwww 名詞,固有名詞,組織,*,*,*,*
EOS

こいつ,アルパカを知ってやがる...

以前の日記の修正

まえにTrampの事を書いたんだけど,

いろいろチェックしていると上手く行かない事を見つけたのでメモ.



Trampを使ったときだけEmacsのバックアップファイルの作成をしないようにする

(add-to-list 'backup-directory-alist
                  (cons tramp-file-name-regexp nil))

ってのがあったんだけど,自分の使ってる22.3.1ではうまく動かなかった.

よくわからん.マッチ用の正規表現も問題ないとおもうけど...

とりあえず,

(setq make-backup-files nil)

としておくのが良いのでしょうかね.

Tracのスタイル設定メモ

Trac0.11からTemplateEngineがGenshiに変ったことを受け,スタイルとかの設定方法が変わったのでメモしておく.

まず,"/pathToTracEnv/tempaltes/site.html"に

<link rel="stylesheet" type="text/css" href="${href.chrome('site/style.css')}" />

を追加する.

次に,上のlinkから読み込まれるスタイルシートを作ってあげる.

インストール時のディフォルトの設定だと,siteは,"/pathToTracEnv/htdocs/"になるので,

"/pathToTracEnv/htdocs/style.css"を作って編集する.

参考文献