Tunnel/Reverse Tunnel over websocket を作った

とある理由から 「Tunnel/Reverse Tunnel over websocket」 が必要になったので作ってみた。 「Tunnel/Reverse Tunnel over websocket」 が何かというと、 「websocket を tunnel にして別の TCP 通信を通すもの」だ。 「Tunnel/Reverse Tunnel over websocket」 とは 「Tunnel/Reverse Tunnel over websocket」を少し具体的にいうと、 次のような構成で通信を可能にするモノだ。 frame

Hugo を org-mode で使う時の注意点

技術情報を GitHub Pages で公開するにあたって、 Hugo を使うことにした。 Hugo は Markdown で静的サイトを構築するツールだが、org-mode にも対応している。 「対応」といっても、当然完全なものではない。 今回 Hugo を org-mode で使ってハマった点を紹介する。 *「TITLE は文書の先頭に書く」 hugo で使用する .org のファイルは、先頭に TITLE を書かなければならない。 .org に記載されている #+TITLE 自体は認識しているようなのだが、 それが先頭に無い限りその記事のタイトルと

raspberry pi の USB MASS STORAGE 自動マウントを無効化する

raspberry pi に SSD を接続して簡易 NAS にしている。 この簡易 NAS では、 SSD を取り外ししやすいように autofs によるマウントを設定した。 しかし、SSD を接続すると PCManFM の自動マウントが動いて autofs が正常にマウントできない現象が発生した。 そこで PCManFM の自動マウントを無効化した。 PCManFM の自動マウントを無効化 ~/.config/pcmanfm/LXDE-pi/pcmanfm.conf の以下の設定を変更する。 mount_on_startup=0 mount_removable=0 これで、PCManFM の自動マウントを無効化できる。

emacs lisp の quote

emacs lisp の quote でハマったのでネタに書いておく。 1 2 3 4 5 6 (defvar hoge-val nil) (defun hoge-init () (setq hoge-val '(:val nil)) ) (defun hoge-set () (plist-put hoge-val :val "1")) 上記のように変数 hoge-val に対して plist-put で処理する関数を定義して、 次のようにコールすると。 1 2 3 4 5 6 7 8 (let (val1 val2 val3) (hoge-init) (setq val1 (plist-get hoge-val :val)) (hoge-set) (setq val2 (plist-get hoge-val :val)) (hoge-init) (setq val3 (plist-get hoge-val :val)) (message (format "%s %s %s" val1 val2 val3))) 最後の (message (format "%s %s %s" val1 val2 val3)) で "nil 1 1" が出力される。 てっきり、 "nil 1 nil" が出力されるものだと思っていた。 なぜなら、val3 をセットする直前に hoge-init を実行しており、 この hoge-init は hoge-val を

org-mode 9.3.5 で babel(dot/plantuml) が動かなかった

emacs の org-mode では、 .org ファイル内に C や python 等ソースコードを書いて、 export 時にそのソースコードを色付けした状態で載せることができる。 この機能を babel と言う。 babel では、ソースコードの色付けだけでなく、 dot や plantuml 等のグラフ生成言語を利用することで、 .org ファイル内に書いたグラフ生成言語からグラフを生成して、 所定位置にグラフを挿入することもできる。 今回、 org-mode 9.3.5 の babel を使って dot の画像を出力しようとしたところ、 エラーしたので原因を追ってみた