2009年11月15日
これでさっき作成したモデル経由でDBにレコードが入った。
require 'net/http'
require 'rexml/document'
class ImportCalendar
@@logger = Logger.new(File.join(RAILS_ROOT, "log", "import.log"))
def self.logger
@@logger
end
def self.execute()
# @TODO
# バッチ処理なのでorderbyを最適なものに変更
result =
Net::HTTP.get('www.google.com',
'/calendar/feeds/' +
'fvijvohm91uifvd9hratehf65k@group.calendar.google.com/public/full/?' +
'max-results=1&futureevents=true&orderby=starttime&singleevents=true&sortorder=ascending&ctz=Asia/Tokyo')
doc = REXML::Document.new(result)
ent = CalendarEntry.new
doc.elements.each('feed/entry') do |node|
_id = node.elements['id'].text
_updated = node.elements['updated'].text
_title = node.elements['title'].text
_content = node.elements['content'].text
_link = node.elements['link'].attributes['href']
_starttime = node.elements['gd:when'].attributes['startTime']
_endtime = node.elements['gd:when'].attributes['endTime']
_where = node.elements['gd:where'].attributes['valueString']
ent.entry_id = _id
ent.updated = _updated
ent.title = _title
ent.content = _content
ent.link = _link
ent.starttime = _starttime
ent.endtime = _endtime
ent.save
end
end
end
Modelクラス側にちゃんとした処理を書いて、バッチ起動クラスから叩くようにすればOKかな。
壊れてしまったredmineを復旧させられないので、暫定的に作業メモ的なエントリ。
./script/generate model CalendarEntry entry_id:string updated:datetime title:string content:string link:string starttime:datetime endtime:datetime where:string
オリジナルデータをばっさりと切り捨てているけど、必要になったら後でカラムを追加すればいいさ。
2009年11月12日
http://code.google.com/p/appengine-jruby/wiki/UseGems の説明がアップデートされてないようで、
appcfg.rb gem install
を実行しても、
Sorry, the 'appcfg.rb gem' option is deprecated.
Simply update the 'Gemfile' and run 'appcfg.rb bundle .' instead.
と言われてしまう。
Getting Started にあるように、gemを使う時はGemfileに書けば良いみたい。
開発サーバーを起動(dev_appserver.rb を実行)しても、自動的に依存関係のあるgemをダウンロードしてきた。
2009年03月30日
土曜日にRBCのイケてるRails勉強会 に参加してきました。
毎回恒例の儀式(w)をYoutube にアップしましたよ、っと。
日帰りでの強行参加でしたが、現地スタッフの皆さんや参加していただいた皆様のおかげで大変楽しい一日を過ごすことができました。
ありがとうございました!
2009年02月17日
2008年12月に参加させてもらった Lenovo ideapad タッチ&トライブロガーイベント で触ったLenovo のIdeaPad 、モニター機が手元に届きました。
手元に到着したのは2/14ですけど、週明けの月曜日からまともに試用し始めました。
レビューの機会をご提供いただいたLenovo さん、アジャイルメディアネットワークス さん、どうもありがとうございます。
» 続きを読む
2009年02月02日
http://garnet.somethingnew2.com/ のタイムラインについて。9 hours あたりの続き。
データを取ってくる部分ですが、これまたご指摘の通り、遅いです。
一応認識してはいるのでMapsとの連携(geocodingをどうするべ?)の問題と一緒にやっつけることにしました。
開発環境でログを見ると
Processing IndexController#index (for 127.0.0.1 at 2009-02-02 16:43:52) [GET]
Session ID: BAh7BiIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNo
SGFzaHsABjoKQHVzZWR7AA==--c5984833427eeb83568c3d4f74de15cd21f92d58
Parameters: {"action"=>"index", "controller"=>"index"}
Rendering index/index
Completed in 0.00758 (131 reqs/sec) | Rendering: 0.00510 (67%) | DB: 0.00000 (0%) | 200 OK [http://localhost/]
Processing IndexController#data (for 127.0.0.1 at 2009-02-02 16:44:04) [GET]
Session ID: BAh7BiIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNo
SGFzaHsABjoKQHVzZWR7AA==--c5984833427eeb83568c3d4f74de15cd21f92d58
Parameters: {"action"=>"data", "controller"=>"index"}
www.google.com/calendar/feeds/fvijvohm91uifvd9hratehf65k@group.calendar.google.com/public/full/?max-results=200&futureevents=true&orderby=starttime&singleevents=true&sortorder=ascending&ctz=Asia/Tokyo
Completed in 7.07463 (0 reqs/sec) | Rendering: 0.00028 (0%) | DB: 0.00000 (0%) | 200 OK [http://localhost/index/data]
データを返す方のアクションはHTMLページ表示だけのアクションに比べて1,000倍近くとかの単位で遅いので(w)、方向性としてはrailsのキャッシュ機能を使ってgeocodeingした緯度経度データもろともキャッシュをWEBサーバーに保持させます。
どうせIT勉強会カレンダーの更新頻度はさほど高くないだろうから、TTLを長めに持たせればいいだろう。
JavaScriptでブラウザに表示する時間(ブラウザに「Working...」と表示されている時間)も縮める方法を考えなきゃいけないけど、exhibitの処理に完全に依存しちゃっているのでそっちは後回し。
2009年01月22日
Timeline powerd by IT勉強会カレンダーを晒してしまおう で晒したプラグインの簡単な使い方。
最新版のソースコードはrbc-incubatorのリポジトリにUPしてあるので、以下のコマンドで取得できます。
svn checkout http://rbc-incubator.googlecode.com/svn/yoozoosato/plugins/tags/release_20090122/google_calendar_to_exhibit_json/ ./google_calendar_to_exhibit_json
trunkにあるものは随時手を入れているので、おすすめはできないです。
開発環境 -> ローカルPC
本番環境 -> データセンターのサーバー
だったりすると、開発環境でプロキシ越えをしなきゃいけないと思うので、
$RAILS_ROOT/environments/development.rb にHTTP_PROXY_HOST、HTTP_PROXY_PORTを定数で指定してやって下さい。
こんな感じ。
いや、これは絶対もっとエレガントに回避する方法があるはず、と思っているんですが。。
誰か教えて下さい。お願いします。
install.rbを叩くといい感じにインストールしてくれるとか、ドキュメントに使い方の詳細が書いてあるとか、「ちゃんとしたプラグイン」にしたいのは山々なんですが。。。
そういうのももっと勉強したい・・・。
プラグインは $RAILS_ROOT/vendor/plugin/google_calendar_to_exhibit_json にディレクトリごと配置すれば普通に動くと思います。
コントローラーからの呼び出しはこんな感じ。
gcal2exhibitがハッシュの配列を引数に取るので、exhibit-json形式でデータを取得したいカレンダーのIDと、取得したい件数をそれぞれ
calendar_id 、
max_results っていうkeyに指定したハッシュを引数に渡して上げてください。複数のカレンダーを指定すると、そのカレンダーごとにmax_resultsで指定した件数分のデータを取得してきます。(合わせて200件になるのではない)
上記のようなメソッドを書くと
http://localhost:3000/hoge/data
というリクエストでJSONが取得できるはずなので、view側にこんなコードを書くとあとはExhibitがいい感じにしてくれます。
以上。
ご指摘、ご要望、ご質問などはコメントやtwit、メールなどでいつでも〜。
2009年01月21日
勉強会情報をエリアごとに分けてみた の続き。
いつまでもローカルホストで動かしててもしょうがないので、インターネット上に晒してみよう。(実は一週間前くらいからこっそり上がってたけどネ)
http://garnet.somethingnew2.com/
左の「検索」と「地域」で、IT勉強会カレンダーの膨大な情報を絞り込んでTimelineに表示できます。
ただそれだけです・・・・・。
えっと、例えば「Rails」で検索するとこんな感じ。
あ、今週末のRBC勉強会@福岡しかないんだ。。とさりげなく宣伝w
福岡近辺の方はぜひご参加下さい。って、オフィシャル告知ページが無いよ!w > RBCの誰か
【2009/01/23 追記】
公式Blog に告知エントリ がアップされていました
細かいことは実際にここ で動かしてみて適当に使って下さい。
機能は色々と追加していくつもりです。例えばブラウザのCookieにデフォルトのエリア(関東地方とか関西地方とか)を覚えさせていて、常にその辺のが表示されるようにするとか。
タイムラインで過去をたどれるようにするとか。
こんな感じに見れるとおもしろいんじゃね?的なものは、コメントとかtwitter とかでメッセージもらえるとヨロコビます。
テクニカルなことは続きを読むから。。
» 続きを読む
2009年01月06日
IT勉強会カレンダー をTimeline & Google Maps に。この辺 とかこの辺 の続き。
とりあえずJavaScriptでうだうだやっていると来年になっても実現できそうにないので(笑)、カレンダーのデータをサーバーでXML形式で取得し、ブラウザにJSONで送りつけるようにした。ブラウザ画面側はexhibit を使用。
なんとかエリアごとの分類とタイムライン上への表示くらいはできたよ。。。
ここに地図とかが張り付けばOKかな?
マップの場所はgd:whereの情報を頼るしかないので、正確にピンを立てられるかどうかは微妙ですが。
» 続きを読む
2008年11月04日
新規にプロジェクトをやることになったので、とりあえずプロジェクト管理ツールにRedmineを使ってみようと思ってDreamhostのコンパネからあれこれいじったんだけど、
いつまで経ってもこの画面から先に行かない。
困った。
サポートwiki に書いてある通りに作業しただけなのになぁ。。
# やっぱtracにしちゃおうかなぁ。。
【15:40ごろ追記】
一回全部無かった事にして、サブドメインを追加する所からもう一度やり直してみたら動いた。
原因は単純で、DreamHost + fast_cgiでRailsアプリを動かす時と同じ理屈でCGI実行ユーザーを別ユーザーにしてしまったため。すげーケアレスミス。
あながあったらはいりたい。
2008年08月02日
会社の開発環境(MacBookPro)のRailsを2.1.0に更新しようとして、Leopardのターミナルから
sudo gem update rails
したらとりあえずrails2.1.0にはなった。
が、Leopardに標準で着いているgem1.0.2は依存モジュールまではきっちりアップデートしてくれないようで(泣)、ActivesupportとかActiverecordも含めて全部手動で
sudo gem update activerecord
とかいう作業を延々と繰り返すハメになってしまった・・・・。
知識がないってのはホント痛いな。
割と最近CentOS5にソースからbuildして入れたgem1.2はupdate railsするだけでActiveSupportもActionMailerも全部更新されたから、Leopardのgemを更新しりゃぁいいんだ、と思ってhelpをみたら
Usage: gem update GEMNAME [GEMNAME ...] [options]
Options:
--system Update the RubyGems system software
こう書いてある。なるほどねー。
ということで早速実行。
» 続きを読む
2008年02月20日
先週くらいに、RBC で用意してもらったgoogle code のプロジェクトホスティング からSVNコミットログを抜き出し、twitterに投げるというのを作った。(see also this entry .)
「Twitterと連動させたよ!」ってMLにポストしたらメンバーからの評判も概ね良かった んですが、自分的にはtwittされる順番がおかしいってのだけがどうしても気に喰わなかった。
CustomFeed::SVNLog でreverse指定して引っ張ってくるだけだと、最新のコミットログがtwitterの一番上に表示されなかったんだよね。
Plagger 自体をdream host で動かしてるからそもそもサーバーのload averageも異常に高い時がある し、google code にもその都度アクセスするからcronの頻度をあんまり縮める訳にもいかず、さてどうしたものかと思っていたらPlaggerのEntryを逆順にするFilterを見つけた。
参考:(フィルタ本体)[sbm] del.icio.us to hatebu - nirvashの日記
参考:(利用例)cohtan blog: Bloggerの投稿をTwitterやJaikuで通知するPlaggerレシピ
参考:(利用例):嶋の徒然なる日々 with podcast : ●不満点が出てきた[Plaggerを使ってLivedoor BlogからMixiへ自動投稿を行う]
Filter::Reverseは
ここのページ にあるのをそのままコピペで使った。
package Plagger::Plugin::Filter::Reverse;
use strict;
use base qw( Plagger::Plugin );
sub register {
my($self, $context) = @_;
$context->register_hook(
$self,
'update.feed.fixup' => ¥&feed
);
}
sub feed {
my($self, $context, $args) = @_;
$context->log(debug => "reverse");
my @entries = $args->{feed}->entries;
@entries = reverse(@entries);
$args->{feed}->{entries} = ¥@entries;
}
1;
OK、ちゃんとやりたかったことが実現できていることが確認できた。
» 続きを読む
2008年02月19日
最近学習しはじめたRuby on Rails を使って、サービスを一個立ち上げることを考える。
codingが唯一の楽しみだからな(w
題材として、以前tom氏に共感してもらった 「地球にありがとうと言う」サービスはどうだろうか、と考えている。
ま、あくまでアイディアベースなんだけどさ。
イメージ的にはtwitter で「@appriciate_earth」みたいなことをやって(そんなアカウント無いはずだから、実際にやるのはやめてね)それをまとめるとか。
flickr やpicasa に投稿された美しい自然の画像とmushupしてみるとか・・・。それをgoogle map にピン打ってみたり。
おいしい千葉県産のほうれん草 について「こんなにおいしいほうれん草 をありがとう」みたいな書き込みを携帯からウPできる、とか。
そんな感じ。
どうだろう?
ご意見、募集中。はてぶ でもコメントでもTBでもskype でもtwitter でもmessengerでも何でもいいです。
# ただし直メール&電話だけは止めて下さい。
2008年02月11日
Subversion 上にあがっているRuby on Rails なプロジェクトをチェックアウトし、実行してみようとコンソールから
./script/server
してもserverに実行属性がついてないから
WEBrick サーバーが起動しない。
そういうものだ、と思って
chmod 755 ./script/server
するしかない、と。
$ chmod 755 ./script/server
$ ./script/server
=> Booting Mongrel (use 'script/server webrick' to force WEBrick)
=> Rails application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
** Ruby version is up-to-date; cgi_multipart_eof_fix was not loaded
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...
** Rails loaded.
** Loading any Rails specific GemPlugins
** Signals ready. TERM => stop. USR2 => restart. INT => stop (no restart).
** Rails signals registered. HUP => reload (without restart). It might not work well.
** Mongrel available at 0.0.0.0:3000
** Use CTRL-C to stop.
動いた。
2007年12月22日
2007年12月20日
Aptana にRails環境を入れると、
Unable to detect Ruby installとか言われる。エラーメッセージでぐぐる と答えが書いてあって、
RadRails - Unable to detect ruby install on OS X Leopard
これで一発解消。
ヒマだからてきとーに日本語訳しておく。
» 続きを読む