jFD開発したりしなかったり日誌
2004-06-25 [長年日記]
_ 面接受けてきました
8月からの仕事の面接を受けてきた。
面接をしてくれた人、只者じゃないかもしれない。
「ちょっと質問したいことがあるんですが」
と聞かれて、今までのプロジェクトのことかと思ったら
「無記名クラスっていつ使うんですか?」
ふぉ?
「うちのプログラマがわからないでいるんですよ」
とは言っていたが、試されていたような気が。
僕は以前まで無記名クラス反対派だったんだけど、最近C#を触ってから
考えが変わって、比較的抵抗無く使うようになっている。
しばらく悩んで自分の使い分けを整理してみたのだが、
通常の用途なら通常のクラス、そのクラス内でしか使われないのが
わかっているのならインナークラス、メソッド内でしか使われないのが
わかっているのなら無記名クラス、と使い分ければよいのではないか、
という風に答えたのだが、けっこう鋭い質問だと思った。
僕の回答だと、カプセル化ということを理解していることがわかる。
けっこう力量がわかるのではないだろうか。
こういう質問するってことは、技術の勘所をわかった会社なのかもしれない、
やってみようか、と思ったが、案件が鎌倉なんだよなあ。
遠いよ。
_ jFD2
どこかに巨大なボトルネックがある模様。
ディレクトリがでかくなるほどページ切り替えの動作が
もっさりしてきて、C:\WINNT\SYSTEM32あたりだと重くて使い物にならない。
探せえええぇぇぇぇぇ
_ あー
jFD2の重くなる原因発見。
結局Javaの実装のせいだった。
まだファイル表示の表示内容切り替えを実装してないのだが、
そのために常にファイル名、ファイルサイズ、タイムスタンプを常に表示していて、
新しいページが表示されるたびにそこら辺の属性を取得しにいっている。
ところがタイムスタンプの取得はどうにもコストが高く、たとえば25行2列の表示なら
50個のファイルのタイムスタンプ取得が発生するので問題になっていたようだ。
ちょっとサンプルを書いてみたがこんな風になった。
File file = new File("c:\\winnt\system32"); File[] children = file.listFiles(); long start = System.currentTimeMillis(); for(int i=0; i < children.length; i++) { children[i].lastModified(); } System.out.println(System.currentTimeMillis() - start);
_ 数回実行してみたが、30〜40秒かかっている。
そりゃ動作ももっさりするわ。
通常、ファイル名を大きく表示するためにタイムスタンプの表示を
行わないようにしてるので今まで問題になってないだけだった。
結局、対策はK.Takata氏のFastFile方式以外ありえないようだ。
- https://www.google.co.jp/ ×3
- http://homepage3.nifty.com/k-takata/diary/2004-06.... ×2
- http://a.hatena.ne.jp/YourHouse/ ×1
- キーワード不明 ×31 / イケメンヌード ×3 / 無記名クラス ×3 / 金蹴り サンプル ×3 / winny ?m?[?h ×2 / C# インナークラス ×2 / java system タイムスタンプ取得 ×2 / java ファイル タイムスタンプ取得 ×2 / java タイムスタンプ currentTimeMillis ×2 / java タイムスタンプ取得 サンプル ×2 / 爪が紫色に ×2 / UNIX ファイル タイムスタンプ 取得 ×2 / winny?????m?[?h ×2 / java タイムスタンプ取得 ×2 / ?m?[?h winny ×2 / 無記名 クラス ×2 / 金蹴り動画 ×2 / 金蹴り ダウンロード ×1 / JAVA ファイル タイムスタンプ取得 ×1 / Java ファイル タイムスタンプ取得 ×1 / java 無記名 クラス ×1 / MVC クラス図 ×1 / proce55ing currentTimeMillis ×1 / new File java system32 ×1 / java タイムスタンプ ×1 / JAVA listFiles タイムスタンプ ×1 / 無記名 クラス java ×1 / listFiles サンプル ×1 / takata yahoo.co.jp ×1 / winny 2ダウンロード ×1 / children java ×1 / Proce55ing ×1 / eclipse障害復帰 クラスパス ×1 / 金蹴り ×1 / java FastFile ×1 / winny 2 ダウンロード ×1 / System.currentTimeMillis() c# ×1 / ファイル名を大きく表示する ×1 / 蹴り サンプル ×1 / C# children.length ×1 / java"無記名クラス" ×1 / listFiles() ×1 / jfd2 タイムスタンプ ×1 / winny?????m?|?h ×1 / winny ?m?|?h???? ×1 / ファイル名を大きく ×1 / java タイムスタンプの取得 ×1 / 金蹴り 質問 ×1 / タイムスタンプ取得 JAVA ×1 / winny TAKATA ×1 / java listFiles 最新 タイムスタンプ ×1 / winny ?????m?[?h ×1 / winny ?_?E?????[?h???@?? ×1 / winny 重くなる 原因 ×1 / C# ファイルタイム ×1 / JAVA 無記名クラス ×1 / ruby タイムスタンプ取得 ×1 / c# ファイルタイムスタンプ ×1 / winny.m ×1 / ファイル タイムスタンプ java ×1 / Java ファイル タイムスタンプ ×1 / JAVA タイムスタンプ取得 ×1 / Winny ?m?[?h ×1 / WINNY タイムスタンプ ×1 / ファイルのタイムスタンプ取得 java ×1