【AngularJS】複数本の非同期通信が完了した後に処理を実行する方法。

$q.all()を用いる

AngularJSの$qはJavascriptのPromiseインターフェースを提供してくれるサービス。

$qdefer()メソッドを実行すると、Deferredオブジェクトを生成する事ができる。

このDefferedオブジェクトと$qサービス用いることで複数ある非同期通信の完了を検知することが出来るようになる。

各非同期通信処理関数は返り値としてPromiseオブジェクトを返却するように設計し、それを$q.all()メソッドでラップしてやればOK。

$qサービスはマジ便利過ぎて神がかってる。

$qに関する解説として下記ページも非常に参考になった。

http://dev.classmethod.jp/client-side/javascript/angularjs-q-promise/

【Twitter】StreamingAPIを使ってみる。

TwitterのStreamingAPIはRestApiと違い実行回数の制限が無いため、(同時コネクション数の制限はある。)リアルタイムで無限にツイートを取得し放題なのである。

Phirehoseを用いてStreamingAPIを利用する

ゼロからやろうとすると大変なので偉大なるライブラリ様を使わせていただくことにする。

  • まずは下記URLからライブラリ本体をダウンロード。

https://github.com/fennb/phirehose

ダウンロードできたらzipを解凍。exampleフォルダの中に、filter-oauth.phpがあるのでこいつをカスタマイズする。
※バックアップのためにコピーを保存しとこう。

開くと下記のようになっているのでdefineで定義されている4つの定数を自分のものに設定する。

んであとはこのファイルにHTTPサーバーを経由してアクセスするとツイーが永遠と流れてくる。

とても簡単にStreamingAPIが利用できるようになるのでめちゃくちゃオススメ。

下記サイトを参考にさせていただきました。

http://www.kyoto-life.com/blog/814

【CakePHP3】をComposerでインストールする。

プロジェクトを作成する

上記を実行すると、本体のインストール、tmpフォルダの権限設定、DebugKitのインストールまでもが完了した状態となる。

あとはMigrationsプラグインでもいれればとりあえず自分的に完了。

【twitteroauth】PHPのTwitterOauth用ライブラリをnamespaceを用いたFW内で利用可能にする。

CakePHP3にぶち込んだ時の話。

https://github.com/abraham/twitteroauth/

上記URLのライブラリはPHPerには有名だけれどもnamespaceが記述されていないので、Symfony2を始めとするモダンなフレームワークにぶちこもうとするとなかなかに使い辛い。

ということでファイル内容を若干カスタマイズする。

まずはgithubよりzipをダウンロード。
利用するのはtwitteroauthフォルダ以下のファイルたち。

twitteroauth.phpをいじりましょう。

require_onceを消す

  • 10行目の下記記述を葬り去る。

名前空間を授けてやる

ファイル先頭に下記を追記。
※namespaceの部分はプロジェクトによって適切に設定されたし。今回はCakePHP3のsrc/Lib/twitteroauth以下にライブラリを配置したので下記のように記述。

composer.jsonのautoload設定に追加する

twitteroauth.phpはともかくOAuth.phpはpsrに準拠してないといったレベルを超越しているライブラリなので下記の通りfilesに直接パスを指定してやる。

最後にphp composer.phar updateをしてやればOK。php composer.phar dumpautoloadでもOK。てか後者のほうが速い。

【Twitter, PHP】Twitterログイン機能をPHPで実装する。

際の分かり易いコードサンプルをみつけたのでペタリ。

http://temog.info/archives/programming/twitter-oauth-php-login.html

すごくわかりやすかったです。ありがとうございます。

【CakePHP3】AuthComponentでログイン認証を実装する。

ほぼほぼCake2系の時の手順と変わらない。

今回も同じくusersテーブルにusernameカラムとpasswordカラムを用意しておくと勝手にそこを見に行ってくれるようになっている。

コンポーネントを読み込む際に下記のように設定を記述する。

な感じ。

loginメソッドは下記のような感じで実装してやれば良い。

あとは公式にまかせた。

http://book.cakephp.org/3.0/en/tutorials-and-examples/blog-auth-example/auth.html

【CakePHP3】Migrationsプラグインを道入する。

bakeも問題無く動作するしいよいよCake3も熱くなってきたね。モデル周り以外は2系とそんなに使い方に差異はないかも。session周りが若干変わったくらい?

インストール手順

  • まずはcomposer.jsonに下記を追記
  • したらupdate
  • 最後にプラグインをロード

まぁ読み込めればどこでもいいんだけどbootstrap.phpあたりで読み込むのがベターかと。

使い方

cliからbin/cake migrationsで呼び出せる。

  • まずは初期化

これをすると一番はじめのマイグレーションファイルが生成されて、DBにも履歴管理用のテーブルが生成される。
この生成されたファイルのup()メソッドにアップグレード用のSQLを記述。
down()メソッドにダウングレード用のメソッドを記述する。

※Symfony2のようなDBの差分自動算出機能はない模様。(これはマジで不便)

なので下記のように自分で書いてやる。
※SQLは適当なので注意。

down()メソッドに差し戻し用のSQLも書いてやったら、migrateを実行。

差し戻したければrollback

とりあえずこれだけ知ってれば使えるはず。
あとは公式を参照されたし。

https://github.com/cakephp/migrations

【MySQL】指定した以外のテーブルをdumpする。

mysqldumpコマンドを使う際、--ignore-tableオプションを用いると、dumpしたくないテーブルを指定することが出来る。

例)

と言った感じ。
複数テーブルを除外したければ--ignore-tableオプションを複数回書いてあげればいい。

例)

※この際テーブル名にデータベース名のプレフィックスを付けてやらないとダメなので注意されたし。