2009年10月26日(月)
mhc2gcal 0.4.0
だいぶ前になりますが,mhc2gcalのソース管理をgithubに移行するとともに,0.4.0をリリースしていました.
修正点は非常に些細なことですが,以下の通りです.
- 設定ファイルを指定しなかった際に参照するYAMLファイルの名前を変更
なお,gcalapi 0.1.2に対してこのpatchを適用しないとエラーが出るんじゃないかと思います.次期リリースにはこのpatchも含めるようにするべきなのかな?
0.5.0(予定)では,設定ファイル内のパスワードをBase64でエンコードするようにします.やればすぐ完了すると思いますが,ちょっとお待ちください・・・.
2009年03月31日(火)
gcalapi 0.1.2 への patch
Google Calendar の Feed に新たな名前空間が追加されたためか,自分が使っている mhc2gcal がエラーを吐くようになっていた.
mhc2gcal で使っている gcalapi の calendar.rb に以下のパッチをあてて動くようになった.
--- calendar.rb.0.1.2 2007-02-19 00:08:31.000000000 +0900 +++ calendar.rb 2009-03-30 10:37:47.000000000 +0900 @@ -60,6 +60,10 @@ REXML::Document.new(ret.body).root.elements.each("entry"){}.map do |elem| elem.attributes["xmlns:gCal"] = "http://schemas.google.com/gCal/2005" elem.attributes["xmlns:gd"] = "http://schemas.google.com/g/2005" + elem.attributes["xmlns:openSearch"] = "http://a9.com/-/spec/opensearchrss/1.0/" + elem.attributes["xmlns:gml"] = "http://www.opengis.net/gml" + elem.attributes["xmlns:georss"] = "http://www.georss.org/georss" + elem.attributes["xmlns:batch"] = "http://schemas.google.com/gdata/batch" elem.attributes["xmlns"] = "http://www.w3.org/2005/Atom" entry = Event.new entry.srv = @srv
gcalapi の作者さんにも送っておこう.
2008年08月19日(火)
mhc2gcal 0.3.0 リリース
久々に mhc2gcal をアップデートしました.主な変更点は以下の通り.
- 指定された期間内の Google Calendar と MHC のイベントを比較するようにし,比較した結果
- 両方に存在するイベントに関しては,何もしない
- Google Calendar のみに存在するイベントに関しては,設定ファイルの gcal_mode の値に基づいて消すか残すかの処理を行う
- MHC のみに存在するイベントに関しては,Google Calendar に追加する処理を行う
- イベントのタイトルに場所を含めるのをやめた
といったところです.
今までは実行するたびに,Google Calendar のイベントを全部消して,MHC のイベントを新たに作成する,という流れになっていたので無駄が多かったのですが,今回は無駄が少なくなったと思います.
最新版のダウンドーロおよび使い方はこちらをご参照ください.
2009年10月26日追記:最新版の使い方はこちらをご参照ください.
2008年03月27日(木)
mhc2gcal 0.2.1 を gcalapi 0.1.1 で動作確認
gcalapi 0.1.1 がリリースされていたので,導入して試してみたところ,問題なく動作したようです.これであのパッチも不要になりますた.
2008年03月08日(土)
mhc2gcal 0.2.1 リリース
0.2.0 リリース後,白井さんに作っていただいた patch を適用したものを,新たに 0.2.1 としてリリースしました.白井さん,ありがとうございました!
2009年10月26日追記:最新版の使い方はこちらをご参照ください.
2008年02月19日(火)
Patch for gcalapi 0.1.0 : イベントが削除できない問題対策
mhc2gcal の 0.2.0 をリリースした矢先に,イベントが削除できないというコメントをいただき,当方でも確認してみたところ削除できない模様.ということで調査.
Google Calendar との接続に利用させてもらっている gcalapi では,イベントを削除する際に DELETE ではなく POST を利用している模様.この手法自体は Firewall などで DELETE が使えない環境向けに用意されている手法らしいので問題なし.
問題は POST を呼び出す do_post メソッドを呼ぶ際に BODY として "DELETE uri.path" という文字列が指定されている部分.この部分は,本来 DELETE を使うときと同様,何も入れなくていいのではなかろうか?と推測.試しに空っぽの文字列(という表現であっているのか?)を入れてみたところ,ビンゴ.見事動作しました.
ということで,イベントを削除するメソッドを定義している service_base.rb に以下のパッチを適用することで対処,動くようにはなると思います.(念のため,元の部分はコメントアウトになってます.弱気?)
*** service_base.rb.0.1.0 2008-01-03 16:49:28.000000000 +0900 --- service_base.rb 2008-02-18 23:00:33.000000000 +0900 *************** *** 98,104 **** uri = URI.parse(feed) res = do_post(uri, {"X-HTTP-Method-Override" => "DELETE"}, ! "DELETE " + uri.path) logger.info("-- delete en (#{res.message}) --") if logger res end --- 98,105 ---- uri = URI.parse(feed) res = do_post(uri, {"X-HTTP-Method-Override" => "DELETE"}, ! "") ! # "DELETE " + uri.path) logger.info("-- delete en (#{res.message}) --") if logger res end
ちなみに,今まで動いていたものが何故急に動かなくなったのかは不明.昔は許可していた仕様が,変更になったのかな?今回のように DELETE の代替として POST を使っているのであれば,その BODY が空欄であるのは至極自然な気はする.
2009年10月26日追記:最新版の使い方はこちらをご参照ください.
2008年02月15日(金)
mhc2gcal 0.2.0 リリース
リリースしてからすっかり放置プレイ状態の mhc2gcal ですが,ご要望いただいていた proxy 対応と verbose モード,およびご提案いただいていた description の有無を選択できるようにしたものを,バージョン 0.2.0 として作成しました.
2008年08月19日追記:最新版の使い方はこちらをご参照ください.
2009年10月26日追記:最新版の使い方はこちらをご参照ください.
2007年05月08日(火)
mhc2gcal : イベント削除時のバグ修正
先月作成した mhc2gcal ですが,指定した期間のイベントを Google Calendar から一度削除するときの挙動がおかしかったので修正してみた.修正したファイルはこちら.
おかしかった挙動は,たとえば2007年05月08日から2007年05月09日までを指定して実行すると,期間外であるはずの前日(2007年05月07日)の全日イベントを削除してしまっていた.まだ Google Calendar の API を理解し切れていないところもあるのだが,試行錯誤の結果現在のバージョンであれば,前日の全日イベントを削除しないようになった.
ちなみにイベント削除機能は,スクリプト内の GCAL_DEL の値を true にしていない限り関係ありません.あしからず.
あと,ときどきエラーが出て止まってしまうことがあるのだが原因が掴めていない.ほとんどの場合,もう一度実行するとエラーが出ずに正常終了するのだが・・・.なんじゃろう.ちょっと追っている余裕はないので,とりあえず放置.
最後になりましたが,毎度くどいようですが,このスクリプトを使う場合は自己責任でお願いします...(くどい).
2009年10月26日追記:最新版の使い方はこちらをご参照ください.
2007年04月13日(金)
mhc2gcal : MHC のスケジュールを Google Calendar にアップロード
スケジュールの共有に Google Calendar を使うことになり,当初は MHC で管理しているスケジュール情報を mhc2ical を使って iCal 形式のファイルに出力し,ブラウザからインポート作業をしていたのだが,なんとも面倒なので自動化することにした.
自動化といっても,出力したファイルをインポートする作業を,ブラウザをエミュレートするライブラリなどで自動化するだけではぬるい(というか,それはそれで自分の力量ではすぐにできるわけではなさそうだが)と考え,思い切って Google Calendar Data API を使って MHC のスケジュールを Google Calendar に直接登録することを企んだ.
MHC は Ruby からいろいろといじれるようにライブラリが用意されている.そこで Google Calendar Data API も Ruby で使うことができれば,一気に解決するのではないかと考え,検索してみたところ RubyForge に gcalapi を発見.早速 gem でインストール.これで環境は整った.
で,完成したスクリプトが,その名も mhc2gcal という安直なネーミング.名前が mhc2ical からインスパイアされており,またプログラムもベースにさせていただいた.また gcalapi の example ディレクトリに入っていた ol2gcal も参考にさせていただいた.
2008年08月19日追記:最新版の使い方はこちらをご参照ください.
2009年10月26日追記:最新版の使い方はこちらをご参照ください.