Mac で pow を使ってローカルで RailsGuides を動かすメモ

pow 自体簡単なのですが、更に pow を楽にする syntax sugar である powder というのが便利です。

$ powder -h
  powder help [TASK]  # Describe available tasks or one specific task
  powder install      # Installs pow
  powder link         # Link a pow
  powder list         # List current pows
  powder log          # Tails the Pow log
  powder open         # Open a pow in the browser
  powder remove       # Remove a pow
  powder restart      # Restart current pow
  powder uninstall    # Uninstalls pow
  powder version      # Shows the version
$ gem install powder
$ powder install # pow をインストール

$ git clone git@github.com:lifo/docrails.git
$ cd docrails/railties/guides
$ vi Gemfile
source :rubygems
gem 'RedCloth', '~> 4.2' # to deal with Textile
$ bundle install
$ ruby rails_guides.rb # で output というディレクトリに html ファイルが生成される

$ ln -s ./output ./public # config.ru がなくても public ファイルがあれば pow は静的なファイルを扱うことが可能
$ powder # Link the current dir to ~/.pow/guides

http://guides.dev/ でアクセスが可能になります。静的なファイルもこんなに簡単だと他にも使えそうです。

pathogen.vim を使ってみた

#生存戦略 、それは - subtech
http://www.allenwei.cn/tips-using-git-submodule-keep-your-plugin-up-to-date/


こちらを参考にさせて頂きながら、vimプラグインを pathogen.vim での管理に変えてみました。
git submodule で管理できるというのはすばらしいですね!

$ mkdir -p .vim/autoload
$ mkdir -p .vim/bundle
# pathogen 自体も submodule で管理
$ git submodule add git://github.com/tpope/vim-pathogen.git .vim/bundle/pathogen
$ ln -s ../bundle/pathogen/autoload/pathogen.vim ~/.vim/autoload/pathogen.vim # 相対パスとしてリンクを貼る
$ git submodule add https://github.com/Shougo/unite.vim.git .vim/bundle/unite # いれたいプラグインを追加する


.vimrc に追記

call pathogen#runtime_append_all_bundles()
call pathogen#helptags()


あとはそれぞれ git submodule していく感じです。
よくわからないのですが、vim.org にあるファイルは github に mirror され始めていて?
GitHub - vim-scripts/javascript.vim: JavaScript with ASP.NET support
こんな感じで vim-scripts も committer になっているものがそれぞれのプラグインの公式のリポジトリのようです。
※ 公式のリポジトリを探す場合は↓のプラグインタイトル (この場合だと The NERD Commenter) を github で検索すると見つかりやすかったです。(野良リポジトリが多いため)


ということで .vim 以下は最近使ってなかったプラグインとかも捨ててすっきりしました。
config/.vim at master · banyan/config · GitHub

「ビジネスで一番、大切なこと」を読んだ

ビジネスで一番、大切なこと 消費者のこころを学ぶ授業

ビジネスで一番、大切なこと 消費者のこころを学ぶ授業


原題は「Different」。邦題の「ビジネスで一番、大切なこと」というのは
よくある自己啓発のようなタイトルで、これは失敗だと思う。
著者のヤンミ・ムンさんはハーバード・ビジネススクールの教授とのこと。
この本はビジネス書というよりはエッセイのほうが合う。


内容はとても面白かった。


パッと検索して書評を見る限り、概ね評価は高いけれど、
よくある話、プラクティカルではないというような書評も多い。
(著者自身がハウトゥー本ではないことは明言している)
確かに出てくるケーススタディは、既に語られた感もあるブランドが多い。
(アップル、グーグル、ハーレー、MINIクーパー、IKEA、etc)


じゃあ、なぜ僕は面白いと思ったのかをちょっと考えてみる。


長いけど、ちょっと引用してみると

多くのカテゴリーで差別化が難しくなっているのは、
私たちが本来の競争ではない「競争」に入り込んでいるからだ。
企業は特殊な模倣の達人となり、異質的同質性、いわば異種のクローンで
あふれる製品カテゴリーを作り出している。差別化どころか模倣である。
ところが、この模倣は「差別化」という専門用語の仮面を被り、マネジャーの頭の中で生き続ける。
実際には、王様は裸で、消費者はそのことに気づいているのだが。

この傾向はどのカテゴリーでも見られる。10年前、ボルボは実用性と安全性で
知られており、アウディはスタイリッシュさで人気があった。最近では、アウディ
安全性テストでボルボをしのぎ、ボルボの広告はスマートな走りを演出している。
(略)
消費者側にも多少の責任はある。ボルボのドライバーに改善してほしい点を聞けば、
安全性には満足しているが、もう少しセクシーさがほしいと答えるだろう。
アウディのドライバーに同じことを聞いてみれば、逆の答えが出てくるはずだ。
(略)
こうしてアウディのように走るボルボボルボのように走るアウディが誕生する。

1年ほど前、テレビを買いに行ったときのこと。(略)最初のうちは、店員にソニーへの
愛着を伝え、踏みとどまろうとしたが、いつのまにか、ブランドだけで決めるほどナイーブで
なくてもいいという店員(言うまでもなく、知識豊富な"カテゴリー通")の穏やかな説得を
受け入れていた。結局、私はもっとも現実的な選択をした。
この瞬間、また一人の消費者が、またひとつのカテゴリーで、ブランドにこだわる愛好家から、
こだわらない消費者へと、境界線を越えた。


最後の引用は、特に既視感があって、僕は身の回りの多くのもので
これに似た選択を行っている。洗剤や歯磨き粉の違いはもはや分からなくて、
単純に近所で一番安いものを買ってたりする。
もともと僕はモノにはあまりこだわりがないほうだけれど、
企業は差別化を謳って、広告を出して、にも関わらず消費者から見ると
同質化していって、違いが見えない、「知らないし、興味もない」状態に
なっていることにとても共感ができた。


「カテゴリー内の競争が激化するにつれて、競い合う企業は群れと化して」
ある臨界点を超えるとその違いはもはや消費者からは分からず、しかし
「渋滞に巻き込まれたドライバー」のようにこのダイナミクスに抗うことは非常に難しくなる。


でこの状態を打破するために、著者はケーススタディとして
アップル、グーグル、ハーレー、MINIクーパー、IKEA などを例としながら語る。


僕はこの話を読みながら Google App Engine のことを思いました。
Google App Engine は色んなことが特殊だけれど、
例えば、ひとつの例として GAE では全文検索ができない。(有料版はできるらしい)
現在はライブラリ(実用レベルはまだなさそう)を使ったり、
自分で同等の機能を実装する必要があります。
全文検索ができない、と分かった時に考えたことはよくこの仕様で Go サインが出たな、ということです。
Google の中の人達からしたら、「当たり前でしょ、スケーラビリティ考えたらそうなるでしょ」という
話なのかもしれないですが、群れの中に無意識でも属す会社の会議とかで同じことを言ったら、
必ず誰かが大声を出して、「そんなもの提供できるわけないでしょう」みたいになると思う。
そもそも全文検索云々以前に Google App Engine が目指しているものが異端すぎるけれど、
他が提供している何か、とか全く考えてない、
著者が言う異質的同質性というものを踏まえながら考えると、
そのことがすごいな、と改めて思いました。


耳が痛い話でもあり、また共感もとてもできる話でもありました。
でも結局なんで面白いと思ったかは、この本が普遍的に面白いから、というよりかは
ちょうど自分の抱えている問題にリンクしたからだと思いました。
(本の面白さとは常にそういうものだと思いますが :)

Mizuho Auto Pass - GreaseMonkey for みずほ銀行

みずほ銀行では振込み、振替えの時などに第2暗証番号というものが必要で、
第2暗証番号(6桁の数字)の指定された位置の数字を入力する必要があるのですが、
それを毎回入力するのが大変なのでグリモンを作ってみました。

jQuery $.proxy のメモ

いつも忘れるのでこっちにも書いておく。

// 1, $.proxy を使わない

var obj = {
  name: "John",
  test: function() {
    console.log(this); // => <input class="buttons" type="button" value="buttons_1"> (this は bind された .buttons の element)
    alert(this.name); // => ''
  }
};

$(".buttons").click(obj.test);

// 2, $.proxy を使う

var obj = {
  name: "John",
  test: function() {
    console.log(this); // => Object name=John (this は $.proxy で渡した Object 自身)
    alert(this.name); // => 'John'
  }
};

$(".buttons").click($.proxy(obj, 'test'));

// 3, $.proxy を使い bind された要素も取得

var obj = {
  name: "John",
  test: function(event) {
    console.log(event.currentTarget); // => <input class="buttons" type="button" value="buttons_1"> (event.currentTarget として bind された要素を取得する)
    console.log(this); // => Object name=John (this は $.proxy で渡した Object 自身)
    $(event.currentTarget).unbind("click", obj.test);
  }
};

$(".buttons").click($.proxy(obj, 'test'));

Legal Sounds Download Helper - GreaseMonkey for legalsounds.com

全然よく知らないのですが、legalsounds.com -  というサイトがあって、
一曲0.09ドル、大体一枚のアルバムだと0.90ドル(2010年9月28日現在 1ドル84円なので約75円)で買えます。


大体誰も Legal かどうかなんて聞いてないのに
Legal Sounds(キリッ
っていうくらいだから、なんか危険な匂いもしますが
とりあえず使ってみて今のところ問題がないです。


で使ってると、

時々このようなプロンプトが表示されました。

Some songs could not be properly displayed because of your Regional Settings.
Please refer to Help for more infomaition.
Help: Regional Settings


Help: Regional Settings のリンクをたどっても
特にそれに関して記述がなくて、また購入自体も正常にできます。


が、日本語やアイスランド語などが含まれると?
専用のダウンローダーからダウンロードができないようで、
Web からのみダウンロードが可能になります。
(他にも方法があるかもしれません)


でそのダウンロードが URL がテキストで単に羅列してあるだけ
というインターフェースで、あまりにひどいのでボタンを表示して
3個ずつダウンロードする、というグリモンを書きました。



画面を開いた瞬間、一気に全部ダウンロードしてもよかったのですが、
一度アクセスすると、その音源に2度はアクセスできないため、
(URL はパブリックの状態、認証等は効いていない)
もしたくさんの曲がある状態で開き、ブラウザが落ちてしまうと
問題になるな、と思って3つずつダウンロードするようにしました。


でも、Third Party のダウンローダーを使えば、どうのこうのとか
書いてあるので、そもそもこの方法も正しいかどうかよく分かりません。

Playframework で Scalate を使ってみる

  • Scalate
    • Scala Template Engine: like HAML or JSP without the crap but with added Scala coolness
    • HAML か くそな部分がない JSPScala のいいところを足したテンプレートエンジン
    • erb に似たのが ssp
    • haml に似たのが scaml
    • どちらかを conf/application.conf で指定する
    • ssp, scaml ともに豊富なサンプル
    • 現在 (20100710) play-1.1-unstable-r881, scalate-0.3,scala-0.3 までしかテストされてないということだけど、play-1.1-unstable-r942, scalate-0.3,scala-0.6 の組み合わせで問題なし。
    • app/views/default.scaml があって、そこで index.scaml を呼んでなくても、index.scaml のファイルがない場合、画面には何も描画されない(真っ白いまま)。普通はエラー(Template not found)が表示される
    • 一通り機能がそろっていて、問題なく使えそうな感じ。
    • JAXRS with Jersey とかはよく分かってない。

scaml を使ってみる (デフォルトは ssp

$ play new myapp --with scalate-0.3,scala-0.6
$ vi conf/application.conf
#scalate config
scalate=scaml 
jvm.memory=-Xmx256M -Xms32M
$ vi app/views/index.scaml
$ vi app/views/default.scaml