戻り値が配列の関数でNoticeを回避するには?

PHP

08:48:06, by admin Email , 159 words, 5689 views   Japanese (JP) del.icio.us

みんなどうしてるんだろう。

(ノ・・)ン。。。。。。(((●コロコロッ

PHPの関数で戻り値が配列のものというのは結構たくさんあるのだが、
それらの戻り値に困った事ってないだろうか?
私は良くある。
それは

Notice


Noticeとは、
error_reportingをE_ALLにしておくと表示される警告メッセージ。
php.iniコンパイル時にphp.iniをコピーするのだが、
利用元をphp.ini-distにするとデフォルトではNoticeが表示されない。
php.ini-recommendを使うとNoticeが表示される。

PHPの配列で存在しないインデックスを参照しようとすると、
Noticeが表示される。
例えば、
$array = array(
'a'=>'a',
'b'=>'b',
'c'=>'c',
);

echo $array['d'];

した場合、
Notice: Undefined index: d in ~~

dっていうインデックスはないっすよーって感じで。


さて、
ここまでなら回避は簡単だろう。
ではこれはどうかな?
$input = 'http://hain.jp/index.php/tech-j/';
$parts = parse_url( $input );

$url = $parts['scheme'].'://'.$parts['user'].':'.$parts['pass'].'@'.$parts['host']
.$parts['path'].$parts['query'].'#'.$parts['fragment'];
echo $url;


結果は
Notice: Undefined index: user
Notice: Undefined index: pass
Notice: Undefined index: query
Notice: Undefined index: fragment


$input、もっと言うならURIは状況によって変化する。
クエリストリングが付いていたり、
フラッグメント(アンカー)が付いていたり、
ユーザー名、パスワードが付いていたり。
では、その状況によってNotice回避策を講じるのかというと結構大変では無かろうか?
値が無いのならば放っておいてもいいところを、
インデックスがないというのが何ともやりづらい。
結果として三項演算子+issetのオンパレードで、
見づらさ3倍って感じ。


私の対応策は

=> Read more!


PHPでお手軽マルチタスクってできないの?

PHP

08:16:49, by dozo Email , 73 words, 2506 views   Japanese (JP) del.icio.us
ふむ。

(ノ・・)ン。。。。。。(((●コロコロッ

IBMの記事。
http://www.ibm.com/developerworks/opensource/library/os-php-multitask/
読んだ人もいるかと思う。

PHPでマルチタスク実装というのは無いなと思っていたが、
こんな方法で実現出来るのかぁ。と思った。
ただ、コードを見るかぎりでは、
実装が複雑でこれを使うにはかなり検証が必要なのが解る。



そうすると実際の利用場面は?
いろいろ考えてみたが、
これといって思いつかない。

一つ思いつくのがRSSリーダのようなクローラを実装する時。
大量にあるRSSのURLからデータを取得する際、
クローラーが一つ一つデータを取得しようとすると、
データが取れるまで待ちが発生するので、
量が多ければ多いほど時間がかかる。
Web Service APIでRESTやXMLRPC, SOAPなどを複数利用する場合も当てはまる。

ということで[大量のアクセス先からデータを取ってくる実装をマルチタスクで行う]という路線で、
もうちょっと簡単な実装を模索してみると、
面白いものがあった。

それは
curl_multi_add_handle
curl_multi_exec

=> Read more!

xreaでCGIのPHPを使う本当の方法

PHP, ASP, XREA.COM, Python, Perl, Ruby

09:05:51, by admin Email , 76 words, 4912 views   Japanese (JP) del.icio.us
簡単にやってる方は偽物。

(ノ・・)ン。。。。。。(((●コロコロッ

.htaccessに以下を記述
AddHandler cgi-script cgi phtml



要は普通に使えって事か。

=> Read more!

ActiveState Komodo IDE(Edit)が(・∀・)イイ!!

PHP, Comet, LightWeight Language, Python, Perl, Ruby

09:58:27, by dozo Email , 63 words, 4577 views   Japanese (JP) del.icio.us
LL開発のメインで使っていこう。

(ノ・・)ン。。。。。。(((●コロコロッ

PHPを使って結構経ちますが、
最近ではPythonを勉強してます。
構文を覚えるのはたいしたこと無いのですが、
やはり実践投入しないと身に付かないなぁと思っております。
別にPHPが嫌いになったわけではありません。
仕事ではPHPは今後も使い続けると思います。

Pythonを使おうと思った理由は、
PHPでは絶対に出来ないことでもPythonでは出来ることがあるからです。
PHPはApacheのモジュール動作が基本。
なので動作自体にApacheの成約が発生します。
comet実装とかできません。
スレッド利用もPHPではできません。
頑張ってもプロセスフォーク(CGI版のみ)。
配布が難しいのもPHPの欠点。
PHPは「全く同じ環境」を作ることが非常に困難です。
動作速くするためにそういったところを犠牲にしてます。
再配布のシステムを作ろうとするとその他のLLの方が向いてます。
ツール、ライブラリも豊富で選択肢も多く、
欲しいものは探せばありそうです。


Pythonといえばdjangoフレームワークですが、
私はSpyceを使ってみようかと。
Pradoを使うようになってから、
コンポーネントベースフレームワークじゃないと使う気になれなくなってます。
この際ASP.NETでも良いです。
テンプレートエンジンSimpleTALも良いッスね。
これからどんどん研究を進めていこうかと思います。




さて、PHPの時は開発はEmeditorでやってました。
正規表現が強力で好きなエディタなのですが、
どうしてもIDEが使いたくて調査だけはずっとやってました。
というのも、最近の開発は「純正関数をガリガリ使って」なんてことはほとんど無く、
フレームワークのAPIを如何にに利用するかに終始します。
APIなんていちいち覚えているわけもないのでコード補完は必須になるのではないかと。
特にPHPはデバッガがボロボロなのですが、
他の言語ではキチンとしているのでエディタとIDEでは大きく開発効率が変わってきそうな気がしてます。

IDEというとeclipseですが、
Java開発ならともかく、
あの、ずんぐりむっくりはLL開発に向いてるとは到底思えません。
PHPではZend Development Environmentもありますが、
同様にズングリしてます。

Pythonを勉強・調査していたところ、
良いものを発見しました。
それは


=> Read more!

ケータイサイトを作る時にやっていること。

やってることを徒然なるまま。。。

(ノ・・)ン。。。。。。(((●コロコロッ


ウノウラボ Unoh Labs:
http://labs.unoh.net/2007/08/php_9.html
http://labs.unoh.net/2007/09/post_104.html

を読んで、
(・υ・)オレドウシテタッケ。
ってことで、


あと、
http://codezine.jp/a/article/aid/689.aspx
ここが( ̄-  ̄ ) ウーンだったので、



クローラについて書こうとしたらだらだら長くなったので、
まぁ笑っとけってことで。

=> Read more!

powered by b2evolution

shinobi

Neighbors
Relative
Favorites
PR

極論istの技術屋を始めて早幾年。 流れの速い業界の波にもまれながらも精一杯生きている様をとくとごらんあれ。

Archives
スポンサー

Latest bookmark
Search

Categories

Who's Online?
Misc
Syndicate this blog XML

Valid XHTML 1.0! Valid CSS! Valid RSS 2.0! Valid Atom 1.0!