Emacs 内でターミナルを使うなど

ターミナル内で Emacs じゃないです。Emacs 内でターミナルです。いつも軽い用途であれば M-x shell とかを使って, ちゃんと使いたいときは GNOME のワークスペースを増やしたりしてターミナルを使っているんですが, M-x shell はターミナルとしてはかなり機能が貧弱だと思っていて,ワークスペースを切り替えるのはターミナルを 見ながら書けなかったり Emacs のヤンクみたいなことができなかったり残念なので,Emacs 内でもっと 便利に shell にアクセスできないかなと。で,なんか M-x の補完を眺めていたら, term ってやつを 見つけて,適当に試してみたら,色もちゃんとついたりして意外と良さそうだと。 ちゃんと使うとなるとウィンドウを分割して使ったりできないと不便なので,やってみようと思ったら, そのへんのキーもターミナルに持っていかれるらしく,なんか残念だなと思いました。 あとヤンクとかもできない。なんじゃこりゃ。存在意義が。

Minecraft

以前は Java 版を買うことで Windows 10 版もくれていた気がするけど,近頃はくれなくなっているらしく, まあケチになったなと思ったのだけど,Windows 10 版をくれていた頃は Windows 10 版が出たばかりだったので なんとかして認知度を高めたかったのかなと思ったりした。で,その頃は Windows 10 版は 1000 円くらいで入手できて Java 版の廉価版みたいな雰囲気を醸し出していたのだけど,雑に調べた感じだと無駄なものをいろいろつけてきて 3000円強の価格で売っているらしい。なんか意味が分からない。でもまあ確かに今のシステムだと Java 版よりも Windows 10 版の方が買う気になるのかなという感じがしていて,なぜかというと Android や iOS とマルチプレイができるからだ。それに対して Java 版だと Java 版同士でしかマルチプレイできない。 あと,以前は Java 版以外は Java 版のサブセットみたいなところがあったが,最近はその雰囲気はかなり 薄れている気がする。あと Android 版も僕が買った頃は 700 円くらいだった気がするけど今は 1000 円くらい取るっぽい。

ブログをまた動かした

なんか,前は Emacs Lisp で動く CMS でブログを動かしていたのだけど,なにしろ Emacs Lisp で拡張していくのはあまりにも苦行なので VPS を移行するのと同時に書き直すことにした。 VPS を移行したといっても今も昔もさくらの VPS なので,その部分は変わってないのだけど, 前は Minecraft のサーバーを動かす必要があってそこそこハイスペックなものを借りていて毎月の出費が痛かったので, それを小さいものに移行したという話。さくらインターネットはスケールアップだけじゃなくて ダウンする方も実装してくれていいのではと思う。(そういや最近さくらインターネット炎上してたなあ。。。) で,CMS を書き直した話だけど,変な言語で書きたいけどあまり辛い思いはしたくないな, ということで Bash で動くやつを書いてみた。といってもなんか結局割と苦労したが。 辛い思いをしたくないのであれば Wordpress などといった既存の CMS を使ったらいいじゃないかという話 なんだけど,ウェブインターフェースで記事を書かないといけないところとか RDB で管理されるところとか が後で動かしたくなったときに辛そうな気がして,なんとなく気が進まず,自前で用意している。 ブログサービスなんかを使うという手もあるけどその場合,前者の理由に加えて,他人の場所を使っているということで S/N 比を気にしてしまうところがあって,やっぱり自分で作るという結論になってしまった。 まあ Emacs で動かしていたころも S/N 比どうでもいいにも関わらずあまり書いてなかったわけではあるが。

gsettings で変更したい設定メモ

ウィンドウのボタンの配列を変更 Unity の頃の Ubuntu に慣れすぎて Windows なレイアウトに慣れないので, mac 風のレイアウトに変更. ※ 決して Windows が嫌いだからとかそういう理由ではない. $ gsettings set org.gnome.desktop.wm.preferences button-layout 'close,minimize,maximize:appmenu' CapsLock を潰す 鬱陶しいので. あとついでに Caps の位置に Ctrl があるのに慣れといた方がいいかな, と. $ gsettings set org.gnome.desktop.input-sources xkb-options "['ctrl:nocaps']" gsettings ではないけど,linux console で CapsLock を Ctrl として使うには, /etc/default/keyboard に以下を追加する. XKBOPTIONS="ctrl:nocaps"

Android の Factory Image を Linux でマウントする

Google からダウンロードできる Nexus用 (もしくは Pixel用) のFactory Image は Linux でそのままマウントすることはできません. $ sudo mount system.img system mount: /home/kofu/Downloads/razorg-JLS36C/tmp: wrong fs type, bad option, bad superblock on /dev/loop6, missing codepage or helper program, or other error. これをマウントするためには, simg2img というコマンドを利用します. APT で入ります. $ sudo apt install simg2img $ simg2img system.img out.img $ sudo mount out.img system simg ってのは何かというと, img の空の領域を圧縮してサイズを小さくしたものらしい (simg2img の simg とは何か? (make_ext4fs コマンドなど)).

C++標準ライブラリのマニュアルページをインストール

Ubuntu (をはじめ多くの GNU/Linux ディストリビューション) では C 言語のマニュアルページは最初から標準で入っていますが、 C++ のマニュアルページは入っていません (C++ にはマニュアルページを見る文化がないのだろうか…)。 という訳で、自分でインストールする必要があります。 $ sudo apt install libstdc++-8-doc で、見るときは、 $ man std::vector みたいな感じで std:: までつけないといけないみたいです。

Surface GoにUbuntuをインストール

まずはじめに、Surface Go に Ubuntu をインストールするモチベーションは何かというと、 Surface Go を買ったときにとりあえず (とりあえずかどうかは議論が分かれるところですが) 入っている OS は当然ながら Windows 10 なわけですが、ずっと GNU/Linux の何らかのディストリビューションを使ってきた 僕としては Windows がどうしても使いにくかったということです。Surface Go は大きさとしては なかなかコンパクトで持ち運びしやすいのでこのサイズで OS が Windows じゃなかったら (婉曲?) 最高だなと思ったってのもあります。 まあそんなわけで (まとまらなかった) インストールの手順を書いこうと思います。 インストーラの USB をつくる ここが一番大変だったかもしれません。 自分の場合、USB の Type A から Type C に変換するアダプタを持っているので、それを使ってインストール用の iso を焼いた USB をつないでいたんですが、どうにもこうにも起動しない。最終的には起動させられたんですが、 いろいろ試しすぎてどれが要因なのか分からないです。 何のおかげでうまくいったのかを調べようと思わなくもなかったんですが、それまでの試行錯誤で疲労困憊していて、 そのモチベーションがなかったので。 という訳で、とにかく試したことを書きます。

Ubuntu で freeglut を使う

環境は Ubuntu 18.04.3 LTS x86_64 です. 必要なパッケージを入れる $ sudo apt install freeglut3-dev 試す なんか適当に #include <stdlib.h> #include <GL/glut.h> #include <GL/gl.h> #include <GL/glu.h> static void display(void) { glClear(GL_COLOR_BUFFER_BIT); glFlush(); } int main(int argc, char **argv) { glutInit(&argc, argv); glutInitWindowSize(256,256); glutCreateWindow("Hello"); glClearColor(1, 0, 0, 1); glutDisplayFunc(display); glutMainLoop(); return 0; } 256x256 のウィンドウを赤く塗りつぶすだけです. で,コンパイル $ gcc main.c -lglut -lGLU -lGL -lm できました. 適当に Makefile にしておく ライブラリが多くて毎回指定するのは面倒なので, Makefile 必須っぽいです. LDFLAGS = -lglut -lGLU -GL -lm .PHONY: all all: main.o $(CC) main.o $(LDFLAGS) Man よこせ $ sudo apt install opengl-4-man-doc で入るみたいです.でも見た感じ, gl で始まる関数しかないっぽい. まあパッケージ名から想像がつくけど. glut とか glu とかの man の入手の仕方を教えてください. さいごに Windows でやる方がめんどくさいな,という印象ですね.まあ NuGet を使えば一発で入ることは入るんですが. でもあれはプロジェクトごとになるのであまり好きではない.

Unicodeの正規化と濁点

Unicode において,濁音の表現方法は2つあります.一つが濁点のついた文字のコードを使用する方法です. もう一つが濁点のついていない文字と濁点を組み合わせる方法です. 後者の方法だと,本来は濁点のついていない文字に濁点をつけることができるのでおもしろかったりします. uconv コマンドを使うとこれを相互に変換できます. uconv は (Debian 系のディストロでは) icu-devtools パッケージの一部として APT で入れられます. 以下が 2番目の表現方法から 1 番目の表現方法に変換する例です. $ echo -n が | uconv -x NFD が 分解されたものを再度合わせるのは以下です. $ echo -n が |n uconv -x NFC が と例をあげましたが,たいていの環境ではその違いを目視で確認できないと思います. xxd を使いましょう. まず,キーボードで入力した「が」です.

Emacsをビルドするときにconfigureがうまくいかない場合の対処法

たしか Ubuntu だと libgnutls28-dev を入れても configure スクリプトで認識されなかった。 その場合、 pkg-config を明示的にインストールしてやるとそれらのライブラリが認識されて ビルドが通る。 これは。 configure スクリプトで pkg-config の結果がデフォルト値に設定されていて、 コマンドライン引数でそれを上書きできるという作りになっているからっぽい (だからオプションで指定しても いいはず。面倒臭いけど)。