No Such Blog or Diary
Windows 用に emacs を MinGW/MSYS2 でコンパイルする
- 2016-10-27 (Thu)
- ソフトウェア
毎度 Windows 用の emacs のバイナリをどこから手に入れるか悩ましいので,自前でコンパイルしてしまえとやってみた.
とりあえず,IME パッチの README を参考に emacs 25 をば.
1.MinGW のツールチェインなどを MSYS2 に入れる.画像まわりのライブラリとか必要そうなのをテキトウに投入.
pacman -S base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-xpm-nox mingw-w64-x86_64-libtiff mingw-w64-x86_64-giflib mingw-w64-x86_64-libpng mingw-w64-x86_64-libjpeg-turbo mingw-w64-x86_64-librsvg mingw-w64-x86_64-libxml2 mingw-w64-x86_64-gnutls
2.MSYS2 の MinGW 64bit のシェルを起動する.環境変数を適切に設定すりゃいいのかもしれないけれど面倒なのでスタートメニューから起動するのが楽.
3.git clone で emacs 25 のソース取ってくる.とりあえず /d/etc/emacs-build/ で作業するとして.git の古い履歴はいらんので浅く clone.
cd /d/etc/emacs-build/ git clone --depth=1 -b emacs-25 git://git.savannah.gnu.org/emacs.git
4.IMEパッチをゲットして適用する.
cd emacs wget https://gist.githubusercontent.com/rzl24ozi/8c20b904c9f5e588ba99/raw/0d5694e22a70cb3ea639f27013e4134c9772f1ed/emacs-25.1-w32-ime.diff patch -p 0 < emacs-25.1-w32-ime.diff
5.コンパイルする.折角なので -Ofast -march=native で速いバイナリを.インストール先を /d/etc/emacs-built/ とかにしてみる.
./autogen.sh CFLAGS='-Ofast -march=native' ./configure --prefix=/d/etc/emacs-built --without-imagemagick make -j4 make install
以上の流れで普通に動くものができた.思いのほか楽.めでたしめでたし.
追記:libwinpthread-1.dll が無いって怒られたら C:\msys64\mingw64\bin のあたりから持ってくる?
- Comments: 0
- TrackBack (Close): -
LDAP でハマった……
- 2016-02-25 (Thu)
- ソフトウェア ( Linux/coLinux )
OpenDLAP のデフォルト URI が ldapi:///... とかなっていて,自身がサーバのときにはこれで動くのだけど自分以外がサーバのときにはこれでは動かない(ldapi は Unix socket を使うらしい?).i を取って ldap://ldapserver/ と書かないといけない.
これに気づかずハマった.なんで変なのがデフォルト値になっとるんだ……
- Comments: 0
- TrackBack (Close): -
Let’s Encrypt を使う
- 2016-02-24 (Wed)
- ソフトウェア ( Linux/coLinux )
SSL 使うためにサーバ証明書が欲しいので,Public Beta になった Let’s Encrypt を使ってみた.
とりあえずGetting Started にあるように,証明を取りたいサーバの上で git を使って手元にスクリプト一式を持ってきて動かす:
git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt ./letsencrypt-auto --help
すると必要な物が勝手にインストールされて準備完了(内部で sudo でも使ってるのかね.事前に sudo 使ってたのでよく分からず).
あとは初回の証明取得を指示通りのコマンド1行で証明取得できる.例えば証明を取りたいサーバの FQDN が www.example.com だとしたら -d の後にそれを書いてスクリプト実行:
./letsencrypt-auto certonly --standalone -d www.example.com
なお,外部からこのサーバの https (443) のポートにアクセスできないといけないらしい.最初 80 だけ開けてたけどダメで,80を閉じて 443 を開けたら OK だった(verbose オプションを付けてスクリプトの動きを追ったら https 使ってた).でも 80 を Listen している apache とか居るとコケるので apache とかを停めておく必要がある.ひょっとすると 80 と 443 とどっちを使うのかは環境依存だったりするのかもしれない.
そして証明の期限が90日と短いので,cron を使って毎月自動更新とかしておくと安全な気がする.更新は letsencrypt renew でできるけれど期限の残りに関係なく強制的に更新するには --force-renewal を付ける.更新したら SSL を使う連中を起動し直す必要があるので,面倒だからサーバごと再起動する設定:
15 4 1 * * /path/to/letsencrypt/letsencrypt-auto renew --force-renew && reboot
- Comments: 0
- TrackBack (Close): -
TeX で縦書きだけど英字を回転したくない時に:\rensuji
縦書きだと半角英数字や数式で書いた部分が 90度回転してくれるのだけど,たった一文字しかない場合とかには回転してほしくない.単純なアルファベット一文字程度なら全角文字でも良いかもしれないけれど,変数なのでフォントをちゃんと数式用にしておきたい……
とかいう需要があったので調べてみたら,\rensuji とかいう便利なコマンドがあるのを発見."$n$女王問題" とか書くと n だけ回転してしまうけれど,\rensuji{$n$} 女王問題" としてあげると n も回転せず他の文字と同じ方向を向いてくれる.
だがしかし,連数字ってのは数字以外の場合にも言う言葉なのだろうか?
- Comments: 0
- TrackBack (Close): -
bbcp を使ってみた
- 2016-02-14 (Sun)
- ソフトウェア
bbcp のソースからのコンパイルは面倒そうなので,バイナリがあるっぽいからそれを持ってきて試してみた.手元は 64bit Ubuntu 14.04 なので amd64_linux26 のバイナリを,遠隔地は 32bit Ubuntu 14.04 なので i386_linux26 のバイナリを使うことにして……
bbcp: error while loading shared libraries: libcrypto.so.6: cannot open shared object file: No such file or directory
というエラーを両方で食らった.libcrypto.so や libcrypto.so.1.0.0 は入っているのだけど,libcrypto.so.6 なんぞ無い.わざわざ指定のものを持ってくるのも面倒.
こんな時に一番手間がかからずとりあえずで試す気になるのがリンクを作ってしまうこと:
32bit $ sudo ln -s /usr/lib/i386-linux-gnu/libcrypto.so /usr/lib/i386-linux-gnu/libcrypto.so.6 64bit $ sudo ln -s /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 /lib/x86_64-linux-gnu/libcrypto.so.6
で,動いた.めでたしめでたし.
とりあえず全然チューンしてないけれど,500MB のデータの転送をしてみて scp が 1.9MB/s なところを bbcp が 6.3 MB/s を出した(-s 16 でストリーム数 16 本).bbcp が3倍以上速いという結果.すばらしい.これで遠くのサーバで実験するとか言うのもストレスが減る気がする.
ストリーム数を変えた測定: 8 本だと 5.2MB/s,32 本で 7.9MB/s,最大本数の 64本で 9.6MB/s .とりあえずストリーム数が多いほうが速いという環境らしい.
閑話休題.
bbcp コマンドの起点ではなくファイルの転送元からストリーム用のコネクションを張るっぽいので,転送先が FW 内とかの場合は -z を付けてコネクションの起点を変えないとコケる.
- Comments: 0
- TrackBack (Close): -
tsort
- 2015-11-25 (Wed)
- ソフトウェア ( Linux/coLinux )
トポロジカルソートをしてくれるコマンド.エッジ達を与えればいい.エッジは hoge→fuga なら "hoge fuga" のように空白区切りで始点と終点を与える.1 行に 1 エッジ書いてくのが普通な気がするけれど,任意の空白で区切られたトークン列に対して「2n - 1 番目 → 2n 番目」というエッジが定義されるというルールなので,ぶっちゃけ一直線に書いてもいいっぽい.
$ echo "2 1 3 2 4 1 4 2 4 5 5 6 6 1" | tsort 3 4 5 2 6 1
ループ検出もしてくれる.
$ echo "2 1 3 2 4 1 4 2 4 5 5 6 6 1 1 3" | tsort 4 5 6 tsort: -: input contains a loop: tsort: 1 tsort: 3 tsort: 2 1 3 2
ループ検出してもとりあえず答えを出すという優秀さ.
こんなコマンドがあるとか全然知らんかった.
- Comments: 0
- TrackBack (Close): -