JSの設定

2012年1月7日土曜日

blogger記事内のURLを自動でリンク化する

なんかBloggerってURLを貼りつけても勝手にクリッカブルになってくれないので参考サイトの情報をのっけるのが不便。
ということでまずChromeのエクステンションをインストールしてみる。

ページタイトルとURLを一発でコピーできるChrome拡張機能「Copy Fixer 」
http://web-marketing.zako.org/hacks/google-chrome/copy-title-and-url.html

次にBloggerの設定→デザイン→ガジェットの追加→HTML/JavaScript
として次のコードを貼り付ける。これで、CopyFixerで貼りつけたURLがクリッカブルになる。
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$(function(){
var html = $("div.post-body").html().replace(/[^">](http:\/\/[^\s<"]+)/g,"<a href=\"$1\" target=\"_blank\">$1</a>");
$("div.post-body").html(html);
});
</script>

以下は全てCopyFixerを使って貼りつけたもの。

知って得する21のRubyのトリビアな記法
http://d.hatena.ne.jp/keyesberry/20110622/p1

Ruby 1.9の19のtips
http://memo.yomukaku.net/entries/229

CoffeeScript
http://coffeescript.org/

CoffeeScriptはインストールしなくてもブラウザ上で実行できるよという話 - ariyasacca(2011-02-21)
http://sangoukan.xrea.jp/cgi-bin/tDiary/?date=20110221

Underscore.js
http://documentcloud.github.com/underscore/

Learn You a Haskell for Great Good! - Starting Out
http://learnyouahaskell.com/starting-out

2012年1月3日火曜日

Coffee Script など

javascriptを使っていて、文字列変数strがあるときに "<p>" + str + "</p>"と書かないといけないのは耐え難い、rubyのように"<p>#{str}</p>"と書きたい、ヒアドキュメントも使いたいと思ったのが発端で CoffeeScript を調べ始めた。
rails3.1で採用されているので名前は知ってたが、よそ者と思って軽視していた。いや実際、よそ者ではあるのだが。

- CoffeeScriptとは:
今日から始めるCoffeeScript から抜粋。

・JavaScriptにコンパイルできる小さな言語
・コンパイル後はJavaScriptとして動作するため実行速度面ではほぼ変わらない
・構文がRubyやPythonライク
・ブラウザ用の開発にもサーバサイドの開発にも使える

変数の文字列埋め込みとヒアドキュメントという当初の目的はズバリ達せられるほか、コンパイルが挟まるのはメリットがありそうだ。コンパイルによって生成されたjsはエラーがないだろうから。なんならWebサイトのjsは全てコーヒーで書いておき、コンパイル→ファイル結合→minify→キャッシュ制御用パラメータの更新をするデプロイの仕組みを用意するといい感じかも。このへんは動的システムであればフレームワークに吸収される流れっぽいが。

コンパイルされたjsの実行には node.jsを使うようなので、用意したばかりのcolinuxにインストールしてやる。
rubyで言うところのrvmのようなバージョン選択ツールがないか探してみたらあった。
naveというらしい。しかし何だかうまくインストールできない。
バージョン選択をする切実性もないので普通にインストールすることに。
node -v → v0.6.6

rvmの話が出たのでrails3.1もインストールしておこう。あとでrails with coffeeの味を見るために。
rvm install 1.9.3 とし、ここにrails3.1のgemsetを作る。
rvm use 1.9.3 → rvm gemset create rails31 → gem list --remote rails(ふむふむ、このままインストールした場合のバージョンは3.1か)→ gem install rails

※ruby1.9.3をインストールするときにunable to convert "\xC3" to UTF-8 in conversion from ASCII-8BIT to UTF-8みたいなエラーがでる(このへん参照)、rdoc関係みたいなのでどうせ不要ということであれば --no-ri --no-rdoc オプションをつけてインストールするとよい。

さて、とりあえずサーバサイドjsに慣れるため node.js を使ってみよう。node.jsとMySQLで割と普通のデータベースウェブアプリを作ってみるチュートリアルを参考に進める。
「express フレームワークを使う」のところまで何ら問題なし。ejsテンプレートのところ、app.use(express.bodyDecoder());
とあるがここで初めてエラーが発生。本家サイトを見ると正解はapp.use(express.bodyParser()); のようだ。

「MySQLとの連動」のソース、長いのでそのままでは動かないだろうなと思ってたが案の定いくつかエラーでた。
以下、修正点。
var sys = require('util'), // ← sysからutilに変更。追加モジュール必要なし
    express = require('express'),
    ejs = require('ejs'),
    //Client = require('mysql').Client, // ←コメントアウト
    base62 = require('./base62');

var client = require('mysql').createClient({user: 'xxx', password: 'xxx', host:'127.0.0.1'}); // ←追加
client.query('use データベース名'); // ←追加

//mysql(function(client) { // ←2ヶ所あるこの記述をコメントアウト(もちろん、対応する閉じカッコも)
※そのままだとエラーになり、client.connect は自動的に行われますよと言われる

if (err && err.number != client.ERROR_DUP_ENTRY) { // ←Clientの先頭を小文字に変更

あと、Error: connect ECONNREFUSED と怒られたので my.cnf の skip-networking をコメントアウトした。
これでとりあえず動く。次はちゃんとコーヒースクリプトを。

参考サイト:
http://www.dbonline.jp/mysql/
node-inspector
node.jsでmysqlを使う
CoffeeScriptでNode.jsアプリを書いてみる
無料で見られるプログラミング書籍一覧
Ruby 1.9 で Web アプリを想定したベンチマークをとってみた

2012年1月2日月曜日

Arch linux on Colinux のインストールメモなど

新年あけましておめでとうございます。ブログのタイトルを、暑いから寒いにしてみました。
今年はもうちょっと頑張って更新しよう。ということでまず実家(三田@兵庫)に持ち込んだThinkPad(去年2万円で中古購入)にarch linuxをインストールした記録から。

- colinuxとは:
  http://goo.gl/ShFBV とかにあるとおり、linuxのエミュレータ。昔はCygwinとかあったけど今はもうcolinuxでしょう。VMwareは設定が簡単だけど動作が重い、モバイルPCでは使えない。

- colinuxのインストール:
  http://dqn.sakusakutto.jp/2011/07/colinux-manual.html このへんを見ながら本体と7zipをインストールする。c:\colinux にインストールしたと仮定。
※バージョンは0.7.9(2011-04-09)

- OSのイメージファイルを取得する:
  http://goo.gl/DTmE このへんから好きなやつをDLする。今回は軽さ重視で、Arch Linux。

- Arch Linuxとは:
  http://ja.wikipedia.org/wiki/Arch_Linux こんなやつ。

- Arch Linuxのインストール:
  http://goo.gl/N4ypF からArchLinux 2011.08.15(2011-11-27 modified)をDL、解凍、c:\colinuxに展開。

- まずはいじってみる:
  arch.cmd が起動バッチになっている。DOSプロンプトからこれを実行(arch.cmd arch)。
ユーザーrootでログイン。ネットーワーク(wifi)も問題なくつながる。

- rubyのインストール:
  とりあえず何かインストールしたい、ということで。http://goo.gl/eznSs を参考にpacman -Sy。
あとはpacman -S rubyなどと。
問題なく入る。ruby 1.9.3p0 (2011-10-30 revision 33570) [i686-linux]

- ディスクの拡張:
  スワップ領域が少ない。ディスク領域もほとんどない、ので新しいイメージを用意する。
colinux tips(http://goo.gl/WgByo)を参考に。

プロンプトから以下を実行(c:\colinuxで作業)。
fsutil file createnew swap.img 134217728

arch.cmdをエディタで開いて、13行目あたりの記述を修正する。
set SW_ARCH=swap.img
※これが・・・100行目あたり、:_install の項目にあるcolinux-daemon -t ntという起動コマンドのパラメータに渡っていく、ちょっと見てみよう。

- スワップ領域を有効にする
  まずcolinuxを終了させ、arch.cmd arch で再起動。mkswap /dev/hda2 としてフォーマット。
swapon /dev/hda2 として無事スワップの使用が開始された(freeコマンドを叩いてみよう)。
※再起動前に、下記にあるkeymap設定もしておくとよい。
http://goo.gl/yiCLX
http://goo.gl/r8XFg

- ディスクの拡張:
  スワップと同じ要領でデカいファイルを作る(下記は2G)。
fsutil file createnew arch_fs.img 2146435072

colinux tipsの「colinuxのディスクがいっぱいになってしまった。拡張したい。」(http://goo.gl/WgByo
にある通り、colinuxの起動パラメータに hda3=arch_fs.img を追加して再起動。
※arch.cmd 112行目あたり↓

colinux-daemon -t nt mem=%MEM% kernel=vmlinux initrd=initrd.gz hda1=%FS% hda2=%SW% hda3=arch_fs.img cofs1=c:\ root=/dev/hda1 eth0=slirp,,tcp:8022:22/tcp:3000:3000

※ちなみにtcp:8022:22/tcp:3000:3000のとこは、windowsの8022ポートへのアクセスをcolinux(10.0.2.x?)の22へ、3000を3000へフォワードする意味。なのでsshdを立ち上げておけばputtyとかから127.0.0.1:8022へアクセスできるし、railsとかnode.jsのテストサーバを10.0.2.x:3000で立ち上げておけばhttp://localhost:3000/でつながる。

再起動後、フォーマット。/mntにマウント。cp -a でコピー。アンマウント。あとはこれをhda1として起動するだけ。
※colinux tipsの記述とは少し違うコマンドになった。
cp -a /bin /boot /dev /etc /home /srv /run /media /lib /opt /root /sbin /usr /var /mnt/

再びarch.cmd編集。6~8行目あたり。
set FN_ARCH=arch_fs.img
set FS_ARCH=arch_fs.img

先ほど追加したhda3=arch_fs.imgをトル。これで準備完了、あとは再起動すれば拡張されている(df -hで確認しよう)。

- その他参考資料
ネットワーク設定