五条川のキジ

本日も予想通り薄曇り、せっかくほぼ満開なのに。
青空バックの桜はあきらめて野鳥探し、キジポイントへ。

kiji

普通にケーン?と鳴いていてすぐ見つかったよ。
ただ寄れない、ちと遠いけど五条川遊歩道から撮影。

hibari

カワセミは今日もおらん、別のポイントへ移動。
途中でヒバリ発見、この子も遠かった。

kiji

上記を撮影中にすぐ後からケーン?不意打ちを喰らう。
普段見つからないのに二羽も、てかメスが見たいんですけど。

tsugumi

ツグミが五条川の土手にいるのは珍しい。
ツバメも既に来ているのにまだいるんだな。

カワセミはこの時期はと学習したのか一羽も見つからず。
十時を過ぎると五条川遊歩道は激混み、移動がきびしい。
おまけに腹まで痛くなって、早々に退散。
来週こそサクセミー、まあ葉桜になっているだろうなって。

五条川@夜桜

本日五条川の桜は八分咲き、しかも薄曇りで白背景じゃ。
歩いて一分に住んでいるのだし満開で青空を普通に待つか。
ということで本日は夜桜の練習でも。

yozakura

OM-1 + PanaLeica 9mm にて iso100 でパシャ。
SS 2 秒でブレてなーい、オリンパス時代からのお約束で。

yozakura

ライトアップ場所に移動したら凄い人、制服 JK までいる。
今年は桜祭り再開で屋台が復活したとはいえここまでとは。

yozakura

ライトアップなら空がちゃんと真っ黒になるのがいいね。
もっとがっつり行きたいけど人多すぎなので撤退。

sakuhiyo

午前はサクセミーを狙ったけど全然見つからない。
しかたがないのでサクヒヨでも撮影するか。

sakusuzume

サクスズメ、カワセミがいないからって雀なんか。
たまにはいいじゃないか、サクカラスは流石にヤメとこう。

9mm の画角は最初戸惑ったけどさすがにだいぶ慣れてきた。
後は青空を待つだけ、天気予報は微妙だけど。

五条川なばな祭

愛知県岩倉市は 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 ページは書き換えよう。