2012年7月30日月曜日

PythonでJSTからUTCに変換

Blog移行でFC2からBloggerに移行を進めていますが、FC2でexportしたファイルは日時を変換しないとBloggerにimportできない模様。という事で、Pythonの勉強がてら変換Scriptを書いてみました。その中で少しハマった日時のJST⇒UTC変換について、メモを残しておきます。

import datetime
import dateutil.tz

// (中略)

native_date = datetime.datetime.strptime(datestr, '%m/%d/%Y %H:%M:%S')
utc_date = native_date.replace(tzinfo=dateutil.tz.gettz('Asia/Tokyo')).astimezone(dateutil.tz.tzutc())

Timezoneが設定されていないDatetimeがあるとは盲点でした。開発環境での変換は上手くいったようなので、使えそうであればGoogle App Engineで提供できるように、チュートリアルを進めてみます。

2012年7月10日火曜日

cassandra-jdbc + iBatisでやっとCQLが動いた話

CassandraのJDBC driver(cassandra-jdbc)を使って、iBatisからCQLを叩く実装を試しています。
iBatisといっても独自Frameworkのコンポーネントなので、設定ファイルがカスタマイズされていて、そこに嵌ったのもあるのですが…嵌ったポイントを忘れないようにメモ書きしてみます。
  • setAutoCommit(false)を呼び出すと、Exceptionになる。
    • Cassandraは常にauto-commitなので、falseを設定するとExceptionが発生します。iBatisのJDBC TransactionManagerは必ずsetAutoCommit(false)を呼び出すコーディングになっている為、TransactionManagerにEXTERNALを指定し、SetAutoCommitAllowedプロパティをfalseに設定する必要があります。
  • SELECT * FROM ~ だとresultClassとMappingできない。
    • これはcassandra-jdbc固有の症状かどうかわかりませんが、keyとcolumn nameを指定してSELECTすることで解決しました。
とりあえず、最初のsetAutoCommitで久しぶりにどっぷり嵌ってしまって、1日くらい時間を費やしちゃいましたが、なんとかデータを取るところまではできたのでOKです。ただ、resultのmappingがまだよくわかっていないので、もう少し調べてみないと…。
そしてcassandra-jdbcのドキュメントがどこにも見つから無いです。sourceを読めって事か?

2012年7月9日月曜日

神奈川県立川崎図書館に行ってきました

この前の土曜日、HadoopとScalaのオライリー本を求めて神奈川県立川崎図書館に行ってきました。図書館なんて、大学の頃、レポート直前に籠っていた記憶しかないので…10年ぶりくらいですねw

あまり下調べせずに行ったのですが、到着して驚いたのが、市立の子供から大人までを対象にした図書館ではなく、「理工学系」の専門書が集まっている図書館だった、という事です。オライリー本がたくさんあるくらいだし、よく考えればそうですよね^^; 館内にいる方はみんなそれなりの年の男性ばかりで静かに調べ物や勉強をしており、奥さんを連れて行った自分がちょっと浮いていたような…w

迷いながら、3Fの情報処理のコーナーへ。うーん、普通の図書館じゃ見つからないような技術書がたくさんありますね!流石です。とりあえず目的の象本(Hadoop)とScala本を確保して、他にもいくつか借りてきました~。

今までは必要な技術書は買って手元に置いとく派だったんですが、一般的に技術書は高価ですし、とりあえず3週間試してみてから購入できる、というのは非常に魅力的です。これからも利用してみようと思います。

2012年7月6日金曜日

Apache CassandraのClient調査

最近運用し始めたApache Cassandraについて、Javaで使えるClientを調査しています。
公式WikiにHigh level clientsのListが掲載されていました。(2012-05-14が最終更新日時) また日本語WikiにもListがありますが、翻訳した時点(2011-06-01)の情報の為、現時点ではだいぶ古い情報になっているようです。

パッと見、人気の言語 (Java, PHP, .NETなど)は種類が豊富すぎて、どれを使うべきか迷ってしまいますね。うちは環境がJavaなので、その中でも情報が多いHectorを使って運用をしています。
今後、Cassandraの発展に伴い、群雄割拠のClientsも淘汰されていくのでしょうか…?

Bloggerへ移行だっ!

最近、仕事やPrivateの情報をどこに集約しようかと考えていて、自宅ServerにWordPressを構築しようかと考えていたのですが…その前に、まずはBloggerに今までのBlogを集約してみようと思います。
今までのBlogは
  • ココログ(@nifty) : ダイエット日記、日常、Windows系の技術情報
  • FC2ブログ1 : 日常
  • FC2ブログ2 : ダーツ日記
の3つです。まずは、それぞれのBlogからBloggerへの移行方法を調査してみます。

ココログ

ココログのデータはMovableType形式でexportできるので、それをBloggerに取り込めばOKです。
  1. ココログのFAQを参照して、ココログのデータをexportします。(※写真はexportされず、ココログへのリンクがそのまま残ります。)
  2. MovableType2Blogger conversion utilityを使用してファイルを変換し、Bloggerの「設定 / その他 / ブログ ツール」を使って変換したデータをimportします。(※1MBまでのデータのみコンバートできるようです。)
  3. 写真ファイルをココログからダウンロードし、Bloggerの記事を修正して投稿します。
一部、文字化けなど(特にコメント)がありましたが、概ね問題なくimportできました!
モツウラさんのこちらのエントリーが参考になりました。ありがとうございます^^

FC2ブログ

FC2ブログも基本的にはココログと同様に、MovableType形式のexportデータを取り込めばいいようですが、一部追加の作業が必要になりそうです。
  1. FC2ブログの管理ツールから、記事をexportします。
  2. 文字コードを確認し、UTF-8以外であればUTF-8に変更して保存します。
  3. exportしたデータの日付部分を、24時間制のJST表記から、12時間制のUTCに変更します。私はPythonでScriptを書いて変換しました。もし機会があれば、公開します。
  4. 後は、ココログの2.以降と同じようにファイルを変換して、importするだけです。
    ※FC2ブログからexportしたデータだと、コメントが上手く反映されませんでした。どうやら、タグが微妙に違うらしい…。私は不要なので全部削除してしまいましたが、Convert scriptで修正できるようにしたいところです。
色々調べてみると、ブログの引越しって意外と面倒だという事が判明…。しばらくはBloggerで運用してみようと心に決めました。