font-feature-settingsにある組文字 組文字 - Wikipedia font-feature-settingsにある、というのは奇妙な表現。 CSSでdligを有効にした結果として組文字として表示されるのはそのように個々のフォントでリガチャが設定されているからで、フォント依存の話で…

TwitterのAPIが「32 Could not authenticate you.」で動かなくなったのでアカウントを見てみたところ「This App has violated Twitter Rules and policies.」の赤警告の文言が。 どうも単に有料化したために支払いか無料プラン選択が必要な模様。Freeプラン…

PHP 8.3 で Randomizer に追加される float 取得関数の区間判別の実装

PHP 8.3 で Randomizer に浮動小数点数のメソッドが追加される。 gh#9679 最小値、最大値と区間の開閉を表す enum IntervalBoundary (ClosedClosed, ClosedOpen, OpenClosed, OpenOpen) を指定して浮動小数点値の乱数を生成できる。当初この機能の実装では、…

Windows 10で、ディスプレイの電源を切る設定をしている。一定時間何も操作しないでいると画面の電源が切れる機能で、というか、設定していない人の方が少ないと思う省エネの機能だ。 ところが画面が暗くなって電源が切れるかと思ったらまた画面の電源が入っ…

ICU の MessageFormat で同じパラメータを二度使うと U_ARGUMENT_TYPE_MISMATCH が出る

MessageFormat に渡すパターンの中でpluralで使ったパラメータをもう一度使おうとすると U_ARGUMENT_TYPE_MISMATCH になる。 12345]); if (intl_get_error_code()) echo intl_get_error_message(); // Inconsistent…

ReactPHP 1.2のLoopと開始時のエラー

ReactPHP のバージョン1.2からイベントループをわざわざ作成しなくても良くなったようだ。 代わりにLoopクラスのstatic関数を使う。 run()さえもないが、Loopクラスがshutdown関数を登録して、プログラムの最後にrun()が実行される。作ったイベントループイ…

Let's Encryptで--preferred-chain 'DST Root CA X3'で証明書を発行してきていた。その間、他のサーバでは中間証明書は毎回更新せず固定で送っていたところなど、チェーンが切れたところも目にしたが、いよいよ期限となってきた。 オプション指定はもう消し…

reCAPTCHAのtimeout-or-duplicateは無視してはいけない

フォームにreCAPTCHA v3を置いたときに、発行したトークンが2分でタイムアウトしてしまう。そのためエラー理由にtimeout-or-duplicateが返ってきた場合にも成功扱いにする、という回避策があるらしい。 しかしこのエラーコードは名前の通り、トークン重複利…

Firefox 80でアドレスバーから検索できない

Firefox 80にアップデートしてから、アドレスバーでの検索ができなくなった。 Ctrl-Kでアドレスバーにフォーカスして「? キーワード」と入力しても「アドレスが正しくないようです」と出る。 もちろん検索エンジンは設定されている。オプションで検索バーを…

ある動画サービスのストリーミングをHTTPS経由で見ていたら、決まった場所でデコードに起因するとみられるブロックノイズと異音が入る。解像度を変えてみると入らないのでソースの問題ではないし、AACエンコーダもどれだけバグってもここまでの大音量なノイ…

出典:goo人名事典というのは

Wikipediaにgoo人名事典を出典とする人物の情報がちらほらある*1。そんな事典があったのかとgooを見てみるとSOCKETS人物データベースが出典となっている*2。 それではとSOCKETS人物データベースとは何かと見てみたのだが、どうもデータの作成過程が曖昧に書…

楽天モバイルのホスト名が解決できない

クライアントの操作ログを記録する必要があって、アクセス元ホストのIPアドレスからホスト名を記録する処理があるのだが、なぜか一部のレコードの逆引きしたホスト名部分に抜けがある。 DNS問い合わせなのでブロックしないように、やむを得ず非同期で行って…

Firefox 71のabout:configフィルタ

Firefoxでabout:configをいじるときに、以前はフィルタの入力を/で括って正規表現が使えていたのだが、バージョン71でUIがXULからHTMLに書き換わった影響で機能が省略されて使えなくなっていた。 不便なので試行錯誤したところ、ワイルドカードは使えるよう…

svnadminで最新commitを消した後、レポジトリ操作が失敗する

Subversionでマージするときに誤ってsparse checkoutした状態でマージしてしまった。 普通のdepth infinity状態でないとファイルの欠損が起きてしまう…らしい。改善されたというような話を聞いたのだが、とにかく今回はうまくいかず、変なコミットを作ってし…

名前解決できずSSHサーバに蹴られる

突然サーバにSSH接続できなくなった、と言っても原因はいろいろある。今日あるVPSサーバでscreen内のsshが切れているのを見つけ、再接続しても繋がらない問題が出た(ウェブにはつながる)。 海外の安サーバで最近AlphaRacks*1に買収されたところの一つだ。こ…

DOMDocument->loadHTML()でパースすると文字化けする

PHP

大体HTMLに原因があるのでそこを見ればよい。 原因1: CP932なのにmeta charset=Shift_JISになっている 原因2: meta charsetは正しいが、それより前にマルチバイト文字がある 原因3: そもそもmeta charsetがない ブラウザが「いい感じ」に処理してくれるのも…

RawGitからjsDelivrに移行した

今月末以後にサービス終了とのことなのでjsDelivrに移行した。 アナウンスから終了まで割と短いが、jsDelivrに専用のガイドページが用意されている。jsDelivrはRawGitのようにGitHubの参照もできるが、npmパッケージがある場合はそちらの方が利用率は高くな…

Subversion 1.10で認可され(authorize)ない

1.9から1.10にサーバをバージョンアップしたら問題が発生した。 svn up なり svn list なりを行うと、 svn: E175013: Access to '/path/to/hoge/trunk' forbiddenと出てアクセスできない。HTTP(S)経由なので、LogLevel debug としてログを追ってみると最後に…

CentOS 7でgeoipupdateが動かなくなった

GeoIP-update-1.5.0-11.el7 が4月からエラーを吐くようになった。 /etc/cron.weekly/geoipupdate: Received Error -21 (Sanity check database_info string failed) when attempting to update GeoIP Database Received Error -21 (Sanity check database_in…

cURL 7.56.0で大きなデータをPOSTするとデータが壊れる

curl_setopt()のCURLOPT_POSTFIELDSでデータを設定し送信するときに、16KBあたり以降のデータが先頭からの繰り返しになる。 PHP 7.1.11以降、最新のPHP 7.2.1でも起きる。 cURLのバグのようで、公式WindowsビルドのcURLがPHP 7.1.11から7.56.0にアップデート…

GNU screenで行の折り返しが変になる

GNU screen内のbashやvimで画面幅に収まらない長い行を表示しても折り返されず、右端の文字が上書きされるだけになってしまう。 症状として、bashで上下キーなどでhistoryを表示していると長い行を表示した後でその分だけカーソルが上に行ってしまう。vimで…

parse_url()の結果が壊れる

parse_url()で日本語URL(IRI状態)を渡すと壊れる。具体的には全角空白が別のUTF-8として無効な文字列になった。(PHP7.1)調べてみるとphp_replace_controlchars_ex()でiscntrl()を呼び出し、コントロール文字を'_'に置換している。 日本語のWindows環境ではAS…

Let's Encryptが落ちていてOCSPリクエストがエラーになる

Web

Service status: Service Disruption https://letsencrypt.status.io/ アクセスのあるサイトはキャッシュが生きているのだが、運悪く証明書を更新したばかりのサイトがあった。これは困る。Firefox の security.ssl.enable_ocsp_stapling = true (デフォルト…

CentOS 7のduplicity (paramiko)でホスト鍵検証が通らない

サーバを入れ替えてホスト名に対するホスト鍵が変わったサーバ。事前にknown_hostsを編集して新サーバの鍵を追加してあり、OpenSSHのssh、sftpでは正常に接続できる。 また前提としてpython2-paramiko-1.16.1-2.el7 時点ではECDSA鍵は使えないっぽいのでRSA…

CentOS 7のduplicity-0.7.11-1.el7 の--encrypt-keyが動作しない

GPGがエラーを起こす。 GPGError: GPG Failed, see log below: ===== Begin GnuPG log ===== gpg: invalid option "--pinentry-mode=loopback" ===== End GnuPG log =====とりあえずオプション指定を外して対応した。 /usr/lib64/python2.7/site-packages/du…

Adventure Land

Adventure LandというMORPG風のゲームがある。数か月前くらいにできて、まだプロトタイプだそうだが、cursors.io, agar.io, diep.ioのようにHTML5ベースのゲームだ。 HTML5ということはJavaScriptで動いているわけで、クライアントサイドでごにょごにょやる…

diff -Wの関数名長制限をなくす

diffには差分文脈の関数を表示する機能があり、-W (--show-function-line)で関数とするパターンをカスタマイズできる。ただ関数名の長さに40字の制限があって長いと途中で途切れてしまう。 unix diff --show-function-line truncates outputやfunction is tr…

WindowsのStrawberry Perlで最新のSQLiteを使う

SQLiteで新しいバージョンを使いたくなった。CPANで入れてみても9か月前のバージョンしか入らない。 cpanm -n DBD::SQLite perl -MDBD::SQLite -e "print $DBD::SQLite::sqlite_version" # 3.10.2 インターフェイスをどうこうする必要はないのでSQLiteのソー…

32bit版Windows 7をWindows 10に更新

あるPCがPCIボードの事情でWin 7 32bitにしがみついていたが最近それが不要になった。すでに10月で無料更新期限後だが、まだ普通に更新できるという話なので更新してみた。 まず公式ダウンロードページから作成ツールをダウンロードする。後々のことも考えて…

startコマンドがファイルデスクリプタを引き継いでしまう

3つのスクリプトがあるとする。 a.bat は b.bat を実行し、そのエラー出力をログに保存する b.bat はいろいろな処理をする過程で c.pl というデーモンを起動する c.pl はデーモンなので終了しない # a.bat call b.bat 2>>error.log # b.bat start wperl c.pl…