コジュケイ

今日は岐阜のとある公園へ。
引越しで岐阜が近くなったということで新天地を開拓だ。

yamagara

ココはヤマガラ天国ですね、アホみたく見つかる。
まあ綺麗に撮れるかどうかは腕次第ですけど。

yamagara

OM-1 でヤマガラといえばこの人が有名ですね。
もみじ卍ゅう|note

yamagara

似たような時期に鳥撮を始めたみたいなのに随分腕の差が。
いやココは Fedora とプログラミングのブログだったのですし。

mushikui

センダイムシクイらしき鳥も見つけました。
もっと綺麗に撮りたかったけど一度しか現れず。

kojyukei

「ちょっとこい」の鳴き声とともにコジュケイが現れた。
木曽川で見られる鳥の看板にあるけど一度も見たことなかったよ。
ハトくらいの大きさなんだね、キジもそうだが何故見つからない?
惜しむらくは薮から出てくれなかった、これが精一杯。

まだ暑いのにカメラマンは何人かいたしそこそこ近い。
自販機とトイレが一箇所しか無いこと以外は悪く無い。
トイレ大事だよ、小牧山中腹ですら腹が痛くなった時あせったもん。
ということで今後もたまに訪れる場所ということに。

サルスベリ

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

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 が動作しない、何故?
ちょっと放置しすぎたな、もう少し調べよう。
秋の渡り鳥が来る前にやらないとまた放置しそうだし。