だいたい今日の話
Twitterのログから漁ってみた今日(だと認識している期間)にやったこと
CSSがキャッシュされてしまってうわー
- @mizuki_r
- css変更しても即時反映されないな。どこかでキャッシュしてんのか
chromeのキャッシュを外してもキャッシュされてた。
varnishかnginxだろうと目星をつけたが一朝一夕には片付かない気がしたので、テンプレートに直書きして検証・FIXしたら外出しするように。
いつの間にかキャッシュ効かなくなってて、「何が起きたのかわからねぇが」状態
Vimのプラグインが壊れたので消去と再生の仕事
ZenCoding.vimを入れる -> neocompcacheが効かなくなる
原因としては、プラグイン管理で使っているVundleの操作を間違えたことに起因するかもしれない。
また、ZenCodingとneocomplcacheは衝突するらしい。
とはいえ、一旦gitのsubmoduleを全部消し、BundleInstallでやったら動いたので、たぶんなにか余計なことをしていたのだろう。
neocomplcacheの補完は復活したが、snippets補完の機能が使えないままだった -> 後述。解決済み。
uni-formを使ってみた
CSS書くのがだるい。デザインのセンスが無い。
という方にオススメ、CSS Framework「Bootstrap」を使えばセンスが無くても時間が無くてもあっさりモダンなビューを構築できます!
でもBootstrapはBootstrap臭いので使いたくなかった。
でもformのデザインは本当に面倒で、CSSもHTMLも複雑になりがち。
そこで、簡単にデザイン出来る方法がないか、ちょっと調べてみた。
uni-form
https://github.com/draganbabic/uni-form
調べた結果、良さげなデザインをお手軽に、かつ自分好みだったuni-formを導入してみた。
validationツールもついていて、CSSもHTMLもややこしくせずに構築できて便利。
Validator::Customとuni-form-validationの話
uni-formのバリデーションツールと、mojoで使われているらしいValidator::Customを使ってみた話。
特に書くことが思い出せないので後日思い出したら。
neocomplcacheの変更にあわせて設定をいじった話
- @mizuki_r
- neocomplcacheにsnippetsのコマンドが無いんだけど。何がった
とつぶやいたら、@ShougoMatsu さんからリプが来て、snippetsがneocmplcacheから分離したことを教えていただいた。
vimrcに以下を追記して、:BundleInstall でsnippets復活。
Bundle 'Shougo/neocomplcache-snippets-complete'
under で return $self->redirect_to した話
- @mizuki_r
- $self->req->headers->header('X-PJAX')と$self->param('_pjax')のどっちで取るのが良いのだろう。記述量の少なさから後者なんだけど。
Mojolicious::Liteのcontrollerで、各ルートの事前処理を行なってくれるunderというメソッドがある。
このあたりの仕組は詳しく理解していないが、underに渡した値が真を返さないと続くControllerの処理が行われないそうだ。
なので、「条件にマッチしたアクセスはリダイレクトさせる」ような処理のとき、
return $self->redirect_to('/')
と書いてしまうと、戻り値が真(redirect_toの戻り値)が帰ってくるため、処理は中断されず、Controllerの処理が走ってからリダイレクトされるらしい。
ちょっとはまったのでメモ
Kolonとpjaxの悩ましい関係
pjaxは、HTMLの一部分をajaxで取得し要素を書き換えることをやってくれる。
なんだけど、Text::Xslate::Syntax::Kolonの継承(cascade)を使っていると、「コンテンツの一部分だけを表示」がちょっとやりにくい。
なので、pjaxのリクエストが来たとき呼び出す用のテンプレートと、それ以外の時に呼び出すテンプレートを用意しなければならない。
とはいっても、通常呼び出すテンプレートは、pjax用のそれをincludeするだけなんだけど。
でも管理したりする上でちょっとややこしい -> 続く。
pjaxリクエストの判定についての悩み
- @mizuki_r
- $self->req->headers->header('X-PJAX')と$self->param('_pjax')のどっちで取るのが良いのだろう。記述量の少なさから後者なんだけど。
ソース読んでないのでなんとも言えない。どっちがいいのでしょうね?
pjaxでリクエストした直後に遷移しちまう話
a.pjaxにpjaxを割り当てていたが、pjaxリクエストが飛んできたすぐ後に遷移が発生する。
つまり一度のページ遷移に二回通信が発生している。pjaxできてるのにできてない!とすごい悩んだし、前も抱えていた悩み。
解決案はここにあった
http://reiare.net/blog/2011/11/03/jquery-pjax/
そして原因はこいつ
- @mizuki
- そして俺は気づいた。 pjaxで出力しようとしているテンプレートに :cascade layout の文字があることに
htmlの文字列があるとご丁寧に location.href = url してくれちゃうらしい。
もっと早く気付け俺。
Kolonのmacroとincludeについての悩み
- @mizuki_r
- includeしたとき、macroはスコープが違うものとして扱われる。そのため、includeした時、された時は同じスコープで宣言されてなければ無いものとして扱われる・・・・ということ?
さっきの続き。
言葉の表現が正しいかはわからないが、とにかくincludeできないよ。