ソース管理されていないコードほど嫌なモノはない

外注先で作って設置してもらった、PHPのスクリプトを改造して、とある機能を付け足して欲しい、という依頼があってやってるんだけど、それがもう誰が作ったかの署名もないスクリプトで、明らかにPHP4時代のもの。

しかも、僕の手元に来たソースファイルはすでに誰か?が改造してあって、明らかに不要な関数やら定数やらがコメントもなく散らばって、グローバル変数とローカル変数の区別が付かないような書き方している。たぶんデザイナーさんが勉強して作ったコードなんだろうな、というのが一見して分かるスクリプト群。

外注先のコードを勝手に改変して使い回して、それで金を客から取っていいのか?という微妙な問題はさておき、大元のソースファイル一式から手を付けた方が良さそうな感じだけど、手元にあるのは改造しまくった後のファイルしかない。

なんで、ソースコード管理しないのか? 一手間かけるのが、嫌なんだろう。ソースコード管理をするには、関わっている人全員にある程度トレーニングを強いることになる。「この忙しい時に、そんな暇(時間)はない」と一蹴されるとは思うんだけど、「時間がない」事を言い訳にしている人(部門)は、時間があっても絶対やらない。

まぁ、SEで専門業務しかやらない人達に営業成績(売上)を求める、訳分からない経営だから、社員さんも作業効率化なんて考えることはないんだろうな。効率化をして時間を作ったら(暇になったら)、自分で自分の首を絞めるようなもんだから、非効率な状態を温存しつつ、自分は忙しくて時間が無い、という状態にしておくことが楽なんだろうね。だからいつまで経ってもスキルアップしない。スキルアップしようとも思わない、というのが正解か。要するにプロフェッショナルじゃないんだよなー。

プログラムを組める人が他の部署にいるのに、外注するよりその人に頼めば?と進言しても、「いや、あの部署の人は・・・」とか結局訳のわかならい理由でダメ。めっちゃ小さい会社なのに、大企業みたいな理由(笑) 小さな会社はフットワークで勝負できるのに、それをやらない。

何かものを頼んだら、「あれはダメ、これもダメ、それは絶対ダメ」、「できない理由」をくどくど説明するような体質。「できない理由」より、「やるために何が必要か」を考える体質に変えないと、いつまで経っても三流中小企業でバカにされるんだよな。

ま、グチを書いたところで、甘い理想論、きれいごとだよな。目の前の作業が大事だよな。あーあ。

TortoiseSVN 1.7.7でクライアント認証が失敗する

アップデートされた、というダイアログが出たので、アップデートしてみると、
commitもupdateも、認証に失敗して何もできなくなってしまった。

サーバーは、SSL(Apache)+クライアント認証で使ってて、 TortoiseSVN 1.7.6のときはフツーに使えてたんだけど・・・1.7.7にしたら認証が効かなくなった。

保存されている認証データをクリアし、%APPDATA%Subversionauthsvn.ssl.serverも削除、レジストリのHKLMSoftwareTigris.orgServersサーバー名ssl-client-cert-file のエントリもクリアして試してみたけど、駄目(ーー;;;

しょうがないので、1.7.6に戻したら・・・今度は言語が日本語にならず・・・もう散々(^^;;;

一旦、アンインストールして、%ProgramFiles%TortoiseSVNフォルダを削除して1.7.6をインストールしなおしてやっとこさ元通りに・・・。

やっぱりバージョンアップしたからって、すぐにアップデートすると痛い目見ますね・・・。とほほ。
これって何か特別な設定が必要になったんでしょうかね??? 単なるバグならすぐ治るからいいけど・・・。

最近 ネットでの情報がGit に関連するものが多くなってて気になってはいるんですが・・・個人でやるにはいまいち大袈裟なんですよねぇ。。。流行りものは、やはり手を付けておくべきなんでしょうか(^^;

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レポート出てた・・・。

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…

ブラック・ジャパンを見た

最近、僕の身近な知り合いが、痴漢の疑いで勾留された。状況から見て、明らかに示談金目当て。

調べてみると・・・今のシステムでは、警察に連れて行かれた時点で、完全にアウト。
警察は検挙率の向上、弁護士は最初っから、ろくに仕事もせず示談にして早々に幕引きをはかりたがり、高い弁護料を取る。

いや、分かってる。警察の言い分、弁護士の言い分は、良く分かる。
結局、示談金を積んで告訴取り下げになるだろう。

・・・何も変わらない。

泣き寝入りしている人も多いと聞く。こういう日本を見ると、何ともやるせない思いでいっぱい。
件の勾留された人が言った。「ブラックジャパンを見たよ」って言われたのが印象的だった。

今回の件で、一番分かったことは、日本の新聞ってのがいかに紙くずだってこと。
外国じゃ、日本の報道機関なんて見向きもされない。完全なお子様扱い。ようやく分かった。
そりゃそうだ、警察の発表をそのまま何の疑いもなく垂れ流してるだけだもの。で、なんかあったら、警察を叩く。
記者は何も調べないし、疑わないし、言うだけ、書くだけ。

僕は、この先、こんな役に立たない新聞を読んで、もっともっと「バカ」になりますよ。