03 アプリケーション

2014年10月13日 (月)

YahooジオシティーズのCGIが変更になったのに気がつかなかった

ボクが管理しているボーイスカウトのホームページ。
YahooジオシティーズのCGIが変更になったのに気がつかなかった。

メールフォームが6月から機能していなかったのだ。
当然、入団問い合わせはこない。何人かは諦めたかもしれない。

先日の団委員会で入隊希望者から問い合わせがあって発覚したのだ。
調べてみると、確かにエラーになる。

20団のサイトはperlで書かれた無料のメールフォームを設置している。
中身をカスタマイズしているが、何度もテストしているのでよもやエラーになっているとは疑いもしなかったのだ。

ジオシティーズのCGIの環境が大幅に改定されたのだが、案内メールを見落としていたのだろう。
じゃあ、という軽い気持ちでCGIの設定を修正し始めた。

ところが、これがドツボの始まりだった。

重要なお知らせとある掲示を読んだ。
どうやらフォームから呼び出すCGIは今までのような相対アドレスでは機能しないらしい。

説明は実に素っ気ない。

理解するまでに何度もプログラムをテストした。
ようやく、絶対アドレスでPOSTすればCGIを呼ぶことがわかった。

長い間、perlから離れていたのでもたつく。
ここまでに3時間もかかってしまった。

説明に参考となる事例でも乗せておいてくれればよいものを。

ところが、これでもエラーがなくならない。

なぜだ?

そうか、きっとバーミッションの設定やな。
そう睨んだボクはFTPソフトでパーミッションを調べてみると案の定754になっている。
755にしないとこのプログラムは動かない。すぐに、755に設定を変更しようとした。

ところが、どうしても変更できない。
他に方法があるのか?もがくようにネットを調べたら、ジオシティーズではパーミッションは自動設定されるとか。それも754に。それでも動作するのだとか。

じゃあ、なんでエラーになる?
perlのソースをみて、CGIのパスやsendmailのパスを何度も確認した。

わからん。

ネットで調べると、メールフォームのfromはyahooメールでないとエラーになると報告されている。
確かにジオシティーズの説明にもそう書いてある。

でも、ボクのperlのソースでは、最初からfromのアドレスはyahooなのだ。

ここで、完全に行き詰まってしまった。

頭を冷やすこと一晩。

翌朝、早起きした。
perlをやめてPHPの無料のメールフォームに取り替えることにした。
PHPの方が慣れているのとシンプルなメールフォームの機能で十分だからだ。

選んだ無料のメールフォームはジオシティーズにも対応しているとのこと。
ダウンロードして、ささっと設定してテストしてみた。

やはり、エラー...。
う〜ん。なんでやろ。
fromの指定もyahooのメールアドレスにしているのに。

もう一度、ソースを見直してみた。
すると、このプログラムではtoには管理人のメールアドレスを指定するようになっている。
そして、ジオシティーズ向けに、このTOのアドレスを、fromに代用するように改変せよとある。

ボクは、toには管理人のメールアドレスだけではなく、団のメーリングリストも指定している。
ひょっとして。この団のメーリングリストが。

ビンゴ!

プログラムで toをFromに指定する場合は複数のアドレスはエラーになる。
考えれば単純なこと。

こうして、無事メールフォームは機能した。

やれやれの一日だった。台風でどこへも出かけられなかったからいいか。

2014年4月15日 (火)

LinuxのApacheでAD認証のログイン情報を取得できた

長かったなあ。とうとう実現できた。
世間では当たり前のできごとかもしれないが、私には長い道のりだった。

AD認証のログイン情報を取得できれば、イントラネット上のさまざまな制御に使える。
活用度がべらぼうに違うのだ。ところが、Linuxではうまくいかなかった。
しかたがないのでWindowsを使わなければならない。← お金がかかるし。
ウイルス対策大変だし。← これが実に面倒

LAMP構成では、MicrosoftのADサーバの情報がうまく取れなかった。
phpのリファラーに、ログイン情報が入ってこなかったのだ。

5年ほど前から、試行錯誤していた。くっそー。
Kerberosを利用すれば出来ると話には聞いていたが実現できずにいたのだ。

実現するためには、AD管理者がADサーバ上で発行する認証チケットが必要
とか言ってた。(ほんまかいな。と心の奥底では疑った)

ハードルが高すぎる...。

じゃ、しかたない。WAMP構成でいくしかないか。

しかし、あきらめずに調べるものだ。

次の方法で実現できた。

[1] まず以下のソフトをコンパイルしてサーバに導入する。
「PowerBroker Identity Services Open Edition」という製品(無償)を導入する。
このソフトはAD認証標準のKerberosを利用して動作している。

[2] Apacheのconfファイルのディレクティブに次のように記述する。

<Directory "/data/webroot">
  Allow from 127.0.0.0/255.0.0.0 ::1/128
   AuthType Kerberos
   AuthName "Kerberos Login"
   KrbAuthRealms EXAMPLE.COM
   Krb5Keytab /etc/apache2/http.ktb
   Require valid-user
</Directory>

  フォルダは適当に読み替えてください。

[3] これで、phpのリファラーにAD認証のログイン情報が取得できる。

次のサイト構築は、LAMPでいくか。

2014年1月13日 (月)

LibreOffice 4.1をメインに使うことにした

昨年末にデスクトップパソコンをXPからWin7に移行した。
移行にかかった期間はほぼ3日。
細かなチューニングに苦労したが、現在では順調に動作しているので満足だ。

XPマシンではOffice2003を使っていた。
Win7でも同じように2003を入れてみたものの今後のことを考えるとOffice2010に
アップグレードしておいたほうがよさそうだ。

ネットで調べてみると、Office2010は3~4万円くらいする。
仕事柄パワーポイントはよく使うから、ビジネス版が必要だ。
アップグレード版を探してみたが、やっぱり3万円くらいする。

それに、Office2013のほうが安かったりする?
でも、僕には必要ないバージョンだ。

買おうかどうか迷ったが、今年は変革の年と自分で決めたので止めた。

代わりに、LibreOffice 4.1(http://ja.libreoffice.org/)をインストールすることにした。
LibreOfficeは、オープンソースのプログラムだ。使用は無料。
前身は、OpenOfficeOrgだ。僕も使った経験がある。
当時のOfficeとの互換性について、仕事上困ったことがあったので使わずにいた。
今はどうなってるんだろう。

今朝起きて、いちばんにダウンロードしてインストールしてみた。

Officeのエクセルにあたる「Calc」だが、メニューを見てほっとした。
Office2010のリボンよりも、Office2003のメニューに近い!
おじさんに優しいメニューだ。

ちょっと、使ってみた。

えっ、セルに点線の罫線も引ける?! 前は引けなかったのに。
これがいちばん困った問題だった。解消されてるやん。
僕の利用範囲でいうと互換性については問題なさそうだ。

パワーポイントでは、ちょっとフォントの表示がずれたりするがこれもOK。
僕にとっては許容範囲。

まだ、気づいていない点があるかもしれないが、ちょっと使ってみて違和感はなさそう。

それにしてもだ。ずいぶん進化してる感じがする。

メニューはOfiiceと同じではないが、慣れの問題だろう。
Office2010のリボンに慣れるよりは、早くLibreOfficeに慣れるかもしれない。

なにせ無料だ。ありがたく使わせてもらうことにした。

2013年6月28日 (金)

古いソフトを新しいソフトとして売る罪

ある一部上場の会社のソフトウェア。

それがないと困るというクライアントがいる。
なんということのないソフトだが、当人は大まじめ。




XPマシンからWin7への入れ替え時期がやってきたため、今まで使ってきたソフトが
使えるかどうかが大問題なのだ。

動作しますかね。
それはわかりません。メーカーに問い合わせしてください。
わかりました。

というようなやりとりがあって、新しくWin7対応のソフトを購入した。

その額、90万円!(ほんまかいな)

早速、Win7機が手配され、件のソフトウェアをインストールしようとした。
インストールまで依頼したら10数万円請求されるとか。
あほらしい。
私がサポートしましょ。

で、インストーラーを操作することに。

すると、エラー。

なにやらのクラスライブラリがないとかなんとか。

担当者は必死の形相。
すがるような目線で、私を見る。

何度インストールしても駄目。

ネットで現象を調べてみると、どうやらソフトのインストーラーに問題があるようだ。

ソフトはビジュアルベーシック6で構築されている。
ところが、インストーラーのバージョンは5で構成されているようだ。

どんなやつが開発したのか知らないが不注意過ぎる。

これじゃあ、最新のWin7機では、Dllが新しすぎて動作しない可能性がある。

そんなとき、開発元の会社からは、原因不明とのメールが届く。
そういう報告があるが、新しくパソコンを手配をして、それに入れたら解決したので
新しくパソコンを買えという。

そんなアホな。

そこで、VB6のランタイムを古いバージョンにインストールし直してみた。
それでも駄目。

やっぱり、あかんか。

でも、しばらくして、Dドライブにインストールしてみたら動作したとの連絡があった。

やれやれ。

インストールしたプログラムのプロパティをみたら、2003年8月だった。
それも、アクセス2000を使ってる!

こんなものをWin7対応として90万で売りつけるかあ。

担当者には詳細に伝えておいた。

このソフトがないと困る?
業務を見直した方がいいと思うよ。

彼は、今回の件は忘れられないだろうな。

2012年12月18日 (火)

縮小専用がMacBookAirで使えるの?!

MacBookAirにしてからいろいろ困ることがある。

その一つが画像の圧縮だ。
ブログなどにアップするときに画像のサイズを縮小してアップしたい。
最近のデジカメはやたらと解像度が大きいのでサイズが大きいからだ。

Windowsを使っていたときに愛用していたのがフリーソフトの「縮小専用」だった。
PhotoShopを持っているが、いちいち起動して圧縮するのが面倒。

ブログやHPなどはパパッと処理して、はい終わりと行きたい。

しかたがないから、他の方法で画像を縮小しようかと思うがその方法がよくわからない。
ネットで調べてたら、なんとMacでも動作する「縮小専用」があるではないか!

「縮小専用Air」
http://labo.i-section.net/shukusen-air/

AdobeAirを使っているらしい。早速インストールして使ってみた。

うんうん、これこれ。手軽で非常によろし。

WinでもMacでも何でもいい。手軽で簡単なのが一番。

2012年10月23日 (火)

readOnlyにはまった

ひさびさにはまった。

他人が書いたプログラムを移植している。けっこうしんどい。

そのなかで、ある条件の下でフォームのinput要素の値をジャバスクリプトで
設定してから送信するという凝ったページがある。

組み合わせが、2×3×3通りもあるので複雑だ。
このアプリはカットオーバーしてから順調に動いていた。

ところが、この数日。
更新できないとのクレームが散見するようになった。

調べてみると、ある組み合わせの場合にinput属性の「0」が送信されていない
ということが判明した。

もともとの作成者のジャバスクリプトは順調に動いている。

おかしいと思いながらよくよく見ると。

input属性にdisabledを指定していた。valueは0にして。

当然のことながら値は送信されない。だからupdateが失敗する。

バグだった。

しかたがないのでreadonly属性を使うことにした。

ところがである。うまくいかない!

いろいろ触っていて、わかったことがある。

Firefoxでは小文字のreadonlyでいけるが、IEだとreadOnlyでないといけない。

readOnlyとOが大文字でないといけないのだ。

見事にハマってしまった。

3時間は無駄にしてしまった。
昔、そんな記事を読んだ記憶があるが覚えていない。

めっちゃ疲れたが、それもこれも久々にWEBアプリに挑戦したからだ。

しかし、よい刺激を受けた。使っていない脳の部分が熱く感じる。

ま、そんな気分。

まだまだハマりそう。

2011年12月30日 (金)

ハイブリッド郵便が出たんやね。早速登録してみた。

リーダーで拾い読みしてたら、「ハイブリッド郵便」なるものがサービスされるとか。
早速、サイトを覗いてみた。
http://www.livecard.jp/

なるほど。
写真を撮って、そのまま登録した住所あてに郵便はがきが郵送されるのだそうだ。
1枚120円也。

ちょっとした出張や旅先からはがきを出すのに便利だ。
昔はいつもハガキか50円切手を持ち歩いていて、その土地の絵葉書などに直筆で
メッセージをしたためて投函していた。

このサービスは、その場で撮影した写真を添付して送ることができるというのがミソ。

今度、登山の折に、山頂から写真を撮ってハガキにして送ってみようかな。
いろいろなことを考えつく人がいるもんだ。




2011年5月26日 (木)

ターゲットシステムを作る

ユーザーとの何気ない会話から、「ターゲットシステム」を作ることにした。

私の勤める会社では、複数の会社が同じ顧客層に対して商品のプロモーションを展開している。
当然、顧客データベースは、同じものを使っている。

重要顧客には、データベースにフラグを立てて管理する。
しかし、重要フラグだけではなかなかうまくマーケティング活動ができない。

商品ごとにターゲットとする顧客層が違うし、おなじターゲットにしてもレベルを設定して管理しないといけないことがあるのだ。

こうして、データベースは膨れ上がる。
また、顧客に対するターゲッティングは、本社主導のものと、支店主導のもの、あるいは、個人の設定するものがあるので複雑になる。

これが一社だけだったらよいが、複数の会社となると管理が大変だ。

現在は、営業マンの一番多い会社のいわゆる「重要顧客登録システム」なるものを使っている。
しかし、システムの規模が大きくなってしまって、関連会社用にカスタマイズするのが追いつかない。
重要顧客の選定のための資料の準備が手間がかかるのだ。

というより、それらの中規模な会社のためにカスタマイズなんかやってられない。

こうして、力関係で劣る小さな会社のスタッフ部門は途方に暮れることになる。

仕方がないので、エクセルで作った「顧客リスト」を作成して、メールで配信してメンテナンスするという涙の出るような作業を行うのである。

いつもなら、聞き流すところだが今回はなぜか二つ返事でOKしてしまった。

理由は簡単。ひらめいたからである。

私はエバーノートを使っているが、これをフレキシブルなターゲッティングシステムに使えないかと考えた。

エバーノートの特徴の一つである「タグ」。
自由に作れて、自由に情報に張り付けることができる。

これを、顧客のターゲッティングに応用してみたら面白いと思った。

[1]  「タグ」は、すなわち「フラグ」と考えて、スタッフ部門が好きなだけターゲッティング用の「タグ」を作る。

[2] 営業マンは、顧客の照会システムに似せた登録画面から、これらの「タグ」を好きなだけ張り付ける。

[3] 「タグ」には、好きな名前を付けることができる。例えば「2011 重要」とか。
こうして設定したタグはそのままデータベースに入れておけば、年度ごとのターゲッティング活動の履歴も追うことができる。

毎年、重要顧客の見直しの行事にシステム部門が翻弄されることはない。
どんどん、追加してもらえればよい。

[4] タグだけの管理テーブルを作っておく。
顧客データベースには、顧客IDとタグIDだけの簡単なテーブルだけを行持ち(縦方向)で持管理する。従来のような列持ち(横展開)のテーブルだと、列項目の追加に苦労する。
プログラムの修正が必要になるのは必至。

[5] 関連会社は共存できる。
一人の顧客に対して複数のタグがつけられることだってあるだろう。
それも連携するうえで重要な情報だ。

[6] 登録したタグデータは、顧客データをセットして、BIツールですぐにアウトプット。

登録したら、すぐに活用できるようにしないといけない。アウトプットまで時間がかかるようでは、ユーザーにそっぽを向かれる。

とまあ、こんなことを考えて作り始めた。

言語は、PHP5.1、MySQL5.1、Apache2.2。

データベースの設計に1日。
プログラムの概要設計2日。
詳細設計は、無し。作りながら考えるのが私のスタイルだ。
すでに、昨日。管理者画面の制作は終了した。
タグを自由に登録することができる。うん、まあまあかな。

今日は、営業マン用の画面制作。

ちょっと苦労したがタグを登録する寸前まで完成。(90%)
アジャイル開発を信条とする身なので、1週間でプロトタイプを完成させるのだ。

ユーザーインターフェイスを意識したあまり、Ajaxを駆使したつくりになってしまった。
jQueryがなかったら、どんなに大変だったろうと思う。

なかなかの出来だ。(自画自賛? 売れそう!)

明日は、ユーザーに見てもらおう。

待っててな。助けたるで。

という気持ち。

#b1w0008




2009年4月19日 (日)

どんなところにも工夫の余地はある

先だって、私が作っているWEbアプリに要望があった。

それは、名字を入力するとAJAXを使って社員一覧が表示されるプログラム。
社員は1万人近くもいる。
だから、その人の所属する部署の人にヒットしても一覧上ではかなり下に表示されるので不便だというのだ。このAJAXプログラムは、当初はみんなに感謝された。
とても便利になったし、快適だと言う。だから、そんなもんだと思っていた。

第一感。そんな要望。聞いてられない。
ワンクリックでリストが表示されるようにしているわけで、その人だけの要望を聞くわけにはいかない。ましてや、その人がどの所属の人の名簿をみたいのかが不明なのだ。
その人の所属している人を自動的に呼び出すか?それは無理。
だって、その建物には所属の違う人がたくさんいる。

一瞬。できません。と答えかけた。

でも、ふと。思い直した。無理な要望も聞いているうちになにか発展があるかもしれない。

で、いろいろ考えたら思いついた。

社員名を入力する欄に「姓」だけではなく空白をいれて、「姓+空白+支店名」を入力してもらうように設計した。

なんということのない発想だが、これが受けた。

佐藤さんや田中さん、鈴木さんなどの多い名字の人を数名に絞り込めるのである。

自分で入力してみてもわかったのだが、便利。

技術的にも、入力したワードを空白で分割するだけのこと。

それぞれ、クエリーに割り当てるだけだった。

私は自分の技術の手止まりを恥じた。

ユーザーのどんな要望にも、必ずなにかある。

どんなわがままな要望にもプログラム上の工夫を促すなにかがある。

ほとんどのユーザーは我慢強くアプリケーションを使ってるのだ。

明日からもっと真剣にユーザーの意見を聞こうと心に決めた。

2009年3月10日 (火)

横並びリンクをボーダーで区切る

リストタグを使ったメニューでは横並びにするためにおきまりのCSSの設定がある。

先日、こんな設定を知ったのでメモ。

こんなメニューリストがある。

<div id="menu">
<ul>
<li>ああ</li>
<li>いい</li>
<li>うう</li>
<li>ええ</li>
<li>おお</li>
</ul>
</div>

それをこのようにスタイルシートで指定する。

div#menu {
   overflow:hidden;
   _height:1.5em; /* for IE6 */
}

ul {margin-left:-6px;}
li {padding:0 5px;display:inline;border-left:1px solid #666;}

  • ああ
  • いい
  • うう
  • ええ
  • おお

なかなか洒落てる。

Li要素にpaddingを指定して、左側にのみボーダーを指定する。
そうしておいて、paddingが5pxでボーダーが1pxだから、ul全体の左マージンを6pxマイナス指定する。(これをネガティブマージンと呼ぶ)
しかし、全体はoverflow:hiddenを指定しているから、一番左側のボーダーだけはみ出して非表示になる。

よく考えたモンだ。感心したのでメモ。
これからはこれ使おうかな。