新年のご挨拶

Updated:

明けましておめでとうございます。本年もよろしくお願いいたします。

昨年は,久しぶりに,個人的な活動を再開した年でした。

7月には,初版から長年にわたり翻訳を担当させていただいている『初めてのPerl』の第6版が出版されました。(初版の日本語版の出版は1995年6月なので,17年も昔のこととなります。)

9月にはYAPC::Asia 2012に参加して,「Perlの勘所をマスターしよう! コンテキストとリファレンスを我が物に!」と題して話させていただきました(スライド動画)。YAPC::Asiaでは,Perlの産みの親であるLarry Wallさんと,久しぶりにお会いして話すことができました。

また,しばらく更新が滞っていたこのブログの更新も,(かなり不定期ではあるものの)再開しました。

個人サイトwww.kondoyoshiyuki.comも,Bootstrap.jsを使って,今風に(?)リニューアルしました。更新しやすいようにちょっとした仕組みを作ってみました。コンテンツはMarkDownで記述して,Gitで管理しており,git push webを実行すると,自動的にサイトに反映させるようにしています。しかし,仕組みを作ったことで満足してしまい,ほとんど更新していなかったりします。(ありがちな話ですけど。)

今年は,昨年以上に,できるだけ頻繁にブログを更新していこうと思います。また,サイトwww.kondoyoshiyuki.comのほうも,コツコツと内容を充実させていきますので,ご期待ください。

また,いろいろと新たに習得したい事も多いので,今年は,積極的に勉強会やセミナーに参加しようと思います。勉強会などで見かけたら,気軽に声をおかけください。

技術書も,読もうと思って購入したものの,積ん読状態になっているものが多いので,頑張って読んでいこうと思います。

以上,つらつらとまとまりの無い事を書いてしまいましたが,今年もよろしくお願いいたします。

YouTubeは動画の関連付けに機械翻訳を使っているらしい

Updated:

YouTubeでヘンデルのシャコンヌのすごい演奏を見つけました。Michael Borgstedeによるハープシコードの演奏で,冒頭で呈示されるテーマが豪華絢爛に装飾されていて非常に華麗な演奏です。

Chaconne in G major HWV 435 - Georg Friedrich Händel

関連動画に

Полина Осетинская играет Чакону Генделя

というのが表示されていました。何だろうと思って,クリックすると,これもヘンデルのシャコンヌでした。こちらは,ピアノですが,これもなかなか良い演奏です。

「Полина Осетинская играет Чакону Генделя」はロシア語っぽいので,Google翻訳でロシア語から英語に変換すると"Pauline Ossetian plays Handel Chaconne"でした。

YouTubeって,機械翻訳を利用して,動画を関連付けてるんですね。まあ,Google翻訳があるんだから,そのくらい当然なんでしょうけど,ちょっと意表を突かれました。

jQueryのセレクタの指定法

Updated:

ここのところ、JavaScriptとjQueryを勉強しています。

jQueryの基本であるセレクタの書き方についてのメモです。

基本的な指定法

$("div")

要素divすべてを選択

$(".main")

クラスmainの要素すべてを選択

$("#foo")

id="foo"の要素を選択

組み合わせた指定法

ちょっとまぎらわしいので要注意です。

$("div a")

div要素の下に存在するa要素すべてを選択
(aはdivの子孫であればよい。子でも孫でもOK。)

$("div > a")

div要素の直下に存在するa要素すべてを選択。
(aはdivの子でなければならない。孫はダメ。)

$("div,li,a")

div要素すべてとli要素すべてとa要素すべてを選択。
(いわゆるorだと考えればよいでしょう。)

$("label + input")

label要素の直後にあるinput要素を選択。
(間にほかのものがあるとダメ)

$("#prev ~ div")

id="prev"の要素の後ろ(同レベル)にあるdiv要素すべてを選択。
英語ではNext Sibling Selectorという。Sibling(兄弟)は、同じレベルで並んでいる要素のこと。

次の例のようになる:

<body>
  <div>選択されない(divだが#prevの前にあるため)</div>
  <span id="prev">ここが基準(選択されない)</span>
  <div>選択される</div>
  <div>選択される
    <div>選択されない(兄弟でないので)</div>
  </div>
  <span>選択されない(divでないので)</span>
  <div>選択される</div>
</body>

$("div a")と$("div > a")の違いに注意

前者$("div a")は、div要素の「子孫」であるa要素すべてを選択。a要素は、divの子でも、孫でも、ひ孫でもOK。

後者$("div > a")は、div要素の「子」であるa要素すべてを選択。こちらは、aはdivの直接の子でなければなりません。孫やひ孫は選択されません。

Emacsにauto-install.elをインストールする

Updated:

Emacsにauto-install.elをインストールしてみました。

auto-install.elは、Emacs Lispのプログラムを簡単にインストールするツールです。

1. まず、auto-install.elをインストールするディレクトリ~/.emacs.d/auto-installを作り、そこに移動します。

$ mkdir -p ~/.emacs.d/auto-install
$ cd ~/.emacs.d/auto-install

2. auto-install.elをダウンロードします。

$ wget http://www.emacswiki.org/emacs/download/auto-install.el

3. ダウンロードしたauto-install.elを、バイトコンパイルします。

$ emacs --batch -Q -f batch-byte-compile auto-install.el

4. ~/.emacsに設定を追加します。

~/.emacsに、以下の設定を追加します。

(add-to-list 'load-path (expand-file-name "~/.emacs.d/auto-install/"))
(require 'auto-install)
(auto-install-update-emacswiki-package-name t)
(auto-install-compatibility-setup)

3行目は、emacsの起動時にEmacsWikiからパッケージ名を取得するための設定です。EmacsWiki(http://www.emacswiki.org/)には、さまざまなEmacs Lispパッケージが集められています。

4行目は、install-elisp.el互換モードにします。

これでインストールは完了です。

M-x auto-install-batch(パッケージ名を指定してインストール)やM-x auto-install-from-emacswiki(EmacsWikiに登録されているパッケージをインストール)を使って、Emacs Lispのプログラムをインストールすることができるようになります。

nvm + Node.jsをUbuntu 12.04LTSにインストールする

Updated:

Node.jsをUbuntu 12.04LTSにインストールしてみました。

Node.jsは、Ubuntuのパッケージになっていますが、現在、開発のペースが速く、パッケージでインストールされるのは結構古いバージョンになってしまいます。そこで、パッケージは利用せずに、手作業でNode.jsをインストールすることにしました。

また、複数バージョンのNode.jsをインストールしておき、必要に応じてバージョンを切り替えるツールnvmを使うことにしました。バージョンの更新が頻繁なために、複数バージョンを共存させて切り替えて使おうという魂胆です。

nvmのインストール

まず最初にnvmをインストールします。nvmは、自分が置かれたディレクトリの中に、Node.jsをインストールします。

ここでは、~/nvmにnvmをインストールすることにしました。

1. nvmのソースを取得する

nvmのソースはGitHubで公開されているので、必要なディレクトリを作り、git cloneすれば、nvmのソース一式を取得できます。

$ mkdir ~/nvm
$ cd ~/nvm
$ git clone git://github.com/creationix/nvm.git .

ファイルREADME.markdownには、インストールの手順やnvmの使い方が書いてあるので目を通すとよいでしょう。

2. nvmコマンドを起動してみる

設定ファイルnvm.shをシェルに読み込ませると、nvmコマンドを使えるようになります。具体的には、コマンドラインから次のようにすれば、nvmコマンドが使えるようになります。

$ . ~/nvm/nvm.sh

nvmコマンドをパラメータ無しで起動して、次の例のように使い方が表示されればOKです。

$ nvm
 
Node Version Manager
 
Usage:
    nvm help                    Show this message
    nvm install <version>       Download and install a <version>
    nvm uninstall <version>     Uninstall a version
    nvm use <version>           Modify PATH to use <version>
       <<以下略>>

3. nvmコマンドを常に使えるように設定する

次の1行を、~/.bashrcや~/.profileに入れておけば、ログイン時に自動的に実行されてnvmが使えるようになります。(この設定を行なってから、ログインし直してください。)

# Setting for 'nvm' and 'node.js'
source $HOME/nvm/nvm.sh

node.jsのインストール

さて、nvmがインストールできたので、次はnode.jsをインストールしましょう。

node.jsの公式サイトhttp://nodejs.org/を見ると、現時点での最新バージョンはv0.8.15なので、このバージョンをインストールしてみましょう。

1. nvm installコマンドでnode.jsをインストールする

nvm installコマンドを使えば、指定したバージョンのnode.jsをインストールすることができます。

$ nvm install 0.8.15
######################################################################## 100.0%
Now using node v0.8.15
$

2. node.jsがインストールできたことを確認

node -vコマンドを実行すると、node.jsのバージョンが表示されます。

$ node -v
v0.8.15
$

3. サーバプログラムを動かして動作を確認する

node.jsで、簡単なサーバプログラムを動かしてみます。

次の内容のファイル node_test.js を用意します。

ファイルnode_test.js:

var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-type': 'text/plain'});
    res.end('Hello World\n');
}).listen(5001, '0.0.0.0');
console.log('Server running at http://localhost');

ファイルnode_test.jsを引数として渡して、nodeコマンドを実行します。

$ node node_test.js

ブラウザからこのホストのポート5001にアクセスすると、「Hello World」と表示されるはずです。

これで、node.js(v0.8.15)がインストールされて、正しく動作していることが確認できました。

nvmコマンドの使い方

コマンドnvm lsで、インストールされているnode.jsのバージョンの一覧が表示されます。

$ nvm ls
    v0.8.9         v0.8.15
current:        v0.8.15
$

nvm useコマンドで、使用するnode.jsのバージョンを切り替えます。この例では、0.8.15を使用するようにします。

$ nvm use 0.8.15
Now using node v0.8.15
$

先ほど行なった~/.bashrcや~/.profileでのnvmの設定の直後で、利用するnode.jsのバージョンをnvm useコマンドで指定しておくと便利です。

# Setting for 'nvm' and 'node.js'
source $HOME/nvm/nvm.sh
nvm use 0.8.15 >/dev/null