変奏現実

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

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

パソコン

あれ?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ドライブにでも振ることになるだろう。



空白

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で出来ていたら・・・
無料で配布なぞは絶対無理でしょうね。(大笑)
 



Pentium

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



かんたんファイル復活2

地デジ録画のドライブがCドライブ(40GB)になっていたので
Dドライブに戻したが、使用容量が40GB用のままだったので
録画ファイルの大半が消滅。
かんたんファイル復活2 というファイル復活ソフトを見つけたので
試してみた。
概ねファイルの総容量が10GBを越えるファイルを復活しようとすると
ダンマリになるので、2番組づつ復活するしかないので非常に面倒。
一応使えるので評価は△。
※復活したファイルは視聴できませんでした。
 
何かにつけトラブルが出ると貯めて置いたものは観れなくなるのに慣れたせいか
一度観たらもういいやって感じ。



PCにそのままCentOS6.2をインスト(11)

> yum install lm_sensors
> sensors-detect
・・・
Driver `lm78':
  * ISA bus, address 0x290
    Chip `National Semiconductor LM78' (confidence: 6)
Do you want to overwrite /etc/sysconfig/lm_sensors? (YES/no):
Starting lm_sensors: loading module lm78 No sensors found!
Make sure you loaded all the kernel drivers you need.
Try sensors-detect to find out which these are.
                                                           [失敗]
Unloading i2c-dev... OK
うーむ。載ってないのか。
※翌日
Just press ENTER to continue:
Driver `coretemp':
  * Chip `Intel digital thermal sensor' (confidence: 9)
Driver `f71882fg':
  * ISA bus, address 0x295
    Chip `Fintek F71869A Super IO Sensors' (confidence: 9)
Do you want to overwrite /etc/sysconfig/lm_sensors? (YES/no): Starting lm_sensors: loading module coretemp f71882fg                        [  OK  ]
Unloading i2c-dev... OK
> sensors
coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +44.0°C  (high = +82.0°C, crit = +102.0°C)
Core 0:         +44.0°C  (high = +82.0°C, crit = +102.0°C)
Core 1:         +38.0°C  (high = +82.0°C, crit = +102.0°C)
よく判りません。ハイ。
> service lm_sensors start
> chkconfig lm_sensors on
> yum install net-snmp-utils
> snmpwalk -v 2c -c public 192.168.***.*** 1.3.6.1.4.1.2021.13.16
LM-SENSORS-MIB::lmTempSensorsIndex.1 = INTEGER: 1
LM-SENSORS-MIB::lmTempSensorsIndex.2 = INTEGER: 2
LM-SENSORS-MIB::lmTempSensorsIndex.3 = INTEGER: 3
LM-SENSORS-MIB::lmTempSensorsDevice.1 = STRING: Physical id 0
LM-SENSORS-MIB::lmTempSensorsDevice.2 = STRING: Core 0
LM-SENSORS-MIB::lmTempSensorsDevice.3 = STRING: Core 1
LM-SENSORS-MIB::lmTempSensorsValue.1 = Gauge32: 42000
LM-SENSORS-MIB::lmTempSensorsValue.2 = Gauge32: 42000
LM-SENSORS-MIB::lmTempSensorsValue.3 = Gauge32: 34000
あとはMRTGの設定かな・・・
/etc/mrtg/mrtg.cfg に
Target[temp-cpu]: 1.3.6.1.4.1.2021.53.101.1&1.3.6.1.4.1.2021.53.101.2:public@192.168.***.***
MaxBytes[temp-cpu]: 80
Title[temp-cpu]: CPU Temperture (Host)
PageTop[temp-cpu]: <H1>CPU Temperture (Host)</H1>
Options[temp-cpu]: gauge, absolute
YLegend[temp-cpu]: Temperature [C]
ShortLegend[temp-cpu]: C
Legend1[temp-cpu]: CPU1
Legend2[temp-cpu]: CPU2
LegendI[temp-cpu]: CPU1
LegendO[temp-cpu]: CPU2
Target[temp-sys]: 1.3.6.1.4.1.2021.53.101.3&1.3.6.1.4.1.2021.53.101.3:public@192.168.***.***
MaxBytes[temp-sys]: 80
Title[temp-sys]: System Temperture (Host)
PageTop[temp-sys]: <H1>System Temperture (Host)</H1>
Options[temp-sys]: gauge, absolute
YLegend[temp-sys]: Temperature [C]
ShortLegend[temp-sys]: C
Legend1[temp-sys]: System
Legend2[temp-sys]: System
LegendI[temp-sys]: System
LegendO[temp-sys]: System
を追加すると、
SNMP Error:
Received SNMP response with error code
  error status: noSuchName
  index 2 (OID: 1.3.6.1.4.1.2021.53.101.2)
SNMPv1_Session (remote host: "192.168.***.***" [192.168.***.***].161)
                  community: "public"
                 request ID: 185937120
                PDU bufsize: 8000 bytes
                    timeout: 2s
                    retries: 5
                    backoff: 1)
 at /usr/bin/../lib/mrtg2/SNMP_util.pm line 492
OIDが間違っているようだ。しかし正解が見つからない。
http://masatako.cocolog-nifty.com/blog/2010/02/lm_sensorssnmp-.html
から
/etc/snmp/snmpd.conf
に
view systemview included .1.3.6.1.4.1.2021.13
と追記して
service snmpd restart
で・・・
snmpwalk -v 2c -c public 192.168.***.*** 1.3.6.1.4.1.2021.13.16
LM-SENSORS-MIB::lmTempSensorsIndex.1 = INTEGER: 1
LM-SENSORS-MIB::lmTempSensorsIndex.2 = INTEGER: 2
LM-SENSORS-MIB::lmTempSensorsIndex.3 = INTEGER: 3
LM-SENSORS-MIB::lmTempSensorsDevice.1 = STRING: Physical id 0
LM-SENSORS-MIB::lmTempSensorsDevice.2 = STRING: Core 0
LM-SENSORS-MIB::lmTempSensorsDevice.3 = STRING: Core 1
LM-SENSORS-MIB::lmTempSensorsValue.1 = Gauge32: 44000
LM-SENSORS-MIB::lmTempSensorsValue.2 = Gauge32: 44000
LM-SENSORS-MIB::lmTempSensorsValue.3 = Gauge32: 36000
これでいいらしい。



top