pkgsrc: PHP7から8への移行
(主にpkgsrcで)apacheのphpモジュールを7系列から8系列に移行したときにひっかかる(ひっかかった)ところ。
具体的に起きる事象や対処法は、pkgのビルド環境などによって異なります。あと、PHPと直接関係ないものも混ざってます。
(主にpkgsrcで)apacheのphpモジュールを7系列から8系列に移行したときにひっかかる(ひっかかった)ところ。
具体的に起きる事象や対処法は、pkgのビルド環境などによって異なります。あと、PHPと直接関係ないものも混ざってます。
WordPress 6.1 からサイトヘルスステータスに「永続オブジェクトキャッシュ (Persistent Object Cache)」の項目が増えたらしいのだけれど、同じ設定なのに警告が出たり出なかったりするんだよね。
…2022-01-31追記 ♩=… を指定するだけの簡易版作った。普通はこれで十分な気が。
https://est.ceres.ne.jp/tmp/mucom-tempo-easy.html
毎回計算式探すの面倒なので作った。1万年ぶりにJavaScript書いたので合ってるかわからんけど、計算はできてる気がする。
…DELLのすべてのページではないが、買い物やドライバ検索をしていると、汚いというか変な表示に遭遇する(かなり前から)。
そういったページでは、CSS で body
にこんな font-family
の指定がある:
(実際には1行に押し込んであるので適当にリフォーマットしています)
font-family: Roboto-Regular, Roboto-Light, "Cordia New",
"Microsoft Sans Serif", Utsaah, "Devanagari MT", "Nirmala UI",
Latha, InaiMathi, Gautami, "Telugu Sangam MN", Tunga,
"Kannada Sangam MN", Kartika, "Malayalam Sangam MN", Shruti,
"Nirmala UI", "Gujarati MT", "Gujarati Sangam MN", Vrinda,
"Bangla Sangam MN", "Meiryo UI Reg", "メイリオ Reg",
"MS UI Gothic Reg", "Hiragino Kaku Gothic Reg", "ヒラギノ角ゴ Pro W3 Reg",
"Microsoft YaHei", "微软雅黑", "Hiragino Sans GB", "Microsoft JhengHei",
"微軟正黑體", "Malgun Gothic", "맑은 고딕", Gulim, AppleGothic,
"Apple LiGothic", "LiHei Pro", Osaka, STHeiti, "华文黑体", STXihei,
"华文细黑", SimHei, "黑体", "Arial Unicode MS", Arial, sans-serif;
日本語用として、メイリオ等を指定しようとした形跡もあるのだけれど、末尾に Reg が付いているせいでマッチせず、中国語(簡体字)フォントである "Microsoft YaHei"
がマッチしてしまう模様。(これ、Windows のシステムフォントで消せない?ので、うまい回避方法が思いつかない。)
ただ、h1
のようなヘッダは別にフォント指定があって、何故か Roboto-Medium
しか指定されていない(Roboto 日本語はない)ので、フォントが見つからずデフォルト(最近の Windows の Chrome 等なら Meiryo)になる。最初からこれでいいのでは……。
どれ?
wordpress(これを書いた時点では 5.4.2)の wp-admin/site-health.php
で、
1件の致命的な問題
バックグラウンド更新が想定通りに動作していません [セキュリティ]
といわれる。セキュリティの致命的な問題だというので早急に対処する。
(自動更新はできてるけどねえ?)
…
wordpress:「プラグインは wp_version_check() を無効化してアップデートを防ぎました。」がプラグインと関係なかった件もっと読む »
PyTorchというか、torchvisionを使おうとしただけで、こんなエラーが:
ImportError: cannot import name 'PILLOW_VERSION' from 'PIL'
Pillow 7.0.0でPILLOW_VERSION
が削除されたのが原因らしい。
PILLOW_VERSION has been removed. Use __version__ instead.
https://pillow.readthedocs.io/en/stable/releasenotes/7.0.0.html
とはいえ、ライブラリ内で使われているし、いろいろ理由があってライブラリのバージョンを下げたりライブラリを直接修正するのもできない。
で、
import PIL
PIL.PILLOW_VERSION = PIL.__version__
from torchvision import ...
とかいうアレなworkaroundを思いついた(動く)んだけど、これでいいのかPython。
条件が揃うと、nextcloud の occ status のような単純な処理でも segmentation fault が発生する。
根が深かったのでメモっておく。
概要
php で mysql と curl の extension が両方あり、mysql 5.7 以降と openssl 1.0系(以前)を組み合わせていると不具合が発生する(場合がある)。
pkgsrc(2019年2月頃~)の mysql のデフォルトは 5.7、NetBSD 8.[01] の openssl は 1.0.2k、なので引っ掛かりやすい(はず)。
(NetBSD 9.0 からは openssl 1.1系になるはず……)
…
pkgsrc/www/php-nextcloud などが特定条件下で segmentation fault になる件もっと読む »
Twenty Seventeen オサレだし、カスタマイズも進歩してるし、日本語フォントなんかもデフォルトで良い感じなのですが、
トップが画面全体を使って画像や動画を置くような形式(以下、勝手に「表紙」と呼ぶ)なのも、用途によるだろうけどいいとして、
その表紙にあるサイト名をクリックすると、ホームへのリンクなので、(当然)表紙が表示されたままなんですね。スクロールさせるか、右下にある(サイト名と比べると目立たない)「↓」を押せばいいんですが、ちょっと不親切な気がする。
それだけならいいんですが、ページ下にあるナビゲーション使うと、またいちいち表紙が表示されるんですね。そこでうっかりサイト名クリックするとトップに戻ってしまう。
で、Twenty Seventeenの子テーマ作って、home_url
のフィルタで URL の後ろに #content
足したらいいかなと思ってやってみたものの、今度はナビゲーションのリンクの途中に http://.../#content/page/2
みたいに入ってしまって、リンクとして機能しなくなるのでダメ。このフィルタ、こういう使い方想定してないですかね。
で、このナビゲーションはテーマじゃなくて wp-include/general-template.php
で作ってるようなので、そこを見ると paginate_links
というフィルタがあるらしい。なので、それを使う。
結果として、子テーマの functions.php
は、
<?php
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
}
add_filter('paginate_links', 'mylink', 1, 1);
function mylink( $link='' ) {
return $link . '#content';
}
?>
こんな感じに。
んで、home_url
の方はフィルタでいじるのを諦めて、元のテーマの template-parts/header/site-branding.php
をコピーして home_url('/')
を直接home_url('/#content')
へ変更。
もっとうまいやり方がありそうだけど、Wordpress(の中身)もPHPもマトモに触ったことないのでこの辺で妥協。
デフォルトがマシになってくれることを祈る。
Windows+Apache+MySQL+PHPで作られているという社内(?)のシステムのUNIX系OSへの移行作業とその後のメンテを押し付けられ命じられたので中を覗いてみる。
PHPは使ったことがないんだがなー。
DBを軽く見てみると
PHPの方を見てみると
など。
さて,どうやって捨てさせるか…。
掲示板などをはじめ,フォームから日本語を入力してsubmitしてサーバ側で処理をさせるような処理を行う場合,大昔のWebブラウザは日本語化が無理矢理だったりした関係で,ブラウザによってPOSTされる文字列のencodingがまちまちだった。このため,多くのブラウザに対応するとなると,受け取る側は自動判定をはじめ小技がいろいろ必要だった。
例えば任意の文字列のEUC-JP/Shift_JISの自動判別を完全に行うことは不可能である。ここでhiddenで適当な文字列を埋め込んで,その文字列を使ってencodingを調べるといった方法もあったが,hiddenと通常の入力フォームでそれぞれ違うencodingで送るブラウザもあったり。User-Agentを見て判定の優先順位を変えるとか涙ぐましい努力をしているものもあったが,新しいブラウザがまた違うパターンだったりしてぶち壊しだったり。
最近のWebブラウザだとだいたいフォームのHTMLのcharsetと同じものを用いるので,下手に自動判定等はしない方がいいようである。
ところで,最近のWebブラウザは英語や日本語以外の多言語を取り扱うことができる。EUC-JPで書かれたHTMLのフォームにEUC-JPにはない(ASCIIにもJISX0208にもない)文字を書くとどうなるか。
…