emacsにjs2-modeをインストールしてみた

前職のころは開発環境がWindowsだったので、Javascriptを書くときのエディタはxyzzyを使っていました。
今はUbuntuで開発していて、しばらくgeditで頑張っていましたが、やっぱりemacsの環境を作ることに。

ちなみに、今エディタはこんな風に使い分けています。

RubyPythonの場合はさっと編集するときはEmacsも使いますが、がっつり開発するときはなんやかんやとIDEの方が便利なのでIDEを使うようにしています。

そんなわけでとりあえずJavascriptが必要なのでjs2-modeを試すことに。

ちなみに、インストール直後のEmacsでjsを読み込むとJavaモードになってしまします。

emacsにelipse置き場を設定

emacs.dにelisp*1ディレクトリを作成して

$ mkdir ~/.emacs.d/elisp

.emacsに以下を追加

(add-to-list 'load-path "~/.emacs.d/elisp")

ところで、elispとはEmacs Lispのことですが、Emacs Lispで書かれたemacs拡張用のモジュールのこともelispと言うようです。

js2-modeのインストール

普通は自動インストールを設定しておくみたいですがとりあえずサイトの手順どおり手動でコンパイルしてインストールしました。

1. http://code.google.com/p/js2-mode/downloads/listからjs2-20090723b.el*2をダウンロードします。
2. ダウンロードしたjs2-20090723b.elの名前をjs2.elに変更して.emacs.d/site-lispディレクトリに移動します。
3. Emacsのミニバッファでjs2.elをコンパイルします。

M-x byte-compile-file[Enter]
Byte compile file ~/.emacs.d/elisp/js2.el[Enter]

4. .emacsに以下の記述を追加します。

(autoload 'js2-mode "js2" nil t)
(add-to-list 'auto-mode-alist '("\\.js$" . js2-mode))

Javascriptのファイルを開くとモードが「JavaScript-IDE」になります。

構文エラーに下線がついて、エラーの原因も表示してくれるのでこれはなかなか便利です。

*1:なんでもいい

*2:2011年9月7日時点での最新バージョン、あまり開発されていない?

Rails3 devise_invitableでDeviseにユーザ招待機能を追加する

Gemのインストール

RubyGemsにあるバージョンだと新しいdeviseだと使えませんので、ドキュメントの通りに古いdeviseを指定します。

gem 'devise', '~>1.2.0'
gem 'devise_invitable', '~> 0.4.0'
$ bundle install

Gitのソースを直接指定すれば1.4でも使えます。

gem 'devise', '1.4.2'
gem 'devise_invitable', :git => "https://github.com/scambra/devise_invitable.git"
$ bundle install

Deviseのセットアップ

前回の記事「Rails3アプリにDeviseで簡単に認証システムを組み込む」の「Railsプロジェクトにインストール」を参考にDeviseをインストールしてください。

devise_invitableのインストール

Wikiには、自動インストールと手動インストールの2通りが紹介されていますが、ここでは自動インストールを試しました。

$ rails generate devise_invitable:install
      insert  config/initializers/devise.rb
      create  config/locales/devise_invitable.en.yml
続きを読む

Rails3 x mongoidセットアップメモ

mongoid(http://mongoid.org/)は、RailsでMongoDBを扱うためのObject-Document-Mapperです。
ORMではなくてODM

thinitに詳しい解説があります。
http://thinkit.co.jp/story/2010/10/27/1829

以下、自分で試した際のメモです。

プロジェクトの作成とmongoidのセットアップ

ActiveRecordを使わないので-O(--skip-active-record)を指定してプロジェクトを作成

$ rails new hello-mongoid -O

*1

http://mongoid.org/docs/installation.html
Gemfileに以下を追記してbundle install

$ cd hello-mongoid
$ vi Gemfile
gem 'mongoid', '~>2.1'
gem 'bson_ext', '~>1.3'

プロジェクトルートに移動してbundle installを実効

$ bundle install

mongoid用の設定ファイルを作成する

http://mongoid.org/docs/installation/configuration.html

$ rails g mongoid:config

設定ファイルconfig/mongoid.ymlが作成されます。

*1:2012/5/4追記: この記事を書いた時点ではRailsの3.0.9で試しています。同じ環境で試す場合は rails _3.0.9_ new hello-mongoid -O のようにRailsのバージョンを指定してください

続きを読む

Rails3アプリにDeviseで簡単に認証システムを組み込む

co-meetingではユーザ管理をDeviseをベースに開発しています。
開発過程でDeviseについて調べたことを、何度かに分けて書いていこうと思います。

Devise(http://rubygems.org/gems/devise)とは、Railsアプリにログインの仕組みを組み込む場合にデファクトスタンダードになっているgemで、メールによるコンファームなど必要な仕組みが揃っていて非常に便利です。*1

Rails3のインストールからプロジェクトの作成、Deviseの使い方については以下のサイトで詳しく解説されています。
http://www.oiax.jp/rails/rails3.html
チュートリアル的に習得するならこちらのページの方が参考になります。

ここでは、Deviseの導入から、独自ログインのみのシステムでDeviseを使うに当たって最低限必要と思われる設定についてのみまとめていきます。

scaffoldでアプリを生成

Deviseを試すためのアプリをscaffoldで作成しておきます。
scaffoldを使ったアプリ作成については以下を参考にしました。
Rails3のscaffoldを試す

Deviseのインストール

gemのインストール

Gemfileに以下を追加して、bundle installします。

gem 'devise', '1.4.2'
$ bundle install

*1:実際には、デフォルトの機能に独自の仕組みを追加しようとすると大抵はgemのソースを読む羽目になりそうな感じなので、システム構成が大きくなりそうなアプリケーションの場合は設計の参考にするくらいが良いかもしれません。

続きを読む

MongoDB版 phpMyAdminのphpMoAdminを試してみた

普段、MySQLではWebの管理ツールPhpMyAdminを使って居るのですが、MongoDBを使った開発もするようになったのでWebのツールあるかなあと探してみたところphpMoAdminというツールがあったので試してみました。

PHP+Apache+MongoDB環境を一から作成するには以下のブログがまとまっています。
http://www.giantflyingsaucer.com/blog/?p=1826

phpMoAdminのインストール

ここでは、PHP+Apache環境がある状態から新たにPHP+MongoDBの環境を作るための手順のみ説明します。
OSはUbuntu10.10です。

1. phpMoAdminの入手

公式サイト http://www.phpmoadmin.com/ の中程にある[DOWNLOAD phpMoAdmin]リンクをクリックしてphpmoadmin.zipをダウンロードします。

2. Apacheに置く

phpmoadmin.zipを解凍すると、moadmin.phpがある(これのみ)ので、これをApache配下に置きます。

3. MongoPHPDriverをインストール

以下のページにインストール方法が記述されています。
http://www.php.net/manual/en/mongo.installation.php

$ sudo apt-get install php-pear php5-dev
$ sudo pecl install mongo
...
Build process completed successfully
Installing '/usr/lib/php5/20090626/mongo.so'
install ok: channel://pecl.php.net/mongo-1.2.4
configuration option "php_ini" is not set to php.ini location
You should add "extension=mongo.so" to php.ini

php.iniを設定、以下のコマンドはUbuntu10.10で試した場合です。

$ sudo vi /etc/php5/apache2/php.ini
続きを読む

Redis X Java入門。RedisのインストールからクライアントライブラリJedisの使い方まで

Redistとは、永続化機能を備えたKVSです。
http://redis.io/
インターフェースはmemcachedとほぼ同じですが、Redisの方が永続化も含めてできることが多いので摘要できるところはいろいろありそうです。
とりあえず、co-meetingのセッション管理に使うことにしたので、Hello Worldまでのメモを残しておきます。

インストール方法

2011年9月1日現在のUbuntu 10.10のリポジトリでインストールされるRedisのバージョンは2.0.0-rc2-1です。
rcなのが気になりますが、古くはないのでとりあえずapt-getでインストールしてみました。

$ sudo apt-get install redis-server

telnetで動作を確認

Redisの動作をすぐに確認するには、telnetでコマンドを打つの手っ取り早いです。
http://try.redis-db.com/でもコマンドを試せます。

コマンドの一覧はこちら
http://redis.io/commands

文字列の追加/削除をtelnetから試してみます。Redisのデフォルトポートは6379です。

$ telnet localhost 6379
set mykey 5   <- setコマンドで文字列を保存します。パラメータに文字列長を指定していますが、
Hello            新しいバージョンでは直接文字列を指定できるようになっています。(http://redis.io/commands/set)
+OK
keys *        <- keysコマンドは保存されているキーを確認することができます。 
*1         ここではすべてのキーを表示しています。(http://redis.io/commands/keys)
$5
mykey
get mykey     <- getにキーを指定して文字列を取得。(http://redis.io/commands/get)
$5
Hello
del mykey     <- getで削除。(http://redis.io/commands/del)
:1
keys *
*0
続きを読む

Protocol Buffersの使い方まとめ

protocol buffersとは、Googleが自社のサービス用に開発したオブジェクトシリアライズの仕様です。
JSONに似ていますが、.protoという名前のファイルで構造を定義し、JSONのキーは数値に変換されよりデータサイズが小さい形でやりとり可能です。

開発された背景は、Googleでは社内でJavaだったりPythonだったり複数の言語が使われているので、言語ニュートラルなシリアライズデータのやりとりの仕組みが必要だったということのようです。

マニュアルには、XML-RPCよりもデータサイズが小さく解析速度は100倍早いと記述されています。
protocol buffersを使う利点としては以下のようなことが挙げられます

  • データが小さい
  • パースが速い
  • 言語に依存しない(公式のライブラリはJavaC++Pythonのみですが、Rubyのライブラリなどもあります)

現在は、パースも圧縮率も有利なMessagePackがありますが、ほぼ以下のチュートリアルのままですが、とりあえずサンプルアプリケーションを動作させるまでの手順をメモしておきます。
http://code.google.com/intl/ja/apis/protocolbuffers/docs/javatutorial.html

パースや圧縮後のデータ長については、Java版のMessagePackのライブラリを作っている方が以下のブログに掲載されています。
http://d.hatena.ne.jp/viver/20100115/p1
自分でも測ってみないとですが、非常に参考になりました。

以下、Protocol Buffers使い方メモです。

protocol buffers開発環境のダウンロード

サンプルも含むソースコードのダウンロードページは以下のURLです。
http://code.google.com/p/protobuf/downloads/list

2011年7月13日現在のバージョンは2.4.1です。
この記事は少し前に試したため、protobuf-java-2.4.0a.jarを使っています。

.protoの書き方

以下はチュートリアルのPerson.protoです。
Javaライクな記述方法でデータ構造を定義します。

続きを読む