netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2006-02-01 [長年日記] ▲
_ コメントスパム ▲
が目に付くようになってきたので,対策をいくつか実施してみた.コメントスパム避けチェックボックスと,URLが多いコメントの自動フィルタの二段階.
この回避用チェックボックスのパッチをそのまま適用しただけだと,ForceRedirect例外をraiseしているが,index.rbがrescueしてないので,エラーが起きる(ForceRedirect の rescue ブロックは後半にくっついているように見えるが,途中で一度beginブロックは終了している).
rescue TDiary::ForceRedirect head = { 'type' => 'text/html', } print @cgi.header( head ) (リダイレクトさせるHTMLを出力) return end
といったコードを TDiary::PermissionError あたりの rescue と一緒に配置しておくと,ちゃんと動くみたい.
2006-02-03 [長年日記] ▲
_ [お知らせ] サイト移転 ▲
3月の卒業を前に,サークルのサーバから独立しました. ほとんどのコンテンツは,既にこちらに移行してます. 移転に伴って,かなり構造整理を実施しています. 各ページの URL の変化ですが,以下のようになっています. 基本的には,このページの右側にリストしてあるリンクから飛べるようになっています.
- hyCalendar のページ:
http://www.oucc.org/~tail/calendar/
→http://netail.net/calendar/
- Volume Deskbar のページ:
http://www.oucc.org/~tail/volumeband/
→http://netail.net/volume/
- アスペクト指向なwiki:
http://www.oucc.org/~tail/aspectj/
→http://netail.net/aosdwiki/
- レーサーミニ四駆ジャパンカップの攻略:
http://www.oucc.org/~tail/mini4japancup.html
→http://netail.net/games/mini4/
2006-02-05 [長年日記] ▲
_ [VolumeDeskbar][お知らせ] 1.0.5 リリースしました. ▲
正式に 1.0.5 にしました.タスクバーから分離した状態でウィンドウが閉じられたときに異常終了する問題を修正しています.
また,制御対象のデバイスが選べるようになりました.普通は単一デバイス環境なので影響はありませんが,USBスピーカなどを使っている方には意味があると思います.
ちなみに,現在の実装では,デバイスを名前で区別しているので,同名のオーディオデバイスが複数ある場合はうまく動きませんが,同じサウンドカードを2枚挿している人がそういるとも思えないので,そのままにしてあります.
_ [ツール] ポータブルハードディスク+Secure Lock Ware ▲
ポータブルハードディスク HD-PHGU2 の120GBモデルを購入したので,Secure Lock Wareと組み合わせて使うことにした.
Secure Lock Mobile というのがドライブと一緒に付いているのだが,こちらはファイルを個別に暗号化する必要があるらしく,1GBの暗号化で何分,とかCPUパワーもかなりかかるらしい.
そこで,ドライブ単位で適用される Secure Lock Ware のほうを選択した.インストールして,ドライブに暗号設定をつけて,Disk Formatter というツールでフォーマットしたら設定完了.ドライブをSecure Lock Ware がインストールされた PC の USB ポートに接続すると,パスワードを聞かれて,それ以降は普通にアクセスできるようになる.速度が気になったので,音楽ファイルなどを置いてみたり,そこそこ大きなサイズのデータをコピーしてみたが,特別問題は感じなかった.性能に関する要求が低いだけかもしれないけれど.
2006-02-07 [長年日記] ▲
_ [お知らせ] 古い日記からのリダイレクト ▲
リダイレクトによる古い日記→新しい日記の転送をはじめました.
とりあえず(便宜上)内部的には,次のような形のコードで,TDiary::ForceRedirect 例外をわざと発生させてます.
raise ForceRedirect( NewDiaryURL + "?date="#{date}" )
2月8日追記: だいたい次のような感じで 301 Moved を生成するようにしたので,途中にリダイレクト用のページなんかは出ないはずです.
new_path = SiteURL new_path = new_path + "?" + query_string if query_string print @cgi.header( "status" => "301 Moved Permanently", "Location" => new_path )
2006-02-10 [長年日記] ▲
_ [ツール] 複製ファイルの検出ツール ▲
DupCheckerという名前で(いちおう)公開してるものを更新してみた.表明とかを入れ込む実験用に手ごろなJavaプログラムがほしかったのと,最近,ファイル整理したくなったのとで,久々に整備してみた.
プログラム自体は,指定されたディレクトリ群の中から,サイズが等しく,かつMD5シグネチャが同じものを見つけ出して出力するというもの.
使い方: java -jar DupChecker.jar [-console [-r] (ディレクトリ名を並べる)] -console = コマンドライン出力.GUIで操作するときは引数不要. -r = ディレクトリを再帰的に探索.
コマンドラインから使うと,stdout に,MD5の値ごとにグルーピングしたファイル名のリストが出力される.[Add Target]でディレクトリを追加して,[start search]で検索して,見つかったファイルをツリービューから選択して[Delete Selected Files]で削除できる.
2006-02-12 [長年日記] ▲
_ [ツール] Graphviz の SVG 出力だと ▲
グラフ頂点のラベルが長くなってくると,どうも,頂点を囲む枠(Boxとか)からラベルがはみ出てくる.出力が png とかだと問題は起きないので,幅を計算したときのフォントと実際の表示フォントが違うせいかと思うが,本当のところは不明.ただ,グラフ出力結果の先頭あたりに
<g id="graph0" class="graph" style="font-family:Times-Roman;font-size:14.00;">
という記述があるので,フォントとサイズを変えれば,いちおう解決は可能.
2月13日追記: Adobe の SVG Viewer では問題なく表示される.これは,単に Inkscape が Times-Roman の名前を認識できなくて,勝手に何か別のフォントに置換しているために生じていると考えたほうがよさそう."Times-Roman" のところを "Times" なんかにすると,どちらのビューアでも普通に表示される.
2006-02-13 [長年日記] ▲
_ [VolumeDeskbar] 音量調節時にポップアップする音量の値が,最新の値ではない問題 ▲
Volume Deskbar で,ドラッグによる音量調節時のポップアップヒントの内容に誤りがありました.
ポップアップヒントとして,音量調節の直前の値をそのまま出力してしまっていたため,音量を増加→増加→減少という順で操作したとき,たとえば9%→10%→11%→10%と実際の音量が変化したとすると,ポップアップヒント表示上は9%→10%→11%と表示されてしまい,一見増加したように見えてしまいます.
この修正は,1.0.6 としてリリースする予定です.
2006-02-15 [長年日記] ▲
_ [hyCalendar][お知らせ] hyCalendar 1.3.3a リリース ▲
リリースしました.といっても,今回は,サイト移転に伴うドキュメント更新(問い合わせメールアドレスや,公開サイトのURLの変更)だけです.ドキュメントが古くても気にならない人はそのままでもかまいません.
_ [VolumeDeskbar][お知らせ] VolumeDeskbar 1.0.6 リリース ▲
1点,ドラッグ時にポップアップする音量の値が正しくなかった問題の修正が入っています.また,ドキュメントに含まれるURL等を更新しています.
_ [ツール] ファイル複製検出ツール DupChecker ▲
ちゃんとDupChecker 公開ページを作りました.ファイルのMD5ハッシュ値を比較するだけの単純なツールですが,ソースコードも公開してます.
リバースエンジニアリング系ツールの実験材料とすべく,以前から公開していたものに比べ,かなりパッケージ間の依存関係などは整理したつもりです.
2006-02-18 [長年日記] ▲
_ [PptWatch] PptWatch 1.0.1 公開 ▲
各スライドごとに消費した時間を解析していたのに加えて,1枚目から累計で消費した時間も表示するように変更しました.修論・卒論の発表練習にどうぞ.
PptWatch公開ページからダウンロード可能になっています.
発表の練習をするとき,発表時間が足りないからといって早口で喋ってしまうと,どこを削っていいか分からなかったりするので,普通のペースで喋ってみて,長くかかってる部分を削るという使い方が推奨です.
2006-02-20 [長年日記] ▲
2006-02-21 [長年日記] ▲
2006-02-24 [長年日記] ▲
_ [論文] シーケンス図形式の仕様記述言語 ▲
Yves Bontemps, Patrick Heymans, and Pierre-Yves Schobbens: From Live Sequence Charts to State Machines and Back: A Guided Tour.
IEEE Transactions on Software Engineering, Vol.31, No.12, pp.999-1014, December 2005.
Live Sequence Chart (LSC) というシーケンス図の変種を,オブジェクト(エージェント)間のメッセージ通信の仕様記述に使って,そこからオブジェクトごとの動作を作って,両方を使って検証しようというアプローチ(理想はオブジェクトごとの動作を自動生成だけど).
LSC は,普通のシーケンス図に相当する existence LSC (eLSC) と,事前動作(Prechart)に対するリアクション(Main Chart)を記述した Universal LSC (uLSC) からなる.
uLSC の記述は,起きては困るイベント列が起きないこと(safe)と,起こるべきイベントがいつか必ず起こること(live)の両方を記述している.
そこで,オブジェクト(エージェント)ごとの振舞い記述を用意して,その出力メッセージ系列に対する safe と live の性質を調べると,その uLSC の仕様に従うか検査できる.uLSC で記述された仕様を満たすようなオブジェクト(エージェント)ごとの振舞いを自動生成するのは決定不能問題らしい.
2006-02-27 [長年日記] ▲
_ ファイル最終更新日付の表示 ▲
という,tdiary プラグインらしきものを即席で作ってみた.次のようないい加減な代物だけれど,ないよりはマシということで.
#!/usr/local/bin/ruby FileName = "(掲示板ログファイル)" def lastupdate begin return File.new(FileName).ctime. strftime("%Y/%m/%d %H:%M") rescue return "" end end
これで,掲示板の最終更新時刻が分かるようになった.正確にはログファイルの最終なので,何かの拍子に古いログを掃除したりすると更新されてしまうという弱点があったりする.
_ いしお [自分で訂正しておくと,rescue ForceRedirectを,index.rb の全体のbegin-endブロッ..]