カテゴリー ‘システム開発’ の記事

Windows + PHP5.2 + PostgreSQLでハマった人へ

Fatal error: Call to undefined function: pg_connect…のエラー

WindowsでWebサーバーを公開しておられるあるお客さんが、CMSを導入するとのことでPHPとPostgreSQLの設定を行うことになって、ものすごくハマってしまったので、同じことで困るかもしれない人のために情報を残しておきます。
問題が起こった環境は以下のような感じ
・Windows Server 2003
・PostgreSQL 8.4.0
・PHP5.2.10
インストールは普通にうまくいって、PHPも単体では動いていることを確認。
でも、どうやってもPHPからPostgreSQLに接続ができない。
pg_connectメソッドで、以下のようなエラーが
Fatal error: Call to undefined function pg_connect() in…
しかも、phpinfoの情報にもPostgreSQLのpgsqlブロックが表示されてないみたい?
ちゃんと、php.iniファイルの、「extension=php_pgsql.dll」も確認したし、もちろんhttpdの再起動もしたし…
それでもやっぱりエラーは消えないし…

お客さん、そのDLL壊れてますよ!

いろいろと調べてみると、どうやらPostgreSQLライブラリ「php_pgsql.dll」が怪しい感じ。
どうやら、Windows版のPHP5.2.6以降のバイナリに含まれる php_pgsql.dll は壊れている?
念のためチェックしてみると、php_pgsql.dll のファイルサイズは97kb。
どうやらビンゴのようで(-_-;)

php_pgsql.dllを入れ替える

とりあえずは、古いバージョンのWindows版PHPに含まれるphp_pgsql.dll と交換する必要があるらいしいので、http://www.php.net/releases/から、PHP5.2.5のWindows binaryをダウンロード。
解凍して、extディレクトリの中のphp_pgsql.dll を見てみると、ファイルサイズは165KB。
5.2.10の97KBと全然違いますやん。
で、PHP5.2.10のextディレクトリにあるphp_pgsql.dll を5.2.5のものに置き換えてみると…
すんなりつながりました。
え~、PHPのWindows binaryのバグ!?
PHP5.2.5~5.2.10まで、ずーっとバグったまま?
とりあえず、Windows + PHP + PostgreSQLの環境では、有名な話らしいんで、すぐに情報が見つかって助かりました。
【追記】
コメントにて、もっとスマートな解決方法を教えて頂きましたので、以下リンクしておきます。
PHP、Windows+PHP5.2.6以降でPostgreSQLに接続できない

Movable Type3から4へアップグレード

サーバー移転ついでにMTのバージョンアップ

Six Apartから、ブログエンジンMovable Type 5が発表されたところですが、このブログはやっと3から4にバージョンアップしたという話です。
そもそもの発端は、もう4年間ほどMovable Typeでこのブログを運営していたサーバーが、近頃やたらに遅いんでちょっとレスポンスの向上のために、サーバー引越をしようとしたのが目的。
で、どうせサーバー引越するなら、バージョンもあまりに古い3から4に上げてしまおうと思ったわけです。
とりあえずサーバーが新旧の2台あるんで、まずは新サーバーをじっくり準備することに。
作業端末のhostsファイルに、「blog.itoy.jp」として新サーバーのIPアドレスを登録。
なんとなく動作確認ができれから、DNSサーバーの設定を変更して、新サーバーのIPを登録する作戦です。

バージョンアップの手順

Movable Typeの場合(まぁほどんどのCMSはそうですが)、とにかくデータベースと画像ファイル群があればなんとかなる!

(続きを読む…)

お客さんのサーバーをぶっ壊して泣きました

昨日はあるクライアントさんのシステムの本番日でした。
もう10年くらい使っているWindows NT Server 4.0 &Windows98クライアントのシステムで、ハードウェアのメーカー保守がいよいよ切れてしまうので、Windows 2003 ServerとWindows Vistaのシステムの入れ替えて欲しいと去年に依頼があったものです。
そりゃあ、設計ドキュメントも無いOracle7(データベース)とPro*Cobolで出来ているシステムを移行するというのは、想像を絶するエライ苦労でした。
大事故
で、ようやくこぎつけたシステム切替の日。
まずはデータの移行作業。
データベースのバックアップを待っている間に、新サーバーを置く場所を確保しようと、サーバーの横のキャスター付きキャビネットをゴロゴロと移動させようとすると…
「ヒュゥゥン…」
\(◎o◎)/
サーバー外付けの増設ディスクが止まってる!データベースのメインディスクやのに!
サーバーのコンソールを見るとデータベースのバックアップも異常終了してる!!
サーバー裏側を確認するとケーブルが一本抜けきっているのでした。
よく見るとキャビネットの引き出しがケーブルをはさんでいたようで、そのキャビネットを動かした瞬間にまた何故かもともとネジ止めされていなかったケーブルが抜けたようでした
「これって、完全にトラップですやんか(ーー;)  しかし、これはヤバイですぞ……」
いろいろと復旧にチャンレジしたものの、結果的に財務、顧客、売上、在庫の全てのデータベースが壊れてしまっている事を知るのでした。

(続きを読む…)

システムエンジニアのためのサンタさん

SEの味方
この時期、子供達のもとにはサンタさんやってきますが、世の可愛そうなSEのもとにサンタさんが来てくれるとしたら、どんなことをしてくれるでしょうか。
クリスマスの朝、SEが目を覚ましてみると、
・データベース設計、アプリケーション設計の仕様書が完成している!
・外注プログラマの単金が半額になっている!
・外注プログラマに口頭仕様が伝わりまくる!
・Windows2000 ServerのMicrosoftサポート期間が延長されている!
・ミドルウェアのメーカーが一瞬で障害を解決してくれる!
・5年経過したサーバーの部品をメーカーが提供し続けてくれる!
・RAID再構築中にぶっ壊れたハードディスクが直っている!
・データベースコネクションをクローズしていないにもかかわらず、勝手にクローズしてくれている!
・エンドユーザーがシステム確認事項への回答をすぐに返してくれる!
・エンドユーザーが「それじゃリリース時期を遅らせましょう」と言う!
・エンドユーザーが「これは開発範囲外なので追加注文します」と言う!
・エンドユーザーが「平日の日中にシステムメンテナンスしてもいいよ」と言う!
・納品もしていないのに印鑑の押された検収書が郵送されてくる!
サンタさんの代わりにこんなことをしてくれるスーパーSEはどこかにいないもんですかねー

SQL文を読みやすく整形『SQL in Form』

SQLでございます
ほとんどの方はプログラムなるものに、興味がないと思いますんで、以下全部読み飛ばしてくださいまし。
今回は私のメモとしてエントリー。
世の中のプログラマーは、RDBMS(リレーショナルデータベース)からデータを取り出す時に、SQLなるデータベース共通言語を使ってデータの取り出しを行います。
ただこのSQLなんですが、基本的に一文で一気に命令しなくてはなりません。
つまり日本語でいうと「。」は一回しか使えないということです。
簡単な条件ならいいのですが、複雑な抽出条件の場合は、接続詞を駆使して長~い文章を作るわけです。
SQLを読みやすく
そんな時に困るのが、
「このカッコはいったいどこにかかってるんやろ?」 とか
「この別名はどこで定義してるもんやねん?」とか
いろいろと混乱してくるんですよねー。

(続きを読む…)

プロジェクトを管理できない技術者

え~ちょっとシステム屋さんらしく、システム開発に関することを。
システム開発のプロジェクト管理
最近、身近なところで、立て続けに2件の大失敗システム開発プロジェクトを見ました。
システム開発プロジェクトっていうのは、
1)お客さんと、どういう事に困ってますかー、と「要件」をまとめる
2)お客さんの要望をシステムに落としていく「設計」を行う
3)納期に間に合うように限られた人数でプログラムを「開発」する
4)お客さんのところの業務運用時にトラブルが起きないように「テスト」する
というのが、おおまかな流れかと思います
※「お客さん」っていうのは、システム開発を依頼するクライアントの事です。
たいていのシステム屋は、もともと人よりもコンピューターとかかわってる方が得意な(かなりの偏見ですが)人たちが集まる傾向があるんで、人とあまり接する必要の無い3)、4)が得意です。
ただ年をとってくると、いつまでも3)4)ばかりやってる事を会社は許してくれず、1)2)もしっかりやりなさい! などといって突然、客先との折衝をまかされるんですが、ここに大きなリスクがあるようです。
お客と戦う!
実は、実際のシステム開発作業3)が始まっても、お客さんの要望は果てしないため、1)2)っていうのは、終わりまで続く傾向にあります。
「そういえば、こういう画面が無いと困るんだけど」
「この帳票が無いと仕事にならないんだよー」
「そんな風になるとは思ってなかった。こうして欲しい」
ここで、プロジェクトで決められた納期や予算と、お客さんからあふれれ出てくる要望とのギャップを埋めるべく、対人折衝能力が必要になります。
しかし、これまで1日の大半をコンピューターの前に座って過ごしてきたエンジニアには、そんなヒューマンスキルを鍛える暇が無かったため、知らない間にお客さんの要望を「えぇ。えぇ。」と聞いているうちに、けっきょく巨大なシステムを作らなければいけない事になります。
いわゆるシステムのスコープの決定ミスです。
そして、それは1,000万円規模の小さなプロジェクトなら、徹夜して頑張れば何とかなる事も多いんですが、もっと規模の大きいプロジェクトでは致命傷となります。
きっとこれからも…
私が最近見た2つの失敗プロジェクトはまさに上記の例でした。
プロジェクトの管理者は決して能力が無いわけではなく、立派な「技術者」でした。
ただ人とのコミュニケーションがやや苦手というだけでした。
ちょっと小さなシステム開発会社では、これからこんな事態が多発しそうな気がします。
というのも、これまで技術的な事はよう分からんけど、先頭をきってお客さんと折衝を続けてきた団塊の世代の方たちが、ドタドタと退職していきます。
そして、今まで影に隠れて「技術屋」をやっていた人たちが、突然「君もそろそろプロジェクトのマネージメントをやりたまえ」なんて言われて最前線に立たされて、結果的に数ヶ月後にプロジェクトが炎上するなんて事が多発するんじゃないでしょうか。
システムを発注する側の方もよーく気をつけてくださいねー。
システム会社から出てくる管理者のスキルをよーく見極めて要望を出さないと、結果的にエライ目にあいますよー(^^;

縦長サイトを一発キャプチャしたい!

画面キャプチャしまくる人
Webシステムの開発では、お客さんと打ち合わせを行う時には、よくプロトタイプを作って画面を見せて話をする事があります。
やっぱり、業務フローがどうのこうのとかいうよりは、実際に目に見える画面をベースに話を進める方がイメージがしやすいようで話がよく進みます。
ということで、まずお客さんとの打ち合わせ資料を作成するにあたっては、とくにかくHTMLフォームをたくさん作って、片っ端から画面キャプチャをとって資料に貼り付けていく必要があります。
縦長サイトをキャプチャしたい!
そんな時に威力を発揮するソフトウェアをご紹介!
(かなり有名ばソフトなようですが)
WebScan

これは、ブラウザをスクロールしなければ画面全体が見えないような縦長のサイトを、隠れている下の部分も一発でキャプチャしてしまうソフトです。
特に携帯サイトなどの、ものすごく縦に長い画面をキャプチャする時には、ずいぶんと助けられています。
このツールを知るまでは、ブラウザのスクロールバーを動かして数回に分けて画面キャプチャをとって、ペイントブラシ上で結合させるというような、かなり地道な作業をやっておりました(^^;
あとは、ブラウザに表示されているサイトを自動でA4サイズに収まるように自動縮小して印刷してくれるようなソフトもあれば最高なんですけど、どなたかご存知ないですかねー?