読者です 読者をやめる 読者になる 読者になる

PSLブログ

ヨシナシゴトヲツヅリマス

開発環境あれこれ

2次請け、3次請けで、企業様コーポレートサイトの中の新着情報CMSとか、問い合わせフォームのcgiの設置とかの依頼がときどき入るのだが、今月末にやったお客様のサイトは、外から入れず、本社内からしか入れない。大阪のお客さんで、私は行くことができないので、クライアントの担当者がアップしに行った。

 この段階になってはじめて、ScriptAliasのディレクトリ(/cgi-bin)の中でしかcgiが動かず、この中では当然、通常ファイルの直接参照不可で、.htaccessも無効(AllowOverride none)、mod_rewriteも入っていない、という昔ながらのサーバであることが判明した。普段使っているベースのシステムのままでは動かず、見積の前提が狂ってしまう状態だった。事前に確認すべきだが、直のお客さんなら確認するが、私も1つ上のクライアントもうっかりしていた。

修正作業は1人日では厳しかったが、エンドクライアントとの間で追加費用は出ず、1日分はなんとかしてもらうことにして、改修作業とテスト。直接参照するファイルとcgiプログラムを別の場所に設置する必要があったので、相対パス前提の作りでは無理で、cgi-bin内の設置場所で設置したパスとURLをCwdモジュールと環境変数から取得して、そこから直接参照用のディレクトリまでの相対パスをパラメータとして持たせるようにした。直接パスを指定してしまうと、テストサーバに置くファイルを別に用意しなければならないので、どこに置いても自動的に動くように作るのだが、相対パスから絶対パスを作る処理を久しぶりに書いたので手こずってしまった。

なんとか修正対応、アップロードにこぎ着けたが、サーバの時計が2時間55分進んでいることが判明。記事の予約機能使うのにどうすんだ。ntpdとか使ってないんだろうな~。8/1の9時に公開したい記事の日時を8/1の12時に指定することで、だいたい9時頃公開されるというしょうもないことに。

レンタルサーバなどではなくて、どこかのハウジングで専用サーバを借りて、自社担当者がサーバに全然詳しくなくて、しかも現地に行かなければ情報が分からないというのは、それなりに費用を見てもいいよね、と思った。プログラム書くそのものの作業と同じかそれ以上に、サーバの条件の収集とか、現地に行ってアップするとかの手間に時間がかかってしまう。最近こういうケースがほとんどなくなってきているので、ちょっと油断していた。発注側のリテラシーがないほど請負側がリスクを追うというのは理不尽な気がするが、分かる人が指摘してあげなければだれも分かりようがないので仕方がない。

年のせいか、頭の中でずっと覚えているということがとても辛くなってきた。gitなんん使い出したら、手動でアップして、あ、このファイルは修正されてるからサーバからいったんダウンロードしてから直してアップげてください、とかいうの、絶対間違える。今回もサーバにあったデータファイルを間違えて消してしまった。私の昔のシステムはデータファイルがプレーンテキストなので、今考えるとリスキーなシステムだと思う。DBだとftpとかで間違って消してしまうとかないなとか思う。

ところで、どこにいってもサーバにファイルを置くのにffftpを使っている。このソフトはすごい。私も以前使っていたが、大量のファイルを上げ下げしているとよくフリーズしたので、シェアウエアNextFTPを使うようになって現在に至る。今ではscp(sftp)を使えるところはできるだけそれを使うようにして、クライアントソフトもWinSCPを使っている。

ftpでよくあるのは、バイナリモードでテキストファイル(主にhtml)を上げてしまい、テキストモードでダウンロードすることで、改行が入ってしまうパターン。ffftpを使っているというのとこのすべての行間に空行が入ってしまっているファイルがサーバに上がっているのはほとんどセットになっている。なんかもうイラっとくるというか、この空行を詰めたくなってくる。

WinSCPが便利だと思うのは、PC側でもサーバ側でもファイルをダブルクリックするとテキストファイルで開けること。サーバ側のファイルは一時ファイルとしてダウンロードされていて、修正保存して閉じると、修正後のファイルを自動的にアップしてくれる。こればちょっと便利。うっかりサーバ側だけ直してしまって手元にファイルがなくなるという危険はあるが。

現地に行って、このPCからしかサーバにアップできません、みたいなときに困るのが、エディタ。今でこそUnicodeにも対応したメモ帳だが、以前はShift_JISオンリーだった。しかも改行コードがCR+LFなのかLFなのか分からない(CRだけだと改行されない)。行番号も分からない。

最近MacBookを使うようになって、Mac環境で秀丸エディタWinSCPに匹敵するツールがないことに不便さを感じる。ftp/scpクライアントは条件に合うのはFileZillaくらい。私はDOS版のVZエディタとか使っていたので、Windowsのスクリーンフォントが結局見やすいので、MacCotEditorとか使ってみてもなかなか慣れない。

とりとめがないので、記事を分けて、../を含むパスをマージする方法について書こうと思う。