2009年12月25日金曜日

TwiVox | Twitter × Amazon | Twitterを使ってお気に入りの本やCDを管理できるサイトを作りました

Twitterを利用したWebサービスはいろいろありますが、Amazonと連携したサービスは意外とないようなので作ってみました。


TwiVox
http://jp.twivox.com


機能はごくごく単純で、TwiVoxからTwitterに投稿された本やCDのつぶやきを、ユーザーごとアイテムごとにまとめます。



使い方はいたって簡単です。

1. 自分の好きなアイテムを検索

2. つぶやく!

以上です。


TwiVox経由で投稿されたつぶやきはTwiVox内でも公開されます。
自分のつぶやき一覧は下記のURLから確認できます。

http://jp.twivox.com/u/あなたのTwitterユーザー名




Twitterのアカウントを持っている方は新しくユーザー登録をする必要はありません。
お持ちのTwitterアカウントで認証後すぐにご利用いただけます。


基本的にできることはこれだけですが、本やCDのつぶやきを一箇所にまとめたい!という時にお使いください。


Amazonを見ながらつぶやきたいという方向けにツールを用意しています。

Firefox向け (Jetpack)
TwiVox :: Jetpack

Google Chrome向け (extension)
Google Chrome Extensions: TwiVox

2009年12月13日日曜日

Google Chromeがとってもイイ感じ

これまでずっとFirefoxをメインブラウザとして利用してきましたが、Google Chromeがイイ感じなので完全に乗り換えるのも時間の問題になりそうです。


理由はなんといっても「軽さ」です。


とにかくページ描画がおそろしく速いです。

Webサイトを閲覧していて重い/軽いと感じるの原因のひとつに「Javascriptの処理速度」が挙げられますが、Chromeはこの点で競合のブラウザを圧倒しています。

グーグル「Chrome」、JavaScriptベンチマークで競合ブラウザを圧倒
http://japan.cnet.com/marketing/story/0,3800080523,20379766,00.htm


この処理速度のデモサイトもGoogleは用意しています。
Chrome Experiments
http://www.chromeexperiments.com/
3DアニメーションをJavascriptで描画するコンテンツなど、ブラウザごとに比べてみれば処理速度の違いを如実に体感できます。


それに、これまたすごいのが、起動の速さ

Firefoxの起動時間とくらべると段違いです。
急いでいる朝などは特にChromeの起ち上がりの速さは重宝します。



また、多くの人が感じているFirefoxの不満をChromeは解消しています。

Firefoxは長時間使うと極端に重くなることがあります。

Firefoxが重いのでなんとかしたい
http://okwave.jp/qa4736138.html?ans_count_asc=20

重いFirefoxをなんとかして速くしたい
http://c-brains.jp/blog/wsg/09/07/30-201110.php

Chromeは長時間起ち上げても重くなることがありません。
ずっと軽快。

しかも、タブごとに別プロセスで動いているので、あるタブで極端に重い処理をしていても他のタブでは影響を受けません。


とにかく、Chromeは快適なブラウジングのために欠かせないツールです。



じゃあ、なんで未だにFirefox使っているの?ってことなのですが

それはやっぱりFirefoxのアドオン(拡張機能)の存在です。


日々のブラウジングやWebアプリの開発などで、Firefoxアドオンは欠かせない存在です。
たぶんほとんどのFirefoxユーザーも同じでしょう。


しかし


この点でもChromeにぬかりはありません。
予告通り着々と準備はすすめられています。

安定版ではまだですが、開発版ではExtension(拡張機能)を使うことが可能になっています


つい先日、ついにエクステンションのポータルサイトがオープンしました。

Google Chrome Extensions
https://chrome.google.com/extensions/


すでに数百個のエクステンションが登録されているようですが、これから爆発的に増えるのではないでしょうか。
現在Firefoxで使っているアドオンをChromeでも探せるようになるのも時間の問題でしょう。

そうなったら、もうFirefoxにこだわる理由がなにひとつなくなりますね。




Google Chromeのおすすめエクステンション17本+
http://jp.listcamp.com/list/aghsaXN0Y2FtcHIMCxIETGlzdBjLtgUM/

2009年12月10日木曜日

Windowsにgettextをインストールする

Djangoで国際化するのはけっこう簡単なのですが、Windowsでやろうとしたらつまづいたところがあったのでメモしておきます。


何も知らず、おもむろにコマンドプロントで以下のコマンドを叩いたらエラーが返ってきました。

django-admin.py makemessages -l ja


どうもgettextがないよ、ということらしいです。


マニュアルを読んだらそのものずばりの対処法がありました。

Django | Internationalization
http://docs.djangoproject.com/en/dev/topics/i18n/#gettext-on-windows



1. 必要なライブラリをインストール

とりあえず フォルダを作る。
C:\Program Files\gettext-utils\bin

http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/
このサイトから以下のライブラリをダウンロード

gettext-runtime-X.zip
gettext-tools-X.zip
(Xはバージョン番号)

解凍するとそれぞれbinフォルダがあるので、その中の全てのファイルをさきほど作ったC:\Program Files\gettext-utils\binにつっこむ。


2. Pathを通す
(以下Windows XPの場合)

マイ コンピュータ右クリック => プロパティ
「システムのプロパティ」 =>詳細設定 => 「環境変数」
「システム環境変数」の Path を選択 => 「編集」
「変数値」の一番末尾に ;C:\Program Files\gettext-utils\bin


以上です。
コマンドプロントが起ち上がっている場合は一度閉じて、もう一度起ちあげてください。

2009年12月6日日曜日

Rubyで変数を動的に取得/設定する方法

Rubyで変数の名前を動的に設定したり取得するやり方をまとめてみました。


ローカル変数

ローカル変数は専用のリフレクションメソッドはないようです。

かわりにevalメソッドを使って実現できます。

varname = "foo"
x = "ABC"
eval("#{varname} = x") # foo に ABC をセット


インスタンス変数

インスタンス変数 (@varname)を動的に設定/取得する場合はinstance_variable_*メソッドが使えます。
class Foo
def initialize
@foo = 1
end
end

obj = Foo.new
p obj.instance_variable_get("@foo") # => 1
p obj.instance_variable_get(:@foo) # => 1
p obj.instance_variable_set(:@foo, 2) # => 2
p obj.instance_variable_get(:@foo) # => 2
p obj.instance_variable_get(:@bar) # => nil
p obj.instance_variable_set(:@bar, 100) # => 100
p obj.instance_variable_set("@#{baz}", 500) # => 500
p obj.instance_variable_get("@baz") # => 500

例えばこんな使い方...
class Foo
attr_accessor :foo, :bar, :baz

def initialize(opts = {})
opts.each {|k, v| instance_variable_set("@#{k}", v) }
end
end

obj = Foo.new({:foo => 1, :bar => 5, :baz => 10})
p obj.foo # => 1
p obj.bar # => 5
p obj.baz # => 10




クラス変数

クラス変数 (@@varname)にもclass_variable_*メソッドがあります。
(ただし、Ruby1.8ではprivateメソッドです!)
class Fred
@@foo = 1
@@foo = 5
@@foo = 99
end

def Fred.get_var(varname)
class_variable_get("@@#{varname}")
end

Fred.get_var(:foo) # => 1

Ruby1.9では上のクラスに対して次のように書ける (publicだから)
Fred.class_variable_get(:foo)

Ruby1.8ではclass_evalを使って同じようなことを実現できる。
Fred.class_eval { class_variable_get(:foo) }



参考:

Module - Ruby リファレンスマニュアル
http://www.ruby-lang.org/ja/man/html/Module.html#class_variables

Object - Rubyリファレンスマニュアル
http://www.ruby-lang.org/ja/man/html/Object.html


2009年12月1日火曜日

Androidのアプリを探す時に便利なサイトまとめ

Googleが主催するAndroidのアプリコンテスト Android Developer Challenge の第2回目の勝者が決定したようですね。

そういうわけで、というわけではないのですが
Androidアプリを探すのに便利そうなサイトをまとめてみました。
(Android端末を持っていないけれど、来るべき日のために!)

Androidのアプリを探す時に便利なサイト | ListCamp
http://jp.listcamp.com/list/aghsaXN0Y2FtcHIMCxIETGlzdBiTlwUM/