【CSS】チェックボックスやラジオボタンをラベルと横並びにするとinput要素がずれる。

ので下記のように対応すればOK。

input {
	vertical-align: middle;
}

input要素に適用するところがミソ。

 

【UnderscoreJS】Jsonで取得してきたDBのデータからマスタオブジェクトを生成する。

メモ。

例えばサーバーから下記のようなjsonが返ってきたとして。

[
	{
		"id": 1,
		"name": "taro",
		"age": 16
	},
	{
		"id": 2,
		"name": "hanako",
		"age": 18
	},
	{
		"id": 3,
		"name": "bob",
		"age": 20
	},
]

IDと名前のマスタを生成したい場合、下記のように生成することが出来る。

// dataは上記のjsonオブジェクト
var master = _.object(_.pluck(data, 'id'), _.pluck(data, 'name'))
// => {"1": "taro", "2": "hanako", "3": "bob"}

underscoreさん便利っすわー。

 

【AngularJS】ブラウザバックを検出する方法。

いつもお世話になっておりますstack様に素晴らしいコードがあったのでペタリ。

myApp.run(function($rootScope, $route, $location){
   //Bind the `$locationChangeSuccess` event on the rootScope, so that we dont need to 
   //bind in induvidual controllers.

   $rootScope.$on('$locationChangeSuccess', function() {
        $rootScope.actualLocation = $location.path();
    });        

   $rootScope.$watch(function () {return $location.path()}, function (newLocation, oldLocation) {
        if($rootScope.actualLocation === newLocation) {
            alert('Why did you use history back?');
        }
    });
});

詳細は下記参照。

http://stackoverflow.com/questions/15813850/detect-history-back-using-angular

 

【AngularJS】ng-repeatでオブジェクトを回した際、オブジェクトのキーを取得する方法。

メモ。

下記のように定義してやればOK。

<label ng-repeat="(id, name) in categories track by $index"></label>

(key, value) in object としてやることで両方を取得することが出来る。

 

【Eclipse】同一のファイルを複数タブ開く方法。

同一ファイルの違う箇所を画面分割して表示したい場合など。

複製したいファイルを開いている状態で

「Window」→「New Editor」

を選択すればOK。

 

【PHP/Javascript】switch(true)のイディオム。

switch文に関してかなり便利なイディオムを見つけたのでメモ。
switchの引数にtrueを渡しcase句で式を評価させることで、多分機のif elseif文をスッキリと記述することが出来る。

■PHPの場合

switch (true) {
	case $a == 1:
		break;
	case $a == 2:
		break;
	case $b == 5:
		break;
}

■Javascriptの場合

switch (true) {
	case x == 1:
		break;
	case x == 2:
		break;
	case x == 3:
		break;
}

どうやら賛否両論あるイディオムみたいだけど、breakをちゃんと書き忘れなければいいんじゃないかな。
と思う。

 

【Symfony2.3】JMSserializerを用いた際にEntityのjson化深度を設定する。

JoinしまくってるDBなどで、引っ張ってくる深度を設定したい場合
下記のようにMaxDepthを設定してやることで制御可能。

※公式クックブックまんま引用。

use JMS\Serializer\Annotation\MaxDepth;

class User
{
    private $username;

    /** @MaxDepth(1) */
    private $friends;

    /** @MaxDepth(2) */
    private $posts;
}

class Post
{
    private $title;

    private $author;
}

さらなる詳細は下記URLを参照されたし。

http://jmsyst.com/libs/serializer/master/cookbook/exclusion_strategies

 

【Symfony2.3】AllayCollectionの中身を空にする。

すごく説明しづらい。
ようはEntity内にある外部Entityが格納されているメンバ変数を空にしたい時。

ArrayCollection()のclear()メソッドを実行してやれば空にすることが出来る。

例。

$entity->getCategories()->clear();

的な感じ。

詳細は下記URLを参照。

http://stackoverflow.com/questions/11895533/how-to-clear-or-empty-the-array-collection-in-doctrine-symfony