利用者:Sigsign/diary/2020-11

提供:SigWiki
ナビゲーションに移動 検索に移動


2020-11-02[編集 | ソースを編集]

  • なんとなく日記を書き始めてみる
  • 個人ウィキを作っては壊しているような気がする(ここはたぶん四代目)
    • MediaWiki は隠し事ができないので、恥ずかしいミスをすると心機一転したくなってしまう
    • 今回は SQLite から MariaDB の変更に伴う新設
      • 前回や前々回に比べればまともな理由
  • 以前は XREA の g 系サーバーで SQLite を使って動かしていたが複数の問題があった
    • SQLite だと動かない拡張機能がそこそこある
    • XMLReader が PHP のバージョンによって有効化されていたり無効化されていたりする
      • XMLReader がないと記事のインポートができない
      • XMLReader が動く唯一のバージョンが PHP 7.0 だが、MediaWiki 1.34 からサポート対象外になった
        • MediaWiki 1.31 (LTS) を使い続けるのは厳しい
    • → VPS 上に PHP 7.4 + MariaDB の環境を作って MediaWiki 1.35 に乗り換えることにした
  • CloudFlare を利用しているのでレスポンスはそれほど悪くない
  • 本当は拡張機能を入れたり設定を弄ったりしたいのだが、突然身内に不幸があって今日明日は無理そう

2020-11-03[編集 | ソースを編集]

  • 昨日は Mobilefrontend と MinervaNeue を入れてから寝た
    • 今のうちに dog-fooding しておこうという意図
  • VisualEditor on mobile は何かと課題にぶつかる
    • 新しい節を追加するのが難しい(ちょっと誤字脱字を直すくらいしか使い道がない)
    • 箇条書きも書きづらい
      • * (アスタリスク + スペース)で箇条書きに変換できることはできる
      • でもインデントを付ける方法がわからない…
    • VisualEditor と SourceEditor で要約欄のデフォルトが異なっている
      • SourceEditor は /* 節名 */ が自動的に入力されるが、VisualEditor はそうならないので不便
  • Fenix (Firefox for Android) でキャレットの位置が飛ぶ現象を観測している
    • VisualEditor でも SourceEditor でも発生しているので Fenix or ATOK のバグかなあ…?

2020-11-04[編集 | ソースを編集]

  • モバイル版の SourceEditor は単純な <textarea> ではないようだ
    • MobileFrontend/src/mobile.editor.overlay が何かしているらしい
    • VE ならともかく MobileFrontend のバグを追いかけたくない気持ち

2020-11-07[編集 | ソースを編集]

  • 昨日はstale-while-revalidate(SWR)について調べていた
    • そもそも長期間のmax-ageにはあまり意味がないらしい
      • ローカルキャッシュは2日程度で消えてしまうらしい[1]
      • キャッシュの容量上限は決まっていて、古いキャッシュから消されていくため
    • CloudflareはSWRに対応していない
      • まあCDN/Reverse Proxyの挙動は直感的ではないので、これ以上複雑にすると挙動が理解できなくなってしまいそう
    • 効果があるのはおそらくCSS/JSだろう
      • ということでload.php限定でSWRを追加してみた
      • 画像はCloudflareに任せてしまうことにする

2020-11-08[編集 | ソースを編集]

  • Cloudflareのファイアウォールルールについて調べた
  • 昨日設定したSWRが想定通りに機能していて感動している
  • 拡張機能としてEcho、LoginNotify、Thanksなどを入れてみた
  • Opcacheのfile cachingを有効にしてみた
    • 心なしかキビキビ動くようになった気がする

2020-11-09[編集 | ソースを編集]

  • php-wikidiff2を導入した
  • 拡張機能としてCheckUser、TemplateStyles、Abuse Filter、AntiSpoof、TorBlock、RevisionSlider、SandboxLinkを入れた
    • StopForumSpamも入れるべきかな
  • CheckUserにSpecial:Investigateが追加されていた(まだβ版の模様)
  • このウィキはできるだけ標準に寄せて運用する予定だったが、そもそも利用者が自分しかいないのだから、もっと冒険してもいいような気もしてきた

2020-11-10[編集 | ソースを編集]

  • そろそろ旧ウィキからデータをインポートしたいところ
  • 新しいテーマを作りたいが Timeless が mustache に対応していないので面倒
    • mustache に対応していて、Vector/MinervaNeue ほど複雑じゃなくて、改変しやすいテーマが欲しい
    • Vector がごちゃごちゃしていて見づらいのは確かにそうで、もっとシンプルなテーマにしたくなる
  • WebAuthn を入れたり、翻訳にちょっと手を出したりしている
    • OATHAuth の翻訳をどうするか悩む
  • FlaggedRevs は WMF で動いている実績があるし、ApprovedRevs はコンパクトでよさそう
    • Core が査読に相当する機能を持つべきだと思うんだよな
    • ApprovedRevs には PendingChanges に相当する保護機能はないが、マジックワードを使えば同じような運用はできそう
  • StopForumSpam は out of the box な拡張機能ではなく、何やら設定が必要らしい
    • Mediawiki.org の解説ではスパムを報告する機能があるはずだが、コードを読む限りは見当たらない
    • 現在は IP アドレス一覧をロードして、ビットマスクを生成・利用する機能に限定されているようだ
    • 大半のウィキは SFS の API を叩いてスパムを弾いてくれることを期待するんじゃないか
      • まあIPアドレスを外部のサービスに露出させるのはプライバシー上問題かもしれないが…
    • DNSブラックリストのほうが経済的かもしれない

2020-11-11[編集 | ソースを編集]

  • ジョブキューを systemd-timer で実行するようにした
    • 久々にシェルスクリプトを書いたら何も覚えてなくて困った
    • systemd は journalctl がとにかく便利、-u オプションが最高
    • ついでに loadExitNodes.php も実行している

2020-11-12[編集 | ソースを編集]

  • 昨日は旧ウィキから記事をインポートした
    • 管理するウィキがまた一つ減った
    • 放置しているウィキがまだあるはずなので、それらを早めに集約したい
  • Special:Import はインターウィキ接頭辞を入力しないとインポートしてくれない
    • importDump.php を使うのは面倒なんだけどなあ
  • もう一つ管理するウィキを減らした
    • カスタマイズした Skin:Vector と Extension:YouTube があったことにファイルを消してから気付いた…
    • Skin:Vector はどうせマージできなかっただろうから諦めよう

2020-11-13[編集 | ソースを編集]

  • Cloudflare は Content-Type を見ずに URL だけでキャッシュの可否を決定するらしい
    • User:Sigsign/vector.css が DYNAMIC ではなくキャッシュされてしまった(CSS 扱いになっている)
      • 通常のページは拡張子が付かないため assets と誤認されることがなく見逃していた
    • $wgCdnMaxAge = 0; を設定すると Cache-Control: private が付与されて BYPASS となる
      • Squid / Varnish は Vary ヘッダーを考慮してくれるのでキャッシュしてくれたほうがありがたい
      • Cloudflare は考慮してくれないのでキャッシュされると困る

2020-11-14[編集 | ソースを編集]

  • 今日は寝不足のまま親戚行事に出て、昼過ぎから爆睡していた
  • action=raw ってキャッシュの側面で見ると最悪では…?
    • $wgForcedRawSMaxage も標準では 300 秒(5分)しかないし
      • $wgCdnMaxAgeが 18000 秒(5時間)でこれが 300 秒なのはちょっと納得できない
      • oldid 指定したら ResourceLoader みたいに 30 日間キャッシュしてほしい
  • マニュアルを見たら maxage / smaxage パラメーターが使えるらしい
    • ここでは動作したが、ウィキペディア / Miraheze では効かなかった
    • MWF は Varnish で cache-control: private, s-maxage=0, max-age=0, must-revalidate に上書きしている模様
    • T71460 によると "security and privacy reasons" とのこと
      • max-age=0 は no-store を意味しないし、毎回ダウンロードするわけじゃないよ! との主張
      • いや、304 が返ってくるまでに数百 ms かかるのが遅い(し計算資源の無駄)という話なんですよ
      • T112937 のおかげで UserJS はクリーンになっているんじゃないのか

2020-11-15[編集 | ソースを編集]

  • UserJS を書いていて mw.html はクールに書けて便利だなーと思っていたら出力が String で悲しい
    • Node を返してくれれば appendChild() が使えるのに…
    • innerHTML() は死すべし、慈悲はない
  • マジックワード / パーサー関数は api.parse() で展開できる
  • 最近ようやく本に書かれているプラクティスを実践できるようになってきた気がする
  • 人のコードが汚いのか、自分の読解力が落ちているのか…
    • コード読解力の高い人を改めて尊敬する

2020-11-17[編集 | ソースを編集]

  • Extension:DynamicPageList3 が MediaWiki 1.35 に対応できてなくて、いろんなところで阿鼻叫喚になっている
    • コード読んでるけど、MW にはプリペアドステートメント的な仕組みはないんですか…?
      • 文字列結合でクエリを組み立てないでほしい
    • コード読んで理解したが、クエリを組み立てているのではなく大元の条件式を動的に生成しているんだな
      • DPL は SQL を隠ぺいしているだけで、実質的には DML になっている
    • 概ね直りそうな予感はした
      • INNER JOIN と WHERE ってやってること一緒なのか
      • 思わぬ学びを得たが、やっぱり SQL はよくわからない
  • DPL3 は classes/Query.php と classes/Article.php を直せばいい(はず)
    • FROM に actor を足して、WHERE actor.actor_id = XX.X_user_id で結合する
  • PukiWiki から移ってきたときは「RDB を使ってるから早くなる」と思っていたのに…
    • PukiWiki にも tracker という DPL3 みたいな無茶をするプラグインがある
    • 今思うと、tracker はキャッシュすらしてないのによく動いてたな

2020-11-18[編集 | ソースを編集]

  • もう今月も後半になってきた
    • そろそろサーバーの整理をしなきゃ…
      • メールサーバーの移行作業だけはやりたくなかったのに
      • 構築したのは何年も前なので記憶がない
  • $wgMiserMode に対応する準備をした
    • 小さい Wiki に効果があるのかは疑問
  • ついでに Sitemap や Robot policy 周りを整備した
    • テンプレートやモジュールが検索に引っかかってもあまり嬉しくないし
    • 設定が雑だと MediaWiki 名前空間も引っかかったりする

2020-11-19[編集 | ソースを編集]

  • Extension:Editcount も壊れているらしい?
    • ActorMigration をきちんと使っている行儀のいいコードに見えるような…
    • いや、COUNT(*) するコードは行儀がいいとは言えない
  • メイリオの斜体が効かないのは知っていたが、MediaWiki が対策していないのは知らなかった
    • Firefox は font-family: Meiryo だけで斜体になるが、Chrome は @font-face を使わないと斜体にならない

2020-11-20[編集 | ソースを編集]

  • font-family 周りのあれこれを設定した
  • 最近、あまりサーバーのお世話ができていないので明日明後日は頑張ろう
  • Extension:Editcount は壊れていなかった(別の問題だった)ようだ

2020-11-23[編集 | ソースを編集]

  • ここ数日はサーバーのお世話をしていたのだが、進捗があまりよろしくない
  • 一昨日は忙しかったし、昨日は気が付くと終わっていたし、今日は親戚付き合いがあり…

2020-11-25[編集 | ソースを編集]

  • UserJS を書くのは楽しいが、時間がかかりすぎて費用対効果があまりよくない
    • もうちょっとサクッと書けるようになりたい

2020-11-26[編集 | ソースを編集]

  • 昨日は c のデータベースを切り替えて、拡張機能を一通りインストールした
  • スキンの名前を決めるのに一苦労した
    • さすがに Daifuku は直球すぎるし…ということで Volt にした
  • MediaWiki 1.35 と 1.36 ですでに SkinMustache.php が全然違うんだけど…どういうことなの…
    • これは MediaWiki の悪いところで、スキンと SkinTemplate (SkinMustache) が密結合していて双方を読まないと全体像がわからない
    • どうやら現在の SkinMustache extends SkinTemplate extends Skin の構造を SkinMustache extends Skin に置き換えようと頑張っているらしい