2020-01-01から1年間の記事一覧

Flywayでマイグレーション完了時に決められたSQLを実行する

JavaのDBマイグレーションライブラリとしてFlywayを愛用していますが、マイグレーションが全て完了した後に、特定のSQLを流せないかなと調べてみたところ、Callbackという仕組みがあることがわかりました。 Callbacks - Callbacks - Flyway by Redgate • Dat…

Redmine issue assign notice plugin を作りました

この記事はRedmine Advent Calendar 2020 17日目の記事です。 Redmine Advent Calendar 2020 - Adventar チケットの担当者が変わったときに、SlackやRocket.Chatなどに通知するプラグインを作りました。 チケットの担当者が変わった時に、下記のようなメッセ…

Redmine: View customize plugin の v2.8.0 をリリースしました

View customize plugin の v2.8.0 をリリースしました。 onozaty/redmine-view-customize - GitHub Insertion position として Bottom of all pages が選べるようになりました。 HTML bodyの末尾に埋め込まれるような形になります。これを利用すると、Redmin…

WebDriverManagerを利用してSeleniumでのWebDriverの更新を楽にする

ブラウザでのテストだけではなく、ちょっとしたブラウザ操作の自動化にもSeleniumを利用するのですが、久しぶりに起動すると、各ブラウザのDriverが古くでエラーになる、、みたいなことが多々発生していました。 今更ながら、他の方々はどうやってこの問題を…

SeleniumでChromeをヘッドレスモードで動作させた場合に org.openqa.selenium.ElementNotInteractableException: element not interactable が発生する

SeleniumでChromeDriverで実行した際に、ヘッドレスモードだとエラー、ヘッドレスモードにしないと成功するといったテストがありました。 エラー内容は下記のような感じで、要素が操作できないといったものでした。 org.openqa.selenium.ElementNotInteracta…

XMLをCSVに変換するツール xml2csvを作りました。

XMLをCSVに変換するツールxml2csvを作りました。 JUnitのXMLをCSVに変換する処理書いていて、これは汎用的にできるなーってことで、Goの勉強も兼ねて書きました。 マッピング情報を元に、XMLからCSVに変換します。 $ xml2csv -i input.xml -m mapping.json -…

特定ユーザに対して一部管理者メニューを非表示にする(Redmine View Customize Plugin)

特定ユーザに対して一部管理者メニューを非表示にしたいといった要望です。(2つあって、2つ目の方) 一律非表示ならば、CSSで出来るのですが、特定ユーザに対してのみ適用したいのでJavaScriptで書く必要があります。 以下のサンプルでは、ユーザID:10のユー…

特定ユーザを削除、ロックできないようにする(Redmine View Customize Plugin)

初期ユーザ(user_id=1)を、削除やロックできないようにしたいという要望です。(2つあって1つ目の方) ボタンを非表示にするだけなので、CSSで対応します。 設定内容 Insertion position: Head of all pages a[data-method="put"][href="/users/1?user%5Bstatu…

Redmine Japan 2020 で「Redmineの画面をあなた好みにカスタマイズ – View customize pluginの紹介 –」というタイトルで発表しました

Redmine Japan 2020というイベントでView customize pluginについて発表しました。 資料はこちら。 Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020 from onozaty まつもとさんの基調講演、前田さんの招待講演…

JUnitの結果をCSVファイルに変換するツール(junit-xml2csv)を作りました

JUnitの結果を一覧で見たいなーってことで、CSVファイルに変換するツールを作りました。遅いテストを探すのに、EXCELでソートしたかったからです。 JUnitの結果XMLファイルが配置されているディレクトリ(Gradleだとbuild/test-results/testとか)と、出力ファ…

View customize の redmine.org でのURLが変わりました

redmine.org には、プラグインの情報を登録できる仕組みがあります。 登録したものは、下記で公開されます。 Plugins - Redmine プラグインには、Identiferというプラグインを一意に表す識別子があり、上記サイトでもIdentiferを入力し、それがURLになるよう…

チェックボックスがチェックされたらテキストボックスを無効にする(Redmine View Customize Plugin)

上記の問い合わせに対応したサンプルコードを書いてみました。 チェックボックスをチェックしたら、テキストボックスを無効化します。 設定内容 Insertion position: Bottom of issue form $(function() { const checkbox = $('#issue_custom_field_values_1…

FlywayのJavaコードによるマイグレーション

JavaのデータベースマイグレーションのライブラリであるFlywayですが、SQLファイルだけでなく、Javaのコードによるマイグレーションにも対応しています。 https://flywaydb.org/documentation/migrations#java-based-migrations やり方は簡単で、SQLファイル…

Redmine: View customize plugin の v2.7.0 をリリースしました

View customize plugin の v2.7.0 をリリースしました。 onozaty/redmine-view-customize - GitHub 2つの機能追加、改修を行っています。 プロジェクト識別子で対象ページを指定可能に プロジェクト識別子(正規表現)で対象ページを絞ることができるようにな…

リビングでのオンラインミーティングには Jabra Engage 50 がおススメ

リビングでのオンラインミーティングの悩み 在宅勤務で毎日オンラインミーティングがあるのですが、 PCデスクはリビングにおいてあるのでリビングで作業している (元々家にいるとき暇があればPC触っているので、家族がいるところに置きたくてリビングにして…

attendance-recorder という出退勤を記録、参照するアプリケーションを作りました

在宅勤務中の出退勤がもう少し見える化できないかなぁと思って、attendance-recorder という出退勤を記録、参照できるアプリケーションを作りました。 github.com Spring Bootで作ってます。 APIを叩いて出勤、退勤を記録して、それをWeb上で見れるような形…

第18回 redmine.tokyo勉強会で発表してきました

第18回 redmine.tokyo にて、『「伝わるチケット」の書き方』というタイトルでLTさせていただきました。 第18回勉強会 - redmine.tokyo 資料はこちら。 「伝わるチケット」の書き方 from onozaty www.slideshare.net 一番重要なのは「チームの他のメンバのこ…

redmine-issue-loader のバージョン2.3.0をリリースしました

CSVを読み込んでRedmineのチケットを新規作成、更新するツール、redmine-issue-loaderのバージョン2.3.0をリリースしました。 変更点は下記の2つです。 HTTPタイムアウトの設定を変更可能に デフォルト10秒だったのですが、親子関係が激しい状態だとタイムア…

自分で作ったライブラリをJCenterとMaven Centralで公開する

下記自作ライブラリをJCenterとMaven Centralに公開した際の手順を残しておきます。 (後から記憶をたどって書いているので、抜けがあったらすいません...) 公開の流れとしては、下記のようになります。 Bintrayにアップロード JCenterに公開 JCenterからMave…

ShortcutKey2URLの新バージョン(Chrome版1.4.0、Firefox版4.3.1)をリリースしました

ShortcutKey2URLの新バージョンをリリースしました。 2つの機能追加を行っています。どちらも利用者の方から要望があったものになります。 候補のインタラクティブな絞り込み ショートカットキーの候補をインタラクティブに絞り込んで表示できるようにしまし…

期日近くになったら警告を表示する(Redmine View Customize Plugin)

上記の問い合わせに対応したサンプルコードを書いてみました。(これが求めているものなのかはちょっと怪しいかも...) 期日まで残り3日になったらチケット画面に警告を表示します。 設定内容 Path pattern: .* Insertion position: Bottom of issue detail $(…

PostgreSQL COPY Helper を作りました

PostgreSQLのCOPYコマンドをJavaで簡単に利用するためのライブラリとして、PostgreSQL COPY Helper を作りました。 登録したいデータの構造を表すクラスを定義しておいて、、 @Table("items") public class Item { @Column("id") private final int id; @Col…

Redmine: View customize plugin の v2.6.0 をリリースしました

View customize plugin の v2.6.0 をリリースしました。 onozaty/redmine-view-customize - GitHub 中国語のマージリクエストをいただいたので、そちらをマージしてのリリースとなります。

java.sql.Timeとjava.time.LocalTime間の変換でミリ秒が破棄される

java.sql.Timeには、下記のようなLocalTimeとの間で変換を行うメソッドがあります。 public LocalTime toLocalTime() Time java.sql.Time.valueOf(LocalTime time) ただ、これらメソッドは秒までしか対象にしておらず、ミリ秒が破棄されています。 /** * Obt…

親のカスタムフィールドが選択されたら、子のカスタムフィールドを有効化する(Redmine View Customize Plugin)

github.com 上記の問い合わせに対応したサンプルコードを書いてみました。 親のカスタムフィールド(キーバリュー形式のリスト)が選択されたら、子のカスタムフィールドを有効化するコードです。 Redmineのデフォルトのスタイルだと、input:disabledのbackgro…

RDBMS上でデータの整合性を保つこと

先日Twitter上で外部キーが話題にあがっていました。自分も大昔は外部キーを重要視していませんでしたが、1x年以上たった今では、様々な制約等を使って、RDBMS上でデータの整合性を保つべきと考えています。 なぜ制約を使うのか データの不整合を、プログラ…

カスタムフィールドを3カラムで表示する(Redmine View Customize Plugin)

上記の問い合わせの中で、カスタムフィールドを3カラム表示したいといったのがあったので、サンプルコードを書いてみました。 設定内容 Path pattern: .* Insertion position: Bottom of issue form $(function() { const field1 = $('#issue_custom_field_v…