Home > Latest topics

Latest topics 近況報告

たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。

萌えるふぉくす子さんだば子本制作プロジェクトの動向はもえじら組ブログで。

宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! シス管系女子って何!? - 「シス管系女子」特設サイト

Page 28/248: « 24 25 26 27 28 29 30 31 32 »

「巻き戻し/早送りボタン」でクラッシュする件 - Mar 16, 2011

14日くらいから、Rewind/Fastforward Buttonsを入れてるとFirefoxが頻繁にクラッシュするという現象が発生するようになっているようです。wedataのAutoPagerize用データベースに新しく追加された項目がトリガーになって、長すぎる正規表現か何かの制限に引っかかるようになってクラッシュしているものと考えられます。問題としては認識しているのですが、現在修正のための時間を取れない状態なので、アドオンを無効化するか、about:configで以下の設定を変更して回避して下さい。

  • rewindforward.related.use.siteInfo →falseに変更
  • rewindforward.siteinfo.importFrom → ""(空文字)に変更

焼畑農業 - Mar 09, 2011

ちょっと本題から外れた所で思う所があったので書く。

知識はとても特殊な資源です。他の資源と違って、知識は複製可能です。他の資源は人にあげると自分の手持ちが減りますが、知識だけは減りません。つまり与えれば与えるほど価値の総和が増えるのです。

エントリ全体として「知識を共有しよう! 知識はギブしても価値は減らないよ! ギブすると価値が増えるよ!」という方向で話が進んでいるのだけれども、しかし、ギブすると知識の価値が減るという面は確かにあるのですよね。

それは、希少性という価値。「情報を持ってる人が、情報を持っていなくて欲している人に対して、対価を取って情報を渡す」という、非対称性を利用して情報格差から金を生む方法が、希少性のない情報に対しては使えなくなってしまう。

わかりやすい例を挙げると、いまどき「いんたーねっとのつかいかた」とか「いーめーるのつかいかた」とか「うぇっぶさーふぃんのやりかた」とかを教えるセミナーを開いた所で儲かりゃせんやろ、って話です。そういう情報がどんどん広まって「当たり前」「知ってて当然」の事になっていく事によって、それを教える事で生計を立てていた人は職を失う訳です。

そういう話があるから、情報をシェアするという事に対して拒否反応を示す人がいるってのは変な話ではないわけですよ。やっぱり。

ただ、情報っていう商材は「いくらでもコピーできる。広まる時はすぐに広まる。生産調整とかそういう事はできない。」という性質があって、希少性だけから金を生もうと思っても、大抵の場合はすぐに儲からなくなっちゃうわけですね。

だから、そんな「情報」という物をそれ自体商材にする事はとっとと諦めて、コピーが効かない別の商材を作るための材料にしちゃいましょうよ、って話だと思うのです。西尾さんのエントリの要点は。

で、そういう材料として使う事を考えた時、情報を集めるだけってのは大抵の場合ほんとそれだけに終わっちゃう事が多い気がする。技術系の話を片っ端からブクマして「後で読む」タグを付けてそれで満足しちゃって、一体何が身についたというのさ?って話ですよ。そんな事やってるより、作ってアウトプットしてを繰り返す中で、コピーの効かない「体験」「経験」を増やしていった方がなんぼかマシなんじゃないの、と僕は思うわけです。

JSDeferredを小さくする - Feb 27, 2011

JSDeferredは非同期処理の制御に特化しててサイズも小さくて素敵な軽量ライブラリだ!と僕は思ってるんだけど、世の中を見回してみると「軽量ライブラリ」って言われてる物は3KB未満とかそういうのが結構あるようだし、jQueryも1.5.1のminified版は28KBって書いてあるし、そうなるとjsdeferred.jsのコメント付き版が0.3.4で19KBというのは「軽量」と呼ぶにはひょっとしてちょっとでかいのかな……という気がしてきた。

なので、JS MinifierとかPackerとかそういう風なやつでどれくらい小さくなるのか実験してみた。

/packer/はそのままだと構文エラーで動かなくなってしまった。}Deferred. って部分が7箇所あってこれがエラーになってるので、全部 };Deferred. に置換(Base62圧縮後だと }4.};4. に置換)したら一応エラーは出なくなった。/packer/の構文解析が貧弱なせいっぽいので、JSDeferredの側で問題になる所にあらかじめセミコロンを入れておけば、この問題は無くなるっぽい気がする。……と書いたからか、ちょよんごさんが対応してくれた。ありがとうございます!

あと、closure-compiler を通すと 2668bytes でした (jsdeferred のレポジトリで rake すると URL が出るようになってます)というアドバイスも頂いたので早速Closure Compilerにかけてみた所確かに小さくなったのですが、シンボル類まで全部失われちゃってこれ単体だと他のスクリプトと組み合わせられないのが残念ですね。(Closure Compilerは他のスクリプトも全部合わせて一緒にコンパイルして使うのが前提ってことなんだろう)

家計簿の記入スタイル - Feb 27, 2011

家計簿の目的は「お金の出入りを記録して、自分が知りたい情報をちゃんと把握できるようにしておく事」ですが、そのためには「全てのお金の出入りをもれなく記録する事」、もっと言うと「ちゃんと記録し続ける事」が大前提になります。どんなに素晴らしい情報を引き出せる家計簿のフォーマットであったとしても、毎回の記入が煩わしいと記入が億劫になって、ちゃんと記録し続けるという事ができなくなってしまう。ちゃんと記録し続ける事を重視するなら、自分が使い続ける上で苦にならない記入フォーマットになってないといけないと思うのです。

かといって、知りたかった情報を引き出せないようでも困ります。僕の場合は「食費」「光熱費」くらいは抜き出して集計できておいて欲しい。でも入力はなるべく簡単にしたい、そうでないと長続きしない。

という事で、だいぶ前にそういうわがままなニーズを満たすための自分用家計簿スプレッドシートをODF形式で作ってみたのですが、この度Googleドキュメントに移行する事にしましたので、Googleドキュメント版のSpreadsheetのテンプレも公開しておきます。

(プレビュー)

どうすれば記入が長続きするだろうか? いっぱいレシートを溜め込んでしまった時でも続けて大量に記入しやすいだろうか? という事を考えて自分はこのスタイルに落ち着きました。分類がドロップダウンメニューではなく自由入力になってるのは、「交際費且つ食費」とかそういうケースに対応したかったのと、キーボードからの連続入力で省入力候補とかのIMEによる入力支援がある状況ならこっちの方が便利なんじゃなかろうか?と思ったのが理由です。

ポイントはG列から右の部分で、「分類」の所にざっくり入力した内容をG列から右の所でIFやら何やらの関数を使って集計して、その上で月ごとの食費等を出すようにしています。「食費」と書いても「食事」と書いても大丈夫なように、分類は文字列の部分一致でマッチするようにしてあって、G列から右の部分をコピペで増やしたり7行目のマッチング対象文字列を書き換えたりすれば、他の分類にも対応できるようになってます。

Windowsの言語バーをIMEがONの時にのみ表示する - Feb 26, 2011

ATOKはATOK2011からWindows XP以降の多言語入力のフレームワークにきちんと則った設計になったとか何とかで、独自のフローティングウィンドウ(ATOKパレット)の代わりに、Windows標準の「言語バー」で全ての操作を行えるようになった。それはいいんだけど、使い勝手がちょっと今までのATOKパレットと違って違和感がある。目下のところ困ってたのは、IMEがOFFの時に言語バーが消えないという事。

というのも、ATOKパレットでは「IMEがONになってる時だけ表示して、IMEを介さない直接入力になってる時は非表示にする」という設定ができたんだけど、フローティング表示にしたWindowsの言語バーにはそういう機能が無いようで、直接入力の時でも常に言語バーが出っぱなしになってしまうのです。

普段の利用とか開発の時とかはそれでも別にいいんだけど、全画面表示でDVDとかBDとかを鑑賞したり、Adobe IllustratorやSAIとかの画面をなるべく広く使いたいアプリケーションを使う時なんかには、これが邪魔になる。

じゃあタスクバーに入れとけばいいじゃんって話なんだけど、タスクバーを縦置きして且つ自動で隠すようにしてる僕の環境では、ぱっとデスクトップの右下に目をやった時にIMEがONなのかそうでないのか(何も出てなければIMEがOFFになってて、ATOKパレットがあればIMEがONになってるってことですね)を判別できないので、そっちの方が不便が大きい。

JustSystem的にはこういう場合は言語バーを非表示にするかタスクバーにドッキングさせた上で従来通りのATOKパレットを使うようにしてくれって事らしい。でもそれも何だか芸がないですよね。できれば新しい物を使いたいし、古いオプションがいつまで残るかなんてわかんないし。乗り換えられるようになったらさっさと乗り換えておいた方がいいという事は、自作アドオンのせいでFirefox 1.5にロックインされてFirefox 2にいつまでも移行できなかった時にも痛感したし。だいたい、従来のATOKパレットではアプリケーションを切り替えたタイミングとかで、切り替え後のウィンドウの方でIMEが無効になってる時でもたまにATOKパレットが出っぱなしになることがあったから、以前のやり方に戻しても万全じゃないのです。

それでもうちょっと検索してみたら、そういう事をはてなで訊いてる人がいて、その回答の中でXLangBarというユーティリティが紹介されてた。昔なつかしVzエディタの作者の方の手による物だそうだ。最終リリースが2006年だったりWindows XP+MS-IME2002専用と書いてあったりで、Windows Vista+ATOK2011な僕の環境では動かないんじゃなかろうかとも思ったんだけど、試してみたらばっちり動いた。多分、Windows標準の言語バーを使ってる物だったら何でも使えるんだと思う。Windowsの多言語入力の仕組みが変わらない限りはしばらくは安心して使い続けられる……かな……?

追記。64bit版のWindows 7で試してみたら、XLangBarは起動するものの、機能しないという結果だった。Windows 7だからアウトなのか64bitだからアウトなのかは不明です。

続きを表示する ...

「T京K芸大学マンガ学科一期生による大学四年間をマンガで棒に振る」を見て自分に重ね合わせて見たり見なかったりした - Feb 19, 2011

うっわーこれほんと他人事と思えないんですけど!!! 僕が2期生として入り卒業した後で学科自体がなくなってしまった大阪電気通信大学メディア情報文化学科の出身としては、こう、なんというか、胸に詰まる物がある。

ただ、僕自身そこまで大学に期待はしてなかったというか、それまでWeb標準がらみのやりとりで、高校生の自分よりその技術の事を知らない大人というのが世の中にいるのか!という事にある意味でショックを受けて、大人に訊けば何でも分かるとか、大学に行きさえすれば何でも教えてもらえるとか、そういう期待はもうできなくなっていたと思うのですよね。

とはいうものの、まだ何を自分が生きていく上での道に選べばいいのかは漠然としていたので、文字通りの人生勉強というか、何かしらの雑学知識が身に着けばいいなというか、自分の知らない世界に触れるきっかけだけでも得られたらいいなというか、そういう事には期待して大学に行ってはいたと思う。会社で毎日PCに向かって仕事してる今では、自分からどんどん動いていかないと新しい物なんて全然目に入ってこないなあ、いざ興味を持って知ろうとしてもどこから取りかかればいいのかさっぱり分からないなあ、という事を時々感じる。それを思えば、いろんなトピックが取り揃えられてて、選んで履修すれば最初の方から順番に教えてもらえる(どこから取りかかればいいのか教えてもらえる)という環境はとても恵まれていたのだなあと、改めて思う。

何度か同じ事を語ってる気がするけど、大学って「めちゃめちゃレベルの高い所に行ってそこでしか教われない事を学ぶ」か「そんなにレベル高くない所に行ってサクッと卒業に必要な単位を取ってあとは無駄に教養を深めたり学外で実践して経験を積んだりする」かのどっちかのスタイルで接するのがいいんじゃないかと思うのですよ。どちらにせよ自分からアグレッシブに動く必要があって、ただイスにボーッと座って話聞いて試験受けてっていうサイクルに乗っかってるだけでは、その時間は果てしなく無駄だろう、と。そんなにレベルの高くない大学で、学内で教われる範囲だけで閉じてるっていうのが、一番駄目なパターンだと思う。

竹熊健太郎氏はこうおっしゃっている。 <style type='text/css'>.bbpBox38837663356289020 {background:url(http://a2.twimg.com/a/1297446951/images/themes/theme8/bg.gif) #8B542B;padding:20px;} p.bbpTweet{background:#fff;padding:10px 12px 10px 12px;margin:0;min-height:48px;color:#000;font-size:18px !important;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px} p.bbpTweet span.metadata{display:block;width:100%;clear:both;margin-top:8px;padding-top:12px;height:40px;border-top:1px solid #fff;border-top:1px solid #e6e6e6} p.bbpTweet span.metadata span.author{line-height:19px} p.bbpTweet span.metadata span.author img{float:left;margin:0 7px 0 0px;width:38px;height:38px} p.bbpTweet a:hover{text-decoration:underline}p.bbpTweet span.timestamp{font-size:12px;display:block}</style>

美大系大学に教える立場でいると痛感するのだが、教育者として作家 志願者に教えられるものは「知識」と「技術(方法論)」の2つしかないということだ。それ以前に「どんな作品を創るか」までは教えようがない。最初に創りたい作品のビジョンがない人は、そういう学校に行くべきではない。less than a minute ago via web

美大でなくてもどこの大学だってそうなんじゃないかと僕は思うんだけど、ビジョンまで持った状態で大学に入ってこれるのが(というかそういう目的意識を持ったから大学に入ろうと思って入るというシナリオが)理想なんだろう。でも僕も含めてほとんどの人は、18歳時点でそんなはっきり人生の目標なんて持ててないんじゃないのかなーって思う。漠然と「高卒じゃ仕事なんてないんじゃないの……?」みたいな不安を持ってて、それでとりあえず大卒っていう資格を取っておきたくて大学に行くんじゃないのかなあ。

ビジョンなんて後から見つければいいじゃん、やってるうちに「これ面白いなあ、これを突き詰めたいなあ」って思ったらそれがその人の道になるんじゃないのかな。というのが僕の考えなので、別にビジョン持ってないからって大学に行ったらあかんとか会社に入ったらあかんとかまでは思わないんですよね。まあ美大だと「おまえそんなヌルい事言っとんちゃうぞコラ!!! 才能ない奴は死んでまえ!!!」くらいのノリになっちゃうのが当たり前なのかもなんですけど。美大の入学式で「この中の99%の人は芽が出ずに消えていきます。ここは、その残り1%の人を見つけて磨き上げるための場所です。」という感じの、お前らのほとんどは捨て駒だ的な演説があったとか無かったとかいう話も、どっかで聞いたか読んだかした気がします。

ともかく、危険なのは「大学に行けば何でもある」って思っちゃう事なんだと思う。大学には何があるのか、っていう事だけじゃなくて、大学には何が無いのか、っていう事も、これから大学に進学しようかという年の子には教えてあげて欲しいものです。……まあ、本当にその事を理解しなければいけない、視野が狭い状態になってる人(過去の僕のような人)ほど、言われてもその言葉の意味などきっと理解できないのでしょうけれどもね。

Excelの「AA」とかのカラム名とカラム番号の数値を相互変換する - Feb 15, 2011

96桁目のセルに所定の値が入ったCSVを作る、みたいな事をやらなきゃいけなくなったんだけど、GnumericにしろExcelにしろカラム名が数字じゃなくてA, B, C, ... Z, AA, AB, ... ZZ, AAA, ...というヘンテコ表記になってるからどこのセルに値を入れればいいかわかんないよウワァァァァン!!!! となったのでJavaScriptで解決した。


var input = prompt('input number or column name');
if (!input) return;

var symbols = 'abcdefghijklmnopqrstuvwxyz';
var result;
if (/^[0-9]+$/.test(input)) {
   input = parseInt(input);
   result = [];
   while (input > 0) {
     result.unshift(symbols.charAt((input - 1) % symbols.length));
     input = Math.floor((input - 1) / symbols.length);
   }
   result = result.join('').toUpperCase();
}
else {
  result = 0;
  input = input.toLowerCase().split('').reverse();
  for (var i = 0, maxi = input.length; i < maxi; i++) {
    result += (symbols.indexOf(input[i]) + 1) * Math.pow(symbols.length, i);
  }
}
alert(result);

カラム名→カラム番号の計算方法は分かったけど、頭が悪い僕にはカラム番号→カラム名の計算式が分からなかったので、検索して出てきたエクセルの1000列目は ALL - つまみ食うのアルゴリズムを丸パクリした。阿呆ですんません……

なんでそこで詰まったかっていうと、単純な26進数の変換ではうまくいかなかったからなんですよね。A==0、B==1という感じで26進数として扱うと、26==Zで27==BAになるんだけど、実際は繰り上がった後はBAじゃなくてAAにならなきゃいけない。そこの所を考慮した計算を多分簡単なループで実現できるとは思ったんだけど、頭が働かなくて無理だった。

Compatibility problem with Tab Mix Plus - Feb 07, 2011

I got a mail from Tab Mix Plus developers team. So I updated compatibility codes in Tree Style Tab for the latest dev-build of TMP. After that I got another mail again, and he said that the latest TST doesn't work with the last public release of TMP. This is the reply:

Hello, onemen.

First, I really think TMP helps very huge people from poor tabbed browsing features of Firefox itself. It is a great thing. So, I hope my addons including TST work with TMP correctly.

However, I'm afraid I can't support both versions of TMP (the latest dev-build and the last public version) anymore, because I believe that they are too different to support simple hacks. I already removed many codes based on the latest dev-build of TMP by this commit, so I can't believe TST works with the last public release only with minor changes only about symbols (function names). And, if I restore codes for old TMP, then both old and latest TMP will override them again and re-introduce many unexpected problems. That is too terrible.

To be honest, it was very painful to read dynamic-eval codes in TMP and TST itself because they are many tree-times eval-ed codes (defined by TMP => overridden by TST => overridden by TMP again). So I don't want to do such a painful work again for the last public release...

Yes, I apologize that I'm also using many eval() to hack TMP. So I believe that both addons TMP and TST should remove all eval-based hacks for each other and make themselves plaggable via their public APIs. TST already defines some public APIs. I agree that they are too less APIs to make compatible TMP with TST now. I'll add new APIs to do it if they are really required for high compatibility. I'll make efforts to keep stable those APIs in future versions. I don't know what APIs are required for TMP, so, I hope to listen your idea.

On the other hand, I hope that TMP provides some public (and stable) APIs for addon developers, like:

  • An API to add extra properties for TabmixSessionData
  • Custom DOM events for TMP specific features

If there is any public document already, could you tell me the URI?

regards,

I can't believe that I keep the current method (eval-based dirty hacks) to make them compatible.

Firefoxでtarget="_blank"なリンクから新しいタブやウィンドウが開かれないようにしたい人向けの話 - Feb 04, 2011

Back to Owner Tab公開したよという話を書いた時にそもそも勝手に新しいタブを開かないようにしたいという意見のトラックバックがあった。そこのコメント欄で「なんでブラウザがそういう機能を提供してくれてないのさ」って議論になってた。

それでふと思い出したんだけど、そういえば昔のMozillaにはtarget属性の指定を無視して現在のタブでリンクを開く機能がなかったっけ? 削除されたのかな? と思って調べてみたら、自分でもすっかり存在を忘れてたけどこの機能はFirefox 4でも健在で、隠し設定としてちゃんと生き残っていた。about:configを開いて「browser.link.open_newwindow」を「1」に変更すれば、target属性によって新しいウィンドウやタブを開くように指定されているリンクでも、普通のリンクと同じように元のページを置き換える形で遷移するようになる。(この機能が入る前に「新しいウィンドウを開くリンク」の挙動を置き換えようとして、旧タブブラウザ拡張では相当な無茶をやっておりました。懐かしい話です。)

実は、Firefoxの設定ダイアログで「新しいウィンドウではなく新しいタブで開く」っていうチェックボックスを切り替えると、この設定の値が「2(新規ウィンドウで開く)」と「3(新規タブで開く)」でトグルするようになってる。「1(現在のタブで開く)」は普通に設定ダイアログを使ってたら選択できないので、about:configか何か別の手段を使わないといけないというわけ。

変更履歴をどんどん遡っていってみたところ、ごく初期の設定ダイアログでは確かに3つの選択肢から1つを選ぶようなUIになってたんだけど、これがFirefox 2でprefwindowベースの設定ダイアログ置き換えられた時に、しれっと「新しいウィンドウで開く」と「新しいタブで開く」の2者択一になってた(現在のタブで開くという選択肢が消えていた)。その時の議論には特に情報はなかったんだけど、「新しいウィンドウで開く」と「新しいタブで開く」の2者択一のUIから今のチェックボックス型UIに変わった時のバグの方を見てみると、まさに前述のエントリで述べられているような議論が繰り広げられていた。

で、ざっと見た感じでは、 「リンクのtarget属性とそれ以外の場合のために2つも設定項目作る意味なくね? 1個でいいんじゃね?」→ 「そもそもなんでUIから1を選択できるようになってないんだ?」→ 「破壊的な挙動になるオプションだから敢えて選択できないようにしたんだよ。」 「そのオプションを選択してたらクラッシュしたこともあったしね。」 「実際、open_newwindow=1に設定するとかなりのWebサイトがぶっ壊れるよ。そりゃウィンドウなんて開くべきじゃないのはみんな分かってるけど、ユーザを混乱させないためにはIEと互換性のある挙動にしとかないと。」→ 「JavaScriptで開かれるウィンドウについてはopen_newwindow=1にしたら色々危ないのは分かるけど、リンクのtarget属性だったら無視しても問題ないでしょ?」→ 「どうしてもアドオン無しでやりたいならこういう方法もあるよ。

という感じで、

  • リンクの場合とJavaScriptの場合で新規ウィンドウ要求をどう扱うかの2つの設定項目は、初心者ユーザの事を優先して1つにまとめることにする。これは譲らない。
  • そうすると、open_newwindow=1にするとWebサイトの動作を壊すなどのトラブルが起こりうる。なので、この値は設定UIには表示しない非推奨の隠し設定のままとする。
  • リンクの場合とJavaScriptの場合で新規ウィンドウ要求をどう扱うかというのを細かく制御したい上級者ユーザは、アドオンを使うなり何なりして対処するように。

という結論に至った……みたいだ。

ということで、すっかり忘れてた&調べ直してて改めて思い出したわけだけれども、browser.link.open_newwindowを1にすると、target属性があるリンクだけでなく、window.open()の読み込み先も現在のタブになってしまうために、親ウィンドウを参照するようなスクリプトが含まれてるページはまともに動かなくなる恐れがあるので、これはお薦めできません。トラブル覚悟でこの設定を使ってもいいけど、target属性があるリンクだけ同じタブで開くようにしたいという場合には、そういう機能を提供するアドオンを使うなり何なりしないといけないよーです。

まあ、いろんな場合に対して細かく挙動を振り分けたいという人は既に(当時の)Mozillaが考える所のメインターゲットではなかったのでした、そういう人は自分がマイノリティであることを自覚してDIYの精神で暮らすしかないですね、という話なのでした。

Page 28/248: « 24 25 26 27 28 29 30 31 32 »

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のコメント

最近のつぶやき