今日
午前SuperColliderでパーサー作りの続き.正直うまくいってない.当たり前っちゃ当たり前なんだけど,SuperColliderは音響や配列リアルタイム操作のための言語(というかライブラリ)だからなぁ.
午後学校で書類作りとか色々事務作業.
午前SuperColliderでパーサー作りの続き.正直うまくいってない.当たり前っちゃ当たり前なんだけど,SuperColliderは音響や配列リアルタイム操作のための言語(というかライブラリ)だからなぁ.
午後学校で書類作りとか色々事務作業.
午前ゼミ.
午後NFSサーバの設定と,dpkgのエラー解決.
ちょっと前にBuffaloのNASであるラックマウントTeraStationがNFSサーバとして使えるということで,Linux計算機群のホームを置く場所として設定しようとしたら,no_root_squash
オプションが与えられないばかりか,全てunknownユーザ:unknownグループになるのがデフォルトで,結構無茶しないとまともなNFSサーバとしては使えないことが判明した.
んで調べてみたら,安いNASキットSynologyの製品群は,きちんとNFSサーバとして使えて,しかも安いSATA HDDでRAIDが組めることがわかったので,発注.
今日到着したので設定したら,一発でフツーのNFSサーバとして使えた……何これ研究室レベルのネットワークで使うには最高の製品じゃん.
その後NISサーバの$ apt update
と$ apt upgrade
で,nisがエラーを返した.
dpkg: パッケージ nis の処理中にエラーが発生しました (--configure):
サブプロセス インストール済みの post-installation スクリプト はエラー終了ステータス 102 を返しました
処理中にエラーが発生しました:
nis
/var/lib/dpkg/info
の中の,nis.postinst
, nis.preinst
, nis.prerm
, nis.postrm
を削除.
再度,$ apt update
, $ apt upgrade
で解決.
昼に用事があったため,午前中は家でSuperColliderのGP周り.新たに「プログラミング言語」としてLISPパーサーを綺麗に実装しようとしているため,試行錯誤.ダメだったら通常の配列ラベル型線形に戻すかも.
午後は学校に行ったが結局仕事にならず.
午前中は昨日と同じく体調回復.
午後はプライベートの事務処理契約関係で駆け回った後,P5.jsのWebSocket連携部分とlibwebsocketsを使って書いたWebSocketサーバのstd::stringのparser部分の設計と実装.
STLがC++99からというのもあるのだけれど,基本的なスプリッタすら最初に入ってないのは,JavaのStringに比べて初学者には敷居が高いのはあるかもなぁ.
午前中は体調回復のため起きるのを遅くした.
午後は学会関係と学校関係の事務仕事.夜からlibwebsockets周りの教材作り再開.
libwebsocketsは授業用教材のためにやっているので,如何にわかりやすいコメントを入れつつ短いコードでシンプルな例を書くか,ってところに注力するわけだが,libwebsocketsそのものが設計ぶれぶれでコンテキストと本体のインスタンスが一体化してしまってて厄介.
簡単にいえば,オブジェクト指向的にライブラリそのもののインスタンスを作って初期化→各クライアント向けのコンテキストを作って追加していく,というのが正しい流れだと思うのだが,開発者が途中ではたと「これCのライブラリだったわ」ということを思い出したのか,ライブラリのインスタンスとコンテキストが混同し始めて,どっちかに統一すりゃいいのにバラバラという現状.
コールバック(というかイベントハンドラ)はオブジェクトのインスタンスが落ちてくるインタフェースに則って書かれているのに,クリエイトとデストロイはコンテキストで行う,という,ふつー逆だろ的な.
しかしそれでも,Cとしてはヒジョーに短いコードで,WS通信のみのサーバプログラムが書けるので,libwebsocketsというライブラリは優秀だと思う.
他の言語は全てWebフレームワークと一体化しているものばかりで,シンプルなWSのみのサーバを作るためだけに大量のライブラリをインストールしなきゃいけないし,書かなければいけないコードも膨大になるのだが(例えばJavaだと基本的にJavaEEでしか動かない),libwebsocketsはホントにWebSocketプロトコロルのみの部分が書けるため,Cのコードの長さを以ってしても全体が短く仕上がる.