Out of sync with server ??

VIsual C# 2008 と MySQL Connector / NET 6.4.3 で、ブロードキャストされるUDPパケットを受信してDBのテーブルへ格納する、という一連のコードをC#で組んでましたら、ローカルに立てたMySQLには普通に接続できてSQLクエリーも処理されるんだけど、LAN内の他のマシン上のMySQLサーバーへSQL文を投げると・・・

Out of sync with server

という今まで見たことのないメッセージとともに例外がスローされてしまって困ってました。

コードはごく普通のものなんだけど・・・。

/*
  myInsertQuery は、テーブルへINSERTするSQL文(string型)
*/
using System.Data.Common;
...
try
{
  lock(DBConnection)
    {
      DBConnection.Open();
      
      DbCommand command = DBConnection.CreateCommand();
      command.CommandText = myInsertQuery;
      command.ExecuteNonQuery();
      
      DBConnection.Close();
    }
}
catch(Exception e)
{
  MessageBox.Show(e.Message);
  return false;
}

クライアントと同じマシン上のMySQLサーバーへのクエリーは成功するんですが、LAN内の他のマシン上のMySQLサーバーへのクエリーがどうやっても “Out of sync with server”というエラー。

ローカルマシンは、WindowsXP + MySQL 5.1 (正常に処理される)
リモートマシンは、CentOS 5.5 + MySQL 5.0.77 (エラーが出る)

訳が分からない。で、MySQL Connector/NET が6.4.4にマイナーアップしていたので、入れ替えたら、普通に成功した。

なんだよ! ただのConnectorのバグかよ・・・orz

ググったら、同じエラー・メッセージでbugレポート出てた・・・。

Tried to use Windows Developer Preview a little.

先週から、Windows8 の開発者用のお試し版? がダウンロードできるようになりましたね。ちなみに、名前には「8」がついていないので、正式な製品リリースの名称は、「Windows8」 ではないのでしょうね。

Windows Developer Preview Download

僕も当初Windows7上のWindows VIrtual PCにインストールを試みようと思っていろいろ情報を集めてたんですが、Virtual PC上ではインストールができない、というようなブログ記事がほとんど。

自分は別にデベロッパーではないけど(^^;;;・・・ミーハーな僕も興味本位でもなんでもいいので、なんか試してみたい!!!、というわけで、先月VAIO Zを買って休眠している VAIO Type T(TZ90NS)を引っ張り出してきて、 Windows Developer Preview を インストールしてみました。単にインストールして、ちょっとだけMetroUIを試したい、というだけですので、あしからず….

VAIO Type Tの主な仕様は、

  • Core2Duo U7600(1.2GHz)
  • DDR2 533 2GB
  • チップセット内蔵 インテル グラフィックス・メディア・アクセラレーター 950
    また、メモリが2GBしかない関係上、64bit ではなく、32bit(x86)版のものをインストールしました。まだ、前の環境(Windows7)が残っていたので、一度Windows7を起ち上げ、Windows Developer Preview の setup.exe を使ってインストールしました。

DSC00259

実は、この画面に行くまで30分ぐらいかかってます(^^;;;  やっぱクリーンインストールにしておけばよかったかな・・・。

とは、いいつつ、インストールにかかる時間は思ったよりかからなかった。ベータ版とか製品版だともっと時間かかるようになるのかも。1~2度再起動がかかり、設定画面でWindows Liveアカウントの入力とかをした後、やっとインストール完了。

DSC00267

インストール直後の画面は、800×600 の解像度のままで、ドライバは標準のVGAドライバみたいで、動作は遅いです。で、まず、チップセット内蔵のグラフィックドライバをインストール。すると、やっと Windows8らしい、ロック画面に。。。

DSC00270

このロック画面、、タブレット端末を想定しているみたいで、画面をドラッグして上の方へマウス移動すると(画面をめくると)、ログイン画面が出てきます。何から何まで、画面タッチデバイスありきのUI、という印象です。

画面表示は全部英語リソースですが、入力(IME)と表示に日本語が使用できますが、あくまでDeveloper Preview なので、スクロールバーとか細かいところを見れば、画面表示はほとんど未完成。未完成というより、まだUIデザインが決定されていないんでしょうねぇ。

start

Metro UIも、タッチデバイスがないと全く意味をなしません(笑) マウスのホイールをクルクル回すとスクロールしますが・・・

で、デスクトップ上のウィンドウフレームはWindows7と変わらず。ウィンドウが角丸ではなく、角張っているぐらいで、エクスプローラはかなり様変わりしてますね。

コントロールパネルも真っ白(^_^;)

control-panel

で、一つ、気になったのが・・・コレ↓

16bit-support

Windows7では、16ビットアプリのネイティブサポートは終わった、と思ってたんですが・・・(動かしたいときはXPモードで)、Windows7のコントロールパネルでこんなのあったっけ??? 僕がインストールしたのが32bit版だったので、32bit版のみに含まれているだけかもしれません。

64bit版のWindows8では、機能限定版の?Hyper-Vが入るみたいなので、レガシーアプリは完全に仮想環境で、という風になるんでしょうねぇ。

感想

肝心のMetro UIは、マウス操作の環境では、全く意味ないです(笑)MBAのタッチパッドみたいなデバイスが最低限必要す。

従来のデスクトップはWindows7とほぼ変わらず。エクスプローラのメニュー、ツールバー、コマンドバーが一掃されて、リボンUIになってるとことか、タスクマネージャが、まともな情報を表示するようになったとか、32bit版なので試してないけどHyper-Vとか、内部動作の細かいところがブラッシュアップされている感じ。ちょっと使ってみた感じだと・・・

Windows 8(Developer Preview) = Windows7.5  + スマートフォン(MetroUI)

というような印象を持ちました。CPUとかメモリはそこそこのものでも、動くけど・・・古いチップセット内蔵のグラフィック機能だけだと、使えない!です。

画面切替のアニメーションなんかはスムーズなんだけど、チップセット内蔵のGPUが非力すぎて、ムービーが再生されてる状態で画面を切り替えたりすると、GUIアニメーションの優先度が高いのか、動画再生がカクカクする。CPUより、GPU(グラフィック)の重要度を再認識させられた感じ。

結論

画面タッチデバイスがないと、まったくもって楽しくないです(笑)

PHPにはもうウンザリ

自分の知識の無さが恥ずかったこと。

PHPで組んである、動かない入力フォームのメール送信スクリプトを、ちょっと見てくれないか? と言われ見てみたんですが・・・、はじめ、見たとき正直、なんでこれが動くんだ? と思ったんですね。

いきなり、初期化されていないグローバル変数で分岐してあるような、理解不能なコード。
だいたい要点は ↓↓↓↓ こんなん。

<?php
include('function.php');

$NAME = stripslashes($NAME);
$PHONE = stripslashes($PHONE);

if($send == 'ok')
{
 /* ゴニョゴニョ*/
}
else
{
/* こそこそ */
}

/* だいたい上記のようなコードから始まる。*/

文字列比較に == を使っているところなど、ツッコミどころ満載なんですが・・・
$NAMEって? $PHONE って? $send って? どこから来たん???
しばしPHP配布サイトのマニュアル見ながら、考える・・・・。
WAMPで立ててる、Windowsのテストサーバーで動かしても、当然ながら動かず。

(他の仕事をしながら、数時間経過)

は!? これがもしや register_globals 問題か???? と思って、実際上がってるサーバーの仕様を教えてもらうと、
register_globals は off 。まぁ・・・当たり前ですが・・・。気付けばなんてことない。

というか、PHPのバージョン 4以前から組んでいる人からすれば、すぐに気付くんでしょうけど・・・、
僕がPHPを触りだしたのは PHP5 から。当然、入力は $_GET[]や$_POST[]で取るもんだと思ってました。
「動くはずがない!」と断言してしまってました(笑) あー、恥ずかしや・・・(T-T)

っていうか、PHPってなんちゅー仕様なんだ???
register_globals を on にするメリットが全く理解できない。というか、なんでこんな設定があるのかが分からない。

ネットにアンチ・PHPって人をよく見かけるけど・・・分かる気がする。昔の人は、よくこんなキモイ仕様で書いてたもんだ。

<?php ?> で括れば、容易にサーバーサイドのコードを埋め込めるのは、便利なように見えるんですが・・・ HTMLタグとPHPコードがスパゲッティー状にこんがらかったファイルを見ると・・・たとえ自分が書いたコードでも読む気がしない・・・というか、自分で書いたものさえ2~3日したら解読不能になる orz…

New VAIO Z

ちょっと間が空いてしまいました。

4年前に購入したVAIO type T(TZ)を使っていたのですが、内蔵HDDの遅さに耐えかね、SSDに換装しようといろいろ調べていたところに、VAIO Zの広告を見て、ほぼ衝動買いです。

4年ぶりに新しいパソコン。
Core i7-2620M / DDR3 Dual Channel 8GB / SSD RAID0 256GB(128GB × 2)

決めた理由は、ストレージが爆速なところ。SSDのモジュールは、Samsung。

crystaldiskmark

シーケンシャル・リードが突出してますが、これはSerial ATA 6Gb/s に加えて、SSD RAID0のおかげでしょうか。

ただ、RAIDシステムに、Intel Rapid Storage を使用しているので、Trimコマンドが効かないみたい。MLCの関係で寿命が短いかもしれません。まぁ、3年ほどもってくれれば・・・。SSDモジュール自体はTrimに対応しているので、こういうのはRAIDドライバとかでなんとかなるもんなんでしょうかね???

trim  【インテルラピッドテクノロジーのヘルプファイルより】

で、前の環境を再現しつつ、Visual Studio Express Editionを2008から2010にバージョンアップ・・・したのはいいのですが・・・2008と2010とで全く違っててちょっと後悔。設定などが大幅に違っているので、いちから勉強しなおし(ーー;;;

それと、Active Perl の 古いバージョン(5.8系列)のダウンロードが、有料になってしまって・・・。前にダウンロードしたファイル、削除するんじゃなかった・・・・。しょうがないので、Active Perlの最新版 5.14 をインストール。

あ~あ。