MacBook AIr」カテゴリーアーカイブ

macOS Python3 Upgrade

macOS に入れた Python3 がいまだに 3.10 のままだった。
Fedora みたいに実用にはさほど使っていないしそんなもんだ。
まあ 3.12 にアップグレードしておこう。

Python Release Python 3.12.2 | Python.org

macOS 用はユニバーサルバイナリのみになったのね。
brew だかを使えばもっと簡単アップグレードなんだろうけど。
それ以外に使い道がないアプリをわざわざ入れるのもなぁ。
てか php を macOS に入れたい人専用だよね。

とにかく pkg を展開して上書きインストール。

open /Library/Frameworks/Python.framework/Versions

dir

古いパッケージは消してくれないんかい。
手動で削除、認証が必要だった。

zprofile

$HOME/.zprofile もパス通しが残っている。
自分で消す、令和の macOS なのに何もかも手動だなぁ。

pipのアップデート方法メモ(pip3コマンドは古いので使っちゃダメ)2023/2/10 – min117の日記

しらない間に pip がこんなことになっている。
今は pip を別個でアップグレードする必要がないんだね。

python3 -m pip install pillow
python3 -m pip install pyobjc

3.12 は別ディレクトリなので新たに入れ直す。
これ以外に何か使っていたっけ?まあ必要時に。

多分これでアップグレードは完了だけど一つだけ。
Fedora は python コマンドに 3 を付ける必要がもう無いんだよ。
macOS ではいまだに python3 と打つ必要があるのが違和感。

alias python=python3

$HOME/.zshrc にコレ定義しちゃえ!
たった 1 文字だけどなんかスッキリした。

zsh commandline

先週クイックアクションのページを更新したんですけど。
zip 作成にて zsh ではエラーになる件、理由が判明した。

aa="-l -a"
ls $aa

zsh_bash

zsh は一度変数にいれた IFS 区切りをループ展開できないのは有名。
ループだけでなくコマンドでも同様、zsh で実行させる手段は一応ある。
一度全部を文字列化して eval する、完全に二度手間ですね。

eval "ls $aa"

bash ならできてあたりまえのことが zsh だとできない。
何故 Apple はこんなのをデフォルトシェルにしてしまったのやら。
いやまあ筆者は ssh 等を Fedora でしかやらないから別にいいけど。

ぶっちゃけ筆者の Mac には PHP も今は入れていないし。
Fedora と併用するんだからまったく別々に使ったほうがいいやって。
写真関連は Mac と iCloud で、Web 関連は Fedora で。

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

kogamo

四月末に旅立ったコガモ一家が岩倉某所に戻ってきました。
今年は冬鳥が早めですね、先々週までの残暑が嘘みたいに。
ちなみにここより上流では渡りガモを見たことがない。

Quick Action

M1 Makbook Air を macOS 14 Sonoma に更新。
何故だ?クイックアクションが消えているんですけど。

quick action

メニューから「カスタマイズ」を選択するとこんなダイアログが。
システム設定→プライバシーとセキュリティー→拡張機能、からでも。
項目選択ができるようになったのね、自作以外を隠せるようになった。

ただ一旦ログアウトしないと初回は適用されなかったり。
追加したら追加したもの以外が非表示になっていたり。
バグが多いけど Apple はいつものこと。

そういえば macOS Tips は放置したまんまだったなって。
せっかくなのでよく使う WebP 変換の追記と Sonoma での動作確認。

zip 作成が zsh でエラーになるんですけど。
デフォルトシェルが zsh になって何年だ、放置しすぎだ。
理由が解らないのでしばらく bash 指定にしてで誤魔化す。
後はそのまんま動くのでちょっぴり追記だけ。

さて、Atom のページは Sublime Text に書き換えするか。
と思ったけど、こんなバケモノを使う人は個々で拘り設定するよなって。
余計なお世話になるだろうから普通に削除でいいか。

macOS Tips | macOS をクイックアクションで拡張 – Paepoi

ということで更新しました。

CommandLineTools も更新。
/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions
はまだ 3.9 ですか、最新版は自力で入れようね。

AVIF

Web 用途の画像形式で近年は WebP が人気、筆者も blog で使っている。
文字列に弱い JPEG とサイズが大きめな PNG という欠点を補っています。
更に透過やアニメーションや可逆圧縮まで対応と至れり尽くせり。

でも広まらないと意味が無い、HEIF はもう死んでいる。
そういえば JPEG 2000 とかそんなのあったよなって、他は忘れた。
とはいえ既に結構広まっていますのでこのまま安泰かも。

ところで、似たようなフォーマットに avif という形式があるらしい。
特徴までそっくりで WebP より更にサイズが小さくなるらしい。

AVIFとは?特徴や注意点から変換できるアプリ・ツールまで紹介

AV1 動画と同じ圧縮を画像に展開したもののようです。
とりあえず上記からのリンク先にある avif ファイルで試す。

gnome

GNOME

macos

macOS

macOS スゲェ、すべて Preview.app で普通に表示できるし。
でも avif への変換はできない、これは WebP と同じ。
avif はオープンソースですし GNOME も対応は時間の問題かな。

hex

バイナリを見ると見事に ftypavif の mp4 コンテナですね。
そういえば HEIF もそうだし WebP も RIFF のコンテナだったね。
ということは。

mpv -autofit 400x300 photo.avif

mpv

mpv で普通に開くことができました、当然 WebP も同様に。
totem ではエラー、Quick Time はそもそも受け付けない。

次世代画像形式のWebP、そしてAVIFへ。変わり続ける技術に対応するweb制作の黄金解 – ICS MEDIA

こんなページも見つけた、JPEG XR なんて知らないぞ?
あぁ Windows 専用なのか、7 以降の Windows はマジで知らないし。
てか WebP って ffmpeg で変換できるのか、もしかして今なら。

ffmpeg -i gara.webp gara.avif

ffmpeg

おいおい、できるじゃないか。
これは新たな生き残りゲームが始まる予感。

でも写真は Exif の関係で今後も jpeg のままだろうし。
今は GIF や PNG を選んでいた所を WebP に置き換えが最適解かな。
知らんけど。

NSImage: WebP and HEIF

前回 Fedora での WebP 変換について書いたんですけど。
WebP を使いたい層は Web デザイナ、つまり macOS ユーザーが大半かと。
アプリも色々出ているけどオートメーションでサクッと変換できればなって。
ところで NSImage って WebP を扱えるのかな?

#!/usr/bin/env python3

from AppKit import *

RECT = ((0, 0), (400, 300))

class MyView(NSView):
    def initWithFrame_(self, rect):
        objc.super(MyView, self).initWithFrame_(RECT)
        return self

    def drawRect_(self, rect):
        # WebP or HEIF
        image = NSImage.alloc().initWithContentsOfFile_('gara.webp')
        #image = NSImage.alloc().initWithContentsOfFile_('panaleica.heic')
        image.drawInRect_(RECT)

class MyWindow(NSWindow):
    def init(self):
        objc.super(MyWindow, self).initWithContentRect_styleMask_backing_defer_(
            RECT,
            NSTitledWindowMask | NSClosableWindowMask |
            NSResizableWindowMask | NSMiniaturizableWindowMask,
            NSBackingStoreBuffered, False)
        self.setTitle_('WebP Test')
        self.setDelegate_(self)
        # MyView
        self.canvas = MyView.alloc().initWithFrame_(RECT)
        self.contentView().addSubview_(self.canvas)
        #
        return self

class AppDelegate(NSObject):
    def applicationDidFinishLaunching_(self, notification):
        self.mywindow = MyWindow.new().autorelease()
        self.mywindow.makeKeyAndOrderFront_(self.mywindow)

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)
        # quit menu
        item_quit = NSMenuItem.new()
        item_quit.initWithTitle_action_keyEquivalent_('Quit App', 'terminate:', 'q')
        menu_app.addItem_(item_quit)
        return self

pool = NSAutoreleasePool.new()

NSApplication.sharedApplication()
NSApp.setMainMenu_(AppMenu.new())
NSApp.setDelegate_(AppDelegate.new())
NSApp.activateIgnoringOtherApps_(True)
NSApp.run()

del pool

PyObjC でごめん。

mac webp

普通に扱えるんですね、HEIF(heic) 画像でも問題なく。
後はコレを変換だ、と思ったんですけど。

NSBitmapImageFileType | Apple Developer Documentation

NSBitmapImageFileTypeWEBP なんて定義は無いんですね。
HEIF も無い、検索で簡単に見つかる手段は使えないか。
もう少し調べます。