2020年1月31日金曜日

CD/DVD

 終活、というわけではないのだけど、CD/DVDを処分しはじめた。
 かつてハードディスクにはいり切らなくなったデータをCD/DVDへ焼きだしていたのである。当時のハードディスクは1Gとか、2Gとかそんなものでいい気になって保存していた。二十枚近くある。
 それでもこれだけのデータが今の——一世代前のだけど——、ハードディスクに納まってしまう。いったいあの日々はなんだったんだろう。
 しかも今はそもそもハードディスクに保存すること自体、なくなった。
 ネットがあるから。

 考えてみれば、かつてはフロッピィディスクが山ほどあったんだよな。処分してしまったけれど。DOS時代の遺物だ。データをフロッピィディスクへ吐き出していた。ハードディスクの容量が20Mで、むちゃくちゃ、大容量だと思っていた時代。

 そういえば、山ほどあったカセットテープも捨ててしまった。
 引っ越しで捨てざろう得なかったのだけど。
 かつてレンタルレコード店というものがあったのだ。まだ、CDもなく、ビデオテープも存在しなかったころ。ウォークマンが時代をつくった時代。
 そのあとに買い集めたビデオテープもすでに手元にはない。音楽CDもそうだ。iPhoneにいれてしまったので手元にもっておく意味がなくなってしまった……。

 思えば、あの日々はなんだったんだろう。
 それぞれの日々ではそれなりに一生懸命だったはずなのに。
 いろんなものを手元に残そうとしていたのに。
 今や何も残っていない。

2020年1月30日木曜日

128Gがふっ飛んで右往左往

 不安はもろもろあったのだけれど、BeelinkS1の 内蔵ディスクを128Gにした
 それでようやく重い腰をあげて 本格的に使おうか、と26Gもあるファイルをscpでコピーしていたら突然、動かなくなった。sudoも効かない。何? 何? 何が起きたの?
 何が起きているのか、さっぱりわからず、いろいろやってみていたら——あれ? ホームディレクトリが空っぽになっている。
 ZFSがまた、ぶっ壊れた。

 ところが翌日になると、うまく動いた。
 また、熱ダレだったか、と思って使っていると、ふたたび、おかしくなった。
 やはりだめだ。
 とりあえずBeelinkS1はWindows10として使うか。
 でもhome editionなのでRDPが使えない。
 クライアントとして使うしかない。しかたないのでマシン本体を机の上にもってきた。これがほんとのデスクトップ。なんちゃって。でももしかしたら使えるかもしれないので、FreeBSDをいれていたSSDにフォーマットをかけた。
 20GのDドライブができた。
 ——?
 128Gじゃない。
 何度、見直してみても20G。やりなおしても20G。ほんとうに壊れてしまっていたらしい。
 しかたがない。

 問題はWindows10とMacのやりとりだ。
 もちろんネット的にはつながる。けれど、26Gなんて馬鹿でかいファイルの転送はさすがに時間がかかりすぎるので外部記憶装置が必要だ。
 昔、使っていたお立ち台をひっぱりだす。
 160Gのハードディスクを突っ込んでNTFSでフォーマット。
 これでMacとWindows10でやりとりできるはずだ。
 Macにつなげて試した——ところがreadonlyだった。書きこめない。昔、読み書きができたように思っていたのだけど。どうやらかんちがいだったらしい。うーん、これはこまった。これじゃ、Windows10からMacへの一方通行しかできないじゃないか。今、やりたいのは逆方向のMacからWindows10なのだが。
 なのでexFATでフォーマットしなおした。
 これなら両方で読み書きできる。

 FreeBSDのSSDを納めていたスロットにはもうひとつ余っている128GのSSDをいれた。
 これはNTFSでフォーマットしてDドライブとして使うことにした。
 ほか、いろいろと設定をしているうちに、Macから操作ができないことに嫌になって、思わず、以前いれた Ubuntuをインストールしてしまった。128GのSSDに。
  UbuntuならVNCでMac上に表示できるからMacから操作できる。
 いちいちディスプレイをスイッチする必要がなくなる。
 いい考えだと思ったのだけれど、UbuntuはexFATを認識してくれなかった…… 1
 それで頭に来てお立ち台のハードディスクをNTFSでフォーマットしなおしてしまった。
 UbuntuはNTFSを読み書きできるけど、Macはreadonlyなんだから、元の黙阿弥ではないか。
 ——なんでおれは後戻りのできない性格なんだろう……。
 でも勝算はなくもなかった。
 Windows10はできないけれど、UbuntuはHFS+を読めるのである。readonlyだとしても。
 当然、MacはHFS+を読み書きできる。
 実はお立ち台はもう一台あってそれは現役でMac用に使用中。フォーマットはHFS+。
 2台あるお立ち台はいずれもMac、Ubuntu間では一方通行だけど、互い違いなのでデータの往復が可能なのである。
 ちょっと面倒ではあるけれど。

Footnotes:

1

きっと方法はあるのだろうけど、FreeBSDなら一生懸命探すのにUbuntuだと、見当らない、というだけであきらめてしまう。よくない傾向だ。

2020年1月29日水曜日

めも VirtualBox

 BeelinkS1のFreeBSDにVirtualBoxを「pkg install」した。
 installしたときに、設定方法が表示されたのでその通りにやれば、よかったのだけど、ゲストOSにメモリが1Gしか、割り当てることができなくて死んだ。

Message from virtualbox-ose-5.2.34:


VirtualBox was installed.

You need to load the vboxdrv kernel module via /boot/loader.conf:

vboxdrv_load="YES"

You also have to add all users to your vboxusers group in order to use vbox.

% pw groupmod vboxusers -m jerry

Reboot the machine to load the needed kernel modules.

Bridging Support:
===============

For bridged networking please add the following line to your /etc/rc.conf:

vboxnet_enable="YES"

USB Support:
==========

For USB support your user needs to be in the operator group and needs read
and write permissions to the USB device.

% pw groupmod operator -m jerry

Add the following to /etc/devfs.rules (create if it doesn't exist):

[system=10]
add path 'usb/*' mode 0660 group operator

To load these new rule add the following to /etc/rc.conf:

devfs_system_ruleset="system"

Then restart devfs to load the new rules:

% /etc/rc.d/devfs restart

Troubleshooting:
==============

Running VirtualBox as non-root user may fail with a fatal error
NS_ERROR_FACTORY_NOT_REGISTERED. In this case delete tmp.vbox-*-ipc file.

If you experience "Network: write Failed: Cannot allocate memory" errors
try to increase net.graph.maxdata in /boot/loader.conf

If you are using AIO, then increase these limits (PR#168298):
vfs.aio.max_buf_aio=8192
vfs.aio.max_aio_queue_per_proc=65536
vfs.aio.max_aio_per_proc=8192
vfs.aio.max_aio_queue=65536
To check if AIO is used use: kldstat -v | grep aio

Check wiki page for known issues and troubleshooting:
http://wiki.freebsd.org/VirtualBox

Please report any problems to emulation@. Thanks!
$

2020年1月28日火曜日

flet(2)

 cl-fletがあれば、レキシカルスコープとあわせてコードを分離できるじゃないか。「use」できないけれど、簡単なパッケージみたいなもんだよなぁ。よろこんで多用していたら——。
 あれ? 再帰呼び出しができない。ふうん、「cl-labels」を使え、ということらしいな。

FUNC is defined only within FORM, not BODY, so you can’t write
recursive function definitions. Use ‘cl-labels’ for that. See
info node ‘(cl) Function Bindings’ for details.

 ふむ。

2020年1月27日月曜日

Org-mode:(org-element-context)

 Org-modeでカレント行のTAGを取得したいことがあって自前でいろいろやっていたんだけれど。

(org-element-context)

 で取得できることに気づいた。
 こりゃあ、いい。

2020年1月24日金曜日

Org-mode:(org-edit-special)

 Org-modeは高機能だということは知っていたけど——だから知らない機能がけっこうあって。
 たとえば、よくソースの断片をメモしているのだけれど。

#+BEGIN_SRC elisp
(messge "ERROR")
#+END_SRC

 Org-modeの中だと、メジャーモードの機能が使えないので、別のところで修正してカット&ペーストでもってきたりしていた。
 ところが「Ctrl+'」とやると、別バッファで開いてくれる。そのうえ、指定したモードにしてくれる。上の例だと「elisp-mode」 1になる。

 これの何がいいのか、というと、SRCで指定しているモードは、Emacsのメジャーモードならなんでもいいはずなので、picture-modeとか、指定できるのだ。SRCの外だと、書いたpictureは勝手に整形されてしまうからこれは重宝する。
 SRCの中に置いておいて修正するときは「Ctrl+'」とやるわけ。

#+BEGIN_SRC picture
  -------+
         |
   <=====+
#+END_SRC

 もちろん、Org-modeも指定できるわけで無意味だけど、それはそれでおもしろい。

Footnotes:

1

正確には(emacs-lisp-mode)。

2020年1月23日木曜日

helm (2)

  helmが好きだ。
 これがあるだけでEmacsから離れられない。最近は自前のものまでカスタマイズする始末。

 たとえば、業務系のプログラム開発の現場だと、設計書はExcelで書かれていたりする。ファイル名にプログラムIDと機能名をつけたりしてね。プログラムIDは8桁のコードだったりして、けっこう泣ける。
 今時? とか、思うのだけれど、下っ端がいってもかわるものではなく——。
 プログラムIDがでてくるたびに一覧を探し出して、検索して機能名を調べたりするわけだ。
 ——めんどくさっ。
 なのでhelmにぶち込んだ。

 Emacsを立ち上げるときに設計書のフォルダを検索して生成したファイル一覧をhelmの「:sources」にする。ファイル一覧をプログラムIDと機能名の一覧にするわけだ。それをhelm検索する。
 これでプログラムIDをいれるだけで(中途半端でも可) 1、機能名がわかる。逆に機能名からプログラムIDも引ける。
 それをプロジェクトごとにつくってやると、なんと簡単な自前のデータベースができあがった。
 一覧をメンテナンスする必要がないところが、これのいいところ。
 「:preselect」でExcelで表示するようにしておけば、必要なときに設計書の参照もできる 2

 そうやってつくった複数の 3helmのデータベースをひとつのhelmのコマンドにまとめておけば、横断的に検索することもできる 4。すばらしい。

 でもおかげでプログラムIDを全然、覚え切れない。

Footnotes:

1

カーソルのある位置の単語でまず、絞りこむこともできる。

2

「:select」だと、つねにExcelが立ち上がるので。それはそれでわずらわしい。

3

テーブル一覧とか。これは裏でjava——正確には ABCL——をつかってExcelから抽出した。

4

複数のsourceは「Ctrl-o」で渡り歩くことができる。

2020年1月22日水曜日

loopマクロ

 たとえば、あるlistの中から奇数だけを抽出したい、というとき。

wrk
(1 2 3 4 5 6 7 8 9 10)
(loop for x in wrk
      collect
      (when (oddp x)
        x))
(1 nil 3 nil 5 nil 7 nil 9 nil)

 こうやると、nilがまじってしまう。このケースだと、remove-ifを使えば、いいのだけの話なのだけど——loopマクロでこんな風にしていた。

(loop for x in wrk
      append
      (when (oddp x)
        (list x)))
(1 3 5 7 9)

 なんかいまいちだなぁ。
 なんとこうできるのだった。

(loop for x in wrk
      when (oddp x)
        collect x)
(1 3 5 7 9)

 すげえな、loopマクロ。

2020年1月21日火曜日

format

 listのデータをformatで整形するの面倒臭いなぁ。carとnthとか、使うのはなんか、ちがうような気がする。
  CommonLispのformatのように簡単にできないものか。

 ん〜、もしかしたらapplyでいけるかも。

(apply #'format  "%s %s %s" '( "A"  "B"  "C"))
 "A B C"

 いけた。すばらしい。

2020年1月20日月曜日

2020年1月17日金曜日

GNU Screen

  1. sshでリモートサーバに入る。
  2. 作業する。
  3. sshを切る。

 このあと、ふたたび、リモートサーバに入って、2.に接続して作業を続けたい 1
 それには「 emacs –daemon」を使っていたのだけど、RaspberryPiでrebuildしていたらメモリ不足でemacsごと、落ちてしまった。バッファをずっと溜め込んでいるだろうからなぁ……。たしか、 GNU Screenで同じことができたはず。
 RaspberryPiにインストールした。

  1. sshでリモートサーバに入る。
  2. screenを立ち上げる。
  3. 作業する。
  4. Ctrl-a dでscreenからデタッチ。
  5. sshを切る。

 このあと、

  1. sshでリモートサーバに入る。
  2. screen -r

 これで前回デタッチされたscreenにアタッチされる。

 ただ、キーアサインがCtrl-aなのがなぁ…… 2

Footnotes:

1

コンパイルを流しっぱなしにしてそこへ戻る、というような。

2

行の先頭に移動するためによく使うのでこのキーアサインはきびしい。
設定ファイルをいじれば、いいんだろうけど。GNUなのにどうしてEmacs風じゃないんだろう……。

2020年1月16日木曜日

RaspberryPiのFreeBSDをrebuild

  RaspberryPiのFreeBSDはバイナリアップデートがサポートされていない
 パッチが公開されたとき、ソースからビルドしなおすことになるのだけど、今までやってみたことがないので試してみることにした。
 いわゆるmake world。
 「 ソースを用いた FreeBSD のアップデート」にあるとおりにやっていく。

 まずはソースをもってくる。これだけでも大変だった。でもsvnで管理されているから次からは差分アップデートになるはず。
 次は「make -j4 buildworld」——。
 延々、コンパイルが走ったあと、落ちる 1
 何度も試しあと、ようやく原因がわかる。メモリ不足だった。out of swapとか、なんとか。
 swapファイルを3Gにしてもだめだったのでそこであきらめた。
 最終的に「-j」指定なしでなんとか、終了した。

 次に「make buildkernel」——。
 落ちる。なんで? 「-j」なしなのに。ディスク容量をチェックしてみたら今までに見たことのない「-1G」という表示。なんじゃ、それ。いずれにしても32GのSDカードではリビルドするのに足りないらしい。「/usr/obj」の下が18Gもあった。
 無理か。
 色々、考えてUSDで外付けのハードディスクをマウントする。「/mnt」——そこへ中身を移動して「/usr/src」と「/usr/obj」のシンボリックリンクを張る。ところが、「make buildkernel」は継続できたのに「make installworld」に失敗してしまった。
 しかたなく、「make buildworld」からリトライ。
 成功。
 「make buildkernel」成功。
 「make installworld」成功。

 今にしても思えば、「/mnt」にマウントするのではなく、「/usr/obj」にマウントしてもよかった。
 「/usr/src」は差分アップデート用に残しておきたいので。

 まぁ、リビルトができることはわかっただけでも収穫。
 日単位で時間はかかったけど。

Footnotes:

1

最初、「-j」なしでやっていたのだけど、あまりにも時間がかかるので「-j4」でやっていた。

2020年1月15日水曜日

押井守監督「スカイ・クロラ」

 公開された当時、「また、いつもの押井守」という映画評を見かけた。「空中戦だけはいい」ともあった。だれがそう書いていたのか、まったく覚えていない。
 けれど原作者の森博嗣の「押井作品の中で最高傑作かもしれない」というのを読んでちょっと観る気になった。
 で、観た。
 ——森博嗣に一票。

2020年1月11日土曜日

USB-C Digital AV Multiportアダプタ

  MacBook Air 13にはUSB-Cのポートがふたつしか、ついていない。
 片方を電源コネクタにつなぐと、残りのポートはひとつだけ。HDMIをつないで クラムシェルモードにしたらほかのUSB機器はどうすればいいんだ?
 というわけで「USB-C Digital AV Multiportアダプタ」なるものを購入した。


        +- USB-C(メス)
        |       
USB-C --+- HDMI 
(オス)  |      
        +- USB

 となっている。これでUSB-Cを電源につないでしまって残り一個になっても安心だ。USBポートがあるし、アダプタのUSB-Cにつないでデイジーチェーンにすれば、さらに拡張できるだろう。Apple、いい商売しているな。

 と……。
 あれ?
 ちょっと待て。
 もしかしたらアダプタのUSB-Cに電源をつなげることができるんじゃないか?
 充電できるんじゃないか?

 試してみたらできた。
 つまりアダプタ一個で、充電しながらHDMIが使えるということだ。消費するのはMacのUSB-Cひとつだけ。それでクラムシェルモードにできるということ。

2020年1月9日木曜日

RaspberryPiをUbuntu Server(元旦からあかんかった)

  FreeBSDが動くので、RaspberryPiをサーバにできるな、と思っていたのだけれど、どうもPostgreSQLがへんだ。普通に動いているように見えて配列のカラムを全部、NULLにしようとすると、エラーになる。BeelinkS1で動かしているFreeBSDではだいじょうぶなのだが——。Google先生でもヒットしないし、PostgreSQLのバージョンのちがいせいでもなさそうだ。 Raspbianでもちゃんと動くし。
 うーん、配列のカラムを全部、NULLにしなければ、問題なさそうなのだけれど、するんだよなぁ。今あるやつ。
 しかたないのでUbuntu Serverにでもするか、と元旦からインストールしていた。
 Ubuntu Serverには——。

・SBCLもあるし。
・オンボードのwifiも使えるし。
・ssh -Yも使えたし。
・64bitだし。

 よくわからんからたどたどと試行錯誤しながらインストールしていったのだけど。
 ところが、なぜか、使っている途中でネットワーク——wifiが切れる。
 どうも ここの事象と同じっぽい気がするのだけれど、解決しない。切れる。
 あかんわー。
 あきらめだわー。
 元旦が一日、無駄になったわー。

2020年1月8日水曜日

ノートパソコン・ヒストリー

 今までどんなノートブックパソコン——昔はラップトップといっていたよね——を使ってきたんだっけ。
 そもそもSun Microsystemsの20万もしたラップトップ・ワークステーション 1が欲しかったんだよねぇ。ただし、あれはキャリーバックがなければ、運べない代物だったし、何に使えば、いいんだ、という話で、結局、購入しなかった。

購入日付 名前 備考
l990-05-12 OASYS/ラップトップ ワープロ
1993-02-24 dynabook SS001 フロッピィディスクが二台使えると画期的だった
1995-01-09 HP200LX いわずと知れた名機
1997-08-18 Libretto30  
2001-01-21 ThinkPad iSersies1124  
2006-11-24 ThinkPad X60  
2014-12-06 MacBook Air (11-inch, Early 2014)  
2020-01-05 MacBook Air (Retina, 13-inch, 2019)  

 OASYSとHP200LXはノートブックパソコンとはいえないけれど、それらをのぞくとだいたい5年周期で買い替えている。 ThinkPad X60は例外だけれど。だとすると、今回の MacBook Airの買い換えはそういう時期だったんだなぁ。
 実は1990年ごろにもらいもののPowerBook 5300CSを所有していたけれど、まったく使えない代物で、しかも2kgごえ。PCカードをアウンマウントできない、という個人的には最低のマシンだった。 40Gのハードディスクはその遺物だ。
 こうやってみると、この30年間の変遷が感じられて感慨深い。

Footnotes:

1

よく覚えていないけど、 これかなぁ

2020年1月7日火曜日

MacBook Air (Retina, 13-inch, 2019)

 「 とても後悔している」わりに、モノが到着すると、現金なもので。
 思ったよりも筐体の大きさは先代とあまりかわらず。重さは——やはり重かったけれど。スペック値で300gほど。
 ただ、五年も使っていると、けっこう傷ついていることに気づく。
 さすがに新品と比べると一目瞭然。
 これなら買い替えてよかったかな、という気になった。内蔵ディスプレイもRetinaなのでクリアなことだし。外付けのDELLのディスプレイよりも。

 到着直後、すぐに移行アシスタントと使って環境を移行したのだけれど、うっかりソフトウェアアップデートをかけてしまった。OSがCatelinaに。元々、Catelinaだったのかもしれないのだが。それに気づかないほど、うっかりとアップデートしてしまった。
 結果、Emacs、VirtualBoxが動かなくなる。
 なんかDocumentsフォルダの下を読みこめないのだ。
 Emacsにフルアクセス権を与えてもだめで、なぜ? ——謎。
 何度か、移行をくりかえしたけれど、だめ。
 しかたないので先代のフルバックアップからごっそりMacBookAir13にインストール。OSはデグレートしてMojaveに——まぁ、中身まんま、先代なのだからこれなら動くわけだ。

 基本的には買い替えてよかったな、なのだけれど、二点ほど違和感が。
 ひとつ、蓋が開けづらい。MacBookAirがデビューしたときには指一本で蓋が開くことが売りだったのに——むずい。ふたつ、キーボードの打鍵が硬くて浅い。馴れなのかもしれないが。指の腹でなでるようにしないといけないんだろうな、これは。

 ただ11インチがMacのノートパソコンのラインナップから消えたのはわかるような気がした。実物に触れると。サイズ的にはほとんどかわらないのに、ディスプレイは広いし、きれい、となると。

2020年1月5日日曜日

MacBook Air 13インチを購入

 MacBook Air 13インチを買ってしまった。
 まだまだ、手持ちの MacBook Airは使えるというのに。外付け ディスプレイをつないで映画も観れるし、全然、現役だ。バッテリーがすこしへたりはじめているけど、最近は電源で使用することが多いので問題はない。
 なのに。
 なのにどーしてー。
 不満は買った当時から失敗したと思っていた内蔵ディスクの容量不足だけだったのに。

 それなのにMacBook Air 13インチには次のデメリットがある。

  1. 重い。1kgを越える 1
  2. USB端子がない 2
  3. お金がかかる 3

 また、Windowsのノートブックへ戻すことも考えていたのだけれど、今は完全にAppleのエコシステムにからめとられてしまっているので、しばらくはむずかしい。とくにトラックパッドの動きはMacに軍配が上がりすぎる。

 購入金額から考えていっそ、MacBook Airではなく、上位互換のMacBook Proという線も考えたのだけれど、Touch Barがなぁ、あれ、何に使うの? クラムモードではそもそも不要じゃないか。
 というわけでMacBook Air 13インチを購入した。

 とても後悔している。ただしこれはいつものこと。

Footnotes:

1

11インチがなくなってしまったのだよ。MacBookもラインナップからなくなってしまったし。

2

拡張ケーブルを買うにしてもポートが二個しかなく、一個は電源用に使われてしまう。

3

なんだかんだと拡張して付属品をプラスすると、大台を越えてしまうじゃないか!

2020年1月3日金曜日

2019年決算

 本:48冊
漫画:440冊
映画:12本
WIND:6日/24km
TVアニメ/TVドラマ:358話