[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
Jenkins の schedule-build-plugin の正確な実行時間を後で確認したかったけど無理だった、という話。まぁ、一度キャンセルして再設定すれば解決するんだけどさ。
正直申し上げて Jenkins の schedule-build-plugin ( リポジトリ / Jenkins Wiki の紹介ページ ) は色々な場面でゴリゴリ使っていてありがたい存在である。
だが、私の属しているコミュニティでビルド時間の設定でトチる事象がそこそこな頻度で発生していた。そしてある時事件が起こった。ある人がひよこを尋ねてきて言うのである。「ひよちゃん、スケジュール実行の正確な予約時間ってわからないかな?」
当初、私は「どうせ正確な時間がサーバから送られてきていて、それをクライアントサイドで計算し実行までの残り時間を出しているんだろ? 通信を見たら一瞬だろ」と思いながら調査に入った。だが……無情にも帰ってきた値は以下の通りであった。
<table page-has-up="false" page-has-down="false" page-entry-newest="1" page-entry-oldest="1" class="pane hasPageData"><tr page-entry-id="1" id="1" class="build-row build-pending transitive single-line"><td class="build-row-cell"><div class="pane build-name"><div class="build-icon"><img src="/jenkins/static/18f476c2/images/16x16/grey.png" style="width: 16px; height: 16px; " class="icon-grey icon-sm" /></div><div title="Expected build number" class="display-name">#4</div></div><div class="pane build-details indent-multiline"> (pending—待機中です。あと5 時間 21 分です。) </div><div class="pane build-controls"><div class="build-stop"><a onclick="new Ajax.Request("/jenkins/queue/cancelItem?id=1"); return false;" href="/jenkins/queue/cancelItem?id=1" class="stop-button-link"><img src="/jenkins/static/18f476c2/images/16x16/stop.png" style="width: 16px; height: 16px; " class="icon-stop icon-sm" /></a></div></div><div class="left-bar"></div></td></tr></table>
躍起になった私は「Jenkins の DB 覗けばなんか出てくるだろ」と思って DB を調べてみた。だが、何も得られなかった。しょんぼりである。幸いにしてプラグインはオープンソースなので、 PR を送ったりして表示する機能を付けてほしいって嘆願するのもありかもしれない。
タイトルまんまだが。discord-bcdicebot を使っているとたまに BCDice-API サーバがダウンしていたりすることがある。するとエラーメッセージを吐きまくるので若干困る。そこで BCDice-API サーバを無停止で変更できるようにした。
Discord-bcdicebot のアプリ起動時に Admin Password: SGO7C0XYtBJouE75
等と言った文字列がログに表示されるようにした。この場合、SGO7C0XYtBJouE75がパスワードとなる。このパスワードは Discord-bcdicebot を起動するたびに変化する。このパスワードを記録しておき、bcdice admin [パスワード] [BCDice-APIサーバのURL]
と打ち込むと bot が利用する BCDice-API サーバを変更できる。
本機能は bot 管理者しか知りえないパスワードをわざわざ用意して設定するようにしている。ダイスをごまかすような BCDice-API の亜種が作られたとしてそれを勝手に使われたり、R18 卓を同じ bot でやっているのにダイスサーバを R18 不可のところにされたりしたら困ると考えたからである。
BCDice-API 0.7.0をリリースしました。今まで対応していなかった計算コマンドに対応し、 C(2*3) のように書けるようになりました。 #TRPG #BCDice #BCDiceAPI https://t.co/2zKmfoSXdE
— 酒田 シンジ (@ysakasin) July 17, 2019
待望の機能であった。独自実装しなきゃいけないかな、とすら思っていたがついに使えるようになったのである。無論 discord-bcdicebot からも使える。
よそで問題になっていたので。
私が作った discord-bcdicebot は稼働している間、Bot を経由して各サーバに存在するチャンネルを監視・すべての発言を取得する。その上で bcdice-api に取得した発言をすべて送信している。よって、bcdice-api が置いてあるサーバに全チャンネルの発言が送信されていることになる。
bcdice-api が置いてあるサーバが R18 な発言の授受が禁止だった場合。discord-bcdicebot が見ている複数個のサーバの複数個のチャンネルのうち1つでも R18 なやりとりがされていたらサーバ管理者はどう考えるか。bcdice-api サーバとしては特定のチャンネルやサーバの発言のみを受信拒否することは難しいので discord-bcdicebot が配置されているサーバからの送信を受信拒否することになる。すると discord-bcdicebot が見ている全サーバがダイスを振れなくなったりする。
飲み会の場で話題に挙がったのでメモ的に。
ここまで、TRPG のオンラインセッション向けツールを色々と作ってきた。ただし、私はオフラインセッションから入った身である。
オンラインセッションとオフラインセッションの違いは色々あるが「GM が出目をごまかしにくい」というのはオンラインセッションの特徴だと思う。オフラインセッションの GM はマスタースクリーンの裏でダイスを振り、出目が大変に都合が悪い場合はこっそりごまかしたりできるのだ(その是非はここでは考えないこととする)。オンラインセッションはダイスの結果がログとして出るためこれが難しい。
では。出目をごまかせなくても「出目が 1,2,3 しか出ないサイコロを使える」ならどうだろうか? CoC みたいな 1d100 パーセントロールなら「出目が 50 以上しか出ないサイコロを使える」でもいい。GM はこれを必要に応じて切り替えて使用するのである。これで「やっべぇ、強すぎる敵を出しちゃった……!」という時も安心である。
ただ、これって存在が公になった途端信用度がゼロになるので作っても公開できないんだよな……