Slackのサイドバーのテーマ集

スクリーンショット 2017-11-10 9.54.31.png

http://slackthemes.net/

複数のSlackチームに参加している場合や気分を変えたい時にSlackのテーマを変えてみましょう。
Slackはカラーコードを指定することで自分でテーマをカスタマイズできますが、そのカラーコード集が配られています。設定はメニューからPreferenceを選択してサイドバーのページに行きます。

会社のイメージカラーに合わせたり、自分の好きなデザインに変更しましょう。

JavaのProcessBuilderの実行結果が欠損する問題の対策

下記のようなKotlinのサンプルコードを使えば、コマンドの実行結果をある程度の結果を受け取れる事ができるが、厳密にすべての出力を得ることができなかった。

これはプロセスの処理が完了していない状態でreader.readLine()の部分でnullが返ることで、処理が完了していないのにストリームの読み込みを終了してしまうことが原因だった。

class Example1(processBuilder: ProcessBuilder) {
var input = StringBuilder()
init {
val process = processBuilder.start()
this.loadInputStream(process)
process.waitFor()
}
private fun loadInputStream(it: Process) {
val reader = BufferedReader(InputStreamReader(it.inputStream))
Thread {
reader.use { reader ->
while (reader.readLine() != null) {
input.append(reader.readLine() + "\n")
}
}
}.start()
}
}

下記のように処理の終了を待ってから明示的にループを停止することで取りこぼしがなくなりました。

class Example2(processBuilder: ProcessBuilder) {
var running = true
var input = StringBuilder()
init {
val process = processBuilder.start()
this.loadInputStream(process)
process.waitFor()
this.running = false
}
private fun loadInputStream(it: Process) {
val reader = BufferedReader(InputStreamReader(it.inputStream))
Thread {
reader.use { reader ->
while (running) {
input.append(reader.readLine() + "\n")
}
}
}.start()
}
}

この現象は一瞬で処理結果が返ってくるものから、長い時間かけて緩やかに結果を返すジョブに対しても同じように発生しました。

Vimの正規表現で後方置換を行う

Vimの正規表現で後方置換を行うには\1とエスケープ一個で行う。パターンは\(\)のようにエスケープする。

val id: Int
val typeId: Int
val medidId: Int

上記のような宣言を代入に変えるサンプル

:%s/val \([a-zA-Z]*\):.*/\1 = \1/

すると下記のようになる

id = id
typeId = typeId
medidId = medidId