変奏現実

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

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

インターネット

お手軽水冷グラボ

ELSA GeForce® GTX 680 HYBRIDはユニークな水冷・空冷のハイブリッドな冷却ユニットを搭載している。
こう書くと非常に良いと感じるが見てみると・・・
CPU用のよく見かける水冷ユニットを使ってGPUを水冷してるけど、その他(VRMやメモリなど)は今までどおりに空冷のファンで冷やしてます。
ここ数年の販売実績のある水冷ユニットが載ってると使う側もクセが判っているので対処しやすいし、作る側もパーツの調達がしやすい。
但し手ごろな値段ではないので、趣味の中の趣味品であることには変らない。
またグラボとラジエーターを繋ぐパイプは直付けで、それがメンテナンスフリーっぽく取り扱いや設置が楽そうだが、グラボの2枚挿しや3枚挿しを考えると、設置の難易度は逆に数段上がりそうだ。
どっちかと云うと、空冷ファンを外せば、市販の水冷ユニットが使えるグラボを売ってくれた方が良かった。
しかし、ここ暫くグラボの水冷はほぼ皆無になっていたので、少し嬉しいのは確かだ。
 
 
 



プログラム・ソース

プログラミングする際にはソース、つまり決まった書式のテキストを作ることが多い。
C言語、HTML、Java、PHP、XMLとか様々だが書式はフリーフォマットだ。
その逆に固定フォーマットと云うのがある。1カラムから8カラムまではxxxで、9カラム目はコメント用とか固定長のCSVそのもので、主に紙製のパンチカードの頃に出来た言語のFORTRANやCOBOLがそれだ。固定長の良さは、等間隔で文字を印字したり表示したりするデバイスやアプリを扱う場合に限られるが、今でもプログラマ向けのテキスト・エディタにはその名残りを残したものが数多く存在する。多くはWindowsのテキスト・エディタの半角空白が狭すぎて、半角空白でインデントしたソースが読みにくいとかどうでも良さそうな理由からだ。
一方フリーフォーマットと云えども好き勝手に書けるわけではない。一応、文法(BNFで記述したものが多いが・・・)に沿って書かなければいけない。しかも構造化プログラミングの影響を受けているものが多く、階層を見やすくするために階層レベルと連動させてインデント(行の左にの隙間)を入れるのが普通だ。ループの虜になったプログラマーは10階層のループにタブ(空白8文字分)でインデントを付けループの中の処理が80カラム目以降に集中し、横にスクロールしないと見えないソースとか印刷するとガタガタで読みにくいなど無茶なことをしてたようだ。もっともif if if if としか書きようが無い仕様を考え付く方が頭が変なに違いないんだが・・・
そんな訳でやっぱりソースは読みにくいのでコメントを多めに書く風潮が強くなった。
ソースの流れを読むより、INとOUTさえ判れば、大抵は困らないからだ。
しかし、この流れもサンプルコードがコメントに差し込まれ、本文のコードは数行だったり、散々な経過をたどって行く。
そんなこんなでコメントは必須但し簡素に記述するとかループは4段までとか古臭い決まりが残っている場合もある。
よく考えれば、プログラム・ソースは人間が読んだり査読したりするものではない。
人間が書き、機械が読むのが本筋だ。
だから、人間向けに読みやすくするなら、何か見やすいフォーマッタでインデントとかを見やすく付けたり、レイアウターに色々自動配置させればいいハズなのだ。
そう考えると、本当のソースはXMLっぽいフォーマットでファイルに収め、美しいソースを魅せるビュワーがあれば一番良いと思うんだけどね。一番簡単な方法としては、XMLで適当にソースを書き、IEで見て、XMLからJavaコードを捏造しコンパイルしてclassファイルにしてしまえば、良いのかもしれない。
<for initial=”int i=0″ test=”i < 10″ next=”i++” >
<for initial=”int j=0″ test=”j < 10″ next=”j++” >
<define name=”k” type=”int” initial=”0″/>
<call function=”sub” param=”i” param=”j” set=”k” />
</for>
</for>
<call function=”sub2″ param=”j” />
なんてどうだろう?
フォーマッタに見せれば
for(int i=0; i < 10; i++)  {  for(int j=0; i < 10; j++)  {   int k=0;   k = sub(i,j);  } } sub2(j); とか for(int i=0; i  < 10; i++)  {   for(int j=0;ji  < 10; j++)   {    int k=0;    k = sub(i,j);   }  } sub2(j); ってな具合で・・・ 勿論、インデントや改行を適切に追加して保存しても良い訳し、XMLソースは書きにくいし文字数も多いから、それっぽい手書きのソースを読ませて先のXMLを正式なソースとして作る手もあるだろう。 この場合、テキストのソースは『下書き』と云うことになるのかな?(大笑) え?XMLのまま観たい?簡単!簡単!IEで観なさい。折りたたみ機能も付いてるよ!(笑)



あれ?Zドライブが見つかりません?

厄介なことになっているようだ。
普通のドライブに見えるZドライブ、実はドコかのサーバのフォルダだったりするが、
XPでは普通のドライブとして使えるのに、Windows7ではチョット違う。
プログラムから勝手にZドライブを参照しても・・・
「パスが見つかりません」とか呑気なエラーが帰ってくる。
勿論、デスクトップから見ればちゃんとZドライブは見える。
実は、プログラムが勝手にネットワークドライブを使わないように細工が入っているのだ。
方法は色々あるけど、画面に初期フォルダをちゃんと設定できるSHBrowseForFolderが一番良さそう。
しかし、結構込み入ったコードだし、実際にZドライブをダイアログの中で選択して
【OK】ボタンまで押さないといけない。
コールバックを研究すれば、コールバックから【OK】ボタンを押せるのかもしれないけどね。
またAddressOfやその戻し方の良いサンプルにもなっている。
参考1:http://www31.ocn.ne.jp/~heropa/vb04.htm
参考2:http://hp.vector.co.jp/authors/VA024411/vbtips01.html
BROWSEINFOのulFlagsに0を設定して何でも選択できるようなのが楽だろう。
勿論、ユーザIDとパスワードを知っていれば、こっそりZドライブをマッピングして
XP同様に動く方法はある。
http://msdn.microsoft.com/ja-jp/library/cc364409.aspx

http://www.happy2-island.com/vbs/cafe02/capter00902.shtml
を参考にするとできるんだろう。
しかし、本当にZドライブの接続をやらかすので、Yドライブにでも振ることになるだろう。



IEのダウンロードファイル名に日本語を使うと文字化けする

IEでファイルをダウンロードする場合、ファイル名に日本語を使用すると、文字化けや意図しないファイル名が表示されることがある。送信する HTTP ヘッダーに Content-Disposition を含めると、Microsoft Internet Explorer 5 以降のブラウザではファイルのダウンロード ダイアログ ボックスが開く。

HTTP ヘッダーの名前: ”Content-Disposition”

ヘッダーに追加する文字列: ”attachment; filename=日本語のファイル”

IEは日本語の部分を勝手にシフトJISと決め打ちで処理してしまい文字化けする。
では、どうすればいいのか?と云うと、サーバーサイドのJAVAで UrlEncode(“日本語”,”SHIFT_JIS”)でエンコードしてしまえばいい。
よくあることだがサーバーサイドのJAVAが馬鹿で、クライアントでエンコードしたい場合もあるだろう。(ありすぎだが・・・)
しかし、”あいうえお”を”%82%A0%82%A2%82%A4%82%A6%82%A8”にエンコードできても、そもそもお馬鹿なサーバーサイドJAVAはエンコードされてるから自動的に”あいうえお”に戻してしまう。
では、2度エンコードするとどうなるだろうか?
やっと、”%82%A0%82%A2%82%A4%82%A6%82%A8”がサーバーサイドJAVAに届くが、今度はそのままHTTPヘッダーに追加してくれるので、ダイアログには”%82%A0%82%A2%82%A4%82%A6%82%A8”と表示してくれるので、クラウアントでどう足掻こうと無駄である。
 
と諦めが付いたところで、
HTMLのコードページをSHIFT_JISにすると、JavaScriptで処理する文字列のコードページもSHIFT_JISになるのだろうか?調べてみた。
————————–
<!DOCTYPE html>
<!–[if IE 8]>
<html xmlns=”http://www.w3.org/1999/xhtml”  dir=”ltr” lang=”ja”>
<![endif]–>
<!–[if !(IE 8) ]><!–>
<html xmlns=”http://www.w3.org/1999/xhtml”  dir=”ltr” lang=”ja”>
<!–<![endif]–>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=shift_jis”>

<meta http-equiv=”Content-Type” content=”text/html; charset=euc-jp”>

<meta http-equiv=”Content-Type” content=”text/html; charset=iso-2022-jp”>
<script>
function aaa() {
var aaa = document.frm.a1.value;
document.frm.a2.value = escape(aaa);
document.frm.a3.value = encodeURI(aaa);
}
</script>
</head>
<body>
<form name=”frm” >
オリジナル<input type=”text” name=”a1″ size=”100″ ><br>
escape<input type=”text” name=”a2″ size=”100″ ><br>
encodeURI<input type=”text” name=”a3″ size=”100″><br>
<input type=”button” value=”変換” onclick=”aaa()”>
</form>
</body>
</html>
———————————-
で(IE9)試してみると、Content-Typeで何を指定しても
あいうえお は
%u3042%u3044%u3046%u3048%u304A
%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A
そうJavaScriptのencodeURIは、常にUTF-8の文字コードをエンコードした結果になるのだ。
ps.
どうしても、シフトJISに変換したい場合は
http://ssiscirine.perma.jp/archives/20920
を参考にUTF-8の文字コードをSJISの文字コードに変換するしかないと思う。



空白

Unicodeの半角の空白には
\x20と\u00a0の2つがある。
※\s は、[ \t\n\x0B\f\r] と等価。
Pattern に文字で書く時は \\x20 \\u00a0 となる。
なぜ\\と書くかと云うと、
文字リテラルでは\自体がUnicodedエスケープシケンスを意味し、Javaコンパイラがソースを読む時点でコード変換し、Patternには半角空白そのものが渡るので、
Patternに\u00a0という文字を読ませたいなら、\\u00a0 と、くどくどと書くことになる。
※本来は、\x20 \u00a0 でちゃんと動いていいハズだ。しかし、Windowsで文字化けするJavaMailで痛い目に遭ったことがあれば、くどくどと書く方を自然と選ぶものだ。
しかし日本語だけ全角空白と云うものがある。
区 点 JIS  SJIS EUC  UTF-8  UTF-16 字
01 01 2121 8140 A1A1 E38080 3000   ' '
JavaScriptは、いつもはUTF-16なら\\u3000 と書くと良い。
Javaの場合は、OSのライブラリィを使う都合上、どこかでコードページ変換をしている。
日本語のWindowsならシフトJISだから、\\u8140 になるのかな?
今のLinuxならUTF-8だから、\\uE38080 なのかもしれない。
※しかし\\uは2バイト文字専用のハズだ。
だが、JavaではUnicode(UTF-16)を使うことになっているので、どのOSでも\\u3000でよいはずだ。
ついでに書くけど、Patternクラスでは
\uhhhh 16 進値 0xhhhh を持つ文字
なので\uはユニコードと云う意味ではない。
しかしJavaではUnicode(UTF-16)を使うことになっているので、結果としてUTF-16のコードを入れることになる。
しかし、どの変でUTF-8やシフトJISをUTF-16 に変換しているのか、はっきりしない。
もしかすると、画面やファイルの入出力の土壇場で変換をかけているだけかもしれない。
だから、シフトJISをUTF-16に⇒エスケープ変換だったらいいけど、
エスケープ変換⇒シフトJISをUTF-16に変換 だったりすると、
Javaは実行時にUnicode(UTF-16)を使うと云っても、エスケープシーケンスにはソースのページコードで記載しなければならない。
その辺は、はっきりとした記述は無いので、実装は気分次第かもしれない。
例え、後述の方式になっていたとしても、泣き寝入りするしかない。
また、初期のJavaは 手作業でnative2ascii コマンドでシフトJISで書かれたpropertyファイルをASC化しなければいけないルールだったので、本来propertyファイルに可読性は無い。
オマケ;Javaで全角文字を表す正規表現は、
[^ -~。-゚]*
らしいが、これも、本来ならJavaScriptでもJavaでも支障なく使えるはずだ。
※例えOSがEUC-JPだろうがUTF-8だろうが…
さらに文字列前後の半角・全角スペースを外してチェックを掛ける場合は
 ^[  ]*[^ -~。-゚]*[  ]*$
とかけるそうだ。
※[  ] の部分は "["+半角スペース+全角スペース+"]"
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=4871&forum=7
真ん中の文字が何でもいいなら
^[  ]*[.+]*[  ]*$
になるのかな、
話は少し外れるけど、未だにStringBufferで文字列を組み立てようとするなら、
StringBuffer st = new StringBuffer();
st.append("xxxxxxxxxxxxxxxxxxxxxxxxxx");
・・・
st.append("xxxxxxxxxxxxxxxxxxxxxxxxxx");
っと酷い目に遭う。
もう年が年なので、エディタでダダダダダダダダダダダとCtrl+Vするのは辛いから、
エディでよく使う正規化表現では、
パターンを ^(.+)$ で 出力は st.append("¥1"); とすると、st.append(" と "); をたくさんコピペしなくて済む。
※勿論、事前に変換する行を選択しておかないと、全部そうなってしまう。
戻すときは、パターンを st.append¥("(.+)"¥);  で出力は ¥1 にすると たくさんコピペした部分がサラっと取れる。
※¥は半角の¥の意味。
勿論取り除くときは、矩形範囲指定が出来るエディタならそれでもいいかもしれない。
だが、もう年だから、exエディタかvi使った方がもっと楽だな。
10,120s/{[.]*}/st.append("$1");/
かな?
と書いてみたが・・・
さて、ドレがちゃんと動くかな?
もう年だから…(笑


マイクロプロセッサー

IAとかコアとか色々呼び名があるマイクロプロセッサーですが、
要はCPUの主要な機能でメモリに並べた命令を順次に実行する回路のことです。
そのため、

  1. 命令を置いてあるメモリアドレスをカウントアップするアドレスカウンタ
  2. 読み取った命令に応じて演算の種類やデータの経路を設定する回路
  3. 云われたとおりに演算する回路

の3構成になります。
実際には
仮想記憶用に仮想アドレスを実アドレスに変換する回路

DIMMなどの遅いメモリより速いけど小容量のメモリ
も入っていることが多いです。
そう考えるとCPU以外のICはザコの様に思えますが、
グラボのグラフィック専用のチップの演算能力はIAを遥かに凌ぎますし、
大抵の周辺機器にはコントローラとしてマイクロプロセッサが組み込まれています。
もっと云えばスイッチングハブやルータの中にだって入っています。
マイクロプロセッサを使う一番の利点はエラー処理です。
これはゲートICで作れなくもないのですが、使用頻度は少ないので、不具合や想定外の使い方に事前に対応することが難しいもので、プログラム制御した方が安心ですよね。
ルータの設定画面もブラウザを使ったりしますが、これをゲートICで作る・・・
ことは考えたくもないですね。
 
たとえばこのWordPressなどのブログが
ゲートICで出来ていたら・・・
無料で配布なぞは絶対無理でしょうね。(大笑)
 



スマホとEXCEL

使って3ヶ月を過ぎたが、
使いやすい(スマート)と云う感じが全くしない。
タダOSってだけ。
1.無駄にアップデートで通信するので定額じゃないとダメになっている。
(a)何のためのアップデートなのか表示しないので、評価は0。
・緊急にセキュリティパッチが必要なら、そのアプリを停止する選択肢も考えられないくらいお頭が弱い企画には呆れる。
(b)移動中に通信が途切れると、もうアップデートできず次回待ちなので、やっぱり評価0。
・だから頻繁にアップデートがくるんだろうなぁ~(実は同じのが何度も)
(c)アップデート表示を放置すると電池がドンドン減る。
2.誤動作が多い。
(a)胸のポケットにいれてると勝手に通話する。
・ せっかくサイドボタンで画面をロックしても中央のHOMEキーでアンロックするので、誤動作の確率はとても高い(無能設計)、機械式のロックでも付いてるほうがマシ。
(b)片手で操作しているとボタンに近いSkypeのアイコンがグインしっぱなしになることが多い。
・諦めて押しやすい位置からアイコンを移動させると、最後の一個は外せない仕様で、誤操作マンセーとなっている。
3.シャットダウンのボタンを表示してから液晶の表示が自動的に勝手に消えるまでの時間が短い。
(a)サイドボタンを押すと「シャットダウンしますか?」のメッセージが出たままなのは当然のこと。
(b)多分ECO NAVIが電池の残量で調整しているのだろう。90%以上なら、つきっぱなし。
(c)勝手にシャットダウンする誤動作が非常に多かったための対策と推測できる。
(d)多分、勝手に電源が切れるより、バッテリーが無くなっている方がマシと多数決で決まったのだろう。
4.セキィリティは最低レベルに到達しそう。(対象:全Android)
(a)記事などを読む分にはパソコンレベルまで下がっているようでセキュリティ系ソフトを入れないと踏み台にされそうな状況。
(b)通信状況などのインジケーターが不親切だし、旧バージョンのAndroidにあったタスクマネージャがなぜか無くなりイタズラし放題仕様に強化されている。
って感じで、ちょっとしたことで、誤動作しやすいのは指操作のみだから仕方がないけど、その先の出来事は最低の結末しか残っていない。
一応、パスワードなんかでロックできるけど、揺れる電車の中でロックを解除するのは難しい。
 
歳のせいもあると思ってるけど、少なくとも高齢者には無理だと思うな。
 
まぁ~ズーム率85%でEXCELシートを保存するとシートにある図形だけが100%で表示するそんなBUGがEXCEL2004から一部実装され2007では標準仕様になってる今日ではもう修正不能なレベルな事象なのかもしれない。
つまり直せる技術者がいないって訳さ。(大笑)
そのせいもあり、難易度の高そうな、
複数の種類のセル通過を設定したデータを挿入する
っといった芸当はもうできなくなっている。
代わりに行と列を入れ替えてペーストはできる。
これも技術者の能力で、できることとできないことが大きく使いやすさに影響が出ている。
※仕様をきめれるか?作れるか?テストしきれるか?の3点でヘタれる箇所があれば仕様を削るしかないのは道理だ。
 
ついにIT技術は、枯れるを通り越し、腐り始めたようだ。
まぁ~どうでもいいんだけどね。
 
あえて通話専用機とインターネット通信機に分けた方がいいかも?
 



Pentium

Pentium4のPCがまだあったんだけど、調子が悪いので
※マザボはBIOSTERのG31-M7-TE Ver6.2
XPをインストしなおそうとしたら途中で失敗が続き最後まで完了できそうもなく、
結局、CeleronG540+AsRock(H61M-HVS)「500円引きの」セット6K円に
入れ替え無事XPのインストを完了。
その後に、ELITEGROUPのG31T-Mを発見した。
機会があったら組んでみよう。




top