黒魔法使いの弟子

Ruby & Javascript & Hack

Ubuntu11.04の日本語変換でGoogle日本語入力のオープンソースMozcを使う方法


f:id:kattton:20110430173132p:image

はじめに


Linuxに変更するときのデメリットは日本語変換の貧弱さだと言われています。
もはや日本語変換さえなんとかなればみんなLinuxに乗り換えるのに!といった状況です。


そこで、Google日本語入力オープンソース版、Mozcを使いましょう。
もずくとかめかぶとか、日本語関係は海鮮三昧ですね。


photo by Error 404 (Not Found)!!1

やりかた

Mozcのインストール


f:id:kattton:20110430173133p:image


まずパッケージをダウンロード&インストールします。
全自動なので、楽ちんです。

  1. Ubuntuソフトウェアセンターを開く
  2. 右上の検索窓で「mozc」で検索する
  3. 以下のパッケージをインストールする
    • Server of the Mozc Input Method
    • Mozc Engine for IBus
    • GUI utilities of the Mozc input method
インストールしたMozcをインプットメソッドへ登録


f:id:kattton:20110430173134p:image


次にやるのは、まあ「日本語変換で使えるようにする」ってことです。

  1. システム>設定>キーボード・インプットメソッド を選択
  2. インプットメソッドのタブを選択>「インプットメソッドの選択」セレクトボックスから「日本語>Mozc」を選択」
  • もし存在しなかったら一度再起動すると良いかも。
  1. その状態で「追加」ボタンを押す
  2. 下のインプットメソッド一覧に表示されるので、「日本語 - Mozc」を選択し、「上へ」を押す

Ubuntu11.04でCapsLockをCtrlにする方法


ある大学の研究では、「a」の隣がCtrlでないと気が狂う人種がいるそうです。
なので、CapsLockをCtrlに変更しましょう。そのまま使うと命に関わります。


f:id:kattton:20110429234641p:image

  1. システム>設定>キーボードで「キーボードの設定」画面を開く
  2. レイアウトタブ>オプションボタン押下>Ctrlキーの位置をクリック>Make Caps Lock an additional Ctrlにチェックを入れる

Ubuntu11.04 のUnityで「システム」ってどこよ?


Unityだと「システム」云々がどこにあるかよくわかりません。
なので、ログイン時に(パスワード入力する段階)、画面下のセレクトボックスで「Ubuntu クラシック」を選択してくださいね。


これで今までどおりのGnome2系のデスクトップになります。

新卒さんのための人気Vimカラースキーマランキング5+1(vim.org & github調べ)

f:id:kattton:20110426002815p:image


これといって新卒向けではありませんが、最近の新卒さんはVimでプログラミングを覚えるらしいので。
むしろ特に意味もなくVimのカラースキーマを変更したい人向けですかね。


プログラマにとってエディタはほぼ一日向きあうものなので、なるべく長時間見ていても疲れないだとか、楽しくなるだとか、主眼をどこに置くかによってカラースキーマが変わってくるでしょうね。
ということで。

第一位 molokai


f:id:kattton:20110426003613j:image


molokai


南国な名前ですね。私はこれ使ってます。なんだかかっこいいです。

詳細は、こちらを参照のこと。

第二位 pyte


f:id:kattton:20110426000656p:image


pyte - A clean, light (nearly white) theme : vim online


とてもアッサリしたカラースキーマといった印象。
私はゴテゴテしたのが良いですが、たしかに、目の負担軽減にはなるかも。
この画像の他、全部で4種類ほど同梱されています。


詳細は以下を参照のこと。
http://leetless.de/vim.html

第三位 dw_colors


f:id:kattton:20110426000657p:image:w640


dw_colors - Set of black color schemes with some highlight variations : vim online


単色ベースのカラースキーマですね。
青の他にも、7色用意されております。


詳細は以下を(ry
http://sites.google.com/site/dwcolors/Home

第四位 Zenburn


f:id:kattton:20110426003612p:image


Zenburn - Low contrast colour scheme for low light conditions : vim online


なんだか柔らかい印象を受けますね。
ただ、だんだん眠くなってきました。やる気が。。。

第五位 desert.vim


f:id:kattton:20110426003611p:image


desert.vim - A dark-background color scheme inspired by my hometown of Santa Fe, New Mexico : vim online


第五位ですがダウンロード数で見ると結構上位なのがこのdesert.vimです。
目にやさしいし、けど、カッコイイし、結構好きです。


以上、ここまでVimマーケティング調べでした。


で、vim.org以外でもgithubにもカラースキーマってあるもので、、しかも相当ゴージャス。
それが、次のこちらです。

Githubで一番人気 Solarized


f:id:kattton:20110426000700p:image:w640


altercation/solarized · GitHub


もうサイト見てるだけで惚れ惚れするカラースキーマです。
いつもこれとmolokaiと迷うほど。それくらい見やすいです。

その他のカラースキーマ情報


定番サイトは以下のものです。

http://nanasi.jp/colorscheme.html

おわりに


ということで、新卒向け(嘘)カラースキーマ入門でした!
え?設定方法?ググレカス、ということで。


それでは、カラースキーマでも変更して、プログラムの腕が上がる錯覚をご堪能ください。

Rails3をCapistranoでdeployする上でのbundlerの注意点 on Windows

はじめに


rails3でもcapistrano使いたいですよね。
でもそのままだとbundlerが動かないので、わざわざ本番環境でbundle installとかやらなきゃいけない。
しかもwindows環境で作られたGemfile.lockが邪魔で、削除してから、本番環境用のGemfile.lockを作らないといけない。
なんとかならないかなぁと、思って四苦八苦したメモ。


失敗すると、こうなります

結論

  1. Windows開発環境で作られたGemfile.lockはあくまでWindows環境のもの。
  2. Ubuntu(その他の)環境では使えませんよね(だからbundle_flags --deploymentはダメですよ)
  3. その環境用にGemfile.lockつくるようなcapistranoのdeploy.rbを書きましょう
deploy.rb
# デフォルトで設定されている --deployment を消す
set :bundle_flags, "--quiet"

前提条件

  • Windowsの開発環境
  • Ubuntuに本番環境
  • Rails3 (もちろんBundler使う)
  • capistrano使ってデプロイしたい

環境は以下のとおり

$ ruby -v
ruby 1.8.7 (2010-06-23 patchlevel 299) [i386-mswin32]

$ rails -v
Rails 3.0.3

$ gem list capistrano

*** LOCAL GEMS ***

capistrano (2.5.19)
capistrano-ext (1.2.1)
capistrano_colors (0.5.3)

$ gem list bundler

*** LOCAL GEMS ***

bundler (1.0.7, 1.0.0)

Rails3でもcapistrano使いたいよね


ということで、rails3 capistranoググるとすぐ見つかる。

capistranoでbundle installする - 床のトルストイ、ゲイとするとのこと
Bundler: The best way to manage Ruby applications


つまるところ、config/deploy.rbに一行追加するだけでよいとのこと。
これだけで、capistrano実行時にbundle installが実行されますって。

require "bundler/capistrano"


capistranoのタスク一覧にbundle:installが追加される

$ cap -T
cap bundle:install       # Install the current Bundler environment.
cap deploy               # Deploys your project.
cap deploy:check         # Test deployment dependencies.
cap deploy:cleanup       # Clean up old releases.
cap deploy:cold          # Deploys and starts a `cold' application.
cap deploy:migrate       # Run the migrate rake task.
cap deploy:migrations    # Deploy and run pending migrations.
cap deploy:pending       # Displays the commits since your last deploy.
cap deploy:pending:diff  # Displays the `diff' since your last deploy.
cap deploy:rollback      # Rolls back to a previous version and restarts.
cap deploy:rollback:code # Rolls back to the previously deployed version.
cap deploy:setup         # Prepares one or more servers for deployment.
cap deploy:symlink       # Updates the symlink to the most recently deployed ...

cap deploy:update        # Copies your project and updates the symlink.
cap deploy:update_code   # Copies your project to the remote servers.
cap deploy:upload        # Copy files to the currently deployed version.
cap deploy:web:disable   # Present a maintenance page to visitors.
cap deploy:web:enable    # Makes the application web-accessible again.
cap invoke               # Invoke a single command on the remote servers.
cap multistage:prepare   # Stub out the staging config files.
cap production           # Set the target stage to `production'.
cap shell                # Begin an interactive Capistrano session.
cap staging              # Set the target stage to `staging'.

ここで説明したいのは、最初の一行だけ。
そのほかはまた今度。


つぎに、そのレシピの使い方

$ cap -e bundle:install
------------------------------------------------------------
cap bundle:install
------------------------------------------------------------
Install the current Bundler environment. By default, gems will be installed to
the shared/bundle path. Gems in the development and test group will not be
installed. The install command is executed with the --deployment and --quiet
flags. If the bundle cmd cannot be found then you can override the bundle_cmd
variable to specifiy which one it should use.

You can override any of these defaults by setting the variables shown below.

N.B. bundle_roles must be defined before you require 'bundler/capistrano' in
your deploy.rb file.

  set :bundle_gemfile,  "Gemfile"
  set :bundle_dir,      File.join(fetch(:shared_path), 'bundle')
  set :bundle_flags,    "--deployment --quiet"
  set :bundle_without,  [:development, :test]
  set :bundle_cmd,      "bundle" # e.g. "/opt/ruby/bin/bundle"
  set :bundle_roles,    {:except => {:no_release => true}} # e.g. [:app, :batch]

いろいろ設定できますね。
で、bundle_flagsの値がまずい。--deploymentとするのがまずかった。

おわりに


ということで、それを排除したらうまくいきましたよ、というお話でした。
たったそれだけですねぇ。
それがわかるまでは、いろいろとエラーを出されてました。

Twitter / katton: !!! Missing the mysql2 gem

!!! Missing the mysql2 gem. Add it to your Gemfile: gem 'mysql2'


Twitter / katton: Please install the mysql2

Please install the mysql2 adapter: `gem install activerecord-mysql2-adapter`


まだまだRails3には人柱が必要みたいです。

rails3でmysql2が必要と言われた時の対処法


本日、突然以下のエラーに遭遇した。

!!! Missing the mysql2 gem. Add it to your Gemfile: gem 'mysql2'


まあ、gem install mysql2で終わりかと思っていたら、そんなことでは終わらず。

Please install the mysql2 adapter: 
`gem install activerecord-mysql2-adapter` (no such file to load ― active_record/connection_adapters/mysql2_adapter)


とか言われる羽目に。しかもgem install activerecord-mysql2-adapter無いし。
自力での回復を早々に諦めて、ぐぐる先生に聞くことにした。
そしたら案の定、先に遭遇している人たちがチラホラ。


API Only - Stack Exchange
Windows上で Ruby1.9.2 + Rails3 + SQLite or MySQL 環境を構築 - Everyleaf Lab

解決法


結局、上のリンク先の通りに修正した結果、動きました。とりあえずは。
問題は、なぜ、今日突然爆発したかなぁ。Gemfileで全ファイルバージョン指定しなきゃだめかな。
cap bundle:install が悪さしたかな、などと、今後原因を解明してみたい。

Gemfile
# gem 'mysql2'
gem 'ruby-mysql'
database.yml
production: 
  # ...
  host: 127.0.0.1 
  # ...

2011/01/18(追記)


犯人は、不用意にdeploy.rbに追加した"bundler/capistrano"でした。
解決すれば、mysql2が必要とか言われません。
それについてはまた後日。

Rails3とjQueryを使ってAjaxのloadingとかcompleteを表示する方法

はじめに


Railsが3になってしばらく経ちました。
数々の新機能や大幅な機能拡張があり、その中にはjavascriptに関する変更もありました。
いままでデフォルトでprototype.jsを基本としたJavascriptフレームワークを使用していたのを、Rails3からはシンプルに(jrailsを使うことなく)jQueryを使うことができるようになりました。*1
正確には、特定のjavascriptフレームワークに囚われない、ですかね。


それで、link_to_remote が link_to hoge_url, :remote => true に変更になったとかは割と文献があるんですが、次のステップで必ずぶち当たるであろう「じゃあloadingとかどうすんだよ」という文献があまり見当たらなかったので書いてみようと思います。

結論

  1. rails.jsをちょっと改造する
  2. jquery.js rails.js application.js の順に呼び出す
  3. jqueryのliveで引っ掛ける
rails.jsをちょっと改造


2011/01/6現在のjquery-ujsをすこし改造します(ここでダメな気もするが)pull requestもでてるからきっと平気。気にしない。
2011/01/07に取り込まれたので割愛。

jquerylive関数で引っ掛ける


Haml

= link_to "Ajaxなリンク", hoge_url, remote: true, method:  :post, id:  "hoge_id"


jquery

$(function(){
  $("#hoge_id")
    .live("ajax:beforeSend", function(){ alert("loading"); }) 
    .live("ajax:success", function(){ alert("success"); }) 
    .live("ajax:error", function(){ alert("error"); }) 
    .live("ajax:complete", function(){ alert("complete"); });
});

おわりに


Railsを触り始めて、かれこれ3年目になりますが、進歩が早くて、最近では、とても本なんか買っていられないですねぇ。
The Pragmatic Bookshelf のように電子書籍で随時更新がかかるものを買うというのは良い選択肢だと思います。


また周辺知識も量も膨大になってきていて、Rackから始まり、REST、Mongodb、テスト(Rspec)、セキュリティ、キャッシュなどなど、「どこまでおぼえることがあるんじゃクソがっ」と若干キレ気味ではあります。
ただ、最新技術を突っ走るあたりは技術者冥利に尽きるの一言です。やっぱりRailsって楽しいですよ。お試しあれ。

*1:Rails3でjqueryを使うには、[https://github.com/rails/jquery-ujs:title=jquery-ujs]というものが必要です。

Railsを2.3.5から2.3.10にあげたときのメモ

はじめに


Rails3がでたから3にしたいけど、諸事情でまだ上げられないので、2.3.10にあげた。
ちょっと厄介だったのでメモ。

環境

まとめ

rm -rf vendor/rails
rake rails:freeze:edge RELEASE=2.3.10

つまづきポイント

edgeが動かない


以下を施したら動いた(気がする)

  • rakeを更新
  • 空のvendor/railsディレクトリを削除した
$ gem install rake
Temporarily enhancing PATH to include DevKit...
Successfully installed rake-0.8.7
1 gem installed
Installing ri documentation for rake-0.8.7...
Installing RDoc documentation for rake-0.8.7...

$ gem list rake

*** LOCAL GEMS ***

rake (0.8.7, 0.8.3, 0.8.1)

$ rm -rf vendor/rails
Rackが

経験的に、Rackが悪さをしなかったことがない。
とりあえず、environmentを以下に変更したら動きました。

config.gem "rack", :version => "1.1.0"
経過観察中


更新したばかりなので、他のgemなり影響がでるかどうか、経過観察中です。