五条川なばな祭

愛知県岩倉市は 5 年ぶりに桜祭りが開催されました。
しかし本日は一分咲きにすら届いていない、残念。

nabana

とはいえ菜の花ならガッツリ咲いています。
ねえ、もう開き直って菜の花祭りってことにしようよ。

nabana

今更だけど E-M5 の背面モニタが酷い、この写真で判明。
色温度と照度を -3 に変更したら EIZO とだいたい同じだった。

nabana

マイクロフォーサーズはボケない、って誰が言ったんだろう?
これパナライカじゃないチープな 25mm 単焦点なんですが。

nabana

以上全部岩倉市内で別の場所。
こんなに咲いているのに見ている人少ないねん。

kogamo

コガモはまだいます、ペア三組で仲良く食事中。
多分今年も四月末くらいまでいると思う。

hiyodori

ヒヨドリは普段無視だけどこの子超近くまで寄ってきたので。
300mm まで戻したけどやっぱり近いと画質バキバキになるね。

hibari

久々にキジポイントにいってみたけどそんな都合よくいないか。
でもヒバリはピーチクパーチク鳴いていました、春ですね。

やっぱりサブ機は E-M5 のほうがいいな、G99 は再び冬眠。
小型レトロで PSAM 仕様なのがコレしかないってどうなのよ。
デカいグリップもシャッタースピードダイアルもイラネ。

OM-1 MarkII は興味無しだけど OM-5 の次は興味がある。
セオリーどおりなら次は高感度耐性が上がった OM-1 センサー化。
酷いことで評判のメニュー配置も OM-1 と同じになるはず。
あとまったく使わない ART や SCN を C2, C3 にしてくれれば。
なんだけど、今の OM SYSTEM じゃズッコケの可能性が高い。

HTTP 301

新サーバー移行で実は結構問題があった。
解決までの無駄な過程を書いてもしょーがないので結果だけ。

このブログ (WordPress) の RSS が取得できなくなっていた。
どうやらパーマリンクの設定を変更したのがいけなかったようで。

WordPressでRSS配信がされないのは、head内にRSSのURL指定が正しくされていないのでは? | 便利なデジタル生活

マジでこれだった、archive 付きの URL に変更。
それだけで WordPressのURL/feed/ にて普通に取得できるように戻った。
元に戻しただけで進歩は何も無いんですけどね。

まて、本サイトにて RSS の内容を表示していた所が空っぽのままだ。
RSS に直接アクセスは普通に読み込めるようになったのに何故だ?

既存のソースを殆ど変えずにfile_get_contents()をcURLにする │ Webty Staff Blog

RSS 取得はネットでよく見かけるこのコードを使っていたんですけど。
ローカルで色々試すと HTTP Status 301 が戻っていた。
http://localhost で試すとゼロしか戻らないので PHP コードのみでやって。

PHPのcurlやfile_get_contentsでリダイレクトに対応する方法

解説感謝、そういうことかリダイレクトなのか。
移行前のサーバーでは問題なく取得できていたけど同じじゃないのね。

<?php
// localhost(192.168.***.***) や macOSname.local では読み込まない
if ($hostname == "localhost" or preg_match("/^192/", $hostname) or strpos($hostname, ".local") ) {
    echo "RSS";
} else {
    $url = "https://palepoli.skr.jp/wp/feed/";
    // cURL
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 60);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    // HTTP Status 301 対策
    curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
    $result = curl_exec( $ch );
    $status = curl_getinfo($ch);
    curl_close( $ch );
    if ($status['http_code'] === 200) {
        $rss = simplexml_load_string($result);
        $i = 0;
        foreach ($rss->channel->item as $item) {
            if( $i++ == 5 ) { break; }
            $link = $item->link;
            $title = $item->title;
            $date = date('Y.m.d', strtotime($item->pubDate));
            $desc = $item->description;
            echo <<< __EOS__
<dt><a href="$link" target="_blank">$title</a>&nbsp;($date)</dt>
<dd>$desc</dd>
__EOS__;
        }
    } else {
        echo "<p>HTTP Status " . $status['http_code'] . "</p>";
    }
}
?>

Status 200 (OK) 時のみ表示させるように変更。

やっと表示できるようになった、長かった。
あれこれ試す過程で PHP を 7=>8 にしたのが原因かと疑ったり。
無駄なコードを散々書いたり、ただの勉強不足でした。

しかしコレについて言及している人少ないね。
Wordpress を使っているだけで自前コードの人って少ないんだろうか。

Node.js: ESM

Node.js って令和になってから全然話題にならないよね。
と思っていたら v20 になっていた。

Node.js ? Run JavaScript Everywhere

ちょっとまて、require は import に変わっていたの?
拡張子が mjs みたいなんですけど、これ何だ?

CJS, UMD, ESMとは?その違い。 | milestones

変わったのではなく標準に合わせて拡張したってことみたい。
でもトップページが ESM ってことは今後はこっちを使えなんだろうな。
ちなみに以下のコードを書いた時はたしか v6 だか v8 だったような。

Gjs, JXA, Node.js – Paepoi

標準である import に合わせたのは Gjs だけじゃなかったのね。
JXA は Apple がやる気ゼロだから今後も放置だろうけど。
書き換えしなきゃ、使わないと解っているけど確認のため導入。

node

うん Fedora 29 の dnf も v20 ですね。
とりあえず readline を試してみよう。

Readline | Node.js v21.7.1 Documentation

スイッチを CJS から ESM に切り替えると import のコードに変わる。
モジュール変数は UpperCamelCase 推奨だったけど小文字推奨に変わった?
無名関数ではなく promises を使えなの?とにかく書いてみる。

#!/usr/bin/env node

/** CJS
const readline = require('readline');
const tty = require('tty');

let rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
    terminal: false
});
let [prpt, prefix] = tty.isatty(0) ? ['何か入力して return :', '端末入力'] : ['', 'パイプ'];
rl.question(prpt, (line)=> {
    console.log(`${prefix}から ${line} が渡されました`);
    rl.close();
});
*/
// ESM (extention as 'mjs')
import * as readline from 'node:readline/promises';
import * as tty from 'node:tty';
import { stdin as input, stdout as output } from 'node:process';

let rl = readline.createInterface({ input, output, terminal:false });

let [prpt, prefix] = tty.isatty(0) ? ['何か入力して return :', '端末入力'] : ['', 'パイプ'];

let line = await rl.question(prpt);
console.log(`${prefix}から ${line} が渡されました`);
rl.close();

test.mjs

拡張子は mjs にしないと動かなかった。
Gjs は -m オプションだけど合わせてくるかな。
シバンを書いても問題なく動作しますね。

node

ぶっちゃけ ESM でも process は import せず使えるし無名関数でも動く。
とはいえ公式サンプルががこうなので今後はこうさせたいのだろうと思う。
promises を使うと上級者って感じでかっこいい、ような気がする。
もう少し調べて四月までに tips ページは書き換えよう。

さくらインターネットサーバー移行ツール

さくらインターネットからサーバー移行ツールの案内が。
FreeBSD が 11.2 から FreeBSD 13 へ、HDD から SSD になる。
先週メールが届いていたんだけどそろそろやろうかと。
筆者のように自前設置の WordPress でも全自動で移行できるらしい。
移行完了までアクセス不能らしいけど夜中にやれば別にいいか。

num

思っていたより容量使っていた、事実上写真ブログ化しているし。
とはいえ 300GB まで使えるからまだまだ余裕あるな。
午前一時くらいに移行開始、おやすみなさい。

起きたら午前三時くらいに移行完了とメールが届いていた。
サイトもブログも問題なく表示できている、うん。
本当に自前設置の WordPress でも普通に移行できた。

SFTP の設定を変更しないといけないのでコンパネへ。
398 番サーバーから 2108 番サーバーへ移行だったようだ。
どこに割り当てかは決められないので移行後にコンパネで確認。

login

Nautilus から SFTP でログイン、久々に見たな。
Linux は GVFS で普通のファイルのように使えるから便利だよね。
サーバーや macOS を持っていないのに Linux 使うバカはいないよね。
てかスゲェアクセスが早くなった、流石 SSD だね。

ところでついでなのでこのブログの URL ですが。
本日より日付と投稿名から数値ベースに移行します。
いや日付と投稿名でもアクセスできますが新規リンクから。
だって今まで通りだと日本語タイトルをつけ辛いんだもん。

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 文字だけどなんかスッキリした。