2013年1月31日木曜日

latex2rtfおすすめ

TeXで書いてたのに,Wordで出せとか言われること,よくあると思います.ありますよね.イライラします.

latex2rtf を使いましょう.大体解決します.

latex2rtf

素晴しい.Linux, FreeBSD, Windows, Mac に対応しているようです.大勝利ですね.細かいTeXのコマンドは使えないようですが,問題ないでしょう.一旦 rtf に変換して,Word なり何なりで細かい修正をすれば良いのです.

注:TeXで書いた原稿に,Wordの提供する英語の修正機能を使いたかっただけです.Wordは出来る子です.

2013年1月26日土曜日

makeのログをsyslogに渡す

make したときにエラーが出ても、メッセージが上方に流れてしまって、エラーの原因が分からなくなることがあります。私だけかも知れませんが。

そこで、対処として、make > ./make.log 2>&1 のようにすれば、カレントディレクトリのmake.logというファイルにメッセージがリダイレクトされます。後からmake.logを見れば、makeの結果が分かるわけです。

ただ、せっかくログ出力用のツールがあるので、これを使います。syslogです。

syslog へのログの転送

syslogへのログの転送にはloggerを使います。また、makeに関するログだけ別のファイルに出力した場合は、syslog.confを修正する必要があります。以下のコマンドで、syslogに向けてログを転送できます。

make 2>&1 | logger -p local3.info -s -t make

2>&1: stderrをstdoutに渡します。パイプへstderrを渡すには、これが一番スマートなやり方だと思います。
-p: ファシリティとプライオリティを指定します。
-s: stderrに出力します。
-t: タグを指定します。

syslog.confの修正

syslog.confを以下のように修正すれば、local3ファシリティのinfoプライオリティのログだけを分けられます。(>>でアペンドすることで正しく動作するかは怪しい。追記する行より上に !ppp とあると、pppからのログに関するポリシと見なされます。行頭に!が付いている行がある場合、その行よりも上にポリシを追加すべきです。)

% sudo echo "local3.info    /var/log/make.log" >> /etc/syslog.conf

Debian Squeezeなど、最近のディストリビューションでは、セキュリティの観点から、暗号化して計算機外部へ転送できるので、rsyslogを使うことが多いです。この場合、/etc/rsyslog.confに上記のポリシを追記してください。

多分、他に良い方法があるんでしょうね。makeにそれらしいオプションがあるとか?

Google アカウントのパスワード入力失敗時に表示される情報の差異

Google アカウントでログインしようとしたときに、間違ったパスワードを入力してしまいました。このとき、こんな警告が出ます。

これは問題ない。あたりまえですね。しかし、下の場合はどうでしょうか?

実は、ひとつ目の画像は、適当なパスワードを入力した場合に表示されるメッセージです。ふたつ目の画像は、以前使っていたパスワードを入力した場合です。

この表示の違いは、パスワードを忘れた正規のユーザにとってはありがたいものです。しかし、不正にログインしようとしている人たちに有利な情報を与えていないでしょうか?パスワードの変更がかなり前だった場合には、そのアカウントは頻繁にパスワードを変更していないことになります。つまり、長期的に多くのパスワードを与え続けやすいということです。頻繁にパスワードが変わるなら、不正にログインする側もあきらめるかも知れません。しかし、パスワードが長期的に変更されないアカウントに対しては、より積極的に不正なログインに臨むかも知れません。

また、以前使っていたパスワードとマッチしたら表示を変更するということは、不正にログインを試みようとした人に対して、有効なパスワードの情報を与えることになります。つまり、Googleは、ひとつのアカウントにつき、複数のパスワードを保持しているといえます。

本当にこのままで良いのか疑問です。利便性の向上と安全性の確保はトレードオフの関係にあると思いますが、パスワードに関してここまでの利便性が必要なのか疑問があります。また、2段階認証に取り組んでいるサービスにしては、そもそものパスワードの扱いに問題があるのではないかなとも。

asmregparmとは

 Linux 2.6.32 のビルドに失敗した。そのときに気になったasmregparmを調べたので報告。

ソースコードの取得とビルド

% git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux
% cd linux
% git checkout v2.6.32
% make oldconfig
% make menuconfig
% make
ここで失敗。

エラーメッセージを見ると、syscall_trace_leave関数の定義が違うとある(エラーメッセージは残してないので、覚えてる範囲で書く)。googleさんに聞くと、asm/x86/include/asm/ptrace.h の中の syscall_trace_leaveの定義に、asmregparm 修飾子が足りないとのこと[1]

このパッチを参考にコードを修正したところ、この問題は解決した。



asmregparmとは

で、asmregparm とは何か?答えは[2]にあります。ソースを探すと、arch/x86/include/asm/linkage.h の中に以下の定義があった。

#define asmregparm __attribute__((regparm(3)))

これは、型宣言時にregparm属性を付与する。__attribute__については、Unixwiz.netの記事[3]を参照のこと。regparm は、関数の引数をスタックではなく、eax, edx, および ecx レジスタに格納して渡すことを意味する。引数の 3 はレジスタに格納する変数の数。3 なら、第3引数まではレジスタに格納。詳細は、GNU の GCC Document [2] を参照。

参考:
[1] Patchwork x86: fix ptrace.o compile error, https://patchwork.kernel.org/patch/1301031/
[2] 5.24 Declaring Attributes of Functions, http://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Function-Attributes.html
[3] Unixwiz.net - Software Consulting Central, Using GNU C __attribute__, http://unixwiz.net/techtips/gnu-c-attributes.html

2013年1月24日木曜日

標準エラー出力をパイプに渡す

あたりまえだけど,以下の方法で可能
% command1 2>&1 | command2
まず,最初に2>&1で標準エラー出力を標準出力に渡す.これで標準出力に標準出力と標準エラー出力がまとまったので,まとまった標準出力をパイプへ渡す.
参考:how do I pipe STDERR?

syslogd on FreeBSD (シングルユーザモード)がまともに動かない

FreeBSD でシングルユーザモードになってからsyslogdを起動すると,rootで入力したコマンドが全部ロギングされる.まるでキーロガーみたい.そして他のプログラムからのsyslog関数によるログを受け付けない.

シングルユーザモードへの移行

FreeBSD 9.0.0-RELEASEで以下の手順によりシングルユーザモードになる.
% shutdown now

 syslogd の起動とログの確認

# /etc/rc.d/syslogd start 
# cd /var/log
# less syslog
syslogd のポリシには,「*.* /var/log/syslog」 と書いている./var/log/syslog の内容は以下の通りだった.
Jan 24 01:01:31 freebsd-hvm kernel: Starting syslogd.
Jan 24 01:01:31 freebsd-hvm kernel: #
Jan 24 01:01:32 freebsd-hvm kernel: le
Jan 24 01:01:32 freebsd-hvm kernel: s
Jan 24 01:01:32 freebsd-hvm kernel: s
Jan 24 01:01:33 freebsd-hvm kernel: s
Jan 24 01:01:33 freebsd-hvm kernel: y
Jan 24 01:01:33 freebsd-hvm kernel: sl
Jan 24 01:01:33 freebsd-hvm kernel: o
Jan 24 01:01:33 freebsd-hvm kernel: g
Jan 24 01:01:33 freebsd-hvm kernel:
ポリシが悪いのか?キーボード操作がロギングされるのはどういう状態なんだろうか.何かのプログラムがデバッグモードで動いてるのか?
ファシリティが「kernel」になってるのも気になる.

2013年1月23日水曜日

64bitモードにおけるスタック操作

Intel® 64 and IA-32 Architectures Software Developer’s Manual の Section 7.3.1.5 において,64bitモードにおけるスタック操作について説明している.
困ったことに,pushad や popad は使えないようだ.
PUSHA, PUSHAD, POPA, and POPAD are not supported.

LKMで処理を挟み込む前に汎用レジスタを退避させたい.とりあえずの対処として,makeした後に生成される *.o を objdump -d で逆アセンブルして,使われるレジスタを見つけた.その後,使われているレジスタを push/pop で退避させた.

参考:Intel® 64 and IA-32 Architectures Software Developer Manuals

spell

Vim ではコマンド :set spell でスペルチェックができる.
  • :set spell でスペルチェックを有効化
  • :set nospell でスペルチェックを無効化
  • 単語の上でzgとタイプすると,カーソルの下にある単語を辞書に登録(zgのgはgood)
  • 単語の上でzwとタイプすると,カーソルの下にある単語を間違った単語として辞書に登録(zwのwはwrong)
これくらい使えれば大丈夫では.

http://vimdoc.sourceforge.net/htmldoc/spell.html

BibTeX形式への変換ツール

BibTeXのエントリをいちいち書くのが面倒だと感じた.スクリプトを書こうとしたけど,そんなの誰かやってるだろと思い,調べた結果,当然のごとく既にあった.

BibTeX形式への変換ツール(インポート) 

が,ざっと眺めると,IPSJやIEICEの形式に対応したものは無い様子.今度,暇な時に作ろう.
しかし,文献の引用形式が分野ごとに違うのは非効率なような.それなりの理由があるのかも分からないが.

2013年1月14日月曜日

はじめに

今までtumblrにいくつかブログを書いていましたが、どうせ書くなら、広く公開した方が良いと思いました。これからは、bloggerにポストします。

地方国立大学の博士後期課程の学生です。情報工学、特に、システムセキュリティ、仮想化技術の応用が専門です。ログの改ざん防止がこれまでの研究テーマです。

研究やってたり論文を書いたりして思ったことや、仮想化関係で調査したことをまとめることになります。 同じような分野に興味のある人や似たような環境に居る人の役に立つような情報を提供できればと考えています。
 
興味のあるもの/こと:
  • 仮想化技術
    • 特にXenが好き
    • 最近はKVMも
    • 日本人ならbitvisorに興味を持つべきか
  • OS
    • Linux
      • Debianがメイン
    • 時々FreeBSD
    • Vimがまともに動けば何でも良い
    • Windowsは良くわからないけど、とても便利だとは思う
  • Vim 
    • 別にemacsが嫌いなわけではない
    • 入力モードを分けることで簡潔な操作体系を提供してると思う
    • unite.vim, neocomplcache, vimfiler など
  • キーボード
    • HHKB (PD-KB02), HHKB Lite 2
    • どっちもUS配列
    • Escキーの配置が良い
    • マイクロソフトのキーボードなら大体満足
  • マウス 
    • マイクロソフトのマウスなら大体満足
    • 今まで買ったマウスのうち、6/8がマイクロソフト製
  • その他 
    • SKKFEPは素晴しい
    • 読書
      • 森博嗣
      • 西尾維新
    • 音楽
      • 菅野よう子
      • Liquid Tension Experiment