PythonのCGIでバイナリファイルを扱う場合の注意

PythonのCGIでバイナリファイルを扱う場合はprintで改行コードが追加されることに注意してください。

具体的には

print(open('/path/to/file', 'rb').read())

のようなスクリプト書いてファイルをダウンロードさせようとすると、元のファイルより1バイト分大きなファイルになってしまいます。

修正は例えば次のような感じです。

sys.stdout.write(open('/path/to/file', 'rb').read())

普段HTMLXMLなどを扱っている場合は改行コードで問題にならないので、バイナリファイルを扱う場合は気を付けてください。

リンク

cgi — Common Gateway Interface support — Python 3.8.1rc1 documentation
https://docs.python.org/3/library/cgi.html

'SceneCamera' is not valid

Unityで作業をしていたら次のようなエラーメッセージ

transform.position assign attempt for 'SceneCamera' is not valid. Input position is { NaN, NaN, NaN }.

が永遠と表示され、Unityを再起動してもエラーが出続けるという状況に遭遇した場合は、Sceneのタブを「右クリック » Close Tab」して、

Window » General » Scene

から開き直すと回復する場合があるようです。

Unityのバグなのか何か分かりませんが、Webで検索してみると結構古くからある現象みたいです。

LinuxにAndroid端末を接続してMTPでファイル転送

LinuxにAndroid端末をUSB接続してファイル転送(MTP)を使いたい場合「MTPfs」というツールが使えます。

インストール(Gentoo Linux)

# emerge --ask --verbose mtpfs

使い方

マウント

# mtpfs /mnt/mount_point

アンマウント

# fusermount -u /mnt/mount_point

FUSEなのでマウント後のファイルの読み書き等は普通にできます。

リンク

MTPfs – Dual Elephants – Chris Debenhams homepage
https://www.adebenham.com/mtpfs/

GitHub – cjd/mtpfs: Filesystem to mount MTP devices directly
https://github.com/cjd/mtpfs