<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.signote.cc/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sigsign</id>
	<title>SigWiki - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.signote.cc/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sigsign"/>
	<link rel="alternate" type="text/html" href="https://wiki.signote.cc/wiki/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/Sigsign"/>
	<updated>2026-05-18T03:35:50Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.35.6</generator>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2021-02&amp;diff=119</id>
		<title>利用者:Sigsign/diary/2021-02</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2021-02&amp;diff=119"/>
		<updated>2021-02-09T19:47:09Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2021-02-09 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
&lt;br /&gt;
== 2021-02-07 ==&lt;br /&gt;
&lt;br /&gt;
* 1月初旬の大雪で体調とメンタルを壊していたのだが、ようやく活動できるくらいに回復した&lt;br /&gt;
* 1月下旬にこのウィキは荒らされていたらしい&lt;br /&gt;
** データベースを drop して、2021-01-01 時点の dump をそのままインポートし直した&lt;br /&gt;
*** AutoMySQLBackup は本当に便利&lt;br /&gt;
*** おかげで復旧作業は1分で終わった&lt;br /&gt;
** 画像はデータベースと別に管理されているので整合性を確保する必要がある&lt;br /&gt;
*** こっちはちゃんとバックアップスクリプトを書かないとな&lt;br /&gt;
*** Btrfs だったら Snapper でいいんだけど&lt;br /&gt;
* 復旧作業は簡単だった（コマンドを2回叩くだけ）、再発防止策を検討するほうに時間がかかった&lt;br /&gt;
** drop しないで AbuseFilter の肥やしにするべきかちょっと迷った&lt;br /&gt;
** でもロールバック（というのか？）作業のほうが興味を惹かれたので、つい…&lt;br /&gt;
* ApprovedRevs が移動周りをケアしてくれないことを事前に知れたのは収穫&lt;br /&gt;
** AbuseFilter かなにかでカバーする必要がありそう&lt;br /&gt;
&lt;br /&gt;
== 2021-02-09 ==&lt;br /&gt;
&lt;br /&gt;
* 自分のことに精一杯で何もできていない&lt;br /&gt;
** というか、やる気だした途端に雪が降るのやめてほしい&lt;br /&gt;
* AbuseFilter には2種類の action と2種類の private が存在することを知った&lt;br /&gt;
** ユーザー側の action（編集、移動、アップロード）と AbuseFilter によって行われる action（警告、不許可、ブロック）&lt;br /&gt;
** フィルターの private（非公開）と private details（非公開の詳細パラメーターで利用者の IP アドレス等が含まれる、CheckUser 寄りの機能）&lt;br /&gt;
** さらにフィルターに引っかかったログを秘匿 (hide) する機能もある&lt;br /&gt;
** ログにも AbuseFilter の編集記録、一致記録、private details の調査記録がある&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8&amp;diff=118</id>
		<title>メインページ</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8&amp;diff=118"/>
		<updated>2021-02-09T18:20:53Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: お知らせの追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SigWiki は [[利用者:Sigsign|Sigsign]] の個人ウィキです。&lt;br /&gt;
&lt;br /&gt;
主に MediaWiki や技術系のトピックについて記載しています。&lt;br /&gt;
&lt;br /&gt;
== お知らせ ==&lt;br /&gt;
&lt;br /&gt;
=== 2021-02-07 ===&lt;br /&gt;
データベースをロールバックしたため、1月1日から2月7日までの編集が消滅しました。&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=MediaWiki:Gadget-fixAbuseFilter.css&amp;diff=117</id>
		<title>MediaWiki:Gadget-fixAbuseFilter.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=MediaWiki:Gadget-fixAbuseFilter.css&amp;diff=117"/>
		<updated>2021-02-09T17:52:55Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: ラベルを折り返しさせない&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * fixAbuseFilter.css&lt;br /&gt;
 *&lt;br /&gt;
 * AbuseFilter の管理画面を微調整する。&lt;br /&gt;
 *&lt;br /&gt;
 * License: CC0&lt;br /&gt;
 */&lt;br /&gt;
#mw-abusefilter-editing-form td.mw-label {&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=MediaWiki:Gadgets-definition&amp;diff=116</id>
		<title>MediaWiki:Gadgets-definition</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=MediaWiki:Gadgets-definition&amp;diff=116"/>
		<updated>2021-02-09T17:41:50Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* interface-gadgets */ fixAbuseFilter.css を追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== interface-gadgets ==&lt;br /&gt;
* fixCodeEditorFonts[ResourceLoader|default|targets=desktop,mobile]|fixCodeEditorFonts.css&lt;br /&gt;
* fixMeiryo[ResourceLoader|default]|fixMeiryo.css&lt;br /&gt;
* fixAbuseFilter[ResourceLoader|default]|fixAbuseFilter.css&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-11&amp;diff=114</id>
		<title>利用者:Sigsign/diary/2020-11</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-11&amp;diff=114"/>
		<updated>2021-02-08T16:15:54Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: 修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NEWSECTIONLINK__&lt;br /&gt;
[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
&lt;br /&gt;
==2020-11-02==&lt;br /&gt;
&lt;br /&gt;
*なんとなく日記を書き始めてみる&lt;br /&gt;
*個人ウィキを作っては壊しているような気がする（ここはたぶん四代目）&lt;br /&gt;
**MediaWiki は隠し事ができないので、恥ずかしいミスをすると心機一転したくなってしまう&lt;br /&gt;
**今回は SQLite から MariaDB の変更に伴う新設&lt;br /&gt;
***前回や前々回に比べればまともな理由&lt;br /&gt;
*以前は XREA の g 系サーバーで SQLite を使って動かしていたが複数の問題があった&lt;br /&gt;
**SQLite だと動かない拡張機能がそこそこある&lt;br /&gt;
**XMLReader が PHP のバージョンによって有効化されていたり無効化されていたりする&lt;br /&gt;
***XMLReader がないと記事のインポートができない&lt;br /&gt;
***XMLReader が動く唯一のバージョンが PHP 7.0 だが、MediaWiki 1.34 からサポート対象外になった&lt;br /&gt;
****MediaWiki 1.31 (LTS) を使い続けるのは厳しい&lt;br /&gt;
**→ VPS 上に PHP 7.4 + MariaDB の環境を作って MediaWiki 1.35 に乗り換えることにした&lt;br /&gt;
*CloudFlare を利用しているのでレスポンスはそれほど悪くない&lt;br /&gt;
*本当は拡張機能を入れたり設定を弄ったりしたいのだが、突然身内に不幸があって今日明日は無理そう&lt;br /&gt;
&lt;br /&gt;
==2020-11-03==&lt;br /&gt;
&lt;br /&gt;
* 昨日は Mobilefrontend と MinervaNeue を入れてから寝た&lt;br /&gt;
** 今のうちに dog-fooding しておこうという意図&lt;br /&gt;
* VisualEditor on mobile は何かと課題にぶつかる&lt;br /&gt;
** 新しい節を追加するのが難しい（ちょっと誤字脱字を直すくらいしか使い道がない）&lt;br /&gt;
** 箇条書きも書きづらい&lt;br /&gt;
*** &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;  （アスタリスク + スペース）で箇条書きに変換できることはできる&lt;br /&gt;
*** でもインデントを付ける方法がわからない…&lt;br /&gt;
** VisualEditor と SourceEditor で要約欄のデフォルトが異なっている&lt;br /&gt;
*** SourceEditor は &amp;lt;code&amp;gt;/* 節名 */&amp;lt;/code&amp;gt; が自動的に入力されるが、VisualEditor はそうならないので不便&lt;br /&gt;
* Fenix (Firefox for Android) でキャレットの位置が飛ぶ現象を観測している&lt;br /&gt;
** VisualEditor でも SourceEditor でも発生しているので Fenix or ATOK のバグかなあ…？&lt;br /&gt;
&lt;br /&gt;
== 2020-11-04 ==&lt;br /&gt;
&lt;br /&gt;
* モバイル版の SourceEditor は単純な &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;textarea&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ではないようだ&lt;br /&gt;
** &amp;lt;code&amp;gt;MobileFrontend/src/mobile.editor.overlay&amp;lt;/code&amp;gt; が何かしているらしい&lt;br /&gt;
** VE ならともかく MobileFrontend のバグを追いかけたくない気持ち&lt;br /&gt;
&lt;br /&gt;
== 2020-11-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日は&amp;lt;code&amp;gt;stale-while-revalidate&amp;lt;/code&amp;gt;(SWR)について調べていた&lt;br /&gt;
** そもそも長期間の&amp;lt;code&amp;gt;max-age&amp;lt;/code&amp;gt;にはあまり意味がないらしい&lt;br /&gt;
*** ローカルキャッシュは2日程度で消えてしまうらしい[https://blog.jxck.io/entries/2016-04-16/stale-while-revalidate.html#%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3]&lt;br /&gt;
*** キャッシュの容量上限は決まっていて、古いキャッシュから消されていくため&lt;br /&gt;
** CloudflareはSWRに対応していない&lt;br /&gt;
*** まあCDN/Reverse Proxyの挙動は直感的ではないので、これ以上複雑にすると挙動が理解できなくなってしまいそう&lt;br /&gt;
** 効果があるのはおそらくCSS/JSだろう&lt;br /&gt;
*** ということで&amp;lt;code&amp;gt;load.php&amp;lt;/code&amp;gt;限定でSWRを追加してみた&lt;br /&gt;
*** 画像はCloudflareに任せてしまうことにする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-08 ==&lt;br /&gt;
&lt;br /&gt;
* Cloudflareのファイアウォールルールについて調べた&lt;br /&gt;
** 「脅威レベル」の閾値がよくわからない&lt;br /&gt;
*** [https://support.cloudflare.com/hc/en-us/articles/200170056-Understanding-the-Cloudflare-Security-Level ドキュメント]によると、高が1以上、標準が15以上、低が25以上、基本的にOFFが50以上でチャレンジ画面になるらしい&lt;br /&gt;
** &amp;lt;code&amp;gt;ip.geoip.continent&amp;lt;/code&amp;gt;は[https://community.cloudflare.com/t/getting-error-ip-geoip-continent/214864 Businessプラン以上が必要だがドキュメントには記載がない]とのこと&lt;br /&gt;
** スパム対策としてちょっと厳しめに設定してみた&lt;br /&gt;
* 昨日設定したSWRが想定通りに機能していて感動している&lt;br /&gt;
* 拡張機能としてEcho、LoginNotify、Thanksなどを入れてみた&lt;br /&gt;
* Opcacheのfile cachingを有効にしてみた&lt;br /&gt;
** 心なしかキビキビ動くようになった気がする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-09 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;php-wikidiff2&amp;lt;/code&amp;gt;を導入した&lt;br /&gt;
* 拡張機能としてCheckUser、TemplateStyles、Abuse Filter、AntiSpoof、TorBlock、RevisionSlider、SandboxLinkを入れた&lt;br /&gt;
** StopForumSpamも入れるべきかな&lt;br /&gt;
* CheckUserに&amp;lt;code&amp;gt;Special:Investigate&amp;lt;/code&amp;gt;が追加されていた（まだβ版の模様）&lt;br /&gt;
* このウィキはできるだけ標準に寄せて運用する予定だったが、そもそも利用者が自分しかいないのだから、もっと冒険してもいいような気もしてきた&lt;br /&gt;
&lt;br /&gt;
== 2020-11-10 ==&lt;br /&gt;
&lt;br /&gt;
* そろそろ旧ウィキからデータをインポートしたいところ&lt;br /&gt;
* 新しいテーマを作りたいが Timeless が mustache に対応していないので面倒&lt;br /&gt;
** mustache に対応していて、Vector/MinervaNeue ほど複雑じゃなくて、改変しやすいテーマが欲しい&lt;br /&gt;
** Vector がごちゃごちゃしていて見づらいのは確かにそうで、もっとシンプルなテーマにしたくなる&lt;br /&gt;
* WebAuthn を入れたり、翻訳にちょっと手を出したりしている&lt;br /&gt;
** OATHAuth の翻訳をどうするか悩む&lt;br /&gt;
* FlaggedRevs は WMF で動いている実績があるし、ApprovedRevs はコンパクトでよさそう&lt;br /&gt;
** Core が査読に相当する機能を持つべきだと思うんだよな&lt;br /&gt;
** ApprovedRevs には PendingChanges に相当する保護機能はないが、マジックワードを使えば同じような運用はできそう&lt;br /&gt;
* StopForumSpam は out of the box な拡張機能ではなく、何やら設定が必要らしい&lt;br /&gt;
** Mediawiki.org の解説ではスパムを報告する機能があるはずだが、コードを読む限りは見当たらない&lt;br /&gt;
** 現在は IP アドレス一覧をロードして、ビットマスクを生成・利用する機能に限定されているようだ&lt;br /&gt;
** 大半のウィキは SFS の API を叩いてスパムを弾いてくれることを期待するんじゃないか&lt;br /&gt;
*** まあIPアドレスを外部のサービスに露出させるのはプライバシー上問題かもしれないが…&lt;br /&gt;
** DNSブラックリストのほうが経済的かもしれない&lt;br /&gt;
&lt;br /&gt;
== 2020-11-11 ==&lt;br /&gt;
&lt;br /&gt;
* ジョブキューを systemd-timer で実行するようにした&lt;br /&gt;
** 久々にシェルスクリプトを書いたら何も覚えてなくて困った&lt;br /&gt;
** systemd は journalctl がとにかく便利、-u オプションが最高&lt;br /&gt;
** ついでに &amp;lt;code&amp;gt;loadExitNodes.php&amp;lt;/code&amp;gt; も実行している&lt;br /&gt;
&lt;br /&gt;
== 2020-11-12 ==&lt;br /&gt;
* 昨日は旧ウィキから記事をインポートした&lt;br /&gt;
** 管理するウィキがまた一つ減った&lt;br /&gt;
** 放置しているウィキがまだあるはずなので、それらを早めに集約したい&lt;br /&gt;
* [[特別:Import|Special:Import]] はインターウィキ接頭辞を入力しないとインポートしてくれない&lt;br /&gt;
** &amp;lt;code&amp;gt;importDump.php&amp;lt;/code&amp;gt; を使うのは面倒なんだけどなあ&lt;br /&gt;
* もう一つ管理するウィキを減らした&lt;br /&gt;
** カスタマイズした Skin:Vector と Extension:YouTube があったことにファイルを消してから気付いた…&lt;br /&gt;
** Skin:Vector はどうせマージできなかっただろうから諦めよう&lt;br /&gt;
&lt;br /&gt;
== 2020-11-13 ==&lt;br /&gt;
&lt;br /&gt;
* Cloudflare は &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; を見ずに URL だけでキャッシュの可否を決定するらしい&lt;br /&gt;
** [[User:Sigsign/vector.css]] が DYNAMIC ではなくキャッシュされてしまった（CSS 扱いになっている）&lt;br /&gt;
*** 通常のページは拡張子が付かないため assets と誤認されることがなく見逃していた&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgCdnMaxAge = 0;&amp;lt;/code&amp;gt; を設定すると &amp;lt;code&amp;gt;Cache-Control: private&amp;lt;/code&amp;gt; が付与されて BYPASS となる&lt;br /&gt;
*** Squid / Varnish は &amp;lt;code&amp;gt;Vary&amp;lt;/code&amp;gt; ヘッダーを考慮してくれるのでキャッシュしてくれたほうがありがたい&lt;br /&gt;
*** Cloudflare は考慮してくれないのでキャッシュされると困る&lt;br /&gt;
&lt;br /&gt;
== 2020-11-14 ==&lt;br /&gt;
&lt;br /&gt;
* 今日は寝不足のまま親戚行事に出て、昼過ぎから爆睡していた&lt;br /&gt;
* &amp;lt;code&amp;gt;action=raw&amp;lt;/code&amp;gt; ってキャッシュの側面で見ると最悪では…？&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgForcedRawSMaxage&amp;lt;/code&amp;gt; も標準では 300 秒（5分）しかないし&lt;br /&gt;
*** &amp;lt;code&amp;gt;$wgCdnMaxAge&amp;lt;/code&amp;gt;が 18000 秒（5時間）でこれが 300 秒なのはちょっと納得できない&lt;br /&gt;
*** &amp;lt;code&amp;gt;oldid&amp;lt;/code&amp;gt; 指定したら ResourceLoader みたいに 30 日間キャッシュしてほしい&lt;br /&gt;
* マニュアルを見たら &amp;lt;code&amp;gt;maxage&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;smaxage&amp;lt;/code&amp;gt; パラメーターが使えるらしい&lt;br /&gt;
** ここでは動作したが、ウィキペディア / Miraheze では効かなかった&lt;br /&gt;
** MWF は Varnish で &amp;lt;code&amp;gt;cache-control: private, s-maxage=0, max-age=0, must-revalidate&amp;lt;/code&amp;gt; に上書きしている模様&lt;br /&gt;
** [https://phabricator.wikimedia.org/T71460 T71460] によると &amp;quot;security and privacy reasons&amp;quot; とのこと&lt;br /&gt;
*** &amp;lt;code&amp;gt;max-age=0&amp;lt;/code&amp;gt; は no-store を意味しないし、毎回ダウンロードするわけじゃないよ！ との主張&lt;br /&gt;
*** いや、304 が返ってくるまでに数百 ms かかるのが遅い（し計算資源の無駄）という話なんですよ&lt;br /&gt;
*** [https://phabricator.wikimedia.org/T112937 T112937] のおかげで UserJS はクリーンになっているんじゃないのか&lt;br /&gt;
&lt;br /&gt;
== 2020-11-15 ==&lt;br /&gt;
&lt;br /&gt;
* UserJS を書いていて mw.html はクールに書けて便利だなーと思っていたら出力が String で悲しい&lt;br /&gt;
** Node を返してくれれば &amp;lt;code&amp;gt;appendChild()&amp;lt;/code&amp;gt; が使えるのに…&lt;br /&gt;
** &amp;lt;code&amp;gt;innerHTML()&amp;lt;/code&amp;gt; は死すべし、慈悲はない&lt;br /&gt;
* マジックワード / パーサー関数は &amp;lt;code&amp;gt;api.parse()&amp;lt;/code&amp;gt; で展開できる&lt;br /&gt;
* 最近ようやく本に書かれているプラクティスを実践できるようになってきた気がする&lt;br /&gt;
* 人のコードが汚いのか、自分の読解力が落ちているのか…&lt;br /&gt;
** コード読解力の高い人を改めて尊敬する&lt;br /&gt;
&lt;br /&gt;
== 2020-11-17 ==&lt;br /&gt;
&lt;br /&gt;
* Extension:DynamicPageList3 が MediaWiki 1.35 に対応できてなくて、いろんなところで阿鼻叫喚になっている&lt;br /&gt;
** コード読んでるけど、MW にはプリペアドステートメント的な仕組みはないんですか…？&lt;br /&gt;
*** 文字列結合でクエリを組み立てないでほしい&lt;br /&gt;
** コード読んで理解したが、クエリを組み立てているのではなく大元の条件式を動的に生成しているんだな&lt;br /&gt;
*** DPL は SQL を隠ぺいしているだけで、実質的には DML になっている&lt;br /&gt;
** 概ね直りそうな予感はした&lt;br /&gt;
*** INNER JOIN と WHERE ってやってること一緒なのか&lt;br /&gt;
*** 思わぬ学びを得たが、やっぱり SQL はよくわからない&lt;br /&gt;
* DPL3 は classes/Query.php と classes/Article.php を直せばいい（はず）&lt;br /&gt;
** FROM に actor を足して、WHERE actor.actor_id = XX.X_user_id で結合する&lt;br /&gt;
* PukiWiki から移ってきたときは「RDB を使ってるから早くなる」と思っていたのに…&lt;br /&gt;
** PukiWiki にも tracker という DPL3 みたいな無茶をするプラグインがある&lt;br /&gt;
** 今思うと、tracker はキャッシュすらしてないのによく動いてたな&lt;br /&gt;
&lt;br /&gt;
== 2020-11-18 ==&lt;br /&gt;
&lt;br /&gt;
* もう今月も後半になってきた&lt;br /&gt;
** そろそろサーバーの整理をしなきゃ…&lt;br /&gt;
*** メールサーバーの移行作業だけはやりたくなかったのに&lt;br /&gt;
*** 構築したのは何年も前なので記憶がない&lt;br /&gt;
* &amp;lt;code&amp;gt;$wgMiserMode&amp;lt;/code&amp;gt; に対応する準備をした&lt;br /&gt;
** 小さい Wiki に効果があるのかは疑問&lt;br /&gt;
* ついでに Sitemap や Robot policy 周りを整備した&lt;br /&gt;
** テンプレートやモジュールが検索に引っかかってもあまり嬉しくないし&lt;br /&gt;
** 設定が雑だと MediaWiki 名前空間も引っかかったりする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-19 ==&lt;br /&gt;
&lt;br /&gt;
* Extension:Editcount も壊れているらしい？&lt;br /&gt;
** ActorMigration をきちんと使っている行儀のいいコードに見えるような…&lt;br /&gt;
** いや、&amp;lt;code&amp;gt;COUNT(*)&amp;lt;/code&amp;gt; するコードは行儀がいいとは言えない&lt;br /&gt;
* メイリオの斜体が効かないのは知っていたが、MediaWiki が対策していないのは知らなかった&lt;br /&gt;
** Firefox は &amp;lt;code&amp;gt;font-family: Meiryo&amp;lt;/code&amp;gt; だけで斜体になるが、Chrome は &amp;lt;code&amp;gt;@font-face&amp;lt;/code&amp;gt; を使わないと斜体にならない&lt;br /&gt;
&lt;br /&gt;
== 2020-11-20 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;font-family&amp;lt;/code&amp;gt; 周りのあれこれを設定した&lt;br /&gt;
* 最近、あまりサーバーのお世話ができていないので明日明後日は頑張ろう&lt;br /&gt;
* Extension:Editcount は壊れていなかった（別の問題だった）ようだ&lt;br /&gt;
&lt;br /&gt;
== 2020-11-23 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日はサーバーのお世話をしていたのだが、進捗があまりよろしくない&lt;br /&gt;
* 一昨日は忙しかったし、昨日は気が付くと終わっていたし、今日は親戚付き合いがあり…&lt;br /&gt;
&lt;br /&gt;
== 2020-11-25 ==&lt;br /&gt;
&lt;br /&gt;
* UserJS を書くのは楽しいが、時間がかかりすぎて費用対効果があまりよくない&lt;br /&gt;
** もうちょっとサクッと書けるようになりたい&lt;br /&gt;
&lt;br /&gt;
== 2020-11-26 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日は c のデータベースを切り替えて、拡張機能を一通りインストールした&lt;br /&gt;
* スキンの名前を決めるのに一苦労した&lt;br /&gt;
** さすがに Daifuku は直球すぎるし…ということで Volt にした&lt;br /&gt;
* MediaWiki 1.35 と 1.36 ですでに &amp;lt;code&amp;gt;SkinMustache.php&amp;lt;/code&amp;gt; が全然違うんだけど…どういうことなの…&lt;br /&gt;
** これは MediaWiki の悪いところで、スキンと &amp;lt;code&amp;gt;SkinTemplate (SkinMustache)&amp;lt;/code&amp;gt; が密結合していて双方を読まないと全体像がわからない&lt;br /&gt;
** どうやら現在の &amp;lt;code&amp;gt;SkinMustache extends SkinTemplate extends Skin&amp;lt;/code&amp;gt; の構造を &amp;lt;code&amp;gt;SkinMustache extends Skin&amp;lt;/code&amp;gt; に置き換えようと頑張っているらしい&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2021-02&amp;diff=113</id>
		<title>利用者:Sigsign/diary/2021-02</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2021-02&amp;diff=113"/>
		<updated>2021-02-07T20:52:02Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2021-02-07 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
&lt;br /&gt;
== 2021-02-07 ==&lt;br /&gt;
&lt;br /&gt;
* 1月初旬の大雪で体調とメンタルを壊していたのだが、ようやく活動できるくらいに回復した&lt;br /&gt;
* 1月下旬にこのウィキは荒らされていたらしい&lt;br /&gt;
** データベースを drop して、2021-01-01 時点の dump をそのままインポートし直した&lt;br /&gt;
*** AutoMySQLBackup は本当に便利&lt;br /&gt;
*** おかげで復旧作業は1分で終わった&lt;br /&gt;
** 画像はデータベースと別に管理されているので整合性を確保する必要がある&lt;br /&gt;
*** こっちはちゃんとバックアップスクリプトを書かないとな&lt;br /&gt;
*** Btrfs だったら Snapper でいいんだけど&lt;br /&gt;
* 復旧作業は簡単だった（コマンドを2回叩くだけ）、再発防止策を検討するほうに時間がかかった&lt;br /&gt;
** drop しないで AbuseFilter の肥やしにするべきかちょっと迷った&lt;br /&gt;
** でもロールバック（というのか？）作業のほうが興味を惹かれたので、つい…&lt;br /&gt;
* ApprovedRevs が移動周りをケアしてくれないことを事前に知れたのは収穫&lt;br /&gt;
** AbuseFilter かなにかでカバーする必要がありそう&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2021-02&amp;diff=112</id>
		<title>利用者:Sigsign/diary/2021-02</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2021-02&amp;diff=112"/>
		<updated>2021-02-07T19:33:17Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
&lt;br /&gt;
== 2021-02-07 ==&lt;br /&gt;
&lt;br /&gt;
* 1月初旬の大雪で体調とメンタルを壊していたのだが、ようやく活動できるくらいに回復した&lt;br /&gt;
* 1月下旬にこのウィキは荒らされていたらしい&lt;br /&gt;
** データベースを drop して、2021-01-01 時点の dump をそのままインポートし直した&lt;br /&gt;
*** AutoMySQLBackup は本当に便利&lt;br /&gt;
*** おかげで復旧作業は1分で終わった&lt;br /&gt;
** 画像はデータベースと別に管理されているので整合性を確保する必要がある&lt;br /&gt;
*** こっちはちゃんとバックアップスクリプトを書かないとな&lt;br /&gt;
*** Btrfs だったら Snapper でいいんだけど&lt;br /&gt;
* 復旧作業は簡単だった（コマンドを2回叩くだけ）、再発防止策を検討するほうに時間がかかった&lt;br /&gt;
** drop しないで AbuseFilter の肥やしにするべきかちょっと迷った&lt;br /&gt;
** でもロールバック（というのか？）作業のほうが興味を惹かれたので、つい…&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2021-02&amp;diff=111</id>
		<title>利用者:Sigsign/diary/2021-02</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2021-02&amp;diff=111"/>
		<updated>2021-02-07T19:32:19Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2021-02-07 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 2021-02-07 ==&lt;br /&gt;
&lt;br /&gt;
* 1月初旬の大雪で体調とメンタルを壊していたのだが、ようやく活動できるくらいに回復した&lt;br /&gt;
* 1月下旬にこのウィキは荒らされていたらしい&lt;br /&gt;
** データベースを drop して、2021-01-01 時点の dump をそのままインポートし直した&lt;br /&gt;
*** AutoMySQLBackup は本当に便利&lt;br /&gt;
*** おかげで復旧作業は1分で終わった&lt;br /&gt;
** 画像はデータベースと別に管理されているので整合性を確保する必要がある&lt;br /&gt;
*** こっちはちゃんとバックアップスクリプトを書かないとな&lt;br /&gt;
*** Btrfs だったら Snapper でいいんだけど&lt;br /&gt;
* 復旧作業は簡単だった（コマンドを2回叩くだけ）、再発防止策を検討するほうに時間がかかった&lt;br /&gt;
** drop しないで AbuseFilter の肥やしにするべきかちょっと迷った&lt;br /&gt;
** でもロールバック（というのか？）作業のほうが興味を惹かれたので、つい…&lt;br /&gt;
&lt;br /&gt;
[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
__目次非表示__&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2021-01&amp;diff=110</id>
		<title>利用者:Sigsign/diary/2021-01</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2021-01&amp;diff=110"/>
		<updated>2021-01-08T14:53:35Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2021-01-08 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__APPROVEDREVS__&lt;br /&gt;
[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
&lt;br /&gt;
== 2021-01-01 ==&lt;br /&gt;
* あけましておめでとうございます&lt;br /&gt;
* git-mediawiki が githun.com:git/git に含まれていることを知った&lt;br /&gt;
** git-remote-* を追加することで任意のプロトコルを追加できる&lt;br /&gt;
** Perl で 1200 行くらいでこうやって拡張できるのはいいなあ&lt;br /&gt;
* ログイン操作を含むなら Pywikibot に頼ったほうが最短距離になりそう&lt;br /&gt;
** Python2 が EoL してるので &amp;lt;code&amp;gt;u&amp;quot;&amp;quot;&amp;lt;/code&amp;gt; とか使わなくてもよくなったのが最高&lt;br /&gt;
* MediaWiki 1.35.1 が出てたことにようやく気付いた&lt;br /&gt;
** 年始のうちにアップデート作業でもするか&lt;br /&gt;
&lt;br /&gt;
== 2021-01-02 ==&lt;br /&gt;
&lt;br /&gt;
* やることが一段落してしまって原神熱が下がりつつある&lt;br /&gt;
** 幕間のデイリークエストこなさなきゃいけない区間でだいたい飽きる&lt;br /&gt;
** 最近はゲームに限らず集中力が下がってきてヤバい&lt;br /&gt;
&lt;br /&gt;
== 2021-01-07 ==&lt;br /&gt;
&lt;br /&gt;
* ぐてーっとした1週間を過ごしてしまった&lt;br /&gt;
* Bot 権限ってどこにでもあるわけじゃないんだ…知らなかった…&lt;br /&gt;
** 自分の無知のせいで作業が思いっきり遅れてて申し訳ない&lt;br /&gt;
* 法律を持ち出す前に条文をきっちり示せるくらい原文を読んで欲しいし、逐条解説もちゃんと読んで欲しい&lt;br /&gt;
** 社会性フィルターを通したら内容が 1/10 くらいになった&lt;br /&gt;
** 事実を指摘して逆恨みされるのも無益ですからね…&lt;br /&gt;
&lt;br /&gt;
== 2021-01-08 ==&lt;br /&gt;
&lt;br /&gt;
* 今日はずっと雪かきしていたのでもう寝る&lt;br /&gt;
** 集中力ないときにスクリプト実行すると絶対事故るので全部明日&lt;br /&gt;
* あっちの界隈に詳しくないのだけど、どこにでも問題児はいるのだなあと思いました&lt;br /&gt;
** 法廷でデュエルとか法廷がリングになるとかパワーワードが並んでいてダメだった&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2021-01&amp;diff=109</id>
		<title>利用者:Sigsign/diary/2021-01</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2021-01&amp;diff=109"/>
		<updated>2021-01-07T10:52:00Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2021-01-07 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__APPROVEDREVS__&lt;br /&gt;
[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
&lt;br /&gt;
== 2021-01-01 ==&lt;br /&gt;
* あけましておめでとうございます&lt;br /&gt;
* git-mediawiki が githun.com:git/git に含まれていることを知った&lt;br /&gt;
** git-remote-* を追加することで任意のプロトコルを追加できる&lt;br /&gt;
** Perl で 1200 行くらいでこうやって拡張できるのはいいなあ&lt;br /&gt;
* ログイン操作を含むなら Pywikibot に頼ったほうが最短距離になりそう&lt;br /&gt;
** Python2 が EoL してるので &amp;lt;code&amp;gt;u&amp;quot;&amp;quot;&amp;lt;/code&amp;gt; とか使わなくてもよくなったのが最高&lt;br /&gt;
* MediaWiki 1.35.1 が出てたことにようやく気付いた&lt;br /&gt;
** 年始のうちにアップデート作業でもするか&lt;br /&gt;
&lt;br /&gt;
== 2021-01-02 ==&lt;br /&gt;
&lt;br /&gt;
* やることが一段落してしまって原神熱が下がりつつある&lt;br /&gt;
** 幕間のデイリークエストこなさなきゃいけない区間でだいたい飽きる&lt;br /&gt;
** 最近はゲームに限らず集中力が下がってきてヤバい&lt;br /&gt;
&lt;br /&gt;
== 2021-01-07 ==&lt;br /&gt;
&lt;br /&gt;
* ぐてーっとした1週間を過ごしてしまった&lt;br /&gt;
* Bot 権限ってどこにでもあるわけじゃないんだ…知らなかった…&lt;br /&gt;
** 自分の無知のせいで作業が思いっきり遅れてて申し訳ない&lt;br /&gt;
* 法律を持ち出す前に条文をきっちり示せるくらい原文を読んで欲しいし、逐条解説もちゃんと読んで欲しい&lt;br /&gt;
** 社会性フィルターを通したら内容が 1/10 くらいになった&lt;br /&gt;
** 事実を指摘して逆恨みされるのも無益ですからね…&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2021-01&amp;diff=108</id>
		<title>利用者:Sigsign/diary/2021-01</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2021-01&amp;diff=108"/>
		<updated>2021-01-02T20:13:50Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2021-01-02 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__APPROVEDREVS__&lt;br /&gt;
[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
&lt;br /&gt;
== 2021-01-01 ==&lt;br /&gt;
* あけましておめでとうございます&lt;br /&gt;
* git-mediawiki が githun.com:git/git に含まれていることを知った&lt;br /&gt;
** git-remote-* を追加することで任意のプロトコルを追加できる&lt;br /&gt;
** Perl で 1200 行くらいでこうやって拡張できるのはいいなあ&lt;br /&gt;
* ログイン操作を含むなら Pywikibot に頼ったほうが最短距離になりそう&lt;br /&gt;
** Python2 が EoL してるので &amp;lt;code&amp;gt;u&amp;quot;&amp;quot;&amp;lt;/code&amp;gt; とか使わなくてもよくなったのが最高&lt;br /&gt;
* MediaWiki 1.35.1 が出てたことにようやく気付いた&lt;br /&gt;
** 年始のうちにアップデート作業でもするか&lt;br /&gt;
&lt;br /&gt;
== 2021-01-02 ==&lt;br /&gt;
&lt;br /&gt;
* やることが一段落してしまって原神熱が下がりつつある&lt;br /&gt;
** 幕間のデイリークエストこなさなきゃいけない区間でだいたい飽きる&lt;br /&gt;
** 最近はゲームに限らず集中力が下がってきてヤバい&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2021-01&amp;diff=107</id>
		<title>利用者:Sigsign/diary/2021-01</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2021-01&amp;diff=107"/>
		<updated>2021-01-01T18:12:21Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__APPROVEDREVS__&lt;br /&gt;
[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
&lt;br /&gt;
== 2021-01-01 ==&lt;br /&gt;
* あけましておめでとうございます&lt;br /&gt;
* git-mediawiki が githun.com:git/git に含まれていることを知った&lt;br /&gt;
** git-remote-* を追加することで任意のプロトコルを追加できる&lt;br /&gt;
** Perl で 1200 行くらいでこうやって拡張できるのはいいなあ&lt;br /&gt;
* ログイン操作を含むなら Pywikibot に頼ったほうが最短距離になりそう&lt;br /&gt;
** Python2 が EoL してるので &amp;lt;code&amp;gt;u&amp;quot;&amp;quot;&amp;lt;/code&amp;gt; とか使わなくてもよくなったのが最高&lt;br /&gt;
* MediaWiki 1.35.1 が出てたことにようやく気付いた&lt;br /&gt;
** 年始のうちにアップデート作業でもするか&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2021-01&amp;diff=106</id>
		<title>利用者:Sigsign/diary/2021-01</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2021-01&amp;diff=106"/>
		<updated>2021-01-01T16:04:56Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2021-01-01 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__APPROVEDREVS__&lt;br /&gt;
[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
&lt;br /&gt;
== 2021-01-01 ==&lt;br /&gt;
* あけましておめでとうございます&lt;br /&gt;
* git-mediawiki が githun.com:git/git に含まれていることを知った&lt;br /&gt;
** git-remote-* を追加することで任意のプロトコルを追加できる&lt;br /&gt;
** Perl で 1200 行くらいでこうやって拡張できるのはいいなあ&lt;br /&gt;
* ログイン操作を含むなら Pywikibot に頼ったほうが最短距離になりそう&lt;br /&gt;
** Python2 が EoL してるので &amp;lt;code&amp;gt;u&amp;quot;&amp;quot;&amp;lt;/code&amp;gt; とか使わなくてもよくなったのが最高&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2021-01&amp;diff=105</id>
		<title>利用者:Sigsign/diary/2021-01</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2021-01&amp;diff=105"/>
		<updated>2021-01-01T14:45:21Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2021-01-01 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__APPROVEDREVS__&lt;br /&gt;
[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
&lt;br /&gt;
== 2021-01-01 ==&lt;br /&gt;
* あけましておめでとうございます&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=103</id>
		<title>利用者:Sigsign/diary/2020-12</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=103"/>
		<updated>2020-12-28T14:53:46Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2020-12-28 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__APPROVEDREVS__&lt;br /&gt;
&lt;br /&gt;
== 2020-12-03 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日は UserJS に専念していた&lt;br /&gt;
** JavaScript の非同期処理は難しい&lt;br /&gt;
** MediaWiki 1.35 以降なら Promise も使えるし、Vue も使えるんだけどな&lt;br /&gt;
** &amp;lt;code&amp;gt;$.deferred()&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;$.when()&amp;lt;/code&amp;gt; も悪いわけではないけれど…&lt;br /&gt;
* ApprovedRevs を少し試している&lt;br /&gt;
** FlaggedRevs の Pending Changes（査読保護）は優れているが、FlaggedRevs が複雑すぎる&lt;br /&gt;
** マジックワードで発動できる点を活かして、テンプレートと運用をうまく組み合わせれば化けそう&lt;br /&gt;
&lt;br /&gt;
== 2020-12-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日今日は[https://grayraven.jp/ パニグレ]をやっていた&lt;br /&gt;
** バトル開始時にルシアの瞳が紅く光るのが好き&lt;br /&gt;
** 極限回避で高速空間に入れるようになると爽快アクションとして楽しくなっていく&lt;br /&gt;
* マジックワード &amp;lt;code&amp;gt;_APPROVEDREVS_&amp;lt;/code&amp;gt; を試してみたが想像していた動きにならない&lt;br /&gt;
&lt;br /&gt;
== 2020-12-08 ==&lt;br /&gt;
&lt;br /&gt;
* Chakuwiki にアクセスできなくなっているらしい&lt;br /&gt;
** 雰囲気はドメイン失効っぽいのだけど、AutoRenewPeriod ではなく inactive になっている&lt;br /&gt;
&lt;br /&gt;
== 2020-12-10 ==&lt;br /&gt;
&lt;br /&gt;
* セイキンショット、これほど人口に膾炙している（？）にも関わらず項目が存在しない&lt;br /&gt;
** VTuber もこういうのちゃんと記録していかないとダメなんだろうな&lt;br /&gt;
** 10年後には苦々しく感じるのかもしれないけど、記録に残りすらしないのは悲しい&lt;br /&gt;
* 返金覚悟で注文したリングフィットアドベンチャーが2日で発送されてしまった&lt;br /&gt;
** 取り寄せ10日だったのでクリスマス頃に届くかなあと思っていたのに&lt;br /&gt;
&lt;br /&gt;
== 2020-12-12 ==&lt;br /&gt;
&lt;br /&gt;
* Chakuwiki はなんとオーナーが亡くなられたらしい&lt;br /&gt;
** ライセンスが不透明（著作権は運営者に帰属）なので遺族の許諾を得て CC ライセンスに再ライセンスする作業が必要そう&lt;br /&gt;
*** CC ライセンスでないと Miraheze 等に丸投げするのは難しい&lt;br /&gt;
*** 同様の理由から、現状では外部のサイトに引き取ってもらうのも難しい&lt;br /&gt;
** 現在のサーバーはクレジットカードが解約される（AWS の料金支払いが滞って AWS がサーバーを止める）までの命と考えたほうがよさそう&lt;br /&gt;
*** 広告収入が振り込まれる口座と AWS の料金が引き落とされる口座が同じなら…と思っていたけど、普通は口座とクレジットカード解約するよね&lt;br /&gt;
*** 死亡すると口座が凍結されるので、現在進行形で料金を支払えていない可能性あり&lt;br /&gt;
*** となると、今のうちに Special:Export から取得しておかないと電子の藻屑になるかもしれないな&lt;br /&gt;
&lt;br /&gt;
== 2020-12-13 ==&lt;br /&gt;
&lt;br /&gt;
* リングフィットが届いたのでやってみたら足がガクガクになってしまった&lt;br /&gt;
** これを何時間もやってたライバーがいるってマジ？&lt;br /&gt;
** バンザイプッシュが結構キツい、と思ったら最後は足にきた&lt;br /&gt;
** 実況を見てたときとは別の発見があったりして、ゲーム本編もなかなかおもしろい&lt;br /&gt;
* Chakuwiki の dump を取るスクリプトを書いて回してみた&lt;br /&gt;
** Web サーバーが 2 台あって、そのうちアクセスの少なそうなほうを使っている&lt;br /&gt;
** みんな IP アドレスでアクセスするようになってしまったので、アクセスの偏りが半端なさそう&lt;br /&gt;
** wikitext の次は画像も dump しなきゃ&lt;br /&gt;
* 借井戸では「ライセンスは PD」と言っている人がいるけど、Chakuwiki は PD じゃないと思うけどなあ&lt;br /&gt;
** PD は著作権を放棄した状態のこと&lt;br /&gt;
*** CC0 や Unlicense は権利放棄の条項があり、PD かつ PD にできない場合は All permissive license として機能するようになっている&lt;br /&gt;
*** WTFPL や 0BSD は「PD 相当」ないし「PD-like」であって PD ではない&lt;br /&gt;
** Chakuwiki はオーナーに著作権を帰属させた上で権利の不行使（attribution なしで利用可）を表明しているだけ&lt;br /&gt;
** オーナーのそれは法的効力のない自筆証書遺言みたいなもので、PD ではないし、PD 相当と言えるかも怪しい&lt;br /&gt;
* オーナー遺族の意向がちょっと微妙で、雲行きが怪しくなっている&lt;br /&gt;
** アーカイブを作成する分には問題ないだろう&lt;br /&gt;
** アメリカにサーバーがあればフェアユースということにもできるだろうし&lt;br /&gt;
&lt;br /&gt;
== 2020-12-14 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;dumpBackup.php&amp;lt;/code&amp;gt; に画像も含めて Export する機能があることを知った&lt;br /&gt;
** つまり、&amp;lt;code&amp;gt;dumpBackup.php&amp;lt;/code&amp;gt; が出力した「風の」xml を生成して &amp;lt;code&amp;gt;importDump.php&amp;lt;/code&amp;gt; に読ませればうまくいくわけか&lt;br /&gt;
** &amp;lt;code&amp;gt;importImages.php&amp;lt;/code&amp;gt; はアップロード者の情報が欠落してしまうのでどうしたものかと思っていた&lt;br /&gt;
** 最終的に Miraheze にインポートするなら、単一のクソデカ xml を生成して &amp;lt;code&amp;gt;importDump.php&amp;lt;/code&amp;gt; で一発の形に持っていくべきなんだろうな&lt;br /&gt;
&lt;br /&gt;
== 2020-12-16 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日は画像のアーカイブを終わらせた&lt;br /&gt;
** wget（の -i オプション）は自動でダウンロードしてくれて便利…だと最初は思っていたんだけどな&lt;br /&gt;
*** ファイル名の自動変換が曲者で逆に面倒くさくなってしまった&lt;br /&gt;
*** ascii じゃなくて nocontrol を選んでおけば…あるいは…&lt;br /&gt;
* 放置していた VPS をセットアップしている&lt;br /&gt;
** Debian パッケージの ipset は Systemd の Unit ファイルが同梱されてないので自作&lt;br /&gt;
** sshguard を ipset ベースで設定&lt;br /&gt;
** iptables/ip6tables の設定の詰めはまた明日&lt;br /&gt;
* 1月か2月みたいなペースで雪が降るので毎日ヘトヘト&lt;br /&gt;
&lt;br /&gt;
== 2020-12-26 ==&lt;br /&gt;
&lt;br /&gt;
* 大雪のせいでここ10日ほどの記憶がない&lt;br /&gt;
** 毎日のように筋肉痛になり、寒暖差で体調を崩し…&lt;br /&gt;
* Chakuwiki のエクスポートをするスクリプトにミスがあり、それもミスがあまりにも初歩的なミスでテンションがガクッと下がっている&lt;br /&gt;
** 現実逃避に原神を始めたらハマってしまった&lt;br /&gt;
** 原神で寝不足気味だったのが体調不良の原因では？？？&lt;br /&gt;
* 別人と間違われて笑ってしまったのだけど、それは自分に信用がないことの裏返しだよな&lt;br /&gt;
** あまり記事を書かないので、ウィキプロジェクトに対して貢献できていない&lt;br /&gt;
*** ウィキペディアを筆頭に「優れた記事を書ける人は信用できる」という雰囲気がある&lt;br /&gt;
*** 記事も書かない（書けない）のに口出しするような人が大抵ろくでもないのも事実&lt;br /&gt;
** 技術的にあれができる、こうしたほうがいい、ということはよく言うのだけど…&lt;br /&gt;
** もっと積極的に執筆活動をして、信用を勝ち取っていくしかないんだろう&lt;br /&gt;
* 自分のサーバーに nmap かけてセキュリティチェックするのは常識になって欲しい&lt;br /&gt;
** ポートスキャナ対策も（目眩まし程度とはいえ）ちゃんとやりましょう&lt;br /&gt;
*** 対策しすぎない（複雑にしすぎない）のも大切&lt;br /&gt;
*** 以前 iptables で頑張りすぎて、久々にルールを読んだら解読するのに数日かかったという笑い話（実話）がある&lt;br /&gt;
**** お前、自分で書いた iptables ルールも読めないのかよ！（3年前の自分からの煽り）（幻聴）&lt;br /&gt;
**** もう若くないんだなと悟ったし、ドキュメントも精力的に書かなきゃと思いました&lt;br /&gt;
**** この日記を始めた理由のひとつ&lt;br /&gt;
** 最終的に面倒くさくなって、クラウドベンダーが提供するファイアウォールに頼るようになる&lt;br /&gt;
*** このウィキも Cloudflare 頼りなので人のことは言えない&lt;br /&gt;
* Cloudflare は便利なんだけど、MediaWiki と組み合わせるベストプラクティス的なものがなくて、日本語圏ではあまり流行ってないよね&lt;br /&gt;
** そういえば、それも書こうとして書けていないんだよなあ&lt;br /&gt;
&lt;br /&gt;
== 2020-12-27 ==&lt;br /&gt;
&lt;br /&gt;
* ReCAPTCHA より QuestyCaptcha のほうが優れているんですけどね&lt;br /&gt;
** ただ、設問によっては非日本語話者を排除してしまう欠点があり、ReCAPTCHA / hCaptcha のほうがバリアフリーで優しい&lt;br /&gt;
** そもそも Captcha で防げるのは bot だけなので、荒らし対策として Captcha を評価するのは間違い&lt;br /&gt;
** 荒らし対策は SFS のような IP レピュテーションか、AbuseFilter のようなパターンマッチのお仕事&lt;br /&gt;
* Inoreader で最近の更新をウォッチしてるんだけど、更新間隔が60分くらいで遅いので代替を探している&lt;br /&gt;
** タイトルだけでよければ Slack / Discord で RSS 読むのもあり&lt;br /&gt;
*** 中身を読もうとすると急に選択肢が減る&lt;br /&gt;
*** みんなどうやってウォッチしてるんだろう&lt;br /&gt;
** 出先でサクッと読むためにはアプリ版が必要で、Inoreader は最善の選択肢&lt;br /&gt;
** 内容を読むツールと通知を受けるツールを別にするべきなのかもしれない&lt;br /&gt;
&lt;br /&gt;
== 2020-12-28 ==&lt;br /&gt;
&lt;br /&gt;
* 最近、「人から信頼を得て生きていくのは素晴らしいことだ」と前向きになっていたけど、みっともない水掛け論を見ていると「やっぱり人間関係はクソ、山に籠もって一人で生きていこう！」って感情になる&lt;br /&gt;
* Cloudflare の設定をミスっていて、キャッシュで機微情報を漏らしそうになった&lt;br /&gt;
** 自分しか利用者がいないので自分以外の情報を漏らすことがなくてよかった&lt;br /&gt;
** キャッシュは怖い&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=102</id>
		<title>利用者:Sigsign/diary/2020-12</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=102"/>
		<updated>2020-12-27T19:35:49Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2020-12-27 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__APPROVEDREVS__&lt;br /&gt;
&lt;br /&gt;
== 2020-12-03 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日は UserJS に専念していた&lt;br /&gt;
** JavaScript の非同期処理は難しい&lt;br /&gt;
** MediaWiki 1.35 以降なら Promise も使えるし、Vue も使えるんだけどな&lt;br /&gt;
** &amp;lt;code&amp;gt;$.deferred()&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;$.when()&amp;lt;/code&amp;gt; も悪いわけではないけれど…&lt;br /&gt;
* ApprovedRevs を少し試している&lt;br /&gt;
** FlaggedRevs の Pending Changes（査読保護）は優れているが、FlaggedRevs が複雑すぎる&lt;br /&gt;
** マジックワードで発動できる点を活かして、テンプレートと運用をうまく組み合わせれば化けそう&lt;br /&gt;
&lt;br /&gt;
== 2020-12-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日今日は[https://grayraven.jp/ パニグレ]をやっていた&lt;br /&gt;
** バトル開始時にルシアの瞳が紅く光るのが好き&lt;br /&gt;
** 極限回避で高速空間に入れるようになると爽快アクションとして楽しくなっていく&lt;br /&gt;
* マジックワード &amp;lt;code&amp;gt;_APPROVEDREVS_&amp;lt;/code&amp;gt; を試してみたが想像していた動きにならない&lt;br /&gt;
&lt;br /&gt;
== 2020-12-08 ==&lt;br /&gt;
&lt;br /&gt;
* Chakuwiki にアクセスできなくなっているらしい&lt;br /&gt;
** 雰囲気はドメイン失効っぽいのだけど、AutoRenewPeriod ではなく inactive になっている&lt;br /&gt;
&lt;br /&gt;
== 2020-12-10 ==&lt;br /&gt;
&lt;br /&gt;
* セイキンショット、これほど人口に膾炙している（？）にも関わらず項目が存在しない&lt;br /&gt;
** VTuber もこういうのちゃんと記録していかないとダメなんだろうな&lt;br /&gt;
** 10年後には苦々しく感じるのかもしれないけど、記録に残りすらしないのは悲しい&lt;br /&gt;
* 返金覚悟で注文したリングフィットアドベンチャーが2日で発送されてしまった&lt;br /&gt;
** 取り寄せ10日だったのでクリスマス頃に届くかなあと思っていたのに&lt;br /&gt;
&lt;br /&gt;
== 2020-12-12 ==&lt;br /&gt;
&lt;br /&gt;
* Chakuwiki はなんとオーナーが亡くなられたらしい&lt;br /&gt;
** ライセンスが不透明（著作権は運営者に帰属）なので遺族の許諾を得て CC ライセンスに再ライセンスする作業が必要そう&lt;br /&gt;
*** CC ライセンスでないと Miraheze 等に丸投げするのは難しい&lt;br /&gt;
*** 同様の理由から、現状では外部のサイトに引き取ってもらうのも難しい&lt;br /&gt;
** 現在のサーバーはクレジットカードが解約される（AWS の料金支払いが滞って AWS がサーバーを止める）までの命と考えたほうがよさそう&lt;br /&gt;
*** 広告収入が振り込まれる口座と AWS の料金が引き落とされる口座が同じなら…と思っていたけど、普通は口座とクレジットカード解約するよね&lt;br /&gt;
*** 死亡すると口座が凍結されるので、現在進行形で料金を支払えていない可能性あり&lt;br /&gt;
*** となると、今のうちに Special:Export から取得しておかないと電子の藻屑になるかもしれないな&lt;br /&gt;
&lt;br /&gt;
== 2020-12-13 ==&lt;br /&gt;
&lt;br /&gt;
* リングフィットが届いたのでやってみたら足がガクガクになってしまった&lt;br /&gt;
** これを何時間もやってたライバーがいるってマジ？&lt;br /&gt;
** バンザイプッシュが結構キツい、と思ったら最後は足にきた&lt;br /&gt;
** 実況を見てたときとは別の発見があったりして、ゲーム本編もなかなかおもしろい&lt;br /&gt;
* Chakuwiki の dump を取るスクリプトを書いて回してみた&lt;br /&gt;
** Web サーバーが 2 台あって、そのうちアクセスの少なそうなほうを使っている&lt;br /&gt;
** みんな IP アドレスでアクセスするようになってしまったので、アクセスの偏りが半端なさそう&lt;br /&gt;
** wikitext の次は画像も dump しなきゃ&lt;br /&gt;
* 借井戸では「ライセンスは PD」と言っている人がいるけど、Chakuwiki は PD じゃないと思うけどなあ&lt;br /&gt;
** PD は著作権を放棄した状態のこと&lt;br /&gt;
*** CC0 や Unlicense は権利放棄の条項があり、PD かつ PD にできない場合は All permissive license として機能するようになっている&lt;br /&gt;
*** WTFPL や 0BSD は「PD 相当」ないし「PD-like」であって PD ではない&lt;br /&gt;
** Chakuwiki はオーナーに著作権を帰属させた上で権利の不行使（attribution なしで利用可）を表明しているだけ&lt;br /&gt;
** オーナーのそれは法的効力のない自筆証書遺言みたいなもので、PD ではないし、PD 相当と言えるかも怪しい&lt;br /&gt;
* オーナー遺族の意向がちょっと微妙で、雲行きが怪しくなっている&lt;br /&gt;
** アーカイブを作成する分には問題ないだろう&lt;br /&gt;
** アメリカにサーバーがあればフェアユースということにもできるだろうし&lt;br /&gt;
&lt;br /&gt;
== 2020-12-14 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;dumpBackup.php&amp;lt;/code&amp;gt; に画像も含めて Export する機能があることを知った&lt;br /&gt;
** つまり、&amp;lt;code&amp;gt;dumpBackup.php&amp;lt;/code&amp;gt; が出力した「風の」xml を生成して &amp;lt;code&amp;gt;importDump.php&amp;lt;/code&amp;gt; に読ませればうまくいくわけか&lt;br /&gt;
** &amp;lt;code&amp;gt;importImages.php&amp;lt;/code&amp;gt; はアップロード者の情報が欠落してしまうのでどうしたものかと思っていた&lt;br /&gt;
** 最終的に Miraheze にインポートするなら、単一のクソデカ xml を生成して &amp;lt;code&amp;gt;importDump.php&amp;lt;/code&amp;gt; で一発の形に持っていくべきなんだろうな&lt;br /&gt;
&lt;br /&gt;
== 2020-12-16 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日は画像のアーカイブを終わらせた&lt;br /&gt;
** wget（の -i オプション）は自動でダウンロードしてくれて便利…だと最初は思っていたんだけどな&lt;br /&gt;
*** ファイル名の自動変換が曲者で逆に面倒くさくなってしまった&lt;br /&gt;
*** ascii じゃなくて nocontrol を選んでおけば…あるいは…&lt;br /&gt;
* 放置していた VPS をセットアップしている&lt;br /&gt;
** Debian パッケージの ipset は Systemd の Unit ファイルが同梱されてないので自作&lt;br /&gt;
** sshguard を ipset ベースで設定&lt;br /&gt;
** iptables/ip6tables の設定の詰めはまた明日&lt;br /&gt;
* 1月か2月みたいなペースで雪が降るので毎日ヘトヘト&lt;br /&gt;
&lt;br /&gt;
== 2020-12-26 ==&lt;br /&gt;
&lt;br /&gt;
* 大雪のせいでここ10日ほどの記憶がない&lt;br /&gt;
** 毎日のように筋肉痛になり、寒暖差で体調を崩し…&lt;br /&gt;
* Chakuwiki のエクスポートをするスクリプトにミスがあり、それもミスがあまりにも初歩的なミスでテンションがガクッと下がっている&lt;br /&gt;
** 現実逃避に原神を始めたらハマってしまった&lt;br /&gt;
** 原神で寝不足気味だったのが体調不良の原因では？？？&lt;br /&gt;
* 別人と間違われて笑ってしまったのだけど、それは自分に信用がないことの裏返しだよな&lt;br /&gt;
** あまり記事を書かないので、ウィキプロジェクトに対して貢献できていない&lt;br /&gt;
*** ウィキペディアを筆頭に「優れた記事を書ける人は信用できる」という雰囲気がある&lt;br /&gt;
*** 記事も書かない（書けない）のに口出しするような人が大抵ろくでもないのも事実&lt;br /&gt;
** 技術的にあれができる、こうしたほうがいい、ということはよく言うのだけど…&lt;br /&gt;
** もっと積極的に執筆活動をして、信用を勝ち取っていくしかないんだろう&lt;br /&gt;
* 自分のサーバーに nmap かけてセキュリティチェックするのは常識になって欲しい&lt;br /&gt;
** ポートスキャナ対策も（目眩まし程度とはいえ）ちゃんとやりましょう&lt;br /&gt;
*** 対策しすぎない（複雑にしすぎない）のも大切&lt;br /&gt;
*** 以前 iptables で頑張りすぎて、久々にルールを読んだら解読するのに数日かかったという笑い話（実話）がある&lt;br /&gt;
**** お前、自分で書いた iptables ルールも読めないのかよ！（3年前の自分からの煽り）（幻聴）&lt;br /&gt;
**** もう若くないんだなと悟ったし、ドキュメントも精力的に書かなきゃと思いました&lt;br /&gt;
**** この日記を始めた理由のひとつ&lt;br /&gt;
** 最終的に面倒くさくなって、クラウドベンダーが提供するファイアウォールに頼るようになる&lt;br /&gt;
*** このウィキも Cloudflare 頼りなので人のことは言えない&lt;br /&gt;
* Cloudflare は便利なんだけど、MediaWiki と組み合わせるベストプラクティス的なものがなくて、日本語圏ではあまり流行ってないよね&lt;br /&gt;
** そういえば、それも書こうとして書けていないんだよなあ&lt;br /&gt;
&lt;br /&gt;
== 2020-12-27 ==&lt;br /&gt;
&lt;br /&gt;
* ReCAPTCHA より QuestyCaptcha のほうが優れているんですけどね&lt;br /&gt;
** ただ、設問によっては非日本語話者を排除してしまう欠点があり、ReCAPTCHA / hCaptcha のほうがバリアフリーで優しい&lt;br /&gt;
** そもそも Captcha で防げるのは bot だけなので、荒らし対策として Captcha を評価するのは間違い&lt;br /&gt;
** 荒らし対策は SFS のような IP レピュテーションか、AbuseFilter のようなパターンマッチのお仕事&lt;br /&gt;
* Inoreader で最近の更新をウォッチしてるんだけど、更新間隔が60分くらいで遅いので代替を探している&lt;br /&gt;
** タイトルだけでよければ Slack / Discord で RSS 読むのもあり&lt;br /&gt;
*** 中身を読もうとすると急に選択肢が減る&lt;br /&gt;
*** みんなどうやってウォッチしてるんだろう&lt;br /&gt;
** 出先でサクッと読むためにはアプリ版が必要で、Inoreader は最善の選択肢&lt;br /&gt;
** 内容を読むツールと通知を受けるツールを別にするべきなのかもしれない&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85%E3%83%BB%E3%83%88%E3%83%BC%E3%82%AF:Sigsign&amp;diff=101</id>
		<title>利用者・トーク:Sigsign</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85%E3%83%BB%E3%83%88%E3%83%BC%E3%82%AF:Sigsign&amp;diff=101"/>
		<updated>2020-12-27T09:03:38Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: 作成&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== cw.signote.cc について ==&lt;br /&gt;
&lt;br /&gt;
cw.signote.cc に関する指摘はこちらへ。--[[利用者:Sigsign|Sigsign]] ([[利用者・トーク:Sigsign|トーク]]) 2020年12月27日 (日) 18:03 (JST)&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=100</id>
		<title>利用者:Sigsign/diary/2020-12</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=100"/>
		<updated>2020-12-26T17:28:36Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2020-12-26 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__APPROVEDREVS__&lt;br /&gt;
&lt;br /&gt;
== 2020-12-03 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日は UserJS に専念していた&lt;br /&gt;
** JavaScript の非同期処理は難しい&lt;br /&gt;
** MediaWiki 1.35 以降なら Promise も使えるし、Vue も使えるんだけどな&lt;br /&gt;
** &amp;lt;code&amp;gt;$.deferred()&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;$.when()&amp;lt;/code&amp;gt; も悪いわけではないけれど…&lt;br /&gt;
* ApprovedRevs を少し試している&lt;br /&gt;
** FlaggedRevs の Pending Changes（査読保護）は優れているが、FlaggedRevs が複雑すぎる&lt;br /&gt;
** マジックワードで発動できる点を活かして、テンプレートと運用をうまく組み合わせれば化けそう&lt;br /&gt;
&lt;br /&gt;
== 2020-12-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日今日は[https://grayraven.jp/ パニグレ]をやっていた&lt;br /&gt;
** バトル開始時にルシアの瞳が紅く光るのが好き&lt;br /&gt;
** 極限回避で高速空間に入れるようになると爽快アクションとして楽しくなっていく&lt;br /&gt;
* マジックワード &amp;lt;code&amp;gt;_APPROVEDREVS_&amp;lt;/code&amp;gt; を試してみたが想像していた動きにならない&lt;br /&gt;
&lt;br /&gt;
== 2020-12-08 ==&lt;br /&gt;
&lt;br /&gt;
* Chakuwiki にアクセスできなくなっているらしい&lt;br /&gt;
** 雰囲気はドメイン失効っぽいのだけど、AutoRenewPeriod ではなく inactive になっている&lt;br /&gt;
&lt;br /&gt;
== 2020-12-10 ==&lt;br /&gt;
&lt;br /&gt;
* セイキンショット、これほど人口に膾炙している（？）にも関わらず項目が存在しない&lt;br /&gt;
** VTuber もこういうのちゃんと記録していかないとダメなんだろうな&lt;br /&gt;
** 10年後には苦々しく感じるのかもしれないけど、記録に残りすらしないのは悲しい&lt;br /&gt;
* 返金覚悟で注文したリングフィットアドベンチャーが2日で発送されてしまった&lt;br /&gt;
** 取り寄せ10日だったのでクリスマス頃に届くかなあと思っていたのに&lt;br /&gt;
&lt;br /&gt;
== 2020-12-12 ==&lt;br /&gt;
&lt;br /&gt;
* Chakuwiki はなんとオーナーが亡くなられたらしい&lt;br /&gt;
** ライセンスが不透明（著作権は運営者に帰属）なので遺族の許諾を得て CC ライセンスに再ライセンスする作業が必要そう&lt;br /&gt;
*** CC ライセンスでないと Miraheze 等に丸投げするのは難しい&lt;br /&gt;
*** 同様の理由から、現状では外部のサイトに引き取ってもらうのも難しい&lt;br /&gt;
** 現在のサーバーはクレジットカードが解約される（AWS の料金支払いが滞って AWS がサーバーを止める）までの命と考えたほうがよさそう&lt;br /&gt;
*** 広告収入が振り込まれる口座と AWS の料金が引き落とされる口座が同じなら…と思っていたけど、普通は口座とクレジットカード解約するよね&lt;br /&gt;
*** 死亡すると口座が凍結されるので、現在進行形で料金を支払えていない可能性あり&lt;br /&gt;
*** となると、今のうちに Special:Export から取得しておかないと電子の藻屑になるかもしれないな&lt;br /&gt;
&lt;br /&gt;
== 2020-12-13 ==&lt;br /&gt;
&lt;br /&gt;
* リングフィットが届いたのでやってみたら足がガクガクになってしまった&lt;br /&gt;
** これを何時間もやってたライバーがいるってマジ？&lt;br /&gt;
** バンザイプッシュが結構キツい、と思ったら最後は足にきた&lt;br /&gt;
** 実況を見てたときとは別の発見があったりして、ゲーム本編もなかなかおもしろい&lt;br /&gt;
* Chakuwiki の dump を取るスクリプトを書いて回してみた&lt;br /&gt;
** Web サーバーが 2 台あって、そのうちアクセスの少なそうなほうを使っている&lt;br /&gt;
** みんな IP アドレスでアクセスするようになってしまったので、アクセスの偏りが半端なさそう&lt;br /&gt;
** wikitext の次は画像も dump しなきゃ&lt;br /&gt;
* 借井戸では「ライセンスは PD」と言っている人がいるけど、Chakuwiki は PD じゃないと思うけどなあ&lt;br /&gt;
** PD は著作権を放棄した状態のこと&lt;br /&gt;
*** CC0 や Unlicense は権利放棄の条項があり、PD かつ PD にできない場合は All permissive license として機能するようになっている&lt;br /&gt;
*** WTFPL や 0BSD は「PD 相当」ないし「PD-like」であって PD ではない&lt;br /&gt;
** Chakuwiki はオーナーに著作権を帰属させた上で権利の不行使（attribution なしで利用可）を表明しているだけ&lt;br /&gt;
** オーナーのそれは法的効力のない自筆証書遺言みたいなもので、PD ではないし、PD 相当と言えるかも怪しい&lt;br /&gt;
* オーナー遺族の意向がちょっと微妙で、雲行きが怪しくなっている&lt;br /&gt;
** アーカイブを作成する分には問題ないだろう&lt;br /&gt;
** アメリカにサーバーがあればフェアユースということにもできるだろうし&lt;br /&gt;
&lt;br /&gt;
== 2020-12-14 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;dumpBackup.php&amp;lt;/code&amp;gt; に画像も含めて Export する機能があることを知った&lt;br /&gt;
** つまり、&amp;lt;code&amp;gt;dumpBackup.php&amp;lt;/code&amp;gt; が出力した「風の」xml を生成して &amp;lt;code&amp;gt;importDump.php&amp;lt;/code&amp;gt; に読ませればうまくいくわけか&lt;br /&gt;
** &amp;lt;code&amp;gt;importImages.php&amp;lt;/code&amp;gt; はアップロード者の情報が欠落してしまうのでどうしたものかと思っていた&lt;br /&gt;
** 最終的に Miraheze にインポートするなら、単一のクソデカ xml を生成して &amp;lt;code&amp;gt;importDump.php&amp;lt;/code&amp;gt; で一発の形に持っていくべきなんだろうな&lt;br /&gt;
&lt;br /&gt;
== 2020-12-16 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日は画像のアーカイブを終わらせた&lt;br /&gt;
** wget（の -i オプション）は自動でダウンロードしてくれて便利…だと最初は思っていたんだけどな&lt;br /&gt;
*** ファイル名の自動変換が曲者で逆に面倒くさくなってしまった&lt;br /&gt;
*** ascii じゃなくて nocontrol を選んでおけば…あるいは…&lt;br /&gt;
* 放置していた VPS をセットアップしている&lt;br /&gt;
** Debian パッケージの ipset は Systemd の Unit ファイルが同梱されてないので自作&lt;br /&gt;
** sshguard を ipset ベースで設定&lt;br /&gt;
** iptables/ip6tables の設定の詰めはまた明日&lt;br /&gt;
* 1月か2月みたいなペースで雪が降るので毎日ヘトヘト&lt;br /&gt;
&lt;br /&gt;
== 2020-12-26 ==&lt;br /&gt;
&lt;br /&gt;
* 大雪のせいでここ10日ほどの記憶がない&lt;br /&gt;
** 毎日のように筋肉痛になり、寒暖差で体調を崩し…&lt;br /&gt;
* Chakuwiki のエクスポートをするスクリプトにミスがあり、それもミスがあまりにも初歩的なミスでテンションがガクッと下がっている&lt;br /&gt;
** 現実逃避に原神を始めたらハマってしまった&lt;br /&gt;
** 原神で寝不足気味だったのが体調不良の原因では？？？&lt;br /&gt;
* 別人と間違われて笑ってしまったのだけど、それは自分に信用がないことの裏返しだよな&lt;br /&gt;
** あまり記事を書かないので、ウィキプロジェクトに対して貢献できていない&lt;br /&gt;
*** ウィキペディアを筆頭に「優れた記事を書ける人は信用できる」という雰囲気がある&lt;br /&gt;
*** 記事も書かない（書けない）のに口出しするような人が大抵ろくでもないのも事実&lt;br /&gt;
** 技術的にあれができる、こうしたほうがいい、ということはよく言うのだけど…&lt;br /&gt;
** もっと積極的に執筆活動をして、信用を勝ち取っていくしかないんだろう&lt;br /&gt;
* 自分のサーバーに nmap かけてセキュリティチェックするのは常識になって欲しい&lt;br /&gt;
** ポートスキャナ対策も（目眩まし程度とはいえ）ちゃんとやりましょう&lt;br /&gt;
*** 対策しすぎない（複雑にしすぎない）のも大切&lt;br /&gt;
*** 以前 iptables で頑張りすぎて、久々にルールを読んだら解読するのに数日かかったという笑い話（実話）がある&lt;br /&gt;
**** お前、自分で書いた iptables ルールも読めないのかよ！（3年前の自分からの煽り）（幻聴）&lt;br /&gt;
**** もう若くないんだなと悟ったし、ドキュメントも精力的に書かなきゃと思いました&lt;br /&gt;
**** この日記を始めた理由のひとつ&lt;br /&gt;
** 最終的に面倒くさくなって、クラウドベンダーが提供するファイアウォールに頼るようになる&lt;br /&gt;
*** このウィキも Cloudflare 頼りなので人のことは言えない&lt;br /&gt;
* Cloudflare は便利なんだけど、MediaWiki と組み合わせるベストプラクティス的なものがなくて、日本語圏ではあまり流行ってないよね&lt;br /&gt;
** そういえば、それも書こうとして書けていないんだよなあ&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=99</id>
		<title>利用者:Sigsign/diary/2020-12</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=99"/>
		<updated>2020-12-26T06:38:25Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2020-12-26 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__APPROVEDREVS__&lt;br /&gt;
&lt;br /&gt;
== 2020-12-03 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日は UserJS に専念していた&lt;br /&gt;
** JavaScript の非同期処理は難しい&lt;br /&gt;
** MediaWiki 1.35 以降なら Promise も使えるし、Vue も使えるんだけどな&lt;br /&gt;
** &amp;lt;code&amp;gt;$.deferred()&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;$.when()&amp;lt;/code&amp;gt; も悪いわけではないけれど…&lt;br /&gt;
* ApprovedRevs を少し試している&lt;br /&gt;
** FlaggedRevs の Pending Changes（査読保護）は優れているが、FlaggedRevs が複雑すぎる&lt;br /&gt;
** マジックワードで発動できる点を活かして、テンプレートと運用をうまく組み合わせれば化けそう&lt;br /&gt;
&lt;br /&gt;
== 2020-12-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日今日は[https://grayraven.jp/ パニグレ]をやっていた&lt;br /&gt;
** バトル開始時にルシアの瞳が紅く光るのが好き&lt;br /&gt;
** 極限回避で高速空間に入れるようになると爽快アクションとして楽しくなっていく&lt;br /&gt;
* マジックワード &amp;lt;code&amp;gt;_APPROVEDREVS_&amp;lt;/code&amp;gt; を試してみたが想像していた動きにならない&lt;br /&gt;
&lt;br /&gt;
== 2020-12-08 ==&lt;br /&gt;
&lt;br /&gt;
* Chakuwiki にアクセスできなくなっているらしい&lt;br /&gt;
** 雰囲気はドメイン失効っぽいのだけど、AutoRenewPeriod ではなく inactive になっている&lt;br /&gt;
&lt;br /&gt;
== 2020-12-10 ==&lt;br /&gt;
&lt;br /&gt;
* セイキンショット、これほど人口に膾炙している（？）にも関わらず項目が存在しない&lt;br /&gt;
** VTuber もこういうのちゃんと記録していかないとダメなんだろうな&lt;br /&gt;
** 10年後には苦々しく感じるのかもしれないけど、記録に残りすらしないのは悲しい&lt;br /&gt;
* 返金覚悟で注文したリングフィットアドベンチャーが2日で発送されてしまった&lt;br /&gt;
** 取り寄せ10日だったのでクリスマス頃に届くかなあと思っていたのに&lt;br /&gt;
&lt;br /&gt;
== 2020-12-12 ==&lt;br /&gt;
&lt;br /&gt;
* Chakuwiki はなんとオーナーが亡くなられたらしい&lt;br /&gt;
** ライセンスが不透明（著作権は運営者に帰属）なので遺族の許諾を得て CC ライセンスに再ライセンスする作業が必要そう&lt;br /&gt;
*** CC ライセンスでないと Miraheze 等に丸投げするのは難しい&lt;br /&gt;
*** 同様の理由から、現状では外部のサイトに引き取ってもらうのも難しい&lt;br /&gt;
** 現在のサーバーはクレジットカードが解約される（AWS の料金支払いが滞って AWS がサーバーを止める）までの命と考えたほうがよさそう&lt;br /&gt;
*** 広告収入が振り込まれる口座と AWS の料金が引き落とされる口座が同じなら…と思っていたけど、普通は口座とクレジットカード解約するよね&lt;br /&gt;
*** 死亡すると口座が凍結されるので、現在進行形で料金を支払えていない可能性あり&lt;br /&gt;
*** となると、今のうちに Special:Export から取得しておかないと電子の藻屑になるかもしれないな&lt;br /&gt;
&lt;br /&gt;
== 2020-12-13 ==&lt;br /&gt;
&lt;br /&gt;
* リングフィットが届いたのでやってみたら足がガクガクになってしまった&lt;br /&gt;
** これを何時間もやってたライバーがいるってマジ？&lt;br /&gt;
** バンザイプッシュが結構キツい、と思ったら最後は足にきた&lt;br /&gt;
** 実況を見てたときとは別の発見があったりして、ゲーム本編もなかなかおもしろい&lt;br /&gt;
* Chakuwiki の dump を取るスクリプトを書いて回してみた&lt;br /&gt;
** Web サーバーが 2 台あって、そのうちアクセスの少なそうなほうを使っている&lt;br /&gt;
** みんな IP アドレスでアクセスするようになってしまったので、アクセスの偏りが半端なさそう&lt;br /&gt;
** wikitext の次は画像も dump しなきゃ&lt;br /&gt;
* 借井戸では「ライセンスは PD」と言っている人がいるけど、Chakuwiki は PD じゃないと思うけどなあ&lt;br /&gt;
** PD は著作権を放棄した状態のこと&lt;br /&gt;
*** CC0 や Unlicense は権利放棄の条項があり、PD かつ PD にできない場合は All permissive license として機能するようになっている&lt;br /&gt;
*** WTFPL や 0BSD は「PD 相当」ないし「PD-like」であって PD ではない&lt;br /&gt;
** Chakuwiki はオーナーに著作権を帰属させた上で権利の不行使（attribution なしで利用可）を表明しているだけ&lt;br /&gt;
** オーナーのそれは法的効力のない自筆証書遺言みたいなもので、PD ではないし、PD 相当と言えるかも怪しい&lt;br /&gt;
* オーナー遺族の意向がちょっと微妙で、雲行きが怪しくなっている&lt;br /&gt;
** アーカイブを作成する分には問題ないだろう&lt;br /&gt;
** アメリカにサーバーがあればフェアユースということにもできるだろうし&lt;br /&gt;
&lt;br /&gt;
== 2020-12-14 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;dumpBackup.php&amp;lt;/code&amp;gt; に画像も含めて Export する機能があることを知った&lt;br /&gt;
** つまり、&amp;lt;code&amp;gt;dumpBackup.php&amp;lt;/code&amp;gt; が出力した「風の」xml を生成して &amp;lt;code&amp;gt;importDump.php&amp;lt;/code&amp;gt; に読ませればうまくいくわけか&lt;br /&gt;
** &amp;lt;code&amp;gt;importImages.php&amp;lt;/code&amp;gt; はアップロード者の情報が欠落してしまうのでどうしたものかと思っていた&lt;br /&gt;
** 最終的に Miraheze にインポートするなら、単一のクソデカ xml を生成して &amp;lt;code&amp;gt;importDump.php&amp;lt;/code&amp;gt; で一発の形に持っていくべきなんだろうな&lt;br /&gt;
&lt;br /&gt;
== 2020-12-16 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日は画像のアーカイブを終わらせた&lt;br /&gt;
** wget（の -i オプション）は自動でダウンロードしてくれて便利…だと最初は思っていたんだけどな&lt;br /&gt;
*** ファイル名の自動変換が曲者で逆に面倒くさくなってしまった&lt;br /&gt;
*** ascii じゃなくて nocontrol を選んでおけば…あるいは…&lt;br /&gt;
* 放置していた VPS をセットアップしている&lt;br /&gt;
** Debian パッケージの ipset は Systemd の Unit ファイルが同梱されてないので自作&lt;br /&gt;
** sshguard を ipset ベースで設定&lt;br /&gt;
** iptables/ip6tables の設定の詰めはまた明日&lt;br /&gt;
* 1月か2月みたいなペースで雪が降るので毎日ヘトヘト&lt;br /&gt;
&lt;br /&gt;
== 2020-12-26 ==&lt;br /&gt;
&lt;br /&gt;
* 大雪のせいでここ10日ほどの記憶がない&lt;br /&gt;
** 毎日のように筋肉痛になり、寒暖差で体調を崩し…&lt;br /&gt;
* Chakuwiki のエクスポートをするスクリプトにミスがあり、それもミスがあまりにも初歩的なミスでテンションがガクッと下がっている&lt;br /&gt;
** 現実逃避に原神を始めたらハマってしまった&lt;br /&gt;
** 原神で寝不足気味だったのが体調不良の原因では？？？&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=98</id>
		<title>利用者:Sigsign/diary/2020-12</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=98"/>
		<updated>2020-12-16T18:30:20Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2020-12-16 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__APPROVEDREVS__&lt;br /&gt;
&lt;br /&gt;
== 2020-12-03 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日は UserJS に専念していた&lt;br /&gt;
** JavaScript の非同期処理は難しい&lt;br /&gt;
** MediaWiki 1.35 以降なら Promise も使えるし、Vue も使えるんだけどな&lt;br /&gt;
** &amp;lt;code&amp;gt;$.deferred()&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;$.when()&amp;lt;/code&amp;gt; も悪いわけではないけれど…&lt;br /&gt;
* ApprovedRevs を少し試している&lt;br /&gt;
** FlaggedRevs の Pending Changes（査読保護）は優れているが、FlaggedRevs が複雑すぎる&lt;br /&gt;
** マジックワードで発動できる点を活かして、テンプレートと運用をうまく組み合わせれば化けそう&lt;br /&gt;
&lt;br /&gt;
== 2020-12-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日今日は[https://grayraven.jp/ パニグレ]をやっていた&lt;br /&gt;
** バトル開始時にルシアの瞳が紅く光るのが好き&lt;br /&gt;
** 極限回避で高速空間に入れるようになると爽快アクションとして楽しくなっていく&lt;br /&gt;
* マジックワード &amp;lt;code&amp;gt;_APPROVEDREVS_&amp;lt;/code&amp;gt; を試してみたが想像していた動きにならない&lt;br /&gt;
&lt;br /&gt;
== 2020-12-08 ==&lt;br /&gt;
&lt;br /&gt;
* Chakuwiki にアクセスできなくなっているらしい&lt;br /&gt;
** 雰囲気はドメイン失効っぽいのだけど、AutoRenewPeriod ではなく inactive になっている&lt;br /&gt;
&lt;br /&gt;
== 2020-12-10 ==&lt;br /&gt;
&lt;br /&gt;
* セイキンショット、これほど人口に膾炙している（？）にも関わらず項目が存在しない&lt;br /&gt;
** VTuber もこういうのちゃんと記録していかないとダメなんだろうな&lt;br /&gt;
** 10年後には苦々しく感じるのかもしれないけど、記録に残りすらしないのは悲しい&lt;br /&gt;
* 返金覚悟で注文したリングフィットアドベンチャーが2日で発送されてしまった&lt;br /&gt;
** 取り寄せ10日だったのでクリスマス頃に届くかなあと思っていたのに&lt;br /&gt;
&lt;br /&gt;
== 2020-12-12 ==&lt;br /&gt;
&lt;br /&gt;
* Chakuwiki はなんとオーナーが亡くなられたらしい&lt;br /&gt;
** ライセンスが不透明（著作権は運営者に帰属）なので遺族の許諾を得て CC ライセンスに再ライセンスする作業が必要そう&lt;br /&gt;
*** CC ライセンスでないと Miraheze 等に丸投げするのは難しい&lt;br /&gt;
*** 同様の理由から、現状では外部のサイトに引き取ってもらうのも難しい&lt;br /&gt;
** 現在のサーバーはクレジットカードが解約される（AWS の料金支払いが滞って AWS がサーバーを止める）までの命と考えたほうがよさそう&lt;br /&gt;
*** 広告収入が振り込まれる口座と AWS の料金が引き落とされる口座が同じなら…と思っていたけど、普通は口座とクレジットカード解約するよね&lt;br /&gt;
*** 死亡すると口座が凍結されるので、現在進行形で料金を支払えていない可能性あり&lt;br /&gt;
*** となると、今のうちに Special:Export から取得しておかないと電子の藻屑になるかもしれないな&lt;br /&gt;
&lt;br /&gt;
== 2020-12-13 ==&lt;br /&gt;
&lt;br /&gt;
* リングフィットが届いたのでやってみたら足がガクガクになってしまった&lt;br /&gt;
** これを何時間もやってたライバーがいるってマジ？&lt;br /&gt;
** バンザイプッシュが結構キツい、と思ったら最後は足にきた&lt;br /&gt;
** 実況を見てたときとは別の発見があったりして、ゲーム本編もなかなかおもしろい&lt;br /&gt;
* Chakuwiki の dump を取るスクリプトを書いて回してみた&lt;br /&gt;
** Web サーバーが 2 台あって、そのうちアクセスの少なそうなほうを使っている&lt;br /&gt;
** みんな IP アドレスでアクセスするようになってしまったので、アクセスの偏りが半端なさそう&lt;br /&gt;
** wikitext の次は画像も dump しなきゃ&lt;br /&gt;
* 借井戸では「ライセンスは PD」と言っている人がいるけど、Chakuwiki は PD じゃないと思うけどなあ&lt;br /&gt;
** PD は著作権を放棄した状態のこと&lt;br /&gt;
*** CC0 や Unlicense は権利放棄の条項があり、PD かつ PD にできない場合は All permissive license として機能するようになっている&lt;br /&gt;
*** WTFPL や 0BSD は「PD 相当」ないし「PD-like」であって PD ではない&lt;br /&gt;
** Chakuwiki はオーナーに著作権を帰属させた上で権利の不行使（attribution なしで利用可）を表明しているだけ&lt;br /&gt;
** オーナーのそれは法的効力のない自筆証書遺言みたいなもので、PD ではないし、PD 相当と言えるかも怪しい&lt;br /&gt;
* オーナー遺族の意向がちょっと微妙で、雲行きが怪しくなっている&lt;br /&gt;
** アーカイブを作成する分には問題ないだろう&lt;br /&gt;
** アメリカにサーバーがあればフェアユースということにもできるだろうし&lt;br /&gt;
&lt;br /&gt;
== 2020-12-14 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;dumpBackup.php&amp;lt;/code&amp;gt; に画像も含めて Export する機能があることを知った&lt;br /&gt;
** つまり、&amp;lt;code&amp;gt;dumpBackup.php&amp;lt;/code&amp;gt; が出力した「風の」xml を生成して &amp;lt;code&amp;gt;importDump.php&amp;lt;/code&amp;gt; に読ませればうまくいくわけか&lt;br /&gt;
** &amp;lt;code&amp;gt;importImages.php&amp;lt;/code&amp;gt; はアップロード者の情報が欠落してしまうのでどうしたものかと思っていた&lt;br /&gt;
** 最終的に Miraheze にインポートするなら、単一のクソデカ xml を生成して &amp;lt;code&amp;gt;importDump.php&amp;lt;/code&amp;gt; で一発の形に持っていくべきなんだろうな&lt;br /&gt;
&lt;br /&gt;
== 2020-12-16 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日は画像のアーカイブを終わらせた&lt;br /&gt;
** wget（の -i オプション）は自動でダウンロードしてくれて便利…だと最初は思っていたんだけどな&lt;br /&gt;
*** ファイル名の自動変換が曲者で逆に面倒くさくなってしまった&lt;br /&gt;
*** ascii じゃなくて nocontrol を選んでおけば…あるいは…&lt;br /&gt;
* 放置していた VPS をセットアップしている&lt;br /&gt;
** Debian パッケージの ipset は Systemd の Unit ファイルが同梱されてないので自作&lt;br /&gt;
** sshguard を ipset ベースで設定&lt;br /&gt;
** iptables/ip6tables の設定の詰めはまた明日&lt;br /&gt;
* 1月か2月みたいなペースで雪が降るので毎日ヘトヘト&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=97</id>
		<title>利用者:Sigsign/diary/2020-12</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=97"/>
		<updated>2020-12-14T14:27:14Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2020-12-14 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__APPROVEDREVS__&lt;br /&gt;
&lt;br /&gt;
== 2020-12-03 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日は UserJS に専念していた&lt;br /&gt;
** JavaScript の非同期処理は難しい&lt;br /&gt;
** MediaWiki 1.35 以降なら Promise も使えるし、Vue も使えるんだけどな&lt;br /&gt;
** &amp;lt;code&amp;gt;$.deferred()&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;$.when()&amp;lt;/code&amp;gt; も悪いわけではないけれど…&lt;br /&gt;
* ApprovedRevs を少し試している&lt;br /&gt;
** FlaggedRevs の Pending Changes（査読保護）は優れているが、FlaggedRevs が複雑すぎる&lt;br /&gt;
** マジックワードで発動できる点を活かして、テンプレートと運用をうまく組み合わせれば化けそう&lt;br /&gt;
&lt;br /&gt;
== 2020-12-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日今日は[https://grayraven.jp/ パニグレ]をやっていた&lt;br /&gt;
** バトル開始時にルシアの瞳が紅く光るのが好き&lt;br /&gt;
** 極限回避で高速空間に入れるようになると爽快アクションとして楽しくなっていく&lt;br /&gt;
* マジックワード &amp;lt;code&amp;gt;_APPROVEDREVS_&amp;lt;/code&amp;gt; を試してみたが想像していた動きにならない&lt;br /&gt;
&lt;br /&gt;
== 2020-12-08 ==&lt;br /&gt;
&lt;br /&gt;
* Chakuwiki にアクセスできなくなっているらしい&lt;br /&gt;
** 雰囲気はドメイン失効っぽいのだけど、AutoRenewPeriod ではなく inactive になっている&lt;br /&gt;
&lt;br /&gt;
== 2020-12-10 ==&lt;br /&gt;
&lt;br /&gt;
* セイキンショット、これほど人口に膾炙している（？）にも関わらず項目が存在しない&lt;br /&gt;
** VTuber もこういうのちゃんと記録していかないとダメなんだろうな&lt;br /&gt;
** 10年後には苦々しく感じるのかもしれないけど、記録に残りすらしないのは悲しい&lt;br /&gt;
* 返金覚悟で注文したリングフィットアドベンチャーが2日で発送されてしまった&lt;br /&gt;
** 取り寄せ10日だったのでクリスマス頃に届くかなあと思っていたのに&lt;br /&gt;
&lt;br /&gt;
== 2020-12-12 ==&lt;br /&gt;
&lt;br /&gt;
* Chakuwiki はなんとオーナーが亡くなられたらしい&lt;br /&gt;
** ライセンスが不透明（著作権は運営者に帰属）なので遺族の許諾を得て CC ライセンスに再ライセンスする作業が必要そう&lt;br /&gt;
*** CC ライセンスでないと Miraheze 等に丸投げするのは難しい&lt;br /&gt;
*** 同様の理由から、現状では外部のサイトに引き取ってもらうのも難しい&lt;br /&gt;
** 現在のサーバーはクレジットカードが解約される（AWS の料金支払いが滞って AWS がサーバーを止める）までの命と考えたほうがよさそう&lt;br /&gt;
*** 広告収入が振り込まれる口座と AWS の料金が引き落とされる口座が同じなら…と思っていたけど、普通は口座とクレジットカード解約するよね&lt;br /&gt;
*** 死亡すると口座が凍結されるので、現在進行形で料金を支払えていない可能性あり&lt;br /&gt;
*** となると、今のうちに Special:Export から取得しておかないと電子の藻屑になるかもしれないな&lt;br /&gt;
&lt;br /&gt;
== 2020-12-13 ==&lt;br /&gt;
&lt;br /&gt;
* リングフィットが届いたのでやってみたら足がガクガクになってしまった&lt;br /&gt;
** これを何時間もやってたライバーがいるってマジ？&lt;br /&gt;
** バンザイプッシュが結構キツい、と思ったら最後は足にきた&lt;br /&gt;
** 実況を見てたときとは別の発見があったりして、ゲーム本編もなかなかおもしろい&lt;br /&gt;
* Chakuwiki の dump を取るスクリプトを書いて回してみた&lt;br /&gt;
** Web サーバーが 2 台あって、そのうちアクセスの少なそうなほうを使っている&lt;br /&gt;
** みんな IP アドレスでアクセスするようになってしまったので、アクセスの偏りが半端なさそう&lt;br /&gt;
** wikitext の次は画像も dump しなきゃ&lt;br /&gt;
* 借井戸では「ライセンスは PD」と言っている人がいるけど、Chakuwiki は PD じゃないと思うけどなあ&lt;br /&gt;
** PD は著作権を放棄した状態のこと&lt;br /&gt;
*** CC0 や Unlicense は権利放棄の条項があり、PD かつ PD にできない場合は All permissive license として機能するようになっている&lt;br /&gt;
*** WTFPL や 0BSD は「PD 相当」ないし「PD-like」であって PD ではない&lt;br /&gt;
** Chakuwiki はオーナーに著作権を帰属させた上で権利の不行使（attribution なしで利用可）を表明しているだけ&lt;br /&gt;
** オーナーのそれは法的効力のない自筆証書遺言みたいなもので、PD ではないし、PD 相当と言えるかも怪しい&lt;br /&gt;
* オーナー遺族の意向がちょっと微妙で、雲行きが怪しくなっている&lt;br /&gt;
** アーカイブを作成する分には問題ないだろう&lt;br /&gt;
** アメリカにサーバーがあればフェアユースということにもできるだろうし&lt;br /&gt;
&lt;br /&gt;
== 2020-12-14 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;dumpBackup.php&amp;lt;/code&amp;gt; に画像も含めて Export する機能があることを知った&lt;br /&gt;
** つまり、&amp;lt;code&amp;gt;dumpBackup.php&amp;lt;/code&amp;gt; が出力した「風の」xml を生成して &amp;lt;code&amp;gt;importDump.php&amp;lt;/code&amp;gt; に読ませればうまくいくわけか&lt;br /&gt;
** &amp;lt;code&amp;gt;importImages.php&amp;lt;/code&amp;gt; はアップロード者の情報が欠落してしまうのでどうしたものかと思っていた&lt;br /&gt;
** 最終的に Miraheze にインポートするなら、単一のクソデカ xml を生成して &amp;lt;code&amp;gt;importDump.php&amp;lt;/code&amp;gt; で一発の形に持っていくべきなんだろうな&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=96</id>
		<title>利用者:Sigsign/diary/2020-12</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=96"/>
		<updated>2020-12-13T16:22:50Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2020-12-13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__APPROVEDREVS__&lt;br /&gt;
&lt;br /&gt;
== 2020-12-03 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日は UserJS に専念していた&lt;br /&gt;
** JavaScript の非同期処理は難しい&lt;br /&gt;
** MediaWiki 1.35 以降なら Promise も使えるし、Vue も使えるんだけどな&lt;br /&gt;
** &amp;lt;code&amp;gt;$.deferred()&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;$.when()&amp;lt;/code&amp;gt; も悪いわけではないけれど…&lt;br /&gt;
* ApprovedRevs を少し試している&lt;br /&gt;
** FlaggedRevs の Pending Changes（査読保護）は優れているが、FlaggedRevs が複雑すぎる&lt;br /&gt;
** マジックワードで発動できる点を活かして、テンプレートと運用をうまく組み合わせれば化けそう&lt;br /&gt;
&lt;br /&gt;
== 2020-12-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日今日は[https://grayraven.jp/ パニグレ]をやっていた&lt;br /&gt;
** バトル開始時にルシアの瞳が紅く光るのが好き&lt;br /&gt;
** 極限回避で高速空間に入れるようになると爽快アクションとして楽しくなっていく&lt;br /&gt;
* マジックワード &amp;lt;code&amp;gt;_APPROVEDREVS_&amp;lt;/code&amp;gt; を試してみたが想像していた動きにならない&lt;br /&gt;
&lt;br /&gt;
== 2020-12-08 ==&lt;br /&gt;
&lt;br /&gt;
* Chakuwiki にアクセスできなくなっているらしい&lt;br /&gt;
** 雰囲気はドメイン失効っぽいのだけど、AutoRenewPeriod ではなく inactive になっている&lt;br /&gt;
&lt;br /&gt;
== 2020-12-10 ==&lt;br /&gt;
&lt;br /&gt;
* セイキンショット、これほど人口に膾炙している（？）にも関わらず項目が存在しない&lt;br /&gt;
** VTuber もこういうのちゃんと記録していかないとダメなんだろうな&lt;br /&gt;
** 10年後には苦々しく感じるのかもしれないけど、記録に残りすらしないのは悲しい&lt;br /&gt;
* 返金覚悟で注文したリングフィットアドベンチャーが2日で発送されてしまった&lt;br /&gt;
** 取り寄せ10日だったのでクリスマス頃に届くかなあと思っていたのに&lt;br /&gt;
&lt;br /&gt;
== 2020-12-12 ==&lt;br /&gt;
&lt;br /&gt;
* Chakuwiki はなんとオーナーが亡くなられたらしい&lt;br /&gt;
** ライセンスが不透明（著作権は運営者に帰属）なので遺族の許諾を得て CC ライセンスに再ライセンスする作業が必要そう&lt;br /&gt;
*** CC ライセンスでないと Miraheze 等に丸投げするのは難しい&lt;br /&gt;
*** 同様の理由から、現状では外部のサイトに引き取ってもらうのも難しい&lt;br /&gt;
** 現在のサーバーはクレジットカードが解約される（AWS の料金支払いが滞って AWS がサーバーを止める）までの命と考えたほうがよさそう&lt;br /&gt;
*** 広告収入が振り込まれる口座と AWS の料金が引き落とされる口座が同じなら…と思っていたけど、普通は口座とクレジットカード解約するよね&lt;br /&gt;
*** 死亡すると口座が凍結されるので、現在進行形で料金を支払えていない可能性あり&lt;br /&gt;
*** となると、今のうちに Special:Export から取得しておかないと電子の藻屑になるかもしれないな&lt;br /&gt;
&lt;br /&gt;
== 2020-12-13 ==&lt;br /&gt;
&lt;br /&gt;
* リングフィットが届いたのでやってみたら足がガクガクになってしまった&lt;br /&gt;
** これを何時間もやってたライバーがいるってマジ？&lt;br /&gt;
** バンザイプッシュが結構キツい、と思ったら最後は足にきた&lt;br /&gt;
** 実況を見てたときとは別の発見があったりして、ゲーム本編もなかなかおもしろい&lt;br /&gt;
* Chakuwiki の dump を取るスクリプトを書いて回してみた&lt;br /&gt;
** Web サーバーが 2 台あって、そのうちアクセスの少なそうなほうを使っている&lt;br /&gt;
** みんな IP アドレスでアクセスするようになってしまったので、アクセスの偏りが半端なさそう&lt;br /&gt;
** wikitext の次は画像も dump しなきゃ&lt;br /&gt;
* 借井戸では「ライセンスは PD」と言っている人がいるけど、Chakuwiki は PD じゃないと思うけどなあ&lt;br /&gt;
** PD は著作権を放棄した状態のこと&lt;br /&gt;
*** CC0 や Unlicense は権利放棄の条項があり、PD かつ PD にできない場合は All permissive license として機能するようになっている&lt;br /&gt;
*** WTFPL や 0BSD は「PD 相当」ないし「PD-like」であって PD ではない&lt;br /&gt;
** Chakuwiki はオーナーに著作権を帰属させた上で権利の不行使（attribution なしで利用可）を表明しているだけ&lt;br /&gt;
** オーナーのそれは法的効力のない自筆証書遺言みたいなもので、PD ではないし、PD 相当と言えるかも怪しい&lt;br /&gt;
* オーナー遺族の意向がちょっと微妙で、雲行きが怪しくなっている&lt;br /&gt;
** アーカイブを作成する分には問題ないだろう&lt;br /&gt;
*** アメリカにサーバーがあればフェアユースということにもできるだろうし&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=95</id>
		<title>利用者:Sigsign/diary/2020-12</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=95"/>
		<updated>2020-12-12T16:35:54Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2020-12-12 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__APPROVEDREVS__&lt;br /&gt;
&lt;br /&gt;
== 2020-12-03 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日は UserJS に専念していた&lt;br /&gt;
** JavaScript の非同期処理は難しい&lt;br /&gt;
** MediaWiki 1.35 以降なら Promise も使えるし、Vue も使えるんだけどな&lt;br /&gt;
** &amp;lt;code&amp;gt;$.deferred()&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;$.when()&amp;lt;/code&amp;gt; も悪いわけではないけれど…&lt;br /&gt;
* ApprovedRevs を少し試している&lt;br /&gt;
** FlaggedRevs の Pending Changes（査読保護）は優れているが、FlaggedRevs が複雑すぎる&lt;br /&gt;
** マジックワードで発動できる点を活かして、テンプレートと運用をうまく組み合わせれば化けそう&lt;br /&gt;
&lt;br /&gt;
== 2020-12-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日今日は[https://grayraven.jp/ パニグレ]をやっていた&lt;br /&gt;
** バトル開始時にルシアの瞳が紅く光るのが好き&lt;br /&gt;
** 極限回避で高速空間に入れるようになると爽快アクションとして楽しくなっていく&lt;br /&gt;
* マジックワード &amp;lt;code&amp;gt;_APPROVEDREVS_&amp;lt;/code&amp;gt; を試してみたが想像していた動きにならない&lt;br /&gt;
&lt;br /&gt;
== 2020-12-08 ==&lt;br /&gt;
&lt;br /&gt;
* Chakuwiki にアクセスできなくなっているらしい&lt;br /&gt;
** 雰囲気はドメイン失効っぽいのだけど、AutoRenewPeriod ではなく inactive になっている&lt;br /&gt;
&lt;br /&gt;
== 2020-12-10 ==&lt;br /&gt;
&lt;br /&gt;
* セイキンショット、これほど人口に膾炙している（？）にも関わらず項目が存在しない&lt;br /&gt;
** VTuber もこういうのちゃんと記録していかないとダメなんだろうな&lt;br /&gt;
** 10年後には苦々しく感じるのかもしれないけど、記録に残りすらしないのは悲しい&lt;br /&gt;
* 返金覚悟で注文したリングフィットアドベンチャーが2日で発送されてしまった&lt;br /&gt;
** 取り寄せ10日だったのでクリスマス頃に届くかなあと思っていたのに&lt;br /&gt;
&lt;br /&gt;
== 2011-12-12 ==&lt;br /&gt;
&lt;br /&gt;
* Chakuwiki はなんとオーナーが亡くなられたらしい&lt;br /&gt;
** ライセンスが不透明（著作権は運営者に帰属）なので遺族の許諾を得て CC ライセンスに再ライセンスする作業が必要そう&lt;br /&gt;
*** CC ライセンスでないと Miraheze 等に丸投げするのは難しい&lt;br /&gt;
*** 同様の理由から、現状では外部のサイトに引き取ってもらうのも難しい&lt;br /&gt;
** 現在のサーバーはクレジットカードが解約される（AWS の料金支払いが滞って AWS がサーバーを止める）までの命と考えたほうがよさそう&lt;br /&gt;
*** 広告収入が振り込まれる口座と AWS の料金が引き落とされる口座が同じなら…と思っていたけど、普通は口座とクレジットカード解約するよね&lt;br /&gt;
*** 死亡すると口座が凍結されるので、現在進行形で料金を支払えていない可能性あり&lt;br /&gt;
*** となると、今のうちに Special:Export から取得しておかないと電子の藻屑になるかもしれないな&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=94</id>
		<title>利用者:Sigsign/diary/2020-12</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=94"/>
		<updated>2020-12-10T17:34:36Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2020-12-10 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__APPROVEDREVS__&lt;br /&gt;
&lt;br /&gt;
== 2020-12-03 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日は UserJS に専念していた&lt;br /&gt;
** JavaScript の非同期処理は難しい&lt;br /&gt;
** MediaWiki 1.35 以降なら Promise も使えるし、Vue も使えるんだけどな&lt;br /&gt;
** &amp;lt;code&amp;gt;$.deferred()&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;$.when()&amp;lt;/code&amp;gt; も悪いわけではないけれど…&lt;br /&gt;
* ApprovedRevs を少し試している&lt;br /&gt;
** FlaggedRevs の Pending Changes（査読保護）は優れているが、FlaggedRevs が複雑すぎる&lt;br /&gt;
** マジックワードで発動できる点を活かして、テンプレートと運用をうまく組み合わせれば化けそう&lt;br /&gt;
&lt;br /&gt;
== 2020-12-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日今日は[https://grayraven.jp/ パニグレ]をやっていた&lt;br /&gt;
** バトル開始時にルシアの瞳が紅く光るのが好き&lt;br /&gt;
** 極限回避で高速空間に入れるようになると爽快アクションとして楽しくなっていく&lt;br /&gt;
* マジックワード &amp;lt;code&amp;gt;_APPROVEDREVS_&amp;lt;/code&amp;gt; を試してみたが想像していた動きにならない&lt;br /&gt;
&lt;br /&gt;
== 2020-12-08 ==&lt;br /&gt;
&lt;br /&gt;
* Chakuwiki にアクセスできなくなっているらしい&lt;br /&gt;
** 雰囲気はドメイン失効っぽいのだけど、renewPeriod ではなく inactive になっている&lt;br /&gt;
&lt;br /&gt;
== 2020-12-10 ==&lt;br /&gt;
&lt;br /&gt;
* セイキンショット、これほど人口に膾炙している（？）にも関わらず項目が存在しない&lt;br /&gt;
** VTuber もこういうのちゃんと記録していかないとダメなんだろうな&lt;br /&gt;
** 10年後には苦々しく感じるのかもしれないけど、記録に残りすらしないのは悲しい&lt;br /&gt;
* 返金覚悟で注文したリングフィットアドベンチャーが2日で発送されてしまった&lt;br /&gt;
** 取り寄せ10日だったのでクリスマス頃に届くかなあと思っていたのに&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=93</id>
		<title>利用者:Sigsign/diary/2020-12</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=93"/>
		<updated>2020-12-10T12:15:49Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2020-12-10 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__APPROVEDREVS__&lt;br /&gt;
&lt;br /&gt;
== 2020-12-03 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日は UserJS に専念していた&lt;br /&gt;
** JavaScript の非同期処理は難しい&lt;br /&gt;
** MediaWiki 1.35 以降なら Promise も使えるし、Vue も使えるんだけどな&lt;br /&gt;
** &amp;lt;code&amp;gt;$.deferred()&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;$.when()&amp;lt;/code&amp;gt; も悪いわけではないけれど…&lt;br /&gt;
* ApprovedRevs を少し試している&lt;br /&gt;
** FlaggedRevs の Pending Changes（査読保護）は優れているが、FlaggedRevs が複雑すぎる&lt;br /&gt;
** マジックワードで発動できる点を活かして、テンプレートと運用をうまく組み合わせれば化けそう&lt;br /&gt;
&lt;br /&gt;
== 2020-12-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日今日は[https://grayraven.jp/ パニグレ]をやっていた&lt;br /&gt;
** バトル開始時にルシアの瞳が紅く光るのが好き&lt;br /&gt;
** 極限回避で高速空間に入れるようになると爽快アクションとして楽しくなっていく&lt;br /&gt;
* マジックワード &amp;lt;code&amp;gt;_APPROVEDREVS_&amp;lt;/code&amp;gt; を試してみたが想像していた動きにならない&lt;br /&gt;
&lt;br /&gt;
== 2020-12-08 ==&lt;br /&gt;
&lt;br /&gt;
* Chakuwiki にアクセスできなくなっているらしい&lt;br /&gt;
** 雰囲気はドメイン失効っぽいのだけど、renewPeriod ではなく inactive になっている&lt;br /&gt;
&lt;br /&gt;
== 2020-12-10 ==&lt;br /&gt;
&lt;br /&gt;
* セイキンショット、これほど人口に膾炙している（？）にも関わらず項目が存在しない&lt;br /&gt;
** VTuber もこういうのちゃんと記録していかないとダメなんだろうな&lt;br /&gt;
** 10年後には苦々しく感じるのかもしれないけど、記録に残りすらしないのは悲しい&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=92</id>
		<title>利用者:Sigsign/diary/2020-12</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=92"/>
		<updated>2020-12-08T19:37:37Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__APPROVEDREVS__&lt;br /&gt;
&lt;br /&gt;
== 2020-12-03 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日は UserJS に専念していた&lt;br /&gt;
** JavaScript の非同期処理は難しい&lt;br /&gt;
** MediaWiki 1.35 以降なら Promise も使えるし、Vue も使えるんだけどな&lt;br /&gt;
** &amp;lt;code&amp;gt;$.deferred()&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;$.when()&amp;lt;/code&amp;gt; も悪いわけではないけれど…&lt;br /&gt;
* ApprovedRevs を少し試している&lt;br /&gt;
** FlaggedRevs の Pending Changes（査読保護）は優れているが、FlaggedRevs が複雑すぎる&lt;br /&gt;
** マジックワードで発動できる点を活かして、テンプレートと運用をうまく組み合わせれば化けそう&lt;br /&gt;
&lt;br /&gt;
== 2020-12-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日今日は[https://grayraven.jp/ パニグレ]をやっていた&lt;br /&gt;
** バトル開始時にルシアの瞳が紅く光るのが好き&lt;br /&gt;
** 極限回避で高速空間に入れるようになると爽快アクションとして楽しくなっていく&lt;br /&gt;
* マジックワード &amp;lt;code&amp;gt;_APPROVEDREVS_&amp;lt;/code&amp;gt; を試してみたが想像していた動きにならない&lt;br /&gt;
&lt;br /&gt;
== 2020-12-08 ==&lt;br /&gt;
&lt;br /&gt;
* Chakuwiki にアクセスできなくなっているらしい&lt;br /&gt;
** 雰囲気はドメイン失効っぽいのだけど、renewPeriod ではなく inactive になっている&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=91</id>
		<title>利用者:Sigsign/diary/2020-12</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=91"/>
		<updated>2020-12-08T19:36:49Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2020-12-08 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== 2020-12-03 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日は UserJS に専念していた&lt;br /&gt;
** JavaScript の非同期処理は難しい&lt;br /&gt;
** MediaWiki 1.35 以降なら Promise も使えるし、Vue も使えるんだけどな&lt;br /&gt;
** &amp;lt;code&amp;gt;$.deferred()&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;$.when()&amp;lt;/code&amp;gt; も悪いわけではないけれど…&lt;br /&gt;
* ApprovedRevs を少し試している&lt;br /&gt;
** FlaggedRevs の Pending Changes（査読保護）は優れているが、FlaggedRevs が複雑すぎる&lt;br /&gt;
** マジックワードで発動できる点を活かして、テンプレートと運用をうまく組み合わせれば化けそう&lt;br /&gt;
&lt;br /&gt;
== 2020-12-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日今日は[https://grayraven.jp/ パニグレ]をやっていた&lt;br /&gt;
** バトル開始時にルシアの瞳が紅く光るのが好き&lt;br /&gt;
** 極限回避で高速空間に入れるようになると爽快アクションとして楽しくなっていく&lt;br /&gt;
* マジックワード &amp;lt;code&amp;gt;_APPROVEDREVS_&amp;lt;/code&amp;gt; を試してみたが想像していた動きにならない&lt;br /&gt;
&lt;br /&gt;
== 2020-12-08 ==&lt;br /&gt;
&lt;br /&gt;
* Chakuwiki にアクセスできなくなっているらしい&lt;br /&gt;
** 雰囲気はドメイン失効っぽいのだけど、renewPeriod ではなく inactive になっている&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=90</id>
		<title>利用者:Sigsign/diary/2020-12</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=90"/>
		<updated>2020-12-07T16:44:32Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: 再度追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__APPROVEDREVS__&lt;br /&gt;
&lt;br /&gt;
== 2020-12-03 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日は UserJS に専念していた&lt;br /&gt;
** JavaScript の非同期処理は難しい&lt;br /&gt;
** MediaWiki 1.35 以降なら Promise も使えるし、Vue も使えるんだけどな&lt;br /&gt;
** &amp;lt;code&amp;gt;$.deferred()&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;$.when()&amp;lt;/code&amp;gt; も悪いわけではないけれど…&lt;br /&gt;
* ApprovedRevs を少し試している&lt;br /&gt;
** FlaggedRevs の Pending Changes（査読保護）は優れているが、FlaggedRevs が複雑すぎる&lt;br /&gt;
** マジックワードで発動できる点を活かして、テンプレートと運用をうまく組み合わせれば化けそう&lt;br /&gt;
&lt;br /&gt;
== 2020-12-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日今日は[https://grayraven.jp/ パニグレ]をやっていた&lt;br /&gt;
** バトル開始時にルシアの瞳が紅く光るのが好き&lt;br /&gt;
** 極限回避で高速空間に入れるようになると爽快アクションとして楽しくなっていく&lt;br /&gt;
* マジックワード &amp;lt;code&amp;gt;_APPROVEDREVS_&amp;lt;/code&amp;gt; を試してみたが想像していた動きにならない&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=89</id>
		<title>利用者:Sigsign/diary/2020-12</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=89"/>
		<updated>2020-12-07T16:43:23Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: __APPROVEDREVS__ を除去してみる&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== 2020-12-03 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日は UserJS に専念していた&lt;br /&gt;
** JavaScript の非同期処理は難しい&lt;br /&gt;
** MediaWiki 1.35 以降なら Promise も使えるし、Vue も使えるんだけどな&lt;br /&gt;
** &amp;lt;code&amp;gt;$.deferred()&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;$.when()&amp;lt;/code&amp;gt; も悪いわけではないけれど…&lt;br /&gt;
* ApprovedRevs を少し試している&lt;br /&gt;
** FlaggedRevs の Pending Changes（査読保護）は優れているが、FlaggedRevs が複雑すぎる&lt;br /&gt;
** マジックワードで発動できる点を活かして、テンプレートと運用をうまく組み合わせれば化けそう&lt;br /&gt;
&lt;br /&gt;
== 2020-12-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日今日は[https://grayraven.jp/ パニグレ]をやっていた&lt;br /&gt;
** バトル開始時にルシアの瞳が紅く光るのが好き&lt;br /&gt;
** 極限回避で高速空間に入れるようになると爽快アクションとして楽しくなっていく&lt;br /&gt;
* マジックワード &amp;lt;code&amp;gt;_APPROVEDREVS_&amp;lt;/code&amp;gt; を試してみたが想像していた動きにならない&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=88</id>
		<title>利用者:Sigsign/diary/2020-12</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=88"/>
		<updated>2020-12-07T16:42:38Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__APPROVEDREVS__&lt;br /&gt;
&lt;br /&gt;
== 2020-12-03 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日は UserJS に専念していた&lt;br /&gt;
** JavaScript の非同期処理は難しい&lt;br /&gt;
** MediaWiki 1.35 以降なら Promise も使えるし、Vue も使えるんだけどな&lt;br /&gt;
** &amp;lt;code&amp;gt;$.deferred()&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;$.when()&amp;lt;/code&amp;gt; も悪いわけではないけれど…&lt;br /&gt;
* ApprovedRevs を少し試している&lt;br /&gt;
** FlaggedRevs の Pending Changes（査読保護）は優れているが、FlaggedRevs が複雑すぎる&lt;br /&gt;
** マジックワードで発動できる点を活かして、テンプレートと運用をうまく組み合わせれば化けそう&lt;br /&gt;
&lt;br /&gt;
== 2020-12-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日今日は[https://grayraven.jp/ パニグレ]をやっていた&lt;br /&gt;
** バトル開始時にルシアの瞳が紅く光るのが好き&lt;br /&gt;
** 極限回避で高速空間に入れるようになると爽快アクションとして楽しくなっていく&lt;br /&gt;
* マジックワード &amp;lt;code&amp;gt;_APPROVEDREVS_&amp;lt;/code&amp;gt; を試してみたが想像していた動きにならない&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=87</id>
		<title>利用者:Sigsign/diary/2020-12</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=87"/>
		<updated>2020-12-07T16:38:50Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2020-12-07 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__APPROVEDREVS__&lt;br /&gt;
&lt;br /&gt;
== 2020-12-03 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日は UserJS に専念していた&lt;br /&gt;
** JavaScript の非同期処理は難しい&lt;br /&gt;
** MediaWiki 1.35 以降なら Promise も使えるし、Vue も使えるんだけどな&lt;br /&gt;
** &amp;lt;code&amp;gt;$.deferred()&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;$.when()&amp;lt;/code&amp;gt; も悪いわけではないけれど…&lt;br /&gt;
* ApprovedRevs を少し試している&lt;br /&gt;
** FlaggedRevs の Pending Changes（査読保護）は優れているが、FlaggedRevs が複雑すぎる&lt;br /&gt;
** マジックワードで発動できる点を活かして、テンプレートと運用をうまく組み合わせれば化けそう&lt;br /&gt;
&lt;br /&gt;
== 2020-12-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日今日は[https://grayraven.jp/ パニグレ]をやっていた&lt;br /&gt;
** バトル開始時にルシアの瞳が紅く光るのが好き&lt;br /&gt;
** 極限回避で高速空間に入れるようになると爽快アクションとして楽しくなっていく&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;__APPROVEDREVS__&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; を試してみたが想像していた動きにならない&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=86</id>
		<title>利用者:Sigsign/diary/2020-12</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=86"/>
		<updated>2020-12-07T15:49:17Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: __APPROVEDREVS__ を試す&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__APPROVEDREVS__&lt;br /&gt;
&lt;br /&gt;
== 2020-12-03 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日は UserJS に専念していた&lt;br /&gt;
** JavaScript の非同期処理は難しい&lt;br /&gt;
** MediaWiki 1.35 以降なら Promise も使えるし、Vue も使えるんだけどな&lt;br /&gt;
** &amp;lt;code&amp;gt;$.deferred()&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;$.when()&amp;lt;/code&amp;gt; も悪いわけではないけれど…&lt;br /&gt;
* ApprovedRevs を少し試している&lt;br /&gt;
** FlaggedRevs の Pending Changes（査読保護）は優れているが、FlaggedRevs が複雑すぎる&lt;br /&gt;
** マジックワードで発動できる点を活かして、テンプレートと運用をうまく組み合わせれば化けそう&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=85</id>
		<title>利用者:Sigsign/diary/2020-12</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=85"/>
		<updated>2020-12-03T19:18:23Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2020-12-03 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== 2020-12-03 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日は UserJS に専念していた&lt;br /&gt;
** JavaScript の非同期処理は難しい&lt;br /&gt;
** MediaWiki 1.35 以降なら Promise も使えるし、Vue も使えるんだけどな&lt;br /&gt;
** &amp;lt;code&amp;gt;$.deferred()&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;$.when()&amp;lt;/code&amp;gt; も悪いわけではないけれど…&lt;br /&gt;
* ApprovedRevs を少し試している&lt;br /&gt;
** FlaggedRevs の Pending Changes（査読保護）は優れているが、FlaggedRevs が複雑すぎる&lt;br /&gt;
** マジックワードで発動できる点を活かして、テンプレートと運用をうまく組み合わせれば化けそう&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Vpedia.png&amp;diff=84</id>
		<title>ファイル:Vpedia.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Vpedia.png&amp;diff=84"/>
		<updated>2020-12-03T16:44:26Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: Vpediaのアイコン&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 概要 ==&lt;br /&gt;
Vpediaのアイコン&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA:Sigsign%E3%81%AE%E6%97%A5%E8%A8%98&amp;diff=83</id>
		<title>カテゴリ:Sigsignの日記</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA:Sigsign%E3%81%AE%E6%97%A5%E8%A8%98&amp;diff=83"/>
		<updated>2020-12-03T15:46:22Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: 概要を追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[利用者:Sigsign|Sigsign]] が書いた日記。&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8&amp;diff=82</id>
		<title>メインページ</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8&amp;diff=82"/>
		<updated>2020-12-03T15:44:45Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: とりあえず更新&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SigWiki は [[利用者:Sigsign|Sigsign]] の個人ウィキです。&lt;br /&gt;
&lt;br /&gt;
主に MediaWiki や技術系のトピックについて記載しています。&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=81</id>
		<title>利用者:Sigsign/diary/2020-12</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=81"/>
		<updated>2020-12-03T15:18:55Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== 2020-12-03 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日は UserJS に専念していた&lt;br /&gt;
** JavaScript の非同期処理は難しい&lt;br /&gt;
** MediaWiki 1.35 以降なら Promise も使えるし、Vue も使えるんだけどな&lt;br /&gt;
** &amp;lt;code&amp;gt;$.deferred()&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;$.when()&amp;lt;/code&amp;gt; も悪いわけではないけれど…&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=80</id>
		<title>利用者:Sigsign/diary/2020-12</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-12&amp;diff=80"/>
		<updated>2020-12-03T15:18:11Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2020-12-03 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 2020-12-03 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日は UserJS に専念していた&lt;br /&gt;
** JavaScript の非同期処理は難しい&lt;br /&gt;
** MediaWiki 1.35 以降なら Promise も使えるし、Vue も使えるんだけどな&lt;br /&gt;
** &amp;lt;code&amp;gt;$.deferred()&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;$.when()&amp;lt;/code&amp;gt; も悪いわけではないけれど…&lt;br /&gt;
&lt;br /&gt;
[[カテゴリ:Sigsignの日記]]&lt;br /&gt;
__目次非表示__&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-11&amp;diff=79</id>
		<title>利用者:Sigsign/diary/2020-11</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-11&amp;diff=79"/>
		<updated>2020-11-26T18:00:14Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2020-11-26 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NEWSECTIONLINK__&lt;br /&gt;
[[Category:Sigsignの日記]]&lt;br /&gt;
&lt;br /&gt;
==2020-11-02==&lt;br /&gt;
&lt;br /&gt;
*なんとなく日記を書き始めてみる&lt;br /&gt;
*個人ウィキを作っては壊しているような気がする（ここはたぶん四代目）&lt;br /&gt;
**MediaWiki は隠し事ができないので、恥ずかしいミスをすると心機一転したくなってしまう&lt;br /&gt;
**今回は SQLite から MariaDB の変更に伴う新設&lt;br /&gt;
***前回や前々回に比べればまともな理由&lt;br /&gt;
*以前は XREA の g 系サーバーで SQLite を使って動かしていたが複数の問題があった&lt;br /&gt;
**SQLite だと動かない拡張機能がそこそこある&lt;br /&gt;
**XMLReader が PHP のバージョンによって有効化されていたり無効化されていたりする&lt;br /&gt;
***XMLReader がないと記事のインポートができない&lt;br /&gt;
***XMLReader が動く唯一のバージョンが PHP 7.0 だが、MediaWiki 1.34 からサポート対象外になった&lt;br /&gt;
****MediaWiki 1.31 (LTS) を使い続けるのは厳しい&lt;br /&gt;
**→ VPS 上に PHP 7.4 + MariaDB の環境を作って MediaWiki 1.35 に乗り換えることにした&lt;br /&gt;
*CloudFlare を利用しているのでレスポンスはそれほど悪くない&lt;br /&gt;
*本当は拡張機能を入れたり設定を弄ったりしたいのだが、突然身内に不幸があって今日明日は無理そう&lt;br /&gt;
&lt;br /&gt;
==2020-11-03==&lt;br /&gt;
&lt;br /&gt;
* 昨日は Mobilefrontend と MinervaNeue を入れてから寝た&lt;br /&gt;
** 今のうちに dog-fooding しておこうという意図&lt;br /&gt;
* VisualEditor on mobile は何かと課題にぶつかる&lt;br /&gt;
** 新しい節を追加するのが難しい（ちょっと誤字脱字を直すくらいしか使い道がない）&lt;br /&gt;
** 箇条書きも書きづらい&lt;br /&gt;
*** &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;  （アスタリスク + スペース）で箇条書きに変換できることはできる&lt;br /&gt;
*** でもインデントを付ける方法がわからない…&lt;br /&gt;
** VisualEditor と SourceEditor で要約欄のデフォルトが異なっている&lt;br /&gt;
*** SourceEditor は &amp;lt;code&amp;gt;/* 節名 */&amp;lt;/code&amp;gt; が自動的に入力されるが、VisualEditor はそうならないので不便&lt;br /&gt;
* Fenix (Firefox for Android) でキャレットの位置が飛ぶ現象を観測している&lt;br /&gt;
** VisualEditor でも SourceEditor でも発生しているので Fenix or ATOK のバグかなあ…？&lt;br /&gt;
&lt;br /&gt;
== 2020-11-04 ==&lt;br /&gt;
&lt;br /&gt;
* モバイル版の SourceEditor は単純な &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;textarea&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ではないようだ&lt;br /&gt;
** &amp;lt;code&amp;gt;MobileFrontend/src/mobile.editor.overlay&amp;lt;/code&amp;gt; が何かしているらしい&lt;br /&gt;
** VE ならともかく MobileFrontend のバグを追いかけたくない気持ち&lt;br /&gt;
&lt;br /&gt;
== 2020-11-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日は&amp;lt;code&amp;gt;stale-while-revalidate&amp;lt;/code&amp;gt;(SWR)について調べていた&lt;br /&gt;
** そもそも長期間の&amp;lt;code&amp;gt;max-age&amp;lt;/code&amp;gt;にはあまり意味がないらしい&lt;br /&gt;
*** ローカルキャッシュは2日程度で消えてしまうらしい[https://blog.jxck.io/entries/2016-04-16/stale-while-revalidate.html#%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3]&lt;br /&gt;
*** キャッシュの容量上限は決まっていて、古いキャッシュから消されていくため&lt;br /&gt;
** CloudflareはSWRに対応していない&lt;br /&gt;
*** まあCDN/Reverse Proxyの挙動は直感的ではないので、これ以上複雑にすると挙動が理解できなくなってしまいそう&lt;br /&gt;
** 効果があるのはおそらくCSS/JSだろう&lt;br /&gt;
*** ということで&amp;lt;code&amp;gt;load.php&amp;lt;/code&amp;gt;限定でSWRを追加してみた&lt;br /&gt;
*** 画像はCloudflareに任せてしまうことにする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-08 ==&lt;br /&gt;
&lt;br /&gt;
* Cloudflareのファイアウォールルールについて調べた&lt;br /&gt;
** 「脅威レベル」の閾値がよくわからない&lt;br /&gt;
*** [https://support.cloudflare.com/hc/en-us/articles/200170056-Understanding-the-Cloudflare-Security-Level ドキュメント]によると、高が1以上、標準が15以上、低が25以上、基本的にOFFが50以上でチャレンジ画面になるらしい&lt;br /&gt;
** &amp;lt;code&amp;gt;ip.geoip.continent&amp;lt;/code&amp;gt;は[https://community.cloudflare.com/t/getting-error-ip-geoip-continent/214864 Businessプラン以上が必要だがドキュメントには記載がない]とのこと&lt;br /&gt;
** スパム対策としてちょっと厳しめに設定してみた&lt;br /&gt;
* 昨日設定したSWRが想定通りに機能していて感動している&lt;br /&gt;
* 拡張機能としてEcho、LoginNotify、Thanksなどを入れてみた&lt;br /&gt;
* Opcacheのfile cachingを有効にしてみた&lt;br /&gt;
** 心なしかキビキビ動くようになった気がする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-09 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;php-wikidiff2&amp;lt;/code&amp;gt;を導入した&lt;br /&gt;
* 拡張機能としてCheckUser、TemplateStyles、Abuse Filter、AntiSpoof、TorBlock、RevisionSlider、SandboxLinkを入れた&lt;br /&gt;
** StopForumSpamも入れるべきかな&lt;br /&gt;
* CheckUserに&amp;lt;code&amp;gt;Special:Investigate&amp;lt;/code&amp;gt;が追加されていた（まだβ版の模様）&lt;br /&gt;
* このウィキはできるだけ標準に寄せて運用する予定だったが、そもそも利用者が自分しかいないのだから、もっと冒険してもいいような気もしてきた&lt;br /&gt;
&lt;br /&gt;
== 2020-11-10 ==&lt;br /&gt;
&lt;br /&gt;
* そろそろ旧ウィキからデータをインポートしたいところ&lt;br /&gt;
* 新しいテーマを作りたいが Timeless が mustache に対応していないので面倒&lt;br /&gt;
** mustache に対応していて、Vector/MinervaNeue ほど複雑じゃなくて、改変しやすいテーマが欲しい&lt;br /&gt;
** Vector がごちゃごちゃしていて見づらいのは確かにそうで、もっとシンプルなテーマにしたくなる&lt;br /&gt;
* WebAuthn を入れたり、翻訳にちょっと手を出したりしている&lt;br /&gt;
** OATHAuth の翻訳をどうするか悩む&lt;br /&gt;
* FlaggedRevs は WMF で動いている実績があるし、ApprovedRevs はコンパクトでよさそう&lt;br /&gt;
** Core が査読に相当する機能を持つべきだと思うんだよな&lt;br /&gt;
** ApprovedRevs には PendingChanges に相当する保護機能はないが、マジックワードを使えば同じような運用はできそう&lt;br /&gt;
* StopForumSpam は out of the box な拡張機能ではなく、何やら設定が必要らしい&lt;br /&gt;
** Mediawiki.org の解説ではスパムを報告する機能があるはずだが、コードを読む限りは見当たらない&lt;br /&gt;
** 現在は IP アドレス一覧をロードして、ビットマスクを生成・利用する機能に限定されているようだ&lt;br /&gt;
** 大半のウィキは SFS の API を叩いてスパムを弾いてくれることを期待するんじゃないか&lt;br /&gt;
*** まあIPアドレスを外部のサービスに露出させるのはプライバシー上問題かもしれないが…&lt;br /&gt;
** DNSブラックリストのほうが経済的かもしれない&lt;br /&gt;
&lt;br /&gt;
== 2020-11-11 ==&lt;br /&gt;
&lt;br /&gt;
* ジョブキューを systemd-timer で実行するようにした&lt;br /&gt;
** 久々にシェルスクリプトを書いたら何も覚えてなくて困った&lt;br /&gt;
** systemd は journalctl がとにかく便利、-u オプションが最高&lt;br /&gt;
** ついでに &amp;lt;code&amp;gt;loadExitNodes.php&amp;lt;/code&amp;gt; も実行している&lt;br /&gt;
&lt;br /&gt;
== 2020-11-12 ==&lt;br /&gt;
* 昨日は旧ウィキから記事をインポートした&lt;br /&gt;
** 管理するウィキがまた一つ減った&lt;br /&gt;
** 放置しているウィキがまだあるはずなので、それらを早めに集約したい&lt;br /&gt;
* [[特別:Import|Special:Import]] はインターウィキ接頭辞を入力しないとインポートしてくれない&lt;br /&gt;
** &amp;lt;code&amp;gt;importDump.php&amp;lt;/code&amp;gt; を使うのは面倒なんだけどなあ&lt;br /&gt;
* もう一つ管理するウィキを減らした&lt;br /&gt;
** カスタマイズした Skin:Vector と Extension:YouTube があったことにファイルを消してから気付いた…&lt;br /&gt;
** Skin:Vector はどうせマージできなかっただろうから諦めよう&lt;br /&gt;
&lt;br /&gt;
== 2020-11-13 ==&lt;br /&gt;
&lt;br /&gt;
* Cloudflare は &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; を見ずに URL だけでキャッシュの可否を決定するらしい&lt;br /&gt;
** [[User:Sigsign/vector.css]] が DYNAMIC ではなくキャッシュされてしまった（CSS 扱いになっている）&lt;br /&gt;
*** 通常のページは拡張子が付かないため assets と誤認されることがなく見逃していた&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgCdnMaxAge = 0;&amp;lt;/code&amp;gt; を設定すると &amp;lt;code&amp;gt;Cache-Control: private&amp;lt;/code&amp;gt; が付与されて BYPASS となる&lt;br /&gt;
*** Squid / Varnish は &amp;lt;code&amp;gt;Vary&amp;lt;/code&amp;gt; ヘッダーを考慮してくれるのでキャッシュしてくれたほうがありがたい&lt;br /&gt;
*** Cloudflare は考慮してくれないのでキャッシュされると困る&lt;br /&gt;
&lt;br /&gt;
== 2020-11-14 ==&lt;br /&gt;
&lt;br /&gt;
* 今日は寝不足のまま親戚行事に出て、昼過ぎから爆睡していた&lt;br /&gt;
* &amp;lt;code&amp;gt;action=raw&amp;lt;/code&amp;gt; ってキャッシュの側面で見ると最悪では…？&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgForcedRawSMaxage&amp;lt;/code&amp;gt; も標準では 300 秒（5分）しかないし&lt;br /&gt;
*** &amp;lt;code&amp;gt;$wgCdnMaxAge&amp;lt;/code&amp;gt;が 18000 秒（5時間）でこれが 300 秒なのはちょっと納得できない&lt;br /&gt;
*** &amp;lt;code&amp;gt;oldid&amp;lt;/code&amp;gt; 指定したら ResourceLoader みたいに 30 日間キャッシュしてほしい&lt;br /&gt;
* マニュアルを見たら &amp;lt;code&amp;gt;maxage&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;smaxage&amp;lt;/code&amp;gt; パラメーターが使えるらしい&lt;br /&gt;
** ここでは動作したが、ウィキペディア / Miraheze では効かなかった&lt;br /&gt;
** MWF は Varnish で &amp;lt;code&amp;gt;cache-control: private, s-maxage=0, max-age=0, must-revalidate&amp;lt;/code&amp;gt; に上書きしている模様&lt;br /&gt;
** [https://phabricator.wikimedia.org/T71460 T71460] によると &amp;quot;security and privacy reasons&amp;quot; とのこと&lt;br /&gt;
*** &amp;lt;code&amp;gt;max-age=0&amp;lt;/code&amp;gt; は no-store を意味しないし、毎回ダウンロードするわけじゃないよ！ との主張&lt;br /&gt;
*** いや、304 が返ってくるまでに数百 ms かかるのが遅い（し計算資源の無駄）という話なんですよ&lt;br /&gt;
*** [https://phabricator.wikimedia.org/T112937 T112937] のおかげで UserJS はクリーンになっているんじゃないのか&lt;br /&gt;
&lt;br /&gt;
== 2020-11-15 ==&lt;br /&gt;
&lt;br /&gt;
* UserJS を書いていて mw.html はクールに書けて便利だなーと思っていたら出力が String で悲しい&lt;br /&gt;
** Node を返してくれれば &amp;lt;code&amp;gt;appendChild()&amp;lt;/code&amp;gt; が使えるのに…&lt;br /&gt;
** &amp;lt;code&amp;gt;innerHTML()&amp;lt;/code&amp;gt; は死すべし、慈悲はない&lt;br /&gt;
* マジックワード / パーサー関数は &amp;lt;code&amp;gt;api.parse()&amp;lt;/code&amp;gt; で展開できる&lt;br /&gt;
* 最近ようやく本に書かれているプラクティスを実践できるようになってきた気がする&lt;br /&gt;
* 人のコードが汚いのか、自分の読解力が落ちているのか…&lt;br /&gt;
** コード読解力の高い人を改めて尊敬する&lt;br /&gt;
&lt;br /&gt;
== 2020-11-17 ==&lt;br /&gt;
&lt;br /&gt;
* Extension:DynamicPageList3 が MediaWiki 1.35 に対応できてなくて、いろんなところで阿鼻叫喚になっている&lt;br /&gt;
** コード読んでるけど、MW にはプリペアドステートメント的な仕組みはないんですか…？&lt;br /&gt;
*** 文字列結合でクエリを組み立てないでほしい&lt;br /&gt;
** コード読んで理解したが、クエリを組み立てているのではなく大元の条件式を動的に生成しているんだな&lt;br /&gt;
*** DPL は SQL を隠ぺいしているだけで、実質的には DML になっている&lt;br /&gt;
** 概ね直りそうな予感はした&lt;br /&gt;
*** INNER JOIN と WHERE ってやってること一緒なのか&lt;br /&gt;
*** 思わぬ学びを得たが、やっぱり SQL はよくわからない&lt;br /&gt;
* DPL3 は classes/Query.php と classes/Article.php を直せばいい（はず）&lt;br /&gt;
** FROM に actor を足して、WHERE actor.actor_id = XX.X_user_id で結合する&lt;br /&gt;
* PukiWiki から移ってきたときは「RDB を使ってるから早くなる」と思っていたのに…&lt;br /&gt;
** PukiWiki にも tracker という DPL3 みたいな無茶をするプラグインがある&lt;br /&gt;
** 今思うと、tracker はキャッシュすらしてないのによく動いてたな&lt;br /&gt;
&lt;br /&gt;
== 2020-11-18 ==&lt;br /&gt;
&lt;br /&gt;
* もう今月も後半になってきた&lt;br /&gt;
** そろそろサーバーの整理をしなきゃ…&lt;br /&gt;
*** メールサーバーの移行作業だけはやりたくなかったのに&lt;br /&gt;
*** 構築したのは何年も前なので記憶がない&lt;br /&gt;
* &amp;lt;code&amp;gt;$wgMiserMode&amp;lt;/code&amp;gt; に対応する準備をした&lt;br /&gt;
** 小さい Wiki に効果があるのかは疑問&lt;br /&gt;
* ついでに Sitemap や Robot policy 周りを整備した&lt;br /&gt;
** テンプレートやモジュールが検索に引っかかってもあまり嬉しくないし&lt;br /&gt;
** 設定が雑だと MediaWiki 名前空間も引っかかったりする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-19 ==&lt;br /&gt;
&lt;br /&gt;
* Extension:Editcount も壊れているらしい？&lt;br /&gt;
** ActorMigration をきちんと使っている行儀のいいコードに見えるような…&lt;br /&gt;
** いや、&amp;lt;code&amp;gt;COUNT(*)&amp;lt;/code&amp;gt; するコードは行儀がいいとは言えない&lt;br /&gt;
* メイリオの斜体が効かないのは知っていたが、MediaWiki が対策していないのは知らなかった&lt;br /&gt;
** Firefox は &amp;lt;code&amp;gt;font-family: Meiryo&amp;lt;/code&amp;gt; だけで斜体になるが、Chrome は &amp;lt;code&amp;gt;@font-face&amp;lt;/code&amp;gt; を使わないと斜体にならない&lt;br /&gt;
&lt;br /&gt;
== 2020-11-20 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;font-family&amp;lt;/code&amp;gt; 周りのあれこれを設定した&lt;br /&gt;
* 最近、あまりサーバーのお世話ができていないので明日明後日は頑張ろう&lt;br /&gt;
* Extension:Editcount は壊れていなかった（別の問題だった）ようだ&lt;br /&gt;
&lt;br /&gt;
== 2020-11-23 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日はサーバーのお世話をしていたのだが、進捗があまりよろしくない&lt;br /&gt;
* 一昨日は忙しかったし、昨日は気が付くと終わっていたし、今日は親戚付き合いがあり…&lt;br /&gt;
&lt;br /&gt;
== 2020-11-25 ==&lt;br /&gt;
&lt;br /&gt;
* UserJS を書くのは楽しいが、時間がかかりすぎて費用対効果があまりよくない&lt;br /&gt;
** もうちょっとサクッと書けるようになりたい&lt;br /&gt;
&lt;br /&gt;
== 2020-11-26 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日は c のデータベースを切り替えて、拡張機能を一通りインストールした&lt;br /&gt;
* スキンの名前を決めるのに一苦労した&lt;br /&gt;
** さすがに Daifuku は直球すぎるし…ということで Volt にした&lt;br /&gt;
* MediaWiki 1.35 と 1.36 ですでに &amp;lt;code&amp;gt;SkinMustache.php&amp;lt;/code&amp;gt; が全然違うんだけど…どういうことなの…&lt;br /&gt;
** これは MediaWiki の悪いところで、スキンと &amp;lt;code&amp;gt;SkinTemplate (SkinMustache)&amp;lt;/code&amp;gt; が密結合していて双方を読まないと全体像がわからない&lt;br /&gt;
** どうやら現在の &amp;lt;code&amp;gt;SkinMustache extends SkinTemplate extends Skin&amp;lt;/code&amp;gt; の構造を &amp;lt;code&amp;gt;SkinMustache extends Skin&amp;lt;/code&amp;gt; に置き換えようと頑張っているらしい&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-11&amp;diff=78</id>
		<title>利用者:Sigsign/diary/2020-11</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-11&amp;diff=78"/>
		<updated>2020-11-25T16:38:40Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2020-11-25 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NEWSECTIONLINK__&lt;br /&gt;
[[Category:Sigsignの日記]]&lt;br /&gt;
&lt;br /&gt;
==2020-11-02==&lt;br /&gt;
&lt;br /&gt;
*なんとなく日記を書き始めてみる&lt;br /&gt;
*個人ウィキを作っては壊しているような気がする（ここはたぶん四代目）&lt;br /&gt;
**MediaWiki は隠し事ができないので、恥ずかしいミスをすると心機一転したくなってしまう&lt;br /&gt;
**今回は SQLite から MariaDB の変更に伴う新設&lt;br /&gt;
***前回や前々回に比べればまともな理由&lt;br /&gt;
*以前は XREA の g 系サーバーで SQLite を使って動かしていたが複数の問題があった&lt;br /&gt;
**SQLite だと動かない拡張機能がそこそこある&lt;br /&gt;
**XMLReader が PHP のバージョンによって有効化されていたり無効化されていたりする&lt;br /&gt;
***XMLReader がないと記事のインポートができない&lt;br /&gt;
***XMLReader が動く唯一のバージョンが PHP 7.0 だが、MediaWiki 1.34 からサポート対象外になった&lt;br /&gt;
****MediaWiki 1.31 (LTS) を使い続けるのは厳しい&lt;br /&gt;
**→ VPS 上に PHP 7.4 + MariaDB の環境を作って MediaWiki 1.35 に乗り換えることにした&lt;br /&gt;
*CloudFlare を利用しているのでレスポンスはそれほど悪くない&lt;br /&gt;
*本当は拡張機能を入れたり設定を弄ったりしたいのだが、突然身内に不幸があって今日明日は無理そう&lt;br /&gt;
&lt;br /&gt;
==2020-11-03==&lt;br /&gt;
&lt;br /&gt;
* 昨日は Mobilefrontend と MinervaNeue を入れてから寝た&lt;br /&gt;
** 今のうちに dog-fooding しておこうという意図&lt;br /&gt;
* VisualEditor on mobile は何かと課題にぶつかる&lt;br /&gt;
** 新しい節を追加するのが難しい（ちょっと誤字脱字を直すくらいしか使い道がない）&lt;br /&gt;
** 箇条書きも書きづらい&lt;br /&gt;
*** &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;  （アスタリスク + スペース）で箇条書きに変換できることはできる&lt;br /&gt;
*** でもインデントを付ける方法がわからない…&lt;br /&gt;
** VisualEditor と SourceEditor で要約欄のデフォルトが異なっている&lt;br /&gt;
*** SourceEditor は &amp;lt;code&amp;gt;/* 節名 */&amp;lt;/code&amp;gt; が自動的に入力されるが、VisualEditor はそうならないので不便&lt;br /&gt;
* Fenix (Firefox for Android) でキャレットの位置が飛ぶ現象を観測している&lt;br /&gt;
** VisualEditor でも SourceEditor でも発生しているので Fenix or ATOK のバグかなあ…？&lt;br /&gt;
&lt;br /&gt;
== 2020-11-04 ==&lt;br /&gt;
&lt;br /&gt;
* モバイル版の SourceEditor は単純な &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;textarea&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ではないようだ&lt;br /&gt;
** &amp;lt;code&amp;gt;MobileFrontend/src/mobile.editor.overlay&amp;lt;/code&amp;gt; が何かしているらしい&lt;br /&gt;
** VE ならともかく MobileFrontend のバグを追いかけたくない気持ち&lt;br /&gt;
&lt;br /&gt;
== 2020-11-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日は&amp;lt;code&amp;gt;stale-while-revalidate&amp;lt;/code&amp;gt;(SWR)について調べていた&lt;br /&gt;
** そもそも長期間の&amp;lt;code&amp;gt;max-age&amp;lt;/code&amp;gt;にはあまり意味がないらしい&lt;br /&gt;
*** ローカルキャッシュは2日程度で消えてしまうらしい[https://blog.jxck.io/entries/2016-04-16/stale-while-revalidate.html#%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3]&lt;br /&gt;
*** キャッシュの容量上限は決まっていて、古いキャッシュから消されていくため&lt;br /&gt;
** CloudflareはSWRに対応していない&lt;br /&gt;
*** まあCDN/Reverse Proxyの挙動は直感的ではないので、これ以上複雑にすると挙動が理解できなくなってしまいそう&lt;br /&gt;
** 効果があるのはおそらくCSS/JSだろう&lt;br /&gt;
*** ということで&amp;lt;code&amp;gt;load.php&amp;lt;/code&amp;gt;限定でSWRを追加してみた&lt;br /&gt;
*** 画像はCloudflareに任せてしまうことにする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-08 ==&lt;br /&gt;
&lt;br /&gt;
* Cloudflareのファイアウォールルールについて調べた&lt;br /&gt;
** 「脅威レベル」の閾値がよくわからない&lt;br /&gt;
*** [https://support.cloudflare.com/hc/en-us/articles/200170056-Understanding-the-Cloudflare-Security-Level ドキュメント]によると、高が1以上、標準が15以上、低が25以上、基本的にOFFが50以上でチャレンジ画面になるらしい&lt;br /&gt;
** &amp;lt;code&amp;gt;ip.geoip.continent&amp;lt;/code&amp;gt;は[https://community.cloudflare.com/t/getting-error-ip-geoip-continent/214864 Businessプラン以上が必要だがドキュメントには記載がない]とのこと&lt;br /&gt;
** スパム対策としてちょっと厳しめに設定してみた&lt;br /&gt;
* 昨日設定したSWRが想定通りに機能していて感動している&lt;br /&gt;
* 拡張機能としてEcho、LoginNotify、Thanksなどを入れてみた&lt;br /&gt;
* Opcacheのfile cachingを有効にしてみた&lt;br /&gt;
** 心なしかキビキビ動くようになった気がする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-09 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;php-wikidiff2&amp;lt;/code&amp;gt;を導入した&lt;br /&gt;
* 拡張機能としてCheckUser、TemplateStyles、Abuse Filter、AntiSpoof、TorBlock、RevisionSlider、SandboxLinkを入れた&lt;br /&gt;
** StopForumSpamも入れるべきかな&lt;br /&gt;
* CheckUserに&amp;lt;code&amp;gt;Special:Investigate&amp;lt;/code&amp;gt;が追加されていた（まだβ版の模様）&lt;br /&gt;
* このウィキはできるだけ標準に寄せて運用する予定だったが、そもそも利用者が自分しかいないのだから、もっと冒険してもいいような気もしてきた&lt;br /&gt;
&lt;br /&gt;
== 2020-11-10 ==&lt;br /&gt;
&lt;br /&gt;
* そろそろ旧ウィキからデータをインポートしたいところ&lt;br /&gt;
* 新しいテーマを作りたいが Timeless が mustache に対応していないので面倒&lt;br /&gt;
** mustache に対応していて、Vector/MinervaNeue ほど複雑じゃなくて、改変しやすいテーマが欲しい&lt;br /&gt;
** Vector がごちゃごちゃしていて見づらいのは確かにそうで、もっとシンプルなテーマにしたくなる&lt;br /&gt;
* WebAuthn を入れたり、翻訳にちょっと手を出したりしている&lt;br /&gt;
** OATHAuth の翻訳をどうするか悩む&lt;br /&gt;
* FlaggedRevs は WMF で動いている実績があるし、ApprovedRevs はコンパクトでよさそう&lt;br /&gt;
** Core が査読に相当する機能を持つべきだと思うんだよな&lt;br /&gt;
** ApprovedRevs には PendingChanges に相当する保護機能はないが、マジックワードを使えば同じような運用はできそう&lt;br /&gt;
* StopForumSpam は out of the box な拡張機能ではなく、何やら設定が必要らしい&lt;br /&gt;
** Mediawiki.org の解説ではスパムを報告する機能があるはずだが、コードを読む限りは見当たらない&lt;br /&gt;
** 現在は IP アドレス一覧をロードして、ビットマスクを生成・利用する機能に限定されているようだ&lt;br /&gt;
** 大半のウィキは SFS の API を叩いてスパムを弾いてくれることを期待するんじゃないか&lt;br /&gt;
*** まあIPアドレスを外部のサービスに露出させるのはプライバシー上問題かもしれないが…&lt;br /&gt;
** DNSブラックリストのほうが経済的かもしれない&lt;br /&gt;
&lt;br /&gt;
== 2020-11-11 ==&lt;br /&gt;
&lt;br /&gt;
* ジョブキューを systemd-timer で実行するようにした&lt;br /&gt;
** 久々にシェルスクリプトを書いたら何も覚えてなくて困った&lt;br /&gt;
** systemd は journalctl がとにかく便利、-u オプションが最高&lt;br /&gt;
** ついでに &amp;lt;code&amp;gt;loadExitNodes.php&amp;lt;/code&amp;gt; も実行している&lt;br /&gt;
&lt;br /&gt;
== 2020-11-12 ==&lt;br /&gt;
* 昨日は旧ウィキから記事をインポートした&lt;br /&gt;
** 管理するウィキがまた一つ減った&lt;br /&gt;
** 放置しているウィキがまだあるはずなので、それらを早めに集約したい&lt;br /&gt;
* [[特別:Import|Special:Import]] はインターウィキ接頭辞を入力しないとインポートしてくれない&lt;br /&gt;
** &amp;lt;code&amp;gt;importDump.php&amp;lt;/code&amp;gt; を使うのは面倒なんだけどなあ&lt;br /&gt;
* もう一つ管理するウィキを減らした&lt;br /&gt;
** カスタマイズした Skin:Vector と Extension:YouTube があったことにファイルを消してから気付いた…&lt;br /&gt;
** Skin:Vector はどうせマージできなかっただろうから諦めよう&lt;br /&gt;
&lt;br /&gt;
== 2020-11-13 ==&lt;br /&gt;
&lt;br /&gt;
* Cloudflare は &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; を見ずに URL だけでキャッシュの可否を決定するらしい&lt;br /&gt;
** [[User:Sigsign/vector.css]] が DYNAMIC ではなくキャッシュされてしまった（CSS 扱いになっている）&lt;br /&gt;
*** 通常のページは拡張子が付かないため assets と誤認されることがなく見逃していた&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgCdnMaxAge = 0;&amp;lt;/code&amp;gt; を設定すると &amp;lt;code&amp;gt;Cache-Control: private&amp;lt;/code&amp;gt; が付与されて BYPASS となる&lt;br /&gt;
*** Squid / Varnish は &amp;lt;code&amp;gt;Vary&amp;lt;/code&amp;gt; ヘッダーを考慮してくれるのでキャッシュしてくれたほうがありがたい&lt;br /&gt;
*** Cloudflare は考慮してくれないのでキャッシュされると困る&lt;br /&gt;
&lt;br /&gt;
== 2020-11-14 ==&lt;br /&gt;
&lt;br /&gt;
* 今日は寝不足のまま親戚行事に出て、昼過ぎから爆睡していた&lt;br /&gt;
* &amp;lt;code&amp;gt;action=raw&amp;lt;/code&amp;gt; ってキャッシュの側面で見ると最悪では…？&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgForcedRawSMaxage&amp;lt;/code&amp;gt; も標準では 300 秒（5分）しかないし&lt;br /&gt;
*** &amp;lt;code&amp;gt;$wgCdnMaxAge&amp;lt;/code&amp;gt;が 18000 秒（5時間）でこれが 300 秒なのはちょっと納得できない&lt;br /&gt;
*** &amp;lt;code&amp;gt;oldid&amp;lt;/code&amp;gt; 指定したら ResourceLoader みたいに 30 日間キャッシュしてほしい&lt;br /&gt;
* マニュアルを見たら &amp;lt;code&amp;gt;maxage&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;smaxage&amp;lt;/code&amp;gt; パラメーターが使えるらしい&lt;br /&gt;
** ここでは動作したが、ウィキペディア / Miraheze では効かなかった&lt;br /&gt;
** MWF は Varnish で &amp;lt;code&amp;gt;cache-control: private, s-maxage=0, max-age=0, must-revalidate&amp;lt;/code&amp;gt; に上書きしている模様&lt;br /&gt;
** [https://phabricator.wikimedia.org/T71460 T71460] によると &amp;quot;security and privacy reasons&amp;quot; とのこと&lt;br /&gt;
*** &amp;lt;code&amp;gt;max-age=0&amp;lt;/code&amp;gt; は no-store を意味しないし、毎回ダウンロードするわけじゃないよ！ との主張&lt;br /&gt;
*** いや、304 が返ってくるまでに数百 ms かかるのが遅い（し計算資源の無駄）という話なんですよ&lt;br /&gt;
*** [https://phabricator.wikimedia.org/T112937 T112937] のおかげで UserJS はクリーンになっているんじゃないのか&lt;br /&gt;
&lt;br /&gt;
== 2020-11-15 ==&lt;br /&gt;
&lt;br /&gt;
* UserJS を書いていて mw.html はクールに書けて便利だなーと思っていたら出力が String で悲しい&lt;br /&gt;
** Node を返してくれれば &amp;lt;code&amp;gt;appendChild()&amp;lt;/code&amp;gt; が使えるのに…&lt;br /&gt;
** &amp;lt;code&amp;gt;innerHTML()&amp;lt;/code&amp;gt; は死すべし、慈悲はない&lt;br /&gt;
* マジックワード / パーサー関数は &amp;lt;code&amp;gt;api.parse()&amp;lt;/code&amp;gt; で展開できる&lt;br /&gt;
* 最近ようやく本に書かれているプラクティスを実践できるようになってきた気がする&lt;br /&gt;
* 人のコードが汚いのか、自分の読解力が落ちているのか…&lt;br /&gt;
** コード読解力の高い人を改めて尊敬する&lt;br /&gt;
&lt;br /&gt;
== 2020-11-17 ==&lt;br /&gt;
&lt;br /&gt;
* Extension:DynamicPageList3 が MediaWiki 1.35 に対応できてなくて、いろんなところで阿鼻叫喚になっている&lt;br /&gt;
** コード読んでるけど、MW にはプリペアドステートメント的な仕組みはないんですか…？&lt;br /&gt;
*** 文字列結合でクエリを組み立てないでほしい&lt;br /&gt;
** コード読んで理解したが、クエリを組み立てているのではなく大元の条件式を動的に生成しているんだな&lt;br /&gt;
*** DPL は SQL を隠ぺいしているだけで、実質的には DML になっている&lt;br /&gt;
** 概ね直りそうな予感はした&lt;br /&gt;
*** INNER JOIN と WHERE ってやってること一緒なのか&lt;br /&gt;
*** 思わぬ学びを得たが、やっぱり SQL はよくわからない&lt;br /&gt;
* DPL3 は classes/Query.php と classes/Article.php を直せばいい（はず）&lt;br /&gt;
** FROM に actor を足して、WHERE actor.actor_id = XX.X_user_id で結合する&lt;br /&gt;
* PukiWiki から移ってきたときは「RDB を使ってるから早くなる」と思っていたのに…&lt;br /&gt;
** PukiWiki にも tracker という DPL3 みたいな無茶をするプラグインがある&lt;br /&gt;
** 今思うと、tracker はキャッシュすらしてないのによく動いてたな&lt;br /&gt;
&lt;br /&gt;
== 2020-11-18 ==&lt;br /&gt;
&lt;br /&gt;
* もう今月も後半になってきた&lt;br /&gt;
** そろそろサーバーの整理をしなきゃ…&lt;br /&gt;
*** メールサーバーの移行作業だけはやりたくなかったのに&lt;br /&gt;
*** 構築したのは何年も前なので記憶がない&lt;br /&gt;
* &amp;lt;code&amp;gt;$wgMiserMode&amp;lt;/code&amp;gt; に対応する準備をした&lt;br /&gt;
** 小さい Wiki に効果があるのかは疑問&lt;br /&gt;
* ついでに Sitemap や Robot policy 周りを整備した&lt;br /&gt;
** テンプレートやモジュールが検索に引っかかってもあまり嬉しくないし&lt;br /&gt;
** 設定が雑だと MediaWiki 名前空間も引っかかったりする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-19 ==&lt;br /&gt;
&lt;br /&gt;
* Extension:Editcount も壊れているらしい？&lt;br /&gt;
** ActorMigration をきちんと使っている行儀のいいコードに見えるような…&lt;br /&gt;
** いや、&amp;lt;code&amp;gt;COUNT(*)&amp;lt;/code&amp;gt; するコードは行儀がいいとは言えない&lt;br /&gt;
* メイリオの斜体が効かないのは知っていたが、MediaWiki が対策していないのは知らなかった&lt;br /&gt;
** Firefox は &amp;lt;code&amp;gt;font-family: Meiryo&amp;lt;/code&amp;gt; だけで斜体になるが、Chrome は &amp;lt;code&amp;gt;@font-face&amp;lt;/code&amp;gt; を使わないと斜体にならない&lt;br /&gt;
&lt;br /&gt;
== 2020-11-20 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;font-family&amp;lt;/code&amp;gt; 周りのあれこれを設定した&lt;br /&gt;
* 最近、あまりサーバーのお世話ができていないので明日明後日は頑張ろう&lt;br /&gt;
* Extension:Editcount は壊れていなかった（別の問題だった）ようだ&lt;br /&gt;
&lt;br /&gt;
== 2020-11-23 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日はサーバーのお世話をしていたのだが、進捗があまりよろしくない&lt;br /&gt;
* 一昨日は忙しかったし、昨日は気が付くと終わっていたし、今日は親戚付き合いがあり…&lt;br /&gt;
&lt;br /&gt;
== 2020-11-25 ==&lt;br /&gt;
&lt;br /&gt;
* UserJS を書くのは楽しいが、時間がかかりすぎて費用対効果があまりよくない&lt;br /&gt;
** もうちょっとサクッと書けるようになりたい&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-11&amp;diff=77</id>
		<title>利用者:Sigsign/diary/2020-11</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-11&amp;diff=77"/>
		<updated>2020-11-23T17:56:23Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2020-11-23 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NEWSECTIONLINK__&lt;br /&gt;
[[Category:Sigsignの日記]]&lt;br /&gt;
&lt;br /&gt;
==2020-11-02==&lt;br /&gt;
&lt;br /&gt;
*なんとなく日記を書き始めてみる&lt;br /&gt;
*個人ウィキを作っては壊しているような気がする（ここはたぶん四代目）&lt;br /&gt;
**MediaWiki は隠し事ができないので、恥ずかしいミスをすると心機一転したくなってしまう&lt;br /&gt;
**今回は SQLite から MariaDB の変更に伴う新設&lt;br /&gt;
***前回や前々回に比べればまともな理由&lt;br /&gt;
*以前は XREA の g 系サーバーで SQLite を使って動かしていたが複数の問題があった&lt;br /&gt;
**SQLite だと動かない拡張機能がそこそこある&lt;br /&gt;
**XMLReader が PHP のバージョンによって有効化されていたり無効化されていたりする&lt;br /&gt;
***XMLReader がないと記事のインポートができない&lt;br /&gt;
***XMLReader が動く唯一のバージョンが PHP 7.0 だが、MediaWiki 1.34 からサポート対象外になった&lt;br /&gt;
****MediaWiki 1.31 (LTS) を使い続けるのは厳しい&lt;br /&gt;
**→ VPS 上に PHP 7.4 + MariaDB の環境を作って MediaWiki 1.35 に乗り換えることにした&lt;br /&gt;
*CloudFlare を利用しているのでレスポンスはそれほど悪くない&lt;br /&gt;
*本当は拡張機能を入れたり設定を弄ったりしたいのだが、突然身内に不幸があって今日明日は無理そう&lt;br /&gt;
&lt;br /&gt;
==2020-11-03==&lt;br /&gt;
&lt;br /&gt;
* 昨日は Mobilefrontend と MinervaNeue を入れてから寝た&lt;br /&gt;
** 今のうちに dog-fooding しておこうという意図&lt;br /&gt;
* VisualEditor on mobile は何かと課題にぶつかる&lt;br /&gt;
** 新しい節を追加するのが難しい（ちょっと誤字脱字を直すくらいしか使い道がない）&lt;br /&gt;
** 箇条書きも書きづらい&lt;br /&gt;
*** &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;  （アスタリスク + スペース）で箇条書きに変換できることはできる&lt;br /&gt;
*** でもインデントを付ける方法がわからない…&lt;br /&gt;
** VisualEditor と SourceEditor で要約欄のデフォルトが異なっている&lt;br /&gt;
*** SourceEditor は &amp;lt;code&amp;gt;/* 節名 */&amp;lt;/code&amp;gt; が自動的に入力されるが、VisualEditor はそうならないので不便&lt;br /&gt;
* Fenix (Firefox for Android) でキャレットの位置が飛ぶ現象を観測している&lt;br /&gt;
** VisualEditor でも SourceEditor でも発生しているので Fenix or ATOK のバグかなあ…？&lt;br /&gt;
&lt;br /&gt;
== 2020-11-04 ==&lt;br /&gt;
&lt;br /&gt;
* モバイル版の SourceEditor は単純な &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;textarea&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ではないようだ&lt;br /&gt;
** &amp;lt;code&amp;gt;MobileFrontend/src/mobile.editor.overlay&amp;lt;/code&amp;gt; が何かしているらしい&lt;br /&gt;
** VE ならともかく MobileFrontend のバグを追いかけたくない気持ち&lt;br /&gt;
&lt;br /&gt;
== 2020-11-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日は&amp;lt;code&amp;gt;stale-while-revalidate&amp;lt;/code&amp;gt;(SWR)について調べていた&lt;br /&gt;
** そもそも長期間の&amp;lt;code&amp;gt;max-age&amp;lt;/code&amp;gt;にはあまり意味がないらしい&lt;br /&gt;
*** ローカルキャッシュは2日程度で消えてしまうらしい[https://blog.jxck.io/entries/2016-04-16/stale-while-revalidate.html#%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3]&lt;br /&gt;
*** キャッシュの容量上限は決まっていて、古いキャッシュから消されていくため&lt;br /&gt;
** CloudflareはSWRに対応していない&lt;br /&gt;
*** まあCDN/Reverse Proxyの挙動は直感的ではないので、これ以上複雑にすると挙動が理解できなくなってしまいそう&lt;br /&gt;
** 効果があるのはおそらくCSS/JSだろう&lt;br /&gt;
*** ということで&amp;lt;code&amp;gt;load.php&amp;lt;/code&amp;gt;限定でSWRを追加してみた&lt;br /&gt;
*** 画像はCloudflareに任せてしまうことにする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-08 ==&lt;br /&gt;
&lt;br /&gt;
* Cloudflareのファイアウォールルールについて調べた&lt;br /&gt;
** 「脅威レベル」の閾値がよくわからない&lt;br /&gt;
*** [https://support.cloudflare.com/hc/en-us/articles/200170056-Understanding-the-Cloudflare-Security-Level ドキュメント]によると、高が1以上、標準が15以上、低が25以上、基本的にOFFが50以上でチャレンジ画面になるらしい&lt;br /&gt;
** &amp;lt;code&amp;gt;ip.geoip.continent&amp;lt;/code&amp;gt;は[https://community.cloudflare.com/t/getting-error-ip-geoip-continent/214864 Businessプラン以上が必要だがドキュメントには記載がない]とのこと&lt;br /&gt;
** スパム対策としてちょっと厳しめに設定してみた&lt;br /&gt;
* 昨日設定したSWRが想定通りに機能していて感動している&lt;br /&gt;
* 拡張機能としてEcho、LoginNotify、Thanksなどを入れてみた&lt;br /&gt;
* Opcacheのfile cachingを有効にしてみた&lt;br /&gt;
** 心なしかキビキビ動くようになった気がする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-09 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;php-wikidiff2&amp;lt;/code&amp;gt;を導入した&lt;br /&gt;
* 拡張機能としてCheckUser、TemplateStyles、Abuse Filter、AntiSpoof、TorBlock、RevisionSlider、SandboxLinkを入れた&lt;br /&gt;
** StopForumSpamも入れるべきかな&lt;br /&gt;
* CheckUserに&amp;lt;code&amp;gt;Special:Investigate&amp;lt;/code&amp;gt;が追加されていた（まだβ版の模様）&lt;br /&gt;
* このウィキはできるだけ標準に寄せて運用する予定だったが、そもそも利用者が自分しかいないのだから、もっと冒険してもいいような気もしてきた&lt;br /&gt;
&lt;br /&gt;
== 2020-11-10 ==&lt;br /&gt;
&lt;br /&gt;
* そろそろ旧ウィキからデータをインポートしたいところ&lt;br /&gt;
* 新しいテーマを作りたいが Timeless が mustache に対応していないので面倒&lt;br /&gt;
** mustache に対応していて、Vector/MinervaNeue ほど複雑じゃなくて、改変しやすいテーマが欲しい&lt;br /&gt;
** Vector がごちゃごちゃしていて見づらいのは確かにそうで、もっとシンプルなテーマにしたくなる&lt;br /&gt;
* WebAuthn を入れたり、翻訳にちょっと手を出したりしている&lt;br /&gt;
** OATHAuth の翻訳をどうするか悩む&lt;br /&gt;
* FlaggedRevs は WMF で動いている実績があるし、ApprovedRevs はコンパクトでよさそう&lt;br /&gt;
** Core が査読に相当する機能を持つべきだと思うんだよな&lt;br /&gt;
** ApprovedRevs には PendingChanges に相当する保護機能はないが、マジックワードを使えば同じような運用はできそう&lt;br /&gt;
* StopForumSpam は out of the box な拡張機能ではなく、何やら設定が必要らしい&lt;br /&gt;
** Mediawiki.org の解説ではスパムを報告する機能があるはずだが、コードを読む限りは見当たらない&lt;br /&gt;
** 現在は IP アドレス一覧をロードして、ビットマスクを生成・利用する機能に限定されているようだ&lt;br /&gt;
** 大半のウィキは SFS の API を叩いてスパムを弾いてくれることを期待するんじゃないか&lt;br /&gt;
*** まあIPアドレスを外部のサービスに露出させるのはプライバシー上問題かもしれないが…&lt;br /&gt;
** DNSブラックリストのほうが経済的かもしれない&lt;br /&gt;
&lt;br /&gt;
== 2020-11-11 ==&lt;br /&gt;
&lt;br /&gt;
* ジョブキューを systemd-timer で実行するようにした&lt;br /&gt;
** 久々にシェルスクリプトを書いたら何も覚えてなくて困った&lt;br /&gt;
** systemd は journalctl がとにかく便利、-u オプションが最高&lt;br /&gt;
** ついでに &amp;lt;code&amp;gt;loadExitNodes.php&amp;lt;/code&amp;gt; も実行している&lt;br /&gt;
&lt;br /&gt;
== 2020-11-12 ==&lt;br /&gt;
* 昨日は旧ウィキから記事をインポートした&lt;br /&gt;
** 管理するウィキがまた一つ減った&lt;br /&gt;
** 放置しているウィキがまだあるはずなので、それらを早めに集約したい&lt;br /&gt;
* [[特別:Import|Special:Import]] はインターウィキ接頭辞を入力しないとインポートしてくれない&lt;br /&gt;
** &amp;lt;code&amp;gt;importDump.php&amp;lt;/code&amp;gt; を使うのは面倒なんだけどなあ&lt;br /&gt;
* もう一つ管理するウィキを減らした&lt;br /&gt;
** カスタマイズした Skin:Vector と Extension:YouTube があったことにファイルを消してから気付いた…&lt;br /&gt;
** Skin:Vector はどうせマージできなかっただろうから諦めよう&lt;br /&gt;
&lt;br /&gt;
== 2020-11-13 ==&lt;br /&gt;
&lt;br /&gt;
* Cloudflare は &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; を見ずに URL だけでキャッシュの可否を決定するらしい&lt;br /&gt;
** [[User:Sigsign/vector.css]] が DYNAMIC ではなくキャッシュされてしまった（CSS 扱いになっている）&lt;br /&gt;
*** 通常のページは拡張子が付かないため assets と誤認されることがなく見逃していた&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgCdnMaxAge = 0;&amp;lt;/code&amp;gt; を設定すると &amp;lt;code&amp;gt;Cache-Control: private&amp;lt;/code&amp;gt; が付与されて BYPASS となる&lt;br /&gt;
*** Squid / Varnish は &amp;lt;code&amp;gt;Vary&amp;lt;/code&amp;gt; ヘッダーを考慮してくれるのでキャッシュしてくれたほうがありがたい&lt;br /&gt;
*** Cloudflare は考慮してくれないのでキャッシュされると困る&lt;br /&gt;
&lt;br /&gt;
== 2020-11-14 ==&lt;br /&gt;
&lt;br /&gt;
* 今日は寝不足のまま親戚行事に出て、昼過ぎから爆睡していた&lt;br /&gt;
* &amp;lt;code&amp;gt;action=raw&amp;lt;/code&amp;gt; ってキャッシュの側面で見ると最悪では…？&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgForcedRawSMaxage&amp;lt;/code&amp;gt; も標準では 300 秒（5分）しかないし&lt;br /&gt;
*** &amp;lt;code&amp;gt;$wgCdnMaxAge&amp;lt;/code&amp;gt;が 18000 秒（5時間）でこれが 300 秒なのはちょっと納得できない&lt;br /&gt;
*** &amp;lt;code&amp;gt;oldid&amp;lt;/code&amp;gt; 指定したら ResourceLoader みたいに 30 日間キャッシュしてほしい&lt;br /&gt;
* マニュアルを見たら &amp;lt;code&amp;gt;maxage&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;smaxage&amp;lt;/code&amp;gt; パラメーターが使えるらしい&lt;br /&gt;
** ここでは動作したが、ウィキペディア / Miraheze では効かなかった&lt;br /&gt;
** MWF は Varnish で &amp;lt;code&amp;gt;cache-control: private, s-maxage=0, max-age=0, must-revalidate&amp;lt;/code&amp;gt; に上書きしている模様&lt;br /&gt;
** [https://phabricator.wikimedia.org/T71460 T71460] によると &amp;quot;security and privacy reasons&amp;quot; とのこと&lt;br /&gt;
*** &amp;lt;code&amp;gt;max-age=0&amp;lt;/code&amp;gt; は no-store を意味しないし、毎回ダウンロードするわけじゃないよ！ との主張&lt;br /&gt;
*** いや、304 が返ってくるまでに数百 ms かかるのが遅い（し計算資源の無駄）という話なんですよ&lt;br /&gt;
*** [https://phabricator.wikimedia.org/T112937 T112937] のおかげで UserJS はクリーンになっているんじゃないのか&lt;br /&gt;
&lt;br /&gt;
== 2020-11-15 ==&lt;br /&gt;
&lt;br /&gt;
* UserJS を書いていて mw.html はクールに書けて便利だなーと思っていたら出力が String で悲しい&lt;br /&gt;
** Node を返してくれれば &amp;lt;code&amp;gt;appendChild()&amp;lt;/code&amp;gt; が使えるのに…&lt;br /&gt;
** &amp;lt;code&amp;gt;innerHTML()&amp;lt;/code&amp;gt; は死すべし、慈悲はない&lt;br /&gt;
* マジックワード / パーサー関数は &amp;lt;code&amp;gt;api.parse()&amp;lt;/code&amp;gt; で展開できる&lt;br /&gt;
* 最近ようやく本に書かれているプラクティスを実践できるようになってきた気がする&lt;br /&gt;
* 人のコードが汚いのか、自分の読解力が落ちているのか…&lt;br /&gt;
** コード読解力の高い人を改めて尊敬する&lt;br /&gt;
&lt;br /&gt;
== 2020-11-17 ==&lt;br /&gt;
&lt;br /&gt;
* Extension:DynamicPageList3 が MediaWiki 1.35 に対応できてなくて、いろんなところで阿鼻叫喚になっている&lt;br /&gt;
** コード読んでるけど、MW にはプリペアドステートメント的な仕組みはないんですか…？&lt;br /&gt;
*** 文字列結合でクエリを組み立てないでほしい&lt;br /&gt;
** コード読んで理解したが、クエリを組み立てているのではなく大元の条件式を動的に生成しているんだな&lt;br /&gt;
*** DPL は SQL を隠ぺいしているだけで、実質的には DML になっている&lt;br /&gt;
** 概ね直りそうな予感はした&lt;br /&gt;
*** INNER JOIN と WHERE ってやってること一緒なのか&lt;br /&gt;
*** 思わぬ学びを得たが、やっぱり SQL はよくわからない&lt;br /&gt;
* DPL3 は classes/Query.php と classes/Article.php を直せばいい（はず）&lt;br /&gt;
** FROM に actor を足して、WHERE actor.actor_id = XX.X_user_id で結合する&lt;br /&gt;
* PukiWiki から移ってきたときは「RDB を使ってるから早くなる」と思っていたのに…&lt;br /&gt;
** PukiWiki にも tracker という DPL3 みたいな無茶をするプラグインがある&lt;br /&gt;
** 今思うと、tracker はキャッシュすらしてないのによく動いてたな&lt;br /&gt;
&lt;br /&gt;
== 2020-11-18 ==&lt;br /&gt;
&lt;br /&gt;
* もう今月も後半になってきた&lt;br /&gt;
** そろそろサーバーの整理をしなきゃ…&lt;br /&gt;
*** メールサーバーの移行作業だけはやりたくなかったのに&lt;br /&gt;
*** 構築したのは何年も前なので記憶がない&lt;br /&gt;
* &amp;lt;code&amp;gt;$wgMiserMode&amp;lt;/code&amp;gt; に対応する準備をした&lt;br /&gt;
** 小さい Wiki に効果があるのかは疑問&lt;br /&gt;
* ついでに Sitemap や Robot policy 周りを整備した&lt;br /&gt;
** テンプレートやモジュールが検索に引っかかってもあまり嬉しくないし&lt;br /&gt;
** 設定が雑だと MediaWiki 名前空間も引っかかったりする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-19 ==&lt;br /&gt;
&lt;br /&gt;
* Extension:Editcount も壊れているらしい？&lt;br /&gt;
** ActorMigration をきちんと使っている行儀のいいコードに見えるような…&lt;br /&gt;
** いや、&amp;lt;code&amp;gt;COUNT(*)&amp;lt;/code&amp;gt; するコードは行儀がいいとは言えない&lt;br /&gt;
* メイリオの斜体が効かないのは知っていたが、MediaWiki が対策していないのは知らなかった&lt;br /&gt;
** Firefox は &amp;lt;code&amp;gt;font-family: Meiryo&amp;lt;/code&amp;gt; だけで斜体になるが、Chrome は &amp;lt;code&amp;gt;@font-face&amp;lt;/code&amp;gt; を使わないと斜体にならない&lt;br /&gt;
&lt;br /&gt;
== 2020-11-20 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;font-family&amp;lt;/code&amp;gt; 周りのあれこれを設定した&lt;br /&gt;
* 最近、あまりサーバーのお世話ができていないので明日明後日は頑張ろう&lt;br /&gt;
* Extension:Editcount は壊れていなかった（別の問題だった）ようだ&lt;br /&gt;
&lt;br /&gt;
== 2020-11-23 ==&lt;br /&gt;
&lt;br /&gt;
* ここ数日はサーバーのお世話をしていたのだが、進捗があまりよろしくない&lt;br /&gt;
* 一昨日は忙しかったし、昨日は気が付くと終わっていたし、今日は親戚付き合いがあり…&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-11&amp;diff=76</id>
		<title>利用者:Sigsign/diary/2020-11</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-11&amp;diff=76"/>
		<updated>2020-11-20T15:50:13Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2020-11-20 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NEWSECTIONLINK__&lt;br /&gt;
[[Category:Sigsignの日記]]&lt;br /&gt;
&lt;br /&gt;
==2020-11-02==&lt;br /&gt;
&lt;br /&gt;
*なんとなく日記を書き始めてみる&lt;br /&gt;
*個人ウィキを作っては壊しているような気がする（ここはたぶん四代目）&lt;br /&gt;
**MediaWiki は隠し事ができないので、恥ずかしいミスをすると心機一転したくなってしまう&lt;br /&gt;
**今回は SQLite から MariaDB の変更に伴う新設&lt;br /&gt;
***前回や前々回に比べればまともな理由&lt;br /&gt;
*以前は XREA の g 系サーバーで SQLite を使って動かしていたが複数の問題があった&lt;br /&gt;
**SQLite だと動かない拡張機能がそこそこある&lt;br /&gt;
**XMLReader が PHP のバージョンによって有効化されていたり無効化されていたりする&lt;br /&gt;
***XMLReader がないと記事のインポートができない&lt;br /&gt;
***XMLReader が動く唯一のバージョンが PHP 7.0 だが、MediaWiki 1.34 からサポート対象外になった&lt;br /&gt;
****MediaWiki 1.31 (LTS) を使い続けるのは厳しい&lt;br /&gt;
**→ VPS 上に PHP 7.4 + MariaDB の環境を作って MediaWiki 1.35 に乗り換えることにした&lt;br /&gt;
*CloudFlare を利用しているのでレスポンスはそれほど悪くない&lt;br /&gt;
*本当は拡張機能を入れたり設定を弄ったりしたいのだが、突然身内に不幸があって今日明日は無理そう&lt;br /&gt;
&lt;br /&gt;
==2020-11-03==&lt;br /&gt;
&lt;br /&gt;
* 昨日は Mobilefrontend と MinervaNeue を入れてから寝た&lt;br /&gt;
** 今のうちに dog-fooding しておこうという意図&lt;br /&gt;
* VisualEditor on mobile は何かと課題にぶつかる&lt;br /&gt;
** 新しい節を追加するのが難しい（ちょっと誤字脱字を直すくらいしか使い道がない）&lt;br /&gt;
** 箇条書きも書きづらい&lt;br /&gt;
*** &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;  （アスタリスク + スペース）で箇条書きに変換できることはできる&lt;br /&gt;
*** でもインデントを付ける方法がわからない…&lt;br /&gt;
** VisualEditor と SourceEditor で要約欄のデフォルトが異なっている&lt;br /&gt;
*** SourceEditor は &amp;lt;code&amp;gt;/* 節名 */&amp;lt;/code&amp;gt; が自動的に入力されるが、VisualEditor はそうならないので不便&lt;br /&gt;
* Fenix (Firefox for Android) でキャレットの位置が飛ぶ現象を観測している&lt;br /&gt;
** VisualEditor でも SourceEditor でも発生しているので Fenix or ATOK のバグかなあ…？&lt;br /&gt;
&lt;br /&gt;
== 2020-11-04 ==&lt;br /&gt;
&lt;br /&gt;
* モバイル版の SourceEditor は単純な &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;textarea&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ではないようだ&lt;br /&gt;
** &amp;lt;code&amp;gt;MobileFrontend/src/mobile.editor.overlay&amp;lt;/code&amp;gt; が何かしているらしい&lt;br /&gt;
** VE ならともかく MobileFrontend のバグを追いかけたくない気持ち&lt;br /&gt;
&lt;br /&gt;
== 2020-11-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日は&amp;lt;code&amp;gt;stale-while-revalidate&amp;lt;/code&amp;gt;(SWR)について調べていた&lt;br /&gt;
** そもそも長期間の&amp;lt;code&amp;gt;max-age&amp;lt;/code&amp;gt;にはあまり意味がないらしい&lt;br /&gt;
*** ローカルキャッシュは2日程度で消えてしまうらしい[https://blog.jxck.io/entries/2016-04-16/stale-while-revalidate.html#%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3]&lt;br /&gt;
*** キャッシュの容量上限は決まっていて、古いキャッシュから消されていくため&lt;br /&gt;
** CloudflareはSWRに対応していない&lt;br /&gt;
*** まあCDN/Reverse Proxyの挙動は直感的ではないので、これ以上複雑にすると挙動が理解できなくなってしまいそう&lt;br /&gt;
** 効果があるのはおそらくCSS/JSだろう&lt;br /&gt;
*** ということで&amp;lt;code&amp;gt;load.php&amp;lt;/code&amp;gt;限定でSWRを追加してみた&lt;br /&gt;
*** 画像はCloudflareに任せてしまうことにする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-08 ==&lt;br /&gt;
&lt;br /&gt;
* Cloudflareのファイアウォールルールについて調べた&lt;br /&gt;
** 「脅威レベル」の閾値がよくわからない&lt;br /&gt;
*** [https://support.cloudflare.com/hc/en-us/articles/200170056-Understanding-the-Cloudflare-Security-Level ドキュメント]によると、高が1以上、標準が15以上、低が25以上、基本的にOFFが50以上でチャレンジ画面になるらしい&lt;br /&gt;
** &amp;lt;code&amp;gt;ip.geoip.continent&amp;lt;/code&amp;gt;は[https://community.cloudflare.com/t/getting-error-ip-geoip-continent/214864 Businessプラン以上が必要だがドキュメントには記載がない]とのこと&lt;br /&gt;
** スパム対策としてちょっと厳しめに設定してみた&lt;br /&gt;
* 昨日設定したSWRが想定通りに機能していて感動している&lt;br /&gt;
* 拡張機能としてEcho、LoginNotify、Thanksなどを入れてみた&lt;br /&gt;
* Opcacheのfile cachingを有効にしてみた&lt;br /&gt;
** 心なしかキビキビ動くようになった気がする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-09 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;php-wikidiff2&amp;lt;/code&amp;gt;を導入した&lt;br /&gt;
* 拡張機能としてCheckUser、TemplateStyles、Abuse Filter、AntiSpoof、TorBlock、RevisionSlider、SandboxLinkを入れた&lt;br /&gt;
** StopForumSpamも入れるべきかな&lt;br /&gt;
* CheckUserに&amp;lt;code&amp;gt;Special:Investigate&amp;lt;/code&amp;gt;が追加されていた（まだβ版の模様）&lt;br /&gt;
* このウィキはできるだけ標準に寄せて運用する予定だったが、そもそも利用者が自分しかいないのだから、もっと冒険してもいいような気もしてきた&lt;br /&gt;
&lt;br /&gt;
== 2020-11-10 ==&lt;br /&gt;
&lt;br /&gt;
* そろそろ旧ウィキからデータをインポートしたいところ&lt;br /&gt;
* 新しいテーマを作りたいが Timeless が mustache に対応していないので面倒&lt;br /&gt;
** mustache に対応していて、Vector/MinervaNeue ほど複雑じゃなくて、改変しやすいテーマが欲しい&lt;br /&gt;
** Vector がごちゃごちゃしていて見づらいのは確かにそうで、もっとシンプルなテーマにしたくなる&lt;br /&gt;
* WebAuthn を入れたり、翻訳にちょっと手を出したりしている&lt;br /&gt;
** OATHAuth の翻訳をどうするか悩む&lt;br /&gt;
* FlaggedRevs は WMF で動いている実績があるし、ApprovedRevs はコンパクトでよさそう&lt;br /&gt;
** Core が査読に相当する機能を持つべきだと思うんだよな&lt;br /&gt;
** ApprovedRevs には PendingChanges に相当する保護機能はないが、マジックワードを使えば同じような運用はできそう&lt;br /&gt;
* StopForumSpam は out of the box な拡張機能ではなく、何やら設定が必要らしい&lt;br /&gt;
** Mediawiki.org の解説ではスパムを報告する機能があるはずだが、コードを読む限りは見当たらない&lt;br /&gt;
** 現在は IP アドレス一覧をロードして、ビットマスクを生成・利用する機能に限定されているようだ&lt;br /&gt;
** 大半のウィキは SFS の API を叩いてスパムを弾いてくれることを期待するんじゃないか&lt;br /&gt;
*** まあIPアドレスを外部のサービスに露出させるのはプライバシー上問題かもしれないが…&lt;br /&gt;
** DNSブラックリストのほうが経済的かもしれない&lt;br /&gt;
&lt;br /&gt;
== 2020-11-11 ==&lt;br /&gt;
&lt;br /&gt;
* ジョブキューを systemd-timer で実行するようにした&lt;br /&gt;
** 久々にシェルスクリプトを書いたら何も覚えてなくて困った&lt;br /&gt;
** systemd は journalctl がとにかく便利、-u オプションが最高&lt;br /&gt;
** ついでに &amp;lt;code&amp;gt;loadExitNodes.php&amp;lt;/code&amp;gt; も実行している&lt;br /&gt;
&lt;br /&gt;
== 2020-11-12 ==&lt;br /&gt;
* 昨日は旧ウィキから記事をインポートした&lt;br /&gt;
** 管理するウィキがまた一つ減った&lt;br /&gt;
** 放置しているウィキがまだあるはずなので、それらを早めに集約したい&lt;br /&gt;
* [[特別:Import|Special:Import]] はインターウィキ接頭辞を入力しないとインポートしてくれない&lt;br /&gt;
** &amp;lt;code&amp;gt;importDump.php&amp;lt;/code&amp;gt; を使うのは面倒なんだけどなあ&lt;br /&gt;
* もう一つ管理するウィキを減らした&lt;br /&gt;
** カスタマイズした Skin:Vector と Extension:YouTube があったことにファイルを消してから気付いた…&lt;br /&gt;
** Skin:Vector はどうせマージできなかっただろうから諦めよう&lt;br /&gt;
&lt;br /&gt;
== 2020-11-13 ==&lt;br /&gt;
&lt;br /&gt;
* Cloudflare は &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; を見ずに URL だけでキャッシュの可否を決定するらしい&lt;br /&gt;
** [[User:Sigsign/vector.css]] が DYNAMIC ではなくキャッシュされてしまった（CSS 扱いになっている）&lt;br /&gt;
*** 通常のページは拡張子が付かないため assets と誤認されることがなく見逃していた&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgCdnMaxAge = 0;&amp;lt;/code&amp;gt; を設定すると &amp;lt;code&amp;gt;Cache-Control: private&amp;lt;/code&amp;gt; が付与されて BYPASS となる&lt;br /&gt;
*** Squid / Varnish は &amp;lt;code&amp;gt;Vary&amp;lt;/code&amp;gt; ヘッダーを考慮してくれるのでキャッシュしてくれたほうがありがたい&lt;br /&gt;
*** Cloudflare は考慮してくれないのでキャッシュされると困る&lt;br /&gt;
&lt;br /&gt;
== 2020-11-14 ==&lt;br /&gt;
&lt;br /&gt;
* 今日は寝不足のまま親戚行事に出て、昼過ぎから爆睡していた&lt;br /&gt;
* &amp;lt;code&amp;gt;action=raw&amp;lt;/code&amp;gt; ってキャッシュの側面で見ると最悪では…？&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgForcedRawSMaxage&amp;lt;/code&amp;gt; も標準では 300 秒（5分）しかないし&lt;br /&gt;
*** &amp;lt;code&amp;gt;$wgCdnMaxAge&amp;lt;/code&amp;gt;が 18000 秒（5時間）でこれが 300 秒なのはちょっと納得できない&lt;br /&gt;
*** &amp;lt;code&amp;gt;oldid&amp;lt;/code&amp;gt; 指定したら ResourceLoader みたいに 30 日間キャッシュしてほしい&lt;br /&gt;
* マニュアルを見たら &amp;lt;code&amp;gt;maxage&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;smaxage&amp;lt;/code&amp;gt; パラメーターが使えるらしい&lt;br /&gt;
** ここでは動作したが、ウィキペディア / Miraheze では効かなかった&lt;br /&gt;
** MWF は Varnish で &amp;lt;code&amp;gt;cache-control: private, s-maxage=0, max-age=0, must-revalidate&amp;lt;/code&amp;gt; に上書きしている模様&lt;br /&gt;
** [https://phabricator.wikimedia.org/T71460 T71460] によると &amp;quot;security and privacy reasons&amp;quot; とのこと&lt;br /&gt;
*** &amp;lt;code&amp;gt;max-age=0&amp;lt;/code&amp;gt; は no-store を意味しないし、毎回ダウンロードするわけじゃないよ！ との主張&lt;br /&gt;
*** いや、304 が返ってくるまでに数百 ms かかるのが遅い（し計算資源の無駄）という話なんですよ&lt;br /&gt;
*** [https://phabricator.wikimedia.org/T112937 T112937] のおかげで UserJS はクリーンになっているんじゃないのか&lt;br /&gt;
&lt;br /&gt;
== 2020-11-15 ==&lt;br /&gt;
&lt;br /&gt;
* UserJS を書いていて mw.html はクールに書けて便利だなーと思っていたら出力が String で悲しい&lt;br /&gt;
** Node を返してくれれば &amp;lt;code&amp;gt;appendChild()&amp;lt;/code&amp;gt; が使えるのに…&lt;br /&gt;
** &amp;lt;code&amp;gt;innerHTML()&amp;lt;/code&amp;gt; は死すべし、慈悲はない&lt;br /&gt;
* マジックワード / パーサー関数は &amp;lt;code&amp;gt;api.parse()&amp;lt;/code&amp;gt; で展開できる&lt;br /&gt;
* 最近ようやく本に書かれているプラクティスを実践できるようになってきた気がする&lt;br /&gt;
* 人のコードが汚いのか、自分の読解力が落ちているのか…&lt;br /&gt;
** コード読解力の高い人を改めて尊敬する&lt;br /&gt;
&lt;br /&gt;
== 2020-11-17 ==&lt;br /&gt;
&lt;br /&gt;
* Extension:DynamicPageList3 が MediaWiki 1.35 に対応できてなくて、いろんなところで阿鼻叫喚になっている&lt;br /&gt;
** コード読んでるけど、MW にはプリペアドステートメント的な仕組みはないんですか…？&lt;br /&gt;
*** 文字列結合でクエリを組み立てないでほしい&lt;br /&gt;
** コード読んで理解したが、クエリを組み立てているのではなく大元の条件式を動的に生成しているんだな&lt;br /&gt;
*** DPL は SQL を隠ぺいしているだけで、実質的には DML になっている&lt;br /&gt;
** 概ね直りそうな予感はした&lt;br /&gt;
*** INNER JOIN と WHERE ってやってること一緒なのか&lt;br /&gt;
*** 思わぬ学びを得たが、やっぱり SQL はよくわからない&lt;br /&gt;
* DPL3 は classes/Query.php と classes/Article.php を直せばいい（はず）&lt;br /&gt;
** FROM に actor を足して、WHERE actor.actor_id = XX.X_user_id で結合する&lt;br /&gt;
* PukiWiki から移ってきたときは「RDB を使ってるから早くなる」と思っていたのに…&lt;br /&gt;
** PukiWiki にも tracker という DPL3 みたいな無茶をするプラグインがある&lt;br /&gt;
** 今思うと、tracker はキャッシュすらしてないのによく動いてたな&lt;br /&gt;
&lt;br /&gt;
== 2020-11-18 ==&lt;br /&gt;
&lt;br /&gt;
* もう今月も後半になってきた&lt;br /&gt;
** そろそろサーバーの整理をしなきゃ…&lt;br /&gt;
*** メールサーバーの移行作業だけはやりたくなかったのに&lt;br /&gt;
*** 構築したのは何年も前なので記憶がない&lt;br /&gt;
* &amp;lt;code&amp;gt;$wgMiserMode&amp;lt;/code&amp;gt; に対応する準備をした&lt;br /&gt;
** 小さい Wiki に効果があるのかは疑問&lt;br /&gt;
* ついでに Sitemap や Robot policy 周りを整備した&lt;br /&gt;
** テンプレートやモジュールが検索に引っかかってもあまり嬉しくないし&lt;br /&gt;
** 設定が雑だと MediaWiki 名前空間も引っかかったりする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-19 ==&lt;br /&gt;
&lt;br /&gt;
* Extension:Editcount も壊れているらしい？&lt;br /&gt;
** ActorMigration をきちんと使っている行儀のいいコードに見えるような…&lt;br /&gt;
** いや、&amp;lt;code&amp;gt;COUNT(*)&amp;lt;/code&amp;gt; するコードは行儀がいいとは言えない&lt;br /&gt;
* メイリオの斜体が効かないのは知っていたが、MediaWiki が対策していないのは知らなかった&lt;br /&gt;
** Firefox は &amp;lt;code&amp;gt;font-family: Meiryo&amp;lt;/code&amp;gt; だけで斜体になるが、Chrome は &amp;lt;code&amp;gt;@font-face&amp;lt;/code&amp;gt; を使わないと斜体にならない&lt;br /&gt;
&lt;br /&gt;
== 2020-11-20 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;font-family&amp;lt;/code&amp;gt; 周りのあれこれを設定した&lt;br /&gt;
* 最近、あまりサーバーのお世話ができていないので明日明後日は頑張ろう&lt;br /&gt;
* Extension:Editcount は壊れていなかった（別の問題だった）ようだ&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-11&amp;diff=75</id>
		<title>利用者:Sigsign/diary/2020-11</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-11&amp;diff=75"/>
		<updated>2020-11-20T15:37:08Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2020-11-20 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NEWSECTIONLINK__&lt;br /&gt;
[[Category:Sigsignの日記]]&lt;br /&gt;
&lt;br /&gt;
==2020-11-02==&lt;br /&gt;
&lt;br /&gt;
*なんとなく日記を書き始めてみる&lt;br /&gt;
*個人ウィキを作っては壊しているような気がする（ここはたぶん四代目）&lt;br /&gt;
**MediaWiki は隠し事ができないので、恥ずかしいミスをすると心機一転したくなってしまう&lt;br /&gt;
**今回は SQLite から MariaDB の変更に伴う新設&lt;br /&gt;
***前回や前々回に比べればまともな理由&lt;br /&gt;
*以前は XREA の g 系サーバーで SQLite を使って動かしていたが複数の問題があった&lt;br /&gt;
**SQLite だと動かない拡張機能がそこそこある&lt;br /&gt;
**XMLReader が PHP のバージョンによって有効化されていたり無効化されていたりする&lt;br /&gt;
***XMLReader がないと記事のインポートができない&lt;br /&gt;
***XMLReader が動く唯一のバージョンが PHP 7.0 だが、MediaWiki 1.34 からサポート対象外になった&lt;br /&gt;
****MediaWiki 1.31 (LTS) を使い続けるのは厳しい&lt;br /&gt;
**→ VPS 上に PHP 7.4 + MariaDB の環境を作って MediaWiki 1.35 に乗り換えることにした&lt;br /&gt;
*CloudFlare を利用しているのでレスポンスはそれほど悪くない&lt;br /&gt;
*本当は拡張機能を入れたり設定を弄ったりしたいのだが、突然身内に不幸があって今日明日は無理そう&lt;br /&gt;
&lt;br /&gt;
==2020-11-03==&lt;br /&gt;
&lt;br /&gt;
* 昨日は Mobilefrontend と MinervaNeue を入れてから寝た&lt;br /&gt;
** 今のうちに dog-fooding しておこうという意図&lt;br /&gt;
* VisualEditor on mobile は何かと課題にぶつかる&lt;br /&gt;
** 新しい節を追加するのが難しい（ちょっと誤字脱字を直すくらいしか使い道がない）&lt;br /&gt;
** 箇条書きも書きづらい&lt;br /&gt;
*** &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;  （アスタリスク + スペース）で箇条書きに変換できることはできる&lt;br /&gt;
*** でもインデントを付ける方法がわからない…&lt;br /&gt;
** VisualEditor と SourceEditor で要約欄のデフォルトが異なっている&lt;br /&gt;
*** SourceEditor は &amp;lt;code&amp;gt;/* 節名 */&amp;lt;/code&amp;gt; が自動的に入力されるが、VisualEditor はそうならないので不便&lt;br /&gt;
* Fenix (Firefox for Android) でキャレットの位置が飛ぶ現象を観測している&lt;br /&gt;
** VisualEditor でも SourceEditor でも発生しているので Fenix or ATOK のバグかなあ…？&lt;br /&gt;
&lt;br /&gt;
== 2020-11-04 ==&lt;br /&gt;
&lt;br /&gt;
* モバイル版の SourceEditor は単純な &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;textarea&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ではないようだ&lt;br /&gt;
** &amp;lt;code&amp;gt;MobileFrontend/src/mobile.editor.overlay&amp;lt;/code&amp;gt; が何かしているらしい&lt;br /&gt;
** VE ならともかく MobileFrontend のバグを追いかけたくない気持ち&lt;br /&gt;
&lt;br /&gt;
== 2020-11-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日は&amp;lt;code&amp;gt;stale-while-revalidate&amp;lt;/code&amp;gt;(SWR)について調べていた&lt;br /&gt;
** そもそも長期間の&amp;lt;code&amp;gt;max-age&amp;lt;/code&amp;gt;にはあまり意味がないらしい&lt;br /&gt;
*** ローカルキャッシュは2日程度で消えてしまうらしい[https://blog.jxck.io/entries/2016-04-16/stale-while-revalidate.html#%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3]&lt;br /&gt;
*** キャッシュの容量上限は決まっていて、古いキャッシュから消されていくため&lt;br /&gt;
** CloudflareはSWRに対応していない&lt;br /&gt;
*** まあCDN/Reverse Proxyの挙動は直感的ではないので、これ以上複雑にすると挙動が理解できなくなってしまいそう&lt;br /&gt;
** 効果があるのはおそらくCSS/JSだろう&lt;br /&gt;
*** ということで&amp;lt;code&amp;gt;load.php&amp;lt;/code&amp;gt;限定でSWRを追加してみた&lt;br /&gt;
*** 画像はCloudflareに任せてしまうことにする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-08 ==&lt;br /&gt;
&lt;br /&gt;
* Cloudflareのファイアウォールルールについて調べた&lt;br /&gt;
** 「脅威レベル」の閾値がよくわからない&lt;br /&gt;
*** [https://support.cloudflare.com/hc/en-us/articles/200170056-Understanding-the-Cloudflare-Security-Level ドキュメント]によると、高が1以上、標準が15以上、低が25以上、基本的にOFFが50以上でチャレンジ画面になるらしい&lt;br /&gt;
** &amp;lt;code&amp;gt;ip.geoip.continent&amp;lt;/code&amp;gt;は[https://community.cloudflare.com/t/getting-error-ip-geoip-continent/214864 Businessプラン以上が必要だがドキュメントには記載がない]とのこと&lt;br /&gt;
** スパム対策としてちょっと厳しめに設定してみた&lt;br /&gt;
* 昨日設定したSWRが想定通りに機能していて感動している&lt;br /&gt;
* 拡張機能としてEcho、LoginNotify、Thanksなどを入れてみた&lt;br /&gt;
* Opcacheのfile cachingを有効にしてみた&lt;br /&gt;
** 心なしかキビキビ動くようになった気がする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-09 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;php-wikidiff2&amp;lt;/code&amp;gt;を導入した&lt;br /&gt;
* 拡張機能としてCheckUser、TemplateStyles、Abuse Filter、AntiSpoof、TorBlock、RevisionSlider、SandboxLinkを入れた&lt;br /&gt;
** StopForumSpamも入れるべきかな&lt;br /&gt;
* CheckUserに&amp;lt;code&amp;gt;Special:Investigate&amp;lt;/code&amp;gt;が追加されていた（まだβ版の模様）&lt;br /&gt;
* このウィキはできるだけ標準に寄せて運用する予定だったが、そもそも利用者が自分しかいないのだから、もっと冒険してもいいような気もしてきた&lt;br /&gt;
&lt;br /&gt;
== 2020-11-10 ==&lt;br /&gt;
&lt;br /&gt;
* そろそろ旧ウィキからデータをインポートしたいところ&lt;br /&gt;
* 新しいテーマを作りたいが Timeless が mustache に対応していないので面倒&lt;br /&gt;
** mustache に対応していて、Vector/MinervaNeue ほど複雑じゃなくて、改変しやすいテーマが欲しい&lt;br /&gt;
** Vector がごちゃごちゃしていて見づらいのは確かにそうで、もっとシンプルなテーマにしたくなる&lt;br /&gt;
* WebAuthn を入れたり、翻訳にちょっと手を出したりしている&lt;br /&gt;
** OATHAuth の翻訳をどうするか悩む&lt;br /&gt;
* FlaggedRevs は WMF で動いている実績があるし、ApprovedRevs はコンパクトでよさそう&lt;br /&gt;
** Core が査読に相当する機能を持つべきだと思うんだよな&lt;br /&gt;
** ApprovedRevs には PendingChanges に相当する保護機能はないが、マジックワードを使えば同じような運用はできそう&lt;br /&gt;
* StopForumSpam は out of the box な拡張機能ではなく、何やら設定が必要らしい&lt;br /&gt;
** Mediawiki.org の解説ではスパムを報告する機能があるはずだが、コードを読む限りは見当たらない&lt;br /&gt;
** 現在は IP アドレス一覧をロードして、ビットマスクを生成・利用する機能に限定されているようだ&lt;br /&gt;
** 大半のウィキは SFS の API を叩いてスパムを弾いてくれることを期待するんじゃないか&lt;br /&gt;
*** まあIPアドレスを外部のサービスに露出させるのはプライバシー上問題かもしれないが…&lt;br /&gt;
** DNSブラックリストのほうが経済的かもしれない&lt;br /&gt;
&lt;br /&gt;
== 2020-11-11 ==&lt;br /&gt;
&lt;br /&gt;
* ジョブキューを systemd-timer で実行するようにした&lt;br /&gt;
** 久々にシェルスクリプトを書いたら何も覚えてなくて困った&lt;br /&gt;
** systemd は journalctl がとにかく便利、-u オプションが最高&lt;br /&gt;
** ついでに &amp;lt;code&amp;gt;loadExitNodes.php&amp;lt;/code&amp;gt; も実行している&lt;br /&gt;
&lt;br /&gt;
== 2020-11-12 ==&lt;br /&gt;
* 昨日は旧ウィキから記事をインポートした&lt;br /&gt;
** 管理するウィキがまた一つ減った&lt;br /&gt;
** 放置しているウィキがまだあるはずなので、それらを早めに集約したい&lt;br /&gt;
* [[特別:Import|Special:Import]] はインターウィキ接頭辞を入力しないとインポートしてくれない&lt;br /&gt;
** &amp;lt;code&amp;gt;importDump.php&amp;lt;/code&amp;gt; を使うのは面倒なんだけどなあ&lt;br /&gt;
* もう一つ管理するウィキを減らした&lt;br /&gt;
** カスタマイズした Skin:Vector と Extension:YouTube があったことにファイルを消してから気付いた…&lt;br /&gt;
** Skin:Vector はどうせマージできなかっただろうから諦めよう&lt;br /&gt;
&lt;br /&gt;
== 2020-11-13 ==&lt;br /&gt;
&lt;br /&gt;
* Cloudflare は &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; を見ずに URL だけでキャッシュの可否を決定するらしい&lt;br /&gt;
** [[User:Sigsign/vector.css]] が DYNAMIC ではなくキャッシュされてしまった（CSS 扱いになっている）&lt;br /&gt;
*** 通常のページは拡張子が付かないため assets と誤認されることがなく見逃していた&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgCdnMaxAge = 0;&amp;lt;/code&amp;gt; を設定すると &amp;lt;code&amp;gt;Cache-Control: private&amp;lt;/code&amp;gt; が付与されて BYPASS となる&lt;br /&gt;
*** Squid / Varnish は &amp;lt;code&amp;gt;Vary&amp;lt;/code&amp;gt; ヘッダーを考慮してくれるのでキャッシュしてくれたほうがありがたい&lt;br /&gt;
*** Cloudflare は考慮してくれないのでキャッシュされると困る&lt;br /&gt;
&lt;br /&gt;
== 2020-11-14 ==&lt;br /&gt;
&lt;br /&gt;
* 今日は寝不足のまま親戚行事に出て、昼過ぎから爆睡していた&lt;br /&gt;
* &amp;lt;code&amp;gt;action=raw&amp;lt;/code&amp;gt; ってキャッシュの側面で見ると最悪では…？&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgForcedRawSMaxage&amp;lt;/code&amp;gt; も標準では 300 秒（5分）しかないし&lt;br /&gt;
*** &amp;lt;code&amp;gt;$wgCdnMaxAge&amp;lt;/code&amp;gt;が 18000 秒（5時間）でこれが 300 秒なのはちょっと納得できない&lt;br /&gt;
*** &amp;lt;code&amp;gt;oldid&amp;lt;/code&amp;gt; 指定したら ResourceLoader みたいに 30 日間キャッシュしてほしい&lt;br /&gt;
* マニュアルを見たら &amp;lt;code&amp;gt;maxage&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;smaxage&amp;lt;/code&amp;gt; パラメーターが使えるらしい&lt;br /&gt;
** ここでは動作したが、ウィキペディア / Miraheze では効かなかった&lt;br /&gt;
** MWF は Varnish で &amp;lt;code&amp;gt;cache-control: private, s-maxage=0, max-age=0, must-revalidate&amp;lt;/code&amp;gt; に上書きしている模様&lt;br /&gt;
** [https://phabricator.wikimedia.org/T71460 T71460] によると &amp;quot;security and privacy reasons&amp;quot; とのこと&lt;br /&gt;
*** &amp;lt;code&amp;gt;max-age=0&amp;lt;/code&amp;gt; は no-store を意味しないし、毎回ダウンロードするわけじゃないよ！ との主張&lt;br /&gt;
*** いや、304 が返ってくるまでに数百 ms かかるのが遅い（し計算資源の無駄）という話なんですよ&lt;br /&gt;
*** [https://phabricator.wikimedia.org/T112937 T112937] のおかげで UserJS はクリーンになっているんじゃないのか&lt;br /&gt;
&lt;br /&gt;
== 2020-11-15 ==&lt;br /&gt;
&lt;br /&gt;
* UserJS を書いていて mw.html はクールに書けて便利だなーと思っていたら出力が String で悲しい&lt;br /&gt;
** Node を返してくれれば &amp;lt;code&amp;gt;appendChild()&amp;lt;/code&amp;gt; が使えるのに…&lt;br /&gt;
** &amp;lt;code&amp;gt;innerHTML()&amp;lt;/code&amp;gt; は死すべし、慈悲はない&lt;br /&gt;
* マジックワード / パーサー関数は &amp;lt;code&amp;gt;api.parse()&amp;lt;/code&amp;gt; で展開できる&lt;br /&gt;
* 最近ようやく本に書かれているプラクティスを実践できるようになってきた気がする&lt;br /&gt;
* 人のコードが汚いのか、自分の読解力が落ちているのか…&lt;br /&gt;
** コード読解力の高い人を改めて尊敬する&lt;br /&gt;
&lt;br /&gt;
== 2020-11-17 ==&lt;br /&gt;
&lt;br /&gt;
* Extension:DynamicPageList3 が MediaWiki 1.35 に対応できてなくて、いろんなところで阿鼻叫喚になっている&lt;br /&gt;
** コード読んでるけど、MW にはプリペアドステートメント的な仕組みはないんですか…？&lt;br /&gt;
*** 文字列結合でクエリを組み立てないでほしい&lt;br /&gt;
** コード読んで理解したが、クエリを組み立てているのではなく大元の条件式を動的に生成しているんだな&lt;br /&gt;
*** DPL は SQL を隠ぺいしているだけで、実質的には DML になっている&lt;br /&gt;
** 概ね直りそうな予感はした&lt;br /&gt;
*** INNER JOIN と WHERE ってやってること一緒なのか&lt;br /&gt;
*** 思わぬ学びを得たが、やっぱり SQL はよくわからない&lt;br /&gt;
* DPL3 は classes/Query.php と classes/Article.php を直せばいい（はず）&lt;br /&gt;
** FROM に actor を足して、WHERE actor.actor_id = XX.X_user_id で結合する&lt;br /&gt;
* PukiWiki から移ってきたときは「RDB を使ってるから早くなる」と思っていたのに…&lt;br /&gt;
** PukiWiki にも tracker という DPL3 みたいな無茶をするプラグインがある&lt;br /&gt;
** 今思うと、tracker はキャッシュすらしてないのによく動いてたな&lt;br /&gt;
&lt;br /&gt;
== 2020-11-18 ==&lt;br /&gt;
&lt;br /&gt;
* もう今月も後半になってきた&lt;br /&gt;
** そろそろサーバーの整理をしなきゃ…&lt;br /&gt;
*** メールサーバーの移行作業だけはやりたくなかったのに&lt;br /&gt;
*** 構築したのは何年も前なので記憶がない&lt;br /&gt;
* &amp;lt;code&amp;gt;$wgMiserMode&amp;lt;/code&amp;gt; に対応する準備をした&lt;br /&gt;
** 小さい Wiki に効果があるのかは疑問&lt;br /&gt;
* ついでに Sitemap や Robot policy 周りを整備した&lt;br /&gt;
** テンプレートやモジュールが検索に引っかかってもあまり嬉しくないし&lt;br /&gt;
** 設定が雑だと MediaWiki 名前空間も引っかかったりする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-19 ==&lt;br /&gt;
&lt;br /&gt;
* Extension:Editcount も壊れているらしい？&lt;br /&gt;
** ActorMigration をきちんと使っている行儀のいいコードに見えるような…&lt;br /&gt;
** いや、&amp;lt;code&amp;gt;COUNT(*)&amp;lt;/code&amp;gt; するコードは行儀がいいとは言えない&lt;br /&gt;
* メイリオの斜体が効かないのは知っていたが、MediaWiki が対策していないのは知らなかった&lt;br /&gt;
** Firefox は &amp;lt;code&amp;gt;font-family: Meiryo&amp;lt;/code&amp;gt; だけで斜体になるが、Chrome は &amp;lt;code&amp;gt;@font-face&amp;lt;/code&amp;gt; を使わないと斜体にならない&lt;br /&gt;
&lt;br /&gt;
== 2020-11-20 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;font-family&amp;lt;/code&amp;gt; 周りのあれこれを設定した&lt;br /&gt;
* 最近、あまりサーバーのお世話ができていないので明日明後日は頑張ろう&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=MediaWiki:Gadget-fixMeiryo&amp;diff=74</id>
		<title>MediaWiki:Gadget-fixMeiryo</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=MediaWiki:Gadget-fixMeiryo&amp;diff=74"/>
		<updated>2020-11-20T09:46:50Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: 説明を追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;メイリオで斜体を表示できるようにする: 自分好みの sans-serif フォントを使いたいときは OFF にしてください&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=MediaWiki:Gadget-fixMeiryo.css&amp;diff=73</id>
		<title>MediaWiki:Gadget-fixMeiryo.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=MediaWiki:Gadget-fixMeiryo.css&amp;diff=73"/>
		<updated>2020-11-20T09:44:45Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: @font-face を駆使してメイリオの斜体を表示させる&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * fixMeiryo.css&lt;br /&gt;
 *&lt;br /&gt;
 * @font-face を駆使してメイリオの斜体を表示させる。&lt;br /&gt;
 *&lt;br /&gt;
 * - Windows: メイリオで表示される（斜体も表示される）&lt;br /&gt;
 * - macOS: 任意の sans-serif フォントで表示される&lt;br /&gt;
 *   + Office 365 はシステムにメイリオをインストールしないため、メイリオで表示されることはない&lt;br /&gt;
 * - Other: 任意の sans-serif フォントで表示される&lt;br /&gt;
 *   + メイリオがインストールされている可能性はゼロに近い&lt;br /&gt;
 *&lt;br /&gt;
 * License: CC0&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
@font-face {&lt;br /&gt;
	font-family: MeiryoN;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
	src: local('Meiryo'), local('メイリオ');&lt;br /&gt;
}&lt;br /&gt;
@font-face {&lt;br /&gt;
	font-family: MeiryoN;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	src: local('Meiryo Bold'), local('メイリオ ボールド');&lt;br /&gt;
}&lt;br /&gt;
html, body {&lt;br /&gt;
	font-family: MeiryoN, sans-serif;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=MediaWiki:Gadgets-definition&amp;diff=72</id>
		<title>MediaWiki:Gadgets-definition</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=MediaWiki:Gadgets-definition&amp;diff=72"/>
		<updated>2020-11-20T09:35:24Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: fixup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== interface-gadgets ==&lt;br /&gt;
* fixCodeEditorFonts[ResourceLoader|default|targets=desktop,mobile]|fixCodeEditorFonts.css&lt;br /&gt;
* fixMeiryo[ResourceLoader|default]|fixMeiryo.css&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=MediaWiki:Gadgets-definition&amp;diff=71</id>
		<title>MediaWiki:Gadgets-definition</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=MediaWiki:Gadgets-definition&amp;diff=71"/>
		<updated>2020-11-20T09:34:21Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: fixMeiryo.css を追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== interface-gadgets ==&lt;br /&gt;
* fixCodeEditorFonts[ResourceLoader|default|targets=desktop,mobile]|fixCodeEditorFonts.css&lt;br /&gt;
* fixMeiryo[ResourceLoader|default]fixMeiryo.css&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-11&amp;diff=70</id>
		<title>利用者:Sigsign/diary/2020-11</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-11&amp;diff=70"/>
		<updated>2020-11-19T17:00:39Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2020-11-19 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NEWSECTIONLINK__&lt;br /&gt;
[[Category:Sigsignの日記]]&lt;br /&gt;
&lt;br /&gt;
==2020-11-02==&lt;br /&gt;
&lt;br /&gt;
*なんとなく日記を書き始めてみる&lt;br /&gt;
*個人ウィキを作っては壊しているような気がする（ここはたぶん四代目）&lt;br /&gt;
**MediaWiki は隠し事ができないので、恥ずかしいミスをすると心機一転したくなってしまう&lt;br /&gt;
**今回は SQLite から MariaDB の変更に伴う新設&lt;br /&gt;
***前回や前々回に比べればまともな理由&lt;br /&gt;
*以前は XREA の g 系サーバーで SQLite を使って動かしていたが複数の問題があった&lt;br /&gt;
**SQLite だと動かない拡張機能がそこそこある&lt;br /&gt;
**XMLReader が PHP のバージョンによって有効化されていたり無効化されていたりする&lt;br /&gt;
***XMLReader がないと記事のインポートができない&lt;br /&gt;
***XMLReader が動く唯一のバージョンが PHP 7.0 だが、MediaWiki 1.34 からサポート対象外になった&lt;br /&gt;
****MediaWiki 1.31 (LTS) を使い続けるのは厳しい&lt;br /&gt;
**→ VPS 上に PHP 7.4 + MariaDB の環境を作って MediaWiki 1.35 に乗り換えることにした&lt;br /&gt;
*CloudFlare を利用しているのでレスポンスはそれほど悪くない&lt;br /&gt;
*本当は拡張機能を入れたり設定を弄ったりしたいのだが、突然身内に不幸があって今日明日は無理そう&lt;br /&gt;
&lt;br /&gt;
==2020-11-03==&lt;br /&gt;
&lt;br /&gt;
* 昨日は Mobilefrontend と MinervaNeue を入れてから寝た&lt;br /&gt;
** 今のうちに dog-fooding しておこうという意図&lt;br /&gt;
* VisualEditor on mobile は何かと課題にぶつかる&lt;br /&gt;
** 新しい節を追加するのが難しい（ちょっと誤字脱字を直すくらいしか使い道がない）&lt;br /&gt;
** 箇条書きも書きづらい&lt;br /&gt;
*** &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;  （アスタリスク + スペース）で箇条書きに変換できることはできる&lt;br /&gt;
*** でもインデントを付ける方法がわからない…&lt;br /&gt;
** VisualEditor と SourceEditor で要約欄のデフォルトが異なっている&lt;br /&gt;
*** SourceEditor は &amp;lt;code&amp;gt;/* 節名 */&amp;lt;/code&amp;gt; が自動的に入力されるが、VisualEditor はそうならないので不便&lt;br /&gt;
* Fenix (Firefox for Android) でキャレットの位置が飛ぶ現象を観測している&lt;br /&gt;
** VisualEditor でも SourceEditor でも発生しているので Fenix or ATOK のバグかなあ…？&lt;br /&gt;
&lt;br /&gt;
== 2020-11-04 ==&lt;br /&gt;
&lt;br /&gt;
* モバイル版の SourceEditor は単純な &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;textarea&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ではないようだ&lt;br /&gt;
** &amp;lt;code&amp;gt;MobileFrontend/src/mobile.editor.overlay&amp;lt;/code&amp;gt; が何かしているらしい&lt;br /&gt;
** VE ならともかく MobileFrontend のバグを追いかけたくない気持ち&lt;br /&gt;
&lt;br /&gt;
== 2020-11-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日は&amp;lt;code&amp;gt;stale-while-revalidate&amp;lt;/code&amp;gt;(SWR)について調べていた&lt;br /&gt;
** そもそも長期間の&amp;lt;code&amp;gt;max-age&amp;lt;/code&amp;gt;にはあまり意味がないらしい&lt;br /&gt;
*** ローカルキャッシュは2日程度で消えてしまうらしい[https://blog.jxck.io/entries/2016-04-16/stale-while-revalidate.html#%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3]&lt;br /&gt;
*** キャッシュの容量上限は決まっていて、古いキャッシュから消されていくため&lt;br /&gt;
** CloudflareはSWRに対応していない&lt;br /&gt;
*** まあCDN/Reverse Proxyの挙動は直感的ではないので、これ以上複雑にすると挙動が理解できなくなってしまいそう&lt;br /&gt;
** 効果があるのはおそらくCSS/JSだろう&lt;br /&gt;
*** ということで&amp;lt;code&amp;gt;load.php&amp;lt;/code&amp;gt;限定でSWRを追加してみた&lt;br /&gt;
*** 画像はCloudflareに任せてしまうことにする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-08 ==&lt;br /&gt;
&lt;br /&gt;
* Cloudflareのファイアウォールルールについて調べた&lt;br /&gt;
** 「脅威レベル」の閾値がよくわからない&lt;br /&gt;
*** [https://support.cloudflare.com/hc/en-us/articles/200170056-Understanding-the-Cloudflare-Security-Level ドキュメント]によると、高が1以上、標準が15以上、低が25以上、基本的にOFFが50以上でチャレンジ画面になるらしい&lt;br /&gt;
** &amp;lt;code&amp;gt;ip.geoip.continent&amp;lt;/code&amp;gt;は[https://community.cloudflare.com/t/getting-error-ip-geoip-continent/214864 Businessプラン以上が必要だがドキュメントには記載がない]とのこと&lt;br /&gt;
** スパム対策としてちょっと厳しめに設定してみた&lt;br /&gt;
* 昨日設定したSWRが想定通りに機能していて感動している&lt;br /&gt;
* 拡張機能としてEcho、LoginNotify、Thanksなどを入れてみた&lt;br /&gt;
* Opcacheのfile cachingを有効にしてみた&lt;br /&gt;
** 心なしかキビキビ動くようになった気がする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-09 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;php-wikidiff2&amp;lt;/code&amp;gt;を導入した&lt;br /&gt;
* 拡張機能としてCheckUser、TemplateStyles、Abuse Filter、AntiSpoof、TorBlock、RevisionSlider、SandboxLinkを入れた&lt;br /&gt;
** StopForumSpamも入れるべきかな&lt;br /&gt;
* CheckUserに&amp;lt;code&amp;gt;Special:Investigate&amp;lt;/code&amp;gt;が追加されていた（まだβ版の模様）&lt;br /&gt;
* このウィキはできるだけ標準に寄せて運用する予定だったが、そもそも利用者が自分しかいないのだから、もっと冒険してもいいような気もしてきた&lt;br /&gt;
&lt;br /&gt;
== 2020-11-10 ==&lt;br /&gt;
&lt;br /&gt;
* そろそろ旧ウィキからデータをインポートしたいところ&lt;br /&gt;
* 新しいテーマを作りたいが Timeless が mustache に対応していないので面倒&lt;br /&gt;
** mustache に対応していて、Vector/MinervaNeue ほど複雑じゃなくて、改変しやすいテーマが欲しい&lt;br /&gt;
** Vector がごちゃごちゃしていて見づらいのは確かにそうで、もっとシンプルなテーマにしたくなる&lt;br /&gt;
* WebAuthn を入れたり、翻訳にちょっと手を出したりしている&lt;br /&gt;
** OATHAuth の翻訳をどうするか悩む&lt;br /&gt;
* FlaggedRevs は WMF で動いている実績があるし、ApprovedRevs はコンパクトでよさそう&lt;br /&gt;
** Core が査読に相当する機能を持つべきだと思うんだよな&lt;br /&gt;
** ApprovedRevs には PendingChanges に相当する保護機能はないが、マジックワードを使えば同じような運用はできそう&lt;br /&gt;
* StopForumSpam は out of the box な拡張機能ではなく、何やら設定が必要らしい&lt;br /&gt;
** Mediawiki.org の解説ではスパムを報告する機能があるはずだが、コードを読む限りは見当たらない&lt;br /&gt;
** 現在は IP アドレス一覧をロードして、ビットマスクを生成・利用する機能に限定されているようだ&lt;br /&gt;
** 大半のウィキは SFS の API を叩いてスパムを弾いてくれることを期待するんじゃないか&lt;br /&gt;
*** まあIPアドレスを外部のサービスに露出させるのはプライバシー上問題かもしれないが…&lt;br /&gt;
** DNSブラックリストのほうが経済的かもしれない&lt;br /&gt;
&lt;br /&gt;
== 2020-11-11 ==&lt;br /&gt;
&lt;br /&gt;
* ジョブキューを systemd-timer で実行するようにした&lt;br /&gt;
** 久々にシェルスクリプトを書いたら何も覚えてなくて困った&lt;br /&gt;
** systemd は journalctl がとにかく便利、-u オプションが最高&lt;br /&gt;
** ついでに &amp;lt;code&amp;gt;loadExitNodes.php&amp;lt;/code&amp;gt; も実行している&lt;br /&gt;
&lt;br /&gt;
== 2020-11-12 ==&lt;br /&gt;
* 昨日は旧ウィキから記事をインポートした&lt;br /&gt;
** 管理するウィキがまた一つ減った&lt;br /&gt;
** 放置しているウィキがまだあるはずなので、それらを早めに集約したい&lt;br /&gt;
* [[特別:Import|Special:Import]] はインターウィキ接頭辞を入力しないとインポートしてくれない&lt;br /&gt;
** &amp;lt;code&amp;gt;importDump.php&amp;lt;/code&amp;gt; を使うのは面倒なんだけどなあ&lt;br /&gt;
* もう一つ管理するウィキを減らした&lt;br /&gt;
** カスタマイズした Skin:Vector と Extension:YouTube があったことにファイルを消してから気付いた…&lt;br /&gt;
** Skin:Vector はどうせマージできなかっただろうから諦めよう&lt;br /&gt;
&lt;br /&gt;
== 2020-11-13 ==&lt;br /&gt;
&lt;br /&gt;
* Cloudflare は &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; を見ずに URL だけでキャッシュの可否を決定するらしい&lt;br /&gt;
** [[User:Sigsign/vector.css]] が DYNAMIC ではなくキャッシュされてしまった（CSS 扱いになっている）&lt;br /&gt;
*** 通常のページは拡張子が付かないため assets と誤認されることがなく見逃していた&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgCdnMaxAge = 0;&amp;lt;/code&amp;gt; を設定すると &amp;lt;code&amp;gt;Cache-Control: private&amp;lt;/code&amp;gt; が付与されて BYPASS となる&lt;br /&gt;
*** Squid / Varnish は &amp;lt;code&amp;gt;Vary&amp;lt;/code&amp;gt; ヘッダーを考慮してくれるのでキャッシュしてくれたほうがありがたい&lt;br /&gt;
*** Cloudflare は考慮してくれないのでキャッシュされると困る&lt;br /&gt;
&lt;br /&gt;
== 2020-11-14 ==&lt;br /&gt;
&lt;br /&gt;
* 今日は寝不足のまま親戚行事に出て、昼過ぎから爆睡していた&lt;br /&gt;
* &amp;lt;code&amp;gt;action=raw&amp;lt;/code&amp;gt; ってキャッシュの側面で見ると最悪では…？&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgForcedRawSMaxage&amp;lt;/code&amp;gt; も標準では 300 秒（5分）しかないし&lt;br /&gt;
*** &amp;lt;code&amp;gt;$wgCdnMaxAge&amp;lt;/code&amp;gt;が 18000 秒（5時間）でこれが 300 秒なのはちょっと納得できない&lt;br /&gt;
*** &amp;lt;code&amp;gt;oldid&amp;lt;/code&amp;gt; 指定したら ResourceLoader みたいに 30 日間キャッシュしてほしい&lt;br /&gt;
* マニュアルを見たら &amp;lt;code&amp;gt;maxage&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;smaxage&amp;lt;/code&amp;gt; パラメーターが使えるらしい&lt;br /&gt;
** ここでは動作したが、ウィキペディア / Miraheze では効かなかった&lt;br /&gt;
** MWF は Varnish で &amp;lt;code&amp;gt;cache-control: private, s-maxage=0, max-age=0, must-revalidate&amp;lt;/code&amp;gt; に上書きしている模様&lt;br /&gt;
** [https://phabricator.wikimedia.org/T71460 T71460] によると &amp;quot;security and privacy reasons&amp;quot; とのこと&lt;br /&gt;
*** &amp;lt;code&amp;gt;max-age=0&amp;lt;/code&amp;gt; は no-store を意味しないし、毎回ダウンロードするわけじゃないよ！ との主張&lt;br /&gt;
*** いや、304 が返ってくるまでに数百 ms かかるのが遅い（し計算資源の無駄）という話なんですよ&lt;br /&gt;
*** [https://phabricator.wikimedia.org/T112937 T112937] のおかげで UserJS はクリーンになっているんじゃないのか&lt;br /&gt;
&lt;br /&gt;
== 2020-11-15 ==&lt;br /&gt;
&lt;br /&gt;
* UserJS を書いていて mw.html はクールに書けて便利だなーと思っていたら出力が String で悲しい&lt;br /&gt;
** Node を返してくれれば &amp;lt;code&amp;gt;appendChild()&amp;lt;/code&amp;gt; が使えるのに…&lt;br /&gt;
** &amp;lt;code&amp;gt;innerHTML()&amp;lt;/code&amp;gt; は死すべし、慈悲はない&lt;br /&gt;
* マジックワード / パーサー関数は &amp;lt;code&amp;gt;api.parse()&amp;lt;/code&amp;gt; で展開できる&lt;br /&gt;
* 最近ようやく本に書かれているプラクティスを実践できるようになってきた気がする&lt;br /&gt;
* 人のコードが汚いのか、自分の読解力が落ちているのか…&lt;br /&gt;
** コード読解力の高い人を改めて尊敬する&lt;br /&gt;
&lt;br /&gt;
== 2020-11-17 ==&lt;br /&gt;
&lt;br /&gt;
* Extension:DynamicPageList3 が MediaWiki 1.35 に対応できてなくて、いろんなところで阿鼻叫喚になっている&lt;br /&gt;
** コード読んでるけど、MW にはプリペアドステートメント的な仕組みはないんですか…？&lt;br /&gt;
*** 文字列結合でクエリを組み立てないでほしい&lt;br /&gt;
** コード読んで理解したが、クエリを組み立てているのではなく大元の条件式を動的に生成しているんだな&lt;br /&gt;
*** DPL は SQL を隠ぺいしているだけで、実質的には DML になっている&lt;br /&gt;
** 概ね直りそうな予感はした&lt;br /&gt;
*** INNER JOIN と WHERE ってやってること一緒なのか&lt;br /&gt;
*** 思わぬ学びを得たが、やっぱり SQL はよくわからない&lt;br /&gt;
* DPL3 は classes/Query.php と classes/Article.php を直せばいい（はず）&lt;br /&gt;
** FROM に actor を足して、WHERE actor.actor_id = XX.X_user_id で結合する&lt;br /&gt;
* PukiWiki から移ってきたときは「RDB を使ってるから早くなる」と思っていたのに…&lt;br /&gt;
** PukiWiki にも tracker という DPL3 みたいな無茶をするプラグインがある&lt;br /&gt;
** 今思うと、tracker はキャッシュすらしてないのによく動いてたな&lt;br /&gt;
&lt;br /&gt;
== 2020-11-18 ==&lt;br /&gt;
&lt;br /&gt;
* もう今月も後半になってきた&lt;br /&gt;
** そろそろサーバーの整理をしなきゃ…&lt;br /&gt;
*** メールサーバーの移行作業だけはやりたくなかったのに&lt;br /&gt;
*** 構築したのは何年も前なので記憶がない&lt;br /&gt;
* &amp;lt;code&amp;gt;$wgMiserMode&amp;lt;/code&amp;gt; に対応する準備をした&lt;br /&gt;
** 小さい Wiki に効果があるのかは疑問&lt;br /&gt;
* ついでに Sitemap や Robot policy 周りを整備した&lt;br /&gt;
** テンプレートやモジュールが検索に引っかかってもあまり嬉しくないし&lt;br /&gt;
** 設定が雑だと MediaWiki 名前空間も引っかかったりする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-19 ==&lt;br /&gt;
&lt;br /&gt;
* Extension:Editcount も壊れているらしい？&lt;br /&gt;
** ActorMigration をきちんと使っている行儀のいいコードに見えるような…&lt;br /&gt;
** いや、&amp;lt;code&amp;gt;COUNT(*)&amp;lt;/code&amp;gt; するコードは行儀がいいとは言えない&lt;br /&gt;
* メイリオの斜体が効かないのは知っていたが、MediaWiki が対策していないのは知らなかった&lt;br /&gt;
** Firefox は &amp;lt;code&amp;gt;font-family: Meiryo&amp;lt;/code&amp;gt; だけで斜体になるが、Chrome は &amp;lt;code&amp;gt;@font-face&amp;lt;/code&amp;gt; を使わないと斜体にならない&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-11&amp;diff=69</id>
		<title>利用者:Sigsign/diary/2020-11</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-11&amp;diff=69"/>
		<updated>2020-11-18T16:36:35Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: /* 2020-11-18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NEWSECTIONLINK__&lt;br /&gt;
[[Category:Sigsignの日記]]&lt;br /&gt;
&lt;br /&gt;
==2020-11-02==&lt;br /&gt;
&lt;br /&gt;
*なんとなく日記を書き始めてみる&lt;br /&gt;
*個人ウィキを作っては壊しているような気がする（ここはたぶん四代目）&lt;br /&gt;
**MediaWiki は隠し事ができないので、恥ずかしいミスをすると心機一転したくなってしまう&lt;br /&gt;
**今回は SQLite から MariaDB の変更に伴う新設&lt;br /&gt;
***前回や前々回に比べればまともな理由&lt;br /&gt;
*以前は XREA の g 系サーバーで SQLite を使って動かしていたが複数の問題があった&lt;br /&gt;
**SQLite だと動かない拡張機能がそこそこある&lt;br /&gt;
**XMLReader が PHP のバージョンによって有効化されていたり無効化されていたりする&lt;br /&gt;
***XMLReader がないと記事のインポートができない&lt;br /&gt;
***XMLReader が動く唯一のバージョンが PHP 7.0 だが、MediaWiki 1.34 からサポート対象外になった&lt;br /&gt;
****MediaWiki 1.31 (LTS) を使い続けるのは厳しい&lt;br /&gt;
**→ VPS 上に PHP 7.4 + MariaDB の環境を作って MediaWiki 1.35 に乗り換えることにした&lt;br /&gt;
*CloudFlare を利用しているのでレスポンスはそれほど悪くない&lt;br /&gt;
*本当は拡張機能を入れたり設定を弄ったりしたいのだが、突然身内に不幸があって今日明日は無理そう&lt;br /&gt;
&lt;br /&gt;
==2020-11-03==&lt;br /&gt;
&lt;br /&gt;
* 昨日は Mobilefrontend と MinervaNeue を入れてから寝た&lt;br /&gt;
** 今のうちに dog-fooding しておこうという意図&lt;br /&gt;
* VisualEditor on mobile は何かと課題にぶつかる&lt;br /&gt;
** 新しい節を追加するのが難しい（ちょっと誤字脱字を直すくらいしか使い道がない）&lt;br /&gt;
** 箇条書きも書きづらい&lt;br /&gt;
*** &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;  （アスタリスク + スペース）で箇条書きに変換できることはできる&lt;br /&gt;
*** でもインデントを付ける方法がわからない…&lt;br /&gt;
** VisualEditor と SourceEditor で要約欄のデフォルトが異なっている&lt;br /&gt;
*** SourceEditor は &amp;lt;code&amp;gt;/* 節名 */&amp;lt;/code&amp;gt; が自動的に入力されるが、VisualEditor はそうならないので不便&lt;br /&gt;
* Fenix (Firefox for Android) でキャレットの位置が飛ぶ現象を観測している&lt;br /&gt;
** VisualEditor でも SourceEditor でも発生しているので Fenix or ATOK のバグかなあ…？&lt;br /&gt;
&lt;br /&gt;
== 2020-11-04 ==&lt;br /&gt;
&lt;br /&gt;
* モバイル版の SourceEditor は単純な &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;textarea&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ではないようだ&lt;br /&gt;
** &amp;lt;code&amp;gt;MobileFrontend/src/mobile.editor.overlay&amp;lt;/code&amp;gt; が何かしているらしい&lt;br /&gt;
** VE ならともかく MobileFrontend のバグを追いかけたくない気持ち&lt;br /&gt;
&lt;br /&gt;
== 2020-11-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日は&amp;lt;code&amp;gt;stale-while-revalidate&amp;lt;/code&amp;gt;(SWR)について調べていた&lt;br /&gt;
** そもそも長期間の&amp;lt;code&amp;gt;max-age&amp;lt;/code&amp;gt;にはあまり意味がないらしい&lt;br /&gt;
*** ローカルキャッシュは2日程度で消えてしまうらしい[https://blog.jxck.io/entries/2016-04-16/stale-while-revalidate.html#%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3]&lt;br /&gt;
*** キャッシュの容量上限は決まっていて、古いキャッシュから消されていくため&lt;br /&gt;
** CloudflareはSWRに対応していない&lt;br /&gt;
*** まあCDN/Reverse Proxyの挙動は直感的ではないので、これ以上複雑にすると挙動が理解できなくなってしまいそう&lt;br /&gt;
** 効果があるのはおそらくCSS/JSだろう&lt;br /&gt;
*** ということで&amp;lt;code&amp;gt;load.php&amp;lt;/code&amp;gt;限定でSWRを追加してみた&lt;br /&gt;
*** 画像はCloudflareに任せてしまうことにする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-08 ==&lt;br /&gt;
&lt;br /&gt;
* Cloudflareのファイアウォールルールについて調べた&lt;br /&gt;
** 「脅威レベル」の閾値がよくわからない&lt;br /&gt;
*** [https://support.cloudflare.com/hc/en-us/articles/200170056-Understanding-the-Cloudflare-Security-Level ドキュメント]によると、高が1以上、標準が15以上、低が25以上、基本的にOFFが50以上でチャレンジ画面になるらしい&lt;br /&gt;
** &amp;lt;code&amp;gt;ip.geoip.continent&amp;lt;/code&amp;gt;は[https://community.cloudflare.com/t/getting-error-ip-geoip-continent/214864 Businessプラン以上が必要だがドキュメントには記載がない]とのこと&lt;br /&gt;
** スパム対策としてちょっと厳しめに設定してみた&lt;br /&gt;
* 昨日設定したSWRが想定通りに機能していて感動している&lt;br /&gt;
* 拡張機能としてEcho、LoginNotify、Thanksなどを入れてみた&lt;br /&gt;
* Opcacheのfile cachingを有効にしてみた&lt;br /&gt;
** 心なしかキビキビ動くようになった気がする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-09 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;php-wikidiff2&amp;lt;/code&amp;gt;を導入した&lt;br /&gt;
* 拡張機能としてCheckUser、TemplateStyles、Abuse Filter、AntiSpoof、TorBlock、RevisionSlider、SandboxLinkを入れた&lt;br /&gt;
** StopForumSpamも入れるべきかな&lt;br /&gt;
* CheckUserに&amp;lt;code&amp;gt;Special:Investigate&amp;lt;/code&amp;gt;が追加されていた（まだβ版の模様）&lt;br /&gt;
* このウィキはできるだけ標準に寄せて運用する予定だったが、そもそも利用者が自分しかいないのだから、もっと冒険してもいいような気もしてきた&lt;br /&gt;
&lt;br /&gt;
== 2020-11-10 ==&lt;br /&gt;
&lt;br /&gt;
* そろそろ旧ウィキからデータをインポートしたいところ&lt;br /&gt;
* 新しいテーマを作りたいが Timeless が mustache に対応していないので面倒&lt;br /&gt;
** mustache に対応していて、Vector/MinervaNeue ほど複雑じゃなくて、改変しやすいテーマが欲しい&lt;br /&gt;
** Vector がごちゃごちゃしていて見づらいのは確かにそうで、もっとシンプルなテーマにしたくなる&lt;br /&gt;
* WebAuthn を入れたり、翻訳にちょっと手を出したりしている&lt;br /&gt;
** OATHAuth の翻訳をどうするか悩む&lt;br /&gt;
* FlaggedRevs は WMF で動いている実績があるし、ApprovedRevs はコンパクトでよさそう&lt;br /&gt;
** Core が査読に相当する機能を持つべきだと思うんだよな&lt;br /&gt;
** ApprovedRevs には PendingChanges に相当する保護機能はないが、マジックワードを使えば同じような運用はできそう&lt;br /&gt;
* StopForumSpam は out of the box な拡張機能ではなく、何やら設定が必要らしい&lt;br /&gt;
** Mediawiki.org の解説ではスパムを報告する機能があるはずだが、コードを読む限りは見当たらない&lt;br /&gt;
** 現在は IP アドレス一覧をロードして、ビットマスクを生成・利用する機能に限定されているようだ&lt;br /&gt;
** 大半のウィキは SFS の API を叩いてスパムを弾いてくれることを期待するんじゃないか&lt;br /&gt;
*** まあIPアドレスを外部のサービスに露出させるのはプライバシー上問題かもしれないが…&lt;br /&gt;
** DNSブラックリストのほうが経済的かもしれない&lt;br /&gt;
&lt;br /&gt;
== 2020-11-11 ==&lt;br /&gt;
&lt;br /&gt;
* ジョブキューを systemd-timer で実行するようにした&lt;br /&gt;
** 久々にシェルスクリプトを書いたら何も覚えてなくて困った&lt;br /&gt;
** systemd は journalctl がとにかく便利、-u オプションが最高&lt;br /&gt;
** ついでに &amp;lt;code&amp;gt;loadExitNodes.php&amp;lt;/code&amp;gt; も実行している&lt;br /&gt;
&lt;br /&gt;
== 2020-11-12 ==&lt;br /&gt;
* 昨日は旧ウィキから記事をインポートした&lt;br /&gt;
** 管理するウィキがまた一つ減った&lt;br /&gt;
** 放置しているウィキがまだあるはずなので、それらを早めに集約したい&lt;br /&gt;
* [[特別:Import|Special:Import]] はインターウィキ接頭辞を入力しないとインポートしてくれない&lt;br /&gt;
** &amp;lt;code&amp;gt;importDump.php&amp;lt;/code&amp;gt; を使うのは面倒なんだけどなあ&lt;br /&gt;
* もう一つ管理するウィキを減らした&lt;br /&gt;
** カスタマイズした Skin:Vector と Extension:YouTube があったことにファイルを消してから気付いた…&lt;br /&gt;
** Skin:Vector はどうせマージできなかっただろうから諦めよう&lt;br /&gt;
&lt;br /&gt;
== 2020-11-13 ==&lt;br /&gt;
&lt;br /&gt;
* Cloudflare は &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; を見ずに URL だけでキャッシュの可否を決定するらしい&lt;br /&gt;
** [[User:Sigsign/vector.css]] が DYNAMIC ではなくキャッシュされてしまった（CSS 扱いになっている）&lt;br /&gt;
*** 通常のページは拡張子が付かないため assets と誤認されることがなく見逃していた&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgCdnMaxAge = 0;&amp;lt;/code&amp;gt; を設定すると &amp;lt;code&amp;gt;Cache-Control: private&amp;lt;/code&amp;gt; が付与されて BYPASS となる&lt;br /&gt;
*** Squid / Varnish は &amp;lt;code&amp;gt;Vary&amp;lt;/code&amp;gt; ヘッダーを考慮してくれるのでキャッシュしてくれたほうがありがたい&lt;br /&gt;
*** Cloudflare は考慮してくれないのでキャッシュされると困る&lt;br /&gt;
&lt;br /&gt;
== 2020-11-14 ==&lt;br /&gt;
&lt;br /&gt;
* 今日は寝不足のまま親戚行事に出て、昼過ぎから爆睡していた&lt;br /&gt;
* &amp;lt;code&amp;gt;action=raw&amp;lt;/code&amp;gt; ってキャッシュの側面で見ると最悪では…？&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgForcedRawSMaxage&amp;lt;/code&amp;gt; も標準では 300 秒（5分）しかないし&lt;br /&gt;
*** &amp;lt;code&amp;gt;$wgCdnMaxAge&amp;lt;/code&amp;gt;が 18000 秒（5時間）でこれが 300 秒なのはちょっと納得できない&lt;br /&gt;
*** &amp;lt;code&amp;gt;oldid&amp;lt;/code&amp;gt; 指定したら ResourceLoader みたいに 30 日間キャッシュしてほしい&lt;br /&gt;
* マニュアルを見たら &amp;lt;code&amp;gt;maxage&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;smaxage&amp;lt;/code&amp;gt; パラメーターが使えるらしい&lt;br /&gt;
** ここでは動作したが、ウィキペディア / Miraheze では効かなかった&lt;br /&gt;
** MWF は Varnish で &amp;lt;code&amp;gt;cache-control: private, s-maxage=0, max-age=0, must-revalidate&amp;lt;/code&amp;gt; に上書きしている模様&lt;br /&gt;
** [https://phabricator.wikimedia.org/T71460 T71460] によると &amp;quot;security and privacy reasons&amp;quot; とのこと&lt;br /&gt;
*** &amp;lt;code&amp;gt;max-age=0&amp;lt;/code&amp;gt; は no-store を意味しないし、毎回ダウンロードするわけじゃないよ！ との主張&lt;br /&gt;
*** いや、304 が返ってくるまでに数百 ms かかるのが遅い（し計算資源の無駄）という話なんですよ&lt;br /&gt;
*** [https://phabricator.wikimedia.org/T112937 T112937] のおかげで UserJS はクリーンになっているんじゃないのか&lt;br /&gt;
&lt;br /&gt;
== 2020-11-15 ==&lt;br /&gt;
&lt;br /&gt;
* UserJS を書いていて mw.html はクールに書けて便利だなーと思っていたら出力が String で悲しい&lt;br /&gt;
** Node を返してくれれば &amp;lt;code&amp;gt;appendChild()&amp;lt;/code&amp;gt; が使えるのに…&lt;br /&gt;
** &amp;lt;code&amp;gt;innerHTML()&amp;lt;/code&amp;gt; は死すべし、慈悲はない&lt;br /&gt;
* マジックワード / パーサー関数は &amp;lt;code&amp;gt;api.parse()&amp;lt;/code&amp;gt; で展開できる&lt;br /&gt;
* 最近ようやく本に書かれているプラクティスを実践できるようになってきた気がする&lt;br /&gt;
* 人のコードが汚いのか、自分の読解力が落ちているのか…&lt;br /&gt;
** コード読解力の高い人を改めて尊敬する&lt;br /&gt;
&lt;br /&gt;
== 2020-11-17 ==&lt;br /&gt;
&lt;br /&gt;
* Extension:DynamicPageList3 が MediaWiki 1.35 に対応できてなくて、いろんなところで阿鼻叫喚になっている&lt;br /&gt;
** コード読んでるけど、MW にはプリペアドステートメント的な仕組みはないんですか…？&lt;br /&gt;
*** 文字列結合でクエリを組み立てないでほしい&lt;br /&gt;
** コード読んで理解したが、クエリを組み立てているのではなく大元の条件式を動的に生成しているんだな&lt;br /&gt;
*** DPL は SQL を隠ぺいしているだけで、実質的には DML になっている&lt;br /&gt;
** 概ね直りそうな予感はした&lt;br /&gt;
*** INNER JOIN と WHERE ってやってること一緒なのか&lt;br /&gt;
*** 思わぬ学びを得たが、やっぱり SQL はよくわからない&lt;br /&gt;
* DPL3 は classes/Query.php と classes/Article.php を直せばいい（はず）&lt;br /&gt;
** FROM に actor を足して、WHERE actor.actor_id = XX.X_user_id で結合する&lt;br /&gt;
* PukiWiki から移ってきたときは「RDB を使ってるから早くなる」と思っていたのに…&lt;br /&gt;
** PukiWiki にも tracker という DPL3 みたいな無茶をするプラグインがある&lt;br /&gt;
** 今思うと、tracker はキャッシュすらしてないのによく動いてたな&lt;br /&gt;
&lt;br /&gt;
== 2020-11-18 ==&lt;br /&gt;
&lt;br /&gt;
* もう今月も後半になってきた&lt;br /&gt;
** そろそろサーバーの整理をしなきゃ…&lt;br /&gt;
*** メールサーバーの移行作業だけはやりたくなかったのに&lt;br /&gt;
*** 構築したのは何年も前なので記憶がない&lt;br /&gt;
* &amp;lt;code&amp;gt;$wgMiserMode&amp;lt;/code&amp;gt; に対応する準備をした&lt;br /&gt;
** 小さい Wiki に効果があるのかは疑問&lt;br /&gt;
* ついでに Sitemap や Robot policy 周りを整備した&lt;br /&gt;
** テンプレートやモジュールが検索に引っかかってもあまり嬉しくないし&lt;br /&gt;
** 設定が雑だと MediaWiki 名前空間も引っかかったりする&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
	<entry>
		<id>https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-11&amp;diff=68</id>
		<title>利用者:Sigsign/diary/2020-11</title>
		<link rel="alternate" type="text/html" href="https://wiki.signote.cc/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sigsign/diary/2020-11&amp;diff=68"/>
		<updated>2020-11-18T10:18:03Z</updated>

		<summary type="html">&lt;p&gt;Sigsign: カテゴリを追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NEWSECTIONLINK__&lt;br /&gt;
[[Category:Sigsignの日記]]&lt;br /&gt;
&lt;br /&gt;
==2020-11-02==&lt;br /&gt;
&lt;br /&gt;
*なんとなく日記を書き始めてみる&lt;br /&gt;
*個人ウィキを作っては壊しているような気がする（ここはたぶん四代目）&lt;br /&gt;
**MediaWiki は隠し事ができないので、恥ずかしいミスをすると心機一転したくなってしまう&lt;br /&gt;
**今回は SQLite から MariaDB の変更に伴う新設&lt;br /&gt;
***前回や前々回に比べればまともな理由&lt;br /&gt;
*以前は XREA の g 系サーバーで SQLite を使って動かしていたが複数の問題があった&lt;br /&gt;
**SQLite だと動かない拡張機能がそこそこある&lt;br /&gt;
**XMLReader が PHP のバージョンによって有効化されていたり無効化されていたりする&lt;br /&gt;
***XMLReader がないと記事のインポートができない&lt;br /&gt;
***XMLReader が動く唯一のバージョンが PHP 7.0 だが、MediaWiki 1.34 からサポート対象外になった&lt;br /&gt;
****MediaWiki 1.31 (LTS) を使い続けるのは厳しい&lt;br /&gt;
**→ VPS 上に PHP 7.4 + MariaDB の環境を作って MediaWiki 1.35 に乗り換えることにした&lt;br /&gt;
*CloudFlare を利用しているのでレスポンスはそれほど悪くない&lt;br /&gt;
*本当は拡張機能を入れたり設定を弄ったりしたいのだが、突然身内に不幸があって今日明日は無理そう&lt;br /&gt;
&lt;br /&gt;
==2020-11-03==&lt;br /&gt;
&lt;br /&gt;
* 昨日は Mobilefrontend と MinervaNeue を入れてから寝た&lt;br /&gt;
** 今のうちに dog-fooding しておこうという意図&lt;br /&gt;
* VisualEditor on mobile は何かと課題にぶつかる&lt;br /&gt;
** 新しい節を追加するのが難しい（ちょっと誤字脱字を直すくらいしか使い道がない）&lt;br /&gt;
** 箇条書きも書きづらい&lt;br /&gt;
*** &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;  （アスタリスク + スペース）で箇条書きに変換できることはできる&lt;br /&gt;
*** でもインデントを付ける方法がわからない…&lt;br /&gt;
** VisualEditor と SourceEditor で要約欄のデフォルトが異なっている&lt;br /&gt;
*** SourceEditor は &amp;lt;code&amp;gt;/* 節名 */&amp;lt;/code&amp;gt; が自動的に入力されるが、VisualEditor はそうならないので不便&lt;br /&gt;
* Fenix (Firefox for Android) でキャレットの位置が飛ぶ現象を観測している&lt;br /&gt;
** VisualEditor でも SourceEditor でも発生しているので Fenix or ATOK のバグかなあ…？&lt;br /&gt;
&lt;br /&gt;
== 2020-11-04 ==&lt;br /&gt;
&lt;br /&gt;
* モバイル版の SourceEditor は単純な &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;textarea&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ではないようだ&lt;br /&gt;
** &amp;lt;code&amp;gt;MobileFrontend/src/mobile.editor.overlay&amp;lt;/code&amp;gt; が何かしているらしい&lt;br /&gt;
** VE ならともかく MobileFrontend のバグを追いかけたくない気持ち&lt;br /&gt;
&lt;br /&gt;
== 2020-11-07 ==&lt;br /&gt;
&lt;br /&gt;
* 昨日は&amp;lt;code&amp;gt;stale-while-revalidate&amp;lt;/code&amp;gt;(SWR)について調べていた&lt;br /&gt;
** そもそも長期間の&amp;lt;code&amp;gt;max-age&amp;lt;/code&amp;gt;にはあまり意味がないらしい&lt;br /&gt;
*** ローカルキャッシュは2日程度で消えてしまうらしい[https://blog.jxck.io/entries/2016-04-16/stale-while-revalidate.html#%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3]&lt;br /&gt;
*** キャッシュの容量上限は決まっていて、古いキャッシュから消されていくため&lt;br /&gt;
** CloudflareはSWRに対応していない&lt;br /&gt;
*** まあCDN/Reverse Proxyの挙動は直感的ではないので、これ以上複雑にすると挙動が理解できなくなってしまいそう&lt;br /&gt;
** 効果があるのはおそらくCSS/JSだろう&lt;br /&gt;
*** ということで&amp;lt;code&amp;gt;load.php&amp;lt;/code&amp;gt;限定でSWRを追加してみた&lt;br /&gt;
*** 画像はCloudflareに任せてしまうことにする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-08 ==&lt;br /&gt;
&lt;br /&gt;
* Cloudflareのファイアウォールルールについて調べた&lt;br /&gt;
** 「脅威レベル」の閾値がよくわからない&lt;br /&gt;
*** [https://support.cloudflare.com/hc/en-us/articles/200170056-Understanding-the-Cloudflare-Security-Level ドキュメント]によると、高が1以上、標準が15以上、低が25以上、基本的にOFFが50以上でチャレンジ画面になるらしい&lt;br /&gt;
** &amp;lt;code&amp;gt;ip.geoip.continent&amp;lt;/code&amp;gt;は[https://community.cloudflare.com/t/getting-error-ip-geoip-continent/214864 Businessプラン以上が必要だがドキュメントには記載がない]とのこと&lt;br /&gt;
** スパム対策としてちょっと厳しめに設定してみた&lt;br /&gt;
* 昨日設定したSWRが想定通りに機能していて感動している&lt;br /&gt;
* 拡張機能としてEcho、LoginNotify、Thanksなどを入れてみた&lt;br /&gt;
* Opcacheのfile cachingを有効にしてみた&lt;br /&gt;
** 心なしかキビキビ動くようになった気がする&lt;br /&gt;
&lt;br /&gt;
== 2020-11-09 ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;php-wikidiff2&amp;lt;/code&amp;gt;を導入した&lt;br /&gt;
* 拡張機能としてCheckUser、TemplateStyles、Abuse Filter、AntiSpoof、TorBlock、RevisionSlider、SandboxLinkを入れた&lt;br /&gt;
** StopForumSpamも入れるべきかな&lt;br /&gt;
* CheckUserに&amp;lt;code&amp;gt;Special:Investigate&amp;lt;/code&amp;gt;が追加されていた（まだβ版の模様）&lt;br /&gt;
* このウィキはできるだけ標準に寄せて運用する予定だったが、そもそも利用者が自分しかいないのだから、もっと冒険してもいいような気もしてきた&lt;br /&gt;
&lt;br /&gt;
== 2020-11-10 ==&lt;br /&gt;
&lt;br /&gt;
* そろそろ旧ウィキからデータをインポートしたいところ&lt;br /&gt;
* 新しいテーマを作りたいが Timeless が mustache に対応していないので面倒&lt;br /&gt;
** mustache に対応していて、Vector/MinervaNeue ほど複雑じゃなくて、改変しやすいテーマが欲しい&lt;br /&gt;
** Vector がごちゃごちゃしていて見づらいのは確かにそうで、もっとシンプルなテーマにしたくなる&lt;br /&gt;
* WebAuthn を入れたり、翻訳にちょっと手を出したりしている&lt;br /&gt;
** OATHAuth の翻訳をどうするか悩む&lt;br /&gt;
* FlaggedRevs は WMF で動いている実績があるし、ApprovedRevs はコンパクトでよさそう&lt;br /&gt;
** Core が査読に相当する機能を持つべきだと思うんだよな&lt;br /&gt;
** ApprovedRevs には PendingChanges に相当する保護機能はないが、マジックワードを使えば同じような運用はできそう&lt;br /&gt;
* StopForumSpam は out of the box な拡張機能ではなく、何やら設定が必要らしい&lt;br /&gt;
** Mediawiki.org の解説ではスパムを報告する機能があるはずだが、コードを読む限りは見当たらない&lt;br /&gt;
** 現在は IP アドレス一覧をロードして、ビットマスクを生成・利用する機能に限定されているようだ&lt;br /&gt;
** 大半のウィキは SFS の API を叩いてスパムを弾いてくれることを期待するんじゃないか&lt;br /&gt;
*** まあIPアドレスを外部のサービスに露出させるのはプライバシー上問題かもしれないが…&lt;br /&gt;
** DNSブラックリストのほうが経済的かもしれない&lt;br /&gt;
&lt;br /&gt;
== 2020-11-11 ==&lt;br /&gt;
&lt;br /&gt;
* ジョブキューを systemd-timer で実行するようにした&lt;br /&gt;
** 久々にシェルスクリプトを書いたら何も覚えてなくて困った&lt;br /&gt;
** systemd は journalctl がとにかく便利、-u オプションが最高&lt;br /&gt;
** ついでに &amp;lt;code&amp;gt;loadExitNodes.php&amp;lt;/code&amp;gt; も実行している&lt;br /&gt;
&lt;br /&gt;
== 2020-11-12 ==&lt;br /&gt;
* 昨日は旧ウィキから記事をインポートした&lt;br /&gt;
** 管理するウィキがまた一つ減った&lt;br /&gt;
** 放置しているウィキがまだあるはずなので、それらを早めに集約したい&lt;br /&gt;
* [[特別:Import|Special:Import]] はインターウィキ接頭辞を入力しないとインポートしてくれない&lt;br /&gt;
** &amp;lt;code&amp;gt;importDump.php&amp;lt;/code&amp;gt; を使うのは面倒なんだけどなあ&lt;br /&gt;
* もう一つ管理するウィキを減らした&lt;br /&gt;
** カスタマイズした Skin:Vector と Extension:YouTube があったことにファイルを消してから気付いた…&lt;br /&gt;
** Skin:Vector はどうせマージできなかっただろうから諦めよう&lt;br /&gt;
&lt;br /&gt;
== 2020-11-13 ==&lt;br /&gt;
&lt;br /&gt;
* Cloudflare は &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; を見ずに URL だけでキャッシュの可否を決定するらしい&lt;br /&gt;
** [[User:Sigsign/vector.css]] が DYNAMIC ではなくキャッシュされてしまった（CSS 扱いになっている）&lt;br /&gt;
*** 通常のページは拡張子が付かないため assets と誤認されることがなく見逃していた&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgCdnMaxAge = 0;&amp;lt;/code&amp;gt; を設定すると &amp;lt;code&amp;gt;Cache-Control: private&amp;lt;/code&amp;gt; が付与されて BYPASS となる&lt;br /&gt;
*** Squid / Varnish は &amp;lt;code&amp;gt;Vary&amp;lt;/code&amp;gt; ヘッダーを考慮してくれるのでキャッシュしてくれたほうがありがたい&lt;br /&gt;
*** Cloudflare は考慮してくれないのでキャッシュされると困る&lt;br /&gt;
&lt;br /&gt;
== 2020-11-14 ==&lt;br /&gt;
&lt;br /&gt;
* 今日は寝不足のまま親戚行事に出て、昼過ぎから爆睡していた&lt;br /&gt;
* &amp;lt;code&amp;gt;action=raw&amp;lt;/code&amp;gt; ってキャッシュの側面で見ると最悪では…？&lt;br /&gt;
** &amp;lt;code&amp;gt;$wgForcedRawSMaxage&amp;lt;/code&amp;gt; も標準では 300 秒（5分）しかないし&lt;br /&gt;
*** &amp;lt;code&amp;gt;$wgCdnMaxAge&amp;lt;/code&amp;gt;が 18000 秒（5時間）でこれが 300 秒なのはちょっと納得できない&lt;br /&gt;
*** &amp;lt;code&amp;gt;oldid&amp;lt;/code&amp;gt; 指定したら ResourceLoader みたいに 30 日間キャッシュしてほしい&lt;br /&gt;
* マニュアルを見たら &amp;lt;code&amp;gt;maxage&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;smaxage&amp;lt;/code&amp;gt; パラメーターが使えるらしい&lt;br /&gt;
** ここでは動作したが、ウィキペディア / Miraheze では効かなかった&lt;br /&gt;
** MWF は Varnish で &amp;lt;code&amp;gt;cache-control: private, s-maxage=0, max-age=0, must-revalidate&amp;lt;/code&amp;gt; に上書きしている模様&lt;br /&gt;
** [https://phabricator.wikimedia.org/T71460 T71460] によると &amp;quot;security and privacy reasons&amp;quot; とのこと&lt;br /&gt;
*** &amp;lt;code&amp;gt;max-age=0&amp;lt;/code&amp;gt; は no-store を意味しないし、毎回ダウンロードするわけじゃないよ！ との主張&lt;br /&gt;
*** いや、304 が返ってくるまでに数百 ms かかるのが遅い（し計算資源の無駄）という話なんですよ&lt;br /&gt;
*** [https://phabricator.wikimedia.org/T112937 T112937] のおかげで UserJS はクリーンになっているんじゃないのか&lt;br /&gt;
&lt;br /&gt;
== 2020-11-15 ==&lt;br /&gt;
&lt;br /&gt;
* UserJS を書いていて mw.html はクールに書けて便利だなーと思っていたら出力が String で悲しい&lt;br /&gt;
** Node を返してくれれば &amp;lt;code&amp;gt;appendChild()&amp;lt;/code&amp;gt; が使えるのに…&lt;br /&gt;
** &amp;lt;code&amp;gt;innerHTML()&amp;lt;/code&amp;gt; は死すべし、慈悲はない&lt;br /&gt;
* マジックワード / パーサー関数は &amp;lt;code&amp;gt;api.parse()&amp;lt;/code&amp;gt; で展開できる&lt;br /&gt;
* 最近ようやく本に書かれているプラクティスを実践できるようになってきた気がする&lt;br /&gt;
* 人のコードが汚いのか、自分の読解力が落ちているのか…&lt;br /&gt;
** コード読解力の高い人を改めて尊敬する&lt;br /&gt;
&lt;br /&gt;
== 2020-11-17 ==&lt;br /&gt;
&lt;br /&gt;
* Extension:DynamicPageList3 が MediaWiki 1.35 に対応できてなくて、いろんなところで阿鼻叫喚になっている&lt;br /&gt;
** コード読んでるけど、MW にはプリペアドステートメント的な仕組みはないんですか…？&lt;br /&gt;
*** 文字列結合でクエリを組み立てないでほしい&lt;br /&gt;
** コード読んで理解したが、クエリを組み立てているのではなく大元の条件式を動的に生成しているんだな&lt;br /&gt;
*** DPL は SQL を隠ぺいしているだけで、実質的には DML になっている&lt;br /&gt;
** 概ね直りそうな予感はした&lt;br /&gt;
*** INNER JOIN と WHERE ってやってること一緒なのか&lt;br /&gt;
*** 思わぬ学びを得たが、やっぱり SQL はよくわからない&lt;br /&gt;
* DPL3 は classes/Query.php と classes/Article.php を直せばいい（はず）&lt;br /&gt;
** FROM に actor を足して、WHERE actor.actor_id = XX.X_user_id で結合する&lt;br /&gt;
* PukiWiki から移ってきたときは「RDB を使ってるから早くなる」と思っていたのに…&lt;br /&gt;
** PukiWiki にも tracker という DPL3 みたいな無茶をするプラグインがある&lt;br /&gt;
** 今思うと、tracker はキャッシュすらしてないのによく動いてたな&lt;/div&gt;</summary>
		<author><name>Sigsign</name></author>
	</entry>
</feed>