トップページ | 2008年6月 »

2008年5月31日 (土)

エクセル2003でDB更新その2

先日、エクセル2003でDB更新が成功したと書いたがバグが出た。

バグというより、エクセル2003のおっせっかいな仕様のために意図しないものまでアップロードされてしまうことが判明した。

ふりがな。

XML化したら、非表示になっていても「ふりがな」がXML化されてしまうのである。
エクセル2003では、日本語入力した場合は「ふりがな」がセルに仕込まれてしまうのである。

このふりがな対策には、マクロで削除する方法が簡単だが、ユーザーにいちいちこのマクロを実行してもらうのでは面倒だし忘れられてしまう危険もある。
(だいいち、そんなことユーザーは覚えていない)

ということで、PHPスクリプトを少し変更した。

こんな感じだ。
フォームの部分は変更なし。

<form method="post" action="" enctype="multipart/form-data">
<table>
<colgroup><col width="150"><col width="100"><col width="*"><col width="1"></colgroup>
<tr>
<td class="odd">アップロード:</td>
<td><input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
    <input type="hidden" name="act" value="admin_mondai_upload" />
    <input type="file" name="file" size="30" /></td>
<td>
必ずアップロード専用のExcelファイルを使用してください。
</td>
<td>
<button style='width:63px;' type='submit' name="btn" value="送信">
<img src='img/btn_set.png' alt='設定' width='63' height='25' /></button>
</td>
</tr></table>
</form>

フォームデータを受け取ってDBに更新する部分。

      if($_FILES["file"]["tmp_name"]) {
        $dom = domxml_open_file($_FILES["file"]["tmp_name"]);
        //Excelの行レコードをすべて取り込む
        $rows = $dom->get_elements_by_tagname("Row");

        for ($i = 0; $i < count($rows); $i++) {
          //行ごとのセルを取得する。
          $cells = $rows[$i]->get_elements_by_tagname("Cell");
          $datarow = array();
          foreach($cells as $cell) {
            //ふりがなデータを排除するためにDataタグのみ抽出する
            $celldata = $cell->get_elements_by_tagname("Data");
            foreach($celldata as $value) {
              //ExcelのXMLはUTF-8でエンコードされているためSJISに変換する
              $datarow[] = mb_convert_encoding($value->get_content(),"SJIS","UTF-8");
            }
          }
          $data[] = $datarow;
        }
      }

エクセル2003では、エレメント「Cell」の下に複数のエレメントを含む。
なので、「Data」エレメントだけを選んでget_contentで内容だけを取り出した。

とりあえず、このままで動く。

php5に書き換えないと...。

2008年5月28日 (水)

サービスを売る

クライアントとの打ち合わせ。
一般的な食材をネットで売りたい。
モノはよい。商品には自信がある。

しかし、近くのスーパーでも購入できる食材をネットで買ってくれるのか?

答えはノーだ。

ならば、付加価値をつけるしかない。

消費者に理解してもらえるような付加価値を。

じゃあ、サービスを売ろう。ということになった。

食材を利用するシーンにあわせて出前する。

これならまだサイトの作りようもある。

ここまでで今日の話は終わり。
もっと内容を膨らませてから次回につなげる予定。

2008年5月27日 (火)

エクセル2003でDB更新

業務系のアプリを作成することになった。

データベースはMySQL。
PHPで作成した画面からエクセル2003のファイルをアップロードしてデータベースを更新するというシンプルなアプリケーションである。

通常だと、ファイルはCSV形式にしてからアップロードするところだけど、今回は違う方法にトライしてみたので記録しておく。

方法は以下のとおり。

[1] データベースの項目をエクセル2003で作成しておく。
  つまりテンプレートになる。
[2] これをXML方式で保存する。これがミソ。
[3] ユーザーはこのXML形式のデータをエクセル2003で入力する。
  もとから、エクセルで変換してあるので拡張子を見なければ、XMLファイルだとはわからない。
[4] 入力し終えたら、phpで作成したアップロードの画面からアップする。
[5] php側では、アップロードされたファイルをDOM_XML関数でパースしてセルのデータを配列にしてからデータベースに書き込む。

簡単な流れは以上。

今回扱ったphpは4.3.0。(なので、ちょっと苦労した。)

ファイルをアップロードさせるところはこんな感じ。

<form method="post" action="" enctype="multipart/form-data">
アップロード:
<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
<input type="file" name="file" />
必ずアップロード専用のExcelファイルを使用してください。
<input type='submit' name="btn" value="送信" />
</form>

受け取るPHPではこんな感じ。

if($_FILES["file"]["tmp_name"]) {
        $dom = domxml_open_file($_FILES["file"]["tmp_name"]);
        //Excelの行レコードをすべて取り込む
        $rows = $dom->get_elements_by_tagname("Row");
        for ($i = 0; $i < count($rows); $i++) {
          //行ごとのセルを取得する。
          $cells = $rows[$i]->get_elements_by_tagname("Cell");
          $datarow = array();
          foreach($cells as $cell) {
            //ExcelのXMLはUTF-8でエンコードされているためSJISに変換する
            $datarow[] = mb_convert_encoding($cell->get_content(),"SJIS","UTF-8");
          }
          $data[] = $datarow;
        }
        //DBに書き込む処理。
}

ちょっとベタな書き方だけど、うまくいった。
ユーザーにはデータベースの知識がないのでアクセスなどはなかなか使いこなせない。
いちいち、画面から1件ずつ入力させるのも時間の効率も悪い。
ならば、エクセルを使って一括更新。(と考えた)

エクセル2003とXMLの組み合わせも利用できそうだ。

2008年5月26日 (月)

単価の安いものをシンプルに売る

単価が500円未満の商品を専門のサイトを作って売りたい。
それもたった1アイテムしかない。
もちろん、他にも商品はある。

けれども、担当者はその商品が売れると信じている。

だから、私は注文を受けた。
もう、1ヶ月前の話である。

なんだ、簡単じゃないか。と思ったら大間違い。

美しいデザインを採用して作った。
しばらく眺めていたが、ボツにした。

きれいだが売れないだろう。そう思った。

最初にクリックしてから、他のページまで2秒ほど。
その間に、商品の説明を読んでもらい、気に入った人に購入してもらわなければならない。

自分だったら購入するか?を自問自答しながら何度も作成し直した。

できあがった作品は、従来の作品とは違って、「ベタ」である。
「ベタ」とは大阪弁で、しゃれっ気もなく、単刀直入でわかりやすいという意味。

いきなり、商品のコンセプトから入る。それも大きな文字で。
嫌でもクリックした人の目に飛びこんでくる。
これで、最初の1秒は見てもらえるだろう。
このサイトが何をしようとしているのか。

できるだけ、やさしいひらがなを使っている。
注意を向けたユーザーは画面の下半分をみて次にすすむというシナリオ。
とにかく2秒以上はとどまらせたい。

Flashも採用しなかった。ユーザーのほとんどは見飽きている。
見飽きないのはユーチューブなどの動画くらいだろう。

クライアントに気に入ってもらえるかどうかは別。
だめでも自費でやりたいと考えている。

もし、うまくいったら、私のテンプレートに加えよう。
ちょっと楽しみ。

2008年5月24日 (土)

キーワードをチェックする

WEBサイトの作成では、キーワードの選定は欠かせぬ技術となってきた。
10年ほど前からサイト作成には関わってきたが、Googleを初めとする検索エンジン対策が重要視されてきたのはこの数年のことだと思う。

WEB制作会社もこの検索エンジン対策(SEO対策)を売り物とするところも多い。

売上増進を目的としてサイトを作成している企業にとっては、アクセス数が増えるのは大歓迎。

ネットショップでもなんでも、とにかく見てもらわなければ売上につながらない。

とにかく検索エンジンに引っかかりさえすればよいと考えて、キーワードをちりばめたサイトが多く見られたのは数年前。今でも、そんなサイトを見ることもある。

しかし、そんな単純なことで検索エンジンの上位になったのは昔のこと。
今では、もっと複雑になっている。
リンクや更新頻度、連携するキーワードの出現順番、さらにはHTMLの構成など、サイトを評価する項目はたくさんある。

それでも、そのサイトのキーワードの選定はしっかりしておくに越したことはない。

どのキーワードを選ぶかはサイトの内容を十分吟味して決める必要がある。
その際には次のサイトでキーワードをチェックしている。




2008年5月21日 (水)

Expiresの設定

昨日の続き。
高レスポンスを実現するために一工夫。

画像のリクエストを無くすために、有効期限をつけて送り込むようにする。

サーバでセットしとくと、クライアント(すなわちパソコン)から、画像のロードのリクエストが来ない。

ええっとapacheの設定はと。

確か、mod_expiresだったっけ。

<filesMatch "\.(gif|jpg|png)$">
ExpiresDefault "access plus 1 years"
</FilesMatch>

これで画像は2回目からはリクエストがなくなるので応答は速くなるはず。


HTTPリクエスト

今、私が手がけているWebアプリケーションがある。

短時間に50数名が集中的に使うシステム。

なんとかレスポンスを上げたい。
データベースはMySQL。言語はPHP。Webサーバはapache 2.0。

今日は、お金のかからない方法でレスポンスを上げた。

単純にHTTPリクエストを減らす。

これだけである。

今、手がけているトップページはリクエストがなんと27もある。
html =1
CSS=6
画像=10
スクリプト=10

こんな感じ。

それで、とりあえずCSSを一本にまとめることにした。
CSSはモジュール化してあるので、もったいないような気がするが、ユーザーへのレスポンス向上が優先。
こうすれば、CSSのリクエストが6から1に減る。これだけで何ミリ秒くらいは応答速度が減るだろう。

明日は、スクリプトを1本にまとめよう。
そうすればもっとリクエストが減る。

あのGoogleは話によるとリクエスト数は6だそうだ。
速いはずだ。

2008年5月19日 (月)

PowerXKoolMoves6

たまにFlashの作成を頼まれることがある。

最初にFlashを作ったのは今から8年も前のこと。

その当時は、貧弱なマシンでコツコツと作っていた。

いまでは考えられないくらい時間をかけて。

最初の頃だからそんなにうまくない。

デザインの専門家でもないので、独学でやる。

ひとつのFlashを作成するのに1ヶ月くらいかかったこともある。

今、そんなことしてたら、いつまでたってもサイトができない。

といって、それを他に投げたら時間もお金もそれなりにかかってしまう。

他に依頼すると目が飛び出る?ような金額の見積がやってくる。

それなりに腕のよい人だったら当然の見積でも、インターネットに詳しくない事業主からすれば、なんでこんなに高いの?と不審に思うのが普通。

できるだけ経費を抑えて、それなりのサイトにしなければならない。

時間も足らないし、テクニックの習得もしているヒマがない。

ならばと、リッチコンテンツ制作ツールを購入した。

限られた時間内でそれなりにFlashができあがる。

以前にも同じようなFlash Makerというソフトを購入した。

1年ほど使ってみたけど、結局使わなくなってしまった。

現在のニーズと少し合わなくなってきているように感じたためだ。

バージョンアップすれば、それなりに使えただろうけど、そのまま。

で、今回、凝りもせず、再び同じようなソフトを買ってしまった。

なんとなく、好みにあう。

使いこなすにはまだまだ時間がかかるのかも。

PowerXKoolMoves6

デュアルブートで大変な目に

普段なにかとLinuxなどを試す機会が多い。

で、最近話題のubuntuという1CDで使えるリナックスをいろいろ試している。
(1CDというのは、たったCD1枚でパソコンが起動してOSが使えるという意味。)

私の感想では、ubuntuはいままでのLinuxより親切な感じがする。
画面もシンプルだし、勝手にインターネットの設定もやってくれるし使いやすい。
メールやオフイス2003みたいなツールなどもフリーのopenoffice.orgというソフトが標準で付いている。
全部、フリーなのでタダ。

でも、日頃はWindouに慣れてるので、このubuntuを使いこなすにはしばらく時間がかかりそう。

CDから起動して使うとインターネットからファイルなどをダウンロードしたりするので、少々遅い。
じゃあ、ということで、このCDにはWindowと共存できるようにハードにインストールできるようになっている。
パソコンの電源を入れたときに、「Windows」か「ubuntu」か、どちらを使いますかと聞いてくれる。どちらかを選択すれば、そのままそのOSが起動する。(これがデュアルブートという方式)

せっかくだから、一度試してみようと、私のXPマシンにインストールしてみた。

とりあえず、成功。ただ、ジッとCDのいうとおりに指定して待っているだけ。

実に簡単。おっ、ubuntuが動くぞ。(当たり前か)

いろいろ試してみたりして使うこと30分。

じゃあということで、電源を入れ直してみると、なかなか先に進まない?

ようやく起動画面にたどり着いてから、XPを選択しても起動しないのである。

顔が真っ青になった。

なにせ、仕事上のデータがたくさんある。もちろんバックアップはとっているけど...。

記憶の限りのトラブル経験を思い出して、3時間。

ようやくそれらしい原因がわかった。

なんと、外付けハードディスクが原因だった。

ubuntuを使った後に、すぐに再起動したときに、この外付けハードディスクはどういう理由でか、そのものがフリーズしているのである。
見た目は普通に電源が点灯しているし、ハードの音もしている。
以前にも似たような経験があったので、外付けハードディスクのUSBを抜いて、電源をオフにしてから、再度、USBを挿してから電源をオン。

これで無事にOSが起動することになった。
ubuntuにマウントしておけばこんなことにはならないのかもしれない。

しかし、今は原因を究明している時間が惜しい。

だから、デュアルブートは解消することにした。

そこで、ハマった。

デュアルブートのやり方は、ネットにたくさん出ているのに、解消の仕方はあまり出ていない。
ヘタするとWindowsまでも起動しなくなってしまう。

そこから、2時間。悪銭苦闘して、なんとかデュアルブートを解消した。

せっかくなのでその手順を記録しておく。

[1] XPのCDを用意する。(C:にi386フォルダがあるなら、なくてもよいかもしれない)
[2] PCが起動しているときに、XPのCDを入れる。
[3] スタートボタン->ファイル名を指定して実行
[4] E:\I386\WINNT32.EXE /cmdcons と指定する。(私のPCでは、CDのドライブはE)
[5] これで「回復コンソール」がパソコンにインストールされる。
[6] 次にパソコンを再起動する。
[7] 最初の画面に、XPとubuntu、それに回復ツールの3つのメニューが表示される。
[8] 「回復ツール」をカーソルで選択してエンターKeyを押す。
[9] すると、キーボードの指定などを聞いてくるので、日本語キーボードを選択する。
     (私はUS配列のキーボードを使っているけどこの場合はなんでもよい)
[10] 次の画面でアクセスしたいOSは何かと聞いてくる。
      1.C:\Windows というような感じ。
[11] そこで、1を選択する。他にないので。
[12] 次にパスワードを聞いてくる。これは、アドミストレーターのパスワードである。
   設定していなければそのまま。
[13] C:\Window > というようなプロンプトが表示されるので、fixmbrと入力してエンターKey。
[14] ここで警告がでる。確認されるのでyと押す。
[15] すると、正しくmbrに書き込みされました云々のメッセージがでる。
[16] exitと入力して、回復コンソールから抜ける。
[17] 再びメニューに戻り、XPを選択して起動する。
[18] プログラムの追加と削除を選んでubuntuを削除する。
[19] PCを再起動する。
[20] すると、成功していたら、通常のXPと回復ツールの二つを選択する画面になっている。
[21] 再びXPを起動して、こんどは「回復ツール」を削除する。
      「回復ツールの削除」は非常にデリケートなやり方なので、ここでは記述しない。
   ヘルプから「回復ツールの削除」として検索すると詳細なやり方が書いてある。
[22] 再びPCを再起動する。
[23] メニューを表示せず、通常通り起動したら成功。

やれやれ。大変な作業だった。

デュアルブートは、上級者が扱うモードだ。
確かに便利だし、気が利いている。

でも、元に戻すのはある程度の専門知識がないとむずかしい。

ubuntuは当面はCDで起動するか。
それとも、古いノートパソコンにクリーンインストールして使うという手もある。















2008年5月15日 (木)

ペンタブレット

WEB系の仕事をしているとパソコンを使う時間が長くなります。

私は基本的に自分の手に触れる順番にお金をかけてグッズを買うようにしている。

最初に手に触れるのは?

例えば、キーボード。次にマウス。

マウスは、いろいろ買い換えたけどすぐに駄目になる。

今はロジテックの無線マウス。充電型のタイプを使っている。

でも、画像の修正作業などはマウスでは限界がある。

細かな範囲指定などはマウスでは微妙にずれてしまう。(テクがないからか)

そこで、思い切ってペンタブレットを購入した。

某大型量販店で物色すること数時間。

「WACOM Bamboo Fun CTE-450/S0 」というペンタブレットをお試しで買ってみることにした。1万円少々の買い物。

最初はちょっとおぼつかなかったが慣れてくるとなかなかよい。

なにしろ、私はマウスよりも鉛筆のほうが経験値が多い。

驚いたのが、このペンタブレットにはフォトショップエレメント 5.0が付いていた。

このソフト自体でも1万ちょっとするのである。

よく考えたら、フォトショップエレメントを買ったらペンタブレットが付いてきた。っていうこと。

それにしても不思議な入力装置だ。

ペンの先には細いプラスチックのような芯がはいっているだけ。電池があるわけではない。
これで、タブレットの上をなぞるように描くだけでパソコンの画面上に線が引けてしまう。

なぞるといっても、実際には数ミリ浮かして動かしているので圧迫感はない。

初めてつかうペンタブレットだが、これで画像加工してみると、確かに楽である。

フムフム。

画像加工の主たるソフトはPhotoShop CS2を使ってるんだけど、今まで宝の持ち腐れだった。

もう少し、勉強してスキルアップしよう。

鋳物系サイトの依頼

先日、鋳物系サイトのリニューアルの依頼をいただいた。

従業員30名ほどの企業。
最初に立ち上げたサイトはもう5年間も放置されたまま。
そろそろ、リニューアルしないといけない。という思い。

確かに見てみると「これは...。」と絶句してしまった。

市販ソフトのおまかせで作成しているので、一見して初心者が作ったものとわかる。
それだけなら、別にどうということもないけど、デザインがばらばらでリンク先がとぎれているのである。だから、元のページになかなか戻れない。
きっと作りかけで担当者がいなくなったか、なにかで更新が停止してしまったのだろう。

しかし、この会社。資料をみると、けっこう技術力があるし、それに納期が短い!

他社より、優位点がたくさんあるのである。

この点をしっかりと訴求すれば、BtoBサイトとして十分やっていけると思った。

...結局、この話は私の方から辞退することにした。

よく考えてみると、他に3案件も掛け持ちしている。だから制作時間がかけられないのである。
今でさえ、超寝不足だし、体力も続かない。

適当にやってしまうと、結果的によいサイトにはならないということを経験則で知っている。
それに、そういう作り方をしてしまうと相手に迷惑をかけてしまう。

興味ある案件だったのに残念!

依頼をいただいたIさん。すみませんでした。

2008年5月11日 (日)

業務日誌を開始します

今までノートに記録していた業務日誌をブログにアップすることにしました。

出先でモバイルノートを使うことが多いのですが、確認事項に手間取ったりすることが多くて困っていました。
さらや技術的な情報もあちこちに記録しているので情報がバラ
バラ。

今日からWeb系診断業務に関する事項をアップしていきます。
業務を整理するよい機会かな。

ココログは初めてですが、全体のデザインなども豊富ですし、たくさんある機能も少しずつですが試していきたいと思います。

トップページ | 2008年6月 »