わたねこコーリング

野良プログラマ発、日々のアウトプット

apns-php のログ出力をオフにする

今年もまた、夏到来とともに修羅場カモーン!で「夏休み? なにそれおいしいの」とイタイケな Mariyudu@野良プログラマです。ご無沙汰してます。

時代の流れってやつですかね。ロートルな私にもスマホアプリ絡みの仕事がちらほら来るようになって、プッシュ通知なんてモノもすなる今日この頃です。PHPer なので apns-php を有難く使わせてもらってますが、開発から運用に切り替える際にログ出力をオフにするのってどーすんだろ? とちょっと調べたのでおすそ分けです。

ログ出力ってのは標準出力に親切に表示されるこんなやつ(↓)ですが、

Tue, 27 Aug 2013 12:17:27 +0900 ApnsPHP[7815]: INFO: Trying ssl://gateway.push.apple.com:2195...
Tue, 27 Aug 2013 12:17:27 +0900 ApnsPHP[7815]: INFO: Connected to ssl://gateway.push.apple.com:2195.

この処理は、ApnsPHP_Push の construct 時に基底クラス ApnsPHP_Abstract さんが、メンバ $_logger にインターフェース ApnsPHP_Log_Interface 実装クラスのオブジェクトであるロガーをセットして、事ある毎に実行している模様なので(長w)、早い話がこんな感じでロガーをカスタマイズすればいいんじゃないかと。

// 何もしない代替ロガークラス
class ApnsPHP_Log_Custom implements ApnsPHP_Log_Interface
{
	public function log($sMessage){}
}

$push = new ApnsPHP_Push(ApnsPHP_Abstract::ENVIRONMENT_PRODUCTION, MY_CERTIFICATION);
$push->setLogger(new ApnsPHP_Log_Custom); // 何もしないロガーに置き換え

まぁ apns-php はコンパクトなので、各自「コード嫁」で解決する問題ですが、駄記事もブログの賑わいということで。

メニューバーからサクッと Feedly 登録する Chrome 拡張「Add to Feedly」

巷を震撼させた Google Reader 終了まで10日となりましたが、Feedly 移行はお済みでしょうか。ギリギリにならないと何もしないギリギリス体質の筈なのに昨日引っ越しを済ませた自分を褒めたい@野良プログラマ Mariyudu です。

という訳で Feedly、ぼちぼち使い方を覚え始めているところなんですが、デフォルトで用意されているミニツールバーでの Feedly 登録(↓)が個人的にはナンダカナーです。

f:id:mariyudu:20130620141148p:plain

ウェブページ右下に現れるアイコンをクリックしてメニューを開いて、+ボタンをクリックして登録ページに移動、という流れですがちょっと手順が多いかなと。そもそも閲覧中のページに余計なものはあまり表示させたくないし。Pocket みたいにメニューバーからポチッと登録できないの? と探してたらイイのがありましたよ、奥さん。「Add to Feedly」という Chrome 拡張機能です。

こいつを Chrome にインスコしておけば、メニューバーのボタンクリックで Feedly 登録ページに移動してくれます(↓)。

f:id:mariyudu:20130620141814p:plain

Google Reader のブックマーク追加みたいに、その場でポップアップとかでカテゴリーに放り込めたらもっといいんですがね。バージョンアップで機能強化されることを祈りましょう。

RDS MySQL のタイムゾーン問題でもう一捻り

AWS RDS で MySQL を使ってる人の多くはご存知かと思いますが、default_time_zone が UTC のまま変更出来ないので NOW() 等の日時関数を使った時に困ったことになります。これを解決する為に、パラメタグループの init_connect に接続時のタイムゾーン変更処理を記述してやる方法が知られているようですね。ただ、細かいことですが、この方法はストアドプロシジャに依存しているので、このパラメタグループを適用したデータベースインスタンスを追加する度にプロシジャを登録しなけりゃならんってのが、ちょっとスッキリしません。

てな訳でもう一捻り。前述のストアドプロシジャの内容を関数ベースでワンライナーにして、init_connect に直に書いちゃうってだけですが(↓)。

SET SESSION time_zone = IF(POSITION('rdsadmin@' IN CURRENT_USER()) = 1,'UTC','Asia/Tokyo')

シングルクォートとか入ってて大丈夫かな? と思いましたが、今のところ問題なくいってます。

音程・テンポが自在なミニプレーヤ Vox.app を山ライオンでもそのまま使う

Lion 時代の Mac アプリで Vox.app というミニプレーヤーがあるんですが、こいつが再生の際に音程・テンポを自在に設定できるという大変有り難い機能を持ってまして、採譜時の耳コピや、曲の調を変えて音源と合わせて練習する時なんかで便利に使ってました(↓)。

f:id:mariyudu:20130526172439p:plain

それが Mountain Lion にアップデートした後から動かなくなった(再生ボタンをクリックしても反応せず)ので、開発元に行って山ライオン対応版をダウンロードしたところ、音程・テンポの調整機能が無い全く普通のプレイヤーに何故か変貌してました。さてこれは困った。何とか古いままのアプリ(自分のはver.0.2.7.1)を動かせないだろうかとあれこれ調べたら、どうやらアプリ内の libbass.dylib というダイナミックライブラリを入れ替えればいい模様。以下の手順で行います。尚、この行為はアプリケーションの内部に手を入れることになるので、予めアプリを複製してバックアップしておく等、各自の自己責任で行なって下さい。

  1. ライブラリの開発元である http://www.un4seen.com/ から、BASS Audio Library をダウンロード(自分が DL したのは ver.2.4.10)。
  2. 解凍したフォルダ内にある libbass.dylib を、ターミナルでアプリケーション内のそれと差し替える(こんなかんじ↓)
cp libbass.dylib /Applications/Vox.app/Contents/Frameworks/

さて、この便利なアプリを使って某イベントの練習練習…

RDS で MySQL の EVENT 機能を使う

AWS 上で稼働している某サービスで、MySQL データベースを EC2 インスタンス上での稼働から RDS に移行することになったんですが、その作業の過程で EVENT 機能なるものが MySQL 5.1 以降で用意されていることを知りました。こんな便利なモノがあるのを知らずにもう何年も定期処理を cron で回してたのか… と恥じ入りつつ、早速使ってみることに。ところが、RDS 版 MySQL (現在、ver.5.5)はデフォルト設定で、EVENT 用のスケジューラプロセスが稼働してない模様。これを有効にするには以下の手順で行います。

  1. AWS コンソールの RDS ページを開いて、左サイドメニューから「DB Parameter Groups」をクリック。
  2. デフォルト状態では「default.mysql5.5」ってのがひとつあるだけですが、これに直接手を入れるのもアレなのでカスタマイズ用の設定を新規追加してみます。リストの上のボタン「Create DB Parameter Group」をクリックして適宜名前を付けて保存します。その際、「DB Parameter Group Family:」で「mysql5.5」を選べばデフォルト設定と同一内容の設定となります。
  3. 新規追加したパラメタグループを選択 → リストの上のボタン「Edit Parameters」をクリック → パラメタ一覧画面に移動。
  4. パラメタ一覧表から「event_scheduler」という項目を見つけて値が空欄になっているのを確認したら、一覧表上部のボタン「Edit Parameters」をクリックして、編集画面に移動。
  5. 「event_scheduler」の値を「ON」にして、ボタン「Save Changes」をポチッと。

あとは、上記で編集したパラメタグループを当該のインスタンスに適用するだけ。新規インスタンスなら生成ダイアログの「Additional Configuration」のところで「Parameter Group:」で選択してやります。既存インスタンスなら、Modify でこれを選択しなおしてインスタンス再起動。

パラメータグループの編集→保存は、インスタンスの再起動とかなしに反映されるみたいです。即時って程でもないみたいですが、遅い場合でも数分で稼働中インスタンスに反映されました。

Live Spots Today (今晩のライブ)、リニューアルしました

エリア毎にライブハウスのスケジュールを日別に集約するサービス、Live Spots Today (今晩のライブ)をリニューアルしたです。内部的な改修(ていうか実質作り直し)も大きいんですが、まずはページ外観のビフォーアフターを。

f:id:mariyudu:20130406132149p:plain

このサービス、ローンチして3年以上は経っていると思いますが、かねがね以下のような問題点を感じていました。

  • 本来は外出先でモバイル端末から使ってこそ便利なサービスな筈なのに、本気でモバイル対応してないし。
  • スケジュールページのスクレイピング処理のライブラリ整備がいまいちで、ライブハウス追加の作業が捗らない。
  • ページのレイアウトに余白部分が多く、結果として全ての情報を見るのに何度もスクロールを強いられる縦長構造になってる。デザインもスカスカしててなんかダサい、ていうか飽きてきた…

ということで、上記を受けての今回のリニューアル内容はこんな感じ。

  • スクレイパーWeb::Scraper を使った Perl スクリプトから、phpquery を使った PHP で作り直し。多分私が Web::Scraper を使いこなせてないだけだと思うのですが、SAX 的にハンドラを組み込んで処理を行う前者より、jQuery 感覚で DOM を縦横にトラバーシングできる phpquery のほうがコードが直観的で、共通処理の集約もしやすかったです。Web サイトが PHP 製なので、そっちとの親和性の良さもありますし。
  • Web のほうも CakePHP から Silex + Twig + phpActiverecord で書き直し。私の Cake 離れが本格化してきますた…
  • UI は Twitter Bootstrap をベースに、Pinterest ふうタイリングは jQuery Masonry なぞで。Bootstrap のレスポンシブ性のおかげで、それほど苦労しなくてもスマホ対応できました(最適化にはまだほど遠いですが)。

そんなこんなで、これでやっとライブハウス登録も楽になった(当社比)ので時間を見ながら、まずは自分の生活圏内である吉祥寺〜新宿間で登録を増やして行きたいと思ってます。本当の戦いはこれからだ… ww

デフォルトから気分一新! な Redmine のテーマ7選

プロジェクト管理および構成管理で Redmine の出番が増えてきました。しがないフリーの立場での仕事なので Redmine サイトもお客さん毎に複数立ち上げたりしてます。んで、ブラウザのタブで切り替えながら並行作業してるとどっちの Redmine サイトだったか混乱するので、ぱっと見で分かるようにテーマを変えてみようかと思いましてね。標準でバンドルされてるテーマは何だか似たり寄ったりなので、 http://www.redmine.org/projects/redmine/wiki/Theme_List あたりでテーマを見繕ってたらなかなかイイ感じのがあったので、デフォルトの青いテーマと区別しやすいのを選んでみました。ご参考までにどうぞ↓

1. A1

http://redminecrm.com/pages/a1-theme
f:id:mariyudu:20130320163559p:plain
クールな印象ですね。Ronin という請求・見積書サービスのルック&フィールを真似たとのことです。

2. Axiom

https://github.com/hulihanapplications/axiom
f:id:mariyudu:20130320164237p:plain
これはまたギークなデザイン。まぢめなお客さんには向かないかなぁw

4. CM-RED

https://github.com/ChrisMcKee/redmine-themes/
f:id:mariyudu:20130320165016p:plain
デフォルトテーマをカスタマイズした、プロダクトの名前どおりの赤!なテーマです。なんだかんだ言っても、カラースキームを変えるのがいちばん区別しやすかったりしてw

5. Modula Gitlab

https://github.com/doublerebel/modula-gitlab
f:id:mariyudu:20130320165326p:plain
Gitlab っていう、Rails 製の Git 管理アプリケーションのテーマらしいですね。Bootstrap っぽいいま風のデザインです。

6. Modula Martini

http://www.modula.fi/2008/redmine-theme/
f:id:mariyudu:20130320165723p:plain
こちらもモノクロームを基調にした、ミニマルで飽きのこないデザインです。

7. gitmike theme

https://github.com/makotokw/redmine-theme-gitmike
f:id:mariyudu:20130320170301p:plain
最後は日本人の makoto_kw さんによる、Github テイストなテーマ。前述の A1 をベースにしたとのこと。

…という訳で、今回は最後の gitmike theme を採用!(気分次第で何時でも変えられるよう、全部インストールはしましたがねw)。