[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
JavaScript の promise の resolve と reject の挙動について勘違いしていた話 ( MDN の解説 )。
var promise1 = new Promise(function(resolve, reject) {
resolve('value1', 'value2');
});
promise1.then(function(valueA, valueB) {
console.log(valueA, valueB);
});
この出力が value1 value2 になることを期待していたら value1 undefined だった。引数は1つしか取れないらしい。reject の方も同様だった。
語彙大富豪が楽しい。古い友人と久しぶりに会い「語彙大富豪やろうぜ」という話になった。だが、1ゲーム毎に紙を切ってカードを作るのが面倒だったので簡単にやれるツールを作った。
https://shunshun94.github.io/shared/sample/vocageoisie.html からご利用いただける。スマートフォンからアクセスだ。入力欄が5つあるのであなたの単語を入力しておく。自分の番が来たら「出す」ボタンを押せばカードがひょこっと表示される。通ったなら OK を、チェックでダメだったら NG を押せばいい感じに動く。
次のゲームをやるときは画面下部のリセットボタンを押せば入力から再開できる。
だが。作った後ひつじが「あっ、古い付箋がたくさんあったんだった」
今言うことじゃねぇだろ?!
(雛´-`).。oO(#SW2 / #SW25 の GM 向け支援ツールを更新しました。
— しゅんしゅんひよこ (@Shunshun94) February 16, 2019
BGM 再生機能から試聴が可能になりました。「あれ、これなんだっけ」とかそういうときにご利用いただければ)https://t.co/LfwtxvW88O
なんでこの機能いままでつけてなかったんだろう。以下のようにするだけでさっと付けられた。
<audio controls src="https://www.dropbox.com/s/ozdbu91awrwzmoz/rest01.mp3?dl=1"> <p>ブラウザが対応していません</p> </audio>
※ BGM は魔王魂から頂いています
曲の切り替えは audio 要素の src を再設定するだけで可能。楽ちん。
なお、audio 要素内には source 要素を含め、複数の形式に対応するのが望ましいとされているが、今回はユーザがあらかじめ用意したデータの試聴であるため、不要と考えて入れていない。
そういえば、前にひよんとふから BGM 再生を検知したら自動で再生するようにしたい、と考えて色々試した末「スマートフォンからは無理だね」となって泣く泣く諦めたのを思い出した。懐かしいなぁ、ひよんとふ。
https://shunshun94.github.io/shared/sample/SW2-Sheet.html に動作サンプルをおいてあるのだが、キャラクター保管所と同じように ゆとシート2 for SW2.5 向けのクライアントを公開している。これはそどわに判定てんぷれ~つ2から利用されており、同ツールは下記のようにキャラクター保管所のみならず、ゆとシート2 for SW2.5 のデータでも利用ができる。
(雛´-`).。oO(#TRPG #SW2 #SW25 向け GM/PL 支援ツールを更新しました。
— しゅんしゅんひよこ (@Shunshun94) August 27, 2018
・ゆとシート for SW2.5 に対応しました
・PL向けツールからの超越判定に対応しました
GM向け: https://t.co/LfwtxvW88O
PL向け: https://t.co/iuV8oEPQuG )
ゆとシート2 for SW2.5 もキャラクター保管所も双方とも SW2.5 のキャラクターシート (を含む色々なもの) を管理/共有できるツールである。しかし、得意分野がそれぞれ違ったりする
ゆとシート2 for SW2.5 はビジュアル面に強い。デフォルトの表示が大変見やすい。また、ソースコードが配布されており、ユーザが自分のサーバに設置することができる。内容をカスタマイズして設置することも可能である。大体のレンタルサーバならば特に迷わずに設置できるが、自分のパソコン上において動かすことも可能である (動かした例)。見た目がいい感じなのとカスタマイズして自分のサーバにおける、が強みとなる。
キャラクター保管所は入力サジェストや単純なデータのみならず効果などを含めたメモ書きをサポートしているのが強みだ。また、PDF 出力も可能である。
こっそり、相互にエクスポートできる機能が欲しくなってくる。
会社で少し話題になったので nginx で接続元制限をかける手順をごりごり確認する。
Module ngx_http_access_module に詳しく書いてあるので、こちらを読もう。試しに以下のように設定してみる。実行する前に ifconfig (Windows なら ipconfig) コマンドを実行し、自分の持っている IP アドレスを確認しておく。これを試した時点では 192.168.1.17 だった。なので、 nginx.conf に次のように記述する。
server {
# 中略
location /google {
proxy_pass https://google.com;
allow 192.168.1.17/32;
deny all;
}
}
以上の設定をしたうえで nginx を再起動 (私の手元は ubuntu なので service nginx restart )。http://localhost/google に手元からつなぐと127.0.0.1 からのアクセスと見られて403 が返ってくる。
http://192.168.1.17/google に手元から繋ぐと問題なく google に転送される。ただし、手元のスマートフォンから同じところにアクセスを試みると192.168.1.17からのアクセスではないので 403 が返ってくる。なお、上の記述だと /google のみに設定しているので他には localhost からでも問題なくつなげる。
nginx デフォルトの 403 画面は可愛くないのでかわいいのに変更する。
server {
# 中略
error_page 403 /forbidden.html;
location = /forbidden.html {
root /tmp;
internal;
}
location /google {
proxy_pass https://google.com;
allow 192.168.1.17/32;
deny all;
}
}
さらに /tmp に forbidden.html を配置し、かわいい内容を書いておく。この上でhttp://localhost/googleにアクセスを試みると /tmp/forbidden.html の内容が表示されるはずである。
internal を入れたことによってどんな影響があるのかは http://localhost/forbidden.html にアクセスしてみると分かる。/tmp/forbidden.html の内容ではなく 404 が返ってくる。詳しい話は Module ngx_http_core_module に記載されている。error_page についてはあまり説明はいらない気がするが Module ngx_http_core_module に同様に記載がある。
nginx には return なる機能があると Module ngx_http_rewrite_module にはある。これによると Stops processing and returns the specified
(処理を停止し、特定の HTTP ステータスコードをクライアントに返す。HTTP ステータスコードのルールに存在しない 444 を返そうとした場合、レスポンスヘッダの返答もなく接続を断ち切る)。最初に設定した接続元制限で接続を拒絶した場合に 403 すら返さず接続を切断してみる。code to a client. The non-standard code 444 closes a connection without sending a response header.
server {
# 中略
error_page 403 =444 /forbidden.html;
location = /forbidden.html {
return 444;
}
location /google {
proxy_pass https://google.com;
allow 192.168.1.17/32;
deny all;
}
}
もちろん、418 とか 451 とかを返すこともできる。返したいかはともかくとして。