POPSPRING 2017 (2017年3月25日@幕張メッセ)

POPSPRING 2017 幕張公演に、嫁さんと2人で参加してきました。フェスは初参加です。 GOLDチケットだったので、とても余裕もって見れました。最初は前の方にいたのですが、逆に人が密集していてみずらかったので、途中からちょっと後ろ目で見ていました。それ…

Lombokの@Builder(toBuilder = true)で、オブジェクトの複製を作成する

前回の記事の続きで。 @Builder(toBuilder = true)とすると、オブジェクトからBuilderを生成できます。 どういうときに使えるかというと、オブジェクトの複製を作成して、一部のプロパティのみ変えたいといった場合です。 package com.example.lombok; impor…

Lombokの@BuilderでBuilderを簡単に作成する

多数のプロパティを持つクラスを生成するときに、Builderが有用だと思っているのですが、普通に書くとそれなりにコード書く必要があります。そこでLombokの@Builderです。 package com.example.lombok; import lombok.Builder; import lombok.ToString; publ…

Lombokで生成されたメソッドに対してアノテーションを設定する

毎回調べているような気がするのでメモ。 Lombok+Jackson(Spring MVCやJerseyなどで使ってたり)を使っている場合に、@JsonIgnoreで一部のフィールドを対象外にしたい場合に、privateなフィールドに設定してもうまく動きません。 Lombokで生成したsetterまた…

Greasemonkeyでテキストエリアに入力補完を追加する

Redmineのtextile記法で、コードハイライトは<pre><code class="java"></code></pre>のような書き方をするのですが、これを入力するのが面倒になってきたので、Greasemonkeyを使ってテキストエリアで入力補完を行ってみました。 なお、Redmine 3.3 からは、ツールバーにコードハイライト用のボタン…

Spring Boot: Scheduledアノテーションを使用して、スケジュールされたタイミングでメソッドを実行する

Scheduledアノテーションを使うと、スケジュールされたタイミングでメソッドを実行することができます。 これで周期実行的なものは、簡単に実装できます。 Getting Started · Scheduling Tasks 34. Task Execution and Scheduling 実装方法 実行したいメソッ…

Redmine: リポジトリタブでデフォルト表示されるbranchを変更する(View customize plugin)

View customizeで『「リポジトリ」タブをクリック時にデフォルトで表示されるブランチをmasterではなく、ある特定のブランチに設定したい』といった問い合わせをいただいたので対応してみました。 onozaty/redmine-view-customize - GitHub 画面をJavaScript…

MyBatisのArrayTypeHandler使用時の注意点

MyBatisには、org.apache.ibatis.type.ArrayTypeHandlerがあって、java.sql.Arrayとのマッピングを行ってくれますが、パラメータ設定時と、結果取得時でマッピングが異なるので注意が必要です。 実際のコードを見たほうがわかりやすいので、現時点のコードを…

Spring Bootのspring-boot-starter-webでTomcatではなくJettyを使う

Spring Bootのspring-boot-starter-webのデフォルトだとTomcatがサーブレットコンテナとして組み込まれますが、設定を変えればJettyに切り替えられます。 70. Embedded servlet containers configurations { compile.exclude module: "spring-boot-starter-t…

Amazon Product Advertising APIを使ってISBNから書籍情報を取得する

ISBNから書籍の情報を取りたかったので、Amazon Product Advertising APIを使ってみました。 必要な情報 Amazon Product Advertising API を使うためには、下記の情報が必要になります。 アソシエイトタグ アクセスキー シークレットキー アソシエイトのアカ…

Spring BootでAssertJの3系を使う

Spring Boot(現在の最新の1.4系)はJava7もサポートしているため、spring-boot-starter-testで依存するAssertJは、Java8対応の3系ではなく、2系となっています。 upgrade assertj to 3.3.0 · Issue #5272 · spring-projects/spring-boot · GitHub 3系に変えた…

Spring Boot DevToolsを使って、コードを修正して確認といったサイクルを短くする

Spring Boot DevTools を使うことによって、コードを修正して確認といったサイクルを短くすることができます。 http://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html 使い方 build.gradleやpom.xmlで依存関係を追加する…

2016年の振り返り

すでに2017年を迎えてしまいましたが、、、2017年を迎えるにあたって、まずは2016年を振り返りたいと思います。 ダメだったこと Blogで毎週1エントリを目標にしていたけど、7月で途絶えてしまった 週に1度はGitHubにコミットすることを目標にしていたけど、3…

MyBatisのMapperはGroovyで書くことにした

MyBatisのMapperでSQL書くにあたって、複数行に渡るSQL書くのにヒアドキュメントが使いたくて、まずはKotlinを試しました。 ただ、ElicpseでKotlinを書こうとすると、importの自動補完が効かず、ちょっと面倒だったので、Groovyを試しました。(本当は、Kotli…

Spring BootでのDBアクセス方法(JDBC、JPA、MyBatis)について

Spring BootでのDBアクセス方法として、下記の3パターンを試してみました。 JDBC(spring-boot-starter-jdbc) JPA(spring-boot-starter-data-jpa) MyBatis(mybatis-spring-boot-starter) なお、それぞれの全体のコードは、下記に配置してあります。 https://g…

社内勉強会で「Spring Bootを触ってみた」というタイトルで発表しました

Spring Bootが楽しいので、社内勉強会で「Spring Bootを触ってみた」というタイトルでLTしてきました。 Spring Bootを触ってみた from onozaty www.slideshare.net 内容が薄くなってしまったので、もっと使い込んだら、もう少し長い時間でやりたいなぁと思っ…

Spring Boot がとても楽しい

Spring Boot を勉強し始めて、いろいろ楽しいので、いったんここにまとめてみます。 ここで書いている内容は、下記のリポジトリで試している内容になります。(今後もいろいろ試すので、リポジトリの内容はどんどん変わっていくかもしれません…) onozaty/spri…

Eclipseで「Class 'springfox.documentation.swagger.web.ClassOrApiAnnotationResourceGrouping' is marked deprecated」って警告が出る

下記の構成で Spring boot + Swagger のサンプルを作ってみたところ、 Eclipse 4.6.0 Spring Tool Suite(STS) 3.8.2 SpringFox 2.6.1 下記のような警告が出ました。 Class 'springfox.documentation.swagger.web.ClassOrApiAnnotationResourceGrouping' is m…

Redmine: チケットの説明欄を非表示にする(View customize plugin)

GoogleグループのRedmine Users (japanese)で、チケットの説明欄を非表示にするにはといった質問があったので、View customize pluginで対応してみました。 onozaty/redmine-view-customize - GitHub 画面をJavaScript/CSSで簡単にカスタマイズできるRedmine…

Redmine: 一部のカスタムフィールドを説明の下に移動する(View customize plugin)

@onozaty 色々とご相談ですみません。特定のカスタムフィールドを、説明欄の下に移動させるにはどうすればいいですか。JQueryのmanipulationを使えば出来そうな気がするのですが、上手くいってません。よろしくお願いします。— 松谷 秀久 (@mattani) Novembe…

Tomcat8をインストールするAnsibleのRoleを書きました

onozaty/ansible-tomcat: Install Tomcat Tomcat8をCentOS7にインストールするためのRoleを書きました。 最初はAnsible Galaxyにあがっているものを試してみようと思いましたが、やっていることが理解できない部分も多かったので、勉強もかねて自分で書いて…

Tomcat8で、デフォルトだとローカル以外からmanagerが表示できない

Tomcat8をインストールして、managerを見ようとしたところ、403 Access Denied となったので、画面に表示されていた通りtomcat-user.xmlにmanager-guiというロールでユーザを追加します。Tomcat6の時は、managerだったのが、Tomcat7以降で変わったようですね…

Redmine: コンテキストメニューからステータスを変えた際に、対象バージョンも変更する (View customize plugin)

How can I set default value when I change the status_id to refused in the issue list context menu? · Issue #4 · onozaty/redmine-view-customize-scripts · GitHub Issueとして、コンテキストメニューからステータスを却下(6)に変えたときに、対象バ…

Redmine: チェックボックスのカスタムフィールドを横並びで表示する (View customize plugin)

Redmine Users (japanese) - Google グループで、チェックボックスを横並びにしたいといった要望が出ていたので、View customize でやってみます。 onozaty/redmine-view-customize - GitHub 画面をJavaScript/CSSで簡単にカスタマイズできるRedmineプラグイ…

Redmine: チケット一覧のコンテキストメニューに、サーバにリクエストを送る項目を追加する (View customize plugin)

チケット一覧のコンテキストメニューに項目を追加して、その項目をクリックしたらサーバ側に選択しているチケットの番号を送って、サーバ側で処理させることができないかという質問をいただいたので、View customize pluginで試行錯誤してみました。 onozaty…

jQueryの関数をフックする

jQueryオブジェクトの各関数ですが、jQuery.fnに定義されています。 なので、jQueryオブジェクトの各関数をフックしたい場合には、jQuery.fnに定義されているものを差し替えます。 たとえば、showメソッドをフックして、他の処理を入れたい場合には下記のよ…

Java7、8で入った機能で知っておいた方がよさそうなもの

Java8でコードを書くことが増えたので、Java7と8の新機能で知っておいた方がよさそうなことを、いまさらながら書き出してみます。 重要度は、自分自身が使う頻度が多かったもので判断しているので、あまりあてにならないかもしれません…たとえば、Date and T…

JavaのparallelStream

JavaのparallelStreamについて思いつくままに。 Java8から入ったStream APIで、parallelStreamを使うと簡単に並列処理が書けますが、streamとparallelStreamを使い分けるという感覚じゃなくて、並列処理を書きたい場合にparallelStreamを使うといった形で使…

社内勉強会で「30歳過ぎてもエンジニアでいるためにやったこと」というタイトルで発表しました

30歳でアウトプットを意識するようになって、エンジニアとして大きく変われたと思っているので、それについて社内勉強会で発表してきました。 30歳過ぎてもエンジニアでいるためにやったこと from onozaty www.slideshare.net 10年間これがしっかりで…

同じ条件のStreamを繰り返し作るためのビルダーを書いてみた

同じ条件のStreamを繰り返し作るためのビルダーを書いてみました。まったく使いどころが見いだせませんが、、とりあえず書いたので晒しておきます。 onozaty/streamer Streamの中間処理の流れを定義しておいて、、 Streamer<String, Integer> streamer = Streamer.create(Stri</string,>…