カテゴリ:IT( 162 )
Emacs での JavaScript 開発は js2-mode で決まり!
 いままで、Emacs での JavaScript開発には javascript.el を使っていたんだけど、これがシンタックスハイライト(しかも、ショボイ・・・)ぐらいしか機能がなくて、全然満足してなかった。

 で、いい加減、良さげな elisp が無いかなー、とか思って探したら、js2-mode なんてものを見つけた。これ、スゴイ。

Stevey's Blog Rants: js2-mode: a new JavaScript mode for Emacs
js2-mode: Google Code

パッと目についた特徴をあげると、
  • シンタックスハイライトが正確
     javascript-mode では色がぐちゃぐちゃになるソース(例えば、prototype.js)でも、きれいに色をつけてくれる。再帰降下パーサを使ってるらしい。
  • JavaScript の不規則なインデントに対応している
     タブを押すごとに、インデントの位置が切り替わる。地味にうれしい。
  • 構文チェック機能がある

 なんでも、この js2-mode は、Emacs拡張を JavaScript で書けるようにするという、より大きなプロジェクトの一部なんだとか。壮大なプロジェクトだ。

 そんなわけで、JavaScript開発は js2-mode に乗り換え。ちなみに、設定はこんな感じ。タブ幅は 4 が好み(js2-mode のデフォルトは 2)なので、そう設定している。

(autoload 'js2-mode "js2" nil t)
(add-to-list 'auto-mode-alist '("\\.js$" . js2-mode))
(add-hook 'js2-mode-hook
'(lambda ()
(setq js2-basic-offset 4)))

[PR]
by fkmn | 2008-05-21 23:55 | IT
Perl-users.jp: 日本の Perl ユーザのためのハブサイト
YAPC::Asia 2008 で Michael Schwern は「SEO に有効な独自ドメインを取って、もっと Perl 初心者が集まりやすい nice な Perl の情報を集めたサイトを作れ!」といったので Perl-users.jp ドメインを取って、ここに Perl-users.jp を開始します。
Perl-users.jp - 日本の Perl ユーザのためのハブサイト

素晴らしすぎる取り組み。Yappo++

SEO支援のため、リンク貼っておきます。
http://perl-users.jp/
[PR]
by fkmn | 2008-05-20 23:55 | IT
YAPC::Asia 2008 の感想
遅ればせながら、YAPC::Asia 2008 の感想をば。

 まず、YAPC に参加して再確認したのは、Perlコミュニティの暖かさ。冒頭の宮川さんの「ここに来ている人たちは、みんな Perlコミュニティの一員だ」という言葉に始まり、最後のSchwernの基調講演「Perl is unDead」で終わるというのがその象徴的でした。

 Perl以外の言語(JavaScript や Erlang)がメインのトークがあるというオープンさや、不満のある部分を改善していこうとする前に進む力(Mooseとか)にも、Perlコミュニティの魅力を感じずにはいられなかったです。

 やっぱり、僕がPerl好きでいるのも、こういうコミュニティの人たちがいるからなんだなぁということを改めて感じた2日間でした。

スタッフの皆様、すばらしいカンファレンスをどうもありがとうございました!
# 次は京都でお会いしましょう(笑)


 ちなみに、トークの動画が既にニコニコ動画にかなりの数あがってますね。
http://www.nicovideo.jp/tag/yapcasia2008
ホント、仕事はやすぎですw。見れなかったトークは、こっちの方で確認していこう。
[PR]
by fkmn | 2008-05-19 23:44 | IT
YAPC::Asia2008 1日目
懇親会で Larry と一緒に写真撮ってもらった!!
a0057891_231744.jpg

今年の YAPC::Asia に思い残すことはないわ(まだ終わってないけどw)。

今日聞いたトークは以下の通り。後で、追記する予定。
  • Tatsuhiko Miyagawa - Welcome to YAPC::Asia 2008
  • José Castro ( cog ) - TPF Introduction
  • Larry Wall - A Standard That Is Meant To Be Broken, 本当に!
  • Kang-min Liu ( gugod ) - Continuous Testing
  • Dan Kogai - PSL = Perl as a Second Language
  • Ingy döt Net - JavaScript Love for Perl Hackers
  • Leon Brocard ( acme ) - Working in the cloud
  • Kazutake Hiramatsu - Parrot Compiler Tools
  • Yusuke Kawasaki - DOM Manipulation by Gainer/Wiimote over HTTP
  • Kazuhiro Osawa ( Yappo ) - Let's enjoy Perl on the %^H
  • Lightning Talks

[PR]
by fkmn | 2008-05-15 23:08 | IT
リゲス本(Rの基礎とプログラミング技法)読了
Rの基礎とプログラミング技法
Amazon.co.jp: Rの基礎とプログラミング技法

 他のプログラミング言語の素養はあるけれども、Rについては全くの初心者な僕にはちょうど良い本だった。Rという言語のだいたいの仕様や機能については分かった気がする。ただ、Rの基本にして奥義でもあるベクトル単位の処理については、まだちゃんとは身に付いてはいない。

 OOP の仕様については、ちょっと難ありかも。S3クラスだと機能的に不十分だし、S4クラスだと、機能云々の前に、まず字面が汚い。せっかくなんだから、JavaScriptライクな仕様にしても良かったのに。

 とは言いつつ、なかなか楽しい言語なのは確か。本を読み終わった後は、「どう書く.org」のお題を自分で解いてみたり、他の人(と言ってもRで解いてるのはほぼ一人だけなんだけどw)の解答を眺めたりしている。

 あと、ESS は便利なんだけど、バッファの評価に C-cM-b なんて微妙なキーバインドが割り当てられてるので、以下のような感じで C-cc に割り当て直した。あと、パラグラフを評価してから R のバッファに移動する関数を追加したり(キーバインドは C-cC-c)。


(add-hook 'ess-mode-hook
'(lambda ()
(defun ess-eval-function-or-paragraph-and-step-and-go (vis)
(interactive "P")
(ess-eval-function-or-paragraph-and-step vis)
(ess-switch-to-ESS t))
(local-set-key "\C-cc" 'ess-eval-buffer-and-go)
(local-set-key "\C-c\C-c" 'ess-eval-function-or-paragraph-and-step-and-go)

[PR]
by fkmn | 2008-05-12 23:55 | IT
Rはもっと評価されるべき(プログラミング言語的な意味で)
仕事で必要になりそうなので、R を少し勉強しだした。

準備としては、
  1. R.app をここからダウンロードして、インストール
  2. EmacsでのRプログラミングをサポートしてくれる ESS (Emacs Speaks Statistics) をインストール。使い方等は、RjpWiki の ESS のページあたりを参考に

で、少し触れてみた感想としては、結構な好感触。

 Scheme の影響を受けている、と言われているだけあって、リストはあるわ (*)、関数がファーストクラスオブジェクトだわ、遅延評価があるわで、内部的な動作が確かに Scheme っぽい。ところが、構文の見た目は括弧括弧してなくて、C言語っぽい感じ。そして、そんな C言語風の構文にも関わらず、代入 (アサイメント) の演算子が "=" ではなく "<-" だという所に、心をくすぐられてしまう。
* データ構造はリストだけじゃないけど

 これは、統計専門の言語にしておくのはもったいない。みんなもっと R をやるといいと思うよ。

 と、そんなわけで、Rの本を一冊買ってしまった。週末にでも読む予定。

Rの基礎とプログラミング技法
Amazon.co.jp: Rの基礎とプログラミング技法
[PR]
by fkmn | 2008-05-08 23:55 | IT
Super Mario Bros. on Ruby
スーパーマリオブラザーズをRubyで作ってみた - I am Cruby!

Ruby/SDL で動くスーパーマリオを作ったとの事。すげー。

これはぜひとも動かしてみたい!、ということで、Mac (10.4) で 動かそうとしてみました。
が、うまく動かず・・・。

実行したコマンドは以下のような感じ。

まず、SDL まわりで必要な者を、MacPorts でインストール。

% sudo port install libsdl
% sudo port install libsdl_image
% sudo port install libsdl_mixer
% sudo port install libsdl_ttf
% sudo port install rb-opengl

そのあと、gem で rubysdl をインストール。

% sudo gem install rubysdl

例のファイルをチェックアウトして、以下のページを参考にちょっと修正。
% svn co http://svn.coderepos.org/share/lang/ruby/mariobros
参考:SUPER NARIOをプレイしてみた(最速レビューをめざして) - きみのハートを8ビットキャスト

そして、main.rb を実行すると、なぜか sdl の require でこける・・・。

% ruby main.rb
main.rb:9:in `require': no such file to load -- sdl (LoadError)
from main.rb:9

しょうがないので、ソースを落としてきてインストール。

% tar zxvf rubysdl-1.3.1.tar.gz
% cd rubysdl-1.3.1
% ruby extconf.rb&& make && sudo make install

これで、sdl の require は通るようになった。
が、しかし、main.rb を実行すると、盛大にエラーが発生・・・。
%  ruby main.rb
2008-04-23 23:48:38.360 ruby[13393] *** _NSAutoreleaseNoPool(): Object 0x375650 of class NSLock autoreleased with no pool in place - just leaking
2008-04-23 23:48:38.361 ruby[13393] *** _NSAutoreleaseNoPool(): Object 0x3760c0 of class NSCFNumber autoreleased with no pool in place - just leaking
(中略)
./mario/gamestart.rb:135:in `main': uninitialized constant SDL::Mixer (NameError)
from ./mario/gamestart.rb:169
from main.rb:17:in `require'
from main.rb:17

というか、マリオ以前に、rubysdl のサンプルコードが動かないっす。
動かすまでには、ちょっと時間がかかりそう・・・。
[PR]
by fkmn | 2008-04-23 23:55 | IT
Perl で文字列中の変数名を明示的に指定する方法

文字列に式が埋め込めない。

Python の嫌いなところ - kwatchの日記

これはほかの言語も Ruby を参考にするべきだと思う。

Perl のは変数の直後に識別子に含めていい文字が来る場合にどうしていいかよくわからないのだよな。こんなん?
my $x = "a";
my $y = "$x\_b";

Pythonはダメなところは信者がアレすぎるところ - odz buffer


 変数の直後に識別子に指定できる文字が来てしまう場合は、展開して欲しい変数を ${変数名} という形で指定してやればおk。

 例えば、こんな感じ。
my $x  = "a";
my $xy = "b";
print "${x}y"; #=> ay

 でも、Ruby みたいに式を含めることはできないなぁ。


 Perl6 だと、ダブルクオート中の {} が Perl の式として展開されるらしい。

my $foo = 3;
my $hoge = "{$foo + 4}";
say $hoge; # 7

Pugs で Perl6 を体験する


[PR]
by fkmn | 2008-04-16 23:55 | IT
プログラム仕様書についてあれこれ
他の人たちのエントリにかこつけて、自分の言いたいことを言うテスト。

例えば、誰が書いても同じコードにするために、プログラム設計書(内部設計書)を今、書かせているとしたら、そんな無駄なものはやめたほうがいいと思う。

浜口さんに贈るSI業界を良くする方法 - ひがやすを blog

 うーん、本当に「誰が書いても同じコードにする」ためにプログラム設計書を書いているようなところがあるんだろうか?寡聞にして僕はそういう現場を知らないです。でも、もし本当にそういうことをやっているのであれば、確かにそれは無駄以外の何者でもないなぁ。

プログラム設計書は、自然言語で書きます。プログラムは、プログラミング言語で書きます。どっちの言語が、プログラムを書くのに適しているかといえば、誰が考えても、プログラミング言語ですよね。

浜口さんに贈るSI業界を良くする方法 - ひがやすを blog

 でも、プログラム設計書も、あまり自然言語でだらだら書くのは良くないですよね。図なり表なりを活用して、自然言語の部分はなるべく少なくするべきかと。

プログラム設計書を作るのは「誰が書いても同じコードにするため」だけでなく、元請けがレビューするためでもあります。元請けがプログラミング言語を読めないので、日本語に落としてレビューします。コードを書いてからプログラム設計書を作ることもあります。

仕様書やプログラムを書く大変さ - __int128 Geek Not Found

 これこそ無駄。日本語とコードが1対1で対応するようなドキュメントなんか必要ない。
 あぁ、そういえば、僕の周りでも、こういうドキュメントとコードの対応作業に追われているところがあったなぁ。当然のように、そこは泥沼化してるけど。

今のうちのえらい人の考えは、技術力(プログラミングを含む)は、うちの会社の足腰だから、技術力をきちんと持ったSEを育てることが強いISIDをつくるという考えです。

プログラミングできない元請けがプログラム設計書をレビューするという矛盾 - ひがやすを blog

 そうそう、「足腰」ですよねぇ、技術力って。腕ばっかり使っているように見える野球のピッチャーも、実際には、足腰が重要な役割を果たしているわけで、つまり、そういうことだと思う。
[PR]
by fkmn | 2008-04-15 23:55 | IT
わーい、SICP 第3章終了したよー
 SICP を第3章まで、練習問題を解くのを含めて、読了。慣れのせいもあったのかもしれないけど、第2章よりは、すんなり進める事が出来た。第3章に入ったのが2月の前半だったので、まぁまぁよいペースといったところ。

 第3章「標準部品化力,オブジェクトおよび状態」の内容をざっくりまとめると、以下のとおり。
  1. 代入と局所状態
     ここでやっと「代入」が出てくるのが SICP の恐ろしいところ(笑)。普通のプログラムの本だったら、まず真っ先に代入だよなぁ。でもここで、「バグの90%には変数が関わってるから、変数を無くせばバグはなくなるんだ!」という(ネタ)話が、あながち馬鹿に出来ない事を知る。状態を管理するには代入があった方が良いけれど、代償も少なくはない、ということを刷り込まれる。副作用コワス。

  2. 環境モデル
     変数がどの空間に束縛されるのか、とか、あとはポインタ周りの話。この辺は、最初からある程度理解出来ていたので、問題無し。

  3. 遅延評価とストリーム
     第3章の山場。代入や可変データを持たずに,状態を持つシステムを作るための一つの解。遅延評価と言うと、なんとなく難しい印象があるけど、実際には、lambda で包むだけのごく単純な話。けど、それだけで、ストリームのような面白い事が出来る。
     Perl や Ruby でも簡単に出来そうだなぁ、と思ったら、すでにやっている人がいたので、そちらにリンク


 第4章からは、いよいよ、Scheme による Scheme の実装らしい。楽しみ。
[PR]
by fkmn | 2008-03-22 17:37 | IT


とあるWebアプリケーションエンジニアの日記
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
カテゴリ
以前の記事
ブログパーツ
リンク
検索
タグ
最新のトラックバック
プログラミングが「出来る..
from とりあえず9JP?
Genographic ..
from ナンジャモンジャ
ジュセリーノ
from ありの出来事
くちこみブログ集(ライフ..
from くちこみブログ集(ライフ)(..
以降、丁寧語で行こう!
from エッセイ的な何か
人気ジャンル
ファン
記事ランキング
ブログジャンル
画像一覧

fkmnの最近読んだ本 フィードメーター - フッ君の日常 あわせて読みたい AX