fine, later feeling

晴れのち気分

webpackで自動でJSファイルにリビジョンを付けて配信する

業務でレガシーなフロントエンドJSをbundleして、自動でリビジョンを付けて配信するようなタスクを任されたのでその軌跡を紹介します。

自動でリビジョンを付けて配信するというのは、このようなランダムな文字列が付与された静的ファイルのことです。

mypage-7dae16c420f219dde9b5.bundle.js

毎回ソースコードに変更がある状態でビルドすると毎回違うリビジョンが自動で付与されます。

これにどんなメリットがあるかというと、ファイル名が変わることでブラウザは新規ファイルだと判断しGETしてくれます。

ブラウザが良きにとキャッシュしてしまうとソースコードに変更があるのに(キャッシュされた)古いソースコードを参照してしまって予期せぬ挙動をすることがあります。

それを防止するために、確実に最新のJSを取得してもらうためファイル名を変更して配信することが良いことだと言われます。

つまりRailsでお馴染みのアセットパイプラインをwebpackを使ってbundleするついでにやってしまおうということです。

今回の要件は

  • ES2015で書かれたJSをbabelでトランスパイルしてbundleすること
  • SPAではないので画面ごとにbundleされたJSが欲しい
  • ミニファイすること
  • リビジョンを付与してブラウザキャッシュを回避すること
続きを読む

スカイプのチャットログをコピペした時に付いてくる「時間」と「ユーザー名」を消す

ここ1ヶ月ほどオンライン英会話を受けて勉強しています。

英会話ツールとしてスカイプを使っていますが、講師の方によってはメモだったり間違えた箇所をチャットログに貼ってくれます。

それを復習用としてEvernoteなどのメモツールに貼り付けようとすると余計な文字がくっついてくるのです。

例えばこんな感じ

[2016/05/21 0:02:34] Hogehoge: I will study driving at the driving school on Sunday.
[2016/05/21 0:03:24] Hogehoge: I will attend a Technical Software Seminar tomorrow.
続きを読む

pythonからElasticMQにメッセージキューイングする

プロジェクトではAmazon SQSを使ってます。

開発環境でAmazonSQSを使うとお金がかかるのでAmazonSQS互換のElasticMQというScala製のメッセージキューを使ってます。

github.com

ロングポーリングするバックグラウンドで動くプログラムをScalaで作ってるのですが、デバッグ用にjson形式でエンキューするスクリプトが欲しかったのでささっと作りました。 AWS SDKはbotoを使ってます。

# botoのインストール
$ sudo yum install pip
$ pip install boto
続きを読む

PlayのCacheAPIをサブプロジェクトで使いたい

ある程度アプリケーションが大きくなってくるとサブプロジェクトを作ってプロジェクト分割したくなる時があります。

例えばサブプロジェクトでplayのCacheAPIを利用したいと思っても残念ながらplayのCacheAPIはplay.api.Applicationに依存しているため、直接使うことができません。

playアプリケーション起動時にplay.api.cache.Cacheの実装を渡してしまえばサブプロジェクトでもplayのCacheAPIを利用することができます。

インターフェースを定義します。

trait Cache {
  def get(key: String): Option[Any]
  def set(key : String, value : Any, expiration : Int): Unit
  def set(key: String, value: Any, expiration: scala.concurrent.duration.Duration): Unit
  def remove(key: String): Unit
}
続きを読む

octocatが届いた

先週の月曜日にGitHubショップで注文したoctocatの3インチフィギュアが届きました
 
4日に注文して届いたのがちょうど1週間後の11日でした。
不在だったので実際に受け取れたのは昨日です。
スウェーデンからの発送でしたが送料も800円程度で思ってたよりも安いですね!
 
箱はこんな感じ

f:id:suzumidokoro:20160413220717j:image