Diary/2007-8
前の月<< 2007-8 >>次の月 | ||||||
---|---|---|---|---|---|---|
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 発表 | 2 懇親会の日 | 3 北海道より帰還 | 4 | |||
5 | 6 論文採録決定 | 7 | 8 | 9 NetBSD+xorg | 10 FreeBSDでgcjを使ってみる | 11 gcjで遊んでみる |
12 gcjでコンパイルして使えるように | 13 | 14 NetBSDでgcjコンパイル | 15 浮動小数の扱い(Binary Hacks #98より) | 16 | 17 | 18 |
19 | 20 make -r | 21 | 22 | 23 ベンチャービジネス推進研究 | 24 | 25 |
26 | 27 最終試験 | 28 | 29 | 30 寝違えた | 31 テスト設計 |
Diary/2007-8-31
テスト設計
SWEST二日目.テストとか検証とかについて,勉強した一日.
午前のセッションでは,
そもそもランダムテストの必要性についての議論もあったりして,
なかなか面白かった.
まあ,ソフトとハードの検証/テストの
どっちが難しいかとかは,割とどうでもいいかなと思ったけど.
マインドマップ
マインドマップを使って仕様解析したりテスト項目したり.最近ボールペンを持ち歩くようにはなかったけど,
これからは3色ボールペン持ち歩こう.
実習/グループ演習とかで,いろいろ勉強になった.
マンダラート
3x3のマスを作って,その中心のマスに課題を記述し,周囲のマスに課題に対する項目を書いていく.
マス埋めなきゃとなって,アイディアが浮かぶとか.
今度ためしてみよう.
Diary/2007-8-30
寝違えた
はじめは,右を向けないという程度だったのに,新幹線に乗って浜松につく頃には,
くしゃみをしただけで体全体に激痛が走るように.つらすぎる.
ポスター発表
MICSについてポスター発表.第一発表者は研究室の後輩君.
いろいろしっかり説明してくれていたよう.
何人かは,自分でも対応したり.
とある米大学の方にも目をとめてもらって意見交換.
仕事を楽しく
XPとかでアジャイル開発とかで有名な平鍋さんの講演.仕事の分量や達成度を見える形にして,
達成感や危機感,モチベーションをあげるという.
野球のスコアボードの例が,とても面白かった.
「最新の正の情報」が「一箇所に」「大きく」
「両チームのメンバー」「審判」「観客」の「次の行動を誘発」する
なるほど.
タスクかんばんとか,リズム大事とか,Myボードとか.
DAシンポジウム
日程かぶってないのか.Diary/2007-8-27
最終試験
無事終了.Diary/2007-8-23
ベンチャービジネス推進研究
東工大ベンチャービジネスラボラトリの企画.総額1500万円の研究補助費を最高各200万円ずつ分配とのことで,
MICSを課題にして提出していた.
8月初旬に結果発表しますという話だったが
何も音沙汰なくあきらめかけていたら
今日書類が届いていた.中の書類の日付は8/1...おいおい.
まあ,いづれにしても研究補助費が増えた.
Diary/2007-8-20
make -r
-r Eliminate use of the built-in implicit rules. Also clear out the default list of suffixes for suffix rules.MacOSXでbinutilsをコンパイルするときとかに、.mなルールが邪魔するとき。
Diary/2007-8-15
浮動小数の扱い(Binary Hacks #98より)
研究室の後輩の浮動小数を扱うプログラムの挙動がgccの最適化オプション(-O)の有無で違うというので考えてみたら
ぴたりBinary Hacks #98の通りで、
x86の浮動小数点レジスタの指数部が15bit固定であるのが
原因だった。
最適化オプションの有無によって
一度メモリに値を書くか書かないかの挙動が異なっていて、
これで結果の値も異なっていたよう。
ちなみに、BinaryHacksのpp.369のプログラム、
FreeBSD上で最適化オプションをつけずにコンパイルして実行するとx86でもinfになった。
Diary/2007-8-14
NetBSDでgcjコンパイル
とりあえず、xlibや、gtkなしの版- Too many open files
ulimit -n 1024としてコンパイル。
ちなみに、動作しているプロセスの場合、sysctlで
proc.${pid}.rlimit.descriptors.softの値を変えればよい。これの元の64という値は、
/usr/src/sys/sys/syslimits.hで定義されている
- unqualified-id before numeric constant
In file included from gnu/java/net/natPlainSocketImpl.cc:53: ./java/lang/Boolean.h:29: error: expected unqualified-id before numeric constant ./java/lang/Boolean.h:29: error: expected ';' before numeric constant ./java/lang/Boolean.h:30: error: expected unqualified-id before numeric constant ./java/lang/Boolean.h:30: error: expected ';' before numeric constantTRUEやFALSEという名前で定義されたマクロが悪さしているようなので
#undef TRUE #undef FALSEとクラス定義の前に追加してみた。
ちなみに、このTRUEは、
i386-unknown-netbsdelf4.99.26/libjava/include/platform.h
中でincludeしているsys/types.h、
つまり/usr/include/sys/types.hで定義されている。
FreeBSDでは、同様の定義はsys/param.hにある。
Diary/2007-8-12
gcjでコンパイルして使えるように
ソースコード書き換え。コンパイルは通るけど、使えないというのが困る。
以下、使えなかったもの
- JMenubar
- JTextArea
- JOptionPane
Diary/2007-8-11
gcjで遊んでみる
Javagcjについては↓を読んでみる。
http://gcc.gnu.org/java/
http://www.shudo.net/article/Fedora-Core-Expert-200507-GCJ/
http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gcj-3.2.1/gcj-ja.html
で、パッケージとかJarとか動的ロードとかの扱いを試してみた。
gccは、FreeBSD 6.2-RELEASE上でコンパイルしたgcc-4.2.1を使用
テストコードは、最後に示しているものを利用。
{{outline}}
一度にコンパイル
gcj --main=test.Test test/*.java
中間ファイルを作ってコンパイル
gcj -c test/Hoge.java gcj -c test/Test.java gcj --main=test.Test *.oパッケージのルートが"."でない場合(たとえばsrc/とか)は
gcj -Isrc -c src/test/Test.java gcj -Isrc -c src/test/Hoge.java
Classファイルからオブジェクトコードを作る
javac test/*.java gcj -c test/Test.class gcj -c test/Hoge.class gcj -c test/Test\$TestInner.class gcj --main=test.Test *.o内部クラスのオブジェクトコードを作るのも忘れないように
外部のパッケージを使っている場合も、そのjarやフォルダを-Iで指定する。
jarからオブジェクトコードを作る
javac test/*.java jar cvf test.jar test/*.class gcj -c test.jar gcj --main=test.Test test.ojarファイルはそのままオブジェクトコードになる
shared objectにする
gcj -o libHoge.so -shared test/Hoge.java gcj --main=test.Test test/Test.java -L. -lHogejarファイルをshared objectにすることもできる
jar cvf test.jar test/*.class gcj -o libTest.so -shared test.jar
動的ロード(1)
javac test/Hoge.java javac test/Test.java gcj --main=Loader Loader.javaロードするクラスへ正しくアクセスできないとだめ。
javaやgijと違って起動時にclasspathを設定できるわけではないので、
外部のjarを利用したいなら、
パッケージのjarごとshared objectにして動的リンクするか、
自分で管理する必要がある?
動的ロード(2)
gcj -o libHoge.so -shared test/Hoge.java javac test/Test.java gcj --main=Loader Loader.java -L. -lHoge実行時に、libHoge.soがLD_LIBRARYPATHで参照できる必要がある
動的ロードの優先順位
gcj -o libHoge.so -shared test/Hoge.java javac test/Test.javaとした後で、
Hoge.javaのコンストラクタで、クラス名を表示する前に
System.out.println("Modified");と表示させるように変更して
javac test/Hoge.javaとクラスを作る。で、次の二つを実行
- リンクしない
gcj --main=Loader Loader.java実行結果は、
miyo@vmouton:% ./a.out modified test.Hoge test.Test test.Test$TestInner modified test.HogeHogeを変更しているので、当然。
- libHoge.soをリンクする
gcj --main=Loader Loader.java -L. -lHoge実行結果は、
miyo@vmouton:% ./a.out test.Hoge test.Test test.Test$TestInner test.HogeつまりLoaderはもちろん、Testの方でも
コンパイル時に動的リンクしたlibHoge.soが優先される。
# 何か設定とかプログラムで変更できるのかな?
1.5のコード
gcjでは、1.5のコード、ジェネリクスや、イテレーション構文、オートボキシングのあるコードはコンパイルできません。
が、一度javacを使ってクラスファイルに落とすことで、gcjに通せます。
import java.util.*; public class Test5{ public static void main(String[] args){ ArrayList<Integer> list = new ArrayList<Integer>(); for(int i = 0; i < 10; i++){ list.add(i); } for(Integer s: list){ System.out.println(s); } } }なら、
javac Test5.java gcj --main=Test5 Test5.classとか
テストコード
- test/Hoge.java
package test; public class Hoge{ public Hoge(){ //System.out.println("modified"); System.out.println(this.getClass().getName()); } }
- test/Test.java
public class Test{ public Test(){ System.out.println(this.getClass().getName()); new TestInner(); new Hoge(); } class TestInner{ public TestInner(){ System.out.println(this.getClass().getName()); } } public static void main(String[] args){ new Test(); } }
- Loader.java
public class Loader{ public static void main(String[] args) throws Exception{ ClassLoader.getSystemClassLoader().loadClass("test.Hoge").newInstance(); ClassLoader.getSystemClassLoader().loadClass("test.Test").newInstance(); } }
Diary/2007-8-10
FreeBSDでgcjを使ってみる
../gcc-4.2.1/configure \ --enable-threads=posix \ --prefix=/usr/local/gcc-4.2.1 \ --enable-shared \ --with-as=/usr/bin/as \ --with-ld=/usr/bin/ld \ --with-x \ --enable-java-awt=gtk,xlib \ --enable-gtk-cairo \ --enable-languages=c,c++,javaこんな感じでconfigureして
gmake bootstrap; gmake; gmake installとか
とりあえず、javax.swing.JFrameとかも開く。
Eclipse 3.3のキー設定
設定ダイアログがなんか変更されている。フィルタかけて機能を検索できたりして便利。
# 今までそんなにカスタマイズしてたわけではないけど。
はじめ、「include unbound commands」にチェックをいれてなかったため
Delete Previousがなくてあせった。
文字通り、ここにチェックをいれないと、未割当のコマンドは、表示されないのね。
無事、Ctrl-hにDelete Previousを割り当てて今まで通りに。
Diary/2007-8-9
NetBSD+xorg
NetBSDcurrentなNetBSDの上で、
今日取得したpkgsrc使ってxorg-serverをmakeしたらエラーになった。
fttools.c:(.text+0xef): undefined reference to `ft_isdigit'とかいってエラーになったので、とりあえず、
fttools.cの中をみてみると、
FREETYPE_VERSIONの値をみて、
ft_isdigitをisdigitにdefineするかどうか決定しているよう。
というわけで、無理矢理defineしてコンパイル。
Diary/2007-8-6
論文採録決定
条件の修正版投稿後なかなか返事がないのでびびっていたけど採録されたようで,一安心,これでフラグがたった〜.
Diary/2007-8-3
北海道より帰還
台風大丈夫かなとか思ったけど,特に問題はなかった.ただ,乗る飛行機の到着が一時間ほど遅れたため,空港で待ちぼうけ.
まあ,地ビールのみながら,お店のコンセント借りて
パソコン開いてたからすぐだったけど.
行き同様たくさんの見知った方々と一緒.
Diary/2007-8-2
懇親会の日
発表は終わっているのでずいぶん気楽.いくつか気になる発表を聞いたりしてぶらぶらと.
懇親会は,ジンギスカンという話だったので,
立食じゃないのかなとか思っていたけど,立食だった.
うーん,肉足りないでしょ?うまかったけど.
知り合いの先生にひっついて,ARCな人たちについていって
二次会,三次会.
途中お祭りの屋台でビール飲んだりもしつつ,のんびりと.
Diary/2007-8-1
発表
対象アーキテクチャがよくわからないという指摘.まあ,結果でてないし仕方ないよな.
そんな発表ではあったが,いろいろ貴重なコメントもらったので,
私としてはありがたかった.
終わった直後はとてもヘコんだけど.
さあ,これからがんばろう.
鹿のハム
居酒屋でビールと鹿のハム.うまい.Copyright (c) 2001-2008 Takefumi MIYOSHI, All rights reserved