今日のアンインストール2021年04月07日 09:06

しばらく使ってないし、今後も使う予定が無いアプリをアンインストールしました。

・Second Life Viewer
・Steam
・Cocos2d
・Unity
・CornerTopic

あと、Microsoft PowerToys をインストールしてみたけど、あまり使いみちが無さそうなので、1日でアンインストール。

Windows エクスプローラのレイアウト2021年04月17日 16:37

Windowsのエクスプローラにレイアウト(表示形式)ってあるじゃないですか。特大アイコン、大アイコン、中アイコン、小アイコン、一覧、並べて表示、詳細、コンテンツってやつ。これがフォルダごとに設定できるのはいいんだけど、勝手に変わってることって無いですか?僕は結構よくあります。これかなりイラっとするんですけど、何か対策をご存知でしたら教えてください。

Cygwin bash を Windows Terminal で使うプロファイル2021年04月19日 08:13

settings.json へのプロファイルの設定

"commandline": "C:\\cygwin64\\bin\\env.exe CHERE_INVOKING=t /bin/bash --login -i",
"icon": "C:\\cygwin64\\Cygwin-Terminal.ico",
"startingDirectory": "%HOME%"

"name"や"hidden"はお好みで。

bashのオプション --login は、bashをログインシェルとして起動させる。そうしないと /etc/profile が実行されず、環境変数 PATH などがセットされない。

オプション -i は、起動するbashを対話的なシェルとする。

bashを直接起動せず、envを使ってCHERE_INVOKINGをセットした上でbashを起動するのは、/etc/profile でカレントディレクトリが ${HOME} にされてしまうのを防ぐため。

この設定で、エクスプローラーの右クリックメニュー「Open in Windows Terminal」で起動すると、そのフォルダでbashが起動する。

"startingDirectory" には、それ以外の場合の初期ディレクトリを設定しておく。

Facebookの投稿でシェアしたURLに勝手にパラメーターが付加される問題2021年04月21日 01:41

Facebookの投稿に
http://golf.shinh.org/p.rb?FizzBuzz#C
を書いてシェアしたら、クエリ部分("?FizzBuzz"のところ)に
?FizzBuzz&fbclid=IwAR32P2dTPc_FNJwlJpj_UBwwO5d61ZdHVCPUbb8Z63uxNA-FUVQ6OdUqIuk
という具合にfbclidというパラメーターが勝手に付加され、その結果、shinh.orgのサーバーでエラーになってしまいました。

Facebookさん、要らんことせんといて :-<

Windows+Apache+perlで #!/usr/bin/perl なCGIを動かす2021年04月26日 01:49

これまで、WindowsではActivePerlを使っていました。
でも今は Strawberry Perl のほうがいいみたいなので乗り換えました。

Perlのスクリプトのshebang行は通常

#!/usr/bin/perl

にしてますよね。Apacheはこれを読んで /usr/bin/perl を起動しようとするので、Windowsでもこのパスで perl.exe が起動するようにしないとCGIが動きません。

ActivePerlを使っていたときは、ActivePerlの bin フォルダにpathを通したうえで、ActivePerlの perl.exe を C:\usr\bin フォルダにコピーすればOKでした(コピーではなくシンボリックリンクでも良かったかも)。

しかし、Strawberry Perl ではそれではダメでした。C:\usr\bin に perl.exe をシンボリックリンクしてbash等から /usr/bin/perl script.pl を実行するとエラーなく動くのに、なぜかApacheでは 500 Internal Server Error になります。

で、いろいろ試行錯誤してたどり着いたのが、ApacheのScriptInterpreterSourceディレクティブを使うことでした。これはCGIファイルのshebang行(スクリプト先頭の#!で始まる行)を無視して拡張子のみ(.pl や .cgi)でスクリプトファイルを関連付け実行できるというものです。httpd.conf で対象ディレクトリに ScriptInterpreterSource registry を記述してみたら、無事、Apacheで#!/usr/bin/perlなCGIが動くようになりました。

めでたしめでたし

…が、以下の謎があります。

・ レジストリの設定も関連付けもしなくても動いちゃう。え?なんで?
・ C:\usr\bin\perl はやっぱり無いとダメ。なんで?

ま、動いてるから、いっか…