ページ

2015/03/31

gulp-uglify使用時のエラー

|

Saganを参考に、CSSとJavaScriptのminifyをしてみようとしたが、jQueryのminifyに失敗する。
使用していたのはgulp-uglifyの1.1.0。

Spring BootのIntelliJでのホットスワップ

|

ソースコードの修正に合わせて実行中のSpring Bootアプリケーションを自動的にリロードさせる方法(ホットスワップ)について。
基本的な方法はSpring Bootのドキュメントに書いてあるのだが、
実際に試してみて、bootRunの実行中に修正してもロードされず、困っていた。
このとき実は、bootRunをIntelliJ IDEA CE (14.0)のGradleビューのタスクをダブルクリックすることで実行していたのだが、これがいけなかった。
IntelliJのGradleビューからbootRunを実行してしまうと自動ビルドの対象外になってしまう。

IntelliJの設定でBuild, Execution, Deployment > Compilerの設定項目をよく見ると

Make project automatically (only works while not running / debugging)

と書いてある。
(=自動的なビルドは、実行・デバッグをしていないときにのみ有効)

つまり、Macならターミナル、Windowsならコマンドプロンプトなどで gradlew bootRun を別で実行しておけば、IntelliJ自体はrunningでもdebuggingでもない状態なので、ファイルの保存時にコンパイル・ホットスワップしてくれる。

2015/03/29

Spring Bootでのフロントエンド開発

|

SpringにProject Saganというのがある。
spring.ioのリファレンスアプリケーションということらしい。
Spring Bootでのフロントエンド開発はサポートされているのかな?
と調べていたところで
https://spring.io/blog/2014/07/24/spring-framework-4-1-handling-static-web-resources
を見つけ、そこでProject Saganが説明されていた。

Bloggerでモバイル表示時に横スクロールが発生...

|

PageSpeed Insightsを使ってこのブログを色々改善しようと考えた。
それなりに改善したものもあるし、Bloggerを使っている限り難しそうなものも多いので諦めているものもあるが、その中で「なぜ?」というものがあった。
下記の警告。

コンテンツのサイズを表示域に合わせる
ページ コンテンツの幅が表示域に対して広すぎるため、水平方向へのスクロールが必要になります。ユーザー エクスペリエンスを向上させるためにページ コンテンツのサイズを表示域に合わせてください。
ページ コンテンツの幅は 360 CSS ピクセルですが、表示域の幅は 320 CSS ピクセルしかありません。次の要素が表示域から外れています:
要素「<div class="widget-content"></div>」が表示域から外れています。

確かに、モバイルのエミュレーションで確認すると右側に余白ができており、横スクロールが発生している…。

2015/03/28

Spockのthenで使える表現

|

GroovyのテスティングフレームワークSpock Frameworkではthenの部分に合格条件を記述するが、一行で一つのbooleanを表現する必要がある。
JUnitのようにテストケース内に何を書いても良いフレームワークに慣れていると、どう書いていいかわからなかったりする。

以下に、thenに使えそうな表現をいくつか挙げてみる。

Gradle Pluginプロジェクトをマルチプロジェクトにするときの注意点

|

Gradle Pluginを作る際、シングルプロジェクト構成なら気にすることはないが、マルチプロジェクト構成にした時にartifactIdが変わってしまったのでその対策のメモ。

AndroidのGradleプラグインgradle-eclipse-aar-pluginを開発している時に起きたことだが、当初はシングルプロジェクト構成だったものを後からマルチプロジェクト構成に変更して問題が発生した。

以下のように、プラグインのプロジェクトに名前をつけてあげればいい。

rootProject.name = 'gradle-eclipse-aar-plugin'
include ':plugin', ':misc:samplelib'
// ディレクトリ構成上はpluginだが、別名を付ける
project(':plugin').name = 'gradle-eclipse-aar-plugin'

これをしないと、uploadArchivesタスクを実行した時に上記の例で言えばpluginartifactIdとして扱われてしまう。

Spring Bootのアプリ内にパスワード生成タスクを追加

|

以前のエントリ Play Frameworkのアプリ内にパスワード生成プロジェクトを追加のようなことをSpring Bootで行う方法について。
上記エントリで書いたように、Gradleで簡単に定義できる。

暗号化方法は、Spring Bootでユーザ認証で書いたようにWebSecurityConfigurerAdapterの継承クラスでnew StandardPasswordEncoder()を設定している前提。
他のEncoderを使う場合はタスクの内容を適宜書き換えれば良いはず。