[programming]

担当者欄にインクリメンタルサーチをつける(Redmine View Customize Plugin)

この記事は、Redmine Advent Calendar 2017 - Qiitaの5日目の記事となります。 前田さんの下記スライドみて、Redmine 4.0 で担当者欄にインクリメンタルサーチが付くことを知りました。 Redmine次期バージョン 4.0・4.1 とその先の未来像 とっても便利そうで…

Redmine から Rocket.Chat (Slack) に通知するプラグイン

RedmineからRocket.Chatに通知するプラグインを調べていたところ、redmine_messenger というプラグインがよさそうに見えました。ちなみにWebhook使っているのでSlackでも同じです。 GitHub - AlphaNodes/redmine_messenger: Messenger plugin for Redmine wi…

大量のテキストからトークンを切り出す際に、トークンをキャッシュしてメモリ使用量を抑える

大量のテキストからトークンを切り出す場合(形態素解析など)に、同じ内容のトークンが大量に発生することがあります。 このトークンが不変なオブジェクトであるならば、同じ内容のトークンは1つのオブジェクトを使いまわす、すなわちキャッシュすることによ…

Firefoxでbreak-insideは対応していないけど、page-break-insideで同じ効果を得られる(Firefox 56で確認)

CSSのcolumn-countなどを使って段組した場合、要素の途中で折り返しをして欲しくなくて、break-inside: avoid;を指定していました。 break-inside - CSS | MDN Chromeはこれで意図した動きになりましたが、Firefox(確認したのはFirefox 56)ではサポートされ…

ShortcutKey2URL for Chrome というGoogle Chrome向けの拡張機能を公開しました

ShortcutKey2URL for Chrome という、Google Chrome向けの拡張機能を公開しました。 ShortcutKey2URL for Chrome は、頻繁に利用するサイトへ簡単にアクセスするための手段(ショートカットキー)を提供します。 スタートアップキー(デフォルトはCtrl+Period、…

FirefoxのWebExtensionsにおけるショートカットキー(commands)の重複について

FirefoxのWebExtensionsで、ショートカットキーはmanifest.jsonのcommandsで定義します。 commands - Mozilla | MDN "commands": { "toggle-feature": { "suggested_key": { "default": "Ctrl+Shift+Y", "linux": "Ctrl+Shift+U" }, "description": "Send a …

PostgreSQLのSKIP LOCKEDを使ってテーブルをキューとして使用する

SKIP LOCKED SKIP LOCKED は PostgreSQL 9.5 から入った新機能です。 What’s new in PostgreSQL 9.5 - PostgreSQL wiki PostgreSQL: Documentation: 9.6: SELECT これを使うと、FOR UPDATEの際に別トランザクションによって行ロックが取得されているレコード…

Redmine: 長いテキストをRedmine 3.4 のワイド表示とは異なる形で、広めに表示する(View customize plugin)

Redmine 3.4 では、長いテキストに対して「ワイド表示」というオプションが追加されていて、長いテキストを見やすく表示することが可能になりました。 Redmine 3.4 新機能紹介 | Redmine.JP Blog 上記機能だと、表示位置が説明欄の下に来てしまうので、今回…

Jackson 2.8.7 で、Lombokの@AllArgsConstructorと@NoArgsConstructorを指定していて、一部プロパティを@JsonIgnoreとしているとJsonMappingExceptionが起きる

下記のようなコードを書くと、Jackson 2.8.7 だとエラーとなります。 public class JacksonExample { public static void main(String[] args) throws IOException { ObjectMapper mapper = new ObjectMapper(); User userBefore = new User(1, "Taro", "pas…

Redmine: チケット編集時の送信ボタンにショートカットキーを割り当てる(View customize plugin)

えの on Twitter: "@g_maeda 他の開発者の方の用途もありますので一概には言えませんが、注記の編集から送信までの間の要素が増えたため、2枚目の画像のような感じになると嬉しいです。 Shift+Alt+Eのようなショートカットが各ボタンやドロップダウンにある…

Redmine: 子チケットの一覧にボタンを追加して、REST API経由で親子関係を外す(View customize plugin)

松谷 秀久 on Twitter: "@onozaty いつも難しいトピックで申し訳ありませんが、view_customizeでボタンを追加し、そのボタンがクリックされるとrest apiにより他のチケットを参照したり更新したりすることは可能でしょうか?" ということで、サンプルとして…

社内勉強会で「Lombokの紹介」というタイトルで発表しました

社内勉強会でLombokについて発表してきました。 Lombokの紹介 from onozaty www.slideshare.net Lombok便利ですよね!もぅLombok無しには戻れません。

Redmine 3.4.0、3.4.1 がリリースされました

Redmine 3.4.0、3.4.1 がリリースされました。(3.4.0が7月2日、バグフィックスで3.4.1が7月9日) Redmine 3.4.0 リリース | Redmine.JP Blog Redmine 3.4.1 リリース | Redmine.JP Blog View Customizeだけは動作確認済みですが、他のプラグインも後ほど確認…

Redmine: チケット一覧でカスタムフィールドの値に応じて行のフォントを太字に変える(View customize plugin)

カスタムフィールドの値に応じて行を装飾する方法について問い合わせをいただいたので、「カスタムフィールド1の値が'A'の場合には、行のフォントを太字に変える」をView customizeで行ってみます。 onozaty/redmine-view-customize - GitHub チケットの優先…

MyBatis にて size というパラメータ名を使うとintとしてマッピングされてしまう

追記@2017-07-02 下記Issueで既に対応していただいています。次のバージョン(3.4.5)に入る予定です。 When the parameter name is "size", it is always mapped with integer · Issue #1030 · mybatis/mybatis-3 · GitHub MyBatisのSQLへのパラメータ埋め込…

Redmineでニュースの参照可否を制御する(patch適用)

Redmine 3.3時点では、ニュースの参照に関する権限が無く、一部のユーザにニュースを見せないということが出来ません。 @onozaty Feature #7068 が採用されればRedmine 3.4.0でロールごとにニュースの参照が制限できるようになります。 https://t.co/fXkrc4U…

Spring Boot で WebSocket (STOMPではなく、TextWebSocketHandler)を試してみる

こないだSTOMP over WebSocketを試してみましたが、今度はSTOMPを使わずに、TextWebSocketHandlerを使ったWebSocketを試してみます。題材も同じくチャットです。 sandbox-spring-boot/spring-boot-websocket at master · onozaty/sandbox-spring-boot · GitH…

Spring Boot で STOMP Over WebSocket を試してみる

Spring BootでSTOMP Over WebSocketを使って、試しにチャットっぽいものを作ってみました。 sandbox-spring-boot/spring-boot-websocket-stomp at master · onozaty/sandbox-spring-boot · GitHub 同じルームに接続しているクライアントに、同じメッセージを…

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…

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

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

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 内容が薄くなってしまったので、もっと使い込んだら、もう少し長い時間でやりたいなぁと思っ…