[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
classList#toggle を使うと簡単に実装できる。この手の jQuery にあった便利関数ないしそれに近いものが生の JS でも使えるのはありがたいことである。
ダブルクロスの判定成功率を計算するツールを書いた。アンチマテリアルライフルを入手するにはどれくらいの固定値やダイスが要るんだっけ、とかを考える際にどうぞ。
(雛´-`).。oO(#SW25 向けにゆとシート2のデータをテキストとして書き出すツールを作った。データをローカルにとっておきたい際などに)https://t.co/XxjFpbMUj6
— しゅんしゅんひよこ (@Shunshun94) June 28, 2020
タイトルまんま。自鯖のゆとシート2にはゆとシート2 から Udonarium にコマを作るツールと併せてゆとシートから直接叩けるようにしている。以下のような感じ。
他にもいくつかダウンロード機能を付けたらプルリクを出したい。
少し苦労したので備忘。実際に作ってみたときのソースコード
const getPicture = (src) => {
return new Promise((resolve, reject) => {
let xhr = new XMLHttpRequest();
xhr.open('GET', src, true);
xhr.responseType = "blob";
xhr.onload = (e) => {
// 画像が取得が終わったらここに来る
const fileName = src.slice(src.lastIndexOf("/") + 1);
// jsSHA を使ってハッシュ値を計算する
// jsSHA がないようならば警告を出して reject しちゃう
if(! Boolean(jsSHA)) {
const errorMessage = 'To calculate SHA256 value of the picture, jsSHA is required: https://github.com/Caligatio/jsSHA';
console.warn(errorMessage );
reject({ event:e, data: e.currentTarget.response, fileName: fileName, hash: '', error: errorMessage });
return;
}
// onload イベントの currentTarget.response に画像データが入っている
// これを arrayBuffer 関数で Array Buffer に変換
e.currentTarget.response.arrayBuffer().then((arraybuffer) => {
const sha = new jsSHA("SHA-256", 'ARRAYBUFFER');
sha.update(arraybuffer);
const hash = sha.getHash("HEX");
resolve({ event:e, data: e.currentTarget.response, fileName: fileName, hash: hash });
return;
});
};
xhr.onerror = (e) => resolve(reject({ event:e, data: null, fileName: '', hash: '', error: 'error in getting picture process' }););
xhr.onabort = (e) => resolve(reject({ event:e, data: null, fileName: '', hash: '', error: 'getting picture process is aborted' }););
xhr.ontimeout = (e) => resolve(reject({ event:e, data: null, fileName: '', hash: '', error: 'getting picture process is timeout' }););
xhr.send();
});
};
// 実際には同一ドメインじゃないと無理なので注意
const pictureUrl = 'http://blog.cnobi.jp/v1/blog/user/dae47eb5ba97f522fac369dd34ed4c62/1453740726';
getPicture(pictureUrl).then((result) => {console.log(result.hash)});
L5 を blob じゃなくて array buffer にすればすぐに計算できるのでは?と思ったのだがなぜか値が少しだけ違っていてうまくハッシュ値を計算できなかった。この辺の事情もちゃんと調べようと思ったのだがよくわからず。
(雛´-`).。oO(#SW25 向けにゆとシート2からユドナリウムの駒を作るツールを作ってみた。ゆとシート2で作ったシートの URL を入れると XML ファイルを吐き出してくれるので XML ファイルをユドナリウムに Drag/Drop すれば動く。魔物データにも対応)https://t.co/SZ22ATtg87
— しゅんしゅんひよこ (@Shunshun94) June 7, 2020
タイトルまんま。実のところそんなに難しくはなかった。
JS だけで動かしているのでゆとシート2にそのまま組み込んでもらうのもありかもしれない?