2001年05月23日(水) 雨
■ IDTSのサイボウズのURLが変わっていた。そんでNetscape6からだと見れなくなっていた。IE5からなら見れる。なんでやろか。誰か改善してくれないかな。あと、サイボウズにアカウントが無くてもスケジュールを見れるようにしてくれると嬉しいなあ。
ライブリンクは見れなくなってしまった。サーバ名がわからない。前はライブリンクで見れたのだけれど。まあいいや。
なんか今日はウェブを見てばかりで仕事になってないや。
Windowsは難しいなあ。イベントログをテキストファイルに書き出すスクリプトが日経Windows2000 4月号に載っている。
だからといってSolarisが易しいというわけでもないのだ。うーむ。
■ [web] ColdFusionでユーザーログイン機能を作ろう
ColdFusionのプログラム例。jcfmlより。
■ [java] Javaコード静的解析ツール J.Taster
Javaのコードを解析して問題点を指摘するソフトウェアJ.Taster。JavaHouse-Brewers MLより。ソフトをダウンロードできるわけではないみたい。かといって売っているようにも見えない。どいうことなの?
■ [security] Real Secure
不正侵入検知のためのソフト。 @IT より。一応メモ。価格を公開してほしいな。
■ [link] JPNIC Whois Gateway
JPNICのWhois。 UGTOPの世界 より。
■ [security] Cerberus' Internet Scanner
フリーなセキュリティチェックツールCIS。日経Windows2000 2月号より。使ってみたが、簡単でよい。
2002年05月23日(木) サーバダウンか
■ 会社
- 11:10 今日は壁の青いNS駅へ行ってしまった。通算二度目。
- DatulaとAL Mailはアドレス帳のファイルフォーマットに互換性があるのだということを知った。
- 11:40 依然としてredhatのApacheは毎晩ダウンしている。Apache自身に問題があるのかもしれない。tripwireもやはり毎晩rootにメイルで報告してくる。
- 13:50 strutsユーザMLに参加してみた。Strutsのタグライブラリはxhtmlには対応してないみたい。
■ テレビ/本
- 共生虫。共生虫登場。SFなのかなあ。それなら面白いかも。
- JavaWorld6月号読み終わり。XML Schemaの解説とか。
2005年05月23日(月)
- 最近はテストとか環境設定とかばかりしている。
- テストしているプログラムはバグだらけでパフォーマンスもかなり悪い。実装に問題があるわけだけれど、実装のお願いの仕方にも大いに問題がある感じ。
■ [shell] シェルをviモードで使うようにする
シェルのコマンドライン編集にはemacsモードを使っていたが、emacs使いではないのでviモードに変更してみた(viが得意なわけでもないのだけれど)。
bashの場合は .inputrc ファイルに
set editing-mode vi
と書き、tcshの場合は .cshrc ファイルに
bindkey -v
と書けばいいみたい。
■ [java] 旧バージョンのJVMでも動くようにコンパイルする
J2SE 5.0 環境でコンパイルしたClassファイルをJRE 1.4 環境へ持っていったら動かなかった。
javacのマニュアルを見ると
javac -target 1.4 Example.java
のようにすればよさそうだがこれだと
javac: ターゲットリリース 1.4 がデフォルトのソースリリース 1.5 と競合しています。
というエラーになってしまった。そこで
javac -target 1.4 -source 1.4 Example.java
と指定したらコンパイルでき、生成されたClassファイルはJRE 1.4 環境でも動作した。
でも、マニュアルを読んでいると-bootclasspath オプションと -extdirs オプションも必要そうなことが書いてある。ブートクラスパスと拡張機能ディレクトリってなんだ?
■ [java] ブートストラップクラスと拡張機能クラス
についてはクラスの検索方法というドキュメントに説明があった。
ブートストラップクラスは、Java 2 プラットフォームを実装しているクラスです。ブートストラップクラスは、jre/lib ディレクトリの rt.jar と他のいくつかの JAR ファイルに格納されています。これらのアーカイブは、システムプロパティ sun.boot.class.path に格納されているブートストラップクラスパスの値によって指定されます。このシステムプロパティは参照専用なので、直接修正しないでください。
拡張機能クラスは、Java プラットフォームを拡張するクラスです。拡張機能ディレクトリ jre/lib/ext 内の .jar ファイルはすべて拡張機能と見なされ、Java 拡張機能フレームワークを使ってロードされます。拡張機能ディレクトリ内でどこにも属さないクラスファイルは、見つけることができません。これらのファイルは、.jar ファイル (または .zip ファイル) 内に含まれている必要があります。拡張機能ディレクトリの位置を変更するためのオプションはありません。
ふむ。
■ [java] -bootclasspath オプションと -extdirs オプションの使いどころ
まだよくわかんないんだけど。ブートクラスパスはブートストラップクラスの位置を指定するパス、拡張機能ディレクトリは拡張機能クラスが存在するディレクトリ、ということだろう。
で、J2SEのバージョンアップに伴ってブートストラップクラスや拡張機能クラスの仕様が変わっている可能性があって旧バージョン用のプログラムがコンパイルできないことがあるからその場合はjavacの -bootclasspath オプションや -extdirs オプションを使って旧J2SEに付属しているクラスを指定する、と理解すればいいのかと思ったけど、「機能リリースおよびメジャーリリース (1.3.0、1.4.0、5.0 など) では、ソースレベルの上位互換性は保証されるが、下位互換性は保証されない」ということでソースレベルの上位互換性が保証されるならそういうことではないのか。
もう一度javacのマニュアルを見直す。
Java 2 SDK の javac は、デフォルトでは、Java 2 SDK のブートストラップクラスに対してコンパイルを行うので、Java 2 SDK ではなく JDK 1.4 のブートストラップクラスに対してコンパイルを行うように指定する必要があります。これは、-bootclasspath および -extdirs を使って指定します。この指定を行わないと、1.4 VM には存在しない Java 2 プラットフォーム API に対応したコンパイルが行われるため、プログラムの実行時に障害が発生することがあります。
「実行時に障害」と言っているのでバイナリの互換性のことを言っているのだろう。-target オプションで1.4向けのバイナリを作るように指定しても、それだけでは1.4に付属しているブートストラップクラスや拡張機能クラスと組み合わせたときに正しく動作しないことがあるってことだなあ。なんでそうなるのだ?わからん。
とにかく、マニュアルを読むと上に書いたような
javac -target 1.4 -source 1.4 Example.java
じゃダメで
javac -target 1.4 -source 1.4 -bootclasspath jdk1.4.2/lib/classes.zip Example.java
としなければいけないように思われる。でも単にこれだと
致命的エラー: クラスパスまたはブートクラスパスでパッケージ java.lang を検出できません。
とエラーになってしまいコンパイルできない。コンパイルするにはJDK1.4.2に付属するclasses.zipが必要そうだ。そうだとするとJ2SE5.0だけでは1.4向けのバイナリは作れないってことになってしまう。
5.0と1.4の両方の環境をいじれれば調べられそうだけれど、手元にはないからよくわからないまま終わり。
■ [java] -bootclasspath オプションと -extdirs オプションの使いどころ (2)
単純にこういうことかなあと思った。
「-target 1.4 -source 1.4」というオプションは付けるが「-bootclasspath」オプションは付けずにコンパイルすると、ソース中に5.0で新たに追加されたブートストラップクラスを利用している箇所があってもコンパイルできてしまうと。この場合、1.4環境にClassファイルを持っていくと動かないと。だから、5.0で追加されたブートストラップクラスや拡張機能クラスを使っていないことが分かっている場合は「-bootclasspath」オプションは付けなくても大丈夫と。
試せてないから分からないけど、正しい気がする。
■ やること
- リンク元のスリム化
- tDiaryバージョンアップ
- FSWikiバージョンアップ
- オーブンレンジ用べんり棚
- ブラウンの安い電動歯ブラシ買う
- 蛍光灯を捨てる
2007年05月23日(水)
■ [vim] gtags.vimを使う
関数の参照元にジャンプできるようにしたくて、GNU GLOBALを使ってみた。
yumでglobalパッケージをインストールすると /usr/share/gtags/gtags.vim ができたので、これを ~/.vim/plugin/ にコピー。使い方はこのスクリプトの最初に書かれている。そこに、
" Suggested map: " map <C-]> :GtagsCursor<CR>
とあるんだけど、こうしても Ctrl-T で戻ることはできないし、ヘルプなどでタグジャンプができなくなってしまうのでよくない気がする。で、vimでgtags(global)を使うの真似をして .vimrc に
map ^_ :Gtags -r <C-R><C-W><CR> map ^? :GtagsCursor<CR>W
と書いてみた。Ctrl-7で関数の使用箇所にジャンプ、Ctrl-8で関数の定義にジャンプ。
■ [vim] 関数を強調表示
C/C++関数を強調表示にある設定を試してみた。C/C++以外で動くと困ると思ったので、.vimrc には
autocmd FileType c,cpp syntax match CFunction /[a-zA-Z_]\w*(\@=/ autocmd FileType c,cpp hi CFunction ctermfg=darkcyan
と書いた。関数名に色が付くようになった。
ついでにターミナルで256色表示するも読んで256色表示にした。するとデフォルトのカラースキームだと見難くなってしまったので、
colorscheme peachpuff
を追加した。
■ やること
- 年金
2008年05月23日(金)
- ひさーしぶりにKDMくんと食事した。TTI跡地の鶏の店で宝探しや投資の話。
- バレーボール女子のオリンピックの世界最終予選をやっている。韓国戦を観た。日本のスタメンは竹下荒木栗原高橋杉山木村リベロ佐野。勝ってオリンピック出場権獲得。韓国弱すぎ。
● おっさん [■Gtagsの戻る[Ctrl + T]について :bprevious 上記コマンドで、戻ることができたような・・・気..]
● 小川 [情報をありがとうございます。 しかし、:bprevious は GNU GLOBAL とは関係なくて、一つ前のバッフ..]
● おっさん [おっとそうでしたか。。。失礼しました。 結局のところGLOBALを使うにはEmacsが有力ですかね]