netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2009-02-15 [長年日記] ▲
_ [近況] しめきり x4 ▲
修士論文x2の締切とSIGSE原稿x2の締切が同時だったので,暇なしの土日でした.月曜は修論発表会で1日かかりきりになってしまうので,学会関連のことは火曜から進み始めます.たぶん.
今回の知見: どんなに良い内容があっても,体裁や構成が崩れただけで文章が読めなくなる(頭が読むことを拒否する).PDFとかでもらったテキストを切り貼りして構成を直しながら読むほうが,そのまま無理して読むよりも圧倒的に早い.
某先生曰く「論理展開は循環なしの有向グラフであり,論文はそれを直列化しただけのもの」なので,今回みたいに内容には問題がないのに構成が悪い場合は,グラフ構造で編集しつつ,いろいろな順序でセクションに並べて試し読みができるエディタとかあると便利だろうなーと思います.アウトラインエディタとかアイディアプロセッサとか,そういう分類になっているソフトウェアのカバー範囲だと思うのですが,まだ,これというものが見つかりません.
2009-02-01 [長年日記] ▲
_ [hyCalendar] エラー報告用ツール ▲
hyCalendar 1.6.2 のデバッグ版作りました.このバージョンは,エラーが起きたときに,スタックトレース情報をクリップボードに出してくれます.それをメールで送っていただけると,エラーへの対処が格段に楽になります.使用上の注意点は,hyCalendar.map というファイルを EXE と一緒のディレクトリに置くことです.
もう1つエラー報告用ツールとして,hyCalendar-Anonymizer.exe というのを作ってみましたので,一緒のアーカイブに入れておきました.データファイルをこのツールにかけると,予定の項目名部分を全部つぶしたデータが出力されます.このデータを送っていただけると,ファイルの構造などに異変があったときに,その問題を分析できます.ただし,スケジュールデータは,個人情報の塊なので,項目名つぶしてから送信するときも,必ず中身をメモ帳などのテキストエディタなどでチェックして,送っても問題ない情報しか格納してないことを確認してください.
こういうツールは,使わずに済むのがベストなんですが,そうも言ってられないので用意しておくことにしました.スタックトレース情報+項目名をつぶしたデータファイルをいただけると,問題への対処が格段に楽になります.
2009-01-12 [長年日記] ▲
_ [読書] 理系のための口頭発表術 ▲
そろそろ修論・卒論シーズンなので,研究室に「理系のための口頭発表術(amazon.co.jp)」という本を置いておくことにしました.この本は,口頭発表の大事なポイントを一通り,具体例込みで紹介しています.既に何回も対外発表したことがある人にとって新発見となるような内容は入っていないと思いますが,ちゃんとした場に出るのが初めての人が一読するには良さそうな本です.
この本は,学術的な発表の方法というスコープを限った話になっているので,余計な脱線などもなく,読みやすいと思います.また,本自体が短くまとめられており,適当に空いた時間を使って(たとえば電車に乗っているときにでも)読めるという点も良いと思います.
2008-12-27 [長年日記] ▲
_ [Eclipse][Java][ツール] ブレークポイントごとに変数の内容を出力するプラグイン ▲
Java プログラムの動的解析を簡単に実行する方法として,Eclipse からのプログラム実行方法を色々と実験してます.
その副産物として,デバッグ実行時,ブレークポイントで停止したときの変数の内容をテキストファイルに書き出す Heapdumpプラグイン(仮) というのができたので,とりあえず現状のバイナリのみ置いておきます.
このプラグインをインストールすると,デバッグの構成ダイアログから,「Heapdump for Java」という構成が作れるようになります.この構成でプログラムをデバッグ実行すると,ブレークポイントで停止したとき,スタックフレームに載ってる変数の情報がテキストファイルに出力されます.変数名,型名,値の情報は,Eclipseデバッガの変数欄で格納できる文字列とまったく同じです.テキストファイルで読むほうが,オブジェクトのメンバーなどを細かく調べる作業を少しだけ楽にできるようになるだろう,と作ってみたものです.
オブジェクト参照を再帰的に探索する実装をしていますが,全オブジェクトを出力すると大変なことになってしまうので,実行時の構成では,以下のような設定項目を指定する必要があります.
- Output Directory: ファイル出力先のディレクトリ.ここに,ブレークポイントで停止するごとに,1.txt から順番にテキストファイルが作られます.
- Path of Variable Names and Type Names: 出力したいオブジェクトの変数名あるいは型名の条件を,スラッシュ区切りで指定します.デフォルトの
*
は,スタックフレーム上のすべての変数を意味します.スラッシュ以下は,オブジェクトや配列のメンバーを意味します.たとえば
this/int
なら,this に含まれた int 型のメンバー全員を出力します.また,x/Field*/*
なら,xという変数名あるいは型名で参照されたオブジェクトの情報を取得し,その中の「Field」という文字列で始まる変数名あるいは型名のフィールドで参照されているオブジェクトを列挙し,そのメンバー全員を出力します.スラッシュの数で,何階層下まで探索するかが決まります.大量に出力すると,ブレークポイントで停止したタイミングでの出力処理に時間がかかり,一時的に Eclipse の UI 更新が止まって見えます.
- Number of Stackframes: いくつのスタックフレームの内容を出力するかを指定します.
1なら実行中のメソッドから参照できる変数のみ,2ならそのメソッドの呼び出し側スタックの内容も出力する,というようになります.
- Max Number of Variables: いくつの変数の情報を出力したら探索を停止するかを指定します.
1週間くらいで作った即席ツールなので,あんまり洗練されてはいませんが,使ってみたい人はご自由にどうぞ.