emacsにjs2-modeをインストールしてみた
前職のころは開発環境がWindowsだったので、Javascriptを書くときのエディタはxyzzyを使っていました。
今はUbuntuで開発していて、しばらくgeditで頑張っていましたが、やっぱりemacsの環境を作ることに。
ちなみに、今エディタはこんな風に使い分けています。
RubyやPythonの場合はさっと編集するときはEmacsも使いますが、がっつり開発するときはなんやかんやとIDEの方が便利なのでIDEを使うようにしています。
そんなわけでとりあえずJavascriptが必要なのでjs2-modeを試すことに。
ちなみに、インストール直後のEmacsでjsを読み込むとJavaモードになってしまします。
emacsにelipse置き場を設定
$ 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」になります。
構文エラーに下線がついて、エラーの原因も表示してくれるのでこれはなかなか便利です。
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
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をダウンロードします。
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を使う利点としては以下のようなことが挙げられます
現在は、パースも圧縮率も有利な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を使っています。