CloudFront+S3で配信している静的サイトをgzip形式で配信して高速化する方法。CloudFrontのCompress Objects Automaticallyを有効にするだけで、curlでcontent-encoding: gzipを確認できます。画像は対象外です♪
サーバー上やMacにあるJPEG画像をCLIツール「jpegoptim」で一括圧縮する方法。HomebrewやyumでのインストールからコマンドとオプションまでWordPress運用者向けにまとめました。1000枚でも数分で終わります♪
MySQLでNULLを含むカラムをORDER BYするとASCではNULLが先頭、DESCでは末尾になります。NULLの優先度を制御するには、ORDER BY句の先頭にIS NULLを追加します。4パターンの書き方をご紹介♪
HTML5で追加されたbuttonタグのformaction属性を使えば、JavaScriptを書かずにボタンごとにフォームの送信先URLを切り替えられます。サンプルコードと、formタグにactionが無い場合の書き方も♪
MySQLのポートを変えようと~/.my.cnfを作っても反映されない原因は、起動コマンドに--defaults-fileオプションが含まれていたこと。--defaults-extra-fileで設定ファイルを明示的に追加すれば上書きできます♪
ポケモン剣盾の無限ワットバグをArduino互換マイコンで自動化する方法。PythonもArduino IDEも不要で、dfu-programmerで書き込んでSwitchにUSB接続するだけ。必要な部品と手順をまとめました♪
PlayFramework2.7でJaCoCoのカバレッジ出力対象からviewsやroute、controllerのjavascriptなど自動生成パッケージを除外する方法。build.sbtに追記するだけでレポートの肥大化を防げます♪
PlayFramework2系をsbtではなくGradleで動かす方法。公式のGradleプラグインでgradle runPlayから起動し、JUnitやJaCoCoも使えます。PlayFramework2.7以上・Scala2.13以上は非対応なので注意♪
PlayFramework2.7で配列のクエリパラメータをFormモデルにbindFromRequestDataでマッピングすると最初の要素しか入らない問題。[]を付けるお作法と、[]無しでbindしてBeanバリデーションする自前の対処法をご紹介♪
PlayFramework2.7のプロジェクトでsbt-jacocoプラグインを使い、JUnitのカバレッジレポートをHTML形式で自動生成する方法。plugins.sbtへの追記とsbt jacocoでの実行、分岐を網羅していない場合の見方まで♪