Diary/2007-8

1
発表
2
懇親会の日
3
北海道より帰還
4
56
論文採録決定
789
NetBSD+xorg
10
FreeBSDでgcjを使ってみる
11
gcjで遊んでみる
12
gcjでコンパイルして使えるように
1314
NetBSDでgcjコンパイル
15
浮動小数の扱い(Binary Hacks #98より)
161718
1920
make -r
212223
ベンチャービジネス推進研究
2425
2627
最終試験
282930
寝違えた
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 constant
TRUEや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でコンパイルして使えるように

ソースコード書き換え。
コンパイルは通るけど、使えないというのが困る。
以下、使えなかったもの

Diary/2007-8-11

gcjで遊んでみる

Java
gcjについては↓を読んでみる。
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.o
jarファイルはそのままオブジェクトコードになる

shared objectにする

 gcj -o libHoge.so -shared test/Hoge.java
 gcj --main=test.Test test/Test.java -L. -lHoge
jarファイルを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.Hoge
Hogeを変更しているので、当然。
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

NetBSD
currentな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