2026-01-01 木 
    雨。
*▽ 新年を迎えて
    正月。1年前は仮設住宅で新年を迎えた。
    正直おめでたい気分はなかった。
    1年後の今年は新しい住居にて新年を迎える事が出来た。
    自分はラッキーな方で前へ向かって今進む事が出来ている。
    今年からはおめでとうを言う事にした。
    能登に向かっては躊躇してしまう気持ちもまだあるけど。
    去年はそれでも能登でおめでとうと言っている人もいた。
    前を向いて歩む事が何よりの供養ではないかと思っている。
    時々能登にも戻るけど、ほぼ2年経とうとしているのに
    まだ電柱は傾いたままだったりあちこちに災害の傷跡が
    残っている。1日も早い復興をただ祈るしかないし、
    自分は自分の出来る事を前に進めるのみ。
    震災当時のメモをデータに書き写したと思ってたけど、
    ちょっと見つからないので再び記入していく事にした。
    2024年二度に亘る被災状況を実際に体験した者として
    このブログにアップしていこうと思う。

*▽ GTDの見直しについて
    ずっと1日1ファイルで書いてきたけど、
    いろいろ自分のGTDが破綻している。
    ルーチンワークが破綻。
    やっていてもいちいち記録チェックしなくなった。
    なるべくシンプルに必要に応じて入力する感じに。
    ファイルも1年に1ファイルとする事にした。
    今日がその初日。うまく行くだろうか?

*▽ リードマクロで作ったもの
    年越しはlispとemacsでって感じだったが、
    とりあえず、前から作りたいなと思ってたものを
    作ってみた。AIと対話しながら作ったが、
    いつもはchatgptを使ってる。でもコードに
    ついてはclaudeでやった方がうまく動いた。
    作ったものを説明すると、
    '{開始番号-終了番号:ステップ数(省略可)}
    と書いて評価すると開始番号から終了番号まで
    昇順、降順関係なくステップ数だけ変化して
    リストに並べるというリードマクロ。
  src lisp 
(defun read-range (stream char)
  "讀み込み時マクロにて數値範圍を展開する關數(ステップ數對應)"
  (declare (ignore char))
  (let* ((range-str (with-output-to-string (s)
                      (loop for c = (read-char stream)
                            until (char= c #\})
                            do (write-char c s))))
         (separator (cond ((search ".." range-str) "..")
                          ((search "-" range-str) "-")
                          (t (error "区切り文字無之候"))))
         (parts (remove-if (lambda (s) (string= s ""))
                           (mapcar (lambda (s) 
                                     (string-trim '(#\Space #\Tab) s))
                                   (uiop:split-string range-str :separator separator)))))
    ;; step指定の有無を確認
    (let* ((step-parts (uiop:split-string (second parts) :separator ":"))
           (end (parse-integer (first step-parts)))
           (step (if (second step-parts)
                     (parse-integer (second step-parts))
                     1))
           (start (parse-integer (first parts))))
      (if (< start end)
          ;; 昇順
          (loop for i from start to end by step collect i)
          ;; 降順
          (loop for i from start downto end by step collect i))))) ; =>READ-RANGE 

(set-macro-character #\{ #'read-range)  ; =>T 
(set-macro-character #\} (get-macro-character #\) nil)) ; =>T 

'{2-7}                                  ; =>(2 3 4 5 6 7) 
'{2-10:3}                               ; =>(2 5 8) 
'{10-3:4}                               ; =>(10 6) 
'{2..8:2}                               ; =>(2 4 6 8) 
'{9..2:2}                               ; =>(9 7 5 3) 
'{ 2-7 }                                ; => 
'{2 - 10:3}                             ; => 
'{10-3:4}                               ; =>(10 6) 
'{2..8:2}                               ; =>(2 4 6 8) 
'{9..2:2}                               ; =>(9 7 5 3) 
(apply #'+ '{1-10:2})                   ; => 25

src