‘PHP’ カテゴリーのアーカイブ

仕事終わってから本気出す

2009 年 10 月 16 日 金曜日

仕事終わってから
例のお弁当注文システムにポイント機能追加。

お弁当を注文すると、ポイントが付与されて、ポイントがある程度たまると
無料でお弁当がもらえます。

このシステムを利用しての注文が多くなり、
お弁当屋さんが、値段を割引くれるようになったので
それをポイントに換算してみんなに分配するようにした。

ついでに、cronでDBの内容を毎日バックアップするようにした。
ぶっちゃけ、仕事より集中してやった(ぉぃ)

Rubyの本がマウスパッド

2009 年 9 月 7 日 月曜日

最近、Rubyやってません。

CakePHP大好きっ子になっています。

Rubyの本はいま、マウスパッドになっています。
ついでに、「人月の神話」も一緒に。

うむ、いい厚み。。

XREA でPEARを動かす

2009 年 8 月 12 日 水曜日

絶対、忘れて嵌るので、メモ書き。
XREAではモジュール版PHPがセーフモードで動いているので、動かないPEARモジュールがあるらしい。
今回はHTTP_Clientが動かないで嵌りました。

pear listして、、、、ある。

何?reuireすると見つからんの??

と思って、調べても、、、ある
require_once 'HTTP/Client.php';
var_dump(class_exists('HTTP_Client'));
?>
結果:
bool(true)

・・・どーなってんねん。

訳分からんけど、あるけど、動作しないってこと??

CGI版PHPとして動かしたら大丈夫だった。
PHPをCGIとして動かす方法について

同じフォルダに.htaccessを作成して

AddHandler application/x-httpd-php5cgi .php

の一行を追加すればOK.(例はCGI版PHP5で動かす場合)

あー、嵌った。。ちくしょう。。

そういえば、この前、また、CakePHPのValidateができねぇ!って嵌ったし
※Modelの文字コードがUTF-8でなかったため日本語メッセージの部分でエラーになり、
formヘルパー($form->errorメソッド)の内部でエラーメッセージの結果を戻せなくなってた。

結局、Modelの文字コードがs-jisだったからUTF-8にして直ったけど、
この件は、以前も嵌った気がするのよね。なんど嵌るんだか。。

また久しぶりにCakePHP

2009 年 6 月 21 日 日曜日

今週末は久しぶりに時間ができたので、
以前作ったCakePHPのWEBサイトに管理画面をつけることにした。

CakePHPは命名規則さえ守れば、最強に早いが逆に言うと
命名規則を守らないと、うまく動かないことも多い。

以前、書いた気がするが、サーバーの制約上、テーブル名にプリフィックスつけてるんで
モデル名にもプリフィックスがついて、うざい。


cakePHPの路線をあえてはずれる方法を身につけておく

あらら、Modelに var $useTable使えば、モデル名にまでプリフィックスつける必要がないじゃないか。

無知って罪だわ。。
全体的にソース修正しました。

OK牧場!

2009 年 6 月 9 日 火曜日

どうせ、タイトルは意味ないですよ。
ガッツ大先生のお言葉が脳裏に浮かんだので書いてるだけです。

さて、ガッツ大先生にも勝るとも劣らない天才の私ですので記憶力も相当なものです。
やったことは一晩寝りゃさっぱりです。
そんなことなので、メモを残しておこうと思い立ち、久しぶりにブログなんぞを利用してみます。


■さくらサーバーでメール受信トリガによるPHPプログラム処理

1.受信したらパイプで処理でプログラムに渡す
.forwardなんぞを使う手もありますが、さくらサーバーは.mailfiterを使います。
ここらへんはサーバーによりけり。
さくらサーバーのMailBox直下に.mailfiterをおきます。
中身は、
cc “| /home/xxxxxx/www/send.php”
な感じで。xxxxxxはアカウント 例の記述ではwww直下のsend.phpへメールを渡してます。
CCをTOにすれば、メールも保存されません。
まぁ、後々確認したいこともあるだろうと思われるのでCCにしときましょう

あ、ここで、.mailfilterは権限600なんで。注意です。

2.受け取ったメールを処理する。
PHPで標準入力(php://stdin)の内容(=メールファイル)を処理すればOKです。

返信するでもよし、DB更新するでもよし、無視するでもよし(オイ)

でも、メールファイルは、メーラーによって好き勝手書かれてます。
ほんと殺したくなります。
とりあえず
mb_decode_mimeheader でデコードして、取得した情報(メールアドレスなど)を
正規表現で正しいか判断して処理しましたが、おそらく、pear::Mailパッケージを使えば楽でしょう。
私のように、まぁ、サーバーになんでもかんでもインストールって訳にもいかない人は、地道に実装してください。

ここのところも質問してくれれば、気が乗り次第答えます。

おいおい、すごい大雑把だなって感じですが、
まぁ、自分が見て、思い出せればOKですww

さてと、寝ます。

Cakephp アソシエーションができない

2009 年 5 月 21 日 木曜日

何度確認しても間違ってないぞ
うーうー1時間ほど唸って明日にしようかなと
おもったとこころで気付いた。

Modelのファイル名が違うという単純なミスをしてた。

レンタルサーバーの制限で
一つのDBしか使えず、各テーブルに接頭字つけてシステムの区別つけてるんだけどそれが落とし穴。

nn_test ってテーブル名だとしたら
Modelのクラス名はNnTest になるんだけど
それにあわせてファイル名もNnTest.phpに。。
完全に思い込み。

で、いままで問題なく動いちゃってたから、ずーっと気付かなかったが
これだと、CakePHPの命名規則から外れるのでそもそもこのModel自体が無効になってた模様。

ファイル名をnn_test.phpにしたらあっさりテーブルJOINできた。

なんか、これ半年前にも嵌った気が。。。
ってことで一応ここにメモしとく。
また半年後に嵌るだろ。忘れっぽいし。

サムネイル画像生成機能追加

2008 年 9 月 14 日 日曜日


photo by gusset


上の画像は、例の自作サイトで出力したものです。
少しだけVersionUPしました。

ブログに貼り付ける画像出力にサムネイル(角丸、影付き)を追加しました。
以前、ImageImagickで作っておいたものを流用しただけです。
が、時間かかりました。。

あと、他の部分もちょこちょこと修正。

chromeで、表示して見たら、modal表示のレイアウト崩れがおきていて凹みました。
divタグにtext-align:center;で真ん中寄せが効いてません。
FireFoxでは大丈夫なのに。。
直す気起きません。
レイアウトが崩れていたって、動くもんは動く!

徐々に、自分専用のサービスに近づいております。

Flickrから日本語で検索するサービス

2008 年 9 月 2 日 火曜日





http://ohmyga.net/





空いた時間にこつこつと作りました。
Flickrには日本語で検索する機能がないので、
日本語から英語に翻訳してから検索、日本語から中国語に翻訳してから検索という機能がついとります。
もちろん、日本語でそのまま検索もOKです。

いまは、βバージョンで、
これから、複数語検索、カテゴリ検索、ブログ貼り付けコード出力 あたりはつけようかなぁとは思っとります。

フレームワークはSmarty
使用言語はPHPとJavaScriptです。

吸いたい。吸いたい。吸いたい。

2008 年 8 月 5 日 火曜日


photo by m16_qtr


突然ですけどね、日曜日から禁煙はじめました。

いやぁ、もう挫折したいですよ。まじで。

とりあえず、明日もがんばります。



ちなみに、話は変わって、上記の画像ですが、、例のコードをちこっといじって、

FlickrのパスをGetで渡すとリアルタイムで画像を編集して出力するようにしました。


毎回、毎回、表示させるためだけに、サーバーくんが元画像から計算・編集して吐き出してます。(無駄なので生成後の画像に置き換えました 2008/08/15)

無駄ですねぇ。エコの逆を行ってます。


ま、このブログのPVなんて二桁だしね。サーバーへの負荷なんてぜんぜん問題なし・・・

自慢できることじゃないけど



さて、こんな感じでFlickrを利用して、

ブログ用画像提供サイトつくろうかなと思いFlickrとの連携まで作りましたが、

Flickrを応用したまっしゅあっぷサイトがありすぎ!おれ考えてたの探したら既にあったしww

テンション落ちるわ、ってか、既に落ちてる。

ま、かぶろうがなんだろうが、とりあえず、形にするか???

うーん。

Imagick かわいいよ。はぁはぁ。

2008 年 8 月 3 日 日曜日





http://cn2.php.net/imagick





コード上で、画像をいじれるのは面白い。

これは応用甲斐がありますわ。



元の画像は、これね。



これに、Imagickくんを使って、あーだ、こーだ(サムネイル化して、角を丸くして、影をつける)

すると。以下のとおり。




たまらんね。はぁはぁ。こーんなに小さくなって、まぁるくなっちゃってぇ。



おっと、変態モードは置いといて、糞コードでもさらしときますわ。

つっこみ大歓迎ですお。



<?php

$image = new Imagick('image.jpg');

//サムネイル化
$image->thumbnailImage(100, 0);

$height = $image->getImageHeight();
$width = $image->getImageWidth();

//マスク用イメージ作成
$image2 = new Imagick();
$image2->newImage($width,$height,'none','png');

// マスク用レイヤー作成
$dr = new ImagickDraw();

// 塗りつぶし色設定
$dr->setFillColor('white');

// 角丸レイヤー設定
$dr->roundRectangle(0,0, $width-1,$height-1, 10, 10);

//マスク画像描画
$image2->drawImage($dr);

//マスクを使って内側の元イメージを切り取り
$image2->compositeImage($image, Imagick::COMPOSITE_IN, 0, 0, Imagick::CHANNEL_ALL);

// 影を作成
$image3 = new Imagick();
$image3->newImage($width,$height,'none','png');
$image3->setImageBackgroundColor("black");
$image3->compositeImage($image2, Imagick::COMPOSITE_OVER, 0, 0);
$image3->shadowImage(30,3,5,5);

// 影の背景画像を作成
$image4 = new Imagick();
$image4->newImage($image3->getImageWidth(),$image3->getImageHeight(),'white','png');
$image4->compositeImage($image3, Imagick::COMPOSITE_OVER, 0, 0);
// まーじ。
$image4->compositeImage($image2, Imagick::COMPOSITE_OVER, 0, 0);


header('Content-type: image/jpeg');

echo $image4;

$dr->clear();
$dr->destoroy();
$image4->clear();
$image4->destroy();
$image3->clear();
$image3->destroy();
$image2->clear();
$image2->destroy();
$image->clear();
$image->destroy();


?>


参考:画像処理についてあれこれ



いったいお前は何をしたいんだ?ってのは、しばし、お待ちを。もう少しで種あかしします。