Amazon.co.jp ウィジェット

さむしんぐにゅぅ

さとうようぞう のBlog。気の向いた時に更新。サーバー落ちてたらまた来てちょ。
RonR
2009年11月15日

DBにレコード入った


これでさっき作成したモデル経由で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かな。

script/generateでカレンダーのモデル作成

壊れてしまった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日

GAEで使うgem

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日

IdeaPad S10e その1

2008年12月に参加させてもらったLenovo ideapad タッチ&トライブロガーイベントで触ったLenovoIdeaPad、モニター機が手元に届きました。

手元に到着したのは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日

google_calendar_to_exhibit_jsonプラグインの使い方

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_idmax_resultsっていうkeyに指定したハッシュを引数に渡して上げてください。複数のカレンダーを指定すると、そのカレンダーごとにmax_resultsで指定した件数分のデータを取得してきます。(合わせて200件になるのではない)

上記のようなメソッドを書くと
http://localhost:3000/hoge/data
というリクエストでJSONが取得できるはずなので、view側にこんなコードを書くとあとはExhibitがいい感じにしてくれます。



以上。
ご指摘、ご要望、ご質問などはコメントやtwit、メールなどでいつでも〜。
2009年01月21日

Timeline powerd by IT勉強会カレンダーを晒してしまおう

勉強会情報をエリアごとに分けてみたの続き。

いつまでもローカルホストで動かしててもしょうがないので、インターネット上に晒してみよう。(実は一週間前くらいからこっそり上がってたけどネ)

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日

DreamHost + Redmine

新規にプロジェクトをやることになったので、とりあえずプロジェクト管理ツールにRedmineを使ってみようと思ってDreamhostのコンパネからあれこれいじったんだけど、

いつまで経ってもこの画面から先に行かない。
困った。

サポートwikiに書いてある通りに作業しただけなのになぁ。。

# やっぱtracにしちゃおうかなぁ。。


【15:40ごろ追記】
一回全部無かった事にして、サブドメインを追加する所からもう一度やり直してみたら動いた。

原因は単純で、DreamHost + fast_cgiでRailsアプリを動かす時と同じ理屈でCGI実行ユーザーを別ユーザーにしてしまったため。すげーケアレスミス。

あながあったらはいりたい。

2008年08月02日

updating Leopard pre-installed rubygem

会社の開発環境(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日

Plaggerでgoogle code hosting SVN -> twitterするレシピを修正

先週くらいに、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、ちゃんとやりたかったことが実現できていることが確認できた。

20080220.png
» 続きを読む
2008年02月19日

地球に感謝を伝えるサービス

最近学習しはじめたRuby on Railsを使って、サービスを一個立ち上げることを考える。
codingが唯一の楽しみだからな(w

題材として、以前tom氏に共感してもらった「地球にありがとうと言う」サービスはどうだろうか、と考えている。
ま、あくまでアイディアベースなんだけどさ。

イメージ的にはtwitterで「@appriciate_earth」みたいなことをやって(そんなアカウント無いはずだから、実際にやるのはやめてね)それをまとめるとか。
flickrpicasaに投稿された美しい自然の画像とmushupしてみるとか・・・。それをgoogle mapにピン打ってみたり。
おいしい千葉県産のほうれん草について「こんなにおいしいほうれん草をありがとう」みたいな書き込みを携帯からウPできる、とか。

そんな感じ。

どうだろう?

ご意見、募集中。はてぶでもコメントでもTBでもskypeでもtwitterでもmessengerでも何でもいいです。
# ただし直メール&電話だけは止めて下さい。

2008年02月11日

【自分メモ】RonRなプロジェクトをSubversionからcheckoutすると

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日

えんじん

今からRailsの勉強会に参加してきます。

Rubyビジネス・コモンズ - 第一回イケテルRails勉強会@東京

円陣組んできマース!

2007年12月20日

LeopardでRailsしようとして'Unable to detect ruby install'

AptanaにRails環境を入れると、

Unable to detect Ruby installとか言われる。エラーメッセージでぐぐると答えが書いてあって、

RadRails - Unable to detect ruby install on OS X Leopard

これで一発解消。

ヒマだからてきとーに日本語訳しておく。

» 続きを読む
Made with dreamweaver Made with fireworks Powered by Movable Type 3.34 Powered by Wandering Wind PC・周辺機器特集! フィードメーター - さむしんぐにゅぅ
Copyright : [Articles] (C) さむしんぐにゅぅ All Rights Reserved.
[Comments/Trackbacks] ... Authors of those have rights.