Tachiaoi

今日は午前に用事、午後から何撮ろう?
いつものスポットを検索すると立葵がどうの。

tachiaoi

この色はあまり無いらしい、よく知らないけど。
黒というより濃い赤紫って感じかな。

tachiaoi

先端まで花が咲くと梅雨明けのサインらしい。
ってもう咲いているんですけど。

tachiaoi

そういえば立葵って漫画家がいる、花の名前だったのか。
ちな、ガハラさんが鳥の名前なのは野鳥撮影を始めてから知った。

monsiirochou

モンシロチョウ、あぁ紋があるからこの名前ね。
一番名の知れた超だと思うけどあまり見ないような。

himeakatateha

ヒメアカタテハ、ツマグロヒョウモンかと思ったら違った。
しかし最近は写りを気にして E-M5 は 12-40 プロレンズ付けっぱで。
パナライカ 100-400 の G99 と二台持ちじゃやっぱり重いや。
なんとか軽く小さくする組み合わせにならんものか。

espeak-ng

Fedora 36 で espeak を使おうと思ったんだけど。
espeak-ng というものに置き換わっていた。

GitHub – espeak-ng/espeak-ng: eSpeak NG is an open source speech synthesizer that supports more than hundred languages and accents.

どうやら日本語等の多言語出力できるようになっているみたい。
だけど日本語で検索しても誰も手段を書いていない、おいおい。。。。。
海外を探して見つけた、-v オプションでイケるようだ。

espeak-ng -v it "Tiro finale"
# Voice Change
espeak-ng -v it+f1 "Tiro finale"

これが本場イタリアの「ティロ・フィナーレ」か!
ネタ古!
いや、そんなことより日本語だ。

espeak-ng

ひらがなやカタカナは問題無し。
スペースがあってもダブルクォートで括ればイケる、区切ってはくれない。
しかし句点は普通に区切ってくれるようです。
アルファベットは半角ならば一文字ずつ読み上げる。
数値は全角半角ともに無視される、長音も同じ。
漢字はやっぱり駄目だった。

拗音や促音もしっかり対応している、と思ったけど。

すごーーい
エヴァンゲリオン
ディーブイディー

なんかは駄目、日本語って難しいですね。
てか、漢字に対応していない時点で日本で運用は厳しいかと。

Ajisai

意表をついて今日の五条川、の紫陽花。

ajisai

土日に四季の森に行って紫陽花の予定だったけど。

ajisai

どうやら天気が悪いっぽいので近所にて。

ajisai

i-Finish を強にして Shadow を 2 段下げたらいい感じ。

fuurinsou

紫陽花でも今日でもないけどフウリンソウをついでに現像。

なんとなく解った、プロ写真家って RAW で結構加工しているのね。
撮って出しじゃプロみたいな写真には絶対にならないもん。
実力は経験値、今年は野鳥以外もガンガンいきたい。

プログラミングとはブログを分けようかとも思うんだけど。
更新程の低いブログを二つもやってもなぁ。

mpv: rotate

mpv をスクリプトで拡張をまとめてページを作ろうとして、欲が出た。
動画の回転を Eye of GNOME や Totem に合わせたい。
具体的には Ctrl+R で 90° ずつ時計回り、Shift 追加で逆回り。

今まで Ctrl+E を逆回りに割り当てていたけど、やはりおかしい。
それに割り当てする値は 0-359 以内にしないとエラーになる。
input.conf ではどうにもならない、Lua スクリプトを書く。

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

-- input.conf に 'Ctrl+r add video-rotate 90' でもいいけど
-- 0-359 以内にしないとエラーなのとキーを Eye of GNOME に合わせたかったので

function on_rotate_right()
    angle = mp.get_property('options/video-rotate')
    num = tonumber(angle) + 90
    if num > 270 then
        num = 0
    end
    mp.osd_message('angle:'..tostring(num)..'°')
    mp.set_property_number('options/video-rotate', num)
end

function on_rotate_left()
    angle = mp.get_property('options/video-rotate')
    num = tonumber(angle) - 90
    if num < 0 then
        num = 270
    end
    mp.osd_message('angle:'..tostring(num)..'°')
    mp.set_property_number('options/video-rotate', num)
end

mp.add_key_binding('Ctrl+r', 'rotate_right', on_rotate_right)
mp.add_key_binding('Ctrl+Shift+r', 'rotate_left', on_rotate_left)

osd も入れて。

よし問題なく動くぞ。
macOS な人は逆回転を command+L にすれば Preview.app と同じになる。

ついでに、time-pos プロパティをゼロにすれば先頭に巻き戻しできるけど。
最後まで再生してポーズ状態からだとポーズのまま、即再生させたいのよ筆者は。

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

-- Home キーで先頭に巻き戻して再生する
-- 最後まで再生しポーズ状態になっていても即再生できるように

function on_go_home()
    mp.set_property_number('time-pos', 0)
    if mp.get_property_bool('pause') then
        mp.set_property_bool('pause', false)
    end
end
mp.add_key_binding('Home', 'go_home_func', on_go_home)

できた。

いやいや input.conf がスッカラカンに。
自分で拡張できるアプリって面白いよね。

PHP8: match switch

そういえば PHP8 について調べなきゃ。
と書いて一ヶ月もたっていたわい。

【PHP8.0】PHP8.0の新機能 – Qiita

変更というよりひたすら機能強化みたい。
筆者に関係ありそうなのは match くらいしかないな。
str_starts_with や str_contains は正規表現でいいし。

#!/usr/bin/env php

<?php

$text = "最初含む最後";

if (preg_match('/含む/', $text)) echo "@含む@";
if (preg_match('/^最初/', $text)) echo "@最初@";
if (preg_match('/最後$/', $text)) echo "@最後@".PHP_EOL;;

//=> @含む@@最初@@最後@

?>

ね。

match は Python 3.10 にも追加されたし流行なのだろうか。
Python と同じ感じなのか試してみよう。

#!/usr/bin/env php

<?php

function switch_func($num) {
    switch($num) {
        case 1:
            echo 'one;';
            //break;
        case 1:
            echo 'once again;';
            //break;
        default:
            echo 'default;';
    }
}

function match_func($num) {
    $s = match($num) {
        1 => 'one;',
        1 => 'once again;',
        default => 'default;'
    };
    echo $s;
}

switch_func(1);
echo PHP_EOL;;
match_func(1);

/* output
one;once again;default;
one;
*/

?>

全然違った。

PHP の match は値を返す式で最後にセミコロン必須。
switch とはそもそもの書式が違うので混同するはずがない。
break が不要なのとマッチしなかった場合の処理があるのは Python と同じ。

match 式内で echo とかはできない、戻り値が必要な場面に限定される。
けれどそういう場合 if や switch より圧倒的に短いコードになるね。
Python の match もこんな感じにすれば良かったのに。