memocon プログラミングのメモや物欲日記、雑記等

FuelPHP:Rest_Controllerの拡張子を省略した時のフォーマットを変更する

2012年07月12日 02時00分

FuelPHPには強力なWebAPI開発用(?)のコントローラーが備わっていると本や勉強会で知りそれならば使わない手はないと最初に手を出してみたのがRest_Controller。
これはWebAPIなどでjsonやxml、csv等を返すサービスを作る場合にとても便利な機能が満載なのだ。

documentや参考書籍を片目にどうにか希望通りの形までもっていけた。

しかしそこで気になったのがURLの拡張子を省略した時に返却されるフォーマットがxmlだったこと。

拡張子を省略した時の形式をjsonにしたかったので調べてみたらfuel/core/config/rest.phpにdefault_formatなるまんまなものがあったのでfuel/app/config/rest.phpにコピーして値をxmlからjsonに変更してみた。

fuel/app/config/rest.php

しかしこれだけでは不十分で同じrest.phpファイル内にあるignore_http_acceptがデフォルトのfalseの場合、
HTTPヘッダ情報のHTTP_ACCEPTに含まれるmimeタイプがRest_Controllerの$_supported_formatsの中に存在するとdefault_formatより優先されてしまう。
$_supported_formatsをjsonのみにした場合は問題ないがxmlもサポートして拡張子を省略した場合はjson形式に固定して返却したければこの値をtrueにする。

fuel/app/config/rest.php

Bluetoothスピーカー GENEVA XSを購入した

2012年07月09日 00時03分

画像の右上の赤いやつ。

今回話題にするGENEVA XSというスピーカー。

この商品を買うまではスピーカーは全てスピーカーケーブルで接続するタイプのスピーカーばかり使用していた。

しかしBluetooth接続が可能なこの機種を手に入れてからは無線の有用性に感動してばかりだ。

何しろここ3年ぐらいで手に入れた機器(iMac、Mac book air、iPhone、iPad)全てにBlue toothが備わっている。
これら全ての音の出力を面倒な配線無しでこのスピーカーから出せるのだ。
この感動は既に持っているBluetooth対応機種が多ければ多いほど恩恵を受けられるだろう。
※とは言ってもマルチベアリングには対応していない

数あるBlue tooth対応スピーカーの中でもこのGENEVA XSが他と比べて特化している部分はそのデザインと可搬性だろう。

スピーカー部分がケースと一体となっていてすぐに蓋を閉じればもう持ち運び可能な状態になる。
そして開いたら即スピーカーという訳だ。
勿論、バッテリー駆動も可能なので電源の心配は不要。

この可搬性は家の中でたとえばリビングにあるPCで音楽を再生しそれをキッチンで聴きながら料理をしたり、iPhoneのGarage Bandで作った曲をリハスタ等でバンドメンバーに直接聴かせる時など多様な場面で役に立つだろう。
iPhoneやiPadなどに付いてるオマケ程度のスピーカーとは流石に出力が違う。

しかしGENEVA XS自体も可搬性に特化したスピーカーなので音に過度な期待はしてはいけない。
あくまでサブでスポット的に使用したりする場合にその可搬性が大いに活躍してくれるだろう。

Bluetooth接続が可能でデザインもその可搬性を最大限に生かすように造られている。
コンセプトがハッキリとしていて潔い商品だ。

イデアインターナショナル:公式通販

PHP:ssh2接続しscopyでファイル送受信

2012年06月26日 08時36分

ホスティング会社のファーストサーバが顧客のデータを削除し復旧できないという大失態をやらかしてから数日が経過し、サイト復旧の速さが日頃からデータのバックアップを取っているかというリスク管理の差で出ている。

ファーストサーバ:6/20に発生した大規模障害に関するお詫びとお知らせ
http://support2.fsv.jp/info/nw20120620_01.html

被害を受けたサイト一覧
http://ict.pken.com/2012/06/first_server_list/

己がバックアップ環境を省みると趣味程度だからとサイトのDB、html共にとっていない事に気が付いた。
現時点のデータが全部消失したら間違いなく再開などしないだろう。

そんなことにならない為にもphpでssh2接続しscopyでバックアップファイルをローカルにコピーする環境を作った際の手順。


CentOSでphpのpecl:ssh2を用意するまでの手順.

pecl, phpizeを使えるようにphp-devel,php-pearをインストール。
libssh2をコンパイルできるようにopenssl-develをインストール。
libssh2を取得してインストール
pecl ssh2を取得してインストール
extentionに追加
apache再起動

phpでSSH接続&scopyでファイル取得

上記でpecl:ssh2が使用できるようになったらssh2関数が使えるようになる。

下はscopyでサーバ上のバックアップファイルをローカルにコピーする例。
処理をサーバ側にしてsendすることも簡単に出来るのでmanual読んで好みのバックアップ環境を構築するのが吉。

コマンドもssh2_execで実行できるのでtarでWebサイトを固めたりDBをダンプして落とすことも可能。

参考:ssh2関数マニュアル
http://jp.php.net/manual/ja/ref.ssh2.php

Euro2012 グループリーグ2戦終了時のまとめ

2012年06月16日 11時55分

グループリーグ2戦が終わって予選敗退が決定したチームが出てきたが突破が確定したチームはまだない。

各リーグの3戦目は2試合同時に開始をするのでW録画が出来ないうちのチューナーでは
試合開始の3:30まで起きてザッピングするという忙しい日々が続くことになる。
頑張ろう、サッカーファン。

予選敗退が決定した国がどんなモチベーションで挑んでくるのか全くわからないのが気懸かりだが贔屓チームのイタリアには是非とも勝ち抜いて欲しい。

グループA

チーム 得失 勝点 残戦 状況
ロシア 1 1 0 5 2 3 4 ギリシャ  
チェコ 1 0 1 3 5 -2 3 ポーランド  
ポーランド 0 2 0 2 2 0 2 チェコ  
ギリシャ 0 1 1 2 3 -1 1 ロシア  
残り試合
チェコ vs ポーランド
ギリシャ vs ロシア

グループB

チーム 得失 勝点 残戦 状況
ドイツ 2 0 0 3 1 2 6 デンマーク  
ポルトガル 1 0 1 3 3 0 3 オランダ  
デンマーク 1 0 1 3 3 0 3 ドイツ  
オランダ 0 0 2 1 3 -2 0 ポルトガル  
残り試合
デンマーク vs ドイツ
ポルトガル vs オランダ

グループC

チーム 得失 勝点 残戦 状況
スペイン 1 1 0 5 1 4 4 クロアチア  
クロアチア 1 1 0 4 2 2 4 スペイン  
イタリア 0 2 0 2 2 0 2 アイルランド  
アイルランド 0 0 2 1 7 -6 0 イタリア 敗退
残り試合
イタリア vs アイルランド
クロアチア vs スペイン

グループD

チーム 得失 勝点 残戦 状況
フランス 1 1 0 3 1 2 4 スウェーデン  
イングランド 1 1 0 4 3 1 4 ウクライナ  
ウクライナ 1 0 1 2 3 -1 3 イングランド  
スウェーデン 0 0 2 3 5 -2 0 フランス 敗退
残り試合
スウェーデン vs フランス
イングランド vs ウクライナ

Euro2012日程はこちら
https://www.crossl.net/blog/euro2012/

EURO2012 試合・ライブ放送日程(wowow、tbs)

2012年06月07日 13時08分

寝れない日々が続く…

今日の背景色
明日の背景色
日時(wowow) 対戦グループ 対戦カード 放送局
6/9(土)0:30 [グループA] ポーランド vs ギリシャ

wowowプライム(Ch.621)

TBS

6/9(土)3:30 [グループA] ロシア vs チェコ wowowプライム(Ch.621)
6/10(日)0:50 [グループB] オランダ vs デンマーク wowowプライム(Ch.621)
6/10(日)3:30 [グループB] ドイツ vs ポルトガル

wowowプライム(Ch.621)

TBS

6/11(月)0:50 [グループC] スペイン vs イタリア

wowowプライム(Ch.621)

TBS

6/11(月)3:30 [グループC] アイルランド vs クロアチア wowowプライム(Ch.621)
6/12(火)0:50 [グループD] フランス vs イングランド

wowowプライム(Ch.621)

TBS

6/12(火)3:30 [グループD] ウクライナ vs スウェーデン wowowプライム(Ch.621)
6/13(水)0:45 [グループA] ギリシャ vs チェコ wowowライブ(Ch.622)
6/13(水)3:30 [グループA] ポーランド vs ロシア wowowライブ(Ch.622)
6/14(木)0:45 [グループB] デンマーク vs ポルトガル

wowowライブ(Ch.622)

TBS

6/14(木)3:30 [グループB] オランダ vs ドイツ wowowライブ(Ch.622)
6/15(金)0:45 [グループC] イタリア vs クロアチア

wowowライブ(Ch.622)

TBS

6/15(金)3:30 [グループC] スペイン vs アイルランド wowowライブ(Ch.622)
6/16(土)0:45 [グループD] ウクライナ vs フランス

wowowライブ(Ch.622)

TBS

6/16(土)3:30 [グループD] スウェーデン vs イングランド wowowライブ(Ch.622)
6/17(日)3:30 [グループA] チェコ vs ポーランド wowowプライム(Ch.621)
6/17(日)3:30 [グループA] ギリシャ vs ロシア wowowライブ(Ch.622)
6/18(月)3:30 [グループB] デンマーク vs ドイツ wowowライブ(Ch.622)
6/18(月)3:30 [グループB] ポルトガル vs オランダ wowowプライム(Ch.621)
6/19(火)3:30 [グループC] イタリア vs アイルランド wowowライブ(Ch.622)
6/19(火)3:30 [グループC] クロアチア vs スペイン wowowプライム(Ch.621)
6/20(水)3:30 [グループD] スウェーデン vs フランス wowowライブ(Ch.622)
6/20(水)3:30 [グループD] イングランド vs ウクライナ wowowプライム(Ch.621)
6/22(金)3:30 準々決勝-1 グループA1位 vs グループB2位 wowowプライム(Ch.621)
6/23(土)3:30 準々決勝-2 グループB1位 vs グループA2位 wowowプライム(Ch.621)
6/24(日)3:30 準々決勝-3 グループC1位 vs グループD2位

wowowプライム(Ch.621)

TBS

6/25(月)3:30 準々決勝-4 グループD1位 vs グループC2位

wowowプライム(Ch.621)

TBS

6/28(木)3:30 準決勝-1 準々決勝1の勝者 vs 準々決勝3の勝者

wowowプライム(Ch.621)

TBS※準決勝-2かどちらか不明

6/29(金)3:30 準決勝-2 準々決勝2の勝者 vs 準々決勝4の勝者

wowowプライム(Ch.621)

TBS※準決勝-2かどちらか不明

7/2(月)3:20 決勝 準決勝1の勝者 vs 準決勝2の勝者

wowowプライム(Ch.621)

TBS