<< 1 | 2 | 3 | 4 | 5 >>

2005年11月20日

ITmediaニュース:ワコール、不正アクセスでカード情報流出

 ワコールは11月19日、同社のECサイト「ワコールオンラインショップ」から4757人分の個人情報が流出し、うち1899人分にクレジットカード情報が含まれていたと発表した。サイトを運用しているNECネクサソリューションズのサーバが不正アクセスを受けたのが原因。

またですか。
ワタクシも人ごとではないので、まずは不正アクセスされたサーバーを調べてみる。
そして、ここも不思議と、当然のようにWindows ServerにIIS。
価格コムもOzmallもWindows&IISでした。

Microsoftがアホなのか、WindowsプログラマやWindowsサーバー管理者がアホなのか。
たぶん両方ですね。

投稿者 Utayume : 18:00 | トラックバック (0) | 05 Work(Perl, PHP, etc)

2005年11月15日

本日リニューアルされたようで、サーバー増強で、混雑時にアクセス制限するという事態は回避されるそうです。
が、サイトを見てみると、構造的に最悪。
アクセシビリティが全く考えられていません。
例えば、左のメニュー。これはメインのメニューであり、最も大切な場所だと思いますが、これがJavaScriptで書かれており、このメニューのクリックでしか商品カタログに進むことができません。
今確認してみたところ、FirefoxではJavaScriptメニューの第一階層はクリックできますが、第二階層(化粧品のメニューに存在します)はクリックしても反応しません。ということは、Firefoxでは化粧品カタログそのものが表示できないということになります。最低ですね。
サイト作成の常識として、メニューをJavaScriptやFLASHで作るのなら、それらに対応できない環境(例えば携帯ブラウザ等)のためにも、テキストリンクを用意すべきです。

こういうサイトを作るのは、大抵Windowsしか使ったことがないデザイナーやプログラマです。(というのはワタクシの偏見です)

とりあえず、アフィリエイトリンクを貼りつつ、苦言を呈してみました。(笑)

やっぱりDHCだね

投稿者 Utayume : 23:48 | コメント (2) | トラックバック (0) | 05 Work(Perl, PHP, etc) /09 Shopping

2005年11月10日

仕事でカレンダー表示に関連したプログラムを作ったので、ついでにphpによるカレンダー作成の基本的な部分だけ紹介しておきます。大して難しいことではありません。

カレンダーをHTMLで作る場合、現状ではHTMLのtableを使って表組みにするか、それぞれのセルをdivで囲ってCSSで表組みにするか、大まかに二通りありますが、CSSでの表組みはCSS自体が複雑になってくるために、今回はtableを使っています。

htmlで作る際のtable構造は、「<td>日にち</td>」を7個出力して、日曜日の時は「<tr><td>日にち</td>」、土曜日の時は「<td>日にち</td></tr>」とすれば1週間が1段のよくある升目のカレンダーになります。日付を1日ずつ出力する際に上記の3種類に振り分けていけばよいわけです。

組み込み関数の豊富なphpにはカレンダーを作る上でも有用な関数が用意されています。指定の日付の曜日を取得するためには、

$youbi = date('w',$day);

とすると、$youbiには$dayの曜日を示す数字が入ります。日曜日が0で月曜日が1と順に増えていって土曜日が6です。
また、指定月の日数を取得するには、同じくdate関数を使い、
$nissu = date('t',$day);

とすると、$nissuには$dayの月の日数(28から31の数字)が入ります。

これらの関数を利用して、月の日数分を出力日に応じて前述の3パターンに振り分けて出力していきます。

しかし、上記のままプログラムすると月の第1週と最終週のtdの数が7個に満たなくなってしまいます。月の1日目が日曜日の場合ならそれでもいいのですが、当然ながら1日が月曜日の月もあれば、土曜日の月もあるので、毎月1日の曜日によって日にちが入っていない空欄のセル(「<td> </td>」)を出力しなければいけません。また、同じように月の最終日が土曜日で終われば問題はないのですが、他の曜日で終わる場合は、これも土曜日までの余った曜日を空欄のセル(「<td> </td>」)で埋めなくてはいけません。
この処理にも上記のdate関数を利用し、

【最初の週】$day1wdはdate関数で取得した1日の曜日の数字

for($n = 0; $n < $day1wd; $n++){
print "<td> </td>";
}

【最後の週】$dayLastwdはdate関数で取得した最終日の曜日の数字

for($n = $dayLastwd + 1; $n <= 6; $n++){
print "<td> </td>";
}

とします。

以上です。これだけできれば、カレンダーとして使えるものが表示できます。
後は日曜日を赤くするとか土曜日を青くするとか今日をハイライトするとか、必要に応じていろいろ細かい処理を加えていけばいいと思います。

これらの処理を組み込んで作ったのが以下のサンプルです。URLの引数として表示月を指定すればその月を、指定が無い場合は今月を表示します。さらにカレンダー内部で前月と次月に移動できるようにしてあります。

カレンダーサンプル(月指定なし)を表示
カレンダーサンプル(2005/8を指定)を表示
上記のサンプルソース

ちなみに、祝日を表示させるのは意外に難しいです。いや、難しくはないのですが、祝日は必ずしも毎年決まった日でははない上に、新しく制定されることもあるために、メンテナンスフリーで祝日を表示することはプログラムとしては不可能です。現実的には、祝日データを別途に持たせて、将来の祝日の日付がわかったときに、手動でデータ更新していく他はないと思います。

さらについでに言えば、このカレンダーは半永久的に使えるかと思いきや、32ビットOSの宿命として、現状では1902年1月から2038年1月までしか表示できません。2038年問題ですね。ま、それまでには64ビットOSが普及してくると思いますが。


※ものすごく余計なお世話かもしれませんが、Web上にあるこれらのサンプルスクリプトのカレンダーのスペルが「calender」となっているものが意外に多くてちょっと恥ずかしいです。正しいスペルは「calendar」です。

投稿者 Utayume : 20:12 | コメント (2) | トラックバック (0) | 05 Work(Perl, PHP, etc)

2005年10月25日

php関連を再インストールしたからだと思いますが、自鯖のpearでエラーが出るようになってしまいました。
pearコマンド自体のエラーのようでpear listでもpear upgrade-allでも何でも以下のようなメッセージが出ました。

$pear list
Fatal error: Cannot instantiate non-existent
class: pear_command_auth-init in /usr/share/pear/PEAR/Command.php on line 271

原因は不明ですが、とりあえず解決策がpear公式サイトのここに投稿されていたので、試しにやってみたら正常動作するようになりました。
/PEAR/Command.phpの263行目を以下のように変更するだけです。

if ($entry{0} == '.' || substr($entry, -4) != '.php' || $entry == 'Common.php' || (strpos($entry,'-') !== false)) {
※「 || (strpos($entry,'-') !== false)」を追加

正常動作したところで、pearのバージョンを見てみると、

$ pear list
Installed packages, channel pear.php.net:
=========================================
Package              Version State
Archive_Tar          1.1     stable
Auth                 1.2.3   stable
Auth_HTTP            2.1.6   stable
Auth_SASL            1.0.1   stable
Console_Getopt       1.2     stable
DB                   1.7.6   stable
HTML_Common          1.2.2   stable
HTML_Menu            2.1.1   stable
HTML_QuickForm       3.2.5   stable
HTML_Template_IT     1.1     stable
Mail                 1.1.9   stable
Mail_Mime            1.3.1   stable
Net_SMTP             1.2.7   stable
Net_Socket           1.0.6   stable
Net_UserAgent_Detect 2.0.1   stable
PEAR                 1.3.6   stable
PEAR_Info            1.6.0   stable
PHPUnit              1.3.1   stable
XML_RPC              1.4.0   stable
XML_RSS              0.9.2   stable
XML_Tree             1.1     stable

pearをアップグレードしてみると、現バージョンは

$ pear list
Installed packages, channel pear.php.net:
=========================================
Package              Version State
Archive_Tar          1.3.1   stable
Auth                 1.2.3   stable
Auth_HTTP            2.1.6   stable
Auth_SASL            1.0.1   stable
Console_Getopt       1.2     stable
DB                   1.7.6   stable
HTML_Common          1.2.2   stable
HTML_Menu            2.1.1   stable
HTML_QuickForm       3.2.5   stable
HTML_Template_IT     1.1.1   stable
Mail                 1.1.9   stable
Mail_Mime            1.3.1   stable
Net_SMTP             1.2.7   stable
Net_Socket           1.0.6   stable
Net_UserAgent_Detect 2.1.0   stable
PEAR                 1.4.2   stable
PEAR_Info            1.6.0   stable
PHPUnit              1.3.1   stable
XML_RPC              1.4.4   stable
XML_RSS              0.9.2   stable
XML_Tree             1.1     stable

現バージョンの1.4.2ではCommand.phpのソースが変更になっているので、1.3.6(あるいはその近辺のバージョン)にのみ発生する現象かもしれません。

投稿者 Utayume : 19:43 | トラックバック (1) | 05 Work(Perl, PHP, etc) /Linux

2005年10月06日

あんまり必要な人はいないと思いますが、某旅行会社(インストールすればわかりますが)の海外ホテルを検索するFirefox用検索プラグインを作りました。

--> ホテル検索プラグインをダウンロード

【インストール】
インストーラーを作るのがめんどくさいので以下のように手動インストールしてください。

zipファイル解凍後以下の二つのファイルが作成されます。

・hishotel_key.src
・hishotel_key.gif

この二つのファイルを

Windowsの場合:
「C:\Program Files\Mozilla Firefox\searchplugins」にコピー

Mac OS Xの場合:
1.Firefoxのアイコンを右クリック、あるいはcontrol+クリックのコンテクストメニューから「パッケージの内容を表示」
2.「Firefox/Contents/MacOS/searchplugins」にコピー


もちろん非公式ですので、本検索プラグインについて某旅行会社に問い合わせることはご遠慮ください。

エンドユーザーがこんな簡単に機能追加できるところがFirefoxの素敵なところ。


(10/15追記)
多少修正したので、ついでにインストーラーも貼っておきます。以下からどうぞ。

 --> Firefoxにホテル検索プラグインを追加

投稿者 Utayume : 18:35 | トラックバック (0) | 05 Work(Perl, PHP, etc) /99 Download

2005年10月05日

4797327073自分で作る blog ツール
石川 直人

by G-Tools

目次
第1章 開発環境の準備
第2章 基本的な機能の実装
第3章 blog的機能の実装
第4章 サイト間連携機能の実装

ブログがどのような機能を持ち、それらの機能をどのように実装したらよいかを解説した本。
別にワタクシはブログを作るつもりはありませんが、現在のWebプログラムの主流とも言える、いわゆるWebサービスを自分で作っているサイトに実装するために非常に役に立ちます。
第1章から第3章までは、ある程度(掲示板ぐらい)PHPが書けるプログラマであれば、特に必要ではありません。逆に言えば、PHPやサーバーに関する知識がなければ、これだけを読んでもブログが作れるようには絶対になりません。先にそれらの専門書で学習するべき。
で、この本の最も有用な点が、第4章の「サイト間連携機能の実装」です。例えば更新通知Pingやトラックバックといったブログとして最も特徴的である機能の実装方法が記載されています。
XML-RPCを使った更新通知Pingの実装方法が解説されているのですが、XML-RPCのPHPでの利用に関しては大抵PEARを使って簡単に説明しているサイトが多いのに対し、この本ではモジュールを使わずに自分でXMLを書いてPOSTするという方法で解説しているために、更新通知Pingで実際にどのようなデータがやりとりされているのかが非常に理解しやすくなっています。

このような切り口の解説書は他にないので、なかなか良書だとは思いますが、欲を言えば、前述のように第1章から第3章は要らないので、その代わり、第4章をもっと深く掘り下げて欲しかったと思います。

投稿者 Utayume : 20:18 | コメント (2) | トラックバック (0) | 04 Blog /05 Work(Perl, PHP, etc)

2005年08月26日

楽天トラベル、海外予約サービスの地図検索機能をリニューアル - nikkeibp.jp - 注目のニュース

 海外ホテル予約の際に人気の高い、9カ国14都市の地図を掲載。地図上にある観光名所やランドマークの位置を参考に、周辺にある宿泊施設を探して予約できるようにした。「慣れない都市の予約を簡単に行える」(同社)という。

ワタクシの仕事と関連することなので、見てみたら、なんじゃこりゃ。「地図検索」っていうからGISでホテルの場所を地図上に表示しているのかと思ったら、単にFLASHにエリアへの固定URLを持たせているだけで、技術的にもユーザーの使い勝手にも全く見るものはなく、ニュースになるようなネタでもありません。ホテルの場所が地図上にないんじゃ全く意味がありません。こんなのは5年前のインターフェイスです。
Google Mapsを利用したyoyaQ.comとは雲泥の差。

投稿者 Utayume : 20:10 | トラックバック (0) | 05 Work(Perl, PHP, etc)

2005年08月22日

仕事で作ったECサイトでは、去年の12月から(今年7月からはカード決済も含め)始めて今までに約1万件の申し込みがあったのですが、その中で3件だけ申し込み情報が文字化けして送られてきたものがありました。

USER_AGENTを見てみると、

Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/85.8.5 (KHTML, like Gecko) Safari/85.8.1

が2件で、

Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/85.8.2 (KHTML, like Gecko) Safari/85.8.1

が1件。
どちらもMac OS X v10.2 "Jaguar"でのSafari 1.0なのです。ただし、同じUSER_AGENTでも必ず化けるというわけではなく、上の2つのUSER_AGENTでは13件申し込みがあった内、他の10件は化けていません。

1万件の内3件ですし、Safari 1.0ユーザー自体今後減りはしても増えることはないので、その都度お客さんに対応すればいいレベルではありますが、MacユーザーのWebプログラマのワタクシとしては非常に気になります。

もしこの文字化けがHTMLやプログラムのサーバーサイドで解消できるならば、どなたか方法を教えてください。

個人的にはTigerへのバージョンアップをおすすめしたいところですが。(笑)

※SafariのバージョンについてはWikipediaのSafariの項目が詳しくて参考になりました。

投稿者 Utayume : 12:40 | トラックバック (0) | 05 Work(Perl, PHP, etc) /Macintosh

2005年07月21日

昨日、仕事で作っているサイトにクレジットカード決済機能を付けました。
サイト公開から約1年(構想からは約1年半)、これでやっとECサイトと呼べるレベルになり、機能的にはひとまず完成をみたので、5年近くいたこの職場を離れることを検討中。

こうしてプログラム部分はワタクシが一人で作り上げてきたサイトも、半年後にはリニューアルされて全く使われなくなる予定です。Webの宿命とは言え虚しさを感じます。
しかもそのリニューアルサイトはアウトソーシングなので、ワタクシはノータッチ。つまりはもうワタクシは用なしってことですな。

もともと1日のPVが30万近くあるようなサイトをワタクシが作るのは荷が重すぎましたが、それだけに非常に勉強になりました。

ちょっと愚痴気味のエントリーでした。(笑)

投稿者 Utayume : 02:14 | コメント (2) | トラックバック (0) | 05 Work(Perl, PHP, etc)

2005年06月06日

InfoMaker、RSSの構文チェックサービス「feedAnalyzer」

 InfoMakerは、RSSの構文チェックサービス「feedAnalyzer」アルファ版の提供を開始した。RSSのURLを入力するだけで無料で利用できる。

feedAnalyzer
http://feedanalyzer.com/

Windows用RSSエディタとしてはデファクトスタンダードであるHeadline-Editorを作っているInfoMakerがRSS正当性検証のためのWebサービスをはじめたようです。

今までもRSS Validatorの類ではW3C CSS 検証サービスFeed Validator等いろいろありましたが、仕様が古くRSS2.0にもATOMにも対応してしていなかったり、エラーが出ても英語でどのようなエラーかわかりにくかったりしましたので、feedAnalyzerは使いやすそうな感じです。現在ではATOMにはまだ対応していないようですが、それも期待できそうです。


試しにワタクシがプログラムした某サイトのRSSを検証してみたら、

ひとつが、

問題ありませんでした。

もうひとつが、

item数が 50個あります。
RSS1.0ではitem数に制限はありませんが
15個以内が互換性を維持するための推奨値となります。
特に重大な問題はありません。

となりました。後者の警告は承知しているのでモンダイナシ。

投稿者 Utayume : 13:52 | トラックバック (1) | 05 Work(Perl, PHP, etc)

<< 1 | 2 | 3 | 4 | 5 >>