[PR]ƭ
Infoseek ޲٣

電気分解部 Diary



陽極日記

2007 年 2 月の log

2007.2.1 Thu

すべてが全自動即時処理というわけではないことを思い出せ

ウェブページ上のフォームにいろいろと入力し,送信すると,入力しておいたメールアドレス宛に即座に確認メールが送られてくるというシステムがよくある. それに慣れすぎていて困った. 今回,とある事情でそういうソレで送信したのだが,確認メールが来る気配が全くない. メールアドレスを間違えたのではないかとも思った. で,半日以上経って半分忘れてた頃に送られてきたという話. どこかの段階で人間が介していたのかしら. 大規模なサービスというわけでもないのでこんなもんだよな.

bbs2chreader 0.4pre3 専用のモジュール 2 つ

対応自体は結構前に取り組んでおいたのだが,いろいろと様子見をしていたら 1 月が終わっていたので試験的に公開しておく. 新設定パネルへの対応が主なのだが,作り込みが甘いかもしれないよ.

注意していただきたいのだが,あくまでも bbs2chreader 0.4pre3 専用なので,0.2.14 とかを使ってる人は入れないでくださいな. あと,自動アップデートが効かないようになっているので,その辺よろしく.

2007.2.4 Sun

俺だけの軽量 Ubuntu 作り

糞ノートの Ubuntu 環境を作り直し. 今までは edgy から feisty 化したヤツが入っていたのだが,改めて feisty の server 版を入れ,それから最低限の俺用デスクトップ環境を作ろうという試み. とりあえず Blackbox を選択. ファイラは PCMan File Manager というもの. ターミナルエミュレータは mlterm. ログインなんちゃらは GDM. で,適当に日本語環境を整えたり,GTK+ 関係のセッティングをしたり. この環境がサクサクすぎて笑える. で,俺用っぷりを出すために Blackbox のスタイルを書いてみたり. なんとなく Spring という XP 用のビジュアルスタイルのデザインをパクってみた. あとはこの環境をさらにぱわわっぷしつつ,これに慣れるだけか. そのうち Windows でも互換シェルマンセーとか言い出しそうで困る.

ところで,これって Ubuntu でやることじゃないだろ.

2007.2.6 Tue

Linux 用 MemoryInfo 作り

Linux プログラミングに興味を持ちだしたので作ろうとしてみた. なんせ,マイ XPCOM コンポーネントなんて作ったこともないし,C++ は知らない. ただ,C は思い出しながらながらも使えても Linux 特有のことをする手法は知らないという,右も左もわからない状態からのスタートなので,超手抜き実装なのはやむなし. 適当に Unix Programming Frequently Asked Questions 日本語訳 を見つつ,C の popen 関数経由で pidof(/usr/lib/firefox/firefox-bin 決め打ちだぜw)やら ps(取得した pid について rss と vsz の値をゲット)やらのコマンドを呼び出してやればいいんじゃねーのかということを把握したので,そういう実装にしてみた. で,mzIMemoryInfo には 4 つのメソッドがあるようなのだが,getWorkingSetSizegetPagefileUsage しか使わないようなので,その 2 つだけを実装した. ただし,これで合っているのかわからんし,Firefox が複数起動していると誤爆するはずのでダメダメ. うんこちゃんだぜ.

意味はないけど スクショ

2007.2.7 Wed

Moz2ch いじりも面白そうだなぁなんて

思っちゃったりしてみちゃったりして.

●串があればいいんじゃね?

●未対応の専ブラの HTTP リクエストを書き換えちゃうようなローカルプロキシ. それだけなら Proxomitron でも使えばいいのだが,●の認証もそいつに任せるような感じで. どうでもいいけど.

2007.2.8 Thu

Moz2ch で実況したいよね計画(仮)始動

実況向け機能として俺が必要だと思うモノを追加しまくる(予定),Moz2ch を拡張する拡張を作り始めた. そう,またこのアプローチ. とりあえず今はスレ表示の下に書き込み装置(ついんてーる界隈で言うところのドッキング書き込みバー)を仕組んでるところ. で,試しに XulBooster を中心に Eclipse で開発してみたり.

2007.2.9 Fri

Moz2ch で実況したいよね計画(仮)2

なんとか書き込み装置を組み込んだ. 久々の XUL ハックだからか,予想以上に難儀した. 次は自動リロード,自動スクロール辺りの実装かな. それだけあれば最低限の実況はできるだろ. 一応 Live2ch を意識してる.

Moz2ch で実況したいよね計画(仮)3

自動スクロール実装中. 詳しくは知らないが,Moz2ch にはリロードしてもスクロール位置が保たれる仕組みが備わっているようだ. で,新たに自動スクロールモードを on にすると基本的にリロード時に一番下までスクロールされるようにしたい. さらに,一番下までスクロールされていない状態でリロードした場合は,従来どおりにその位置が保たれるようにしたい. つまり Live2ch と同じ挙動(のはず).

moz2chSureView.prototype.setCurScrollPos() を再定義する. ここで nsIScrollablegetScrollRange なるメソッドを使うと最大のスクロール位置が取得できそうな感じなので,それで得た値を nsIScrollablesetCurScrollPos メソッドに投げて一番下までスクロールするという感じ. で,問題なのが一番下までスクロールされているか否かの判定ができないということ. 一番下までスクロールした状態で moz2ch.sureView.getCurScrollPos() した値がさっきの方法で得た最大のスクロール位置と同じになるのかなと思ったのだが,後者の値のほうが大きくなる. すると最大のスクロール位置というのは何の値なんだよと. スレの HTML が表示される部分(いわゆるコンテンツエリアってヤツ?)の高さを 0 に限りなく近づけて,その状態で最下部までスクロールすると moz2ch.sureView.getCurScrollPos() した値がその最大のスクロール位置とやらに限りなく近づく感じのようだが. よくわからん. では,スクロール具合の判定方法は何かないのかと. 本質的な問題はこっちなんだよな. もうわけわかめ.

2007.2.10 Sat

Moz2ch で実況したいよね計画(仮)4

引き続き自動スクロール実装中. そういえば ChatZilla もそういう挙動をとるような気がするよねということで,それっぽいコードを探した. おそらく static.js の checkScroll なる関数がスクロール具合の判定をしている気がする. これは window.document.height - window.innerHeight - window.pageYOffset を見ている. この式は ページ全体の高さ - 見えている部分の高さ - 見えている部分の上に隠れている部分の高さ という式だと思われるので,つまりは見えている部分の下に隠れている部分の高さを求める式のようだ. で,今回は window ではなく,moz2ch.sureView.element.mCurrentBrowser. 一番下までスクロールするとこの値は 0 になりそうだぜと思ったのだが,そうはいかんざき. なぜか -21 とか -38 とかになる. 余計なモノが見えているということか? で,上にスクロールすれば正の方向に値が増える.

まあ,そこまで厳密にやらなくてもいいんじゃねということで妥協しよう. とりあえずこの値が正ならスクロール位置は途中であると判断し,リロード時に一番下までスクロールしないようにしよう. スクロールバーが出てないときは負の値になるけど,Live2ch ではそういうときにリロードしてスクロールバーが出現しても一番下までスクロールしないような気がするので仕様どおりということかな.

とりあえず判定部分は FIX ME 扱いで.

この手の判定式って,ページを下にスクロールしていくとさらに下に継ぎ足されていく系のコンテンツで使われてそうな感じ.

2007.2.11 Sun

Moz2ch で実況したいよね計画(仮)5

サクッと自動リロードを実装した. ロード時にというか moz2ch.sureView.load(sure) が呼び出されたときにそのタブについて setInterval なタイマを仕掛けて,一定の間隔で勝手にリロードしてもらう感じにした. 要するに moz2chSureView.prototype.load() を再定義し,タイマをセットするようにした. 仕様上,同じタブで別のスレを開き直してもタイマは引き継がれる感じ. あとはリロード間隔の設定とか,自動リロードのキャンセルとか,そういった細かいところを作り込む必要がありそう. これは実況用 UI を作り込む段階でやりたい.

というわけで,最低限必要な機能は付いたはず. 予想以上に順調かも.

2007.2.12 Mon

Moz2ch で実況したいよね計画(仮)6

最低限の機能は揃い,第 2 段階に入ったと思われるこの計画. 今度はよりインテリジェントな自動リロードを実装したいのだが,それの構想をメモしておく.

まず,リロード間隔設定用の UI を設け,それから得た値をタイマに使用するようにしたい. で,従来の方法ではこの定期的な自動リロードと手動リロードや書き込み後のリロードがシンクロしないため,手動リロードの直後に自動リロードが来るということもありうる. これはよろしくないので,手動リロードや書き込み後のリロードの際にタイマをクリアし,改めてリロード間隔を調べつつタイマをセットし直すようにしたい. また,自動リロードでも毎度リロード間隔を調べ,前回の値と違っていればタイマをセットし直すようにしたい.

ところでリロード時にもっさりするのは避けられないのかな. 文章を打ち込んでるときにリロードされるとやんなっちゃう. カルシウム必須.

2007.2.13 Tue

免許更新

行ってきた. 初回なので 2 時間の講習を受けてきたのだが,退屈すぎる. 睡魔がすごい勢いで襲ってきたので,無事に帰れるのかなぁなんて思ったり. 帰る途中に事故ったらあまりにも間抜けだ. まあ,何事もなく帰還したわけだが.

Moz2ch で実況したいよね計画(仮)7

よりインテリジェントな自動リロードを実装した. 構想どおりの挙動は実現できたのだが,手法がキモい. よい子はマネしちゃいけない.

2007.2.14 Wed

Moz2ch で実況したいよね計画(仮)8

少なくとも 1 行 AA 挿入機能がないとアレだなあと. 適当なキーボード操作でメニューを出し,選択するという方法にしたいわけで,Jane 系なヤツらや Live2ch だとそれが Ctrl+Space というキーバインドになっているようだが,それをそのまま採用すると Linux とかでマズいことになるはず. 日本語入力関連の切り替えに割り当てられている可能性が極めて大きいから. とりあえず適当なボタンを押すとメニューが出てくるようにするのが一番楽そうだが,キーボード操作も大事. クロスプラットフォームな UI 設計を目指すとその辺が面倒になってくるのよね. キーコンフィグってのも厄介くさいし. モビルスーツのエンジンをやればサイド 7 もやられるかもしれないよってレベルのどうすりゃいいんだという感じ【謎】.

2007.2.15 Thu

スーパマーケットでのできごと

おばさんが袋にモノを詰めながらデカい声でひとりごちていた. 異様な光景. 俺は無表情のままレジを通過できたのだが,レジのねーちゃんは笑いをこらえきれない様子. その表情がまたよかったんだが【何】,俺に対してほほえんでくれたのだと勘違いしておくことにする. キモいだろ. レジのねーちゃんに対して苦笑いやらそれに対応する言葉やらを返してあげていれば俺のレベルは上がっていたのだと思う. ほら,キモいだろ. それはさておき,そのおばさんは「アルツハイマーにならないようにうんたらかんたら」とか宣っていたのだが,アルツハイマー以前に(ry. おっと失言か. まあ,いろんな人がいるわけで,そんなおばさんもいればキモい妄想にふける俺もいるってことで.

Moz2ch で実況したいよね計画(仮)9

1 行 AA 挿入機能を実装した. この辺は楽. とりあえずボタンを押すとメニューが出てくるという感じにした. アクセスキーについてはまたいつか.

次は何をしよう. コンテキストメニュー周りが弱いのが気になるわけで,少なくともスレタイや板名,URL のコピーといったところはできたほうがうれしい. でも面倒そう. てか,Moz2ch 本体に付けてほしい機能だが.

以下気になること.

2007.2.16 Fri

OSS なイベントに行ってきた

オープンソースソフトウェア利活用の最前線 なる催し. メディアテークにて. 予想どおりスーツのおじさまばかりで,かなりのアウェイ感. それはいいとして,普段は OSS を使って何か面白いことをやることや,OSS の開発などといった側面に注目しがちなのだが,それとは別に,OSS のビジネス的側面や組織に OSS を導入するというような,自分にはあまりなじみのない部分の話を聞くことができた. ちょっと前に話題になった栃木県の二宮町の担当者の話とか.

Linux 関係やら Mozilla 関係やら OOo やらのようないつも個人レベルで使っているような OSS が,どこでどのように使われているかというのを知るというスタンスで聞いていたのだが,そういう機会もかなり大事だと思った今日この頃. いかに便利に使うかということだけじゃなく.

危うくマンセーし忘れるところだった

おめ.

2007.2.17 Sat

Moz2ch で実況したいよね計画(仮)10

板ビュー(スレ一覧)のコンテキストメニューからスレタイや URL のコピーをできるようにした. で,実は板ツリー(板一覧)のコンテキストメニューから板名や URL をコピーできるようなのだが,ちょうどその辺がバグっていてうまくいかないだけという感じ. その板ツリーのコンテキストメニューを開こうとするとエラーコンソールで XUL_NS が未定義だと言われるので,"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" というように定義してやる. さらに moz2chClipboard.setText(moz2chItaTreeView.getSelectedLiteral 云々 もアレだと言われるので,moz2chClipboard.setText(moz2ch.itaTreeView.getSelectedLiteral 云々 というようにする. そんな itaTreeView.js のプチハック.

2007.2.21 Wed

JASRAC の仕事っぷり確認

とある YouTube なリンクを開いたら This video is no longer available due to a copyright claim by JASRAC だそうで. 初めて見た. にゃはは.

Nexenta 試用中

ちょいと前から Nexenta を VMware Server に入れて遊んでいる. 例のイベントでの Sun の人のプレゼンで興味を持ったわけで,今さらという感じかもしれないけど. 前から Solaris を入れたいとは思っていたのだが,Ubuntu の皮をかぶった OpenSolaris ディストロということで,本家の Solaris じゃなくてもこれでいいじゃないかというか,まさにこれじゃんということで.

インストールは楽だった. パッケージのインストールに時間がかかるので,インストーラに付属されているテトリスで遊ぶと吉. で,パッケージは Dapper 相当,GNOME アートワークは Edgy 相当らしく,Feisty ユーザな自分としては若干物足りないかも. まあ,Dapper は LTS ということでその辺は妥当かもしれないが. 実際に使っていると Linux との違いにとまどうことがあったり. コマンドとかディレクトリ構造とか.

で,x86 な Solaris で動いているという isweb 鯖に Nexenta 上でコンパイルした C 製のこんにちは世界な CGI を上げてみたら見事に動作した. すげえ.

UNIX 板の Nexenta スレの過疎具合がもうね. 過疎ってレベルじゃねーぞと. これは廃村だ.

では,uname -a してみた結果をば.

$ uname -a
SunOS myhost 5.11 NexentaOS_20070105 i86pc i386 i86pc Solaris

2007.2.22 Thu

Base64 Encoder 0.1 りりーす

ローカルファイルを Base64 エンコードする Firefox 用の拡張だが,なぜかそういう流れ【謎】で作ってしまった. 最低限の機能しかないので期待しないで.

インストールすると Firefox のツールメニューに Base64 Encoder という項目ができるはずなのでそれを選択してくださいな. で,テキトーに使ってみてくださいな. デカいファイルを選択すると悲惨なことになるので注意しませう. お使いのマシンに搭載されているメモリ量と相談しつつという形で. 間違って選択してしまってあんなことやこんなことになっても当方は責任をとりませんので.

以下今後の構想のメモ. ファイルをウィンドウにドラッグアンドドロップできたらいいんじゃねーかな. さらに結果をクリップボード送りにできたらいいんじゃねーかな.

2007.2.23 Fri

Ubuntu で赤外線通信したい

まずは糞ノートについて. これは東芝の DynaBook SS M4 という謎多きシリーズのブツなのだが,メモリを 64 MB 分足してあったり,CD-RW ドライブを DVD-ROM ドライブに換装してたり,雨に濡れて一時期死んでいたりというアレゲなマシン. こやつに Feisty な Ubuntu を入れているのだが,赤外線デバイスの情報がよくわからんのでデュアルブートな Windows のデバイスマネージャで確認. すると,SMC IrCC - Fast Infrared Port なる名前だった.

で,Ubuntu での作業. まずは Installing Ubuntu 6.10 on a ThinkPad Z61m - ThinkWiki の IrDA 1.1 (FIR - 4Mbps) の項目 を参考にした. 大まかな手順は同じで,irda-utils を Synaptic や apt-get 辺りでぶち込む. さらに $ sudo dpkg-reconfigure irda-utils で対話式の設定に移るのだが,さっきの情報を使う. まずは IrDA を起動時に有効にしますか? には「はい」,Attempt to probe for IrDA on system bootup? にも「はい」,探索モードにしますか? にも「はい」,IrDAのデバイスの種類 は「ネイティブ」,赤外線通信チップの種類 は「smc-ircc」(さっきの情報から),赤外線通信チップのモジュールのオプション は空欄のまま,setserial で発信を止めるポート も空欄のまま. 以上で設定終わり. で,$ sudo /etc/init.d/irda-utils restart$ sudo modprobe irda0 という感じ. ここでケータイを取り出し,糞ノートを通信してみるわけだが,言われるがままに $ cat /proc/net/irda/discovery すると nickname: DoCoMo/N504iS/n 云々 とか出てきたりしてすげー,と. 未だに N504iS を使っていますよ.

これで通信ができることが確認できたので,実際にケータイとファイルのやり取りをしたいなと. そこで 赤外線ポート - Wiki Number8 を参考にした. まずは openobex-apps を Synaptic や apt-get 辺りでぶち込む. これで終わり. あとは実際にケータイと通信を試みる. ケータイから受信するときは $ irobex_palm3 とすると勝手に受信してくれた. 感動. ケータイに送信するときは $ irobex_palm3 ファイル名 とすると送信できた. 感動.

2007.2.27 Tue

Moz2ch で実況したいよね計画(仮)11

自動リロード周りが微妙にバグってるっぽいことを発見したが,自分が書いたコードを久々に見たら意味不明だった. 最もすぱげっちー化してる部分だし. ああ,まんどくせ. 某誰かの気持ちがわかる気がするぜ.

2007.2.28 Wed

Moz2ch で実況したいよね計画(仮)12

自動リロード再実装ちぅ. タイマをセットする対象がどうもアレだったらしいのだが,いっそのこと最初っから書き直しちゃえと. しかしやる気が続かない.

周辺のネタ