2008年2月4日月曜日

Webブラウザだけで Flashのブログパーツをちょちょいと作れるサービス

Webブラウザだけで簡単にFlashのブログパーツ(ウィジェット/ガジェット)を作る事ができる「Sprout Builder」を試しに触ってみた。

コンポーネントは Media, General, Services の3種類に分類されていて、ドラッグ&ドロップで簡単に貼り付けられる。
すっきりした見た目のコンポーネントが用意されているので、デザイン面に苦戦しなくてもいいのが魅力的。
各コンポーネントの設定は、プロパティをちょちょいといじれば簡単に設定できる。

Media
Audio、写真、動画など。
動画ファイル等のURLは動的に指定できないので、動画を切り替えたかったら動画のあるサーバ側で出力するファイルを切り替える必要がある。



General
カレンダーやフィード一覧などのほか、表示するコンポーネントを切り替えるサムネイルパネルなどもここに含まれる。



Services
Yahoo MapsやGoogle Chart APIまである。



ActionScriptで操作できるわけではないので、できることは限られている。
でもブログパーツ程度の使い方なら、お手軽にできて便利そう。

Betaが終わっても無料なのかな?


2008年2月3日日曜日

PHPでいろいろな型の変数を文字列に変換する5つの関数の比較

debugなどで変数の中身を見たい時などにvar_dump()したりするけど、そんな変数を文字列に変換する関数たちによる変数型による違いを比較してみた。

(凡例:型 => 文字列に変換した値の例)
print_r()

  • boolean(true) => 1
  • boolean(false) =>
  • integer => 123
  • double => 0.5
  • string => abc
  • array => Array ( [0] => 1 [1] => 2 [2] => 3 )
  • object => Example Object ( [public_var] => 123 [_private_var:private] => 456 )
  • resource => Resource id #3
  • null =>
シンプルで見やすい。
trueが1になる。
falseやnullの場合、何も出力されない。


var_dump()
  • boolean(true) => bool(true)
  • boolean(false) => bool(false)
  • integer => int(123)
  • double => float(0.5)
  • string => string(3) "abc"
  • array => array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
  • object => object(Example)#1 (2) { ["public_var"]=> int(123) ["_private_var:private"]=> int(456) }
  • resource => resource(3) of type (stream)
  • null => NULL
変数の型も出力されて、詳細な情報が得られる。
そのまま出力されてしまうので、内容を取得して使いたかったら出力制御関数を組み合わせて使う。


var_export()
  • boolean(true) => true
  • boolean(false) => false
  • integer => 123
  • double => 0.5
  • string => 'abc'
  • array => array ( 0 => 1, 1 => 2, 2 => 3, )
  • object => Example::__set_state(array( 'public_var' => 123, '_private_var' => 456, ))
  • resource => NULL
  • null => NULL
シンプルで見やすい。
print_r()と違い、booleanやnullの変換もできるし、stringにクォーテーションが付くのがよい。
resourceがなぜかnullになる。


serialize()
  • boolean(true) => b:1;
  • boolean(false) => b:0;
  • integer => i:123;
  • double => d:0.5;
  • string => s:3:"abc";
  • array => a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}
  • object => O:7:"Example":2:{s:10:"public_var";i:123;s:21:"�Example�_private_var";i:456;}
  • resource => i:0;
  • null => N;
機械的に処理するには実は使いやすいかも。


strval()
  • boolean(true) => 1
  • boolean(false) =>
  • integer => 123
  • double => 0.5
  • string => abc
  • array => Array
  • object => ※FatalErrorが発生する
  • resource => Resource id #3
  • null =>
print_r()と似ているが、arrayとobjectを変換できない。
暗黙の変換で文字列にした場合はこのパターンになる。


(おまけ)
gettype()
  • boolean(true) => boolean
  • boolean(false) => boolean
  • integer => integer
  • double => double
  • string => string
  • array => array
  • object => object
  • resource => resource
  • null => NULL
nullだけなぜか大文字。

preg_replace()で文字化け

UTF-8で、preg_replace()を使ってカタカナを変換しようとしたところ文字化けが発生。

$str = 'ピーエイチピー';
$regex = '[^ピー]+';
$replace = 'ピー';
echo preg_replace("/$regex/", $replace, $str);

ピー�ピー�ピー�ピーピー

調べたところ、preg系の関数(preg_match()など)はマルチバイトに対応していないらしい いるのはUTF-8でパターン修飾子を指定した場合のみ。
[PHP-users 21761]Re: preg_replaceで文字化け

(2008/02/04 追記)
UTF-8でpreg系を使う場合は、パターン修飾子として"u"を指定すればOK。
$str = 'ピーエイチピー';
$regex = '[^ピー]+';
$replace = 'ピー';
echo preg_replace("/$regex/u", $replace, $str);

ピーピーピー
参考: PHP: パターン修飾子 - Manual
(追記終わり)


マルチバイトの文字列を正規表現で変換する場合はmb_ereg系(またはmb_eregi系)の関数を使わなければならない。
$str = 'ピーエイチピー';
$regex = '[^ピー]+';
$replace = 'ピー';
echo mb_ereg_replace($regex, $replace, $str);

ピーピーピー

Windowsの PHPの sendmail_from

php.iniにあるWindows専用の設定"sendmail_from"と関数mail()/mb_send_mail()について。

メールアドレスをセットしておくと、そのメールアドレスがmail()やmb_send_mail()で送るメールのFrom、Return-Path、それにSMTPのMAIL FROM(エンベロープFrom) として使われる。

sendmail_fromがセットされていない場合、mail()/mb_send_mail()の第4引数の中で指定するメールheaderの中のFromが、Return-PathやエンベロープFromにも使われる。
その場合にFromにメールアドレスだけでなく表示名(例:山田 <foo@example.com>)も付けている場合は、メール送信に失敗する。
Fromの表示名も使いたい場合、メールheaderには表示名付きのFromをセットし、エンベロープFromには ini_set("sendmail_from", $from) でメールアドレスのみのFromをセットすればOK。

sendmail_fromもheaderの中のFromもセットされていない場合、メールの送信はできない。(Warning "sendmail_from" not set in php.ini or custom "From:" header missing in ... になる。)

Apacheで拡張子から紐付けられている Mime typeのリスト

手元にあるApache2.2.8で、出力するファイルの拡張子を元にMime type(Content-type)を設定している設定の中で、主なものの抜粋。


ファイル:httpd.conf
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz


ファイル:mime.types
application/atom+xml atom
application/javascript js
application/msword doc dot
application/octet-stream bin dms lha lzh class so iso dmg dist distz pkg bpk dump elc
application/pdf pdf
application/rdf+xml rdf
application/rss+xml rss
application/vnd.ms-powerpoint ppt pps pot
application/x-shockwave-flash swf
application/xml xml xsl
application/zip zip
audio/mpeg mpga mp2 mp2a mp3 m2a m3a
audio/x-ms-wma wma
image/bmp bmp
image/gif gif
image/jpeg jpeg jpg jpe
image/png png
image/x-icon ico
text/css css
text/csv csv
text/html html htm
text/plain txt text conf def list log in
video/3gpp 3gp
video/3gpp2 3g2
video/mp4 mp4 mp4v mpg4
video/mpeg mpeg mpg mpe m1v m2v
video/quicktime qt mov
video/x-ms-wmv wmv
video/x-msvideo avi


注意点:

  • JavaScriptが、"application/x-javascript"ではなく"application/javascript"になっている
  • 主なメディアファイルはある。いつの間にか3gpp2もある。でもflvはない

ブログ アーカイブ

tags