[devel][python] Pythonの日付変換の悪夢とfeedparser
feedparserは重いけど手軽。
でも、その日付変換でいつもはまるのでメモ。
- 日付がpublished_parsedに入ってるはずと思っても、updated_parsedに入ってる
- Python 9-tupleに変換された日付の扱い
後者について。
Pythonのタイムゾーン変換(UTC->JST)ではまった | mitc にあるようなUTCとかJSTのtimezoneinfoクラスがあるとする。
例えば、
<pubDate>Sun, 12 Aug 2012 22:51:37 +0900</pubDate>
が、
entries[i].updatedに入ってる。
で、entries[i].updated_parsedの中で、
(2012, 8, 12, 13, 51, 37, 6, 225, 0)
になる。
"UTC"に変換されてる。
これが、"Python 9-tuple"とか、"完全な 9 つの要素 全てに値の入ったタプル"とか書かれているものっぽい。
これを"isoフォーマット"で書き出したい。
そのまんま使って、
datetime.datetime.fromtimestamp(time.mktime(entry.updated_parsed)).isoformat()
とやると、
2012-08-12T13:51:37
となって、UTCそのまんまで、なおかつ、タイムゾーン情報が抜け落ちる。
で、二つの書き方。
datetime.datetime.fromtimestamp(time.mktime(entry.updated_parsed).replace(tzinfo=tz.UTC()).astimezone(tz.JST()).isoformat() datetime.datetime.fromtimestamp(time.mktime(entry.updated_parsed) + 3600*9).replace(tzinfo=tz.JST()).isoformat()
出力は
2012-08-12T22:51:37+09:00
前者はタイムゾーン無しのdatetimeオブジェクトとを作っておいて、タイムゾーンUTCを追加、そしてJSTに変換。
後者は、実質的な数値をJSTに進めたナイーブなdatetimeオブジェクトを作って、あとからタイムゾーンを追加。
後者の方が若干短いか。
windowsでpython2.5でvc++2010でmecab0.994を使う
以下の環境
mecab本体は、公式のバイナリをインストール。
pythonバインディングをビルドする時に、トラブル。
python setup.py buildで以下のエラーが出る。
running build running build_py running build_ext error: Python was built with Visual Studio 2003; extensions must be built with a compiler than can generate compatible binaries. Visual Studio 2003 was not found on this system. If you have Cygwin installed, you can try compiling with MingW32, by passing "-c mingw32" to setup.py.
を参考に、'Python25\Lib\distutils\msvccompiler.py'を書き換えてみても同じ。
これは、distutils + Visual Studio による拡張モジュールビルド時のメモ - muddy brown thangを見て分かったけど、無駄に.NETFRAMEWORKを見に行ってるだけっぽい。
だから'msvccompiler.py'の126行目付近からの、その該当部分を、ごっそりコメントアウト。
# try: # if version > 7.0: # self.set_macro("FrameworkSDKDir", net, "sdkinstallrootv1.1") # else: # self.set_macro("FrameworkSDKDir", net, "sdkinstallroot") # if version >= 8: # self.set_macro("FrameworkSDKDir", net, "sdkinstallrootv2.0") # elif version > 7.0: # self.set_macro("FrameworkSDKDir", net, "sdkinstallrootv1.1") # except KeyError, exc: # # raise DistutilsPlatformError, \ # ("""Python was built with Visual Studio 2003; #extensions must be built with a compiler than can generate compatible binaries. #Visual Studio 2003 was not found on this system. If you have Cygwin installed, #you can try compiling with MingW32, by passing "-c mingw32" to setup.py.""")
これでビルドできて、test.pyが無事に動いた。
そのうちなんか副作用が出てくるかもしれないのでメモ。
Google Reader FullFeed mod とwedata
Google Reader FullFeedの動作。
今日、なぜかおかしい。
Fマークも表示されない。
直ったっぽい
ありがとうございます
[devel][tombloo]tomblooとRead It Later
いつのまにやらRead It LaterがPocketと名前を変えてバージョンアップしてた
Pocket (Formerly Read It Later)
で、そのtombloo用のパッチ
元のコードのURL部分を微妙に書き換えただけ。
とりあえずポストは出来る
タグは使ってないので未確認
[devel][c#][db] sqliteでC#のLINQ
とりあえず、うまくいったっぽい。
忘れそうなのでいったんメモ
環境
- Visual C# 2008 Express Edion sp1
- sqliteはSystem.Data.SQLiteにあるADO.NET 2.0 Provider for SQLiteの1.0.66.0 Apr 18, 2010
- 参考にしたのはChapter17 LINQ to SQL @IT
今回は、データベースファイルは既存のもの。
下準備
設定
ここで大事なことは、
Oh I didn't notice this ... Linq to SQL is for Sql Server only. You want Linq to Entities, or the Entity Framework model.
Robert
http://sqlite.phxsoftware.com/forums/p/1408/6101.aspx#6101
ということで、O/Rマッピング段階で、LINQ to SQLクラスは使わない。
そうではなくて、ADO.NET Entity Data Modelを使う、ということ。
これを使う手順は、Visual Studio で LINQ to Entities プロジェクトを作成する方法に従う。
セクションAdventureWorks Sales Model を作成および参照するには
- 手順3の「名前」ボックスは適当に
- 手順5の「データ接続の選択」で
ここからおかしなエラーが時々出る
「オブジェクト参照がオブジェクト インスタンスに設定されていません」
が、気にしない。
なんどかやってると消える。
そのうちまた時々出てくるけど、そのたびに何度か同じことをすればよくなる。
不思議。
後は適当に手順を最後まで進める。
[firefox][tombloo][userChrome] tomblooとUserScriptLoader.uc.js
Firefoxは今、10.0.1だけど、自分の使ってるUserScriptLoader.uc.jsが0.1.5.1だった。
UserScriptLoader/UserScriptLoader.uc.js at master from Griever/userChromeJS - GitHubを見ると、既に0.1.7.6まで進んでる。
で、入れ換え。
Google Readerでgooglereadertombloo.user.js経由でtomblooを使うため、どこか適当なところ、917行目くらいに、
sandbox.Tombloo = Cc['@brasil.to/tombloo-service;1'].getService().wrappedJSObject;
を追加。
アイコンをURLバーからステータスバーに移動するため、483行目辺りのコメントアウト部分を入れ換える。
取り敢えず、GRでGoogleReaderFullFeed modが使え、Shift+tキーでtomblooフォームが立ち上がることを確認。
[devel][cygwin][gauche] Gauche 0.9.2をCygwin上でかろうじてビルド
タイトル通り、Gauche - A Scheme Implementationから取得したGauche-0.9.2.tgzを、cygwin 1.7 utf-8上でかろうじてビルドできた。
make checkはいくつか失敗してる感じ。
うだけど、WiLiKiと、koguro's gist: 297312 ― GistのSchemeコードバトンの英単語練習アプリが動いてるから通常の用途には問題ない範囲か。
結局、Cygwin環境はそのまま。なんか色々やってるうちにたまたまビルドの成功したっぽいtarボールからの0.9のgcを0.9.2に上書きコピー。そうしたら0.9.2がビルドできた。
肝心の0.9の色々はよく分からない。
ずっと以前のCygwin環境で、ビルドできたものをまた強引にコピーして使ったような気もするけど定かでない。