ヤマアラシのジレンマ

Das Dilemma der Stachelschweine - 「心の家路」のブログ

小辞典の用語がソートされない(ローカルで)

小辞典の項目がソートされないという話。ただし、ローカルの開発環境だけ発生(ieji.orgでは発生しない)。

1. ロケールjaでソートするためには、intlモジュールが必要なのに、php.iniで

;extension=intl

となっていたのが原因だった。

しかし、行頭の;を削除して、Apacheを再起動しても改善しなかった。

2. error_logs を見てみることにする

error_log="\xampp\php\logs\php_error_log"

php/の下にlogs/がなかったので、mkdirして再試行。

3. PHP Startup: Unable to load dynamic library 'intl' というエラーメッセージが出ている。

https://www.narenohate.com/install-intl

によると、PATHが通っていないのが原因だとか。\XAMPP\PHPを追加して再起動。

解決しました。

Movable Type 7 をアップデートする

ときどきセキュリティアップデートをインストールしなければならないが、WordPressなどと違って、管理画面の操作一発でアップデートとならいなところがMTの面倒なところだ。メモ書きとして、MT7のアップデート手段を書いておく。


【1】 まずMovableTypeのアップデートの前に、Perlのバージョンを確認する

MovableTypeのダッシュボードから システム設定システム情報 と進み 「システム情報」Perlのバージョンがバージョン番号だけで、特にメッセージが表示されていなければオーケー。Perlのバージョンが古すぎれば、バージョンを切り替える(少なくとも、さくらやロリポップの場合には、サーバーのコントロールパネルでPerlのバージョン切り替えが可能である)。


【2】Movable Type 個人無償版ダウンロード

ここから行なう。

メールアドレスを入力し、利用目的は「バージョンアップ」として送信すると、ダウンロードのURLがメールで届く。


【3】 データベースのバックアップをする

私は面倒くさいのでいつも省略しているが、忘れずにやっておくべき。
(さすがに毎日の定期バックアップは行なっている)


【4】 ZIPファイルのアップロード

MT7-Rxxxx.zip を tmp ディレクトリにアップロードする
(FTPとかで良いが、下の例はscpを使っている)

scp MT7-Rxxxx.zip hoge@fuga.org:tmp

【5】 ログインしてunzipする

ssh hoge@fuga.org

# httpdのディレクトリに移動

cd www

# unzipすると MT7-Rxxxx というディレクトリができて、その中に展開される

unzip ../tmp/MT7-Rxxxx.zip

# MT7-Rxxxx → mt-new にリネーム

mv MT7-Rxxxx mt-new

【6】 古いMovableTypeからコピーするもの

# mt-config.cgi のコピー

cp mt/mt-config.cgi mt-new

# MovableTypeのデフォルトプラグイン以外のプラグインをインストールしていたらコピーする

  • デフォルトプラグイン:
    • BlockEditor
    • Comments
    • FacebookCommenters
    • FormattedText
    • FormattedTextForTinyMCE
    • GoogleAnalytics
    • Markdown
    • OpenID
    • Textile
    • TinyMCE
    • Trackback
    • WXRImporter
    • WidgetManager
    • spamlookup
cp -r mt/plugins/pluginname mt-new/plugins

# テーマ類のコピー

cp -Rf mt/mt-static/support/ mt-new/mt-static/support/
# あるいは↓でも同じ
cp -Rf mt/mt-static/support mt-new/mt-static

【7】 切り替える

mv mt mt-old
mv mt-new mt

【8】 ダッシュボードにアクセスする

https://hoge.org/mt/mt.cgi?__mode=dashboard

「アップグレード開始」が表示されるはず


ローカルでZIPを展開して、FTPで直接上書きしていたのに比べれば、スマートなやり方になったと言えると思う。

Windows 10 20H2で従来版Edge(Edge Classic)を使う。

Windows 10 の 20H2 からは従来版Edge(Edge Classic)が使えなくなってしまいました。いまどきEdge Classicを使いたい人は少ないでしょうが、20H2にアップデートしてから「しまった!」と思っている御仁もいるようで、僕もその一人です。『心の家路』がEdge Classicでもきちんと表示されるか確かめておきたいものですから。

しかしネットを検索してみても、Chromium Edgeとの共存のネタばかり表示されて、20H2で従来版を起動するノウハウは見つかりません。やむなく英語で検索してみたら、Microsoft Edge Insider の Discussions で見つかりました。

Microsoft Edge Legacy
https://techcommunity.microsoft.com/t5/discussions/microsoft-edge-legacy/m-p/1621710

nikhilk0 という人物の2020年8月31日の投稿に、

I, too, faced this issue on my 20H2 machine after Edgium stable 85 update. The only workaround I found, for now, is to delete BrowserReplacement key value at 'Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\ClientState\{56EB18F8-B008-4CBD-B6D2-8C97FE7E9062}' in registry. The only downside is that you have to delete this key each time Edge Chromium gets an update. Please proceed with caution with registries. I'm not responsible for any damage. If anyone has better solution I would be happy to try.

つまり、\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\ClientState\{56EB18F8-B008-4CBD-B6D2-8C97FE7E9062} というレジストリキーを削除すればいいわけだ(やってみたら、ちゃんと従来版Edgeが起動しました)。

ただし、Chromium Edgeが更新されるたびにこのキーを削除しなければなりません。

毎回レジストリエディタを起動しなくても、管理者として実行したコマンドプロンプトから

reg delete HKLM\SOFTWARE\Microsoft\EdgeUpdate\ClientState\{56EB18F8-B008-4CBD-B6D2-8C97FE7E9062} /v BrowserReplacement /f /reg:32
reg delete HKLM\SOFTWARE\Microsoft\EdgeUpdate\ClientState\{56EB18F8-B008-4CBD-B6D2-8C97FE7E9062} /v BrowserReplacement /f /reg:64

とやればオーケー。/f はYes/Noの確認を省くオプション。/reg:32 と /reg:64 は、実行しているWindowsが32bit版か、64bit版かによる差を吸収するものです。両方記述したバッチファイルにしとけばいいかも。


2021年4月5日追記

3月29日にリリースされたオプションの更新プログラムKB5000842をインストールすると、Edge Legacyが削除された。上記のレジストリエントリを削除しても、Edge Legacyを起動させることはできなかった(Chromium Edgeが起動してしまう)。

KB5000842はこのまま問題がなければ、4月の月例更新プログラムに含まれることになる。いまのところ、これらを回避する手段は見つかっていない。

KB5000842はオプション扱いなので、わざわざユーザーがインストール操作をしなければインストールされることはないが、4月20日ごろの月例更新プログラムに含まれると予想されるため、それ以降のWindowsUpdateでEdge Legacyは自動的に削除されてしまうだろう。

Got error 176 "Read page with wrong checksum" from storage engine Aria への対処

mysqldump でデータベースをダンプしようとしたら、

Got error 176 "Read page with wrong checksum" from storage engine Aria

というエラーが出てしまった場合の対処。

  • phpMyAdmin にログイン
  • データベース一覧からmysqlを選ぶ
  • テーブルを「すべてチェックする」 → 「チェックしたものを:」 テーブルを修復する

情報元: Twin Turbo Computing

XAMPPでMySQLが起動しないときのためのメモ

XAMPPを使っていて、時々MySQL(MariaDB)が壊れて起動しなくなってしまうので、その修復方法のメモ。

XAMPP Control Panel の MySQL が緑色に点灯せず、PID(s) や Port(s) もブランクのまま、Startボタンが表示されていて、下のステータスには、こんな感じの赤い行が表示される(Apacheは動いている)。

7c7ec0b0ffc2e0d0f46b5665825a7681.png

16:57:37 [mysql] Attempting to start MySQL app...
16:57:38 [mysql] Status change detected: running
16:57:39 [mysql] Status change detected: stopped
16:57:39 [mysql] Error: MySQL shutdown unexpectedly.
16:57:39 [mysql] This may be due to a blocked port, missing dependencies,
16:57:39 [mysql] improper privileges, a crash, or a shutdown by another method.
16:57:39 [mysql] Press the Logs button to view error logs and check
16:57:39 [mysql] the Windows Event Viewer for more clues
16:57:39 [mysql] If you need more help, copy and post this
16:57:39 [mysql] entire log window on the forums

/xampp/mysql/data/mysql_error.log を見ると、エラーの起きた時間あたりにこんな行があった。

2020-08-27 16:57:37 0 [ERROR] mysqld.exe: Aria recovery failed. Please run aria_chk -r on all Aria tables and delete all aria_log.######## files

Aria FAQRemove logs and run aria_chk on your *.MAI files という荒技が書いてあったのでやってみる。

aria_chk.exe は \xampp\mysql\bin に、*.MAIは \xampp\mysql\data\mysql にある

cd \xampp\mysql\data\mysql
..\..\bin\aria_chk -r *.mai
cd ..
del aria_log.????????

これで XAMPP Control Panel の MySQL の Start を押すと、

17:14:09 [mysql] Attempting to start MySQL app...
17:14:09 [mysql] Status change detected: running

ダメだった場合は、さらに

del *.00????
del *.info
del *.index

を試してみる。del *.* でもいいかもしれない。(つまり \xampp\mysql\data のファイルを消す(サブフォルダは残す))。

私の場合には、Windowsのリブート後に起きることが多い。DBのatomicな更新の途中で強制終了が起きると、一貫性が保持できなくなってしまうのだろうか。

Luxeritasのメニューが英語になってしまう問題

デザインテーマには、Luxeritas を使っているのだが、いつ頃からか、WordPressの設定メニューのLuxeritasの項目が「全部英語」になってしまった。

どこかに設定項目があるのかと探してみたが、WordPressの言語設定([設定]→[一般]にあるやつ)が反映されるはずで、特にLuxeritas固有の言語設定は見当たらなかった。

ネットで検索すると「KUSANAGIの翻訳アクセラレーター」という話が見つかるが、これは関係ない。

設定メニューが英語になるだけなら自分が我慢すれば良いが、ブログエントリのコメント関係も英語になっていた。それだと放置もしづらい。

Luxeritasのコードをみても、get_locale()の付近は常識的なコードばかりだ。

すっかり原因が分からなくなり、途方に暮れていたが、ちゃんと動作している(設定が日本語のままの)Luxeritasのサイトもあるので、そことフォルダの中身を比較してみた。・・・結果、wp-content/themes/luxeritas/languages フォルダが存在していなかった。*.po *.moファイルがなければ日本語が表示できるわけがない。

languageフォルダをコピーしたらちゃんと日本語に戻った。そのフォルダが消えてなくなっていた原因は皆目見当も付かないが、とりあえず解決したということで。

WordPress高速化の試み

速度計測や調査に使ったサイト

PageSpeed Insights
https://developers.google.com/speed/pagespeed/insights/?hl=ja

WEBPAGETEST
https://www.webpagetest.org/


余分なCSS読み込みを削る

wp-includes/css/dist/block-library/style.min.css
wp-includes/css/dist/block-library/theme.min.css
 Luxeritasの設定:WordPressのブロックライブラリ用CSS→CSSをHTMLに埋め込む、で埋め込みに

wp-content/themes/luxech/style.min.css
 Luxeritasの設定:テーマのCSSをHTMLに埋め込む→ON、で埋め込みに

wp-includes/css/dashicons.min.css
 How to remove dashicons.min.css from frontend?
 https://wordpress.stackexchange.com/questions/161476/how-to-remove-dashicons-min-css-from-frontend/161482
 functions.php にコードを追加し、ログインしていないときには読み込まないように変更

Formzuプラグインの削除(インラインフレームの埋め込みに変更した)

Autoptimzeプラグインの採用
 CSSやJSをまとめて読み込むようにした。


その他(Luxeritasの設定)

 子テーマの Javascript ( luxech.js ) を読み込まない→ON
 WordPress の絵文字用スクリプトを読み込まないようにする
 アイコンの読み込み方法→SVG with JavaScript ( SVG で表示 )を選択
 Javascript の読み込み元→CDN


参考サイト:
Yomerumoのスマホページの表示速度が約半分にまでなった話

MovableTypeのメンテナンス用情報

サーバー移転に伴って、いろいろ面倒だったので、後々のためのメモを書いておきます(自分用)。