変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

PHILIPS 234ES

フレームは薄いけど液晶面は上左右に1cm程度の非表示領域がある。
更にPCに繋ぐとその液晶面の端から上下1cmづつ、左右2cmづつ黒枠が出現し
その中にデスクトップが表示される!
そう云う訳で実質23インチなのだが、思ったより使えるのはかなり狭くなってしまう。
そこはOSCの画像のOverScanをOnにすることで黒枠は5mm程度に小さくなるものの
デスクトップのアイコンの文字が少しピンボケになるので文字を読むには向いていない。
DVIも付いていればよかったんだろうね。
予想に反してPS4との相性は良くPS4本体で液晶面全体で表示するようにすれば、ほぼ全面でプレイできてお得だ。(大笑
しかも、ゲームをすればAcerのAL2423Wよりずっと見やすい。
PS4に1980×1200のモニターを繋ぐと740×480でBD再生していたが、このモニターなら1080pでちゃんと再生してくれる。
PS4専用モニターとしてはいいほうだろう。
後ろにヘッドフォンもつなげられるが、DUAL SHOCKのイヤフォン端子の方が音が良い。
それに24インチの1900×1200に慣れてしまっているのでやっぱり画面が狭く感じる。
きっと慣れれば・・・と思い横に並べてみると、表示領域の高さが4cmぐらい違っていた。
と云う訳でPHILIPS 234ESとAcer AL2423Wを併用することになりそうだ。
それに横に並べてみるとかなり広くなった。(大笑
ps.
店頭のFFXIVのデモを見てみたら、自宅の同型のモニタより映りが良かったので店員に聴いてみたら
とりあえずRADEONのCCCの設定が変になっているんだろうということで確認してみると
PHL 234E5のスケーリング オプションがアンダースキャン(10%)になっていた。
そりゃ小さく映るよねってことで、0%にすると普通になった。
なぜアンダースキャン(10%)になっていたのかは謎。



Silverlight のページめくり

画面にいっぱいタグを用意しなくても、
たくさんの画面を頁にしてめくってみることができるらしい。
Silverlight のページめくりを簡単に
Silverlight での開発に関する 3 つの重要なヒント
ブラウザでページをめくるイメージで閲覧
本の形で情報を表示するSilverlightアプリケーションの作成
いづれもページ数が多くなる(40ページぐらいあたりから)と重くなるらしく、
レンダリングの時に1ページづつ読み込んでみたりと
色々工夫が必要らしい。
サーバーの監視を楽しむ  最後の一言が辛口。



エアステーション設定ツール

無線ルータ WHR-G301N を中継モードにすると
大元のルータからIPアドレスが割り当てて貰えず設定画面が開けない状態だった。
だから設定を変えるにはROUTERモードに変えなくてはいけないが、
IPアドレスのセグメントが変わってしまうので、ipconfig /RENEW とか色々面倒で、扱いにくくて仕方がなかった。
でも、このルータ専用のツール(エアステーション設定ツール(Ver.2) Ver.2.0.15を使うと、
中継モードのまま、ルータに勝手にIPアドレスを割り当てられる。
インストして起動。
「はじめに」の画面は 【次へ(N)】 を押す。
「2つ以上のネットワーク接続がつながっています・・・」と出た場合は【続行(C)】を押す。
「エアーステーション無線親機の選択」で、IPアドレスを割り当てたい親機を選択して【次へ(N)】を押す。
既にIPアドレスが割り当てられていれば「設定画面を開く」を押してブラウザで設定画面が開く。
「この無線機のIPアドレスを設定する」を選択、
DHCPサーバー(つまり回線の元のルータ)からIPアドレスを自動的に取得する。(かんたん)

次のIPアドレスを使う(上級者・管理者向け) で IPアドレスのネットワークマスクを入力して
を選択する。
 
ただ一度どちらかで設定してしまうと、

2度目以降の変更は「からなず失敗する」

但し、IPアドレスを忘れてしてまってもこのツールが設定済みのIPアドレスを探してくれるから、
ブラウザの管理画面のLAN設定から「LAN側IPアドレス」を設定しなおせばいいだろう。
しかし、一旦スタティックにIPアドレスを振った後に、DHCPで取得するようにしても、同じIPアドレスになったのは、何となく納得できない。大元のルータのDHCPの割り当てリストにもちゃんと載っているから大元のルータがIPアドレスを変えないように配慮した結果なのだろう。
それより、DHCPサーバのネットワークのセグメントを変えちゃった時にこのツールが重宝するんだろうね。



ひかりFAX

ひかり電話でFAXするもの。
もっともアナログ電話をつなげられるFLET’S用のルータならアナログのFAXを繋げば送信できるが受信を考えるとFAX用の電話番号も必須。
ではひかりFAXサービスって何なのかと調べてみると
Andoroidアプリのことだった。
Google playから無料でダウンロード可能なので料金はかからない。
しかし家FAX用Androidが必要になってしまう。
それなら、NTTの光iフレームで使う場合にはGoogle playではなくフレッツ・マーケットから無料でダウンロードすることになるが、フレッツ・マーケットには月額200円(税別)がかかるものの、光iフレーム自体はAndroid2.2のれっきとしたAndroidだが月300円(税別)でレンタル(2年契約時)できるから、2年契約でいいなら月500円(税別)で利用できるので、そう悪くは無い。
とステマ風に書いてみたが、そう悪くない。Androidでまともに使えるものは2万円ぐらいするしバッテリーは2年も持つか?を考えればレンタルも悪くない。
今のところ使う上で心配なのは、
1.普通の音声電話とFAXを識別してFAXだけ受信できる様にできるのか?
2.買い物のFAX送信用紙をスキャンするならスキャナーはAndroidへ送信できるもので十分だろうけど、そのスキャン画像を送信できるのかはやってみないと判らない?が、おすすめはEPSONのiPrintらしい。CanonのPIXUS Printはダメなのか?AppleのAir Printはどう?
・・・調べるだけじゃ、さっぱり判りません。
やっぱり使ってみるしかないのかな。



WYSIWYG

読みにくいがウィジウィグと読む。
画面で観た通りに印刷できるアプリを指す。
その点ではEXCELは落第点である。
なぜならば、画面でセル幅をギリギリまで削った後に印刷すると####になってしまい紙を無駄にしてしまうし
シートタブの色の変化がわかりにくいため、全シート選択したまま、罫線を引いてしまい、ひどい有様になったり
UIに沢山の罠が仕込まれているEXCELはWYSIWYGとは正反対のアプリである。
こう云うアプリでひどい目にあったらWYSIWYGなものが欲しくなるものだ。
WindowsはWYSIWYGではない。画面でのセンタリングや均等割り付けは印刷時でのセンタリングや均等割り付けでは結果が一致しない。ただ画面でもプリンタでも同じコマンド(API)が使えるだけなのだ。
どうしても簡単にWYSIWYGにしたかったら、NextみたいにPostScripで画面も印刷もやってしまえばいい。
しかし画面のそれはとても厄介だ。それにWYSIWYGを作る簡単な方法が実はある。
画面上で1文字づつ配置を決め、そのままプリンタに送ってしまうことだ。
簡単と云ってしまっていた何だが、自前でセンタリングや均等割り付けを作り込めないことになる。
難しい?大丈夫。ボクでもできることだ。
どちらかと云えば文字のベースラインを合わせる方が数段難しい。
 
 
 
 



Bean Inistialize

JavaでパラメータにBeanを使うことが多い。
理由はFind Bugsなどでパラメータが大杉だタコとテントウムシに指摘されるからだが・・・
中には
/**
* parametersNil
*/
class parametersNil {
/* empty */
}
という強者も、メソッドのパラメータが必須なツールを使う場合には必修である。
特にEJBの様なinterfaceやRedaer・Writerの様なパイプラインではBeanを使わない手は無い。
ただ、引き回している内に
Beanの中身に誰も関心を持たなくなり、
・誰かがパラメータをチェックしているだろうとかパラメータを使う奴がチェックするハズとか
・反動で1パスの度にゼンパラメータチェックとか
極端なことになりやすい。
さらにパイプラインの途中の処理がヒント情報(httpはTCPIP通信のプロトコルです など)を追加したいばかりに
parametersNil がめでたく、parameters1 になるのは良いとしても
parameters100をparameters101にするのは結構厄介だ。
そう、100個分のパラメータ・コピーをparameters101のコンストラクタに埋め込まないと厄介だからだ。
更にいつのまにかparameters100Α型(実は前段の処理が隠しプロパティが1つ追加した)になっていた場合、
Aの部分(前段の処理が追加した隠しプロパティ)が抜け落ちてしまう。このため、前段の処理の担当者は
Aの部分のパラメータ・コピーで埋める旅に出かける必要がある。
BeanUtils.copyPropertiesを使えば全てOKなんだけどね。

ConvertUtils.register(new IntegerConverter(null), Integer.class);
と設定してから使えばInteger(null)がnullのまま変換してくれるので、
ちょっと違った変換も可能。
というか、Strutsの中でもisNull判定(=設定なし)を使ってたらInteger(null)が0になって困った事態が発生したのだろう。
しかし、自前で頑張らず親のすねをかじる方針を立てれば、
最初の基底クラスに
void  XXbaseClass::Inistialize( XXbaseClass ) を実装しておけば
void XX::Inistialize(XX  object) {
// COPY ALL PROPERTIES
this.setter_baseProperty_1( object.getter_baseProperty_1() );
・・・
this.setter_baseProperty_N( object.getter_baseProperty_N() );

}

後の派生クラスは喜んでcopyLeft(my)を実装し、
void XX::Inistialize(XX  object) {
super.Inistialize(object);
/*
* 追加したプロパティだけコピー
*/
this.setter_1( object.getter_1() );
* ・・・
this.setter_N( object.getter_N() );

するハズだ。

そう、先導や誘導も時として重要なのである。
え?100個もプロパティがあったら大変だって?
そのBeanの Copy Constructer の中身を拝借すると
XX::XX( XX xx) {
   Inistialize(xx);
}
XX::Inistialize(XX xx) {
/*
* さっきまでXX::XX( XX xx)にあった処理
*/
}
で出来上がります。(大笑
でもこれってC++じゃ常套手段だったりするけどね。(大笑(大笑(大笑(大笑(大笑
そうつまりJavaの基底クラスを作ってる人って・・・ってことです。(大笑(大笑(大笑(大笑(大笑(大笑(大笑(大笑(大笑(大笑(大笑(大笑(大笑(大笑(大笑
もちろんレビュワーも


良いコピペと悪いコピペ

プログラムを作る時、
大抵はいくつかのパーツに分ける。
プロパティファイルを読み込むリーダーを作るなら
BinaryFileReader <- TextFileReader <- LineFileReader <- PropertyFileReader
な感じだろうか。
普通ならPropertyFileReaderに使うプロパティファイルをパラメータで指定し、
BinaryFileReader <- TextFileReader <- LineFileReader
の部分は何も変更が無く、大抵のファイルならそのまま流用ができる。
この場合の正統派なコピペは、
PropertyFileReader pfr1 = new PropertyFileReader(“xxxxxxx-1.property”);
PropertyFileReader pfr2 = new PropertyFileReader(“xxxxxxx-2.property”);
PropertyFileReader pfr3 = new PropertyFileReader(“xxxxxxx-3.property”);
となる。
ところが実際には・・・
String [] fileNameList = {
“xxxxxxx-1.property”
,”xxxxxxx-2.property”
,”xxxxxxx-3.property”
};
List <PropertyFileReader> pfrLst = new List <PropertyFileReader>();
for( propertyFileList in propertyFile) {
pfrLst.Add( new PropertyFileReader(“xxxxxxx-1.property”) );
}
の様に、やりたい事に比べて助長過ぎるソースが美しいとされるが、何もメリットは無いし、
static final int   PROPERTY_FILE_INDEX_1  =0;
static final int   PROPERTY_FILE_INDEX_2  =1;
static final int   PROPERTY_FILE_INDEX_3  =2;
pfrLst[PROPERTY_FILE_INDEX_1 ].get(PROPERTY_MEBMER_1);
pfrLst[PROPERTY_FILE_INDEX_2 ].get(PROPERTY_MEBMER_2);
pfrLst[PROPERTY_FILE_INDEX_3 ].get(PROPERTY_MEBMER_3);
のように面妖なConst 定数を使ってプロパティファイルにアクセスしなくてはならなくなり、また勢いソースの行は妙に長くなってしまう。
悪い例のレビュー前:  pfr1.get(“1”);
悪い例のレビュー後: pfrLst[PROPERTY_FILE_INDEX_1 ].get(PROPERTY_MEBMER_1);
つまり、やりたい事を理解せずにソースレビューだけするとたった3行のコピペが上の様な有様に至ってしまう。
更に、ファイル名をConstクラスに差し込んだり、あるいは・・・プロパティファイルに入れてみたりすると、もう終わってる感じがする。
これはWEBでよく見かける見栄えの良いコーディングとは

無駄の塊

でしかないことを意味する。
では、
PropertyFileReader pfr1 = new PropertyFileReader(“xxxxxxx-1.property”);
という1文は見栄えが悪いのかと云えば、そんなことは無い。
ただ、
PropertyFileReader pfr1 = new PropertyFileReader(“xxxxxxx-1.property”);
・・・(98行中略)・・・
PropertyFileReader pfr100 = new PropertyFileReader(“xxxxxxx-100.property”);
となれば何か方法は無いのか?と云いたくなるだけだ。
こうなると、先の無駄の塊がなんとなく見栄えが良く見えてくるから不思議である。
但し、100個もファイルを開いて何をするつもりなのか?という根本的な問題をまず考えるべきである。
その結果が、

100個ファイルを開いても大丈夫なことを確認したかっただけ

だったりすると、100行のコピペで十分な気がする。(大笑
ただ世の中には尋常ではないコピペが存在する。
JCLである。
古い話で恐縮だが、JCLに渡せるパラメータは1個のINT型だけだった古い時代。
Aファイルを読み、書式を変換し、Bファイルに書き出す。
のような単純なことでも
Aファイルが10個あれば
JCL00001
・・・
JCL00010
と違うプログラムを流さないといけなかった。
そう、この10個のプログラムで異なる部分は入力ファイル名と出力ファイル名だけである。
なせなら、C言語が出現する前にも文字列型変数はあったが、概ね固定長であった。
このためJCLのパラメータに文字列型変数を使える様にすると
main( char parameter[10] ) {
・・・
}
にするしかなく、とてもかっこが悪かった。
更に、文字列型のパラメータの数を増やしたりしたら
main( char parameters[5] [10] ) {
・・・
}
とかになっても、どうやって読めばいいのか直観的に判らないシロモノになってしまうからだ。
もっとも、JCLごとにパラメータの数が違うような仕組みは考えられなかったのだろう。
なんたって、1バイトのメモリは血の一滴。とても貴重だった時代なのだから・・・
 
もっとも、パラメータが1~10の場合にファイル名をIF文で振り分ければいいハズだが、ソースレベルデバッガどころがラインデバッガさえ使わせて貰えない時代。つまりVDTな画面とキーボードなんて高値の華だったころは、パ ンチカードな時代で、IF文を書くより、ファイル名の1行(カード1枚)を差し替える方が簡単で動作も確認しやすかったのだ。
ただ、その流れが現在も続いている(もちろん機能は色々拡張されている)のはかなりウザいなぁと思う次第だ。
※もちろん、MMORPGのマクロはJCL系ではある。
しかしJCLを使うのが金稼ぎに来たプログラマなのに対して、
マクロを使うのはお金を払ってくれるユーザであるため、
使いにくいとは云われつつも、JCLの数億倍もパラメータが使いやす。
JCLに似ているが全くの別物である。



Apache Maven

動く時は動くけど、
動かなくなると、
トコトン動かなくなるのがMaven。
気のせいかもしれないが、Maven処理が始まるとどこかに通信しているようだ。
インターネット接続が重い会社はたくさんあるから案外同様の事態になっているかもしれない。
だがMavenはローカルにリポジトリィを作成しているのでここに繋がるのに時間がかかっているのならやはりPCスペックが貧弱すぎるのかもしれない。
とは云え、
ビルド対象が莫大な数になると
当たり前と云わんばかりに重くなるのはAntと変わらない。
このあたりがやはり馬鹿プロジェクトっぷりが凄い。
処理の高速化や正確さをアルゴリズムに求めるのはもっともだが、IN・OUTのタイムスタンプぐらい使ってもいいような気がする。
※もっともsvnでrevertすることを考えると、svnがタイムスタンプを調整してくれないとどうしようも無い。ただ、svnの調整しようとは考えず、タイムスタンプを使わず、毎度毎度、延々と長時間かけて全部ビルドし直すしかないのも変な話だ。
これではEclipseでソースを保存すると自動ビルドが始まる場合、
ビルドに数分間もかかりので、保存する度に数分間待ち、良くても「保存」がロックされてしまうし、大抵は「処理中の画面」が邪魔で何も操作はできなくなってしまう。
これでは、2~3個のファイルをちょっと手直しするにもバカバカしくいくらい時間がかかってしまう。
致命的なのはJUnitの起動時間も重くなってしまうこと。
そう、JUnitは、JUnit用にビルドしなおしてからテストを開始する仕組みなので、
ビルド時間が長い仕組みになっているプロジェクトファイルは致命的。
この様な状況にならなくするには
リポジトリィをローカルとプロジェクトに分けて
ローカルにはデバッグに最低限必要なものに抑えておく以外に方法は無い。
ただSubcliptでそれをやってしまうと、なにげにコミットしてしまうと、不要なので消したファイルの削除情報もコミットされかねないので恐ろしい。
だからコミットは1ファイルづつ慎重に慎重に慎重に慎重に慎重に慎重に慎重に慎重に
 
 
阿保クサ。
 
んーなもん作った奴は ソースは100も無いものばかり作ってるか Gitでも使ってるんだろうなぁ・・・
 
Eclipseといい、Subclipse、Mavenといい、物量に弱すぎる。
これなら make + javac + ☆丸 スタイルの方がデバッグは一万倍スムーズじゃないのかな?
もっともソースレベルデバッガが無いと苦しいけどね。
 
どうやらJava開発には最高のPCスペック(最高のCPUと最高のSSDといっぱいのメモリに64ビット版のOS)が必須条件になったようだ。
本当に馬鹿な話だ。



馬鹿に付けるクスリは無い

なんというか最近の仕事の雑さには、ホストコンピュータ(汎用機)全盛の頃に通じるものがある。
やってはいけないコトのオンパレードと云えば判りやすいだろう。
だが仕様書までなら大した問題にはならない。
そう、「机上の空論」なのだから、何も問題は起きない。
作り始めてやっと問題が可視化されるのだ。
そもそも本当に製造できるものなのかもちゃんと検討していない。
と云うパターンだ。
たぶん、これまで何十年も同じことを繰り返していたのだから、これから何十年も同じことを繰り返していくのだろう。
沢山人を集めるなら仕事がスムーズに行く様にしっかりと事前準備をしておかないと、ただただ時間と予算が人数分の掛け算で食いつぶすだけになってしまう。
しかし、なぜかそれができないのである。
そう、作ってみないと何が問題なのか判らないのだ。
経験とは何度も同じことを繰り返して身に付くものであるから、初体験で事前に問題を発見すること自体無理に決まっている。
それに、コンピュータのソフトウェア開発は「同じものを2度作らない」ものなので「いつも初体験」であり、経験の積み重ねや応用がほとんど効かない。
単純に、永遠に「試作品」作りのままなのかもしれない。
だったらコンピュータのソフトウェア開発にも3Dプリンターっぽいものが欲しいものである。
どうせ「試作品」どまりなのだから(大笑



日本製品の品質

と書くと大抵は「日本製品の品質は高品質」の話になる様だが、
最初から「日本製品の品質は高品質」なハズは無く、
日本製品は「安かろう悪かろう」が最初のスタートラインであった。
ただそのままでは「売れにくくて仕方が無い」ので
「少し品質を上げる」
⇒際限の無い「少しづつ品質を上げる」の繰り返し
⇒「実質的な高品質」
となったダケだったのだ。
 
なぜか「高品質」に尖った方向に突っ走ったのかと云えば
当時「日本製品」のほとんどが、独自性のある商品は少なく、どの会社も似たようなものを売っていたので、
ケア・サービスや品質ぐらいしか差別化できるものが無かったといって良いだろう。
※手厚いケア・サービスを行うには、まず壊れにくい製品でないと採算が合わないという面もある。
 
しかし、今では為替相場次第では「いつまでも輸入品の方が安価」な状況が続くこともあり、「高品質」だけに拘る必要性が無くなってしまった。
さらに「売れ筋の安価な輸入品」でしかなかったものでも「10年」も作っていればそのメーカーも「目が肥え、技術も熟してくる」のも道理であろう。
 
多分、「日本製品の品質は高品質」と重宝される商品は「そんなものを作る気が起きない」会社が多いということなのだろう。
10億で研究するより、1億でコピーする方が安いと云う話もあるが、
「10億で研究する」ことは、「研究として10億分の不良品を作る」のと同じであり、最後に「まともな製品」が出来るかどうかは判らないのだ。
だから目の前に「まともな製品」があるのなら、コレを「1億でコピー」して「まともな製品」が作れるかと云えばそれも結構怪しい。
「1億でコピー」って「まともな製品」が出来ると云うことは「もともと、コピれるだけの素質がある」と云うことであり、「10億で研究する」なら、もっと凄いものが作れる可能性があると云うことだ。
だから、「1億でコピー」ってしまうには「1億でコピれるだけの素質がある」人材や組織が必要になる。
それはそれで「凄い人材や組織」と云うことになる。
ただ、そういう「凄い人材や組織」はいつまでも格安の給料と予算で働いてくれるのだろうか?
「1.1億でコピーれ」というトコロに流れるのも道理であろう。
そして「1.2億でコピーれ」というトコロに流れるのも道理であろう。
そして「1.3億でコピーれ」というトコロに流れるのも道理であろう。
・・・
となり長続きしないワケである。
だから、「日本製品の品質は高品質」なのは
「1.1億でコピーれ」というトコロに人材が流れていかないというか
「人材の交流があまりない」というのが本当の理由なのだろう。




top