メイン

PHP アーカイブ

2005年05月02日

ハッピープログラミングのススメ

結局のところ、技術というよりは、コミュニケーション能力が問われるわけです。

仕事とは?

* 技術を習得し、その技術を利用して、お客様に便利なサービスを提供していく。
   これがわれわれの仕事です。
* 技術を追求していくことも勿論大切なのですが、技術だけで仕事ができるわけではありません。
* 何のための開発や制作であるかを忘れてはいけません。
* お客様は、人間であることを忘れてはいけません。
* お客様が困っていることは何でしょう。と自分に問いかけてみよう。
* お客様が怒っていることは何でしょう。と自分に問いかけてみよう。
* お客様が喜ぶことは何でしょう。と自分に問いかけてみよう。
* お客様の声に耳を傾け、じっくりと考えていきましょう。
* 自分がやれる、やれない。というレベルで考えるのではなく、
会社として、どのようにすればできるのか、まずは考えていきましょう。

iPLUSONEのハッピープログラミングのススメ

* プログラミングは知的でわくわくする楽しいことである。
* しかし、そこへたどり着くにはなかなか難しい時代である。
o コンピュータへの要求が多様化しているということが一番大きい。
o 特に初心者は、何からやっていいのか。
o そうはいっても、やれる人はどんどん進んで、やれない人は甘えているだけというのが大きい
o できる人、できない人という括りは、結局は、やる人、やらない人というだけのことだ。
o とはいっても、精神論だけでは解決策が見出せないので
o ソフトウエア開発を事業とするものとしては、なんらかの方針を示す必要がある
o 何でもかんでも、個人任せな会社にはしたくない。
* 初心者が、エンジニアになるために、どういったアプローチがよいか。
* その中で、何が問題になるのだろうか。

* 理論ばかり立派でアウトプットがでないのでは困る。
* 理論と実践のバランスが大切である。
* とにかく実践せよ。実践すると何らかの結果が出る。
* ネットでだれかやったことを鵜呑みにしてはいけない。実際に試して、どうなるか。確認すること。
* 「・・らしい」では、話が先に進まない。
* 「・・だった」。だから、次にどうする。という最終判断までもとう。

* 最初は誰もわからない
* 最初は、知らないことばかりだ。
* 何かを習得しようとすれば新しい言葉の嵐で、それらを調べていくうちに、何を覚えようとしていたのかがわからなくなる。こんな経験はないだろうか?
* 全部を一気に習得することは難しい
* 個々の小さく噛み砕いて、理解できる範囲を狭めていくことが重要
* とにかく、コツコツと蓄積していくしかない。
* 最初からあれこれ聞いていては、煙たがられるだろう。 などと、気を使うことはない。
* ビギナーの特権である。最初から聞きまくれ。
* ただし、すべてを聞くのではなく、聞くポイントを考えてみよう。
* 自分が試せば済むことは、自分でやること。
* 何を聞いたらいいのかわからない。と困っているなら、それを相談すればよい。

2006年08月30日

オブジェクト指向言語におけるクラスと継承 EC-CUBEのクラス構成


いわゆるオブジェクト指向言語とよばれるクラス機能をもったプログラミング言語は、
単にクラスを定義するだけではなく、
生産効率を考えた、拡張性が準備されている。

例えば、継承という機能のおかげで、
将来、どんな拡張が行われるかがまだ未定だが、
拡張を行う場合には、このクラスを拡張してね。
というような構成にしておくことで
既存機能には一切影響を与えずに、拡張することも可能になる。

これは、EC-CUBEについてもいえることである。

クラスのすべてに対して、継承したExクラスが用意されている。
実体(インスタンス)を生成しているのは、このExクラスなわけだが
このExクラスを拡張することで、機能追加ができるようになっている。

ec_class.gif

例えば、商品詳細のページで表示している商品詳細のクラスは、LC_page_detailクラス
このクラスを親クラスとして、LC_page_detail_Exクラスを派生していて、
detail.phpでは、このLC_page_detail_Exクラスのインスタンスを生成している。

2007年12月23日

Flash+PHPのスライドショー dfGallery

dfGalleryというフォトスライドショーを使ってみた。
http://www.dezinerfolio.com/2007/06/07/dfgallery/
フロントエンドがFlash, バックエンドがPHPの組み合わせで、
フルスクリーンへの切り替えも可能。
なかなかスムーズでしかもフリーである。

重要な特色:
* Flickr、Picasa、Fotki、PhotobucketとCustom Imagesの両方に対応するFlash Gallery。
*「Print Screen」を利用可、不可を設定可能。
* 容易にカスタマイズ可能です。
* 完全なScreenモード。
* RSSとCustom Imagesの両方対応している。
* どんなサイズでも対応。
* バックグラウンドで流れるMP3ファイルを指定可能。
* 複数の言語サポート。
* 新しいアップデートが利用可能であるなら、通知する。
* 無料です。

フリーでこれだけできていれば感謝ですね。
ただ、下に表示されるサムネイルの画像も指定しなければならないのだけれど
勝手にリサイズしてサムネイル画像をつくってくれるとよいのだが。
あと、噴出しに出る画像に合せるとへんな部分(左上の一部?)が表示されている。

o 試してみたフォトスライドショー
http://www.iplusone.sakura.ne.jp/photo/dfgallery/

2007年12月24日

MagpieRSS

PHPで利用できるRSSパーサMagpieRSSを使ってみる。

http://magpierss.sourceforge.net/

MagpieRSS 0.52 Now Compatible with PHP 4.3.2をダウンロードしてみる。

と思ったが、PEAR/XML_RSSを利用する。
今後は極力PEARのライブラリを利用する方針。

ライブドアのお天気おねいさんから天気を取得してくる

PHPからXMLパースする方法はたくさんあるけれど、
ここでもPEARライブラリを使ってみる。

Serializer.php
Unserializer.php

をインストールする。

が、できず。

[root@localhost XML]# pear install XML_Serializer
Failed to download pear/XML_Serializer within preferred state "stable", latest release is version 0.18.0, stability "beta", use "channel://pear.php.net/XML_Serializer-0.18.0" to install
Cannot initialize 'channel://pear.php.net/XML_Serializer', invalid or missing package file
Package "channel://pear.php.net/XML_Serializer" is not valid
install failed

ということで、直接ダウンロードしてきて、展開し配置する。

お試しにライブドアで提供しているお天気サービスを取得してみた。
http://weather.livedoor.com/weather_hacks/
天気だけでなく、気温、降水量、風向・風速、日照時間、積雪深なんかも取得できるので
マッシュアップにどうぞ。


Zorg API [zorg.photos.getPhotos]

ようやく辿り着いたが、zorg.photos.getPhotosのレスポンスから必要な情報を取得する。

まずは、PHPのソースをどうぞ。

1回のリクエストでは50件づつ返すので、リクエストを繰り返して、欲しいところを抜き出すこと。
その際、リクエストのパラメータに開始番号(start)が必要になる。

ちなみに、最後に投稿したフォトが1番となり、一番古いのが最後となる。
あと、公開していないフォトは除外されて出てこないので、総数からもはずされている。

これで、すべての情報が整った。

りんたろう




Zorg投稿日時 : 2007/12/23 21:40 撮影日時 : 2007/12/23 21:28

ページ指定で、50枚づつゲットするPHPを作った。その中の1枚を貼り付ければ、上記のようなスタイルで表示されることになる。
しかし、XML_RPCでのMovable Typeへの書き込みがなかなかうまくいかず。これは次回へ延期。

2007年12月26日

Zorgフォト一覧からMTエントリの登録(総集編)

Zorgのzorg.photos.getPhotosは、指定した番号のフォトから50枚の情報を返す。
したがって、4000枚だから80回GETする必要がある。
これをWEBアプリとして動かすのは、危険なので、以下のような仕組みにした。


■get_zorg.php
引数で開始番号を与え、zorg.photos.getPhotosでその開始番号から50件のみ取得し、
1件1行で出力。
フォーマットは、フォトID,タイトル,ViewサイズのURL,投稿日時,撮影日時
カンマ区切りで出力

■ex.sh
get_zorg.phpを起動して、結果をファイルmy_photo.txtへリダイレクト
ループで、4000になるまで、+50づつ。

データ行以外に、HTMLタグが出力してしまっているので
それを取り除く。幸い先頭がフォトIDで、iから始まっているので、iではじまらない行は除外。

% grep ^i my_photo.txt > my_photo_result.txt

これでフォト一覧ファイルができあがり。
このファイルをよみながら、XML_RPCでMovable Typeへ書き込みを行うプログラムを作成した。

ファイルから読み込んだ内容をMovable TypeへXML_RPCで書き登録するPHP

今回、行った問題点を整理しておく。


最初のミステイクは、
$client = new XML_RPC_client( $path, $host, 80 );

$client = new XML_RPC_client( $host, $path, 80 );
としちまった。ホスト、パスという順番だろうという思い込み。
メソッド定義をよみましょう。

XML_RPC_Messagenのメソッドで、記事を投稿するメソッドには、
blogger.newPost
metaWeblog.newPost
の2つがあり、最初blogger.newPostを試した。
こちらはすんなりと成功した。
それもそのはず、引数すくない。
まず、タイトルがない。というか本文の先頭10文字が勝手にタイトルになる。
なんじゃ、この仕様は?記事本文しか登録できない。

で、次にmetaWeblog.newPost
こちらは、ほぼすべての項目の登録が可能。
しかし、嵌った。

投稿日時がまずかった。
//"dateCreated" => new XML_RPC_Value('2007-12-25', "ISO.8601")
これでいけると疑わず、最後までほかをチェックしていたら
'dateCreated'=> new XML_RPC_Value(date("Ymd\TH:i:s",time()), 'dateTime.iso8601')
正しくは、こちらであった。

2007年12月27日

年末残課題




最近MTをはじめてから、カスタマイズに時間をとられ睡眠不足です。
いろいろやりたいことが沢山あるがなかなか反映できない。

ソースコードの表示にSyntaxHighlighterを利用しているが、
これがアーカイブページや検索結果に反映されない。

カレンダーを追加してみたが、アーカイブのリンク先にカレンダが表示されてしまうようになったので、はずした。

あと、Zorgのフォトからエントリー作成計画は、2000件ほど完了。
どうも1000件くらいでサーバにConnectできなくなる。
で、今朝再度チャレンジしてみたが、1件も登録できずという状態。
残り2000件ほどは冬休みに対応する。

聖徳太子は10人の人と話ができた云々いわれているが、
今私は、複数の人と
C,PHP, Java, JavaScript, SQL, bash, perl, ruby, MTタグ, CSS,
そして、りんたろうとは、りんたろう語で会話をしている。

2008年01月12日

全国の路線・駅一覧とgoogle mapのコラボ

全国の路線・駅一覧とgoogle mapを組み合わせてみました。

http://www.iplusone.co.jp/service/STATION/station_map5.php

社内Fedora7環境で作っていたものを
弊社ホスティングサイトへ移行したときのメモを残しておきます。

基本的に、文字コードのお話

Fedora7からutf8になり、PHPも、MySQLもutf8と楽チンになったのだけれど
ほかの環境ではそうはいきません。

まだまだEUCなサイトは多いです。
移行の手順は次の通りです。

(1) mysqldumpでutf8でダンプする。
(2)ダンプしたファイルをEUCに変換
(3)移行先に、テーブルをEUCで作成&データも文字コードEUCで流し込む

これで、データは完成。

次にプログラムの変更

(1)PHPも、EUCにコード変換
(2)テーブルから取得した文字コードは、EUCなので、EUC→utf-8へ変換が必要

 mb_convert_encoding(変数,"UTF-8","EUC-JP")


(3)google map APIは、utf-8でないと使えないのでscriptで文字コードを指定する

<script src="http://maps.google.com/maps?file=api&v=2&key=....." type="text/javascript"></script>

ここの部分に、次のようにcharasetを指定する。


<script src="http://maps.google.com/maps?file=api&v=2&key=....."
type="text/javascript" charset="utf-8"></script>

About PHP

ブログ「iPLUSONE Photo Blog」のカテゴリ「PHP」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

前のカテゴリはMySQLです。

次のカテゴリはThe Rolling Stonesです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.34