2011年11月7日

Google+でShareしたブックマークをevernoteに転送できない(調査中)

賛否両論のGoogle+ですが、Readerを使ってきた身としては、新機能がけっこうつらいです。
共有機能がなくなり、共有した記事をevernoteに転送してくれるツールなどが使えなくなってしまいました。

どうすればいいのかなあと考え中です。
とりあえず、一般公開(Public)にした記事のRSSは、http://plu.sr/ユーザIDで取得できます。
で、doRubyさんの記事を参考にして、RubyでRSSを取得することもできます。
後は、これを一個ずつ取り出して、evernoteの登録アドレスに転送すれば、とりあえずの用途は満たします。
その際、登録したノートブック名に@をつけたものをタイトルに追加しておくと、指定したノートブックにデータを登録できます(出所)。

tmail使えば、タイトルの編集や送信も簡単だから、やろうと思えばできますね。
あと、気になっているのは、できればRSSから全文を取得したいということ。
さきほどのmatuダイアリーさんの記事では、instapaperを使えば大丈夫とのことですが、plu.srで取得したRSSのリンク先は、Google+のRSSなんですよね。
こちらは、RSSリーダーでもともと取得した記事そのものなので、サイトが出力した部分しか含まれていません。

ということは、RSSを取得して、そのリンク先であるGoogle+から、さらにリンク先を見つけてInstapaperに渡せばいいということ。
ソースを見てみると・・・何これ?
こんなシンプルなページが、なんでこんなにコードが。。。
どうも、class="B-u-Y"の次にあるリンクを探せば大丈夫みたい。

あとはコード書くだけか。。。
誰かやってくれそうだけどなあ。

2011年10月13日

mtgNotesの開発

Rails3.1を使ってアプリケーションを開発しています。
mtgNotesって暫定的な名前をつけていますが、もう少し名前は考えたいところです。

このツール、自分の周りの人とコラボでいろんなことをやる人に使ってもらいたいなと思って作成しています。
というより、僕自身がそういう感じなので、その記録をとるツールがほしいと思って製作しています。
ただ、コラボっていいながら、このツール自体は個人で使うものになっています。
僕が、どういうグループと何をしたのかを記録していくものです。

プロジェクトに着目するツールというのはけっこうありますが、参加者は常に固定していたりします。
プロジェクトに起こった出来事(活動記録)ごとに、欠席している人もいるはずです。
その、「あのときにはいたけど、このときにはいなかった」ということは、記録できた方がいいはず。
特定の人がいなかったときに決まったことって、後で問題になること、けっこうあります。

そして、(まだ実装してないけど)人側から検索することも可能です。
そうすると、所属プロジェクトに関わりなく、この人と何をしたのかを見ることができます。
もちろんその人の個人情報なんかも収録しておけばよいでしょう。

ある程度データがたまれば、「Aさんに関する活動記録」というレポートと「mというプロジェクトの活動記録」というレポートを作成することができます。
どちらもさまざまな活動をしていると、後で見返すと便利なものになるはずです。

技術的には大したことないプログラムではあるけれど、僕自身のニーズはぴったり満たしている感じで、気に入って開発しています。
開発を手伝ってくださる方も募集しています。
興味がある方は連絡ください。

そうそう、テストプログラムのサイトはこちらです。
http://mtgnote.ecofirm.com/

2011年10月11日

counter_cache (Rails3.1)のspec

Railsのアソシエーションの数を自動的に数えてくれるというしくみ=counter_cacheで、なんだか悩みました。
今でもよく分からない状態。

どうやってテストすればいいんだろう。。。

プロジェクトを適当に二つ作って、最初の方にメンバーを追加する、と。
そうすると、p.members_countが一つ減っていないといけないと思うんだけど、p.members_countはもともとゼロなんだそうです。


it "increment counter_cache when project has changed" do
p = Factory(:project)
p2 = Factory(:project)
m = p.members.create(:name => 'abc')
lambda do
put :update, :id => m, :project_id => p2
end.should change(@, :issues_count).by(-1)
end


ちなみに、counter_cacheのアップデート部分はこんな感じが今のところちゃんと動きます。
update_countersは使えなくなったのか、なんだか挙動不審。
increment/decrement_counterが中でupdate_countersを呼んでいるので、この方が正しい使い方のようです。
belongs_to :project, :counter_cache => true
before_save :update_counters

private
def update_counters
new_project = Project.find self.project_id
Project.increment_counter(:issues_count, new_project)
if self.project_id_was.present?
old_project = Project.find self.project_id_was
Project.decrement_counter(:issues_count, old_project)
end
end

2011年9月29日

UbuntuでRails3.1

Rails3.1をCapistranoでデプロイしようとして、けっこうはまった。
そもそも、3.0時代にデプロイしておけばよかったのだが、どうせデプロイするなら、環境も最新にした方が、後でめんどうがないだろうとRailsをこの際アップデートしておいた。
みんなも大好きなRailsCastsを見ながら、一時停止を繰り返しながら、AsciiCastsの方からコピペして、設定していく。
ほんとは、AsciiCastsだけでじゅうぶんなんだけど、そこはまあ、ライブ感があって楽しいので、ビデオを見ながらやっていく。

さて、いろいろやって、cap deploy:updateまでこぎつけた。
ここで出る、javascriptのランタイムがないというエラーは、こちらをはじめとして、あちこちで報告されている。
で、Gemfileに以下を追記。
gem 'execjs'
gem 'therubyracer'


これで動くかと思えば、そうでもない、と。
どういう環境だと、これで解決するのかな。
うちは、Ubuntu10.10なんですが、うまく動きません。

なるほど、ランタイムがないのか。therubyracerは違うの?と思いつつnode.jsを入れようと思い立つ。
とりあえず、適当にやってみる。
apt-get install node


これだと、
axconfig: port 1 not active

こんなエラーが出る。
なんでやねん!

こちらでは、「それは、node.jsではなく、nodeをインストールしたからだ。ずぼらせずに、gitでとってきてコンパイル・インストールしろ。」と書かれている。
どうやら、nodeというパッケージは全然関係ないみたい。


git clone https://github.com/joyent/node.git
cd node && ./configure && make
make test
make install

makeでエラーが出るけど、「無視されました」と出て、コンパイル成功。
testでもエラーが出るけど、無視してインストール。
(いつか怖いことが起きそうな気がする)


ここで再びエラー。

今度は、currentがディレクトリなので削除できないよ!ってやつ。
そりゃあ、rm -fでは削除できないでしょ?
勝手にディレクトリ作って、削除できないようもないけどなあ。。。
そういえば、このディレクトリ(current/public)は、apacheをちゃんと設定できているかのテストのために作成したものだった。

そこで、このディレクトリを削除すると、ついにデプロイが完了。

というわけで、もうちょっとしたら、アプリ、超αですが、リリースできそうです。

2011年9月28日

Rails3.1で開発中

以前から開発を進めていたツールの開発が、ようやく一段落した。
だいたい「自分では使える」ようになった感じ。
これから、他の人も使えるように、デザインをちゃんとしたり、操作の動線を考えたりする必要がある。

で、今日はherokuを設定してみたのだが、二点、はまった。

1.gemでpostgresqlを要求される。
 Gemfileに'pg'を追加したらエラーがなくなった

2.fakerがエラーを出す。
rake aborted!
no such file to load -- faker

こちらは、ちょうど同じことを聞いている人がいたので、このとおりに、sample_data.rakeからrequire'faker'を削除したら問題なくなった。

herokuはproduction環境だから、fakerなんて関係なのになって思うけど、なんでなんでしょうね。