Lambdaカクテル

ウェブアプリケーションエンジニアです.玉石混淆です.

一日の記録

晴天だったようだが体調はそれほど快調でもなく,そもそも寝られなかったので徹夜をしている.今は目を充血させながらこの記録を残している.

今日はいくつか技術的進展があった.

ファイルサーバを仮想化するのはやめた

ファイルサーバの仮想化に幾度となく挑戦してきたが,あまり望んだ結果が得られなかったので,普通にホストOSであるCentOS 7がゲストであるOS X El CapitanにNFS共有を提供するという形に落ち着いた.NFSは安定していて速い.その一方で,ユーザ認証といったシステムは基本的にないので,それをやりたければLDAPをうまく使う必要があることが分かった.僕の場合はどうせ一人でバックアップ代わりに使うファイルサーバが欲しかっただけなのでパーミッションを777にしてやりすごした.手抜きも大事.

SBCLSDLを動かして図形描画ができるようになった

f:id:Windymelt:20170416223555p:plain

SBCLというのはCommon LISPの処理系.

lispbuilder-SDLというSDLCommon LISPから扱うためのライブラリをquicklispで導入した.SDLのバイナリはbrewでインストールし, lispでSDL | iso.enat.jp さんのブログを参考に調整したところ動いた.

内容は下記サイトのコードを改造した程度に留まっている.

d.hatena.ne.jp

(ql:quickload :lispbuilder-sdl)
(require :lispbuilder-sdl)

(defun main ()
  (sdl:with-init ()
    (sdl:window 200 200 :title-caption "hogera")
    (setf (sdl:frame-rate) 10)

    (sdl:with-events ()
      (:quit-event () t)
      (:key-down-event () (sdl:push-quit-event))
      (:idle ()
             (sdl:clear-display sdl:*black*)
             (sdl:draw-circle
              (sdl:point :x (random 200) :y (random 200))
              10
              :color sdl:*green*)
             (sdl:update-display)))))

(sb-int:with-float-traps-masked (:invalid) (main))
(main)

しかし,Common LISPオブジェクト指向システムであるCLOSを使ってタスクシステムを実装すれば,沢山のオブジェクトを自律的に画面に表示できるだろう. これは次の課題としておきたい.

Common LISPで開発していると,SLIMEが提供する機能が非常に便利だと気付く.カーソルのあたっている関数の引数についての情報がミニバッファに表示されるし,高機能なREPL/デバッガを使うことができる.

FreeBSD or Ubuntuへの移行の機運について

機運はちょっと下がった.Finderで画像に当てているタグが他のOSでは当然引き継げないことに気付いたからだ.それと,Steamのゲーム対応.OS Xでは動くがLinuxでは動かないというゲームがあるし,そもそもFreeBSDにSteamの公式クライアントは存在しない.不自由な世界だ.

それはそれで,年代物のMac ProOS Xのアプデごとにどんどん重くなっていくのを見ると,年老いた家族を見ているようで辛くなってくるのである. やっぱり爆速で使いたい.ソフトウェアを起動するだけで数十秒も待たされるのは苦痛である.