サルスベリ

今日の五条川、やっと渡り鳥の季節だ。
コサメビタキあたりがそろそろ現れるはず。

kosamebitaki

見つけたけど小枝じゃま、小さ過ぎて鳥認識は動かないし。
今回はいたよという証拠写真、ということで。

keri

ケリ、いや渡り鳥ではないんですが。
鳥認識はたしかに良くなっている気がする。

sarusuberi

サルスベリ、一本だけポツンと咲いていた。
今日は 12-40pro レンズなので玉ボケにしました。

F4 にしたけどもう少し開放すると被写界深度が足りない。
奥の花びらまでボケて眠い写真になる、結局絞る。
マイクロフォーサーズでこれですよ、フルサイズのボケ必要?
と、たまにはマイクロフォーサーズの宣伝をしてみる。

OM-1 ファーム v1.7

OM-1 ファームウエア更新きたー!
秋ごろという話だったけどあんがい早かった。

前回は設定が初期化されてしまったので今回は慎重に更新。
再起動で言語設定と時間設定が、また初期化されてもーたか?
カスタム設定とかはそのままだった、あーよかった。

test

被写体 AF 性能の向上らしいけど、うん良く食いつくような気がする。
鳥認識が役に立たなかったので一点フォーカスばかり使っていたけど。

test

前に枝があっても鳥のほうにフォーカスが、これを待っていた。
これなら鳥認識 ON で使える、OMDS さん信じていたぞ。

hakusekirei

こんなのしかいなかったので盆休み中に撮った奴でも。
ただのハクセキレイでも背景が良ければ絵になるもんだね。

yamagara

これも盆休み中に撮ったヤマガラ、真夏はこんなもんです。
今年ササゴイは五条川に来てくれなかったなぁ。

一点フォーカスでもこれくらいには取れるんですけどね。
せっかく被写体認識があるんだから使いたいやん。
ハイレゾショットは使ったことがないので改善点がわからんけど。
渡り鳥の季節を前にファーム更新してくれたことに感謝。

PyObjC Tips 更新

そんなこんなで PyObjC Tips 更新しました。
PyObjC Tips – Paepoi

macOS には PHP を入れていないので Fedora でページ作成。
面倒だけど Fedora 内とミラーリングするほうが面倒だし。

ところで Kate でも GVFS 接続で macOS 内のファイルが編集できるのね。
コレができるならもう Gedit はいらないよな、削除するか。

と思っていたら見つけた、Gedit の Flathub 版は v47 になっている。
https://gedit-technology.github.io/blog/
rpm では v46 のままだが、もしかしたらと入れてみる。

アイコンが変わった。
ダークテーマ対応、ただし OS 連動ではない。
ローカライズされず英語のまま。
~/.local/share/gedit/plugins に自作プラグインを置いても無視。
Python の fstring や mutch 文の色分けはされないまま。
PHP のヒアドキュメントインデント判別にも未対応なまま。
他の言語は解らないけど多分中身は v46 のまま。

だめだこりゃ、管理人はプログラミングをしていないのか?
今後バージョンが進んでも見た目以外の進化はしなさそう。

PyObjC がトンデモなく遅い

今日は久しぶりに PyObjC で小物を作ろうとした。
いやまあ macOS プログラミングは完全に放置気味でしたね。
ということでまずアップグレードを行なってと。

# pip Upgrade
pip3 install --upgrade pip

# PyObjC Install or Upgrade
pip3 install -U pyobjc

で本題、PyObjC コードの初期化がありえないほど遅い。
NSWindow を作ったら表示されるまで十秒くらい待たされる。
Python 標準モジュールのみのコードなら普通に一瞬だ。
しばらく色々試したらこういうことだった。

#!/usr/bin/env python3

'''
    app.old.py
'''

import time
start = time.time()

from AppKit import *
import objc

class AppMenu(NSMenu):
    def init(self):
        objc.super(AppMenu, self).init()
        item_app  = NSMenuItem.new()
        self.addItem_(item_app)
        menu_app = NSMenu.new()
        item_app.setSubmenu_(menu_app)
        # command+Q で閉じるメニュー
        item_quit = NSMenuItem.new()
        item_quit.initWithTitle_action_keyEquivalent_('Quit App', 'terminate:', 'q')
        menu_app.addItem_(item_quit)
        return self

# NSApp を作る
NSApplication.sharedApplication()
# command+Q で終了するメニューを入れる
NSApp.setMainMenu_(AppMenu.new())
# コレをしないと最前面に出てこない
NSApp.activateIgnoringOtherApps_(True)
# メインループを回さない
#NSApp.run()

# 経過時間 ms
print(f'{time.time() - start} ms')

from を使う今までやっていたコード。

#!/usr/bin/env python3

'''
    aoo.new.py
'''

import time
start = time.time()

import AppKit, objc

class AppMenu(AppKit.NSMenu):
    def init(self):
        objc.super(AppMenu, self).init()
        item_app  = AppKit.NSMenuItem.new()
        self.addItem_(item_app)
        menu_app = AppKit.NSMenu.new()
        item_app.setSubmenu_(menu_app)
        # command+Q で閉じるメニュー
        item_quit = AppKit.NSMenuItem.new()
        item_quit.initWithTitle_action_keyEquivalent_('Quit App', 'terminate:', 'q')
        menu_app.addItem_(item_quit)
        return self

# NSApp を作る
AppKit.NSApplication.sharedApplication()
# command+Q で終了するメニューを入れる
AppKit.NSApp.setMainMenu_(AppMenu.new())
# コレをしないと最前面に出てこない
AppKit.NSApp.activateIgnoringOtherApps_(True)
# メインループを回さないさない
#AppKit.NSApp.run()

# 経過時間 ms
print(f'{time.time() - start} ms')

都度プリフィクスを書く面倒くさいコード。

PyObjC

from で * を使うとトンデモネェ遅さになってしまった。
以前は from でも同じような速度で初期化されていたんですが。
NSApp だけでコレ、NSWindow まで作るとすげぇ悲惨。

Python 3.11 からの高速化の弊害なのかな。
from は全部辿ってキャッシュとかになっていたらまあこうなるよな。
いや PyObjC 側の不具合かもしれないけどプリフィクス化で解決するし。
Cocoa のメソッド名長いんだよな、GTK+ みたくできないのかと。
アスタリスクを使っている人は調べてみたほうがいいかも。

ついでに、objc は import しなくてもよかったのに必須になった。
activateIgnoringOtherApps が動作しない、何故?
ちょっと放置しすぎたな、もう少し調べよう。
秋の渡り鳥が来る前にやらないとまた放置しそうだし。

MPV AspectRate Change (2024)

いつのまにか MPV にてアスペクト比変更ができなくなっていた。
いや Shift+a での変更は可能、自作した拡張 Lua スクリプトが動かない。

How to add 21:9 Aspect ratio option in MPV Android? : r/mpv

色々探して上記を見つける。
video-aspect-override という property があるのね。

--mp.set_property('video-aspect', aspects[aspect_num])
mp.set_property('video-aspect-override', aspects[aspect_num])

これで動いた、思っていたより簡単でよかった。
Fedora の MPV は更新されていないし ffmpeg 側の仕様変更かな?
なので環境によって変わると思う、Fedora 40 な人は書き換え必須です。

せっかくなので Shift 追加で逆順変更機能も付けてみよう。

-- ~/.config/mpv/scripts/mpv_aspect_rate.lua

-- Shift+a でアスペクト比は変更できますけど
-- スマホの縦動画用が足りないので独自に作ってみました

local aspect_num = 0
local aspects = {'4:3', '16:9', '9:16', '3:4', '1:1', '3:2', '2:3'}

function on_change_aspectrate()
    aspect_num = aspect_num + 1
    if aspect_num > #aspects then
        aspect_num = 0
        --mp.set_property('video-aspect', '-1')
        mp.set_property('video-aspect-override', '-1')
        mp.osd_message('Aspect Rate @ Default')
    else
        --mp.set_property('video-aspect', aspects[aspect_num])
        mp.set_property('video-aspect-override', aspects[aspect_num])
        mp.osd_message('Aspect Rate @ '..aspects[aspect_num])
    end
end

function on_change_aspectrate_r()
    aspect_num = aspect_num - 1
    if aspect_num == -1 then
        aspect_num = #aspects
    end
    if aspect_num == 0 then
        mp.set_property('video-aspect-override', '-1')
        mp.osd_message('Aspect Rate @ Default')
    else
        mp.set_property('video-aspect-override', aspects[aspect_num])
        mp.osd_message('Aspect Rate @ '..aspects[aspect_num])
    end
end
mp.add_key_binding('Ctrl+t', 'aspectrate_func', on_change_aspectrate)
mp.add_key_binding('Ctrl+Shift+t', 'aspectrate_r_func', on_change_aspectrate_r)

こんな感じになった。

しかし Kate は今だに使い辛いなぁ。
コードやブログネタを書いて余計な補完機能を見つけて無効化するばかり。
macOS で Sublime Text は Gedit でやっていたことを再現できたんだけど。
Kate は無理っぽい、でも Gedit は死亡したも同然だし代わりも見つからない。