February 25, 2012

バンド向けFacebookページタブアプリ

日本でもFacebookユーザが増えてきたなーと思う今日この頃です。
それに伴い、バンド(アーティスト)のFacebookページも自然と増えてきていると思います。
しかし、Facebookはそもそも音楽系SNSでは無いので、
単にFacebookページを作るだけだと、何だか味気ない。

そんな時に、活躍しそうなFacebookページ用タブアプリを、いくつか紹介します。

(1)
ReverbNation
http://www.reverbnation.com/
Facebookページを音楽系SNSに変化させてしまうくらい強烈です。
使用しているページを見てみると、イメージが湧きやすいと思います。
https://www.facebook.com/sofiatalvikmusic?sk=app_2405167945

以下、以前に細かく書いた記事です。
http://mamor-blog.tumblr.com/post/9455026216/reverbnation-facebook-sns

Facebookページに留まらず、サイトに貼り付けるWidgetやバナー等も充実しています。
これが本命かなと、個人的には思っています。

(2)
BandRx
http://www.bandrx.com/
https://www.facebook.com/BandRX
これも、ReverbNationのように、Facebookページが音楽系SNSになってしまいます。
ReverbNationは自身でサービスを展開しつつ、Facebookアプリも提供しているわけですが、
BandRxはFacebookページタブ用のサービスのようで、シンプルに使いやすいイメージです。
とは言っても、必要な機能はしっかり整っていそうだし、ReverbNationには無い機能もありますね。
SoundCloudにUPしてある音源を使えます。

(3)
RootMusic
http://www.bandpage.com/
https://www.facebook.com/rootmusic
BandRxに似いてると思います。
SoundCloudにUPしてある音源を使えるのも似ていますね。
BandRxと比べると、出来ることは少ないのかも。

(4)
Cueler YouTube
https://www.facebook.com/pages/Cueler-YouTube/321821187850686?sk=app_162891010412392
これは、設定したYouTubeアカウントのアップロード動画、お気に入り動画、指定プレイリスト。
を表示できるタブアプリです。(どれか一つです。)
プレイリストが表示できるタブアプリは貴重な気がするので、併せて紹介してみます。

February 12, 2012

FuelPHPのORMパッケージを拡張してみる。

先に、ソースは
https://github.com/mp-php/fuelphp-packages-myorm
にUPしてあります。

--

created_atやupdated_atと同じノリで、created_ipとupdated_ipの保存をする
独自ORMパッケージを作成してみました。
created_ipとupdated_ipの型はvarcharで、長さは適当で良いかと。

以下、手順です。

fuel\packages下に"myorm"ディレクトリを作成。
"myorm"ディレクトリの中に、以下の3ファイルを作成。
fuel\packages\myorm\bootstrap.php
fuel\packages\myorm\classes\observer\createdip.php
fuel\packages\myorm\classes\observer\updatedip.php

各ファイルは、以下の内容になります。

fuel\packages\myorm\bootstrap.php
<?php
Autoloader::add_classes(array(
    'MyOrm\\Observer_CreatedIp' => __DIR__.'/classes/observer/createdip.php',
    'MyOrm\\Observer_UpdatedIp' => __DIR__.'/classes/observer/updatedip.php',
));


/* End of file bootstrap.php */


fuel\packages\myorm\classes\observer\createdip.php
<?php
namespace MyOrm;

class Observer_CreatedIp extends \Orm\Observer
{
    public static $property = 'created_ip';
    protected $_property;

    public function __construct($class)
    {
        $props = $class::observers(get_class($this));
        $this->_property = isset($props['property']) ? $props['property'] : static::$property;
    }

    public function before_insert(\Orm\Model $obj)
    {
        $obj->{$this->_property} = \Input::real_ip();
    }
}

// End of file createdip.php


fuel\packages\myorm\classes\observer\updatedip.php
<?php
namespace MyOrm;

class Observer_UpdatedIp extends \Orm\Observer
{
    public static $property = 'updated_ip';
    protected $_property;

    public function __construct($class)
    {
        $props = $class::observers(get_class($this));
        $this->_property = isset($props['property']) ? $props['property'] : static::$property;
    }

    public function before_save(\Orm\Model $obj)
    {
        if ($obj->is_new() or $obj->is_changed())
        {
            $obj->{$this->_property} = \Input::real_ip();
        }
    }
}

// End of file createdip.php


このパッケージを使用するためにはapp/config/config.phpのalways_loadのpackagesに追加する必要があります。
'packages'  => array(
    'orm',
    'myorm',
),

myormを使用するということは、まず間違いなくormも使用するはずなので、
この2つを有効にして下さい。

Modelの$_observersは以下のようになります。
protected static $_observers = array(
    'Orm\Observer_CreatedAt' => array('events'=>array('before_insert'), 'mysql_timestamp' => true,),
    'Orm\Observer_UpdatedAt' => array('events'=>array('before_save'), 'mysql_timestamp' => true,),
    'Orm\Observer_Validation'=> array('events'=>array('before_save')),
    // MyOrm
    'MyOrm\Observer_CreatedIp'=>array('events'=>array('before_insert')),
    'MyOrm\Observer_UpdatedIp'=>array('events'=>array('before_save')),
);

"// MyOrm"の行以下が、今回の話と関係しています。

これで、標準ORMパッケージに依存しつつ、完全に分離できたので
思う存分、ORMに独自の機能を追加できそうです。

February 6, 2012

phpfogとfile_get_contents

phpfogの無料版では、外部URLをfile_get_contentsできないようです。
http://docs.phpfog.com/index.php/features/article/shared_vs_dedicated

なので、ajaxで外部サイトのデータを取ってきて、それをajaxで自サイト(phpfog)のapiに渡して
HTML等のデータを生成。とかしないといけませんでした。

phpfogでssl判定。

メモ。

phpfogでは$_SERVER['HTTPS']によるssl判定が使えませんでした。
その代わり、$_SERVER['HTTP_X_FORWARDED_PROTO']で出来ました。

FacebookアプリでTesterがPending

FacebookアプリをSandBoxモードにしてTesterを追加。
クローズドな環境で動作確認を進めたい。
となった時、TesterがPendingとなり、
Testerがアプリを利用ができない状態が発生しました。

原因は、アプリの基本設定の"アプリの名前空間"が空だったから。みたいです。
入力すると、Pendingの表示が消えて、正しく利用ができるようになりました。

Facebookアプリはこの辺がなんかわかりにくい。。。