最近PHPでいろいろ作ってます。もし良ければ見ていってください。
メーリングリスト → http://www.easyml.info/
twitm -メール de twitter- → http://www.twitm.net/
メーリングリスト → http://www.easyml.info/
twitm -メール de twitter- → http://www.twitm.net/
PHP って良くできてるなぁ [プログラミング]
最近 PHP でプログラムを作ってますが、いろいろな言語の良いところを集めたというか柔軟な記述ができるというかまあ良くできてますね。
変数は型を意識しなくても使えるし、書式もいろんな書き方できます。
ファイルもURLも同じように扱えたり。
DBもMySqlはもちろんSQLiteが手軽に使える。
スクリプトなので多少処理速度がきになりますが、最近のPCではそんなに気にすることもないでしょう。
JSPとか使うのがめんどくさくなってきますね(^^;
変数は型を意識しなくても使えるし、書式もいろんな書き方できます。
ファイルもURLも同じように扱えたり。
DBもMySqlはもちろんSQLiteが手軽に使える。
スクリプトなので多少処理速度がきになりますが、最近のPCではそんなに気にすることもないでしょう。
JSPとか使うのがめんどくさくなってきますね(^^;
タグ:PHP
Services_Twitterのバグ? [プログラミング]
最近 twitter でつぶやいててこっちがおろそかになってます・・・ちょっと反省。
でもって Twitter関連について書いてしまうわけです(汗
昨年末からケータイメールでTwitterにつぶやくプログラム作ってるわけですが、使い慣れてくるといろいろ機能が欲しくなってくるわけですよ(笑)
で、返信とかRTとかで元記事を指定する場合 in_reply_to_status_id を指定すれば良いと言うことでいろいろ試していたのですが、なぜかうまくいかず。
Services_Twitter をベースに in_reply_to_status_id を使えるようにしていたわけですが・・・意外な盲点。
Twitter.php を継承して新たなクラスを作っていたわけですが、なんとさらにその中で使っている Connector.php のリクエスト処理でのデータ作成のところで & と書くべきところが HTMLメタの & となってた。
そんなわけでパラメータの連結でkeyが in_reply_to_status_id ではなく amp;in_reply_to_status_id となってしまっているのが原因だったらしい。
修正してみたら何のことはないすんなり成功。 いやあ既存パッケージだからバグはないなどと思ってはいけないってことですね。
しかしこれ配布するにはどうすべきなのだろう? まあぼちぼち考えていきましょう。
でもって Twitter関連について書いてしまうわけです(汗
昨年末からケータイメールでTwitterにつぶやくプログラム作ってるわけですが、使い慣れてくるといろいろ機能が欲しくなってくるわけですよ(笑)
で、返信とかRTとかで元記事を指定する場合 in_reply_to_status_id を指定すれば良いと言うことでいろいろ試していたのですが、なぜかうまくいかず。
Services_Twitter をベースに in_reply_to_status_id を使えるようにしていたわけですが・・・意外な盲点。
Twitter.php を継承して新たなクラスを作っていたわけですが、なんとさらにその中で使っている Connector.php のリクエスト処理でのデータ作成のところで & と書くべきところが HTMLメタの & となってた。
そんなわけでパラメータの連結でkeyが in_reply_to_status_id ではなく amp;in_reply_to_status_id となってしまっているのが原因だったらしい。
修正してみたら何のことはないすんなり成功。 いやあ既存パッケージだからバグはないなどと思ってはいけないってことですね。
しかしこれ配布するにはどうすべきなのだろう? まあぼちぼち考えていきましょう。
twitter 関連 メモ [プログラミング]
最近プログラミングに若干はまっててあまり書いてないので・・・とりあえずtwitter関連で参考にしたページなどを備忘録しときます。
参考にさせていただいたページ
・Twitter API 仕様書 (勝手に日本語訳シリーズ)
・Twitter API Documentation
・技術メモ自分宛のTwitterリプライをメールで受信
・Services_Twitter
・KARMA君のお部屋別室(2部屋目)~傍観者たち~ - 傍観ぶろぐ : Services_Twitter をOAuthに対応させてみた(暫定)。
・Twitter + PHP + OAuth のリソース ( ラボブログ )
・PHP+OAuthでTwitter - SDN Project
twittmail なんて自分で作ってるプログラムと似たようなことできるサービスもスタートしたらしいですが
・・・βとはいえまだまだ不完全ぽいですね。
まあのんびり自分の使いやすいプログラムを作っていきましょう。
参考にさせていただいたページ
・Twitter API 仕様書 (勝手に日本語訳シリーズ)
・Twitter API Documentation
・技術メモ自分宛のTwitterリプライをメールで受信
・Services_Twitter
・KARMA君のお部屋別室(2部屋目)~傍観者たち~ - 傍観ぶろぐ : Services_Twitter をOAuthに対応させてみた(暫定)。
・Twitter + PHP + OAuth のリソース ( ラボブログ )
・PHP+OAuthでTwitter - SDN Project
twittmail なんて自分で作ってるプログラムと似たようなことできるサービスもスタートしたらしいですが
・・・βとはいえまだまだ不完全ぽいですね。
まあのんびり自分の使いやすいプログラムを作っていきましょう。
続 メール de twitter [プログラミング]
自分で使うことを前提に作ってるのでなかなか楽しくなってきました。
でもプログラムを公開したわけですが・・・見てくれる人はそう多くないですね(苦笑)
でもまあ気長にいいプログラムができるように続けていこうとおもいます。
でもプログラムを公開したわけですが・・・見てくれる人はそう多くないですね(苦笑)
でもまあ気長にいいプログラムができるように続けていこうとおもいます。
メール de twitter [プログラミング]
ということで、たいしたプログラムではありませんが、メールでwitter するプログラムを公開してみました。
ご興味がありましたら是非のぞいてみてください。
http://www.twitm.net/
一人でもみてただける方がいればうれしいのですが・・・
ご興味がありましたら是非のぞいてみてください。
http://www.twitm.net/
一人でもみてただける方がいればうれしいのですが・・・
メーリングリスト [プログラミング]
このブログにちょこちょこ書いてましたが、メールを使ったシステムを作ってます。
今更なぜ作る?というようなメーリングリストのシステムなんですけど。
仲間内で使っていたケータイ向けの使い勝手の良かったメーリングリストのサービスが終了してしまって、それなら作ってみるかということで作っているわけです。
で、まあそこそこ動くようになったので、ここをみていただいてる方で興味のある人いないかなぁなんて思ってちょっと書いてみました。
紹介ページを作ってみたので見て興味あるかたいましたらコメントなりメールなりでご連絡ください。
http://www.easyml.info/
・・・ようはデバッグに協力してもらえる方いないかなぁ・・ってことなんですけど。
ご興味あるかたよろしくお願いします。
今更なぜ作る?というようなメーリングリストのシステムなんですけど。
仲間内で使っていたケータイ向けの使い勝手の良かったメーリングリストのサービスが終了してしまって、それなら作ってみるかということで作っているわけです。
で、まあそこそこ動くようになったので、ここをみていただいてる方で興味のある人いないかなぁなんて思ってちょっと書いてみました。
紹介ページを作ってみたので見て興味あるかたいましたらコメントなりメールなりでご連絡ください。
http://www.easyml.info/
・・・ようはデバッグに協力してもらえる方いないかなぁ・・ってことなんですけど。
ご興味あるかたよろしくお願いします。
続・PHPで絵文字変換 [プログラミング]
「KDDI絵文字用Shift-JISコード」と「メール送出用JISコードに対応したShift-JISコード」の変換処理を再考してみました。
当たり前といえば当たり前な処理ですが。
1.文字列を1文字ずつに分解。
2.対象となる絵文字コードを置換。
3.分解した文字列を再結合。
まあこうする以外ないでしょう。
でも、1文字ずつループして判定というのはやはりパフォーマンスが心配です。
で、いろいろ考えた結果こうなりました。
たぶんこれでそこそこのパフォーマンスでちゃんと変換できると思うのですが・・・どうですかね?
当たり前といえば当たり前な処理ですが。
1.文字列を1文字ずつに分解。
2.対象となる絵文字コードを置換。
3.分解した文字列を再結合。
まあこうする以外ないでしょう。
でも、1文字ずつループして判定というのはやはりパフォーマンスが心配です。
で、いろいろ考えた結果こうなりました。
$string =”絵文字入り文字列"; // 文字列分解 $ascii = '([\x00-\x7F\xA1-\xDF])'; $twoBytes = '([\x81-\x9F\xE0-\xEF][\x40-\x7E\x80-\xFC])'; preg_match_all("/$ascii|$twoBytes/", $string, $matches); $element = $matches[0]; $patterns[0] = '/\xEB([\x40-\x7E\x80-\xFC])/'; $patterns[1] = '/\xEC([\x40-\x7E\x80-\xFC])/'; $patterns[2] = '/\xED([\x40-\x7E\x80-\xFC])/'; $patterns[3] = '/\xEE([\x40-\x7E\x80-\xFC])/'; $replacements[0] = "\xF6\\1"; $replacements[1] = "\xF7\\1"; $replacements[2] = "\xF3\\1"; $replacements[3] = "\xF4\\1"; ksort($patterns); ksort($replacements); // 文字単位で置換 $element_new = preg_replace( $patterns, $replacements, $element ); // 文字列再結合 $string = implode("", $element_new); |
たぶんこれでそこそこのパフォーマンスでちゃんと変換できると思うのですが・・・どうですかね?
PHPで絵文字変換 [プログラミング]
ケータイメールの絵文字を各キャリア毎変換する処理を作る事になって調べてみた。
変換処理はこちらの「絵文字変換ライブラリ HTML_Emoji」が使えそうです。
http://www.revulo.com/PHP/library/HTML_Emoji.html
MIT ライセンスだそうなので自由に使って大丈夫かな。
で、早速使ってみたわけですが、これがなかなか難しい。
ライブラリはwebサイトでの変換を想定して作られているらしく、UTF-8とSJISしか対応していない。
おかげで作りかけていた処理の内部文字コードをEUC-JPからUTF-8を使うように大規模修正orz
さらに受信したメールのデコード、エンコードがJISだったのをSJISにも対応。
さらにメールアドレスから変換の挙動をキャリア毎に振り分け。
思った以上にめんどくさいです。
そして最後にはまったのがauの絵文字。ライブラリだけではどうにもこうにも変換が上手くいかず、いろいろ調べたところauだけはwebで使う「KDDI絵文字用Shift-JISコード」とメールで使う「メール送出用JISコードに対応したShift-JISコード」なる2つのコードが用意されているということがわかった。
どうやらこの変換をかまさないと上手く変換できなようです。
で、どう変換すればいいかというとSJISの1バイト目のコードが下記コードの場合に置き換えすればいい。
メール web
0xEB <-> 0xF6
0xEC <-> 0xF7
0xED <-> 0xF3
0xEE <-> 0xF4
で、preg_replace()使えば楽勝かと書いてはみたわけですが。
$patterns[0] = '/\xEB([\x40-\x7E\x80-\xFC])/';
$patterns[1] = '/\xEC([\x40-\x7E\x80-\xFC])/';
$patterns[2] = '/\xED([\x40-\x7E\x80-\xFC])/';
$patterns[3] = '/\xEE([\x40-\x7E\x80-\xFC])/';
$replacements[0] = "\xF6\\1";
$replacements[1] = "\xF7\\1";
$replacements[2] = "\xF3\\1";
$replacements[3] = "\xF4\\1";
$string_new = preg_replace( $patterns, $replacements, $string );
※もちろんこの逆も必要。
一応受信したメールはを
JIS → メール用SJIS(PHP標準変換) → web用SJIS(上記変換) →UTF-8(HTML_Emoji使用)
で、期待する変換はできたわけですが・・
よく考えてみるとこれだと誤変換が起こりますorz
ってことはこの変換って1文字ずつチェックしなきゃできないんじゃないか??
さてどうしよう。
・参考にしたサイト
http://php.y-110.net/wiki/index.php?%B7%C8%C2%D3%A1%A7%B3%A8%CA%B8%BB%FA%A1%A7%CA%D1%B4%B9
http://blog.asial.co.jp/330
http://pochi.orz.ne.jp/oasis/archive_257.htm
変換処理はこちらの「絵文字変換ライブラリ HTML_Emoji」が使えそうです。
http://www.revulo.com/PHP/library/HTML_Emoji.html
MIT ライセンスだそうなので自由に使って大丈夫かな。
で、早速使ってみたわけですが、これがなかなか難しい。
ライブラリはwebサイトでの変換を想定して作られているらしく、UTF-8とSJISしか対応していない。
おかげで作りかけていた処理の内部文字コードをEUC-JPからUTF-8を使うように大規模修正orz
さらに受信したメールのデコード、エンコードがJISだったのをSJISにも対応。
さらにメールアドレスから変換の挙動をキャリア毎に振り分け。
思った以上にめんどくさいです。
そして最後にはまったのがauの絵文字。ライブラリだけではどうにもこうにも変換が上手くいかず、いろいろ調べたところauだけはwebで使う「KDDI絵文字用Shift-JISコード」とメールで使う「メール送出用JISコードに対応したShift-JISコード」なる2つのコードが用意されているということがわかった。
どうやらこの変換をかまさないと上手く変換できなようです。
で、どう変換すればいいかというとSJISの1バイト目のコードが下記コードの場合に置き換えすればいい。
メール web
0xEB <-> 0xF6
0xEC <-> 0xF7
0xED <-> 0xF3
0xEE <-> 0xF4
で、preg_replace()使えば楽勝かと書いてはみたわけですが。
$patterns[0] = '/\xEB([\x40-\x7E\x80-\xFC])/';
$patterns[1] = '/\xEC([\x40-\x7E\x80-\xFC])/';
$patterns[2] = '/\xED([\x40-\x7E\x80-\xFC])/';
$patterns[3] = '/\xEE([\x40-\x7E\x80-\xFC])/';
$replacements[0] = "\xF6\\1";
$replacements[1] = "\xF7\\1";
$replacements[2] = "\xF3\\1";
$replacements[3] = "\xF4\\1";
$string_new = preg_replace( $patterns, $replacements, $string );
※もちろんこの逆も必要。
一応受信したメールはを
JIS → メール用SJIS(PHP標準変換) → web用SJIS(上記変換) →UTF-8(HTML_Emoji使用)
で、期待する変換はできたわけですが・・
よく考えてみるとこれだと誤変換が起こりますorz
ってことはこの変換って1文字ずつチェックしなきゃできないんじゃないか??
さてどうしよう。
・参考にしたサイト
http://php.y-110.net/wiki/index.php?%B7%C8%C2%D3%A1%A7%B3%A8%CA%B8%BB%FA%A1%A7%CA%D1%B4%B9
http://blog.asial.co.jp/330
http://pochi.orz.ne.jp/oasis/archive_257.htm
PHPでメール送信 [プログラミング]
mb_send_mail()関数を使ってのメール送信で、SMTPサーバを指定する方法がわかったのでメモ
ini_set( "SMTP", $smtp_host );
ini_set( "smtp_port", $smtp_port );
SMTP認証は・・・できないっぽい??
ini_set( "SMTP", $smtp_host );
ini_set( "smtp_port", $smtp_port );
SMTP認証は・・・できないっぽい??
Javaで画像処理 [プログラミング]
画像処理を簡単にする方法が無いか調べてみたのでメモ
http://discypus.jp/wiki/?Java%2F%B2%E8%C1%FC%BD%E8%CD%FD#content_1_4
http://ja.wikipedia.org/wiki/ImageMagick
http://www.db.is.kyushu-u.ac.jp/rinkou/java/jmagick.html
http://mechanics.civil.tohoku.ac.jp/soft/node43.html
http://kyle-in-jp.blogspot.com/search/label/JMagick
JMagick(ImageMagick)とやらを使うと簡単に利用できるらしい。
使えるフォーマットも多いし、ライセンスも商用も非商用も無料で使えるらしいのでいいかも。
http://discypus.jp/wiki/?Java%2F%B2%E8%C1%FC%BD%E8%CD%FD#content_1_4
http://ja.wikipedia.org/wiki/ImageMagick
http://www.db.is.kyushu-u.ac.jp/rinkou/java/jmagick.html
http://mechanics.civil.tohoku.ac.jp/soft/node43.html
http://kyle-in-jp.blogspot.com/search/label/JMagick
JMagick(ImageMagick)とやらを使うと簡単に利用できるらしい。
使えるフォーマットも多いし、ライセンスも商用も非商用も無料で使えるらしいのでいいかも。