Firefoxのkeyconfigでタブ切り替えをカスタマイズ ― 2007年08月19日 03時32分38秒
Firefoxの新規インストール久しぶりだし
ちょっと前のエントリで書いたが、ThinkPadのHDDがイカれたために久しぶりにOSからインストールしなおすハメになっていた。
余談だが、OSのファイルの一部が壊れたんだろうくらいの認識だったがそうではなく、パーティションはかろうじて認識できるが中身はまったく確認できないという状態になってた。おかげでメールやらはすっとんでしまった。よくある教訓だが、こまめにバックアップはとっておけ、ということだ。まぁ、とんで困るようなデータはそれほど多くなかったんだけどね。
で、当然ブラウザなんかもインストールしなおすことになったワケで、久々にFirefoxを新規インストール。
Firebugをはじめ、ないと困るものをころころとインストールしていき、まぁ使える環境になってきたが困ったのがタブ切り替え。
昔Sleipnirを使っていたころの名残で、タブの切り替えがF2・F3じゃないと落ち着かない。で、keyconfigでカスタマイズしてたんだけど、タブのフォーカスを移動させるコードが思い出せない。さて、困った。
検索してはみるが
「keyconfig タブ 切り替え」とかで検索してみるが、なかなかこれだという情報にたどり着かない(同じようなカスタマイズしている人の記事とかにはあたるけど、コードが載ってない)。
最終的になんてキーワードで検索したか覚えてないが、なんとかMDCのこちらの記事に、そのものズバリのコードが載ってた。
以下、引用。
これでなんとかF2・F3でタブ切り替えができる環境になった。快適、快適。選択されているタブを変更するタブを一つ (右へ) 移動します。gBrowser.mTabContainer.advanceSelectedTab(1, true);こちらは左へ移動します。gBrowser.mTabContainer.advanceSelectedTab(-1, true);
余談
以前(1.5ベースのころ)は、左右端のタブから循環しなくて、わざわざ循環するようなコードを書いたような記憶があるが、今は上のコードでまったく問題ない。便利になったもんだ。
Eee PCのガッカリニュース ― 2007年08月19日 03時59分36秒
さらにガッカリ...
ちょっと前に「Eee PC 701の発売が延期になったモヨウ」というエントリを書いたが、さらにガッカリな続報が。
- Asus Eee PC pricing and release dates loosed: less flash for more money? - Engadget
- EeeUser.com Forums: Asus EeePC Eee PC 701 and 1001 / UPDATE ON PRICING AND AVAILABILITY - NEW
なにがガッカリかって、
- エントリモデルの価格は$269~$299
- そのエントリモデルのストレージ容量は2G
まだASUSの公式なコメントではないみたいだけど、$199での販売はないっぽく、かなりガッカリ。
久々にJsDok Toolkitを見てみたり ― 2007年08月21日 15時58分26秒
なんかリファラにcode.google.comがあるんですけど
このブログのアクセスログを見てたら、リファラがhttp://code.google.com/p/jsdoc-toolkit/wiki/LinkLoveってのがあった。
なんじゃこりゃ、と思って飛んでみたら、以前のエントリで取り上げたJsDoc ToolkitのプロジェクトWiki内のリンク集だった。びっくり。
たぶん検索で引っかかったんだろうけど、Boy, I really wish could read Japanese...
なんてコメントされてて、日本語だけでごめんなさい。
で、久々にちょっとだけチェックしてみたワケだが
で、newsのとこを見てみると、バージョンががんがんあがってて、現在は 1.2.1 みたい。以前取り上げたやつは5/27付けの 0.5.2b だったから、えらい様変わりしてるだろうなと思ってダウンロードしてみた。
ディレクトリ構成も若干変わってるけど、JSのソースも増えてた。起動スクリプトも以前は「JsDoc.js」だったんだけど、別途「run.js」といういかにも起動スクリプトなファイルが増えてて、そっからスタートするようになっている。
ふと興味を持って、appディレクトリ(以前のlibディレクトリに相当か?)内で java\. とかでgrepしてみたら、明示的にJavaのパッケージを使用しているのが
- JsDoc.js
- JsIO.js
- run.js
- Transformer.js
- run.jsを差し替える(というか代替コードを書く)
- Java依存の部分はfunctionを置き換える
ふむ、時間ができたらまたソースおっかけてみようかな。
アクションメソッドで自動レンダリングを無効にする ― 2007年08月21日 17時32分54秒
単発TIPS。つか備忘メモですな。
Zend_Controller_*でのMVCを使っていて、あるアクションコントローラのアクションメソッドのみViewRendererヘルパーの自動レンダリングを使用しない場合は、ViewRenderer->setNoRender() を使う。
以下、適当な例。downloadActionはブラウザにCSVファイルをダウンロードさせるって感じ。
class HogeController extends Zend_Controller_Action { public function indexAction() { // ほっとくと勝手にViewRendererが関連付けられた // ビュースクリプトでレンダリングする } public function downloadAction() { // 自動レンダリングを無効にする $this->_helper->viewRenderer->setNoRender(); // レスポンスヘッダをセット // ほんとは$this->getResponse()->setHeader()を使うんだろうけど // コード未検証なのでheader()を使ってみる。 header( 'Content-Disposition: inline;filename=hoge.csv' ); // 別にapplication/octet-streamじゃなくてもいいか。 header( 'Content-Type: application/octet-stream' ); // あとはecho なんかでCSVデータを直接出力 } }
いや、わざわざ記事にしなくてもいいんだけど、マニュアルのどこに書いてあったかすぐ忘れちゃうもんで...
JScriptでCABファイル ― 2007年08月22日 03時12分27秒
CABが作れそうなタイプライブラリを見つけた
なんとなくオブジェクトブラウザでライブラリ探ってたら、「COM MakeCab 1.0 Type Library」なんてのを見つけた。いかにもCABファイルが作成できそう。
クラスは「MakeCab」オブジェクトがあるだけで、このクラス自体も「AddFile」「CloseCab」「CopyFile」「CreateCab」と4つのメソッドが実装されているだけのいたってシンプルなもの。
このタイプライブラリ自体は %SystemRoot%\system32\catsrvut.dll がファイル本体で、バージョン情報を見るとMicrosoft製のものでコピーライトも「Copyright (C) Microsoft Corp. 1995-1999」となっていることから、少なくともWin2K以降のNT系列のOSでは標準DLLと思われる。
さて、使い方だが
JScriptから使ってみたいので、ともかくnew ActiveXObjectできなきゃ話にならない。とりあえず「new ActiveXObject("COMMKCABLib.MakeCab")」だの「new ActiveXObject("MakeCab")」だのと試してみたが「オートメーション サーバーはオブジェクトを作成できません。」と蹴られる。
「COM MakeCab 1.0 Type Library」でぐぐってみたらこんなのが見つかった。どうやらPythonWinで試してるようで、
c = Dispatch('MakeCab.MakeCab')なんてコードが載っている。
さっそく「new ActiveXObject("MakeCab.MakeCab")」してみるも、これまたオブジェクトを作成できないと蹴られる。むぅ。
レジストリを眺めてみると
先の記事中にIn a key named for the CLSID {8E17FFF3-...you get the picture}
なんて記述があるのでregeditで HKCR\CLSID から 8E17FFF3- で始まるキーを捜してみたところ、ProgIDが「MakeCab.MakeCab.1」、VersionIndependentProgIDが「MakeCab.MakeCab」となっていた。後者はさっきNGになったので「~.1」で試してみたら、ようやくインスタンスを取得できた。
CABを作ってみよう
先にあげた4つのメソッドの中で、最初に使えそうなのはやはり「CreateCab」だろう。シグニチャは以下のようになっている。
Sub CreateCab(CabFileName, MakeSignable, ExtraSpace)「CabFileName」はまんまだが、ほかの2つは型もわからんしどういう作用になるのかもよくわからないので、「CabFileName」のみで挑戦してみた。
var cab = new ActiveXObject("MakeCab.MakeCab.1"); cab.CreateCab( "test.cab" ); // → 引数の数が一致していません。または不正なプロパティを指定しています。ふむ、引数は省略できないか。さてどんなデータを渡せばよいのか。
もう一度「COM MakeCab 1.0 Type Library」でぐぐってみたら、cabMaker.CreateCab(cabFile, false, 0, false);
なんてコードが見つかった。4番目の引数はメソッドシグニチャでは定義されていないので無視することとして、
var cab = new ActiveXObject("MakeCab.MakeCab.1"); cab.CreateCab( "test.cab", false, 0 );としてみたところ、今度はエラーがでない。うし!
ファイルの追加とクローズ
いかにもな名前なので、CreateCabしたCABにAddFileメソッドでファイルを追加してみることに。AddFileメソッドのシグニチャは以下のとおり。
Sub AddFile(FileName, FileNameInCab)なので、
var cab = new ActiveXObject("MakeCab.MakeCab.1"); cab.CreateCab( "test.cab", false, 0 ); cab.AddFile("test.txt", "text.txt");とあてずっぽうで試してみたらエラーがでない。これで閉じればいいのか?「cab.CloseCab();」これもエラーなし。
どうやら上のコードの流れでよかったみたいで、しっかりと「test.cab」が作成され、中に「text.txt」が追加されていた。
しかし、CAB内にディレクトリを作成/コピーする方法がよくわからん。「cab.AddFile( "mydir", "mydir" );」とかやってみたらcscriptのプロセスそのものが異常終了。おっかねー。これは要調査だな。
まとめ
- 「COM MakeCab 1.0 Type Library」を使うことで、JScript(またはVBScript、その他のActiveスクリプト言語)で圧縮ファイルに固めることができる
- しかしディレクトリの追加方法がまだ不明。
- そもそもCABファイル作れてうれしいか?
最近のコメント