«前7日分 最新 次7日分» 追記

netail.net

自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.

最近のお知らせ (古いものはこちら)


2007-02-22 [長年日記]

_ [近況]ドライバを入れ替え

使用中の PC-MW70J (Mobile Intel(R) 915GM/GMS,910GML) で,ときどき画面下半分ぐらいの表示が乱れるという怪しい振る舞いをしてたんですが,ディスプレイドライバの新しいのを Intel のサイトで拾ってきたら直りました.

ハードウェアエラーじゃなかったようなので,ほっとしています.


2007-02-18 [長年日記]

_ [hyCalendar][お知らせ] hyCalendar 1.5.1 リリース

お待たせしていましたが,1.5.1 をリリースしました.今回は UI 関連の細かい修正を色々と含めているので,変更内容のリストは 1.0 リリース以来の長さになっています.バージョンアップの際はデータのバックアップをお忘れなく.

今回の大きな変更は,タスクトレイのサポートです.最小化でタスクトレイに格納され,アイコンの左クリックで復帰できるようになりました.有効にするためのオプションは設定ダイアログの「システム設定」タブにあります.オプション設定については,いくつかのタブの名前が変わったり,項目の名前や配置順序が変わっています.

また,ポップアップウィンドウの振る舞いを変更しています.子ウィンドウを表示したら親ウィンドウ側を時間経過では閉じないようにするとか,ウィンドウの表示を安定させる方向で修正しています.巨大なポップアップウィンドウに画面を占有されて困った場合は,ESC キーで閉じてやってください.

一方で,hyCalendar では初の(?)機能削除として,日付内にあるURLを,日付枠の下側にラベルとして列挙するオプションがなくなりました.URLにはポップアップウィンドウか,コンテキストメニューからアクセスしてください.


2007-02-17 [長年日記]

_ [近況] pukiwiki の編集と KDDI au の textarea サイズ制限

このサイトで使ってる pukiwiki のある記事の後半がカットされていたので,アクセスログを見てみたら,ezweb.ne.jp からの POST を発見しました.以下は,URL の一部とホスト名をカットしてます.

.ezweb.ne.jp - - [17/Feb/2007:12:47:17 +0900] 
  "GET /aosdwiki/index.php?cmd=edit&page=%B2%A3%... HTTP/1.1" 
  200 5648 "http://ezsch.ezweb.ne.jp/search/?sr=0101&query=..." 
  "KDDI-SN36 UP.Browser/6.2.0.10.4 (GUI) MMP/2.0"
.ezweb.ne.jp - - [17/Feb/2007:12:47:22 +0900] 
  "POST /aosdwiki/index.php HTTP/1.1" 302 5 
  "http://netail.net/aosdwiki/index.php?cmd=edit&page=%B2%A3%..."
  "KDDI-SN36 UP.Browser/6.2.0.10.4 (GUI) MMP/2.0"
.ezweb.ne.jp - - [17/Feb/2007:12:47:25 +0900] 
  "POST /aosdwiki/index.php HTTP/1.1" 200 5449 
  "http://netail.net/aosdwiki/index.php?cmd=edit&page=%B2%A3%..."
  "KDDI-SN36 UP.Browser/6.2.0.10.4 (GUI) MMP/2.0"

POST のサイズ制限でもあるのかと思って調べていたら,ezweb からの書き込みで wiki ページの一部削除が起こるという問題はやはり他のところでも起こっていたようです.

携帯用ブラウザでページがどう見えるかのテストを行うOpenWave SDKを使ってみたら,textarea の中身が 1048 バイト(SJIS としてカウントしたとき)でカットされてしまうことが確認できました.POST の制限ではなく,HTML を携帯に表示する途中のどこかでの制限のようです.

編集フォームを含めて 9KB 超えている場合は,pukiwiki 側の回避策によって,Too large ... とかメッセージが出て編集できませんが,ページサイズがフォームを含めて 6KB 程度に収まっていて,かつ textarea の中身が 1048 バイトを超えてるページについては,この回避策が働かず,現時点では危険のようです.たぶん,フォームの中身が1〜3KB程度の文章が該当します.

ただ,この 1048 という数値は,KDDI のページの form 変換などの記述には載っていなくて,携帯上で HTML を表示するまでのどの段階でかかっているのか分かりません.また,数値自体もいつ変わるか分からないので,pukiwiki 側で回避できるのかどうかは謎です.

この問題については,ログの編集ページに到着から投稿まで5秒というのを見ていて思ったんですが,

  1. 検索からいきなり編集用ページに到着する.
  2. ページ内には「Top / New / Edit / Menu / Recent」と フォーム,「プレビュー」「ページの更新」ボタンぐらいしかない.
  3. ページの中身を読みたいので「ページの更新」を押す.
  4. 短くカットされたフォームの中身を投稿してしまう.

…という動作をユーザがやってるのではないかという気がしました.編集ページから元のページへ戻るというリンクは存在しませんから.あくまで推測ですが.

追記: 検索で編集用ページに飛び込んでくるのを防ぐために,cmd=edit が与えられたリクエストのリファラが外部サイトだったら cmd=edit のないページに移動するようにしてみました.

RewriteCond     %{HTTP_REFERER} !netail.net/aosdwiki/.*
RewriteCond     %{QUERY_STRING} cmd=edit&page=(.+) 
RewriteRule     index\.php      index.php?%1 [R,L,NE]

2007-02-15 [長年日記]

_ [近況] 関心事グラフと格闘中

ソフトウェアを分析するために関心事グラフを黙々と作っていて,これってコードレビューとやってることが似てると思うんだけど,と Gail Murphy に聞いてみたら,その通りだと返された.

関心事グラフを作るのはいいけれど,それをファイルなどに書き留める作業がとても大変なので, FEAT のような「メソッド,フィールドを選んではグラフに放り込む」ツールになったらしい.


2007-02-12 [長年日記]

_ [近況] PPL 2007 の原稿準備

といっても,単に書いてもらった原稿を添削してるだけですが.PPL 自体には残念ながら不参加です.

PPL ではスタイルファイルの指定が特にないからと,とりあえずソフトウェア科学会の論文様式にしてあるのですが,これだと A4 用紙の全体を使わないので,配置できる文章量が減ってしまって損をしているのかな,と今さら思ったりしています.


2007-02-10 [長年日記]

_ [Delphi] ヘルプよりソースコード

BDS 2006 付属のヘルプには,TApplication クラスの Handle プロパティは「アプリケーションのメインフォーム(ウィンドウ)のウィンドウハンドルへのアクセスを提供します。」と書いてあります.しかし,ウィンドウをアクティブにするSetForegroundWindow(Application.Handle)を呼び出してみたら,なぜか一瞬フォーカスが外れてしまうという妙な問題に遭遇しました.

で,よく調べてみたら,TApplication にはヘルプには載ってない MainFormHandle プロパティというのがくっついていて(コード補完では出てくる),こちらがウィンドウハンドルを保持していました.元の Handle プロパティのほうは別ハンドルを指しているようです.

Delphi の場合,昔から VCL のソースが付いているからかもしれませんが,未だにヘルプは当てにならないようです.結局,ソースを読んで VCL の振る舞いを理解することで,(実装に近いという意味で)低水準のノウハウが蓄積されている気がします.

ネットで検索していても,Win32 APIの使い方に関する情報はかなり見つかるものの,それをコンポーネント化したものは少ないようです.API 1つか2つで終わる程度のことが多いというのもあるかもしれません.


2007-02-09 [長年日記]

_ [Delphi] 最小化してタスクトレイに隠したものをきれいに復帰させる

最小化(Application.OnMinimize)時にウィンドウに ShowWindow(Application.Handle, SW_HIDE)メッセージを送ってタスクバーから隠したものがうまく復帰できないなーと悩んでいたんですが,SetWindowPosNOMOVENOSIZE フラグを使って,サイズ変更せずに表示状態だけをいじることでタスクバーに復帰させてから,最小化を解除してやれば良いようです.

// ウィンドウをサイズ変更せず,タスクバーに復帰させる
setWindowPos(Application.Handle, HWND_TOP, 
             0, 0, 0, 0, 
             SWP_SHOWWINDOW or SWP_NOSIZE or SWP_NOMOVE);
// ウィンドウの最小化を解除する
Application.Restore;

こうすると,最小化から元に戻るときのアニメーション付きでちゃんと復帰してくれます.

久々に Win32 API のコードを読みまくったので疲れました.だんだん VCL を使ってる利点が少なくなってきている気がします.