PHP 17 (44%)
Java 9 (23%)
Ruby 7 (18%)
JavaScript 7 (18%)
C++ 7 (18%)
C# 5 (13%)
Perl 4 (10%)
Python 3 (7%)
ブログの内容からしてPHPが多いことは想像できたが、JavaとC#が思ったより多かったのは意外だった。PythonがゼロじゃなかったのはTracの影響かな?
2008年3月22日土曜日
2008年3月19日水曜日
個人的なPHP用のエディタ ランキング
前々から何か良いものはないかと思っていて、Komodo Editのことを知ったのでついでに調べてみた。
総評:
気軽に使うならPHPエディタで。何より気軽に立ち上げることができるのは何物にも変えがたい。
もしPCにパワーがあり、かつプログラム量が多いならKomode Editが良さそう。
- PHPエディタ
- 用途:PHP専用
- 起動の早さ:早い
- 入力補完:Ctrl+スペース
- PHPマニュアル:F1 (ただし表示されるphpspotのマニュアルは古い。htmlspecialcharsの第2引数の説明が間違ってる。変えられないのかな?)
- その他:PHPモードの場合、htmlやJavaScript、CSSがハイライトされないのが難点
- jEdit
- 用途:メインはJavaだが、PHP等の他の言語にも対応している
- 起動の早さ:まあまあ早い
- 入力補完:Ctrl+b
- PHPマニュアル:無し(?)
- その他:JavaのSwingで作ってあるので、少しもっさりする
- Komodo Edit
- 用途:汎用
- 起動の早さ:遅い
- 入力補完:Ctrl+スペース
- PHPマニュアル:Shift+F1 (Webブラウザでphp.netのマニュアルを表示)
- その他:コードのハイライト等の見た目はとても綺麗
- Eclipse
- 用途:メインはJavaだが、PHPプラグインを使えばPHPにも対応
- 起動の早さ:とても遅い
- VS.Php
- 有償。お試し版もあるが試してない
総評:
気軽に使うならPHPエディタで。何より気軽に立ち上げることができるのは何物にも変えがたい。
もしPCにパワーがあり、かつプログラム量が多いならKomode Editが良さそう。
CentOSに yumで FFmpegをインストール
大変そうなイメージが強かったが、実はyumでできることを知った。
以上。
config等のシクニチャはこんな感じ。
ただし、このFFmpegは3GPPの音声のAMRに対応していないらしく、対応させようと思ったら少し面倒。
他のツールで事前に変換して逃げるか?
ちなみにWMVの対応状況は、下記の通り。
- CentOS で構築する自宅サーバ : yum に RPMforge リポジトリを追加するのコマンドをコピー&実行して、RPMforgeリポジトリを追加する。
- 眠る開発屋blog » CentOS5にffmpegをインストール(yum)のコマンドをコピー&実行して、yumからFFmpegをインストール。
以上。
config等のシクニチャはこんな感じ。
FFmpeg version SVN-rUNKNOWN, Copyright (c) 2000-2007 Fabrice Bellard, et al.
configuration: --prefix=/usr --libdir=/usr/lib --mandir=/usr/share/man --incdir=/usr/include/ffmpeg --enable-libmp3lame --enable-libogg --enable-libvorbis --enable-libogg --enable-libtheora --enable-libfaad --enable-libfaac --enable-libgsm --enable-xvid --enable-x264 --enable-liba52 --enable-liba52bin --enable-pp --enable-shared --enable-pthreads --enable-gpl --disable-strip
libavutil version: 49.4.0
libavcodec version: 51.40.4
libavformat version: 51.12.1
built on Jun 4 2007 11:02:12, gcc: 4.1.1 20070105 (Red Hat 4.1.1-52)
ただし、このFFmpegは3GPPの音声のAMRに対応していないらしく、対応させようと思ったら少し面倒。
他のツールで事前に変換して逃げるか?
ちなみにWMVの対応状況は、下記の通り。
DEVSD wmv1WMV9をデコードできるようだ。
DEVSD wmv2
D V wmv3
特選:ちょっと変わった画像関連のJavaScript 16個
skuare.net : 画像関連 アーカイブから選別した。(←それにしても、このサイトのJavaScriptデータは物凄いことになってる。)
- マウスオーバーで画像の上にテキストを表示
- 枠を付ける
- 画像サイズを表示幅に合わせる
- 画像を自分の周りに周回させるように見せる
- 3D風リフレクション(床面への画像の反射表示)を付ける
- リフレクションや枠の影を付ける
- 小さい画像上でのマウスの動きに合わせて、大きい画像の該当部分を表示する
- 画像のロードを画面上に出てくる時まで遅らせる
- 透過のグラデーションを付ける
- 画像の端をめくる
- 左右に傾けて表示する
- 虫眼鏡で拡大する
- Aqua風にする
- 影を付ける
- Drop Shadow Plugin (画像だけでなく、文字やinput要素にも影を付けられる)
2008年3月15日土曜日
「はてな」で見る、IEバージョン別のスクリーンショットの比較
IE7バージョンをさかのぼっていって、IEの変遷を見つつ、はてなのトップページがどのバージョンまで見られるか試してみる。
(最初はYahoo! Japanでスクリーンショットを撮ってみたが、あまりにも無難に対応しているのでやめた。)
実験に使ったIE7は、インストールしてからほとんど設定等を変更していないものを使っている。
IE6以前についてはMultipleIEsのものを使っている。
IE7
以前のIEと比べると上部のUIが大幅に変わった。メニューバーが隠れるのでWindowが広く使える。検索窓が標準で付いている。フィードに対応している。

IE6
上部メニューのアイコンがソフト。

IE5.5
シンプル。はてなではここまで対応しているようだ。

IE5.0
はてなではJavaScriptのエラーが発生。(左下の黄色い三角マーク。)また、「注目のキーワード」のところが表示されていない。

IE4
上部メニューにMailがある。もはやはてなは見られない。
IE3
手元のWindowsXPで起動すると、すぐ異常終了してしまうので確認できなかった。
(最初はYahoo! Japanでスクリーンショットを撮ってみたが、あまりにも無難に対応しているのでやめた。)
実験に使ったIE7は、インストールしてからほとんど設定等を変更していないものを使っている。
IE6以前についてはMultipleIEsのものを使っている。
IE7
以前のIEと比べると上部のUIが大幅に変わった。メニューバーが隠れるのでWindowが広く使える。検索窓が標準で付いている。フィードに対応している。
IE6
上部メニューのアイコンがソフト。
IE5.5
シンプル。はてなではここまで対応しているようだ。
IE5.0
はてなではJavaScriptのエラーが発生。(左下の黄色い三角マーク。)また、「注目のキーワード」のところが表示されていない。
IE4
上部メニューにMailがある。もはやはてなは見られない。
IE3
手元のWindowsXPで起動すると、すぐ異常終了してしまうので確認できなかった。
Visio 2003 から PDFへ 変換する方法
- Visioの「ファイル」メニューから、「Webページとして保存」を選択し、Webページとして保存する。
- このとき作成されるフォルダの中に「gif_1.gif」というGIF画像ファイルがあるが、これがVisioの画面ハードコピー。画像ファイルのままでよいならこのまま使える。
- あとはこのGIF画像ファイルを貼り付けて、PDFファイルを作る。やり方はいろいろあるが、例えばGoogleのサービスであるGoogleドキュメントを使ってもできる。
Googleドキュメントで新規ドキュメントを作成し、先ほどのGIF画像ファイルを挿入(アップロード)する。 - 「ファイル」メニューから「PDF形式でエクスポート」を選択し、PDFファイルとしてダウンロードする。
- こんな感じでできあがり。
IEでも faviconを表示するためにサーバ側で必要なこと
IEではfaviconがURL入力欄の左側に(IE7ではタブの左側にも)表示される。
(例)

しかし、サイトによってはfaviconの代わりにIEアイコンが表示される。というよりfaviconが表示されないサイトの方が多い。
(例)
Yahoo!でさえも。Firefoxでは表示されるので、faviconが無いわけではない。( http://www.yahoo.co.jp/favicon.ico にある。)

原因は、faviconのファイル形式か、あるいはfaviconの置いてあるドメインらしい。
上記引用元で紹介されている、@icon変換をダウンロードしてfaviconを作成したところ、無事にIEでもfaviconを表示できた。
(@icon変換に読み込ませるために、既存のfaviconをいったんWindowsのbmp形式に変換したが。)
(例)
しかし、サイトによってはfaviconの代わりにIEアイコンが表示される。というよりfaviconが表示されないサイトの方が多い。
(例)
Yahoo!でさえも。Firefoxでは表示されるので、faviconが無いわけではない。( http://www.yahoo.co.jp/favicon.ico にある。)
原因は、faviconのファイル形式か、あるいはfaviconの置いてあるドメインらしい。
IEのFaviconに関する仕様は非常に厳格です。
まずWindows icon形式(bmp形式ではないよって拡張子を変えただけではだめ)でなければなりません。
(中略)
またIEはサイト(=ドメイン)のルートにあるfavicon.ico以外は読み込みません。
上記引用元で紹介されている、@icon変換をダウンロードしてfaviconを作成したところ、無事にIEでもfaviconを表示できた。
(@icon変換に読み込ませるために、既存のfaviconをいったんWindowsのbmp形式に変換したが。)
2008年3月13日木曜日
バッチファイルでWindowsのサービスを再起動する方法
Windows上で動いているApacheなどのサービスを、バッチファイルを使って再起動する方法。
SC.exeを使って再起動しようとすると上手くいかない。
そのため、STOPが完了する前にSTARTを実行してしまい、その結果STARTに失敗している。
どうすればよいか?
昔ながらのNETコマンドを使えばよい。
(待たされたくない場合には不便だが。)
これでタスクに登録して定期的に再起動できる。
SC.exeを使ってApacheを再起動するためにPHPでプログラムを組んでからこれに気付いたことは、内緒だよ。
SC.exeを使って再起動しようとすると上手くいかない。
set service_name=Apache2結果:
sc stop %service_name%
sc start %service_name%
C:>set service_name=Apache2この結果ではわかり辛いが、SC.exeは処理をフォークして非同期で進めるため、サービスのSTOPが完了する前に処理が戻ってきてしまう。
C:>sc stop Apache2
SERVICE_NAME: Apache2
TYPE : 10 WIN32_OWN_PROCESS
STATE : 3 STOP_PENDING
(NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN))
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x3
WAIT_HINT : 0x7530
C:>sc start Apache2
[SC] StartService FAILED 1056:
サービス インスタンスは既に実行されています。
そのため、STOPが完了する前にSTARTを実行してしまい、その結果STARTに失敗している。
どうすればよいか?
昔ながらのNETコマンドを使えばよい。
set service_name=Apache2結果:
net stop %service_name%
net start %service_name%
C:>set service_name=Apache2NETコマンドはコマンドの完了まで処理が戻ってこないので、このようなケースでは便利だ。
C:>net stop Apache2
Apache2 サービスを停止中です.
Apache2 サービスは正常に停止されました。
C:>net start Apache2
Apache2 サービスを開始します..
Apache2 サービスは正常に開始されました。
(待たされたくない場合には不便だが。)
これでタスクに登録して定期的に再起動できる。
SC.exeを使ってApacheを再起動するためにPHPでプログラムを組んでからこれに気付いたことは、内緒だよ。
IEの JavaScriptで リンクの hrefを変えると表示内容が変わる問題
IE6/7のJavaScriptでリンクをいじった時のバグとその対策について。
問題が起きる条件
上記の条件を満たす場合、JavaScriptを使ってリンク(a要素)のhref属性を変更すると、なぜかリンクとして表示しているテキスト等がURLになってしまう。
対策としては、innerHTMLでリンクのテキスト等を退避しておき、href属性変更後に退避した値をセットする。
参考: アカラボ: javascript: link.href を変更するとリンクテキストが壊れます
問題が起きる条件
- ブラウザはIE6 or IE7
- 該当のリンクの文字列に、@(アットマーク)が含まれている
上記の条件を満たす場合、JavaScriptを使ってリンク(a要素)のhref属性を変更すると、なぜかリンクとして表示しているテキスト等がURLになってしまう。
このようなリンクを、
<a id="link" href="before.html">foo@bar</a>
このようなJavaScriptでhrefを変更すると、
var link = document.getElementById("link");
link.href = link.href.replace("before", "after"); //右辺にhref属性が入っていると駄目らしい
このようなリンクになるはず(じっさいFirefoxではこうなる)が、
<a id="link" href="after.html">foo@bar</a>
こうなってしまう。
<a id="link" href="after.html">after.html</a>
対策としては、innerHTMLでリンクのテキスト等を退避しておき、href属性変更後に退避した値をセットする。
var inner = link.innerHTML;
link.href = link.href.replace("before", "after");
link.innerHTML = inner;
参考: アカラボ: javascript: link.href を変更するとリンクテキストが壊れます
PHPの DateTimeオブジェクトの簡易リファレンス
あまり使わない部分は省略。
コンストラクタ
※パラメータの$strTimeは日時を表す文字列。(参考:PHPの日付操作はDateTimeが簡単)
$dateTime = new DateTime($strTime);
または
$dateTime = date_create($strTime);
日時を加減算する
※パラメータの$strTimeは日時の加減算表す文字列。(参考:PHPの日付操作はDateTimeが簡単)
$dateTime->modify($strTime);
または
date_modify($dateTime, $strTime);
日付をセットする
$dateTime->setDate($year, $month, $date);
または
date_date_set($dateTime, $year, $month, $date);
時刻をセットする
$dateTime->setTime($hour, $minute, [$second]);
または
date_time_set($dateTime, $hour, $minute, [$second]);
指定したフォーマットの文字列にする
※パラメータの$strFormatはdate()などで使うフォーマット。(例:"Y/m/d H:i:s")
$dateTime->format($strFormat);
または
date_format($dateTime, $strFormat);
コンストラクタ
※パラメータの$strTimeは日時を表す文字列。(参考:PHPの日付操作はDateTimeが簡単)
$dateTime = new DateTime($strTime);
または
$dateTime = date_create($strTime);
日時を加減算する
※パラメータの$strTimeは日時の加減算表す文字列。(参考:PHPの日付操作はDateTimeが簡単)
$dateTime->modify($strTime);
または
date_modify($dateTime, $strTime);
日付をセットする
$dateTime->setDate($year, $month, $date);
または
date_date_set($dateTime, $year, $month, $date);
時刻をセットする
$dateTime->setTime($hour, $minute, [$second]);
または
date_time_set($dateTime, $hour, $minute, [$second]);
指定したフォーマットの文字列にする
※パラメータの$strFormatはdate()などで使うフォーマット。(例:"Y/m/d H:i:s")
$dateTime->format($strFormat);
または
date_format($dateTime, $strFormat);
2008年3月7日金曜日
国内ブログサービスのユーザー数の変遷 (2007 ~ 2008)
国内の大手ブログサービスの、最近1年間でのアクティブユーザー数の変化。
データはブログサービス比較 - ブログファン ブログ総合情報のもの。
2007年
↓
2008年 (カッコ内は2007年の順位からの変動)
アメーバブログの躍進が目を引く。Seesaaも意外に頑張ってる。
データはブログサービス比較 - ブログファン ブログ総合情報のもの。
2007年
- FC2ブログ 289,819
- livedoor Blog 276,660
- Yahoo!ブログ 209,658
- 楽天ブログ 151,438
- ヤプログ! 149,629
- アメーバブログ 131,776
- goo ブログ 124,757
- Seesaaブログ 98,652
- エキサイトブログ 93,419
- JUGEM 89,597
↓
2008年 (カッコ内は2007年の順位からの変動)
- FC2ブログ 378,886 (→)
- アメーバブログ 325,553 (↑)
- livedoor Blog 236,064 (↓)
- Yahoo!ブログ 226,906 (↓)
- ヤプログ! 168,901 (→)
- Seesaaブログ 162,245 (↑)
- 楽天ブログ 129,134 (↓)
- goo ブログ 123,208 (↓)
- JUGEM 109,601 (↑)
- ココログ 72,675 (↑)
アメーバブログの躍進が目を引く。Seesaaも意外に頑張ってる。
IE6でダウンロードするファイルのファイル名が指定できない問題の回避方法
PHPでzipファイルを保存時のファイル名を指定して出力ようとしたが、IE6だけ保存時のファイル名が指定したものにならなかった。(FirefoxとIE7は思い通りになった。)
調べてみるとそれらしいのが見つかった。
Internet Explorer 6 でダウンロード ダイアログに正しいファイル名が表示されない
確かにApacheでgzipにしている。圧縮されていて分からないから他のファイル名を付けてしまうのか。
できればgzipするかどうかをContent-Typeで判断させたいが、それらしいのが見つからないのでSetEnvIfで該当のPHPをgzの対象外にした。
それでもまだうまくいかないので調べてみると、もう一つそれらしいのが見つかった。
Content-Disposition: attachemnt と Cache-Control: no-cache によるダウンロードの問題
該当ページはSESSIONを使っているのでデフォルトCache-Controlがno-cacheになっている。
適当な値でCache-Controlを指定したら正しいファイル名で出力できるようになった。
調べてみるとそれらしいのが見つかった。
Internet Explorer 6 でダウンロード ダイアログに正しいファイル名が表示されない
確かにApacheでgzipにしている。圧縮されていて分からないから他のファイル名を付けてしまうのか。
できればgzipするかどうかをContent-Typeで判断させたいが、それらしいのが見つからないのでSetEnvIfで該当のPHPをgzの対象外にした。
それでもまだうまくいかないので調べてみると、もう一つそれらしいのが見つかった。
Content-Disposition: attachemnt と Cache-Control: no-cache によるダウンロードの問題
該当ページはSESSIONを使っているのでデフォルトCache-Controlがno-cacheになっている。
適当な値でCache-Controlを指定したら正しいファイル名で出力できるようになった。
2008年3月4日火曜日
PDOでの PostgreSQLの booleanへの INSERT
PHPのPDOについて。
PDOのPrepared Statementで、PostgreSQLのboolean型の列にデータを登録する場合。
パラメータとしてPHPのbool値のfalseを渡すと、NULLになる。
FALSEを登録したい場合、文字列として"FALSE"を渡す。
TRUEの場合は、PHPのbool値のtrueでも、文字列の'TRUE'でもどちらでも大丈夫。
PDOのPrepared Statementで、PostgreSQLのboolean型の列にデータを登録する場合。
パラメータとしてPHPのbool値のfalseを渡すと、NULLになる。
$pdo = new PDO(省略);
$stmt = $pdo->prepare('INSERT INTO foo(bar) VALUES(?)');
$stmt->execute(array(false)); //=> NULLになる
FALSEを登録したい場合、文字列として"FALSE"を渡す。
$pdo = new PDO(省略);
$stmt = $pdo->prepare('INSERT INTO foo(bar) VALUES(?)');
$stmt->execute(array('FALSE')); //=> FALSEになる
TRUEの場合は、PHPのbool値のtrueでも、文字列の'TRUE'でもどちらでも大丈夫。
Windows 98 SE on VMware インストールメモ
MSDNのCDを使ってインストールする。
MSDNのWin98SEのCDからはブートできない(isoイメージはなく、SETUP.EXEなどのインストーラが入っている)ので、一手間かける必要がある。
インストール手順
懐かしい。初めて買ったWindowsが98SEだった。
参考:
ブログ跡地: VMwareにWindows 98の環境を作る一つの方法
コマンドプロンプトを使ってみよう! -ファイル操作-
AOL Q&A広場 Windows98をインストールしようとしたのですが・・・
MSDNのWin98SEのCDからはブートできない(isoイメージはなく、SETUP.EXEなどのインストーラが入っている)ので、一手間かける必要がある。
インストール手順
- MSDNのWin98SEのCDから、JAPANESEフォルダ内のWIN98SE_ATフォルダを別のCD-R等にコピーする。
- そのままだと9文字以上のファイル名(の重複?)の関係で、MS-DOSからSETUP.EXEを実行できないため。
- Windows 98 Boot Disk Download | AllBootDisksから"Windows98.exe"をダウンロードする。
- 空のフロッピーディスクをフロッピードライブに入れて2.を実行する。フロッピーディスクにディスクイメージが書き込まれる。
- VMX BuilderでWin98用のVMXファイルを作る。
- やり方はCentOS on VMware 構築メモと同様。
- HDDは標準インストールでは「最低187.6MB」必要。
- Win98はFAT32なので、HDDは2Gまでしか認識しないので注意。
- 4.のVMXをVMwareで起動し、3.で作ったフロッピーからブートする。(Win98のMS-DOSが起動する。)
- 指示に従いfdiskでCドライブのパーティションを作る。
- 指示に従いrestart。
- 再起動後、Cドライブをフォーマットする。(format c:)
- フォーマットしないでインストールしようとするとエラーになる。("Windows Setup requires 7340032 bytes available on your C: drive.")
- 最初はフォーマットがうまくいかなかった("Invalid media type reading drive C:")が、何度かVMX作成をやり直したらなぜかできるようになった。
- クイックフォーマットはできない。
- MS-DOSから、1.で作ったCD(今回はEドライブだった)の中にあるSETUP.EXE(今回は"e:win98sesetup.exe")を実行する。
- あとはウィザードに従って進めてゆく。
- プロダクトキーは自動で入力されるので準備不要。
- Win98の起動ディスクを作る場合は、フロッピーディスクが2枚必要。
- 途中で何度か再起動するのでフロッピーディスクは抜いておく。
- 途中で何度かWin98SEのインストールCDを求められるので、その時には1.のCDのフォルダ(今回は"D:win98se")を指定する。
参考:
ブログ跡地: VMwareにWindows 98の環境を作る一つの方法
コマンドプロンプトを使ってみよう! -ファイル操作-
AOL Q&A広場 Windows98をインストールしようとしたのですが・・・
Google AdSenseに関するプライバシーポリシー
当サイトではGoogle AdSenseの広告掲載に伴いGoogle AdSenseにクッキー等のユーザー情報を送信している。
(Googleでのそれらの情報に対するポリシーについてはGoogle プライバシー ポリシー ハイライト版を参照。)
Googleにクッキーを送信したくない場合は、ブラウザの設定を変更することによりクッキーを送信しないようにできる。(一部のブラウザを除く)
2009/03/14 追記
ユーザーはAdvertising and Privacy – Google Privacy CenterにアクセスしてGoogleへのクッキー送信についての設定を変更することができる。
参考:
Google AdSense - 利用規約
AdSense ヘルプ センター (プライバシーおよびセキュリティについて)
プライバシー・ポリシーについて - AdSense のガイドライン | Google グループ (AdSense利用者からの意見など)
(Googleでのそれらの情報に対するポリシーについてはGoogle プライバシー ポリシー ハイライト版を参照。)
Googleにクッキーを送信したくない場合は、ブラウザの設定を変更することによりクッキーを送信しないようにできる。(一部のブラウザを除く)
2009/03/14 追記
ユーザーはAdvertising and Privacy – Google Privacy CenterにアクセスしてGoogleへのクッキー送信についての設定を変更することができる。
参考:
Google AdSense - 利用規約
AdSense ヘルプ センター (プライバシーおよびセキュリティについて)
プライバシー・ポリシーについて - AdSense のガイドライン | Google グループ (AdSense利用者からの意見など)
2008年3月1日土曜日
動画共有サイトOnAirの サムネイル取得API用 PHPクラス
動画共有サイトOnAirのサムネイル取得APIのPHPラッパー "Services_OnAir" を作ってみた。
PEAR形式で公開できるといいんだけど、とりあえずソースの掲載だけ。
(Bloggerの都合でインデントは全角スペースにしてある。)
使用例は下記のような感じで。
PEAR形式で公開できるといいんだけど、とりあえずソースの掲載だけ。
(Bloggerの都合でインデントは全角スペースにしてある。)
<?php
class Services_OnAir {
public $apiUrl;
public $title;
public $videoUrl;
public $thumbnailUrl;
/**
* APIに情報を送信してデータを取得する
*/
public function sendAndLoad($videoNo, $time, $comment = "") {
$this->apiUrl = 'http://nowonair.tv/api/thumbnail.page?';
$this->apiUrl .= "videoNo=$videoNo&time=$time&comment=" . urlencode($comment);
$str = mb_convert_encoding(file_get_contents($this->apiUrl), 'UTF-8', 'SJIS');
$arr = explode("n", $str, 2);
$xml = simplexml_load_string('<?xml version="1.0" encoding="UTF-8" ?>' . $arr[1]);
if ($xml->success) {
$title = mb_convert_encoding($xml->video->title, mb_internal_encoding(), 'UTF-8');
$this->title = html_entity_decode($title, ENT_QUOTES);
$this->videoUrl = $xml->video->url;
$this->thumbnailUrl = $xml->thumbnail->url;
}
return $xml->success;
}
/**
* htmlエスケープしたタイトルを取得する
*/
public function getTitle() {
return htmlspecialchars($this->title, ENT_QUOTES);
}
/**
* サムネイルのimgタグを取得する
*/
public function getImageTag() {
return '<img src="' . $this->thumbnailUrl . '" alt="' . $this->getTitle() . '" />';
}
/**
* サムネイルの付きのリンクを取得する
*/
public function getImageLink() {
return '<a href="' . $this->videoUrl . '">' . $this->getImageTag() . $this->getTitle() . '</a>';
}
}
使用例は下記のような感じで。
<?php
require('Services/OnAir.php');
$onair = new Services_OnAir();
if ($onair->sendAndLoad(100, 10, 'テスト')) {
echo $onair->getImageLink();
} else {
echo 'faild';
}
JavaScriptによる変数型の判定
ほとんどは typeof で判定できるが、一部は instanceof で確認しないと判断できない。
太字のところはひっかかりやすいので注意。RegExpはFirefoxとIEで結果が違う。
Boolean
typeof true => boolean
Number
typeof 123 => number
String
typeof "abc" => string
Object
typeof {} => object
Array
typeof [] => object
[] instanceof Array => true
RegExp
typeof /regexp/ => (Firefox2の場合) function / (IE7の場合) Object
/regexp/ instanceof RegExp => true
/regexp/ instanceof Function => false
Function
typeof function(){} => function
(function(){}) instanceof Function => true
undefined
typeof undefined => undefined
undefined instanceof Object => false
null
typeof null => object
null instanceof Object => false
太字のところはひっかかりやすいので注意。RegExpはFirefoxとIEで結果が違う。
Boolean
typeof true => boolean
Number
typeof 123 => number
String
typeof "abc" => string
Object
typeof {} => object
Array
typeof [] => object
[] instanceof Array => true
RegExp
typeof /regexp/ => (Firefox2の場合) function / (IE7の場合) Object
/regexp/ instanceof RegExp => true
/regexp/ instanceof Function => false
Function
typeof function(){} => function
(function(){}) instanceof Function => true
undefined
typeof undefined => undefined
undefined instanceof Object => false
null
typeof null => object
null instanceof Object => false
SimpleXMLでShift_JISを使うには
PHPのSimpleXMLはShift_JISに対応していないので、simplexml_load_string()やsimplexml_load_file()の前にSimpleXML内の文字コードであるUTF-8に変換しておく必要がある。
ただし、SimpleXMLはXMLの先頭にあるXML宣言の中のencoding属性を読み取って、それに基づいて文字コード変換をするので、このencoding属性も変えなければならない。
元のXML(Shift_JIS)
文字コードとXML宣言を変換
できあがったXMLのイメージ
参考: SJIS、EUC-JP、JISなどの日本語をSimpleXMLで使う方法 - PHP::PEAR - dozo PukiWiki
ただし、SimpleXMLはXMLの先頭にあるXML宣言の中のencoding属性を読み取って、それに基づいて文字コード変換をするので、このencoding属性も変えなければならない。
元のXML(Shift_JIS)
<?xml version="1.0" encoding="Shift_JIS" ?>
<root>
<element>
<child>foo</child>
<child>bar</child>
<child>baz</child>
</element>
</root>
文字コードとXML宣言を変換
$str = mb_convert_encoding(file_get_contents($path), 'UTF-8', 'SJIS');
$arr = explode("n", $str, 2); //この例ではXML宣言の後に改行している場合のでそこで区切った
$xml = simplexml_load_string('<?xml version="1.0" encoding="UTF-8" ?>' . $arr[1]);
できあがったXMLのイメージ
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<element>
<child>foo</child>
<child>bar</child>
<child>baz</child>
</element>
</root>
参考: SJIS、EUC-JP、JISなどの日本語をSimpleXMLで使う方法 - PHP::PEAR - dozo PukiWiki
PHPでゼロ埋め(ゼロ パディング)
(2011/1/21 追記:もうちょっとスマートな方法をfloatingdays: PHPで文字列をパディング (ゼロ埋め、スペース埋め等)に書いたので、そちらも参考に。)
PHP: sprintf - Manual を読んでも理解できない。C言語と同じ?
シンプルなゼロ埋めなら下記でよさそう。
//5桁の場合の例第1引数の説明
$str = sprintf('%05d', $num);
- % ・・・固定で
- 0 ・・・ゼロで埋めるという指定。(参考:スペースで埋める場合はスペースを指定する)
- 5 ・・・桁数
- d ・・・10進数という指定
参考: アクセスカウンタのゼロ埋め(CGI形式)