Emacs でファイルインクリメンタル検索。
session.el と minibuf-isearch.el を入れました。
いったん開いたファイルを、後から(Emacs を終了した後も) 開きたい場合に C-x C-f の後に C-r でインクリメンタル検索して探せます。
シェルと同じように検索できて i-search 便利です。
.emacs に以下の内容を記述します。使用しているバージョンは 22.1.1 です。
(require 'dired) (put 'dired-find-alternate-file 'disabled nil) (define-key dired-mode-map (kbd "RET") 'dired-find-alternate-file) (define-key dired-mode-map "a" 'dired-advertised-find-file)
require してあげないと Dired で使われている関数やモードを認識してくれません。
次に dired-find-alternate-file の無効化を解除。 put?後で調べる。
デフォルトでは a に割り当てられている dired-find-alternate-file を RET に。 kbd で RET を割り当てられる。なるほど。
今まで Return キーで新規にバッファを作成していたものを a に割り当てます。
これでいつの間にかバッファがたくさん作られてしまうことから開放されました。
Ruby には loop というものがあり、 while true とどう違うのか今イチ分かりませんでした。
メーリングリストでまつもとさんが答えていました。 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/20222
制御構造であるwhileとイテレータであるloopの間の本質的な違いはloopの方はループ本体がブロックである点です。そしてブロックは新たなスコープを導入します。
loop がイテレータとは。
loop do hoge = "hoge" break end puts defined?(hoge) while true hoge = "hoge" break end puts defined?(hoge)
実行結果
nil local-variable
用途によって使い分ける必要がありますが、 loop のほうが直感的で 分かりやすいと感じました。
まず ri loop で調べればよかったです。 Kernel モジュールで宣言されている単なるメソッドでした。
Yahoo に限った話ではないですが、広告の Flash がうざい。
チラチラ動いてとにかく視線を奪おうとしてきます。
ということでこんなのは転がっているはずですが、 探すのも面倒だったので object タグを消すグリモンを書いて自己満足。
広告が悪いとはいいませんが Flash は表現が豊かなだけに広告に使われて残念。
JavaScript では実装が難しいことに使って欲しいです。
ついでに Yahoo の新しいトップページも微妙、というか今のものを残して欲しいです。
All-in-One Gestures をこれまで使っていましたが、 FireGestures というものを知りました。
スクリプトを簡単に割り当てられるという便利機能があるため 乗り換えることにしました。
アドオンの設定画面に D&D するとスクリプトを登録できるってのがすごいですね。
Sleipnir 乗り換え組なためどうしても Firefox に機能としてないものは気になってしまいます。
ということで、現在のタブから「右をすべて閉じる」「左をすべて閉じる」という機能を実装してみました。
実装はここに置いてあります。
右をすべて閉じるを DR、左をすべて閉じるを DL にそれぞれ割り当てて、 また Firefox が便利になりました。
[追記]
「左のタブをすべて閉じる」「右のタブをすべて閉じる」が設定にすでにあったため、 アドオンの設定にあるものを利用するようにしました。
2.2.0 がリリースされていたので更新しました。
新しいプラグインに my-sequel.rb というものがありました。
自宅サーバで検証してみたところ my-ex.rb プラグインと使うと、 過去のエントリにつづきを挿入でき、前エントリからの誘導をさせることが 楽にできそうです。
次に使う機会があったら使ってみたいと思います。
tDiary 2.2.0 向けに修正しました。
http://www.pshared.net/tdiary/category_ul.html
こちら側でエスケープしていたときに、なぜ脆弱性が あると思わなかったのか。
これと日記も code-seed に持って行く準備をしたいな。
ヨドバシにて定価 1 万 2800 円が 9800 円の割引 + ポイント 20% の 実質 7000 円ということで衝動買い。
ワイヤレスをずっと拒否していましたが、 充電スタンドがあることから電池切れを気にしなくていいため購入しました。
使ってみるとフィット感、ホイール感がすんごく気持ち良いです。
ただセンタークリックが元々の用途ではないためか、若干押しづらいです。 ブラウジング時に Shift + クリックをしてタブを開かない人なので慣れが必要。
しかしマウスは充電スタンドのものがなかなか見つからない。
それにマウスの場合 1 年でヘタってしまう可能性が他のハードに 比べて高いので、マウスに定価 1 万超は割高だと思います。
http://japan.cnet.com/news/media/story/0,2000056023,20363883,00.htm
受信料払ってるんだから・・・うおおおお。
素直に嬉しいです。 NHK スペシャルお願いします。
ActiveRecord(AR) を触ってみました。今更ですがこれはすごい。
Migration の便利さ。 ActiveRecord::Base を継承するだけでモデル になってしまう簡単さ。条件の指定方法の直感性など色々おお!と感じました。
ただ触った程度であれですが、複数のデータベースに接続するときに 問題になりそうな設計(ActiveRecord::Base.establish_connection)だと思います。
「activerecord 複数」などで検索すると対応方法はあるようですが、 複数データベースは推奨されていないみたいです。
触ったきっかけは CGI を書き始めて、そろそろデータベースとの連携でもやろうと思ったから ですが、 AR は接続や一度目のアクセスに時間がかかります。 あれだけ便利な機能を提供してくれているので当然だと思います。
WEBRick (実運用では厳しいそうですが)や FastCGI といった 同一プロセス内でリクエストを繰り返しさばくやり方であれば、 いちいち初期化してしまうこともなくパフォーマンスを出せますよね。
ただ簡単な WEB アプリを作りたい (CGI/mod-ruby) 場合は大げさで、 text(CSV) で保存することも考えましたがファイルロックの実装や データが膨らんだときの処理をさぼりたい、といった理由からやめました。
やっぱりそこはデータベースであり、データベースに依存するコードを 可能な限り書きたくないので DBI を選択することにしました。
レンタルサーバで Ruby/DBI をサポートしていなかったらどうしようもありませんが(汗)。
DBI に慣れたら CGI 向けな O/R マッパーも探したい(つくってもみたい)です。
実際にインストールは Ubuntu で行いました。
MySQL の DBI 連携用パッケージがすでに用意されていてコマンドひとつでインストール完了。
sudo apt-get install libdbd-mysql-ruby
後はリファレンスや詳しく解説してくれているところへ。
そういえば apt-get は古いようで、最近は aptitude を使うみたいです。
面白くさくさく読み進めました。
こちら側とあちら側という表現が幾度となく出てきて、 特に Microsoft と Google の箇所が読んでいて 自分の中でとても納得のいく内容でした。
また梅田さんの言葉には励まされるものが多くあり、 とにかく自分なりにもっと頑張らなくてはいけないと思わせてくれました。
もっと早く読めばよかったなあ。
読み切った勢いそのままに「ウェブ時代をゆく」を思わず購入してしまいました。
年末年始の時間も利用して、こちらから読み進めようと思います。
楽しみ。