Home > Latest topics

Latest topics 近況報告

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

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

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

宣伝2。Firefox Hacks Rebooted発売中。本書の1/3を使って、再起動不要なアドオンの作り方のテクニックや非同期処理の効率のいい書き方などを解説しています。既刊のFirefox 3 Hacks拡張機能開発チュートリアルと併せてどうぞ。

Firefox Hacks Rebooted ―Mozillaテクノロジ徹底活用テクニック
浅井 智也 池田 譲治 小山田 昌史 五味渕 大賀 下田 洋志 寺田 真 松澤 太郎
オライリージャパン

Page 19/240: « 15 16 17 18 19 20 21 22 23 »

リゾット作った - Apr 24, 2011

おじやだか雑炊だかを作った後に連続で同じ物をというのも気が引けたので、趣向を変えてリゾットにしてみる事にした。簡単に作れるリゾットの素というのが世の中にはあるらしいと聞いていたんだけれども、行ったスーパーにはそういうのがなかったので、クックパッドのレシピを見ながらやってみる事にした。

1つ目の物を基本として、2つ目の方に出てきていたタマネギを加えた事と、もう少し野菜を入れるかと思ってニンジンを加えた事と、使ったバターが無塩バターだった事、あとパセリがなかった事が違い。

チーズは、前に何か作った時に買ったチーズがずっと残ってたのでそれを使った。このリゾット(風の何か)だったらそう手もかからないので、使い切れそうな気がしてきた。

js-ctypesで期待した通りにガーベジコレクトされてくれないから自分でmalloc/freeする - Mar 27, 2011

最初に要点だけまとめておくと、

  • js-ctypesを使う時は、JavaScriptのコード側では基本的にメモリの管理のことは考えなくてもいい(ガーベジコレクト任せにしていい)事になってる。
  • しかし実際使ってみると、JavaScriptからjs-ctypes経由で自分でmalloc/freeしないとどうにもならないという場面があるみたい。
  • なのでJavaScriptからjs-ctypes経由でmalloc/freeする方法とその実例を紹介する。

という話です。

続きを表示する ...

64bit整数を使わないという、js-ctypesの最適化ノウハウ - Mar 27, 2011

先に結論だけ書くと、

  • js-ctypesでCのライブラリから帰ってきた64ビット整数を32ビット整数2つで代用できる場面では、32ビット整数にしておいた方が何倍も速くなることがある
  • ctypes.uint32_tとctypes.unsigned_longが同じ意味になる場合(Win32/Win64など)はctypes.uint32_tを使った方がいい

という話です。以下、実際にどういうケースでこれが役立つかの説明です。

続きを表示する ...

rmで消してしまったファイルやSambaで共有してるフォルダの中身をWindowsから消してしまった場合の復活 - Mar 24, 2011

僕は会社では主にUbuntuを使用しているのですが、Sambaで共有してるフォルダの中にあったThunderbirdのプロファイルっぽい物を「あれ、これテスト用に作ったやつだっけ」と思ってWindowsから削除してしまった後になって「あ、これメインで使ってるThunderbirdのプロファイルへのシンボリックリンクやがな」と気がついて慌てて止めたものの、時既に遅しでメールフィルタもなんもかも消えてしまった。せめてNautilusからの削除だったらゴミ箱に残ってたのに……!

Thunderbirdは起動した状態のままだったので、設定エディタを開いて適当な設定値をいじって、一番重要なprefs.js(アカウント情報が入ってる)だけは書き出させた。アドレス帳は全く使ってないに等しい状態だったので、消えても構わない。メールフォルダの中身も、IMAPで自宅・サーバ上・このPCの3箇所で同じ物を複製しあってる状態だったのでなんとかなる。しかし、このPCでしか設定してなかったメールフィルタが消えてしまったのは痛い。

ということでなんとかundeleteする方法はないかと検索したら、extundeleteというのを使えばいいらしいという事が分かった。

試してみたらかなりの数のファイルを救出できたけど、なんやかやで一部壊れてる物もあった。とりあえず目当てのメールフィルタは無傷で救出できたので、なくさないようにDropboxに入れて自宅にもコピーを置いておこう……

js-ctypes - Mar 20, 2011

js-ctypesはFirefox 3.6から利用できるMozillaの独自の機能で、平たく言うとC言語の実装の中で定義された関数をJavaScriptから呼べるようにするという物。Pythonにctypesという機能があって、それのJavaScript版がjs-ctypes。

Firefox 3.6(Gecko 1.9.2)ではできる事の制限が厳しかったので使えるケースがあんまり無かったようなんだけど、Firefox 4(Gecko 2.0)では構造体がサポートされたので一気に使える場面が増えた。らしい。

システムモニターをFirefox 4に対応させなきゃねと思ってたんだけど、Compartmentがどうとか色々変更があったのを全部調べてたら絶対自分の手に負えん!!と思ったので、いっそのことjs-ctypesで実装すりゃいいんじゃね? と思って、試行錯誤しながらやってみてる。試行錯誤の様子はリポジトリを見るとバレバレです。

js-ctypesのいい所:

  • コンパイルしなくていい。SDKやらビルド環境やらを整えるのに苦労しなくてもいい。
  • 単にバイナリを用意できてないだけで、その環境でバイナリをビルドしさえすれば大丈夫なのに……って場合には、多分そのまま動く。(動かない場合もある)
  • CとJavaScriptの境界で動作するコードで考えなきゃいけなかった諸々の事(JavaScriptのコンテキストがどうだとか、nsIVariantを経由したりJSObjにしたりとか、いろんな事)を考えなくてもいい。

困った所:

  • 結局はCなので、C言語が分かってないとどうしようもない。(僕はjs-ctypesでちょっとC言語への理解が深まりました……)
  • Cでの開発だったらヘッダファイルをインクルードすればそれでいいという場面でも、js-ctypes用に構造体の定義をJavaScriptで全部書き直さないといけない。
  • 取得した値が数値になってると思って「+」演算子で計算しようとするとハマる。数値を返すような関数でも返ってくる値はjs-ctypesによってラップされたオブジェクトなので、「+」演算子で繋げると文字列連結になってしまう(「-」などの、数値型に暗黙のうちに変換する演算子であれば問題は起こらない)。
    • 必ずparseInt()する、みたいな癖を付けとくとハマらなくていいと思う。
  • JavaScriptの書き方が悪くてJITされてないせいもあるのかもしれないけど、ループが遅くいからか、Cで書くよりずいぶんパフォーマンスが落ちる場面がある。メモリ消費量の計算だけでCPUを20%近く使っちゃうことになったりとか……

JavaScriptでFirefoxをクラッシュさせたかったらjs-ctypesでメモリ破壊とかやると手っ取り早いですよ! と、数え切れないほどFirefoxをクラッシュさせて思いました。

msysGitが動かなくなった - Mar 18, 2011

しばらくぶりに帰宅して、さあ外出先で行った開発の結果を取ってきましょうと思ってgit pullしようとしたら、bashが起動しなくなってた。

背景を説明すると、僕は自宅ではWindowsを使ってて、Gitを使った開発にはTortoiseGitmsysGitの組み合わせを使用しているのですが、普段は全然普通に使えてるのに今日になって急にそれが動かなくなってたという状況でした。どうもTortoiseGitが内部的に呼び出してるCygwinのbashが動いてないようで、bash単体で起動しようとしてもこんな風なエラーが出てしまってすぐにプロセスが落ちてしまいます。

      0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x68540000, RegionSize 0x70000, State 0x10000
C:\Program Files\Git\bin\bash.exe: *** Couldn't reserve space for cygwin's heap,
 Win32 error 0

で、エラーメッセージを頼りに何か情報が無いかとGoogle先生に聞いてみた所、同じようなエラーが起こって困ってる人が結構いるみたいだったんですが、そこで紹介されてた以下の2つの対処法は僕の環境では効果がありませんでした。

諦めずにさらに探してたら、MSYSの謎のエラー - メモ@wantoraというエントリで紹介されてた方法でうまくいきました。

>cd "c:\program files\git\bin"
>rebase -b 0x30000000 msys-1.0.dll

rebaseというのはひょっとしたら普通は入ってないかもしれません。自分はFirefoxのビルドのためにWindows SDKというのを入れてましたが、それに付いてきてたのかもしれません。リンク先のエントリによるとWindows SDK for Windows Server 2008 and .NET Framework 3.5を入れると付いてくるようです。

rebaseってなんやねん、git rebaseとは違うのか、と思って検索してみたら以下のような記事が出てきましたが、読んでもよくわかりませんでした。

「巻き戻し/早送りボタン」でクラッシュする件 - 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行目のマッチング対象文字列を書き換えたりすれば、他の分類にも対応できるようになってます。

Page 19/240: « 15 16 17 18 19 20 21 22 23 »

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のつぶやき

オススメ

Mozilla Firefox ブラウザ無料ダウンロード