Tech

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 の結果がデフォルト値に設定されていて、 コマンドライン引数でそれを上書きできるという作りになっているからっぽい (だからオプションで指定しても いいはず。面倒臭いけど)。

Raspberry Pi 2 で静的 IP を設定する

いつも忘れるのでメモ。 /etc/dhcpcd.conf に以下のように追記します。 interface <インタフェース名> static ip_address=192.0.2.2/24 static routers=192.0.2.1 static domain_name_servers=192.0.2.1 IP アドレスは例なのでこの通りではないと思います。 あと、挙動を見た感じだとサブネットマスクが /24 の場合は省略できるみたいです。 ルータに DNS 機能がない場合は 8.8.8.8 とか 4.4.4.4 とか 1.1.1.1 とかを設定すると動きます。 インタフェース名ですが、無線が wlan0 、有線が eth0 になっています。 ちなみに 192.0.2.0/24 は例示用として使っていいと RFC に書いてある。他にも 198.51.100.0/24 とか 203.0.113.0/24 とかもあるけどこれは割と最近予約されたものらしい。 かつては 128.66.0.0/16 が使われていたみたいだけどこれは今は予約されていないらしい。

Emacs Lisp 製の CMS の詳細

トップページでも述べているように、このサイトは Emacs Lisp で書かれた CMS が Emacs の上で動いているというふうになっています。Emacs を知らない人がいたらいけないので 一応説明しておくと、Emacs は LISP というプログラミング言語の方言である Emacs Lisp という 言語で拡張できるというテキストエディタです。最近は CoffeeScript で拡張できる某エディタだったり JavaScript で拡張できるなんとかかんとかコードだったり拡張可能なテキストエディタがあふれているので 機能を拡張できるからといって何ということもありませんが、その昔はテキストエディタを 何らかの機能で拡張できるってのは革新的だったとかいうのはどうでもいい話なのでここには書きません。 一応ソースコードは ここ に。 まだ開発中なので不満なところが多々ありますが、今後直していけたらな、と。

ImageMagick の処理を高速化する

数日前からシェル芸で画像を出力するのが楽しくて毎日のようにやっているのだが、画像の処理は思った以上に重く、よくタイムアウトする。 しかも強引なやり方をしているのでとてつもない長さのワンライナーが完成してウンザリな感じになる。 mpr: mpr: は ImageMagick 出力を一時的にメモリに置いておけるっぽい。一回一回ファイルに結果を書き出したり、パイプで ImageMagick をつなげたりせずに出力結果を利用することができるので、起動のオーバーヘッドやファイル I/O のオーバーヘッドを軽減できる。 これはファイルとして使える (ファイルみたいに入力や出力に使える。) +delete これまでの引数をなかったことにする。このとき、 mpr: などの中身は消えない。 ジェネレート系 xc:[色] しか知らなかったが、いろいろあるっぽい。使いどころがあるかは不明だけど覚えておけばいつか使えるかも: http://www.imagemagick.org/Usage/canvas/