静的ファイルを配信する場合にはパスにバージョンを含めるのがいいんじゃなかろうか
最近、思っていることを。
なお、バージョンとは言ってますが、Gitのコミットハッシュ値でもUnixタイムスタンプでも何でもいいです
静的ファイル配信パターン
WEBアプリで静的ファイルを配信するパターンは以下3つあるんじゃないかとなんとなく思っています。
1. パスに特になにもつけない
<link rel="stylesheet" type="text/css" href="/static/css/hoge.css" /> <img src="/static/img/hoge.png" /> <script src="/static/js/hoge.js"></script>
2. パスにクエリストリングでバージョンを付ける
<link rel="stylesheet" type="text/css" href="/static/css/hoge.css?v=1" /> <img src="/static/img/hoge.png?v=1" /> <script src="/static/js/hoge.js?v=1"></script>
3. パスにバージョンを含める
<link rel="stylesheet" type="text/css" href="/static/v1/css/hoge.css" /> <img src="/static/v1/img/hoge.png" /> <script src="/static/v1/js/hoge.js"></script>
この中でどれがいい?
1はいろいろ辛そうなのでなしとして、2よりも自分は3がいいと考えています。
以下、その理由をば。
任意のタイミングで確実にリリースできる
これは2のパターンでも当てはまるので、3だけではないですが。
リリースしたタイミングで新しいファイルとしてロードされます。
クライアントのキャッシュを気にしないでも大丈夫。
新旧のバージョンが混在できる
LBから切り離して、アプリサーバを1台ずつローリングアップデートするパターンなんかでも問題なく。
古いアプリサーバにアクセスしたクライアントは古いバージョンのファイルを見て、新しいアプリサーバにアクセスしたクライアントは新しいバージョンのファイルを見て、動作します。
2だと(初めてアクセスした|キャッシュの期限が切れた)クライアントがサーバ側が古い状態で、最新の静的ファイルにアクセスしてしまう可能性があるかと(ブルーグリーンデプロイメントしているなら問題ないかもしれませんが)
事前にリリースできる
現在動作しているアプリには影響を与えず、安心安全に本番環境に事前にリリースできます。
これは2だと無理ではないでしょうか。
補足
ディレクトリではなく、ファイルにバージョンを含めるパターンはどうか?
<script src="/static/js/bundle-abcdefg1234xxxxxxxx.js"></script>
的な。CSS/JSはいいですが、画像のことを考えるとディレクトリにバージョンを含めたほうがいいんじゃないかと思います。
まとめ
久しぶりにブログを書きました。
もし違うよとかもっといい方法があるよということであれば、コメントしていただければ幸いです。
ではでは。
Windowsを少しでもMacの環境に近づける
最近転職しました。
で、現状、PCがWindowsしかない + VirtualBoxとかVM使う系禁止という縛りがあるわけです。
というわけで最近のWindowsをMacに近づけられないかという記録をば。
Homebrew(Cask)が恋しい
Chocolateyというブツがありました。
Windows用のパッケージマネージャだそう。
Homebrew(Cask) 同様
choco install vim
とかでいろんなアプリをインストールできます。
※ただし、もちろんコマンドプロンプト or PowerShellから!
Alfredが恋しい
ランチャーがないのが辛い。
いくつか候補があった中で、Woxにしてみました。
しゃーなくこちらを導入。
クリップボード履歴と定型文機能があります。
窓の杜とか久しぶりなんだが。。
ターミナル環境が恋しい
で、最大の問題がUnix系のコマンドが使えないこと。
CUI大好き人間だったので、ないのが辛い。。
Cygwin?いやいや・・・
coLinux
昔使ってたなぁと思ってみてみたら、
どうも開発は止まっているよう。
まぁ、今の時代にあんま需要なさそうだしね・・・
MSYS2(Git for Windowsにも付いてくる)
なものがあると。
この辺も参考になるかもしれません。 d.hatena.ne.jp
これだ!と思ったが、自分の環境では動かないので断念。。。
Babun
こんなものがあるそう。
Babun - a windows shell you will love!
一言でいうと使いやすくしたCygwin。
いちおう動いたけど、キーをタイプしてレスポンスが遅いのが辛い。。
ConEmu
Unix系のツールが揃うわけではなく、 単なる端末エミュレータだけど、コマンドプロンプトよりは幾分まし。
いろいろやったけど、、、
やっぱり無理ある。。
まとめ
5年ぶりくらいにWIndowsを触ってみて、それなりに進化はしているのだけれども、 やっぱりMacサイコーという気持ちが強くなりました。
ターミナル派の人はHyperTermに近いうちに乗り換えると良いかもしれない
HyperTermというターミナルソフトウェアが大変興味深かったので、そのご紹介を。
HyperTermとは?
公式サイトで JS/HTML/CSS Terminal と謳っている通り
Electron + React + Redux製のターミナルです。
他のElectronアプリのご多分にもれず、JavaScriptで機能を拡張できる作りになっています!
公開されてから、まだ1ヶ月そこらですが、現時点で既に6000以上GitHubスターを集めています。
インストール
今のところMacでしか動かんとのこと。
とりあえず試したい方は https://hyperterm.org/#installation から落とすか
Homebrew Caskを使っている人はいつもの
brew cask update brew cask install hyperterm
で。
初期設定
通常のMacアプリ同様設定変更できます。
⌘,
を押すと、HyperTerm上で設定用のJSONファイル(~/.hyperterm.js
)が開きます。
デフォルトのフォントとテーマが気に入らなかったので、↓みたいな感じに変更しました。
{ config: { fontSize: 13, // font family with optional fallbacks fontFamily: '"Droid Sans Mono for Powerline", Menlo, "DejaVu Sans Mono", "Lucida Console", monospace', // 中略 }, plugins: [ 'hyperterm-seti', ], }
使ってみた感想
iTermとかと比較しても全く遜色ない感じ。
この使い心地でこの拡張性なら乗り換えよう!と思いました。
が、↓の問題点があったので踏みとどまりました。
現状の問題点
日本語は表示できますが、打てません!
これが解決されないとメインでは使えないかな。。
その他参考リンク
awesome-hyperterm
https://github.com/bnb/awesome-hyperterm
仕事早いですね〜
テーマやその他プラグインはこちらから探すのが吉です。
日本語の記事
ターミナル作業が爽快になるターミナルエミュレーター: HyperTerm
まとめ
日本語さえ入力できるようになれば、iTermから乗り換えると思う。
Presentational and Container Components
結構日にちが経ちましたが、まだボチボチ読まれているようなので、この記事の補足など。
Smart and Dumb Components -> Presentational and Container Components
Redux作者の記事ですが、途中で呼び方を変えた模様。
Presentational and Container Componentsの方が好みだとのこと。
Reduxの公式ドキュメントもPresentational and Container Componentsという呼び方になってますね。
http://redux.js.org/docs/basics/UsageWithReact.html#presentational-and-container-components
Presentational Components には Presentational Componentsしか含まれちゃだめなの?
そんなことないと。
Container > Presentational > Container > Presentational
みたいなパターンもあり得ると。
自分も現場で実際にありました。
新たに見つけた他参考になるリンク
AbemaTVでの事例
参考になります!
www.slideshare.net
自分と同じようなことを考えている人
この人はSmart/Dumb Componentsという言う方を好んでいるようです。
なかなかわかりやすいスライド。
ブログはこちら。
主人が英語の勉強を始めて185日が過ぎました
の続きです。
$ date '+%j' 185
だいぶ空いてしまいましたが、185日過ぎてもぼちぼち続けているのでその報告も兼ねて。
気づいたら今年の折り返し地点過ぎてましたね!
3月:モチベーションの低下
中だるみでしょうか。英語を勉強するモチベーションが下がってきました。。
これじゃいかん・・・と思っていたところ、
運良く同僚から、社内の外国人エンジニアを交えての英語ランチというモノに誘ってもらいモチベーション回復。
さらに、ランチ時にあまりにも言葉が出ないので英会話に対する危機意識が高まりました。
4月:DMM英会話を始める
周りでの評判が良かったのと、体験レッスン2回無料という言葉に釣られて、勢いで始めてみました!
↓ コレ。
結果、良かった!
発音や文法等は相変わらずダメだし、講師から質問されても返せなかったりするものの、英語で話す/書くことへの恐怖心が薄まりました。
また、講師を予約するというシステムに強制力があるのが良かったみたいで、毎朝8時に英会話をしてから出社という習慣ができました。
5月:引き続きDMM英会話
1ヶ月過ぎても良かったので、続けました。
そして、この頃から発音記号毎の発音を3Dで見れるという神アプリを使い始めました。
↓ コレ。
これは発音の教材でよくある英語教師の正面の口元をアップした映像だけではわからない口の中の事情(?)を3Dで解説してくれるというモノです。
リエゾンとか英語の音の変化が何故起きるのか?というのが視覚的に理解できたのでこれは良かった。
発音を勉強したいと思っている人は買いだと思います。
6月:またまたモチベーション低下からのチャットに切り替え
しばらく、DMM英会話を続けていたものの、成長が止まった感が出てきました。
モチベーション的にもなんだか下がってきたのでこれじゃイカンと一度英会話を離れてみることにしました(DMM英会話は退会してもまたいつでも再開可能とのことなので)
次はライティングの練習がしたいと思ったので、Eigoooというアプリを試してみました。
↓ コレ。
これはいつでも(8時30分〜25時)英語の講師の方とチャットができるというサービス。
会社への行き帰りの電車内でもできるので、なかなかいい感じ。
実は去年少し試したのですが、当時は教師から話かけられても会話ができず退散しました。
しかし、DMM英会話のおかげもあり、とりあえず会話が成り立つようになってましたw
注意点としては、フリートーク/本日のTOIECの英単語/本日のテーマ のいずれかに沿ってチャットをする感じでメニューが少なめなので、長期間は継続しづらいかもしれません。
7月以降
Eigoooにもうちょっとなれたら、次は一時期話題になっていたHiNative Trekを試したいと思ってます。
http://thebridge.jp/2016/02/hinative-trekthebridge.jp
月額9800円と、他のサービスと比較するとちょい高いけど、それに見合ったサービスを受けられそうな感じ。
ちなみに、外国語学習者同士で添削し合う HiNative というアプリ上でHiNative Trekのサービスを受けられるようですが、 これの無料機能はすでに使っています。
↓ コレ。
ちょっとした空き時間で自分の作った文章のネイティブの人からフィードバックをもらえたりしてこれもなかなか良いのではないかと。
まとめ
モチベーション的には上がったり下がったりはあるものの、何とか学習を半年続けられています。
英語力上がった!とははっきりとは言いづらいですが、GitHub上でプルリク送ったりとか英語で何かを発信することへの耐性はついてきたかなと。
個人的にはDMM英会話は英語学習に悩む人には一番オススメしたいと思ってます(実際周囲の人にオススメしまくってますがw)
また、数カ月後にどうなったか報告します!
グローバルでgitフックスクリプトを仕掛けると`go get`がちゃんと動作しなくなる可能性がある
Visual Studio CodeのKeyBindingをCTRL+Nを↓、CTRL+Pを↑に変更する
しばらくサボってましたが、今日からは再び頑張りたい。。
諸事情により、Visual Studio Codeを触り始めました。
が、違和感を感じたのが各種ウィンドウでCTRL+N、CTRL+Pのキーバインドが効かないこと。
ググッてみたところ
↑のEmacs向けのキーバインドを公開してくれている方がいました。
ありがたや。
しかし、自分は生粋のEmacsユーザという訳ではなく、とりあえずCTRL+N、CTRL+Pが効けばよかったので
curl -s https://raw.githubusercontent.com/nana4gonta/emacs-visual-studio-code/master/release/keybindings-osx.json | jq 'map(select(.key=="ctrl+n" or .key=="ctrl+p"))'
で該当する設定だけをいただきました。
あとは、Code -> Preferences -> Keyboard Shortcuts でkeybindings.jsonに貼り付けるだけです。