たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。
の動向はもえじら組ブログで。
宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。
以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
Firefox 3 Hacks にあるSQLがあまりに長い件 - hogehogeでツッコミを入れられてしまいました……SQLむずい><わけわかんない><
SQLといえば、Firefox 3.5でも機能に影響を与えない範囲で内部的なSQL文がいくつか修正されたそうでるかもしれないそうだ。
でもTrunkにチェックインされたパッチを見ても、どうしてこれで速くなるのか、何が良くなかったのかが、さっぱりわかんない。
XUL/Migemoのロケーションバー周りの機能でもSQLをがんがん使いまくってるけど、Firefox 3 Hacksの件で明らかなように僕のSQL知識不足は深刻なので、きっと物凄いオーバーヘッドがあると思う。誰か改善してくれないかなあー。
OperaのオフィシャルサイトでOperaの過去のバージョンの歴史が公開されているということを、Opera の歴史 - A blog? with Σαιτωを見て知った。
フォクすけのFirefoxの歴史ポスターもアップデートの必要アリかしらん?
Mozillaにまつわるグッズを見かけた人に「あれ、これってMozillaじゃね?」と反応されてそこから話が広がった経験というと、もえじら組のスペースを訪れた外国人旅行客に「ワオ! Firefox?!」みたいな反応をされた事くらいしかないです。
いやもえじら組はMozillaともFirefoxとも一切関係ありませんけどね! 関係ないったらないんですからね!
僕をRubyの人にさせるんだったらRXPCOMでも作ってくんないと無理ですよ!(←Ruby覚えてもアドオン開発以外やる気なしなのか!) とかなんとかこないだ会社で言ってたけど、調べてみたらもうありました、rbXPCOM。
Mozilla Fluxで取り上げられてて知ったけど、いつかのチュートリアルがMDCに掲載されたようです。英訳して使いたいというオファーがあったところまでは把握してたけど、その後どうなったかまでは知らなかった。
2、3、4章の頭にクレジットが入ってるから会社の宣伝になってくれるかも?と思ったけど、これ英語ですから! 日本の人は見ませんから!(しょぼーん)
可知さんのライセンスの話もちゃんと英訳されてる。この付録のパートは外した方がいいんじゃないの的な話もあるみたいだけど、個人的には、ライセンスのことがよく分からなくて手を出さないという人がいるんじゃないかとか、よく知らないままライセンス違反してしまう人が出てきやしないかとか、ライセンスがついてないコードが世に出ても自分のアドオンの中に取り込めないからできればみんなライセンスをきちんと設定しといてほしいなあとか、そういう事を考えて付録にしてもらってたので、できれば今後も残しておいて欲しいところだ。
ざっと見て2カ所誤記を見つけた(もしかして元の日本語版にあったミスだろうか……)ので直しておいた。
ディスカッション用のページを見るに、現状の「Firefox拡張機能開発チュートリアル」の英訳版はあくまでスタートラインで、これを叩き台にしてもっと内容を拡充したいという意向があるようだ。でもこれにはちょっと複雑な思いがある。元はといえばSoftware Design誌に掲載するために書かれた記事なので、紙面の都合上だいぶコンパクトに内容をまとめてあって、物足りない部分は多々あると思うんだけど、逆に言うと、「最低限これだけ押さえておかないと」っていう点に厳選して書いてなおこれだけの分量があるので、無闇に内容を書き足すと「こんな長いの読んでらんないよ!」と初学者をウンザリさせてしまうんじゃないかと僕は危惧してる。(という風なことをコメントに書き足してみた)
ともあれ、非英語圏発のコンテンツが大きく取り上げられる事ってあまり多くないと思うので、感慨深いです。
会社の近くのインドカレー屋にどうやらお得意さん認定を受けてしまった模様です……他の客がいない時にたまたま行ったら、ちょっとサービスしてくれた。
週に4日連続で行くとか同じ日に昼と夜の両方行くとかそういう事をやってるとこうなるという訳ですね。
いや今日はホントはうどん食べたいなと思ってたんですよ? でもコンビニ行ったら今日は目当ての品が入ってなくてたまたまカレーにフォールバックしただけなんですよ? まあ月曜もフォールバックしてカレーにしちゃいましたけどね?
フォールバック先がインドカレー屋ってのがそもそも変ですか。
今更だけど、「xUnitってなんやねん」というのがよく分からなくて須藤さんに訊いたら英語版WikipediaのxUnitの解説を見るといいと言われたので見てみたところ、日本語版のxUnitのページには無かったxUnit自体の解説がちゃんと含まれてたので、アカウント作って英語版の内容を翻訳して日本語版の方に追加してみた。
英語版によると、「フィクスチャ」と「テストスイート」と「setup→テスト本体→teardownという順番で実行すること」と「アサーション」といった点がxUnitの特徴であると。これらの特徴を備えたテストフレームワークを一般にxUnitと呼ぶと。そんな感じですか。つまりUxUもxUnit型のテストフレームワークの一種である(→UxUはxUnitである)というわけですね。知らんかった。(ぉぃ)
あと、なんでアサーションはアサーションなのか(検証=verifyじゃなくて表明=assertなのか)というのがずっと疑問だったんだけど、これは契約プログラミングという概念に由来する表現なのか。プログラミングなのに契約ってどういうことなんだ? 「規約」とかの誤訳なんじゃないのか? と混乱したけど、説明によると、サブルーチンの呼び出し元はサブルーチンに対して「契約」上のルールに則った値を渡す義務を負い、サブルーチン側は呼び出し元に対して「契約」上のルールに則った値を返す義務を負う、義務が果たされない=契約違反が生じたらその時点ですべての処理をストップする、という風にあったのでなるほど確かにこれは「契約」で正しいなと納得した。
エントリ書きかけの状態でうっかりタブ閉じたか何だったかで書きかけの文がどっか行っちゃって、書くの忘れてた。
コンテキストメニューの展開が場合によってはとんでもなく遅くなる問題については、一応の解決を見たというかこれ以上は自分の頭では速くできないなあという所まで行き着いた感じ。やったことはというと、メニュー展開時には最初と最後のURI文字列だけ検出して、それ以外は実際に操作を確定するまで検索しないようにしたっていう、実に単純なアレですハイ。すぐに処理を打ち切るようになったから選択範囲の大きさはもう影響しなくて、選択範囲の始点(終点)からその中に含まれる最初(最後)のURI文字列までの間にあるURIっぽい文字列の数によって、遅くなるかどうかが決まるという感じになりました。
その関係で、メニュー項目をポイントした時に選択範囲に含まれてるURI文字列をツールチップで列挙するにあたって、ツールチップの内容をちょっとずつ更新するようにした。これにはJavaScript 1.7以降のyieldを使っていて、yieldがあったからこれができたと言っても過言ではない……と思う(Firefox 2未満を切り捨ててなかったらこの決定はできなかった)。とにかくみんなyieldをもっと活用するべきだよ! と今更ながらに推してみたりして。
細かい事だけど、「一部だけ選択されてるURI文字列」というのを考慮するにあたって、選択範囲の境界がURIに含まれうる文字である場合は、URI文字列らしき文字が出現し続ける間Rangeを前後に拡張する、という風に考え方を変えてみた。今までみたいに固定の文字数で前後にRangeを拡張するのと違って、ある意味では無駄なくURIを検出できるようになったんじゃなかろうか。オーバーヘッドの大きさで相殺されちゃってる気もするけど。
某スレで僕がtextLink.uc.jsの普及を阻害している!これは陰謀だ!的な書き込みがあって吹いた。どっからそんな発想が出てくんだ。……と思ったけど、よく考えてみたら確かに前々からuserChrome.jsスクリプトにはどちらかというと否定的というか批判的な発言をしてきてるから、そういうことをやりかねないと思われるのも無理はないのか。(ちなみに、改めて言っとくと、本来userChrome.jsを使うのに相応しくない知識レベルの人がホイホイ使ってドツボに嵌る事とか、自動アップデートのできないスクリプトをそういう人のために作ったり配ったりする事とかに対して僕は否定的なのであって、全部織り込み済みで使う人や、技術者レベルの人向けにしれっと公開する事とかについては、僕がとやかく言う筋合いではないと思ってますよ。)
で、そういえばちゃんと中を見てなかったなと思ってtextLink.uc.jsを見てみたんだけど、networl.enableIDNがtrueだったらフツーに全角英数字で書かれたURIを読み込めるってマジすか! ってか試したら確かにいけてビビった。これって国際化ドメインの仕様? 無い知恵絞って一生懸命変換ルーチン書いたのは全くの無駄だったのか……今更だけど激しい徒労感に襲われました。あと、もしかしたら前にも書いたかもしれんけど、nsIFindを使わないというアプローチに自分は気付いてなかったので、こういうやり方があったのか……と唸ってしまった。まぁ、選択範囲の複数のURI文字列を収集するという風な事をやろうとするとこのままではうまく行かなさそうなので、今の方法を全面的に捨てた方がいいとまでは言えないみたいなんだけど。
2巻と3巻も買ってしまった。ブルーレイは(というかHDは)高画質でいいなあ。
前に「なんでマクロス見てんの」的な事を訊かれて「美男美女が動いてるから(あとメカ)」的な事を答えたら「キモイ」と言われたけど、やはり、綺麗な映像にはそれだけで充分に価値があると思うんだ。それに各巻ちゃんと見せ場があって、「損した」感が全然無い。2巻は2話の、宇宙空間に吸い出されたランカをギリギリで救助するシーンが好き。4話のランカの歌とダンスも可愛くて良い。3巻は5話のランカゲリラライブが見所だし、7話は総力戦な派手さがたまらん。
というわけで4巻5巻もポチった。
まあ正直、買ったからって何度も見返すか?っていうと、疑問なんだけれども。イイ物にはちゃんとお金を払いたい。それを作った人達が報われて欲しい。
旧題:robocopyとcygwinとタスクスケジューラでWindows Vistaを3世代バックアップのまとめ。
Vistaの標準コマンドのrobocopyでシンボリックリンクを除外してミラーリングできることが分かったってことで、とりあえずこんな風にしてみた。前提は以下の通り。
シェルスクリプトはこう。
#!/bin/sh
# 日付を含んだ名前のフォルダにする
destdirname=backup`date +%Y-%m-%d_%H-%M-%S`
destparentdir=/cygdrive/z
# robocopyに渡すためのWindows形式のパス。(ひょっとして不要?)
destparentdir_win=z:\\
# 最終更新日が一番古いフォルダの名前を取得する。
cd ${destparentdir}
targetdirname=`ls backup* -drt | grep -m1 "^backup"`
# で、それを日付を含んだ名前に変える。
mv "./${targetdirname}" "./${destdirname}"
destdir=${destparentdir}/${destdirname}
destdir_win=${destparentdir_win}\\${destdirname}
echo "backup to ${destdir_win}"
# Cドライブバックアップ用のフォルダがなければ作成。
# (後から他のドライブのバックアップも取りたくなった時のため)
if [ -d "$destdir/c" ]
then
echo "old backup exists"
else
mkdir "$destdir/c"
fi
# 古いログを削除。
rm ${destdir}/log.txt
# robocopyでミラーリング。
# * シンボリックリンクは除外(/XJD、/XJF)
# * リトライはしない
# * ログをファイルに出力
robocopy /MIR /ZB /SEC /SECFIX /XJD /XJF /R:0 /LOG:${destdir_win}\\log.txt "c:\\" "${destdir_win}\\c\\"
exit
シェルスクリプトは改行コードをLFにしとかないとbashがエラーを起こすので、気をつけないといけない。いつもそれを忘れてミスる。
で、タスクスケジューラで時々走らせる(bash.exeの引数にスクリプトを渡す)。とりあえずテストって事で3日に1回やってみよう。バックアップ間隔は後で変えるかも。期待通りに動いてるかどうか、後日要チェックだ。
追記。ちょっとスクリプトを修正した。よく考えたらフォルダ名自体を日付にしとけばもっとわかりやすかった……
追記。っつーかそもそもVistaには標準で便利なバックアップ機能があるんですね。知らんかった(マヌケ)。しかし一番魅力的なComplete PCバックアップはHome Premiumには無くてBusiness以上のみ……Home Premiumで使えるバックアップ機能の範囲ではレジストリ等はバックアップできないみたいだし、シャドウコピーも無理みたいだし、もうこれでいいかなあ。つまり、このエントリの内容は「Windows Vista Home Premium以下のエディションでうそっこシャドウコピーとうそっこComplete PCバックアップを<ruby><rb>無料</rb><rt class="読み">タダ</rt></ruby>で実現してみよう」という内容に相当するわけか?→ということでタイトル変えてみた。
2020年1月7日追記。ここから10年が経過した現在は、Windowsのバッチファイルを使わずにrsyncを使っています。重要なのは以下の2点です。
/mnt/c/
配下の任意のディレクトリをQNAPに同期するWSLって何?という方はまんがでわかるWSLあたりをご参照下さい。