[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
TRPGオンセ界隈交流会(2019/09) https://t.co/Cu0kTMOVVm
— HillTop@プロット4 (@HillTop_TRPG) June 30, 2019
これに出席してきました。
開発やサーバ管理などに関するいくつかのノウハウの共有や、如何にしてモチベーションを維持するか等の話をのんのんと。Discord のチャットを IRC に、IRC の発言内容を Discord に転送することでバックアップなどの意味を持たせるという話はかなり興味深かった。GitHub - reactiflux/discord-irc
その他各々が何故今携わっているタスクを始めたのか経緯共有など。それぞれ全然違う経緯で始めているのも興味深い所。
この手のは今後もちょこちょこ参加していきたいなぁ。
キャラクターの位置関係をなんか厳密に管理するツールが欲しい、と思い書いてみたのがこんな感じのツールである。
機能として以下のようなものをつけている。
また、キャラクターの追加・削除や名前・色の変更も可能。位置の移動はキャラクターをドラッグ/ドロップで実施。
Jenkins のプラグイン "Simple Theme Plugin" を使うと Jenkins に独自の JavaScript や CSS を実行・適用することができる。管理者権限をもってログインしている場合に警告を出す JavaScript を書いてみた。このプラグインを使うことで導入できる。ただ、jQuery Plugin の導入が前提となっている。
const alertAdminLogin = (html) => {
jQuery('#page-body').css('background-color', 'papayawhip');
jQuery('#header > .logo').css({
'padding': '8px',
'font-size': '160%',
'color': 'lavender'
});
jQuery("#header > .logo").text("You logined as Administrator");
};
jQuery.get({
url:`${location.protocol}//${location.hostname}${location.port ? ':' + location.port : ''}/configure`
}).done(alertAdminLogin);
やっていることはひどく単純である。Jenkins 管理用ページである ./configure にアクセスできたならば警告を出し、アクセス失敗したのあらば何もない、というだけである。
Jenkins の schedule-build-plugin の正確な実行時間を後で確認したかったけど無理だったのでちょっと直してみた。こんな感じ。ログに時間を出すようにしたのと、 Slack の WebHock にスケジュール情報を送信できるようにしてみた。
Slack の API を叩くとき「発言だけできればいい」という状況であれば WebHock の利用を検討するべきだろう(Incoming Webhooks | Slack)。Java から WebHock を叩きたい事情があったので叩くコードを書いてみた。
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
public class SlackWebhockNotificationClient {
private final URL url;
private final String userName;
public SlackWebhockNotificationClient(URL url, String userName) {
this.url = url;
this.userName = userName;
}
public void sendNotify(String message) throws IOException {
HttpURLConnection con = null;
try {
con = (HttpURLConnection) url.openConnection();
con.setDoOutput(true);
con.setRequestMethod("POST");
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(con.getOutputStream(), StandardCharsets.UTF_8));
writer.write(String.format("payload={\"username\": \"%s\", \"text\": \"%s\", \"icon_emoji\": \":rooster:\"}", userName, message));
writer.flush();
if(con.getResponseCode() != HttpURLConnection.HTTP_OK) {
throw new IOException(String.format("Failed to access %s :" + con.getResponseCode(), this.url));
}
} catch (IOException ioe) {
throw ioe;
}
}
}
SlackWebhockNotificationClient client = new SlackWebhockNotificationClient(
// https://slack.com/services/new/incoming-webhook から取得する URL
"https://hooks.slack.com/services/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",
// 発言する名前
"My Notification Bot"
);
client.sendNotify("発言だよー発言だよー");