yaftを使う

yaft is 何

github.com

Yet Another Framebuffer Terminal の略で、フレームバッファ端末上で動く端末エミュレータ

昔からこの分野には fbterm という有名なソフトがあるが開発は止まっており、最近も更新されているものを探してみたところyaftが出てきたので使ってみた。

何に使うものなの? という人のための雑な説明

デスクトップ向けなLinuxを使っている人は Ctrl + Alt + F2 (or F3, F4, F5, F6)を押してみてほしい。黒い画面になるはずだ(戻すには Ctrl + Alt + F7)*1
こういうのを仮想コンソールといって、それぞれでログインして作業することができる。
また、X Window Systemを入れなければ、仮想コンソールで作業することになる。

なのだけれど、この仮想コンソールではふつう日本語の表示ができない。
でも表示させたいよね、という人に嬉しいソフトがfbtermやyaftである。

ビルド

りどみに書いてあるようにするだけ。C製なのでgccだけあればよさそう。

$ git clone https://github.com/uobikiemukot/yaft.git
$ cd yaft
$ make
$ sudo make install

実行

$ sudo yaft

でとりあえず動く。

一般ユーザーで起動したい場合は、フレームバッファLinuxなら標準で /dev/fb* )へのアクセス権限をユーザーに附与することが必要。

Ubuntuでは /dev/fb* を所有するグループが video なので、

$ sudo gpasswd -a $USER video

してやればよい。

フォント変更

フォントは glyph.h に埋め込まれているので、これを書き換えてビルドし直すことで変更できる。標準はmilkjf.bdfを変換したものらしい。

BDFフォント*2をglyph.hの形式に変換するプログラムが同梱されているので、BDFフォントさえ用意してやればよい。

私はufo.bdfを試してみたが、問題なく使えた。これでUnicode BMPの全文字が表示できる。
github.com

その他

  • 背景画像を表示したりとかいろいろできるらしい(README参照)。
  • Unicode対応はBMPの範囲のみ。まあ、それ以上の範囲をサポートしているBDFフォントもそうそうないけれど……
  • IMには対応していなそうなので、日本語入力はできない。
    • Emacs + ddskk で日本語文書を書くこと自体はできたので、どうしても必要になれば気合で……
    • Issueを見ると、IMを使いたい場合は mlterm-fb に誘導していそう。あくまでyaftはシンプルにということだろうか。
      • これを見て mlterm-fb も試してみたが、こちらは多機能ですごい。ちなみに、mltermはubuntuリポジトリにあるが、これを入れるとmlterm-fb(フレームバッファ版)が入らないので、自分で --witth-gui=fb を指定してビルドする必要がある。
  • (2019/11/20追記)画面の解像度が高すぎて普通のbdfフォントでは文字サイズが合わない場合、bdfresizeというツール(Debian -- jessie の bdfresize パッケージに関する詳細)でフォントを拡大するのもよいかもしれない

*1:このへんは当然設定によって変わるだろうけれど、Ubuntuあたりを普通のPCに初期設定で入れるとたぶんこうなっている。

*2:Unix系OSで使われてきたビットマップフォントの形式のひとつ。

「半分」について



〔これは雑な記事です〕

先日映画を観に行ったら、『響』という映画の予告で「天才とはわずかにわれわれと一歩を隔てたもののことである。」という文句が使われていた。
これは芥川龍之介侏儒の言葉』の一節で、「ただこの一歩を理解するためには百里の半ばを九十九里とする超数学を知らなければならぬ。」と続く*1
続きを書かずにそこだけ抜くのはどうなんだという気持ちはないでもなかったが、それはまあよくて、「百里の半ばを九十九里とする超数学」について考えていたら、「半分」という概念がわからなくなった。

「半分の点はどんな距離空間にも存在するの?」「『半分の点があること』と『空間を半分に分けることができる』は同じなの?」「中線定理はノルム空間が内積空間になる条件って聞いたけど……」等々。
それについてのメモ書き。

ボロノイ図

図のイメージはあったのだけれど、その言葉がしばらく思い出せなかった。ボロノイ図という名前であった。

距離空間内の有限部分集合 P = \{p_1, p_2, \dots, p_n\} および、距離関数d に対して

 V(p_i) = \{p\ |\ d(p, p_i) \le d(p, p_j),\  j\ne i\}

で構成される領域V(p_i) p_i のボロノイ領域と呼ぶ。また、 \{V(p_1), V(p_2), \dots, V(p_n)\}ボロノイ図と呼ぶ。

こうやってボロノイ領域を定義してやると、(全順序なので)任意の点がどこか少なくとも1つのボロノイ領域にはいる。
こういう意味で、任意の距離空間を「半分に分ける」ことはできる。

2次元ユークリッド空間で2点なら、それは垂直2等分線で分けられた領域になる。

なお、これは「等面積で半分に分ける」こととは無関係。「面積」や「体積」の概念は距離ではなく測度の上にあるものなので。
(じゃあ「等面積で半分」が必ず定義できるかといえば、例えば2点集合にそれぞれ測度1と6を与えてやると反例になる)
ユークリッド空間上で距離と面積に関係があるのは、ルベーグ測度を直方体をもとに決めたから)

まんなかの点

百里の半ばを九十九里とする」の「半ば」はつまり、両端点から等距離にある点を指している。
これはボロノイ図でいうと、複数のボロノイ領域に含まれる点に当たる(別に1つとは限らない。中点というより二等分線か。平面幾何にあわせて最小距離になるものを中点というとよさそう)。

これは必ずしも存在しない。例えば数直線上に 0,1,2,3 だけがある4点の空間に普通の距離を入れてやると、0と2との間にはまんなかの点1があるが、0と3との間には存在しない。

中線定理

内積空間の議論で出てくるベクトルの中線定理には、「中点」の概念がそもそもいらなそう。

この図では2つのベクトルの矢印が「中点」で交わっているけれど、これは単にユークリッド空間でこう描いたからたまたま起きているだけなのでは…?
f:id:suzusime:20181107204611p:plain

*1:というと嘘になる。というのもこの文句はもう一度繰り返されていて、そちらでは「同時代は常にこの一歩の千里であることを理解しない。後代はまたこの千里の一歩であることに盲目である。同時代はそのために天才を殺した。後代はまたそのために天才の前に香を焚いている」と続く。

msys2のvimでシンタックスハイライトが効かない問題

いつからかわからないがmsys2のvimシンタックスハイライトが効かなくなっていた。
しばらく放置していたが面倒になってきたので解決策を探したところ、次のサイトをみつけた。

そして、これを試してみたらその通りであった。

私の環境は、

$ pacman -Ss vim
msys/vim 8.1.0022-1 (editors) [インストール済み]
(後略)
$ vim --version
VIM - Vi IMproved 8.1 (2018 May 17, compiled May 31 2018 11:16:13)
適用済パッチ: 1-22
Compiled by <alexpux@gmail.com>
Huge 版 without GUI.  機能の一覧 有効(+)/無効(-)
+acl               +farsi             +mouse_sgr         -tag_any_white
+arabic            +file_in_path      -mouse_sysmouse    -tcl
+autocmd           +find_in_path      +mouse_urxvt       +termguicolors
-autoservername    +float             +mouse_xterm       +terminal
-balloon_eval      +folding           +multi_byte        +terminfo
+balloon_eval_term -footer            +multi_lang        +termresponse
-browse            +fork()            -mzscheme          +textobjects
++builtin_terms    +gettext           +netbeans_intg     +timers
+byte_offset       -hangul_input      +num64             +title
+channel           +iconv             +packages          -toolbar
+cindent           +insert_expand     +path_extra        +user_commands
-clientserver      +job               +perl/dyn          +vertsplit
+clipboard         +jumplist          +persistent_undo   +virtualedit
+cmdline_compl     +keymap            +postscript        +visual
+cmdline_hist      +lambda            +printer           +visualextra
+cmdline_info      +langmap           +profile           +viminfo
+comments          +libcall           +python/dyn        +vreplace
+conceal           +linebreak         +python3/dyn       +wildignore
+cryptv            +lispindent        +quickfix          +wildmenu
+cscope            +listcmds          +reltime           +windows
+cursorbind        +localmap          +rightleft         +writebackup
+cursorshape       -lua               +ruby/dyn          -X11
+dialog_con        +menu              +scrollbind        -xfontset
+diff              +mksession         +signs             -xim
+digraphs          +modify_fname      +smartindent       -xpm
-dnd               +mouse             +startuptime       -xsmp
-ebcdic            -mouseshape        +statusline        -xterm_clipboard
+emacs_tags        +mouse_dec         -sun_workshop      -xterm_save
+eval              -mouse_gpm         +syntax
+ex_extra          -mouse_jsbterm     +tag_binary
+extra_search      +mouse_netterm     +tag_old_static
      システム vimrc: "/etc/vimrc"
      ユーザー vimrc: "$HOME/.vimrc"
   第2ユーザー vimrc: "~/.vim/vimrc"
       ユーザー exrc: "$HOME/.exrc"
  デフォルトファイル: "$VIMRUNTIME/defaults.vim"
       省略時の $VIM: "/etc"
省略時の $VIMRUNTIME: "/usr/share/vim/vim81"
コンパイル: gcc -c -I. -Iproto -DHAVE_CONFIG_H   -I/usr/include/ncursesw  -march=x86-64 -mtune=generic -O2 -pipe -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
リンク: gcc   -L. -pipe -fstack-protector -pipe -Wl,--as-needed -o vim.exe        -lm    -lncursesw -liconv -lacl -lintl   -Wl,--enable-auto-import -Wl,--export-all-symbols -Wl,--enable-auto-image-base -fstack-protector-strong  -L/usr/lib/perl5/core_perl/CORE -lperl -lpthread -ldl -lcrypt

vim 8.1が入っているのに、:set runtimepathを打ってみると、その中に/usr/share/vim/vim80の文字が見えた。
この部分を/usr/share/vim/vim81に書き換えてやった後に:syntax onしてやると正常にシンタックスハイライトが働いた。

ということで、次善策ではあるがとりあえず .vimrc で

set runtimepath+=/usr/share/vim/vim81

としておけばシンタックスハイライトは働くようになる。

「ポリコレ」についての雑感

社会を覆い尽くす「ポリコレ」の動きにものすごく違和感を覚えるのだが、かといってまともに論理だててブログ記事を書けるかといえばそんなこともなさそうなので、とりあえず酒の勢いで思うところを書き留めておく。要するにぜんぶただの気持ちである。

続きを読む

はいふりカメラとゆく京都

 「はいふりカメラ」というものがある。

 スマートフォンなどで使えるアプリ*1で、使用方法は簡単、フレームを選んで写真を撮るだけ。
 それでキャラクターのいる写真を撮ることができる。

f:id:suzusime:20180408032501j:plain
金閣寺。初めてはいふりカメラを使って興奮した。

 はいふり(『ハイスクール・フリート』)といえばそれなりに前のアニメなので、このはいふりカメラが流行していたのもそれなりに前なのだが、当時私ははいふりカメラを使えるような端末を持っていなかった。

 当時はツイッターなどに流れてくるはいふりカメラの写真を「楽しそうだなー」と眺めていたのだけれど、最近になってようやくガラケーからスマホに変更していたので、そういえばと念願の(?)はいふりカメラをインストールしてみたのである。

 これはそうしてはいふりカメラと共に京都を巡った約1ヶ月前の1日(3月11日)の記録だ。

*1:正しくは”「はいふり」公式アプリ”で、はいふりカメラはその一機能。

続きを読む

Evernoteについていた最高のPDFリーダーがなくなってつらい

かなしみに任せて記事を書く。

私は去年の10月頃からEvernoteを使っていた。
そのあたりの動機については割愛する*1が、1月から課金する程度には便利に思って使っていた。

早速本題であるが、Windows版のEvernoteにはオリジナルの*2PDFリーダーがついていた。
が、最近のアップデートでこれが外され(?)、PDF表示はChromeのものと同様のものが使われるようになってしまった。

この以前のPDFリーダーが個人的に非常に使いやすかったのだ。
その理由はページ送りに関する些細なことなのだが、これを実現できる他のPDFリーダーを私は知らないので、情報を求める意味でもここに書いておきたい。

[追記(2019/05/26)]
qpdfview - TeX Wikiはこういう動作をしてくれる。が、Windowsには対応していない……
[/追記]

*1:ほんとうはこれもブログに書こうと思っていたが無期限延期している

*2:Foxitをもとにしたらしいが

続きを読む