メイン

2007年07月01日

技術系記事は

はてなで書いてるです。

http://d.hatena.ne.jp/sotarok/

こっちの情報ちょと古いかもです?
わからないです

2007年06月08日

ちょっと訂正 AppManagerとAppObject

前回のエントリーを少し訂正・・・というか全面的に撤回したい(笑)


まぁ要するにちゃんと用途について理解してなかったわけです.

AppObjectはそもそもO/Rマッピング用のクラスで,
(てかO/Rマッピングをよくしらなかったわけですがね,恥ずかしいことに)
DBへの入出力に使うものなので,
AppManagerからAppObjectを使えばいいんだ.

と思ったんですが,いいのかな?^^;

まぁ試行錯誤は続きます..

2007年05月23日

NuSOAP で日本語が文字化け(2)

前回のエントリで、

	/*
	if($this->decode_utf8){
		$data = utf8_decode($data);
	}
	*/


これで解決って言いました。こんばんは。

なんとなくハードコーディングで修正するのもイヤだなあ~と
思いつつ、ためしにこのコメントをはずして、
プロクシ生成してるスクリプト内で

    $client = new soapclient(wsdlファイル名, true);
    $proxy = $client->getProxy();
    
    // -- 自動UTF-8デコードをしない
    $proxy->decode_utf8 = false;


としました。
やりたいことできました。

まぁいちいちこのプロパティ設定するのめんどい!って人は
ハードコーディングってのも手だけど、
できるだけライブラリにハードコーディングをせずに・・・
と思っているので(だってライブラリ自体のアップデートとかするたびに修正かけるのもどうかと・・・)

というわけで、


スッキリ。

ethna AppObject AppManager

3時間くらい悩んだら、

ちょっと利点見えてきた。


書くコード減ってきた~


でもなぜ
ethna add-app-object
コマンドでプロパティ定義が生成されない?
ちゃんとphp5とethna2.3なんだけどな?

自力で書くのは面倒だぞー

続きを読む "ethna AppObject AppManager" »

2007年05月13日

NuSOAP で日本語が文字化け

どうでもいいけど、

「もじばけ」



「ぼじばけ」

って間違って入力したら、

「簿磁場家」

って変換された。むしろこの方が文字化けっぽい(笑)


さて。

SOAP通信を行うPHPのライブラリのNuSOAPですが、
なにやら2バイト文字で化ける。

(というのは、LyricWikiに登録されてる歌詞で、なぜか「 ' 」を2バイト文字の「’」で
 記載されている歌詞があって、それが ? になっちゃうんだよね)

というわけで、解決策。

まぁ世の中のみなさんが色々いってますので、大体はその通りですが、
ちょっとバージョンが古かったもので。

バージョン 1.94 のNuSOAPです。


1.

134行目付近
var $soap_defencoding = 'ISO-8859-1';
 


var $soap_defencoding = 'UTF-8';
 
に。


2.

6200行目付近。
	if($this->decode_utf8){
		$data = utf8_decode($data);
	}
 
をコメントアウト。

	/*
	if($this->decode_utf8){
		$data = utf8_decode($data);
	}
	*/
 
解決。


つか通信時に自動的にデコードしちゃうのってどうなの?
普通通信は生でしてデコードは自分のスクリプト内で、ってカンジじゃないのかな?

まぁいっか!

2007年04月15日

LyricWikiのSOAP使って曲情報ゲット

LyricWiki


歌詞書き込んでくWikiになんとSOAPを使ったAPIがあった。

PHPでとりあえず特定アーティストの曲の歌詞を取り出すコード書いてみた。

// NuSOAP のライブラリが必要
require_once('nusoap/nusoap.php');

// SOAPクライアントの生成
$client = new soapclient('http://lyricwiki.org/server.php?wsdl', true);

// エラーチェック
$err = $client->getError();
if ($err) {
	echo 'Constructor error :' . $err ;
}
// Proxy生成
$proxy = $client->getProxy();

// とりあえずAerosmithのLove in an Elecatorを。
$artist = "Aerosmith";
$song = "Love in an elevator";

$result = $proxy->getSong($artist, $song);

if ($proxy->fault) {
	echo 'Fault : ';
	print_r($result);
} else {
	// エラーチェック
	$err = $proxy->getError();
	if ($err) {
		echo 'Error :' . $err ;
	} else {
		echo 'Result : ';
		print_r($result);
	}
}

実行結果は連想配列で、

Array(
    [artist] => Aerosmith
    [song] => Love in an elevator
    [lyrics] => 歌詞がここに・・・
    [url] => http://lyricwiki.org/Aerosmith:Love_In_An_Elevator
)



といったカンジ。
簡単。

2007年04月07日

Pear::Services_AmazonECS4

熱すぎる。

2007年03月07日

PEAR::Image_Graphによるローソク足描写

ちょっと作ってたのでご紹介。


データベースに保存されている情報は

1. 証券コード
2. 日付
3. 市場
4. 始値
5. 高値
6. 安値
7. 終値
8. 出来高


です。

指定された証券コードに対して日付順でデータを取り出し、


// もちろん $row にはDBから読み出したデータが入ってる。
// 今回はPEAR::DBも使ってみた。
foreach ($row as $key => $val) {
    // addPoint Methodを使って描写ポイントを。
    $Dataset->addPoint(
        date('y-m-d', strtotime($key)),
        array(
            'min'   => $val['yasu'],
            'open'  => $val['hajime'],
            'close' => $val['owari'],
            'max'   => $val['taka']
        )
    );
    
    // maxとminを置き換える(y軸描写範囲を決めるため)
    if( $i== 0 ){
        $minimum = $val['yasu'];
        $maximum = $val['taka'];
    } else {
        if($minimum > $val['yasu'] && $val['yasu'] != 0) $minimum = $val['yasu'];
        if($maximum > $val['taka']) $maximum = $val['taka'];
    }
    $i++;
    if ($i == 100) break; // 描写数でbreak(このへん超手抜き)
}


今回ちょっと困ってたのが、
「ファイル名を指定して保存」するのをどうするか。。。

デフォルトの


$Graph->done();


を使うと、ブラウザ上には表示できるけど(そういうヘッダを送信しちゃいます)、
名前をつけて保存ができない。

というわけで、


$out = $Graph->done(
    array(
        'tohtml' => true, 
        'border' => 1, 
        'filename' => 'example.jpg',
        'filepath' => './graph/',
        'urlpath' => './graph/' 
    )
);

こうしました。

こうすれば、graph/ディレクトリに保存されます(もちパーミッションの設定が必要。

tohtml を true に設定しているので、
返り値は、HTMLタグです。(<img src= ... >)

PHPで画像生成ができるようになるとすごい便利。

一応実装はコチラ↓
http://labs.sotaro-k.com/stock.php
※自宅サーバなので、サーバ起動してるときしか見れません。
※もしかしたらリンク切れになってるかもしれません。

2007年03月03日

SQLが2回実行される恐怖のGoogle AdSence

というわけで、昨日投稿したかったネタ。


実は、とある検索システムで、
検索用語のトラッキングを行うため、
検索が行われるたびに、その用語をテーブルに格納し、
すでに格納されている用語ならばUPDATEでカウント+、新しい用語ならINSERTという
システムを作ってました。

で、テスト環境でOKだったから本番環境にリリースしたら、
そこで問題発生。

なぜか、検索すると、カウントが「2」ずつ増える。


明らかにUPDATEのクエリーが2回発行されている模様。


ところが、テスト環境ではそんな現象はなかったし、
(xoopsで作ったシステムなので)MySQLのデバグモードに設定し、
実行されたSQLをすべてダンプしても更新のSQLは「1回」しか実行されていない。


ナゼダナゼダ!!!

と超悩む。

MySQLの不具合!?
プログラムの不具合!?


まぁとにかく、SQL文のある部分に echo を入れても、1度しか文字列は
echoされないので、「自分」がリクエストしているページは「1回」しか実行されていないのは確実だったわけです。

で、とにかく動向がおかしいのは、

・ F5リロードではカウントアップは1だけ。
・ 1増えて、もう1増えるまでに2秒ほどのタイムラグ
・ プログラム内で実行されているSQL文は1回のみ

なのに、2回実行されている。


これは、


「自分以外の誰かがこのページにもう一度リクエストをかけている」


としか考えられカンジでした。


それで、どうしても腑に落ちなかったので、
アクセスログを解析。
Apache のログを解析してたら、なんか怪しいログを発見。


自分のアクセスの直後に、

「Mediapatner-Google」

というユーザエージェントでGETがかかっていました。


これ…。

もしかして…。

結論。
今回の原因は、

AdSence

でした。


検索システムはPOSTではなくGETでしていて、
検索語がURLに含まれる形だったのです…。

で、GoogleAdsenceは、コンテンツの内容を判断して広告を表示するから、
掲載ページがリクエストされたときに、Googleのロボットが内容判断にGETしてきて、
それから広告を表示するという仕組みのよう。

なるほど…
タイムラグがあったのもの納得。


まぁたしかに今回はGETでUPDATEかけてるのがちょっと嫌なカンジだったとはいえ、
まさかそんなことが起こるとは…

まぁGoogleのUA判断してクエリー投げないようにしときましたよ(笑)


ちょっと勉強になった。

2007年03月01日

Mojavi * Smarty 成功

でけた。

Hello! Worldだけね(笑)

ただまぁ、感触は悪くない。

Eclipseも使い慣れてきたし。

ひとまずお決まりの掲示板でも作ろうかな?(笑)

2007年02月27日

開発効率アップに対する努力。Eclispe + TruStudio : Mojavi

ひたすらPHPの開発を進めるなかで、

どうしてもイライラを隠せないのが、

ケアレスミス発見とか、

同じことの繰り返しの面倒くささとか・・・


そんなことがあり、


・開発の負担減
・開発のコスト減


を目指しております!!(笑)


で、具体的には、

・IDEの導入
・CVSの導入
・フレームワークの使用
・テンプレートエンジンの使用

を考えていて、

IDEにはCVSにも対応していて、javaのIDEとして超大手のEclipseに、
TruStudioのプラグインを入れて使おうかと。
今試験的に利用してますが、なんかちょっとバグがあるのが気になる。
基本的には性能はGOOですが。
文法間違いとかその場で指摘してくれるから、
ケアレスミスがなくなりそうな予感です。

さらにIDEの場合プロジェクトとして複数ファイルを管理できるから、
複数ファイルに設定やクラスやビューやらを記述してincludeやらするPHPにはもってこいだと。


で、CVSの導入ですが、
これは、かなりやりたいんですが、
CVSサーバを入れられるマシンがない。。

自宅サーバは、ずっと起動しとくと正直電気代がなあ・・・

共有のレンタルサーバで入れられるわけないし。

というわけで優先順位は低いのでちょっと保留。


フレームワーク。

これは色々迷います。
本当はPHP5の環境に徐々に移行していきたいんですが、
実装環境やレンタルサーバ環境がまだまだPHP4が本当に多い。
PHPフレームワーク自体が結構新しいものが多くて、PHP5から~ってのがほとんど。
まぁそうなんだろうな・・・世の中オブジェクト指向なんだろうし(笑)

ためしにPHP5でMojavi3(DEV)と、PHP4でMojavi2をつかってみたけど、
ぜんっぜん使い勝手が違うんだよね・・・。

うーん、ホント迷う。

いっそPHP5にしてethnaでも使いたいんだけど(笑)


とりあえず、今はMojavi2つかってやってみてます。

うーん。シコリのこるけど(笑)


で、テンプレートエンジンはもう俄然Smartyですね。
これはまぁxoopsで使い慣れてるからいっかな。

さて。
やるべ(笑)

2007年01月10日

PEAR:Image_Graph

こんなことができる。

http://labs.sotaro-k.com/graph.php

PHPのリコンパイルで死ぬほどつまづく

4時間くらい悩んでた・・・・・・・かもorz


ホントつかれた・・・・


でもできたからよかった・・・。


明日英語の試験のような気がします(笑)

2006年12月31日

衝撃的事実

mojaviは


「モハビ」


と読むらしい。。

マジすかorz

2006年12月14日

php5 ./configure

php5

# ./configure --help

の無いようを覚書。

続きを読む "php5 ./configure" »

2006年12月13日

おっちんじゃいそうです

Linux難しい・・・(笑)


難しいっていうか・・・


やっぱ使い慣れた(というか長い間使っている)
Windowsとちがって、根本的な仕組みを理解していないもので、
色々とまどいます。


今日やったことは、

FTPサーバのセットアップ
うまくいく。ヤター!

PHP5インストール

・・・・エラーたくさん
原因は色々インストールしてなかった

GDに必要なlibjpeg libpng など
MySQL
PosgreSQL
インストール。
php5インストール完了。

しかし、apacheにくみこめない。

yum使ったインストールでphp5てhttpdに組み込めないの?

上記疑問の正解は知らないが、俺にはどうやってもできなかった。
。。。ので
yum remove httpd (T_T)

apache2
手動でコンパイル

php5モジュール組み込み
apache2起動

エラーがたくさん

sqliteがどうのこうの?

--without-sqlite
でリコンパイル&インストール

php5組み込み成功?

xoopsインストール

・・・失敗

原因不明。
パーミッションがどうとか。
FTPユーザがわるかった?

??

といったところで今日はもうやめた!!!
やめた!!!笑


疲れた!

2006年12月07日

このままじゃいけないんだろうなーって

そんなことですよ、考えてるのは。


プログラムができるとか、
webアプリが作れるとか、
色々いってもさ、

所詮素人でちょっとできるってだけだからね・・・。


うーん、やっぱり上を目指すには、開発効率の向上や、
プロジェクト内でのコードの規約とか、
そういう面でやっぱりもっとちゃんとしなきゃいけないんだろうね。

それこそフレームワーク使うとかさ。


がんばります色々と。


停滞してたjavaの勉強もやろうかと、最近思ってますよ・・・ふい(笑)

2006年09月28日

セーフモード


phpがセーフモードに設定されてると、
なんにもできない。

超不便。

マジ腹立つ。 (笑)

というわけで、セーフモードでも関係なく動くプログラムを作る必要があるわけだ。
でもさ、ファイルの書き込みに制限かかったら・・・そんなぁ~ってカンジじゃない?


やっぱDB使わないなんてありえないんだね・・・


perl書けるようになったほうがいいのかな・・・(;;

2006年07月26日

排他制御

テキストデータで保存している、某所で使っているアクセスカウンタが、時々壊れる。(笑)


なんでだ?


たしかにアクセスは多いんだけど、
2週間に1回壊れるとなると・・・・やっぱ排他制御に問題が・・・??

ちゃんとLOCKかけてるのになんでだ(・_・)

わかんねー。。。。


もう、やっぱ、DB使おうかなあ・・・

そしたらもっと機能的にできるし。。うーん。。。

2006年06月12日

リモートファイルの読み込みができない

なんか。

ローカルサーバで、PHPのリモートファイル読み込みをしようとするとApacheが落ちる。

なんで?

Winだけど、PHPのバージョンは4.4.2だし、
リモートfopenは許可してるのになあ…

同じソースでも、レン鯖にあげると動くんだよなあ…うーん。
Apacheが落ちるってことはApacheの設定でなんか変なとこがあるのかなあ(・_・;

うーん…

リモート読み込もうとすると落ちるなんで、ホントやだわあ。
すぐCPUがうなるもんなあ。。

Apacheの設定を見直してみるかあ( ´д`)

2006年06月05日

xoopsのクラス

なんか行き詰ったからxoopsのクラスファイルとか見て遊んでた。


そしたらすげーのがいっぱい出てきた。。。

フォームとかも全部クラス化されてるし、
ほしいな~って思うほとんどのメソッドが用意されている…

コア、作った人すごい。。


つか、こんなにいっぱいクラスとメソッドあったのか。
正直、モジュール作って配ってる人でも結構知らないクラスあるんじゃないのかな。
だって、自分でなにも作る必要ないくらいあるもんなあ…
とりあえずこれ、よくしっとかないと効率のいい開発できないなあ。

うーん。

そもそもクラスについてもうちょっと勉強しよ(;;

でも前JAVAとかやったときよりクラスについてわかってきたカンジするなあ。
前JAVAやったときはさっぱりだったもんなあ。
今ならJAVAとか結構勉強できる気がする(笑)

・・・・・・気がするだけかな。