2020年2月28日金曜日

slime-transpose-lists

 たとえば

((1 2 3)
 (4 5 6)
 (7 8 9))

 を

((1 4 7)
 (2 5 8)
 (3 6 9))

 という風に縦横を変換したい。
 パッと考えて二重ループで……とごちゃごちゃ考えたのだけれど、面倒臭い。きっとどこかにありそうだ。elisp、CommonLisp関連でググってもなかなか、見つからず、きっと名前に「tranpose」が入っているにちがいない、と考えてEmacsの「describe-function」で見つけた。

(slime-transpose-lists LIST-OF-LISTS)

Not documented.

 まさにこれ。ソースを見たら

( defun  slime-transpose-lists (list-of-lists)
  ( let ((ncols (length (car list-of-lists))))
    ( cl-loop for col-index below ncols
             collect ( cl-loop for row in list-of-lists
                              collect (elt row col-index)))))

 やはり二重ループ。
 それでもLispだとたったこれだけの行数で書ける。
 というか、簡単に書けてしまうから標準でなかったのかも。

2020年2月27日木曜日

(file-expand-wildcards "**/*.*")

 ああ、知らなかっただよ。

(file-expand-wildcards  "**/*.*")

 で、カレントディレクトリの下のファイルが全部、取得できるとは。
 eshellの「**/*.*」はこれは使っているんだろうなぁ。
 今さら気づくおれ。

2020年2月24日月曜日

2020年2月22日(土):検見川浜:晴れ

1 Sail:CORE 5.7(NEIL PRYDE) Board:NG ACP 260 Fin:9.5inch

-No- 時刻 時間 帆走距離 最高速 平均時速 P%
1 11:49-11:57 8分 1.1km 29.59km/h 8.23km/h 25.62
2 12:28-12:36 8分 1.0km 34.76km/h 7.73km/h 14.77
3 12:46-12:56 9分 1.1km 16.94km/h 6.84km/h 0.56
4 13:22-13:35 13分 1.3km 22.09km/h 5.73km/h 3.24

total 39分 4.5km 6.9km/h

 夜中のうちにきちんとカメラの充電をしておいたのにハウジングを忘れてしまった。
 何をやっておるのか。
 海ほたる16m/sなのに、検見川は思ったよりも風が入っていない。沖合いに白波が見えるのだが。これでは最大サイズのセイルをだしても走らなそうだ。ここはやはり南総まで下るべきだったのだろうか。
 しかし、午後には風があがるだろうし、昨年に引き続き、いきなり4.7コンディションかぁ。
 とりあえず、目の前のコンディションにあわせて最大サイズのセイルをチョイスした。5.7である。
 体力がない自覚はあるのでかなり緊張して海へ出た。死なないように、と。
 毎年、体力の心配をしているけれど、今年は今までで一番、体力がない——三ヶ月絶対安静で入院していたときよりもない。あのときは退院して1週間ぐらいにそれなりに体力は回復した。今年はだめだ。
 案の定、一往復しただけで突っ伏して喉が痛くなるほど、ゼーハーしてしまった。
 たまたま、風に当たったらしく、プレーニングしたけれど。
 大休止して二本目。
 これもプレーニングできた。沈したけれど。
 三本目はほとんど、走らず。沖で沈して溺れかける。水面に浮かんでいる状態で深呼吸できず、酸欠になりかける。気を失なうか、と思った。去年も同じだったなぁ。
 ふたたび、風が上がってきたような気がしたけれど、出艇してみると、そんなことはなく、ふたたび、溺れかける。いかんじゃないか。
 なんか、午前中よりも風がない。
 夕方、吹き上がるパターンかな?
 でもまぁ、今日は終わりでいいか。

2020年2月12日水曜日

城平京/片瀬茶柴「虚構推理」(1)〜(6)

 読みはじめたらきっと一気に読んでしまうんだろうな。
 案の定で、ひと区切りの6巻まで買い進めながら読了してしまった。

2020年2月10日月曜日

elispでqueueもどき

 もしかしたら。
 threadとmutexの組み合わせたらキューっぽいことができるんじゃないだろうか?

( let ((lexical-binding t)
      (w (make-mutex)))
  (mutex-lock w)
  ( loop for x from 1 to  10
        collect
        (make-thread
         ( let ((y x))
           ( lambda()
             ( with-mutex w
               (insert (number-to-string y) " \n"))))))
    (mutex-unlock w))
nil
3 
4 
5 
6 
7 
8 
9 
10 
1 
2 

 処理順序は保証されていないけど、キューっぽいよな、これ。
 うん。

2020年2月4日火曜日

Ubuntuでの「ssh -Y」

  正月にUbuntuをいじっているときに気づいたのだけれど。

ssh -Y

 が使えた。
 きっとUbuntu Serverだからだろう、と思っていたのだけど、「Ubuntu 18.04.3 LTS」で試してみたら使えるようになっていた。以前、使えなかったのは何だったんだろう。
 とても助かるけれど、それなら 机の上にBeelinkS1をもってくることはなかったなぁ。