例えば大量の行をコメントアウトしたい場合。
1, [Ctrl + V]で矩形選択モードへ。
2, [Shift + G]で最終行まで選択。
3, [I]でインサートモードへ移行。
4, 「#」を入力。
5, [esc]でインサートモードを抜ければ完了。
これは簡単。めっちゃ便利。
例えば大量の行をコメントアウトしたい場合。
1, [Ctrl + V]で矩形選択モードへ。
2, [Shift + G]で最終行まで選択。
3, [I]でインサートモードへ移行。
4, 「#」を入力。
5, [esc]でインサートモードを抜ければ完了。
これは簡単。めっちゃ便利。
とても簡単。
まずはapp.phpの下記2行のコメントアウトを外す。
require_once __DIR__.'/../app/AppCache.php'; $kernel = new AppCache($kernel);
んでコントローラーで下記のようにレスポンスを返す。
$response = new Response(); $response = $this->render('HogeFugaBundle:Default:index.html.twig'); $response->setPublic(); $response->setSharedMaxAge(300); return $response;
以上、完了!
これだけで組み込みリバースプロキシの共有キャッシュが動作するなんて素敵過ぎる。
下記スライドにわかりやすく纏められてます。(感謝!)
http://www.slideshare.net/hidenorigoto/symfony2http-cache-reverse-proxy
angular製のアプリをgoogleに正しく取得してもらうためには、下記記事の通り、ヘッダー内に多少の細工を施す必要がある。
まずは、このページがダイナミックアプリケーションであることを伝えるために、下記metaタグを追加する。
<meta name="fragment" content="!">
次にJavascriptnのwindowオブジェクトに下記変数を定義。
window.prerenderReady = false;
最後にビューのレンダリングが完了した際に上記変数をtrueにしてやる。
window.prerenderReady = true;
window.prerenderReadyに関しては記述の必要性に関して下記のページが参考になる。
http://scotch.io/tutorials/javascript/angularjs-seo-with-prerender-io
window.prerenderReadyのセクションに
There is a high probability that you will not need to include this snippet, but the option is there if you need it.
のような記述が見受けられる。
これは「この記述は必要じゃない可能性が高いけれども、もし必要であるならばオプションとして用意されているよ」って意味なのかな?
兎に角これで動的なタイトルであっても、Google先生は正しく補足してくれるようになる模様。
今後も要調査項目かな。
http://stackoverflow.com/questions/4696499/meta-charset-utf-8-vs-meta-http-equiv-content-type
答えはHTML5であれば前者(短い方)を使うべきとされている。とのこと。
更なる詳細はググろう。
を見つけたのでメモ。
<ul class="list-unstyled"> <li>...</li> </ul>
これでリストのstyleが全て無効になる。
例えば、記事とカテゴリがあって、カテゴリの数が多い順でカウント、ソートしたい場合のDQLは下記の通りになる。
$dql = "select c.id, c.name, count(c.id) as cnt from HogeFugaBundle:Categories as c join c.articles as a where c.status = 1 group by c.id order by cnt desc ";
DQLでのjoinのやり方は面白いね。
いちいちビューから$eventを渡して判定処理をかくのもダサいので、ディレクティブで定義されてるものを見つけてきた。
app.directive('ngEnter', function () { return function (scope, element, attrs) { element.bind("keydown keypress", function (event) { if(event.which === 13) { scope.$apply(function (){ scope.$eval(attrs.ngEnter); }); event.preventDefault(); } }); }; });
ビューでこう使う。
<div> <input type="text" ng-enter="doSomething()"> </div>
うん。これは便利。
HTML5モードと非HTML5モードの自動切り替えをAngular側にやってもらうためにも、aタグにリンクを埋め込むのではなく、$locationサービスを用いてルーティング変更を行うべき。
下記例。
コントローラー側に下記のようなメソッドを定義。
$scope.changeView = function(view){ $location.path(view); }
ビュー側から下記のようにして移動先のロケーションパスを渡せばOK。
<button ng-click="changeView('/about')">ほげ</button>
といった感じ。