Delphiが信用できない

By 徳永 昌彦   /   On 2013-07-15   /   In Days ( Tags: , , )   /   0 Comment


7623744452 7222654f38 Delphiが信用できない
Finger face with a question / Tsahi Levent-Levi

仕事でDelphiを使っているんだけど、いまいち信用できない振る舞いをする。標準コンポーネントの使い方を間違っているのなら正せばいいんだけど・・・、そうじゃないように思える。

TClientDataSet、TSQLQuery、TDataSetProviderを使ってORACLEデータベースからデータを取得するSQL文に対して戻ってくる結果がオカシイ。こんな振る舞いをするなら安心して開発できないし、もし自分が開発言語を策定する立場ならDelphiを選ぶことはない。

 

取得結果が必ず0件

SQL文の検索条件に合致したデータが存在するのに、取得結果が必ず0件になることがある。ORACLE SQL*Plus上でSQL文を発行すれば、データが取得できるので確実にデータは存在している。

 

SELECT A, B, C FROM TABLE_A WHERE C = ‘東京’

 

こんな単純なSQL文でさえも、合致したデータが存在するのに取得結果が必ず0件になることがある。

 

ORDER BY句が無視される

SQL文のORDER BY句で指定した並び順とは違った並び順で、データが取得される。ORACLE SQL*Plus上でSQL文を発行すれば、指定した並び順でデータが取得できるのでSQL文は正しい。

 

SELECT A, B, C FROM TABLE_A ORDER BY A, Bのとき、並び順がB, Aとなることがある。

 

ときどき、オカシイ

『確実に』正しく振る舞うんじゃないくて、『ときどき』オカシイ振る舞いをする。

 

 

で、これを防ぐ方法がひとつだけある。

SELECT * FROM TABLE_A WHERE C = ‘東京’ とか SELECT * FROM TABLE_A ORDER BY A, Bのように、列指定じゃなくてすべての列を取得するSQL文を発行すると正しく振る舞う。

 

開発言語が信用できないと、できあがったモノも信用できない。それが自分で作り上げたものであってもね。

 

呪われているのはプロジェクトか?それともワタシか?

By 徳永 昌彦   /   On 2013-06-09   /   In Days ( Tags: , )   /   0 Comment


5093910979 9edda8ec29 呪われているのはプロジェクトか?それともワタシか?
(scream) / greg westfall.

もしかしたら、オイラがプロジェクトに参画しているから・・・って可能性もある?(笑) てなことを思ってしまうほど、参画してくるメンバーのスキル不足でプロジェクトスケジュールに悪影響をあたえている。

要員不足となったとき、すぐに見つかるメンバーは『ハズレ』が多いというのはよく聞く話だし、経験上そういうことが多いことから間違った話じゃないと思う。ただ、わずか3ヶ月あまりでこれだけの『ハズレ』メンバーに出会うプロジェクトって経験したことはないけど・・・

 

ケース1:音信不通

いまのプロジェクトには3月はじめから参画したんだけど、同日にもう1人メンバーが参画してくるはずだった。しかし現場近くの集合場所に約束の時間になっても来ないので、営業担当者が連絡をとったが音信不通だったらしい。

プロジェクトスケジュールに残された時間は1ヶ月だったので「こりゃ、逃げたな・・・」と思っていたけど、だいぶ後になって聞いた話では自宅から現場までが遠くて通えないからだとか。

それがホントの理由なら、面談のときに断るとか面談合格の知らせがあったときにていねいに断れば済む話だし、そういう事情を説明できなかった当人のコミュニケーションスキルとかビジネススキルに問題があったのかもしれない。

 

 

ケース2:スケジュールより大事なこと

そんなわけで発注元はケース1の(メンバーが所属する)協力会社に代替要員を補充するよう要請し、3月2週なかばになって新しいメンバーが参画してきた。

2週間ほどの参画遅れということもあって、はじめは作業進捗もあまりよくなく残業や休日出勤でその遅れを取り戻そうとしているように見えた。しかし、見えただけだった・・・

会社に提出する資料作りに1日の半分〜2/3以上をそれにあて、スケジュールに余裕がほとんどないプロジェクト作業はほとんど進んでいない。ということはその遅れを埋めるのは他の参画メンバーになる。

そりゃ、迷惑の何物でもない。

そんな資料はネタ出しを現場にしてもらって自社の営業担当者や上司が作るとかすればいいんじゃないの? プロジェクトのスケジュールに余裕がないとわかっているはずなのに、資料の追加や訂正を現場に1日何度も電話で依頼するってはオカシイ話。

会社もメンバーも結果的に確信犯。

 

 

ケース3:始まってもいないのに

なんとかスケジュールを乗り切った感じのプロジェクト。4月から別プロジェクトへメンバーが異動したので、ケース1・2の(メンバーが所属する)協力会社に参画メンバーを要請していたが・・・

開発環境の構築やプロジェクトの初期レクチャーを受けただけで「精神的に苦痛で・・・」という理由からわずか3日でいなくなってしまった。ちょっとでも来ただけ、ケース1よりマシか? 協力会社が『ハズレ』だったんじゃないかと思う。結局、その協力会社とは契約解除という形でお役御免となった。

で、残ったのはオイラ1人だけ。1人でできる作業量は1人分でそれ以上でもそれ以下でもないから、淡々と続けるしかなかった。

 

 

ケース4:要らぬ気づかい

1人で淡々と作業を続けていたが、5月から別協力会社のメンバー2人が参画してきた。

経験年数は20年以上ということでオイラと同世代?ぐらいらしい。それなら作業も落ち着いてそこそこに進むかと思っていたけど、2週間経っても作業ペースは上がらずなんとか進もうとして残業しているようだった。

ときどき「困っていることはありませんか? 大丈夫ですか?」とフォローしていたんだけど、「悩むところにまだたどり着いていないので、大丈夫です」という妙な答えが返ってくることが多かった。実際には1人で悩んでいることのほうが多いようで、さすがに1人で悩んでいるのは時間の無駄だと思い「何かがわからなくて悩んでいるのであれば、私に聞いてください」と。

「いろいろ聞いてしまうと、◯◯さん(オイラ)の時間が割いてしまい、作業が遅れると申し訳ないので」という。「要らぬ、お世話だ! アンタの作業が遅れるほうが問題なんだよ」とは言わず、すごーくていねいに同じことを伝えたけど。そんな気づかいできるのはもっと手段を考えて欲しいところ。

雑談してわかったがこの人は完全な案件ミスマッチで、データベースを使うのにSQLはまったく知らないしWindowsアプリのプログラミングなのに組み込み制御系しか経験がない。それならそれで自分はマッチングしていない?とかギモンに思うだろうが、会社から現場へ行け!と言われればミスマッチでも従うってことなんだろう。

ところが5月末日を待たずに突然のギブアップ宣言。しかも自社へ連絡することもなく、直接、発注元担当者に伝える・・・って、何か間違ってないか? で、そのまま同じ日に現場を去りました・・・

発注元は協力会社へ早急に代替要因を選出させて面談することになったが、そのときに連れてきたメンバーが見事なミスマッチ。1人は経験は組み込み制御系のみでSQL知識ゼロ。もう1人は経験はサポートセンターの電話担当でプログラミング経験なし。

仕事をバカにしてんだろ? 

 

めぐり会うか、めぐり会わないか

プロジェクトメンバー追加のためにいままでに面談(する側で)したこともあったけど、戦力となるメンバーとめぐり会えるのは難しい。だから面談のときには注意するようになったことがある。

  1. 業務経歴書は信用しない
  2. 経験年数は信用しない
  3. コミュニケーションスキルは評価しない

 1は「ウソ」が書かれているとは思わないが、あくまで当人がプログラミンスキルやマネージメントスキルがあると思っているだけ。第3者が評価した業務経歴書なら別だけどほとんどの業務経歴書は当人が記載しているので、参考にはするけど信用しないようにしている。

2は必ずしも時間経過とスキルは一致しないことの方が多い。3ヶ月もあればプログラミングスキルを習得する人もいれば、1年経っても習得できない人もいる。

3は面談馴れした人を除外したいから。面談ではハキハキと受け答えしていたが、実作業になるとあいまいな受け答えしかできない人を見てきたから。

「そんなこと、いままでなかったよ」って人もいるだろうし、「あるある、そんなことばかりだよ」という人もいるだろう。どちらにしても戦力のある人ってのはそのとき次第なんだと思う。

 

Parallels ToosをUbuntuにインストールする方法

By 徳永 昌彦   /   On 2013-05-26   /   In Days ( Tags: )   /   0 Comment


5122465325 acb01d81f3 Parallels ToosをUbuntuにインストールする方法
Ubuntu Tee-shirt / vinylourson

WEBサービスでも作ろうかな?と思い、Paralles Desktop上にUbuntu ServerのVM環境を構築した。Ubuntu Serverのインストール時に「日本語」メッセージを選べば迷うことはほぼないのでインストール自体は簡単にできる。ところが、Ubuntu ServerにParalles Toolsをインストールするために、「仮想マシン」メニューの「Paralles Toolsのインストール」を選んでも/media/cdromにマウントできなかった。

いろいろと調べてみたら「linux-headers  build-essential」パッケージのインストールは必須で、さらに「prl-tools-lin.iso」を「仮想マシン」メニューの「Paralles Toolsのインストール」を選んだあと、マウンドコマンドを実行すればいいことがわかった。

 

てことで、備忘録的にメモっておく。以下のマウントコマンドを実行し、

$ sudo mount /dev/cdrom /media/cdrom

 

Paralles Toolsインストーラを起動してインストールする。

$ sudo /media/cdrom/install

 

インストールが終わったら、Ubuntu Serverを再起動させればよい。

$ sudo shutdown -r now

 

 

Ubuntu スワップファイルの追加方法

By 徳永 昌彦   /   On 2013-05-26   /   In Days ( Tags: )   /   0 Comment


8198704179 989f44b082 Ubuntu スワップファイルの追加方法
Ubuntu / afromusing

OOM Killerの無間地獄にハマリなかなか抜け出せなかったメモリ不足。

さくらのVPS 1GにOSをUbuntuに入れ替えて初期設定でインストールしたが、どうやら初期設定のままだとスワップパーティションはメモリサイズと同じになるっぽい。サーバでApache、MySQLやPHP、Rubyといろいろと動かしていることもあってスワップファイルも食い潰していることが判明。

そりゃ、メモリ不足になることも多いわけだ。 (;´Д`) で、さっそくスワップファイルを追加してスワップ領域を増やした。以下はその手順だけどスワップファイルを追加することなんて、あまりないだろうから備忘録的にメモっておく。

 

 

スワップ状況の確認

 $ cat /proc/swaps
Filename Type Size Used Priority
/dev/sda5 partition 1255420 73692 -1

 

 

スワップ用ファイルの作成

$ sudo dd if=/dev/zero of=/var/swap/swap0 bs=2M count=4096
$ sudo chmod 600 /var/swap/swap

 

 

スワップ用ファイルをスワップに割当

sudo mkswap /var/swap/swap0
sudo swapon /var/swap/swap0

 

 

起動時に自動でスワップファイルとして設定されるように

$ sudo vim /etc/fstab
/var/swap/swap0 swap swap defaults 0 0 #最下行に追加した

 

 

サーバを再起動してスワップ状況の再確認

$ cat /proc/swaps
Filename Type Size Used Priority
/dev/sda5 partition 1255420 73692 -1
/var/swap/swap0 file 2097148 0 -2

 

 

作業はこれだけ。

スワップファイルを追加してから1ヶ月ほどになるけど、OOM Killerの無限地獄とサヨナラできたみた。