なんだこれは

はてなダイアリーから移転しました。

Emacs で package がうまくいかなかったので

Emacs で package がうまくいかなかったので

Emacs で package の async が壊れた

Gcc Emacs (Native Compiled) で起動時にいくつかのパッケージをコンパイルしているときに、async というパッケージで エラーがでていた。

no such file or directory とあったので ~/.emacs.d/elpa を覗いてみるとたしかにasync のディレクトリがなかった。正確には、async-20230323.643 をビルドしようとしていたが ~/.emacs.d/elpa には async-20230323.643 と番号の異なるディレクトリしかなかったのだった。

こういうときはどうすればいいのか、わからなかった。笑えばいいのかな。

M-x package-force-install とかないのか調べたら、 M-x package-reinstall というぴったりのがみつかったので、M-x package-reinstall RET async を実行したら直った。

それCommon Lisp でもできるよ

Common Lisp

C++ コンパイル時「出力」~C++にできないことはない~ らしいですよ。

C++ コンパイル時「出力」~C++にできないことはない~ らしいですよ。大変そうですね。

一方、Common Lisper は eval-when を使った。

eval-when:compile-toplevel などの指定したシチュエーションで任意のフォームを実行させることができます。

;;;; コンパイル時の実行
(eval-when (:compile-toplevel)
  (format t "at Compile time ~%"))

;;;;  ロード時の実行
(eval-when (:load-toplevel)
  (format t "at load ~%"))

;;;; 実行時の実行
(eval-when (:execute)
  (format t "at execute ~%"))

ここで任意のフォームというものには数の制限もないので、普通に 数をFizzBuzz文字列に変換する fizzbuzz 関数や、引数で指定した範囲の数のリストを返す iota 関数をいれて最後に format で表示してやればOKですね。

(eval-when (:compile-toplevel)
  (defun fizzbuzz (num)
    "convert number to FizzBuzz string or number"
    (cond
      ((= 0 (mod num 15)) "FizzBuzz")
      ((= 0 (mod num 3)) "Fizz")
      ((= 0 (mod num 5)) "Buzz")
      (t num)))
  (defun iota (n)
    "make a list where it contains 1 to n"
    (labels
    ((iter (x acc)
       (if (< x 1)
           acc
           (iter (1- x) (cons x acc)))))
      (iter n '())))
  ;; convert number list to fizzbuzz list and then output them
  (format t "~{~a~%~}" (mapcar #'FIZZBUZZ (iota 100))))

HyperSpec EVAL-WHEN

Best things in 2022 : HISTUDY

Best things in 2022 : HISTUDY

姫路IT系勉強会

姫路IT系勉強会兵庫県姫路市を中心とした周辺地域のIT系技術者、Webデザイナー、学生、IT技術に興味を持つ人びとが気軽に集まり、交流できる勉強会です。

これに参加して、運営側の雑用を手伝ってから、何年にもなる。

ハーバード大学がどこかの幸せの研究で、幸せになるには人間関係とか地域コミュニティとかそういったことがいわれていた。

それを間にうけて、とりあえず趣味の友人できないかなというある種の不純?な動機から参加してみたんだった。

興味がある人は、https://histudy.connpass.com/ を見てください。毎月第三土曜にやっています。また偶数月は Discord で開催します。

Emacs v30

Emacs 30

emacs-app-devel が Emacs-30 になっていた

いつものとおり emacs-app-devel を更新して、起動したら、今までのEmacs Lisp を読みこまなくなっていた。

ふと、M-x emacs-version を実行すると、emacs-30 になっていた。そう、emacs をバージョン毎にinitファイルを分けている設定をしていたのだった。

分岐先のファイルを作成して正常に起動することができた。よかった。

Best things in 2022 : OCaml

Best things in 2022 : OCaml

OCaml

OCaml は汎用のプログラミング言語。一年にすこしずつ知らないプログラミング言語の修得にチャレンジしては挫折している。

なんとなくよさそうな言語なのですが、いつの間にか dune というビルドシステムのようなものがでていてわからなくなってしまっている。とはいうものの dune がなかったら全部わかるのかというとそうではないのですけれども。

Best things in 2022 : コーヒー

Best things in 2022 : コーヒー

コーヒー

コーヒー豆を挽いてコーヒーをいれる。これはこういう作業を楽しむのがいいのかもしれない。コーヒーをいれるだけでかなりの気分転換になる。

前にこういったらコーヒーはいらないねっていってカップを奪おうとした奴がいたな。

Best things in 2022 : Linux Foundation の トレーニング

Best things in 2022 : Linux Foundation の トレーニン

Linux Foundation のトレーニン

Linux Foundationのトレーニング がけっこうよくできてる。

そして無料のコースもあるし、10時間以上の教材が用意されているコースもある。ほとんどのコースは英語だけれどもいくつかは日本語でサポートされているのもある。

これはごく最近の話だけど、セキュア ソフトウェア開発 (LFD121-JP) - Linux Foundation - トレーニング の日本語コースが利用できるようになった。しかも無料でだ。