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

View customize plugin の v2.4.0 をリリースしました。

下記の2つに対応しています。

マルチバイトのWikiページにてエラーが発生する問題対処

IE11+Wikiでマルチバイトのページを表示した場合に、エラーが発生する場合がありました。
ローカルで上記組み合わせで再現できていなかったのですが、報告していただいた方にいろいろ試していただいたところ、URLを取り出した際にUTF-8として不正バイトシーケンスが含まれることがあり、そのせいでエラーとなっていることがわかりました。

不正なバイトを置換するようにして回避しています。

全てのカスタマイズに対して無効/有効を切り替え可能に

全てのカスタマイズを一括で無効/有効に出来るようにしました。
全てを無効にしたいといった場合、今まではいちいち各スクリプトの編集画面までいって切り替える必要がありましたが、これが入ったことによって、ワンクリックで切り替えられるようになりました。

f:id:onozaty:20190907222815g:plain

SUMMER SONIC 2019 (2019年8月18日@幕張メッセ)

SUMMER SONIC 2019の3日目に参戦しました。複数ステージあるフェスは初めてです。

f:id:onozaty:20190818132552j:plain:w300

開場時間の9時くらいに着くように、、って思っていたのですが、なんだかんだで着いたのは9時30分頃になってしまい、物販で元々狙っていたのは全部売り切れでした。後から知ったのですが、物販は8時から開始だったので、9時30分じゃ遅すぎたようです...
それでもグッズが欲しくてグッズ売り場を回ることに。場所によって商品の在庫状況が違っていて、マリンスタジアムが一番品薄で、次にメッセの外、一番残っていたのはメッセの中でした。メッセの中の方は、10時過ぎていても、まだTシャツが何種類か残っていました。ということでTシャツとフードつきのタオル買って準備完了です。

最初はメッセ内を回ってみようということで、メッセ内をぶらぶらしながら腹ごしらえ。お昼前だったからか、フードエリアはまだすいていて、並ぶことなく買えました。
サカノウエユニークの「とりそば」をいただいたのですが、とても美味しかったです。

各ステージがどんな感じかな、、って回って、SHAED、Kizuna AIをちょこっと見て、最初にしっかり観たのは女王蜂のステージからでした。
事前知識無い状態で観たのですが、一気に引き込まれました。アヴちゃんのカリスマ性すごい。途中で声が切り替わるのも、最初は2人で歌っているのか、それともエフェクト?って思っていたのですが、売春のときにしっかり歌っているの見て、こんなキレイに2種類の声だせるのか、、ってびっくりしました。

こういう新しい出会いがあるから、フェスは楽しい。

ここからはマリンスタジアムに移動します。マリンスタジアムとメッセの間は2回ほど往復しましたが、バスが出ているのでらくちんでした。そこまで遠くないとはいえ、炎天下の中あるくとなると、一日体力持たないかなと、、

MARINE STAGEで最初に観るのはPerfumeです。後半のことを考えて、体力温存でスタジアムの席で観ました。

スタジアムの前の方で。昼間はまだ席も全然空いていて、ゆったりと観れました。(サマソニはアーティストの写真撮影NGなので、開演前の写真で)
ただ、アリーナの方が盛り上がっていたので、アリーナで観れば良かったな、、と後からちょっと後悔。。

Pefumeのメジャーな曲はだいたい知っているつもりで望んだのですが、知らない曲が多かったです。直近のツアーのセトリ確認して、ちゃんと勉強してくれば良かった。。
生でパフォーマンス見れたのは感動しました。MCもいい。

続いてはアリーナに移動して、BLACKPINKです。Kill This Love聞いてから好きになって、今回とても楽しみにしていました。
プラチナエリアだったのですが、ステージの端まで来てくれたのもあって、すごく近くで観れました。カワイイし、カッコいい。さらに好きになりました。

ちなみに楽曲は韓国語の方で予習していたのですが、日本語バージョンのほうを歌っていたので、ちょっと違和感がありました。これだけグローバルに売れている状況だと、日本にいても日本語バージョンより韓国語バージョンの方が耳にする機会が多いと思うのですが、どうなんですかね。

続いてBEACH STAGEに歩いて移動します。山崎まさよしを聴くために。
ちょうど「僕はここにいる」を歌い始めるところで、続いて「One more time, One more chance」と、バラード2曲を生で聴けて幸せでした。ほんとうまい。

ここからMARINE STAGEに戻ります。Alan Walkerのライブ終盤で、アリーナはもちろん、スタジアムもかなり埋まっていました。
Alan Walkerこれでまだ20ちょいか、、すごいな、、

初のサマソニだし、いろいろな位置で観て見よう、、ってことで、続くZEDDはスタジアムの一番上で。 スタジアムの良いところは、食事しながら観れるところですよね。
ZEDDは1時間ぶっ続けでヒット曲流しまくりです。全部ヒット曲なのスゴイ。スタジアムの上のほうも満席で、スタジアム全体が盛り上がっていました。

最後のThe Chainsmokersは再度アリーナで。プラチナエリアはアリーナ前方の左右にあったのですが、上から見ていて明らかに右の方が空いていたので右側で。斜めですが、こんな感じで近いところで観れました。
プラチナじゃないセンターの方が、より見やすくて、ぎゅうぎゅうな感じで、ライブの一体感味わえそうですが、頻繁に移動したことを考えると、プラチナでよかったなと思いました。途中から入って前の方いけそうも無かったので。

The ChainsmokersをDJと呼ぶのにはちょっと違和感あって、他のアーティスト迎え入れてヒット曲たくさん出しているけど、ドリューも歌うし、ライブではドラマーも一緒に3人でやっているので、バンドっぽい感じもするという、、今回のライブでもドラムソロがあったりしました。ほんと一員のような感じです。(5SOSとのコラボのWho Do You LoveのPVにも普通に一員として出ていたりする)
ドリューはステージ上を激しく動き回って、歌を歌って、ギターも弾いて、DJ卓でドラム叩いたり、、とても情熱的でした。

フィナーレには花火もあがり、とても感動的なステージでした。

サマソニまた行きたい!(けど来年は東京オリンピックで無いので、再来年かな、、)

IFTTTとNature Remoの連携が出来ない(解決)

Nature Remoを買ったので、意気揚々とIFTTTと連携してあんなことしてみよう、、って思って下記の通りに連携してみました。

が、うまく連携できていないようで、Control home appliances で何も出てきません。No options found となります。

f:id:onozaty:20190708233325p:plain

何度か連携のしなおしをしてみましたが、解決せず、、といった状況です。

なんか他の人と違うことしているかな、、と思って考えてみましたが、やったことといえば、Nature Remoのメールアドレスを早々に変えたところでしょうか。

あと気になったのは、Nature Remo側でIFTTTに対して許可するときに何が許可されるのか出てこなかったところです。

f:id:onozaty:20190708233259p:plain

解決したら、追記したいと思います。


追記@2019-07-11

Nature Remoのサポートに問い合わせたところ、Control home appliancesで出てくるのはエアコン、テレビ、照明以外で学習機能で登録したもので、エアコン、テレビ、照明はTurn on air conditionerやControl TVなどといったところから選択可能とのことでした。

f:id:onozaty:20190711234221p:plain

下記を見て、Control home appliancesにテレビがあったので、てっきりすべての機器がControl home appliancesで出てくるものと勘違いしてしまっていました。

ということで、無事IFTTTで操作できました。ありがとうございました。

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

View customize plugin の v2.3.0 をリリースしました。

ViewCustomize.contextへプロジェクトのカスタムフィールドを追加しています。

ViewCustomize.contextへの追加基準ですが、いまのところ下記のように考えています。(何でも入れてしまうとメンテナンスが面倒になっていくのと、きりがなくなりそうなので)

  • 他の方法で取得できない、または取得出るがかなり煩雑
  • 利用するシチュエーションが多数想定できる

今回のプロジェクトのカスタムフィールドは、、

  • REST APIを使えば取得できなくないがREST APIを使うこと自体が煩雑
  • 他の人からのPull requestがあったのと、ユーザのカスタムフィールドのように、プロジェクト毎に有効/無効を切り替えたり、表示したいものを変えたりといったような使い方ができそう

ということで追加しました。

ShortcutKey2URL for Chrome のバージョン1.1.0をリリースしました

ShortcutKey2URL for Chrome のバージョン1.1.0をリリースしました。

ShortcutKey2URL は、ショートカットキーを使用してURLを開いたり、移動したり、JavaScriptを実行できる拡張機能です。

スタートアップキーであらかじめ設定しておいた動作の一覧を表示し、次のキーでその動作を実行します。

f:id:onozaty:20171018003430p:plain

バージョン1.1.0での変更内容

コンテキストメニューからページを追加可能になりました。

f:id:onozaty:20190624000929p:plain

ポップアップからクリックでも実行できるようにしました。(マウスで操作したい人もいるかもしれないということで...)

f:id:onozaty:20190624001536p:plain

複数ウインドウが存在する場合、アクティブではないウインドウに対して処理してしまうことがあるバグを修正しました。

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

View customize plugin の v2.2.0 をリリースしました。

Easy Redmineへの対応となります。

CSVファイルをPostgreSQLにロードするツール(csv2postgresql)を作りました

CSVファイルをPostgreSQLにロードするツールを作りました。

事前にテーブルを作っておく必要は無いので、とりあえずCSVファイルをPostgreSQLにロードしていじりたいって時に便利かと思います。

テーブルはCSVのヘッダに記載のフィールド名を元に作成されます。なお、既にテーブルがある場合は作りません。

内部的にはCOPYコマンドを使っているので、とても早いと思います。(もともとバッチINSERTを使った実装をしていましたが、COPYコマンド使うように変えたら50倍早くなりました)

利用方法

実行にはJava(JDK8以上)が必要となります。

下記から最新の実行ファイル(csv2postgresql-x.x.x-all.jar)を入手します。

入手したjarファイルを指定してアプリケーションを実行します。

java -jar csv2postgresql-1.0.0-all.jar config.properties table1 data.csv

引数は下記の通りです。

  1. 設定ファイルパス
  2. テーブル名
  3. CSVファイルパス

実行すると、下記のように処理したレコード件数、かかった時間が出力されます。

Loading...
Loading is completed. (Number of records: 100,000 / Elapsed millsecods: 322)

設定ファイル

設定ファイルには、PostgreSQLの接続先情報と、CSVファイルのエンコーディングを記載します。

  • database.url JDBC接続URL
  • database.user DBユーザ名
  • database.password DBパスワード
  • csv.encoding CSVファイルのエンコーディング

以下は例です。

database.url=jdbc:postgresql://192.168.33.10:5432/testdb
database.user=user1
database.password=pass1
csv.encoding=UTF-8

テーブル名

ロード先のテーブル名を指定します。

テーブルが存在しなかった場合、新規にテーブルを作成します。この際、各カラムはtext型として作成されます。

CSVファイル

CSVファイルのヘッダは必須です。ヘッダに記載のフィールド名を使って、ロード先のテーブルのカラムとマッピングします。 なお、英数字以外の文字が指定されていた場合、アンダースコア(_)に置換されます。

たとえばUser Nameというフィールドがあった場合、データベースのカラムとしてはuser_nameにマッピングされます。

サンプル

PostgreSQLを起動するためのVagrant環境と、設定ファイルとCSVファイルのサンプルが用意してあります。 これらを使うことによって、簡単に本ツールを試せます。

vagrantフォルダにてvagrant upを実行すると、PostgreSQL11をインストールした仮想環境(192.168.33.10)が立ち上がります。

sampleフォルダ配下の設定ファイルとCSVファイルを利用してロードを行います。

java -jar csv2postgresql-1.0.0-all.jar sample/config.properties test_table sample/sample-100000.csv

ビルド方法

ソースコードからビルドして利用する場合、Java(JDK8以上)がインストールされた環境で、下記コマンドでアプリケーションをビルドします。

gradlew shadowJar

build/libs/csv2postgresql-x.x.x-all.jarという実行ファイルが出来上がります。(x.x.xはバージョン番号)