No Such Blog or Diary

«Prev || 1 | 2 | 3 | 4 | 5 | 6 |...| 59 | 60 | 61 || Next»

LDAP でハマった……

OpenDLAP のデフォルト URI が ldapi:///... とかなっていて,自身がサーバのときにはこれで動くのだけど自分以外がサーバのときにはこれでは動かない(ldapi は Unix socket を使うらしい?).i を取って ldap://ldapserver/ と書かないといけない.

これに気づかずハマった.なんで変なのがデフォルト値になっとるんだ……

Let’s Encrypt を使う

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

TeX で縦書きだけど英字を回転したくない時に:\rensuji

縦書きだと半角英数字や数式で書いた部分が 90度回転してくれるのだけど,たった一文字しかない場合とかには回転してほしくない.単純なアルファベット一文字程度なら全角文字でも良いかもしれないけれど,変数なのでフォントをちゃんと数式用にしておきたい……

とかいう需要があったので調べてみたら,\rensuji とかいう便利なコマンドがあるのを発見."$n$女王問題" とか書くと n だけ回転してしまうけれど,\rensuji{$n$} 女王問題" としてあげると n も回転せず他の文字と同じ方向を向いてくれる.

だがしかし,連数字ってのは数字以外の場合にも言う言葉なのだろうか?

bbcp を使ってみた

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 を付けてコネクションの起点を変えないとコケる.

tsort

トポロジカルソートをしてくれるコマンド.エッジ達を与えればいい.エッジは 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

ループ検出してもとりあえず答えを出すという優秀さ.

こんなコマンドがあるとか全然知らんかった.

外部コマンドを使わずに bash だけでテキストファイルをコピーしたい

 .bashrc に export LD_LIBRARY_PATH=~/opt/lib/ と書かれている環境で,glibc を configure --prefix=~/opt とやって make all install とかやってしまった.おかげで新しく実行するコマンドがインストール途中の glibc を見に行ってしまって「ライブラリロードできねーんだよボケ」と吐いて止まってしまう状況に陥った.つまりスタティックリンクされてないような普通の mv, cp, cat, ... なコマンド達が使えない.

この状況から抜け出すには .bashrc の LD_LIBRARY_PATH の設定を消してログインしなおせばいい.最も単純には echo > .bashrc とやってしまえば良いけれど,.bashrc のバックアップを取ってないのでこれをやる前にバックアップを取っておきたい.

ということで,bash の機能だけで .bashrc を .bashrc.bak にコピーするという必要が生じた(ということにした).1分位悩んだ後で思いついた解答:

while read line; do echo $line; done < ~/.bashrc > ~/.bashrc.bak

とりあえず思いついたのがこの回答だったのだけど,もっとスマートにコピーできないのだろうか?

閑話休題.

上記の状況でファイルをコピーする一番楽な方法は,LD_LIBRARY_PATH を空にすることである.

export LD_LIBRARY_PATH=""

これで状況を脱した.

もしくは状況を楽しんだままコピーだけしたいなら,コマンドを打つときにローカルで指定してもいい.

LD_LIBRARY_PATH="" cp .bashrc .bashrc.bak

なお,他のアカウントからどうにかするという手順は面倒なので却下.

«Prev || 1 | 2 | 3 | 4 | 5 | 6 |...| 59 | 60 | 61 || Next»
Search
Feeds

Page Top