bird

先週の五条川、とその周辺。
別の個体だからと同じ鳥を何度も公開、は筆者的にはツマラナイのでまとめて。

hidorigamo

ヒドリガモ、清洲城付近にて。
筆者の認識する五条川は基本岩倉で、犬山の羽黒から清洲まで満遍なくです。
いや、鴨は名古屋城の堀や堀川のほうが寄れるのでソッチのほうがいいよと。
てか特にキンクロハジロなんて堀川ばかりに、五条川にも来てよって。

goji

アオジ、小牧山にて。
基本薮の中にいるんだけど次の薮を狙う時に高所に飛び出す一瞬が狙い。
薮に入ってしまったらカメラで捉えるなんてもう無理だよねこんなの。
2021.11.16 な小牧山は野生のサルが出没らしい、先週から行っていないけど。

uguisu

ウグイス、犬山城付近にて。
えっと、ウグイスって薮の中をサーカス並のアクロバットな移動するのね。
平地ではスズメよろしく両足ジャンプでの移動だけど、薮の中では最強なのかも。
今回は尻しか撮れなかった、それくらいに。

Hataka

ハイタカ、堀尾跡公園付近にて。
こんな見た目なのにハトくらいの体格、タカなのに可愛く見える。
休憩やトイレ用途によく利用している公園だったけど、ココ有名だったのか…
てか SSR だろ、初めて見つけたてか存在すら知らなかったもん。

場所だけ見れば歴史や城のマニアっぽく見えるな、あぁ愛知県の隠れた名所。
城の写真なんて一枚も撮っていないのに。

macOS Monterey JXA

macOS Monterey の JXA は NSRect のバグが無くなった。
ということで、今の知識で NSWindow を作ってみたらどうなるか。

いや PyObjC のほうが簡単なんだけど、デフォルトで入っていないのが。
JXA ならどんな Mac でもそのまま動かせるという利点があるので捨て難い。

ただ JXA では PyObjC みたいに class にできないんだよなぁ。
ネットで簡単に見つかる方法では全部グローバル変数にするしかないのが。
そもそも JavaScript の class は他の言語の class とは違うし。
なので GNOME の Gjs もアクロバットな手段で class っぽくしている。

ObjC.registerSubclass を上手く利用してソレっぽくやってみよう。
追加メソッドはどう書けばいいのかな?とか。

#!/usr/bin/osascript

ObjC.import('Cocoa');

//let wins = [];

ObjC.registerSubclass({
    name: 'AppDelegate',
    protocols: ['NSApplicationDelegate'],
    methods: {
        'applicationDidFinishLaunching:': function (notification) {
            let window = $.MyWindow.alloc.initWithContentRectStyleMaskBackingDefer(
                $.NSMakeRect(0, 0, 300, 100),
                $.NSTitledWindowMask
                | $.NSClosableWindowMask
                | $.NSMiniaturizableWindowMask
                | $.NSResizableWindowMask,
                $.NSBackingStoreBuffered,
                false
            );
            window.makeKeyAndOrderFront(window);
            $.NSApp.activateIgnoringOtherApps(true);
            //wins.push(window);
        }
    }
});

ObjC.registerSubclass({
    name: 'WinDelegate',
    protocols: ['NSWindowDelegate'],
    methods: {
        'windowWillClose:': function(notification) {
            console.log('MyApp Close !');
            return $.NSApp.terminate(0);
        }
    }
});

ObjC.registerSubclass({
    name: 'MyWindow',
    superclass: 'NSWindow',
    propertyies: {},
    methods: {
        'initWithContentRect:styleMask:backing:defer:': function
        (contentRect, style, backingStoreType, flag) {
            let _this = ObjC.super(this).initWithContentRectStyleMaskBackingDefer(
               contentRect, style, backingStoreType, flag);
           _this.title = $('JXA NSWindow');
           _this.delegate = $.WinDelegate.new;
           // Button
           let button = $.NSButton.buttonWithTitleTargetAction('button', this, 'onButtonClick:');
           button.setFrame($.NSMakeRect(10, 10, 200, 36));
           _this.contentView.addSubview(button);
           // return
            return _this;
        },
        'onButtonClick:': {
            types: ['void', ['id']],
            implementation: function(sender) {
                sender.setTitle('Clicked!');
            }
        }
    }
});

/**
 * Application
 */
$.NSApplication.sharedApplication;
$.NSApp.setActivationPolicy($.NSApplicationActivationPolicyRegular);
$.NSApp.mainMenu = function() {
    let mainMenu = $.NSMenu.new;
    let itemApp  = $.NSMenuItem.new;
    mainMenu.addItem(itemApp);
    let menuApp  = $.NSMenu.new;
    itemApp.setSubmenu(menuApp);
    // quit menu
    let itemQuit = $.NSMenuItem.new;
    itemQuit.initWithTitleActionKeyEquivalent('Quit App', 'terminate:', 'q');
    menuApp.addItem(itemQuit);
    return mainMenu;
}();
$.NSApp.setDelegate($.AppDelegate.new);
$.NSApp.run;

nswindow

こんな感じになった、
ボタンのハンドラは delegate ではなく this に届くようだ。
オーバーライドは types 指定不要なのね、ふむふむ。
これだけ解れば応用でなんとかなりそう。

ただ PyObjC と違って NSWindow がガベージコレクションされないんだが。
let 指定ならばハンドラを抜けたら破棄されるはずなんだけど、何故だ?
Python とは破棄対象の選定方法が違うんだろう、知らんけど。

ところで Monterey で今頃気がついたんだけど。

power

iOS みたいに充電の保留機能が付いたんだね。
筆者は滅多に持ち歩かないんで意味はないかもだがけど。

ibus Mozc

ごめん、GNOME 41 でブランクスクリーンを「しない」の選択肢あった。
ポップアップをスクロールで Never が出てくる、わかり辛いよ!

それと今回初めてやってみたんだけど。
ssh の設定って $HOME/.ssh 以下をコピペで引き継ぐことできるのね。
公開鍵ってこんなものなのか、もっと面倒だと思っていた。

しかし前回の続きを書こうと思ったけど、別に無いな。
だってほとんど変わっていないんだもの、中身は変わっているはずだけど。

それから、Mozc はやっぱり筆者的にはダメだ。
変換精度は macOS 標準入力メソッドには及ばないなりにイイんだけど。
US 配列でテンキーレスの Real Force では肝心の使い勝手が。

kkc setting

この切り替え時の入力モードを固定する機能がないと本当に困る。
macOS でも US 配列は入力メソッドを切り替えして使うんですよ、直接入力いらない。
Mozc だと切り替えで直接入力になっていたりするし設定が見つからない。

それとサジェストのウザさが Visual Studio Code のイライラを思い出す。
あれでアプリを作っている人おらんだろって思うんだけど、人気なんだよな…
macOS の入力メソッドではあまり気にならないのはトータルデザインの差だろうか。

それと設定ダイアログがおもいっきり GTK2 だし Windows 臭いし。
統一された操作性や見た目というものがさ、Qt アプリも気に入らない。
関係ないけど Windows Explorer が F11 でフルスクリーンになると先日知った。

JIS 配列キーボードしか知らず Windows 文化が絶対な人用って感じ。
コレを勧めている人はみんな VLC Media Player を入れてフルスクリーンを Alt+Enter に変更している Windows 信者だと思う。
筆者は ibus-kkc と celluloid にします。

それにしても、Linux を便利とか言っている人達。
ssh や python を使わない人はいったい何が便利なんだろう?
上記のように画像に線を引くの一つにもアプリを入れなきゃいけないのに。

ちなみに Drawing っていうシンプルなアプリを使った、コレでいいや。
macOS なら Preview.app で普通に線や文字が入れられるんですけど。
ちなみに macOS は動画の切り貼りさえ QuickTime 一つで可能。

ということで、今日の五条川。

kogamo

コガモ発見、冬鳥が続々とやってきていますね。
五条川を一発変換してくれる kkc なのに何故不人気なのか。

Fedora 35 Install

インストール方法は今までと変わらないので省略。
サードパティリポジトリを有効にするかの指定が増えたくらい。

hostname が localhost-live になっている。
hostnamectl でとっとと変更しよう。

gnome-softwere を起動しても何も表示されないんですけど。
アップデートしたら表示されるようになった。

アプリ検索で google-chrome は出てくるようになった。
でも Celluroid Celluloid は出てこない、使えないなぁ。

アップデートに動画 Codecs があるけど。
相変わらず何も再生できないね、RPM Fusion 必須。
てか何で肝心な libav が最初には入っていないんだよ!

その RMP Fusion リポジトリ追加を Firefox が拒絶する。
無視して OK し続ければ追加できた、いやコレどうなんだ?
こんなセキュリティは SELinux の仕事だろ、って思うんだけど。
Linux はもっと自由でないと、いや狐は Linux 専用じゃないし。

入力メソッドは今回も ibus Anthy だ。
PageDown でページめくりできないままなのね。
ずっと ibus-kkc に変更して使ってきたけど今回は Mozc とやらを。
macOS でも勧めている人いるし、食わず嫌いもあれだし。

と思ったけど US 配列のキーボードだとチト使いづらいなコレ。
入力モードひらがな固定ってできないの?全角半角キー無いんだけど。

ブランクスクリーンで「しない」の選択肢が無くなった、何故?

Gedit プラグインで v3 用プラグインがまだそのまま使える。

Fedora Tips

うん変わっていない、てか変わった気がしない。
続きは明日、夜勤行かなきゃ。

macOS Monterey

macOS を Monterey に遅ればせながらアップグレード。
Fedora とは違ってスッゲェ時間が掛かると解っているので休日まで待った。
12.13GB か、前の 14GB より減ったとはいえ酷い。

そろそろ全部終わったかな?
って画面を表示させると「インストールします」ダイアログ。
ガックリ。。。。。

[続ける]-[同意] って感じでボタンを押さないとインストールが始まらない。
今度こそ終わったかな?って見ると「再起動」ダイアログ。
ションボリ。。。。。

その再起動が又時間が掛かる。
終わった!と思ったらフェイントだった。
ゲンナリ。。。。。

M1 でコレだぞ、Intel Air だったらドンダケだったんだ?
アップグレードくらいボタン一発でスパッとやってくださいよ。
あーやっとこさ終わった。

それはいいとして。

Apple、macOS 12 MontereyにPython 2.7.18などを同梱してリリース。Big Surまで同梱されていたphpは削除されるので注意を。

マジで PHP は削除されるのね。
httpd.conf が初期化されるのはいつものこと。

php

WordPress の時代にコレって macOS を Web 開発に使うなってメッセージ?
Fedora のように dnf コマンドで即座に導入できるってわけでもないのにさ。
いったいどんな政治的なやりとりがあったのか、みたいな。
これだから Fedora も併用しなきゃなんだよ、macOS で開発は自由が無い。

自力で Python3 を入れている人は残る。
3.10 になっているのか、アップグレードしとこ。
macOS 64-bit unibersal2 installer で M1 ネイティブだよ。

Python Release Python 3.10.0 | Python.org

Lightroom は問題なく動く、コレのために Mac を使っているのだし。

それと Fedora から SSH てか SFTP で簡単アクセスする用の
~/.ssh/id_rsa.pub
とか設置していたものも普通に残っているしアクセスもできる。

そんなことより何より。

#!/usr/bin/osascript

ObjC.import('Cocoa');
let r = $.NSMakeRect(0, 0, 10, 10);

console.log(`width = ${r.size.width}`);

jxa

JXA での NSRect バグがやっと、ついに修正されたぞ!
Big Sur アップデート毎にコレ動かしてションボリしてたのよね。
待ちわびた、待ちすぎて PyObjC 万歳になっちゃった。