2012年6月28日木曜日

phpの設定いろいろでハマったのでメモ

php.iniとか編集してますか??

そこらへん余りわかってない部分が多くてはまったのでメモ。

今回はphpのfile_get_contentsとfile_put_contentsではまりました。

まずはfile_get_contents。
これはurlやパスからファイル情報をとってくる関数ですね。

この関数はphp.iniの設定において
allow_url_fopen = Off

となってると使えません。
自作サーバとかでphp.iniを自由にいじれるときはいじればいいですね。
ただ、レンタルサーバなどでphp.iniをいじれない。
phpのini_set関数も使えない。

んなときはcurlでやりましょう。
参考:http://blog.mach3.jp/2010/12/use-curl-for-filegetcontents.html

これによるとcurlのんが早かったりするみたいですねw
基本こっちのんがいいのかも。
めんどいけど。

もう一つはfile_put_contents。
これはfile_get_contentsなどでとってきたファイルを特定の場所に保存する関数ですね。

ファイルを保存する動作なので、権限でよくひっかかりそう。。

そう権限設定がやたらとややこいです。
参考:http://sb.xrea.com/showthread.php?t=10222
公式ドキュメントみただけではなんのこっちゃわからんので、上記の例がわかりやすいです。

つまり、phpでmkdir("hogehoge");とかしてフォルダを作るとそのフォルダのオーナーはApacheです。
Apacheがオーナーのフォルダ内に新たにファイルを作成することができないことがあるよ!
ってことらしいです。
カオスですね。

ということで忘れないようにメモ。
php.iniとかhttp.confとかちゃんと勉強しないとですね。

2012年6月27日水曜日

Facebookのアクセストークンのいろいろ

Facebookのアクセストークンでいろいろハマったのでメモがてら。

Facebookには三種類のアクセストークンがあります。(2012年6月現在)
  1. user access token
  2. page access token
  3. app access token
それぞれ簡単に説明すると、user access tokenはその名の通り
Facebookの各ユーザごとに承認のいるとても厳しいアクセストークンです。 これを取得すると、apiとかでいろいろできますね。
できることは要求する権限によって違うので割愛します。

で、残り2つですが(最近追加されたのかな??)、
それぞれFacebookページ用のアクセストークンと
アプリ用のアクセストークンです。

とりあえず2012/7/5でoffline access tokenという、
それさえあれば何でもできちゃったアクセストークンがなくなるので
今後はpage access tokenとかapp access tokenとかで
どうにかしていくことになります。

ってことがFacebook公式デベロッパーサイトに書いてます。


ここで注意したいのが
user access token、page access tokenは期限が最大60日
app access tokenは期限がないことです。

アクセストークンの期限がくると取得し直す必要があります。
つまりapp access tokenだけでいろいろやりたいわけです。

今回はアプリからFacebookページに自動投稿するバッチを作ろうと思い、
投稿するアプリのapp access tokenがあればいけるかと思いぐぐり始める。。
んでたどり着いたのがこの記事

app access tokenでウォールに投稿できるっぽい!
てことで実装してみる。

今回は写真を投稿したかったので、

$post_data = array(
'source' => '@' .$finename, 
'message' => $message,
 'access_token' => $this -> facebook_app_access_token
 );

$post_result = $facebook -> api('/' . $this -> facebook_page_id . '/photos', 'post', $post_data);
            

だいたいこんな感じ。
url叩いてみると。。
A user access token is required to request this resource.

えw
user access token求められてる。。。

投稿先を自分のウォールにしてみても、写真投稿を普通にfeedに投稿にしてみても同じでした。。
アクセストークンをpage access tokenもしくはuser access tokenに変えると投稿できました。
けどこいつらは期限が期限が60日。。

自動投稿するには期限のないapp access tokenを使いたい。。

けどできませんでした。

app access tokenのみでウォール投稿できた方がいらっしゃいましたらぜひお話お聞かせください。

2012年6月8日金曜日

fedoraにperl環境(cpan)作成

ちょっとperlの環境を作る機会があったのでメモ。

基本的にはここみればだいたい行けます。
fedoraだとyumでいろいろ入れるだけですね。

ちょっとだけつまずいたのでメモ。
fedoraだとディストリビューションをインストールした時点でperlは入ってます。
あとはcurl、gcc、makeあたりを入れとけば大丈夫です。
今回はTDDを実践するためにcpanを使いました。
cpanをインストールするために
perl-ExtUtils-MakeMaker
というものが必要でした。


 yum -y install perl-ExtUtils-MakeMaker


でいけます。

参考URL : Perlの開発環境をCasualに作ろう
              : Perlモジュールパッケージ管理システム導入(cpan2rpm)

2012年6月7日木曜日

PHPでリダイレクト

cakeだけかもしれませんが、リダイレクトでちょっとはまったのでメモ。

リダイレクトよく使いますよね。

cakeだと

$this -> redirect('url');

ノンフレームワークだと

header("url");

ですね。
これ使うまえになにかブラウザに出力してるとリダイレクトできませんw


echo "aaaaaaa";
$this -> redirect('url');


とかするとリダイレクトしてくれません。
要注意。

2012年6月5日火曜日

jQueryのsubmit()ではまったのでメモ

jQueryでsubmit関数を使うとき少しはまったのでメモ。

$('form').submit(function(){
 ほげほげ
});

って使えるかのように書いてありますが、取ってくるDOMによってsubmitできない場合もあるみたいです。


そんなときは。


$('form')[0].submit(function(){
 ほげほげ
});

とすると使えます。

ソース:jQuery の submit() ではまった

PHPUnitで自動テストを実行する

前書いたコードがあまりにバグだらけで、QA(テストチーム)さんにご迷惑をかけまくりだったので、前から気になってた自動テストを導入することにしました。

テストコード書くと、タイピングの量は倍近くなるので、開発遅くなると思われがちですが作ったものの質を考えると、どの道あとでやるテストをコードを書きながらやるだけなので、開発全体としてはむしろ早くなるのかなとも思います。
何はともあれ実践してみないとわかんないですね。
てことで本題。

今回はPHPUnitというPEARモジュールを使うことにしてみました。
理由はぐぐって一番よさげだったからです。
これはユニットテストしかできないので、よさげなやつがあれば教えてください。

基本的にはここみながら作りました。

ホストOS:windows7にvirtualboxをインストール。
仮想環境にfedora16を用いて仮想環境を作ってます。
この環境だとここのコマンド通りでいけました。

あとはこのあたり見ながらがんばろうかなと。
また報告しまーす。

2012年6月1日金曜日

勉強になったことメモ

今日勉強になったことのメモ。
この形式いいデータベースになると思うので、投稿することにしました。

mysqlでindexを貼ることの意味と張り方。
http://d.hatena.ne.jp/kiyo560808/20101117/1289952549

jQueryで複数のセレクタを選択するやり方。andとor
http://d.hatena.ne.jp/ryoff/20090409/1239245130

cakephpでコントローラ内で共通の処理がある場合に便利なメソッド
http://liginc.co.jp/programmer/archives/199