all: clean: latexmk -c hoge.tex
latexmk を設定しなくても make clean を簡単に作れます。おわり。
……これ地味に見えるんですが、rmとアスタリスクの組み合わせが招く不幸を防げるという点でとてもありがたいと思いました。-c にするか -C にするかはお好みで。
all: clean: latexmk -c hoge.tex
システムワイドに uim-mozc が入っていて、uim-anthy を入れるからmozcは無効化したい、でもパッケージは削除したくない…… そんなシチュエーションに遭遇する人はあまりいないと思いますが、そんなときは uim から mozc を無効化しましょう。 システム全体に影響する変更方法はこちら。
# uim-module-manager --unregister mozc --path /var/lib/uimで、このコマンドを探し当てるためにまた遠回りしたので、その経緯を書いておきます。
まず、uim の仕組みが分かっていなかったので、とりあえずなにかファイルを消せばいいと思った(強引)のですが
% dpkg -L uim-mozc /. /usr /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/uim /usr/lib/x86_64-linux-gnu/uim/plugin /usr/lib/x86_64-linux-gnu/uim/plugin/libuim-mozc.so /usr/share /usr/share/uim /usr/share/uim/pixmaps /usr/share/uim/mozc.scm /usr/share/uim/mozc-custom.scm /usr/share/uim/mozc-key-custom.scm /usr/share/doc /usr/share/doc/uim-mozc /usr/share/doc/uim-mozc/README.Debian /usr/share/doc/uim-mozc/copyright /usr/share/doc/uim-mozc/changelog.Debian.gz /usr/share/lintian /usr/share/lintian/overrides /usr/share/lintian/overrides/uim-mozc /usr/share/uim/pixmaps/mozc_tool_dictionary_tool.png /usr/share/uim/pixmaps/mozc.png /usr/share/uim/pixmaps/mozc_tool_selector.png /usr/share/uim/pixmaps/mozc_tool_config_dialog.png
当然、なにを消して良いかこれだけで理解するのは無理というもの。
そういえばdebian にはパッケージのコントロールファイルがあるじゃないか。それを見よう、と思い立つわけです。
% dpkg -e uim-mozc_1.5.1090.102-4+deb7u1_amd64.deb ~/tmp-uimcontrol % cd ~/tmp-uimcontrol % ls -la total 44 drwxr-xr-x 2 tarai staff 4096 Jun 7 2013 . drwx------ 140 tarai staff 20480 Sep 23 17:49 .. -rw-r--r-- 1 tarai staff 1010 Jun 7 2013 control -rw-r--r-- 1 tarai staff 560 Jun 7 2013 md5sums -rwxr-xr-x 1 tarai staff 1504 Jun 7 2013 postinst -rwxr-xr-x 1 tarai staff 132 Jun 7 2013 postrm -rwxr-xr-x 1 tarai staff 985 Jun 7 2013 prerm -rw-r--r-- 1 tarai staff 21 Jun 7 2013 shlibs % lv postinst (中略) configure) if which uim-module-manager >/dev/null 2>&1; then uim-module-manager --register mozc --path /var/lib/uim fi ;; (以下略) % lv prerm (中略) remove|deconfigure) if which uim-module-manager >/dev/null 2>&1; then uim-module-manager --unregister mozc --path /etc/uim fi ;; (以下略)
postinst や prerm の詳細は http://www.debian.or.jp/community/devel/debian-policy-ja/policy.ja.html/ch-maintainerscripts.html が詳しいです。
つまりこの uim-module-manager というコマンドが重要なんですね、というところにたどりつき、
冒頭のような操作で大丈夫だろう、という結論に到達した次第です。
(何故postinstとprermで pathの引数が違うんだろう……)
% convert -resize 640x picture.jpg figure.jpg % sam2p figure.jpg figure.eps
% identify picture.jpg picture.jpg JPEG 2112x1500 2112x1500+0+0 8-bit DirectClass 401KB 0.000u 0:00.000
% convert -resize 800x picture.jpg figure.jpg
% convert -resize 800x picture.jpg eps2:figure.eps
% sam2p figure.jpg figure.eps
double randnnA(){ return rand() / (RAND_MAX + 1); } double randnnB(){ return rand() / (RAND_MAX + 1.0); } double randndA(){ return rand() / (double)(RAND_MAX + 1); } double randndB(){ return rand() / (double)(RAND_MAX + 1.0); } double randndC(){ return rand() / ((double)RAND_MAX + 1); } double randndD(){ return rand() / ((double)RAND_MAX + 1.0); } double randdnA(){ return (double)rand() / (RAND_MAX + 1); } double randdnB(){ return (double)rand() / (RAND_MAX + 1.0); } double randddA(){ return (double)rand() / (double)(RAND_MAX + 1); } double randddB(){ return (double)rand() / (double)(RAND_MAX + 1.0); } double randddC(){ return (double)rand() / ((double)RAND_MAX + 1); } double randddD(){ return (double)rand() / ((double)RAND_MAX + 1.0); }コンパイル可能なソースコードはこちら。
$ ./a.exe set 0 and RAND_MAX randnnA min:0 max:0 randnnB min:0 max:0.9999999995343387 randndA min:-0 max:-0.9999999995343387 randndB min:0 max:0.9999999995343387 randndC min:0 max:0.9999999995343387 randndD min:0 max:0.9999999995343387 randdnA min:-0 max:-0.9999999995343387 randdnB min:0 max:0.9999999995343387 randddA min:-0 max:-0.9999999995343387 randddB min:0 max:0.9999999995343387 randddC min:0 max:0.9999999995343387 randddD min:0 max:0.9999999995343387 generate random number 10000 times randnnA min:0 max:0 randnnB min:0.0001787277869880199 max:0.9999335804022849 randndA min:-0.9998125517740846 max:-0.0001268410123884678 randndB min:6.128335371613503e-05 max:0.9999860003590584 randndC min:1.606764271855354e-05 max:0.99976617237553 randndD min:6.103422492742538e-06 max:0.9999661864712834 randdnA min:-0.9998871022835374 max:-3.686733543872833e-05 randdnB min:2.388842403888702e-07 max:0.9999870401807129 randddA min:-0.9999983948655427 max:-2.792663872241974e-05 randddB min:5.736947059631348e-05 max:0.9998592492192984 randddC min:3.99700365960598e-05 max:0.9999427762813866 randddD min:8.147209882736206e-05 max:0.999992452096194
$ gcc --version gcc (GCC) 4.8.2 Copyright (C) 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ gcc urandtest.c urandtest.c: In function ‘randnnA’: urandtest.c:8:24: warning: integer overflow in expression [-Woverflow] return ir / (RAND_MAX + 1); ^ urandtest.c: In function ‘randndA’: urandtest.c:18:32: warning: integer overflow in expression [-Woverflow] return ir / (double)(RAND_MAX + 1); ^ urandtest.c: In function ‘randdnA’: urandtest.c:38:32: warning: integer overflow in expression [-Woverflow] return (double)ir / (RAND_MAX + 1); ^ urandtest.c: In function ‘randddA’: urandtest.c:48:40: warning: integer overflow in expression [-Woverflow] return (double)ir / (double)(RAND_MAX + 1); ^4.7でもいけました。コンパイラのバージョンが古かったり32bit環境だったりすると、なんとなく正しく動くものが増えるところが厄介です。
double lrandnnA(){ return rand() / (RAND_MAX + 1L); } double lranddnA(){ return (double)rand() / (RAND_MAX + 1L); }
% where nohup nohup is a shell built-in /usr/bin/nohup /usr/bin/X11/nohup一方 bash の場合は where が無いので which -a を使ってみる。
$ which -a nohup /usr/bin/nohup /usr/bin/X11/nohup
デフォルトでは、シェルの子供たちもそうしますが、 シェルは終了時に HUP を子供たちに送りません。 hup はシェルが終了時に 子供に HUP を送るようにし、 nohup は子供がHUP を無視するように 設定します。とのこと。一方bashの場合はshoptで確かめます。
$ shopt huponexit huponexit offあれ? いずれにせよ、バックグラウンドジョブにhupが渡らないように見えます、 nohup無くても困らないんじゃない? などと思ってしまうのですが、実はそんな簡単な話でもないようです。