Express のテンプレートエンジンとして haml + CoffeeScript を使う
Express の標準テンプレートエンジンは jade ですが、あの html の閉じタグを毎回書くのがぼくは好きになれません。
そこで、 haml をテンプレートエンジンとして利用するようにしてみようと思います。
これについては Express のガイドページにもやり方が書いてあります。
http://expressjs.com/guide.html
まず、 hamljs をインストールします。
$ npm install hamljs
そして Express を使うときに設定を行います。
# app.coffee app = require('express').createServer() app.register '.haml', require('hamljs')
閉じタグを書かなくてすむのはとてもすばらしいですね!
さて、これで haml を利用できるようになったわけですが、テンプレート中に書く JavaScript 部分も CoffeeScript を使ってお手軽に書けるようにしてみたいと思います。
haml には filter という機能があって、独自にコンパイラを指定できます。
この辺りは ruby の haml でも同じですね。
# app.coffee app = require('express').createServer() coffee = require 'coffee-script' hamljs = require 'hamljs' hamljs.filters.coffee = (str) -> @javascript coffee.compile(str) app.register '.haml', require('hamljs')
こうしておくと、haml のテンプレート中で CoffeeScript を書けるようになります。
%head :coffee jQuery ($) -> alert "Generated from 'CoffeeScript'!"
すっきりと書けますね!
すばらしい!!
C言語の勉強
C言語の勉強をしようと思って買っていた本があったのですが途中までやって中断してしまっていたので、
最初からちゃんと勉強しなおすことにしました。
ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道
- 作者: 青木峰郎
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2005/07/27
- メディア: 単行本
- 購入: 33人 クリック: 420回
- この商品を含むブログ (141件) を見る
ちゃんと人から見えるとこで勉強した方が良いと思ったので、 GitHub にあげてみました。
https://github.com/tricknotes/normal-linux-programing
とりあえず、一冊写経するところから!
rack でカレントディレクトリを公開する
rack でカレントディレクトリを公開したいときの config.ru の書き方をいつも忘れてしまうので、自分用に備忘録を残しておきます。
https://gist.github.com/1109610.js?file=config.ru
ルートパスへのアクセスでディレクトリの一覧が出したければ1行目は不要ですし、 public ディレクトリ以下を公開させたい場合には、2行目を書き換えてやればOKです。
で、これを Heroku にデプロイしようとしたときにハマりました。
push して サーバが起動するところまでは確認できるのですが、アプリケーションにアクセスしようとすると、エラーメッセージが表示されます。
2011-07-27T15:40:09+00:00 app[web.1]: !! Unexpected error while processing request: type mismatch: Array given
どうやら、Heroku でデフォルトで利用される Rack のバージョンが古く、 Rack::Static が受け取れるオプションの形式が最新の Rack のものではないのが原因のようでした。
なので、 Gemfile も一緒にデプロイするとよいです。
https://gist.github.com/1109610.js?file=Gemfile
Heroku で利用される Rack のバージョンって、公式に発表されてないんですかねぇ。
MacでCoffeeScriptを簡単にインストールする
久々にHemebrewをアップデートしてみました
$ brew update
すると更新一覧の中に見慣れた名前がありました。
==> The following formulae were updated: coffee-script
おぉっ!?
今までみたいに、 node → npm → coffee-script のインストール手順を踏まなくてもいいの!?
というか、どんな風にインストールされるのか気になったのでさっそく試してみました。
まずは、元から入れていたCoffeeScriptを削除します。
(CoffeeScriptをインストールしていない場合は不要)
npm uninstall -g coffee-script
そしてすかさずHomebrewでインストールします。
brew install coffee-script
すると Node.js のインストールが開始されました。
==> Downloading http://nodejs.org/dist/node-v0.4.9.tar.gz######################################################################## 100.0% ==> ./configure --prefix=/usr/local/Cellar/node/0.4.9 ==> make install ==> Caveats Please add /usr/local/lib/node to your NODE_PATH environment variable to have node libraries picked up. ==> Summary /usr/local/Cellar/node/0.4.9: 72 files, 7.6M, built in 4.6 minutes ==> Downloading https://github.com/jashkenas/coffee-script/tarball/1.1.1 ######################################################################## 100.0% ==> ./bin/cake --prefix /usr/local/Cellar/coffee-script/1.1.1 install ==> Caveats coffee-script can also be installed via `npm install coffee-script`. This has the advantage of supporting multiple versions (of any Node libs) at the same time. Since coffee-script syntax changed pretty drastically between 0.7.2 and 0.9.x, you may want to install it via npm instead. This formula may be retired from a future version of Homebrew. ==> Summary /usr/local/Cellar/coffee-script/1.1.1: 34 files, 496K, built in 2 seconds
ふむふむ。なるほど。
Node.js のインストールが完了すると、CoffeeScriptがリポジトリから直接インストールされます。
npm 経由でインストールされていないのでアップデートする際は手動で行う必要がありそうですが、
ちょっとにCoffeeScriptを試してみたい、という場合にはとても楽だと思いました。
OSC 2011 Hokkaidoに参加しました
2011.06.11 に、オープンソースカンファレンス2011北海道に参加してきました。
OSCはぼくが初めて参加したIT系のイベントで、毎年参加することを楽しみにいます。そして今回で参加は3回目。
今回、発表の機会をいただけたのでNode.jsについて発表をさせていただきました。
Node.jsっていう名前は聞いたことあるけど、あまり触ったことがない人向けの内容でお話させてもらいました。
今回、LOCAL企画セミナーということで、次のようなテーマで発表しました。
- 「破」 ”キーワードは聞いたことがあるけど、実際それってどんなものなの?”
ブレストに付き合ってくれた @onjiro_mohyahya 、応援してくれた @EnnuiR 、レビューに付き合ってくれた @snoozer05 、 @darashi 、 @mayuco ありがとうございました。
そして、この素晴らしいイベントを開催してくださったスタッフのみなさま、ありがとうございました!!
EnvjsがRuby1.9で動かない件
テスト用に capybara-envjs を使ってみようと思ったのですが、上手くインストールできませんでした。
js_land_proxy.h:11:18: error: node.h: No such file or directory
いろいろ調べたところ、githubに答えがありました。
https://github.com/smparkes/capybara-envjs/issues/48
ruby1.9はサポートしていないし、しばらくサポートの予定もないとのことでした。
rails3+envjsの組み合わせで、JSのテストをRubyで書きたい場合は、Ruby1.8.7しかないみたいです。
Ruby1.9でさくっとJSのテストを書きたいんだけど、うーん、何かよい方法はないものかなぁ。
Sapporo.coffee#1を開催しました
Sapporo.js-2011.05.08の裏企画としてSapporo.coffee#1を開催しました。
今話題の、CoffeeScriptの勉強会です。
勉強会と言ってもあまり固い感じではなく、コーヒーを飲みながらCoffeeScriptについて語らう感じで行いました。
きっかけは @mrkn のこのツイート。
@kaznum @tricknotes Sapporo.coffee やりましょう
2011-04-27 15:11:41 via earthquake.gem to @kaznum
今日の内容としては、CoffeeScriptが何かっていうところから始まって、インストール方法の解説、基本的な書き方やJavaScriptとの比較、CoffeeScript自体の簡略記法を紹介をしました。
本家サイトに載っているoverviewをざっくりと見ていったのですが、だいぶ楽にJavaScriptが書けて幸せです。
CoffeeScriptはJavaScriptの邪悪なパーツを上手く隠蔽してくれていて、しかも簡単に書けるのでほんとにすばらしいです。
Rails3.1からはデフォルトでCoffeeScriptが導入されるという話もあるので、今後はもっと使われていくんじゃないかなと思います。
今回は多くの方にご参加いただき、ありがとうございました!
今後は、Sapporo.jsとは独立して開催していく予定なので、ご都合つく方はぜひぜひお越し下さい!