Issei.M's Techlog

Web/iOS エンジニアの僕が技術関連のメモ等をつらつらと。主に Symfony について書いています。

[Symfony] 最近のSymfony Standard Editionのディレクトリ構成

この記事はSymfony Advent Calendar 2015 15日目の記事です(当日0時過ぎに枠が空いてる事に気づいて急遽書きました。)。前回は@tai2さんのDoctrineのベストプラクティス(Doctrine 2 documentationから抜粋翻訳)でした。 既にお使いの方はご存知かと思いま…

Plug 'n Play with Puli

この記事はSymfony Advent Calendar 2015 13日目の記事です。前回は@77webさんのSymfonyのFormをテストするとき、どんなテストクラスを書くべきか?でした。 今日はSymfonyのコアメンバーであり、Form, Validator, OptionsResolverなどの主要コンポーネント…

[Symfony] LiipFunctionalTestBundleを使ってファンクショナルテストで楽をする

この記事は Symfony Advent Calendar 2014 の21日目の記事です。 いよいよAdvent Calendarも最終週、残す所あと5日となりましたね。 LiipFunctionalTestBundleは、以前日本Symfonyユーザ会でも紹介されていたSymfonyアプリケーションのファンクショナルテス…

[Symfony] [Routing] ルートの host はなるべく設定した方がいいよと言うお話

この記事は Symfony Advent Calendar 2014 の12日目の記事です。 当初はFormについて何か書く予定でしたが、どうしても長くなってしまうのでRoutingについて書こうと思います。 SymfonyのRoutingでは、YAML, XML, Annotationなど様々な形式でルートを設定す…

[Doctrine] SQLiteでQuery::iterate()を使うとDBがロックする件

僕はSymfony+Doctrineプロジェクトで機能テストを作る際、 LiipFunctionalTestBundle を使ってテスト環境だけSQLiteで動作するようにしているのですが、ある時から途中でDBがロックしてしまい、テストスイートがパスしなくなってしまいました。 SQLSTATE[HY0…

[Symfony][Form] フィールドタイプはよく考えて決めよう

Symfony2を使い始めて2年くらい経ちましたが、未だ全容をつかみきれない機能の1つがForm。今回はそんなFormのフィールドタイプについて話します。 通常、Symfony2のFormではフィールドタイプを次のようにして定義します。 $builder->add('addressLine', 'tex…

[Symfony] Doctrine の Repository をサービスコンテナに登録する

AcmeBlogBundle\Repository\BlogRepositoryをサービスコンテナに追加: # @AcmeBlogBundle/Resources/config/services.yml parameters: acme_blog.repository.blog.class: Acme\BlogBundle\Repository\BlogRepository services: acme_blog.repository.blog: c…

VagrantでNFSを使うときのsudoパスワード入力を省略する方法

Vagrantの共有ディレクトリ設定にNFSを使用している場合、vagrant up時に毎回sudoのパスワードを入力しないといけません。 なんとかならないものかとググっていたらありました。 Vagrant NFS Shares without a password どうやら/etc/sudoersに数行追加する…

[Doctrine] MySQL の TEXT 型を使用する

※Doctrine 2.3 以下でのお話です。 MySQL のカラムにTEXT型を使おうとして普通に type を text にするとLONGTEXT型になってしまいます。 /** * @ORM\Column(type="text") */ private $title; ※コンソール結果 $ php app/console doctrine:schema:create --du…

[AWS] Root Device が ebs の EC2 から無停止で AMI を生成する

通常 Root Device が ebs の EC2 から AMI イメージを生成する際、インスタンスを一時停止する必要がありますが(自動で停止します)実は無停止で生成する方法も存在するので今回はその手順をご紹介します。 ※今回はRightImage_CentOS_6.4_x64_v13.5.0.2_EBS…

[Symfony] Buzz\Browser でお手軽 HTTP リクエスト

HTTP リクエストを送る PHP ライブラリは数多くありますが、中でも Buzz\Browser が使いやすかったので Symfony での使用例をご紹介。 インストール いつも通り、Composer でインストールします。作者は Assetic で有名な Kirs Wallsmith さんです。 php com…

[Symfony] LiipThemeBundle でスマホ対応&Assetic を使う際の諸注意

Symfony でスマートフォン対応するにあたって LiipThemeBundle がよさげだったのでご紹介。また当バンドルを使用する際 Assetic でハマる箇所がある為メモ。 Symfony Standard Edition 2.2.1 の AcmeDemoBundle で試してみます。 LiipThemeBundle をインスト…

[Monolog][Symfony] Monolog が神過ぎる件 ~エラーログをメールで送ろう~

Symfony で採用されているロガーライブラリ Monolog は Python の LogBook と言うライブラリに影響を受けており、 柔軟なロギング処理が可能です。 今回は、Symfony の運用環境でERRORレベル以上のログをファイルに書き込みつつ、メールでも通知するように設…

[Symfony] JSON レスポンスを返す

/** * @Route("/test.json", name="json") */ public function jsonAction() { // do something return new JsonResponse(array('id' => 12345, 'title' => 'json test')); } バージョン 2.1 で追加された JsonResponse をコントローラ内で返すだけです。コ…

[Symfony] サブドメイン別にルーティングを制御する

Symfony 2.2 で正式に追加された機能の様です。 フロントエンドをexample.com、バックエンドをsystem.example.comとしてそれぞれ別のバンドルで運用する場合の設定例をご紹介。 まずはバックエンド用のバンドルを作成します。 $ php app/console generate:bu…

[Symfony][Capistrano] Capifony で Symfony2 のアプリケーションをデプロイする

今回は Symfony アプリを Capistrano で簡単にデプロイできる Capifony (http://capifony.org) の使い方を紹介します。 実行環境は Ruby 1.9.1 + Capistrano 2.14.2 です。 Capifony をインストールする RubyGems でインストールします。 $ gem install capi…

[Linux] CentOS で setfacl が使用できない時は

Apache ユーザに特定のディレクトリへの書き込み権限を与えようと思って setfacl を使用したらこんなエラーが。 (※CentOS 6.2 x86_64 でのお話) setfacl -m u:www-data:rwx /var/www/example.com/logs setfacl: /var/www/example.com/logs: Operation not pe…

[Doctrine][MySQL] アノテーションで unsigned を定義する

Doctrine2 のエンティティプロパティに unsigned を設定する方法が分かりづらかったのでメモ。 /** * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") * @ORM\Column(type="bigint", options={"unsigned"=true}) */ protected $id; こんな感じで Column…

[Symfony][Doctrine] Fixtures からサービスコンテナを取得する

Fixtures 内で、サービスコンテナを呼び出したくなる事はしばしばあります。 例えば User エンティティクラスが Security コンポーネントの UserInterface を実装している場合、PasswordEncoder を使いたくなりますね。 しかしそのままでは AbstractFixture …

iPod touch 欲しい!

iPod touch 欲しい! id:hatenablog http://staff.hatenablog.com/entry/iphone-app-campaign アプリをダウンロードしてiPod touchをもらおう! iPhoneアプリ「はてなブログ」をリリースしました

My memorable first entry!

My memorable first entry! Test with the Markdown. What is the Markdown? The Markdown is a notation that can effect HTML decoration to text pretty easily. Something like that: Strong, Italic, Code Snippet Test to embed a gist