2009-06-01 [長年日記]
_ .git を小さくする git gc って結構効果あるのね
例によってログから。
19:07:23 >wtnabe< ちょっと bundle ファイルが無駄にでかくなってきた
19:07:46 >wtnabe< git の repository の comapction みたいなことってでき
るんだっけ
19:08:32 <eban> @wtnabe git gc
19:08:51 >wtnabe< @eban すばやいw ありがとうございます。
19:09:36 >wtnabe< うっかり手抜き発言をすると光の早さでツッコミが入る
(ただしものすごく一部の情報だけ)のはありがたい
いやもうほんと、そんだけっす。知識はあったけどやってみたことなかった。
ずっとやってなかったせいもあるけど期待以上に .git が小さくなってビックリ!っていうか、意外に .git は無駄が多いんだなってことを初めて知った。今度からちょこちょこ実行するようにしよう。
2009-06-02 [長年日記]
_ Nostalgy の save は move
しょっちゅうハマるのでメモ。
10:51:09 >wtnabe< いつまで経っても Nostalgy の save が move だと気づけ ない 10:54:31 >wtnabe< うっかり save してその後、うわぁしまったって慌てて move 先で該当メールを検索して copy し直さないといけない。 10:54:37 >wtnabe< なんで save なんて名前にしたの。
copy じゃないものを選べ!
_ 妙なライブラリの名前とコマンドラインオプション
12:34:24 >wtnabe< あ、ubygems.rb っていうそういうことなのか。何この
typo 対応とか思ってたけど、こりゃー一本取られたわ。
12:59:32 <eban> @wtnabe un.rbもそういう意味
何のことかというと、例えば手元の MacPorts で入れた Ruby の library の中の一部はこうなってるんですよ。
$ ls -1F /opt/local/lib/ruby/vendor_ruby/1.8/ gauntlet_rubygems.rb i686-darwin9/ rbconfig/ rubygems/ rubygems.rb ubygems.rb
rubygems.rb があるのにこの ubygems.rb って何よ?
と思ってたわけです。しかも中身は
$ cat ubygems.rb # This file allows for the running of rubygems with a nice # command line look-and-feel: ruby -rubygems foo.rb #-- # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. # All rights reserved. # See LICENSE.txt for permissions. #++ require 'rubygems'
しかない。
なんじゃそれ!
と思ったけど、これはこうすると分かる。
$ ruby -rubygems.rb -e 'puts "foo"' foo
どういうことかと言うと、
$ ruby --help Usage: ruby [switches] [--] [programfile] [arguments] -0[octal] specify record separator (\0, if no argument) -a autosplit mode with -n or -p (splits $_ into $F) ... -rlibrary require the library, before executing your script ...
ニクい。ニクいよアニキ!
2009-06-04 [長年日記]
_ ViewSourceWith なんてものを見つけた
ViewSourceWith :: Add-ons for Firefox
実は最近ずっと困ってたんですよ。
- いつの頃からか Thunderbird 2.x と External Editor の組み合わせがまともに動いたり動かなかったりするようになった*1。
- 自宅の IntelMac に限って It's All Text ! でエディタを開くと一気に55個とかエディタが起動してうんざり。
でもいっぺんに解決! ViewSouceWith っていう名前からは想像できなかったけど、これは Firefox でも Thunderbird でも外部エディタ起動用拡張として使える。
ただし、外部エディタ起動専用の拡張ではなく、
今フォーカスの合っている部分のソースを指定したアプリで開く
ためのものなので少し注意が必要。
textarea の編集に使いたければ textarea にフォーカスを合わせておかないといけないし、メールの編集に使いたければまずメールの送信画面の本文のところにフォーカスを合わせておかないといけない。
いつ何時でも「長文を書くために外部エディタを開く」という形で使えるわけではない点だけ分かれば、Firefox でも Thunderbird でも使えるというのはとてもありがたい。二つの問題が一気に解決してしまった。素晴らしい。
*1 具体的にはメールを書いていたエディタを拡張が見失ってメール作成ウィンドウにフィードバックできなくなる。そのくせエディタを閉じないとメール作成ウィンドウは閉じれませんとブータレる。実際にはエディタは終了しており、このダイアログを強制的に閉じる手段もない。つまり Thunderbird そのものを強制終了する以外に回復方法がない。
2009-06-05 [長年日記]
_ phpdoc の出力が使いにくい
phpdoc と自分が呼ぶ場合は
phpDocumentor: The complete documentation solution for PHP
のこと。
pear install PhpDocumentor
で入るもの。
で、これを毎日回して trunk の code の apidoc を自動生成してるんだけど、この際、どのファイルを parse してるとか書き出してるといった様子が全部 stdout に吐かれる。そう、全部。
- Hidden(読み込まないファイル)
- Reading
- Proccessing
- Sorting
- Formatting
- Building
- Writing
- WARNING
- ERROR
全部ぜーんぶ。鬱陶しい? オプションを紹介しよう。
-q --quiet do not display parsing/conversion messages.
Useful for cron jobs on/off default off
だけ。on か off しかないの。
こういう情報って、とりあえず ERROR だけ欲しいよねぇ。ERROR 起きてたらそれを通知するとか、そういう使い方するもんでしょ? この吐き方はどうも、作ってる人もこの情報活用してない感じがする。これじゃー開発時にも自分の欲しい情報をすぐ取り出せないっしょ。
うーん。どうしようね。awk とか絡めて何か作るしかないのか…。いや、普段自分は気をつけて commit しているのであんまり ERROR 起きないんだけど、気をつけなきゃいけないのがダサイし、自分と同じ気をつけレベルを他人に強要、いや期待する段階でダサイし、現状はとにかく不確実である。
確実な動作を検証する方法があるはずの不確実なものに人間の注意で対応するのは我々の仕事としてはダメでしょう。
2009-06-08 [長年日記]
_ vcat なんてものを作ってみた
vertical cat のつもりだけど、あれ意味反対か? horizontal か? そうかもしんない。まぁいいや。
何をするかというと、フツー
cat file1 file2 > dest
ってやるとできあがるファイルは
file1の内容 file2の内容
って繋がるでしょ? これを
file1<TAB>file2 file1<TAB>file2 file1<TAB>file2 ...
ってくっつくようにしたもの。
例えば何かをフィルタで処理して結果を出力しちゃったんだけど、後から before と after を並べて印刷したい、とか思うこともあるわけですよ。そういうときにいちいちそのフィルタ書き換えて before と after 並べて出力するようにしなくても、これを通せばすぐできるよ! というやつです。
なんか気づくと cat 系のものをよく作ってる気がする。
え。コードがハイライトされてないし、何か分からない? ったく最近の若いもんは! awk に決まってるでしょ!
[追記] 各所でツッコミが。
うっうっ。以下言い訳。
- paste という名前で動作が予想できないので、いざ使うときに名前を思い出せない
- man を読んでも意味が分からなかった
きっとこの両方だったに違いない。
ん? あ! そうか! cut と対になってるじゃん! がーん。不覚っ。
2009-06-10 [長年日記]
_ システム屋以外向けの JavaScript 本探したけどいいの見つからず
今さらですが、書いている時点で4ヶ月前の情報ですorz
ずいぶん前に HTML, CSS, 周辺技術関係の本を一度整理したことがあるけど、こういう感じで JavaScript の本てないかなーという要求が発生した。
14:56:55 >wtnabe< まともな jQuery 本てあるのかな。jQuery 本が存在してる
のは知ってるけど。
14:57:26 >wtnabe< JavaScript を基礎から知る必要はないけど一つの幅として
jQuery くらいなら使えるといいなぁという人にお勧めの本
てなんだろう?
14:59:44 >wtnabe< monjudoh に DM 飛ばしまくると教えてくれるかな
15:07:43 >wtnabe< openspc の人の本があるな
15:08:36 <monjudoh> @wtnabe バージョンアップが速いので割といい本が出て
もすぐに陳腐化しちゃう感じだねー
15:09:55 >wtnabe< @monjudoh 開発者に読ませたいわけじゃないので、基本的
な考え方が身に付けばよいのですが、さすがにあんまり適
当なのはイヤだなぁという程度で考えますお。
15:10:49 >wtnabe< The GoodParts はやっぱ読んどいた方がいいのだろうか。
そういえば JavaScript を教えたことってないかもしれな
いなぁ。
15:14:35 <monjudoh> @wtnabe まるごとJavaScript&Ajaxかなんかで
@amachang が書いてた奴でいいんじゃない?
15:15:16 >wtnabe< @monjudoh ふむる。確認してみるです。
15:16:21 >wtnabe< @monjudoh あざーす
この時点で気になっていたのは
- まるごとJavaScript & Ajax ! Vol.1(天野 仁史/舘野 祐一/川崎 有亮/arton/田中 孝太郎/国分 裕/山本 有悟/海野 裕也/nanto_vi)
- JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス(Douglas Crockford)
- 実践!Ajaxフレームワーク jQuery(古籏 一浩)
20:38:35 <wtnabe> ビーンズなう
20:41:36 <wtnabe> Plagger本なんてあんだな
21:05:36 <wtnabe> 「まるごと」はやっぱ開発者向きだなあ
21:29:36 <wtnabe> あんまりいい本がないなぁ。いまどきFx&Firebugをベース
にしないとかあり得ん。
21:32:36 <wtnabe> オライリーのPrototype本のjQuery版みたいなのが欲しいん
だな、きっと。
結局買わずに帰ってきた。
22:01:47 >wtnabe< あんまり人に読ませたい JavaScript 本てないもんだなと
思った。O'Reilly のバイブルなんかは読みたい人が読む本
であって読ませたい本とはなんか違う気がする。
22:03:29 >wtnabe< 言語の基礎のある人が言語として JavaScript に取り組む
ならああいうのでいいんだけど、数ある Web のフロントエ
ンドの技術の一つとして取り組みたい人にとって文法の詳
説はそんなに重要じゃないんだよな。
22:05:12 >wtnabe< 特にデザイン方面向けの良書がない印象。デザイン方面向
けはFlashが恐ろしく充実してるんだけど、これは恐らくツー
ルが完結してるからなんだろうな。
22:05:51 >wtnabe< 昔からあるDirectorを極める、Photoshopを極める、のと同
じスタンスでFlashを極めることでこんなことできるよ!と
いう分かりやすさが重要なんだと思う。
22:06:49 >wtnabe< 対してJavaScriptに取り組む際にはHTMLもCSSも避けて通れ
ず、このツールを極めればこんなことできるようになるよ!
という提示もできない。
22:07:39 >wtnabe< だからきっとデザイナ方面ではJavaScriptはまだなんかよ
く分からないうえになんかちょっとダサイ子みたいに映っ
ているのではないかという印象を本屋の棚の前でぼんやり
抱いたのであった。
22:11:36 <takedasoft> @wtnabe prototype & script.aculo.us で遊んで動く
面白さを体験してから、JavaScript第5版って感じで
すかね。ActionScriptは、面白さが先に来てるのがい
いところかも。
22:16:34 >wtnabe< @takedasoft そうですねぇ。昔の本はうざいだけの小技が
多く、最近の本は骨太なのが多くて間が欲しいなぁって感
じです。あとビックリするほど装丁がださくて読みにくい
本が多いですね。
22:20:36 >wtnabe< そういえば The Good Parts は特におぉと思うところがな
かった
22:22:29 >wtnabe< 独習とjQuery+JavaScript実践リファレンスは惜しいと思っ
た。これを足して2で割ってツールをFx+Firebugにすると自
分の欲しい本に近くなる感じ。
22:26:36 <takedasoft> @wtnabe ww、確かにJSユーザーは完全に二極化して
ますなぁ
Prototype & script.aculo.us 本は分量的にも値段的もテーマ的にもとてもよいと思う。Prototype.js を使っているならまったく文句はない。
「独習」は O'Reilly ほどゴツくはないにしろまぁ教科書だよね。外れじゃないんだけど面白みはないかな。
jQuery + JavaScript実践リファレンスは求めていた jQuery 本にかなり近いんだけど、せっかくの JavaScript なのにガッツリ Windows 依存で環境を作ってしまっている点がにんともかんとも。Firefox + Firebug でいいじゃない。このご時世になぜに Windows ベッタリだ。
2009-06-13 [長年日記]
_ IE 8 の standard mode では img の alt がツールチップ表示されない
Windows Internet Explorer 8 の変更点
alt 属性は、ブラウザが IE8 標準モードで実行されている場合には、イメージツールヒントとして表示されなくなりました。代わりに、 longDesc 属性のターゲットが存在する場合は、これがツールヒントとして使用されます。それ以外の場合は、 title が表示されます。alt 属性は、依然として Active Accessibility 名として使用され、title 属性は、alt が存在しない場合にのみフォールバック名として使用されます。
結構大きな変更なのにニュースサイトでは CSS や JScript の変更、あるいは DOCTYPE スイッチそのもの変更のようには伝えられてないですね。ちゃんと情報追いかけている人は blog, microblog でちゃんと書かれてますけど。
まぁまだいっかなーとか思ってたんだけど、
Windows 開発統括部 Blog : Internet Explorer 8 日本語版の自動更新が始まります。
ということですでに 5月25日から自動更新で入ってきてるらしい。あれれ。
2009-06-22 [長年日記]
_ Acceptヘッダって大事なんだね
今日以下のような現象に出くわした。
| ブラウザでアクセス | 200 OK |
| RestClientでアクセス | 406 Not Acceptable |
サーバサイドのコードでは 406 なんて吐いてないので debug しようにもできなくてオロオロしていたんだけど、HTTP をよーく見比べていたら RestClient の方は Accept ヘッダが期待より少なかった。あーなるほどね。こういうことね。
今回の確認には以下のツールを利用した。
Firefox + LiveHTTPHeaders
ngrep
LiveHTTPHeaders は恐らくもう常識だし、IE などにもこういうツールはあるみたい。でも特定のブラウザに bind されているツールは当然ながらブラウザ以外の HTTP クライアントでテストしているときには利用できない。そして GUI じゃない HTTP クライアントを使った方がテストしやすいケースって案外ある。
ぜひあなたのポケットにも ngrep を。
何の話だっけ。
2009-06-24 [長年日記]
_ find -mmin で1時間以内に変更のあったファイルを取り出す
ずっと思っていたことがあったんですよ。
なんで find の -Xtime オプションて time と言いつつ日数を引数に取るんだろう? 数時間以内の変更ファイルとかどうやって抽出すればいいの?
-Xmin で簡単にできました。
例えば
find ~ -mmin -60
ってすればホームディレクトリ以下で 1時間以内に変更のあったファイルが取り出せます。(主にブラウザのキャッシュが引っかかるでしょう。)
2009-06 現在で現役の BSD find も GNU find も同様に動きます。なんてこった。全然知らなかったよ。いつからある機能なんだろ。
関連つぶやき
11:07:34 >wtnabe< find は分とか時間単位で直近のファイルを探せたら便利な
んだがな。その場合は基準になるファイルを用意しなきゃ
いけないのが面倒。
13:09:27 <showchan> @wtnabe -atimeとかじゃだめすか
14:20:17 >wtnabe< @showchan あ。最近のものは単位を与えられるのですか。
14:22:05 >wtnabe< @showchan ん? GNU find には単位を与える方法はないよ
うな?
14:24:30 <showchan> @wtnabe -atimeとか-aminとかあるみたいですよ。man
find によると
14:26:27 >wtnabe< @showchan あー -amin -mmin か。これは便利そう。ありが
とー。
14:28:57 >wtnabe< 基本的なツールだったり、すでに使い込んでるツールでも
たまに changelog とか man とか読み込まないとダメだなー
2009-06-25 [長年日記]
_ emacs の replace-string が便利、だけど
えーと要は正規表現を使わない単純な文字列の置換、のはずなんすけど、予想外に賢い(?)動作をします。twitter のログより。
19:39:56 >wtnabe< Emacs の replace-string って大文字小文字をいい具合に
扱ってくれるんだな。知らなかった。
19:45:28 <yuuitiro> @wtnabe ぬぬぬ、「いい具合」とゆーのはどんな感じな
のでしょう? 興味あり!!
19:46:45 >wtnabe< @yuuitiro いやーなんか foo -> bar で replace したら
Foo がちゃんと Bar になったんで、すげーなーと。
19:51:27 <yuuitiro> @wtnabe へーへーへー。それは知らなかった。。。。あ
りがとうございます〜!。
これは便利。
なんだけど。考えたら大文字小文字をちゃんと区別して特定の文字列だけ置換したい場合にはどうしたらいいのか分からないな。
……。まぁいいか。
2009-06-28 [長年日記]
_ writemaps は面白いけどイマイチ
WriteMaps Site Map Application: Create, edit, and share your sitemaps online.
Web 上でサイトマップを作成できるという writemaps というサービスを試してみました。以下感想。
> WriteMaps は Google が買収したらいいんじゃないか > WriteMaps は Sitemaps XML を吐けるみたいだけど priority を指定できない とあんまり嬉しくないような。XML を吐くだけのツールなんてそれなりにある だろうに。 > JSON で export, import できるのはいいと思う。
確かにサイトマップを Web 上で編集できる。でも基本的にそれだけ。
と思っていたんだけど、後日(7/12)…
> うへぇ。WriteMaps は note の中に保存したものは全部化けちゃうのか。 > しかも JSONで export したら \u 形式じゃなくて URL エンコードしてるっぽ い? なんじゃこりゃ。 > 英語でreportを送るなど。アイディアは面白いけどJSON encodeを間違う辺りは ちょっとどうなんだ。普通にライブラリ使って吐けばあんなことにはならんと 思うんだが。 > pull request なんかは個人的な mail って感じで緊張するけどサービスに対す る feedback は英語でもあんまり緊張しないことが分かった。 > 基本的にはぐぐるさん翻訳をくっつけて送るだけだしな。 > というわけでWriteMapsは今のところPageNotesが保存すると化ける(保存前は 普通に読めてる)、JSONでexportする形式がおかしい、という問題があります。
結局
> writemaps が残念だったのでとりあえず出よ OmniGraffle
ということでした。
[2009-09-03] 文字化け直ってなかったよ。2ヶ月近く経ってるのに。ダメなのかもしれない。
2009-06-30 [長年日記]
_ linkchecker を OSX w/ py25 で使う
複数の人間で Web を作る場合、最後にリソースが適切に揃っているのか統一的にチェックする手法が必要になると思います。*1
その際、どういうツール使うのがいいのかなーと去年調べまして、今のところ
Check websites for broken links ― LinkChecker
がいいのかな、と考えています。Python を使ってて Windows でも Linux でも動くし、結果が見やすいのも気に入っています。
しかしこれ、OSX で動かそうとしたときにハマります。*2
File "/sw/lib/python2.5/site-packages/linkcheck/director/console.py", line 30, in <module> stderr = codecs.getwriter(_encoding)(sys.stderr, errors="ignore") File "/sw/lib/python2.5/codecs.py", line 930, in getwriter return lookup(encoding).streamwriter LookupError: unknown encoding: X-MAC-JAPANESE
はいはい、ぐぐる先生ぐぐる先生。
……。
ねぇ。どんだけ調べても linkchecker でこの現象にハマっている事例は見つかりません。見つかるのは Django とか Trac とか。くそー、linkchecker はマイナーだったか。
で、どうもこれは Mac で Python のツールを動かすときには必ずハマる道らしい。うへー。ばかばかしくね? ばかばかしくね?
というわけで今回は以下のように修正しました。
こう直すべきなのかどうかは分からないです。
Python 2.6 で直ってるとかいう話もあるようですが、すべてのツールが 2.6 で動くように書かれてるわけでもないでしょうし、なかなか面倒な話ですね。
※ たぶん Python 2.6 を入れた状態で、fink も macports も使わずに野良で、あるいは自分でそれ用のパッケージを作って linkchecker を入れればいいんじゃないかなという気がしますが、やってみていません。
_ MacPorts の正しいアンインストール
上の話とは別に以下のような問題にハマっていました。以下はハマりから解決するまでの twitter のログ。
> python25 を activate できない > activate できないので python製ツールが port install できない > MacPorts で Python がインストールできないっていう症状はそんなポピュラー じゃないのかな。なんか、以前は普通にインストールしたような気もするし なぁ。 > 意味が分からん。install されてるからダメって言うくせに uninstall しよ うとすると install されてないって言うし。 > pkgdb みたいなのってあるんだっけ > あー uninstall できた。+macosx まで全部要るのか。 > uninstall したがやはりダメ。 > install できてないのに install できてるとして registered ってなんなん だ > /Application/MacPorts の中の Python てなんだ > 以前一度 MacPorts 全部消して入れ直したときに残ったのかな、これ。 > それっぽい。macports.conf の中に applications_dir として定義されてる。 そういうことか。 > あーやっと通った。MacPorts 消すときは /opt だけ消せばいいんじゃないの かぁーーーー。
数日前に MacPorts を一度全部消して入れ直していたのですが、そのとき /opt しか消していなかったのです。どうやら Python はそれだけでは完全に削除されないらしい。という話でした。