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での実行、分岐を網羅していない場合の見方まで♪
sbtを使ってPlayFramework2.7のプロジェクトをJavaで作成する方法。Homebrewでのsbtのインストール、sbt newでのプロジェクト作成(ScalaとJavaの場合)、実行、生成されるディレクトリ構造、JUnitテストの実行まで♪
javacコマンドのコンパイルエラーログを日本語ではなく英語で出したいときは、-J-Duser.language=en オプションを付けるだけ。英語のエラーメッセージのほうがネットで調べやすいときに便利です♪
JavaでListやMapを操作するとUnsupportedOperationExceptionが出る原因は、Collections.emptyListやArrays.asListで作った固定長のコレクション。finalとは無関係です。new ArrayListでラップすれば操作できます♪