Currently Browsing
Lithium
ヘアスタイルの画像を流し見してお気に入りを探せる「BeautyStream」を作りました
- 21 4月 //
- Posted in Lithium, MongoDB, PHP, 作った //
- Tags :
- No Comment
ヘアスタイルの画像を流し見して、お気に入りを探せる
BeautyStreamを作りました。
ずらっと並んだ画像を眺めて、お気に入りを見つけて
「かわいいね!」するサイトです。
どんどん「かわいいね!」しちゃってください。
どんな感じで作ったのかは以下。
環境
- サーバ
- AWS EC2のmicroインスタンス
- Web
- nginx + php (FastCGI)
- DB
- MongoDB
- フレームワーク
- Lithium
人気が大爆発した時のためにAWSにしました。
しかしアクセス数は1桁なのでいらぬ心配だったw
webは、nginxでLithiumって動かした事なかったので、それで行こうと決めました。
DBは、せっかくLithiumなんだしやっぱMongoDBだよね!ぐらいのノリです。
プログラム
ホットペッパービューティのAPIを叩いて、ヘアスタイルの画像を取得しています。
結構な割合で不要な画像が来ちゃうので、拒否リストみたいなのをDBに持ってます。
写真を顔認識で判定する、とかしようか迷ったんですが、
作るのに時間がかかりそうだったので、手動で除外しました!
一応管理者用ツールみたいなのを作って、パパっと除外できるようにしました。
超アナログ。
ほんと、別に難しいことはしてません。
苦労したところとか
CSSが・・・。
最初は「よーし、今後も使いまわせて、かつ重複のない、書き方も意味のある、
きれいなcss書くぞー」とかいきがってたんですが、ダメでしたw
1つのLithiumコアで2つ以上のappを使う場合の注意
今回一般用と、管理者用の2つのappを書いたので偶然見つけました。
Lithiumは、リクエストを受けると勝手にcore.librariesという名前のキャッシュを作ってくれます。
何も設定しなければdefaultの設定を使うので、APCを使っている環境であればApcを、
なければFileを使ってキャッシュするようになってます。
defaultでAPCを使ってくれるのは嬉しいのですが、APCを使っていて、
かつ2つ以上のappを1つのlithiumで動かしている場合、
両方のキャッシュの名前が同じなので、どちらも同じキャッシュを使ってしまうため、
片方のappにしか存在しないactionへ処理が行かず、Exceptionになっちゃいます。
同じlithiumのcoreを使って2つ以上公開する場合は、
app/config/bootstrap/cache.phpを編集して、
Cache::write('default', 'core.libraries', Libraries::cache(), '+1 day');
の部分を
Cache::write('default', 'myapp.core.libraries', Libraries::cache(), '+1 day');
みたいに、それぞれのapp名でキャッシュするようにするといいと思います。
そんなわけで
みんなどんどん「かわいいね!」してね!
PHP5.3を活用したフレームワークのLithiumを触ってみたよ – その4
その3の続きです。
そろそろこの連続したタイトルも飽きましたので、今回で続きみたいに書くのは終わりです!
前回はModelでの値チェック、データの取得をするfindのカスタマイズ方法をご紹介しました。
今回はbehaviorを使ってfindのカスタマイズを色々なModelに適用する方法についてです。
この方法を使えば、findのカスタマイズなどを一箇所に統一できるので便利です。
PHP5.3を活用したフレームワークのLithiumを触ってみたよ – その3
その2の続きです。
前回までは、基本的な部分(アプリケーションの下地を作る、基本的なライブラリを使う、viewやcssを編集する)の説明でした。
今回はModelにvalidationを追加して値のチェックをする方法と、findをカスタマイズしてデータの取り出しをModelにまとめる方法を書こうと思います。
PHP5.3を活用したフレームワークのLithiumを触ってみたよ – その1
Lithiumはphp5.3の機能をバリバリ使った新しいフレームワークです。
これまでぼくは、5.3の機能?何それ?
という感じだったので、勉強にもなるかなと思い色々触ってみました。
ということで、まず、チュートリアルをやったまとめです。




