http://rubikitch.com/に移転しました このページをアンテナに追加 RSSフィード

2010-11-20

[]w3mの表を見やすくするパッチ

w3mは、テキストブラウザでありながら、画像やフレームが表示できるなど、そこそこ便利です。 僕はニュースサイトブログを見ることが多いので、ブラウジングの8割方がw3mで済んでいます。 なんといってもテキパキ立ち上がり、動作はとても軽快なので10年以上愛用しています。 指が慣れてしまっているので、将来超高速パソコンを使うことになっても使い続けるほどです。

さて、w3mの特徴である表のレンダリングですが、現状だとTABLE要素のBORDER属性により罫線が表示されないことがあります。 正しい動作ですが、border=0のときに罫線が見えないと境界線がわからず、見辛くなってしまいます。

たとえば、 当行ATM利用手数料 | 三菱UFJ銀行 の表をレンダリング結果を比べてみます。

Google Chromeでの表示 http://www.rubyist.net/~rubikitch/archive/w3m-table-chrome.png

w3mでの表示 http://www.rubyist.net/~rubikitch/archive/w3m-table-w3m.png

そこで、このパッチを当てることで、罫線が表示されるようになります。→no title

borderが指定されていない部分にも罫線が表示されて、逆に罫線が邪魔に思えてくるほどです。 逆に、罫線がないと困るケースが多いので、僕は当てています。

パッチを当てた後のw3mでの表示 http://www.rubyist.net/~rubikitch/archive/w3m-table-w3m-patched.png

2009-12-24

[][]MigemoUTF-8化する

Migemoローマ字から直接日本語を検索するすげえツールなのだが、開発停止されているようだ。というかもう完成されたソフトウェアなんだろうね。今に至るまで10年近くずーっと愛用している。

ただ、文字コードEUC-JPのみってのがイケてない。今時UTF-8だろ?てなわけでパッチ。「-U」オプションをつけるとUTF-8で出力してくれるぞ。あっさりnkfをかましてるだけ。明白。

MigemoUTF-8化しないと w3m で system_charset = UTF-8 にした状態だとMigemoが効かないのだ。

diff --git a/bin/migemo b/bin/migemo
index 5eacf81..22c1121 100755
--- a/bin/migemo
+++ b/bin/migemo
@@ -44,6 +44,7 @@ Usage: migemo [OPTION]
   -s, --separator=STRING Insert String to each regular expression.
   -n, --nocache		 Don't use caches.
   -l, --logging=FILE	 Log patterns to FILE.
+  -U, --utf-8            UTF-8 output instead of EUC-JP.
 "
 end
 
@@ -61,7 +62,8 @@ def parse_options
 		     ['--insert', '-i',		GetoptLong::REQUIRED_ARGUMENT],
 		     ['--separator', '-s',	GetoptLong::REQUIRED_ARGUMENT],
 		     ['--logging', '-l',	GetoptLong::REQUIRED_ARGUMENT],
-		     ['--nocache', '-n',	GetoptLong::NO_ARGUMENT])
+		     ['--nocache', '-n',	GetoptLong::NO_ARGUMENT],
+                     ['--utf8', '-U',           GetoptLong::NO_ARGUMENT])
 
   parser.each_option do |name, arg|
     options[name.sub(/^--/, "")] = arg
@@ -156,7 +158,11 @@ def main
       regex_str = [regex_str1, regex_str2].join(bar)
     end
 
-    puts regex_str.kconv(Kconv::EUC, Kconv::UTF8)
+    if options['utf8']
+      puts NKF.nkf("-Ew", regex_str)
+    else
+      puts regex_str
+    end
     puts options['separator'] if options['separator']
     logger.puts(pattern) if logger
   end

2009-12-16

[][][]20秒で理解するホッテントリメーカー活用術

no titleはイカしたタイトルをつけてくれるサービスだ。ブログ書きのお供に。

生成されたタイトルをさくっと知りたいときは、Unix使いならば出力を加工するよね。

テキストブラウザw3mをHTML→Plain Textコンバーターとして使う。そして、タイトル行をgrepで抜き出せばよい。w3mの出力のエンコーディングは個人設定に依存するのでnkfUTF-8にしておく。以下のコマンドで「ホッテントリ」に関するタイトル生成結果を抜き出せる。

w3m -dump http://pha22.net/hotentry/title/r\?word=ホッテントリ | nkf -w | grep 推定


Emacsから使う

俺みたいにEmacsブログを書く人には、Emacs内で実行してくれると嬉しい。

以下のコマンドを定義しよう。そして M-x hotentry-maker を実行する。もっと他のタイトルを生成したければ C-x ESC ESC (repeat-complex-command) RET で再実行した結果をとってくれるぞ。


(defun hotentry-maker (title)
  (interactive "sHotentry Maker Title: ")
  (set-process-sentinel
   (start-process-shell-command
    "*hotentry maker*" "*hotentry maker*"
    (format "w3m -cols 130 -dump 'http://pha22.net/hotentry/title/r\?word=%s' | nkf -w | grep '推定'" title))
   (lambda (&rest args)
     (set-window-start (display-buffer (get-buffer-create "*hotentry maker*")) 1))))

2009-10-19

[][]餅は餅屋

editorinjection - 接続法第三式

w3m を使っていると, textarea などに対して sensible-editor として nano が呼び出される. nano 自体はあまり好みではないのだけど,この仕組みは非常に優れていると思う.

そう。俺はgnuclientを指定しているが、w3mEmacsの力が加わったような感覚でいい感じに融合しているように感じる。

Emacsの「すべて」の機能がtextarea編集に使えるのはとてつもなく強力だ。

w3mを愛用してはや10年。これから10年後、ハードディスクが100TB、メモリが64GBになっても俺はw3mを使っているはずだ。長年使っていて手になじんでいるのだ。

最終的に何らかの文字情報を入力することが目的であれば,それは JavaScript で場当たり的に機能を補完したりとかいった方法ではなく,ユーザが使い慣れているテキストエディタに丸投げ するという方法で解決されるべきだ.餅は餅屋.そうすれば,サービスごとの仕様差に発狂したり*1, Ajax とか名前がかっこよくなっただけで本質的に何も変わっていない JavaScript の実 行速度ばかりに特化したチューンナップがもたらした細々した謎仕様に辟易したり*2,怒りにまかせてブログにだらだらと長文の文句を書き殴ったあげく誤って戻るボタンを押して憤死したり *3することは無くなる.

まあ冗談はともかく,これは改善されないといつまでたってもブラウザ主体の生活にはなり得ない…というのはこだわり過ぎかなあ. Firefox だけで生きている人は見たことがないけど, Emacs だけで生きている人はいるんだよね. Emacs をただのテキストエディタと呼ぶのは詐欺過ぎるし,これは同列に比較してはいけないのだけど.

「餅は餅屋」に大賛成。なんというかサイトごとに入力機能を強化してるのは車輪の再発明みたいで好きじゃない。というか、そこまでいくともはや「ブラウザ(閲覧するもの)」の範疇を超えている。

俺はEmacs上でいろいろと入力環境を強化しているが、ブラウザ(Firefox)だけで操作するとなると、それらが使えなくなるのがとてつもなくつらい。初期状態でもkill-ringとかdabbrevとかがあるよね。ブラウザに入力するときにはいつもEmacsを呼んでいる‥いってみればEmacsを『超強化されたIME』としても使っている。一見不便そうだけど、素早く切り替えができて快適に入力できるのであれば、それでいいじゃないか。

2009-01-13

[][]w3m-autopagerizeの現在の状況

  • 本家AutoPagerizeからサイトデータ(SITEINFO)を取ってくる
  • SITEINFOをDSLベースのRubyスクリプトに変換する
  • ユーザが新たなSITEINFO DSLを定義できる
  • 対応していないサイトはOperaのfast forwardのように次のページを示唆するリンクを探して飛ぶ
  • 次のページへ移ったら、さらに次のページを内部で取得する

次のページに移ったとき、たいていの場合はさらに次のページに移るはず。だから次のページに移ったときにさらに次のページをprefetchしておく。w3mはasyncじゃないが、w3m-autopagerizeはdRubyベースのサーバなのでユーザが次のページを読んでいる間にさらに次のページの準備をしておくことができる。そして、予測通りさらに次のページへ飛んだら、prefetch済みなので一瞬で画面が切り替わる。

と、書いてみたんだが、Firefoxユーザが独自で本家AutoPagerize用のSITEINFOを作成しているかもしれない。となると、そのおれおれSITEINFO(JSON)をそのまま使えるようにしたほうがいいのかな??