月別アーカイブ: 2021年6月

Fedora 34 libav

Fedora 34 になってからアップデート通知が来なくなった。
時折 gnome-softwere を開いて手動アップデートする必要がある。
通知させる手段はあるんだろうけど別にこれでいいやって。

で、今日やったら GStreamer で動画が再生できなくなったんですけど。
再生は Celluloid 等を使えばいいんだけど Nautilus でサムネイルができない。
それは困る、とりあえず元に戻したい。

CentOS – Yum パッケージのダウングレード! – mk-mode BLOG

これで libav だけダウングレードしたら元通りになった。
Fedora 34 では yum でなく dnf コマンドです、オプションは同じ。
具体的には以下のコマンドを打ち込んだ。

# Listup
dnf --showduplicate list gstreamer1-libav

# Downgrade
sudo dnf downgrade gstreamer1-libav-1.18.4-2.fc34

バージョンを指定はハイフンの後に付ければいいようで。
指定しなければ勝手に一つ前になるみたいだけど一応。
そうそう、GStreamer のアップデートを禁止しないと。

sudo sh -c "echo 'exclude=gstreamer1*' >> /etc/dnf/dnf.conf"

dnf では /etc/dnf/dnf.conf に追記します。
dnf.conf は起動時読み込みなので再起動の必要があります。

これでアップデートされなくなるけど修正されても気が付くことができないw
まあ次の GStreamer アップデートは Fedora 35 の時でいいかなって。
SELinux を有効にしたままの Fedora ではセキュリティなんて無視でいいってばさ。

Flower Park

先週から久々に夜勤です。
歳をとったせいかキツイ、休日はずっと寝ていたい。

でも太陽にの光を浴びないとなんか体調が戻らない。
しかし鳥達はまだ川へ戻っていない、とはいえ田んぼも飽きた。
今日は趣向を変えてフラワーパーク江南で花でも。

アニスヒソップ?とクマバチ。
花のつもりだったけど蜜を吸っている虫がいっぱい。

セージ?とタイワンタケクマバチ。
羽まで真っ黒の蜂がいるんだ、へー。

バレンギク?とツマグロヒョウモン。
そういえば蝶も蜜を吸うよねって。

花???とオオスカシバ。
こんなヘンテコな形なのに蝶や蛾の仲間って面白い。

ぶっちゃけ花の名前は全然ワカラン。
Google レンズも的外ればかり出るし上記も合っているのかどうか。
筆者は向いていないとよく解った、ということで。
夏場は野鳥だけでなく蜂や蝶もやっていこうかなって。

今回はトリミング無し。
-scaled を URL から外すとフルサイズ画像になります。

pinch

今日の大口町。

chougenbou

チョウゲンボウ、ハヤブサ(スズキ)じゃないようで残念。
今日の収穫は以上、いやアオサギやダイサギは沢山いたんだけど。

って本当に野鳥ブログにするんかい。
いいかげんにプログラミングを再開しよう。
とりあえず macOS 用 RAW 画像選別アプリのほうを。

まずピンチを実装したい、トラックパッドで拡大縮小ね。
標準アプリはあたりまえにできるけど実装しなきゃできない。

cocoa – -[NSResponder swipeWithEvent:] not called – Stack Overflow

最初にまんまコレやって失敗した。
だってメソッド名がまぎらわしいんだもんもん。

Cocoaの日々: 1月 2011

こっちでいい、なんだ日本語で見つかるジャン。
NSResponder の magnifyWithEvent メソッドね。

ただ setFrameSize するのはどうなんだ。。。。。
拡大や縮小を指定し再描写にする。

#!/usr/bin/env python3

from AppKit import *
# Kill of control+C
import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)

PATH = 'P1012925.RW2' # LUMIX(Panasonic) RAW image
RECT = NSMakeRect(0, 0, 600, 400)
wins = []

class RawView(NSView):
    def initWithFrame_(self, rect):
        objc.super(RawView, self).initWithFrame_(RECT)
        self.image = NSImage.alloc().initWithContentsOfFile_(PATH)
        self.draw_size  = 1
        #self.setWantsRestingTouches_(True) # ?
        return self

    def acceptsFirstResponder(self):
        return True

    def magnifyWithEvent_(self, event):
        print(event.magnification())
        if event.magnification() != 0:
            self.draw_size = event.magnification() + 1
            self.display()

    def swipeWithEvent_(self, event):
        print('swipe')

    def keyDown_(self, event):
        print('key down test')

    def mouseDown_(self, event):
        print('mouse down test')

    def drawRect_(self, rect):
        NSColor.blackColor().set()
        NSRectFill(rect)
        aw = rect.size.width * self.draw_size
        ah = rect.size.height * self.draw_size
        w = self.image.size().width
        h = self.image.size().height
        if aw * h > ah * w:
            width = w * ah / h
            height = ah
            x = (aw - width) / 2
            y = 0
        else:
            width = aw
            height = h * aw / w
            x = 0
            y = (ah - height) / 2
        r1 = NSMakeRect(x, y, width, height)
        self.image.drawInRect_(r1)

class MyWindow(NSWindow):
    def init(self):
        objc.super(MyWindow, self).initWithContentRect_styleMask_backing_defer_(
            RECT,
            NSTitledWindowMask | NSClosableWindowMask |
            NSResizableWindowMask | NSMiniaturizableWindowMask,
            NSBackingStoreBuffered, False)
        # NSView
        self.rawview = RawView.alloc().initWithFrame_(RECT)
        self.contentView().addSubview_(self.rawview)
        # self
        self.setTitle_('RAW image Viewer')
        return self

class AppDelegate(NSObject):
    def applicationDidFinishLaunching_(self, notification):
        window = MyWindow.new()
        window.makeKeyAndOrderFront_(window)
        # save
        wins.append(window)
        # Activate
        NSApp.activateIgnoringOtherApps_(True)

class AppMenu(NSMenu):
    def init(self):
        objc.super(AppMenu, self).init()
        item_app  = NSMenuItem.new().autorelease()
        self.addItem_(item_app)
        menu_app = NSMenu.new().autorelease()
        item_app.setSubmenu_(menu_app)
        # quit menu
        item_quit = NSMenuItem.new().autorelease()
        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().autorelease())
NSApp.setDelegate_(AppDelegate.new().autorelease())
NSApp.run()

できたけど。
拡縮の原点は左下、ジェスチャ終了でゼロを投げてくる。
数値はアクション毎にリセット、うーん計算が難しい。
てかレスポンスが酷い、Preview.app 等と全然違う。

コレ違うだろって感じ、もう少し調べなきゃ。