2020-03-02 (Mo)
_ 眼鏡が綺麗になった
眼鏡を掛けると視界が白っぽくなってた。
泡で出るハンドソープで軽く洗ってやったら、めっちゃ綺麗になった。
びっくり。そんなもんなのか。
今まで約30年、時々メガネ拭きで拭くくらいしかしたことなかった。 (そもそも眼鏡ほとんど使ってなかった)
_ スマホ OS アップデート
眠れないのに任せて、スマホの OS をアップデートした。 外部ストレージに zip ファイルを置いて手動で。
相変わらず、お腹開いたドロイド君が表示された後どうすればいいのか覚えてなかった。
- 電源切る
- 電源+下を長押し
- 振動したら電源を離す
- お腹開いたドロイド君が表示されたら離す
- ここから
- 電源を押しながら
- 上を押して離す
- リカバリメニューが表示されたら電源も離す
こうだね。覚えられねー。
無事、アップデートできました。
ASUS ZenFone Max (m2)
2022-03-02 (We)
_ python http.server の shutdown
#!/usr/bin/env python
import sys
import signal
import threading
import time
from http.server import HTTPServer, BaseHTTPRequestHandler
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
print('do_POST')
server = HTTPServer(('127.0.0.1', 8080), Handler)
def signaled(signal_number, frame):
print('SIGTERM, shutting down...')
server.shutdown()
print('done')
signal.signal(signal.SIGTERM, signaled)
print('starting')
server.serve_forever()
print('exit')
これを実行して kill コマンドで SIGTERM を送る。 すると、終了してくれない。
luna:~ % python test1.py
starting
SIGTERM, shutting down...
ここで止まってしまう。
ググりまくって、サンプルを見つけた。 以下のように修正した。
--- test1.py 2022-03-02 22:33:09.429720412 +0900
+++ test4.py 2022-03-02 22:33:04.005781546 +0900
@@ -19,5 +19,10 @@
signal.signal(signal.SIGTERM, signaled)
print('starting')
-server.serve_forever()
+#server.serve_forever()
+thread = threading.Thread(target=server.serve_forever)
+thread.daemon = True
+thread.start()
+thread.join()
+
print('exit')
すると、ちゃんと SIGTERM で終了するようになった。
luna:~ % python test4.py
starting
SIGTERM, shutting down...
done
exit
luna:~ %
ドキュメントをよく読むと…
shutdown()
Tell the serve_forever() loop to stop and wait until it
does. shutdown() must be called while serve_forever() is running
in a different thread otherwise it will deadlock.
別スレッドでやれよ、デッドロックするぞ、と書いてあった。
orz
んーしかし、本当は、既にマルチプロセスな作りなもので、 あんまりスレッドを使いたくないんだよねー。 それこそ意味不明なデッドロックになり兼ねないので。
Python は GIL で制御されてるから大丈夫だろうか…
2023-03-02 (Th)
_ 3D プログラミング
OpenGL 的な関数群を自前で作って、 perspective でシーンを画像ファイルに出力できるようにした。
が、そこに文字を描画したくなって、困った。
全然わからん… GLUT とか使えば、文字の描画くらいできるんだろうに…
と思って探してみたら、こんなのを見つけた。
おぉすごいサンプルだ……
これをもらってきて GL プログラミングしたら、あっさり同じところまで来た。
で、文字の描画は
glRasterPos3d(1, 0, 0);
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, 'X');
こんな感じで、わりとあっさり。
さすが世の中よくできてる…
ほんとは、テクスチャ的に貼り付けられたら良かったんだけど、 テクスチャすらよく理解してないのと、これで十分良さげだったので、 これでいいや、と。
2024-03-02 (Sa)
_ AltSnap を管理者権限で起動
AltSnap の設定で、ログオン時に起動して管理者権限に昇格するように 設定してあったんだけど、ログオン時に毎回 UAC が確認してきてうざい…
ぐぐってみたところ、そういうのはタスクスケジューラに設定するといいのね。
https://pc-karuma.net/windows-10-task-schedule-without-uac-prompt/
AltSnap の設定からはログオン時の起動を外して、タスクスケジューラに設定した。
おぉ… いい感じだ…