Currently Browsing

Lithium

ヘアスタイルの画像を流し見してお気に入りを探せる「BeautyStream」を作りました

ヘアスタイルの画像を流し見して、お気に入りを探せる
BeautyStreamを作りました。

ずらっと並んだ画像を眺めて、お気に入りを見つけて
「かわいいね!」するサイトです。

こんなのです。
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名でキャッシュするようにするといいと思います。

そんなわけで

みんなどんどん「かわいいね!」してね!

BeautyStream – お気に入りのスタイルを見つけよう

PHP5.3を活用したフレームワークのLithiumを触ってみたよ – その4

Lithium

その3の続きです。

そろそろこの連続したタイトルも飽きましたので、今回で続きみたいに書くのは終わりです!

前回はModelでの値チェック、データの取得をするfindのカスタマイズ方法をご紹介しました。
今回はbehaviorを使ってfindのカスタマイズを色々なModelに適用する方法についてです。
この方法を使えば、findのカスタマイズなどを一箇所に統一できるので便利です。

Continue Reading this Entry

PHP5.3を活用したフレームワークのLithiumを触ってみたよ – その3

Lithium

その2の続きです。

前回までは、基本的な部分(アプリケーションの下地を作る、基本的なライブラリを使う、viewやcssを編集する)の説明でした。
今回はModelにvalidationを追加して値のチェックをする方法と、findをカスタマイズしてデータの取り出しをModelにまとめる方法を書こうと思います。

Continue Reading this Entry

PHP5.3を活用したフレームワークのLithiumを触ってみたよ – その2

Lithium

前回の続きです。
残念ながらかつおは出てきません!

今回はライブラリを使っての成功・失敗のメッセージ表示、CSSの編集などが主な内容です。

Continue Reading this Entry

PHP5.3を活用したフレームワークのLithiumを触ってみたよ – その1

Lithium

Lithiumはphp5.3の機能をバリバリ使った新しいフレームワークです。
これまでぼくは、5.3の機能?何それ?
という感じだったので、勉強にもなるかなと思い色々触ってみました。

ということで、まず、チュートリアルをやったまとめです。

Continue Reading this Entry