83's

Top > Archives > 2005 > November

November 03, 2005

sshへの攻撃がうるさい 02:20

前々から気になってたんだけど、うちのサーバのsshに辞書攻撃してくるやつがいる。 1秒間隔で数時間に渡ってやられるもんで、/var/log/messagesがすごいことに……。

こいつらいっつもIP違うからどうしようかと思ってたまに対処法を ぐぐってたりしてたんだけど、どれも/etc/hosts.denyに追加し続ける方法をとっていた改めてぐぐるとiptablesではじいてるみたい。記憶違いだった。iptablesはワカンネ。 なんかイタチごっこのように思うんだけど、結局うちもそうすることにした。

だってひどいんだもん。ほら。

# wc -l messages
  88235 messages
# grep ssh messages | wc -l
  88070

うちのmessagesはsshがらみのログで埋め尽くされてますw

良くわからないんだけど、こういう2種類のログのタイプがあるみたい。

Oct 30 04:02:05 localhost sshd[20372]: Invalid user kristine from 66.221.179.136
Nov  2 23:28:08 localhost sshd[8300]: Failed password for invalid user test from 203.232.183.98 port 43717 ssh2

どういう違いが……。

とりあえずmessagesから/invalid user/iでひっかけてIPをhosts.denyに突っ込むスクリプトを、 cronで20分置きに実行するようにしてみた。まったくもう(´Д`;) これでいいのかな……。ほんとネットワーク関連の知識が足りんよー。勉強しないと。

そういえばスパムメールもうるさいので、今更ながらブログのメルアドを画像に置き換えた。 Thunderbirdの迷惑メールフィルタが結構とりこぼしてくれるもんでねー……。 「1万円分プレゼント」だの「ロリコン最新情報」だの、大きなお世話だ!ヽ(`Д´)ノ

November 05, 2005

hosts.allow, hosts.denyについて 10:41

わかったことがあるので報告。ネットで知識を得たら、ネットに恩返ししないと! 知ってる人には カスみたいなエントリだけど。

higeponさんのところでsshアタック対策のエントリを見て、 「ぼちぼちうちもやるかー」と思い立って前回のssh対策のエントリに繋がったわけだもんで、 つまりうちもhosts.denyに拒否IPを追加することで対処してるわけです。

前のエントリで「ほかのとこもhosts.denyで対処してた」って書いたけどこれは激しく記憶違いで、 当時見たページをもう一回見てみるとiptablesだったりする。ただ、hosts.denyに追加したあと 攻撃が無くなってるのは事実なので、これも有効なんだろうけど。(ちなみに「ALL : xxx.xxx.xxx.xxx」って 感じで追加してます)

そうすると「なんでhosts.denyではじけるのにiptablesなの?」(またその逆も)なんて 思ってしまって、ちょっとhosts.denyについて調べてみるとすぐに出てくるのは TCP Wrappers。これがhosts.allowとhosts.denyをアクセスコントロールの設定ファイルとして使う、と。

じゃーTCP Wrappersはどこで出てくるかって言うと、inetdがあるポートへのアクセスを受けたあと、 デーモンを起動する前にTCP Wrappersが呼ばれるみたい。 ここでわからなくなってきた。

繰り返しになるけど、inetdはアクセスがあったときにデーモンを起動する。 で、今うちのサーバのinetd.confには、subversionしか設定されていない。 それ以前にsshdは常駐しているから、inetdとは関係ないのではないか。 だからTCP Wrappersとも関係ないし、よってhosts.denyとも関係ないはずじゃないの? と。 これがここ数日の疑問だった。

ぐぐって出てこない時は2chだね。 同じ疑問を持っている香具師はけーん。

xinetdで制御されていないプロセス(例えば/etc/init.d/以下のinitで起動させているもの、sshdやsendmail等)に対しては、 基本的にTcpwrapperで制御出来ないという認識で間違っていませんでしょうか?

それに対する答えは、

tcpwrapper以外で/etc/hosts.{allow,deny}を読むプログラムはいくつかあっ て、sshdとsendmailはそれらに含まれます。

> では、結局hosts.allow hosts.denyで制御出来るプロセスって一体何なのでしょう???

libwrap がリンクされてるもの。 TCP Wrappers を使うかどうかは configure 時のオプションで決められる。

自分でhosts.allow, hosts.denyを読むやつがいると。sshdはその一つだと。あーすっきり。 もっと複雑なものが潜んでるのかと思たよ。 そしてsshアタックの対処があれでよかったということに安堵。

November 06, 2005

lighttpdにしてみた 01:25

apache1.3やめて、うちのサーバも今流行りのlighttpdにしてみましたよ。 lighttpdってのはapacheより速いと評判のHTTPサーバ。

まーCGI使う分にはapacheもlighttpdも変わらないような気がしてたけど、 やっぱそんな変わってないようなw

lighttpd自体は結構軽い。restartが速いこと速いこと。

このブログもFastCGI化するかなぁ。 でもソース見たら多分0から書き直したくなるなぁ。Rubyで。

何か不具合あれば言ってください。

あ、PHP4.4.1に上げときました。セキュリティ・ホールが あったから。 なにか動かなくなるかも知れんw > jesel

November 08, 2005

MonoでGtkプログラミングができる 09:27

.NET Frameworkのマルチプラットフォームな移植としてMonoってのがあるんですが、 ちっと調べてたらこれなかなか興味深い。

ぶっちゃけ.NETはJavaに対するMSからの反撃なのかと思ってた。 だからまるまるキャラがかぶっていて、 JavaがJavaの世界で閉じているように(これは知らないからそう思ってるだけ)、 .NETもばりばり独自のパッケージ群を駆使するのかと思ってた。

でもMonoのドキュメントとか見るとわかるけど、 ちょっとwwww、Gnomeべったり触れるんじゃんwww Mozillaもいたしww

どうやらMonoでのGUIはまだSystem.Windowsが実装されてないみたいな 感じで(コンパイルできなかった)、Gtk#がメインのGUIライブラリになるみたいです。

Glade使って簡単なGUIアプリを作るvideoには 激萌えですよ。やっぱりGladeは最強! オレはまだ使ってないけどw  あと黒バックのEmacsもついでにカコイイ。

まーあれです。Swingとかやってたら、せっかくのLinux上の技術・知識はどうすんの、 もったいないじゃんって思ってて、 そのせいもあってオレは(無駄にGUIのプログラミングに興味があるくせに)Swingに手を出しにくかった。 GtkをCでいじるのは挫折してるし、gtkmmでC++ってのも気が進まなかったんで Ruby-Gnomeで遊んでるわけだけど、ここでまた有力な遊び相手候補の登場ですよww  Rubyより速いし。

まーJavaのJNIってのを最近知って、こいつ使ってどこまでGnomeに触れるのかはまだわかってないんだけど。 ん、待てよ。Java-Gnomeなんてのがあったな。 また調べてみよう。

ただ2ちゃんねるブラウザはこのままRuby-Gnomeで作ろうと思います。 あれはRubyで作るから意味があるような気がしてきた……ネタとして。

あー、Ruby.NETが 使えるようになってくるとさらにおもしろいんだけどなー。

Java-Gnome 14:44

Gtk#でGtkプログラミングができると喜んでいたわけだけど、 Java-Gnomeも結構いいかも!

Eclipse + Java-GNOME Demoのvideoもすごい楽しげ。 EclipseとGladeを使って簡単なGTKアプリを作ってます。

あー、早く知ってればなぁ。こんなおもしろいもの。 知らないと遊べない世界なんだよね。こういうのは。

とりあえずGtk#でもJava-Gnomeでも同じ感じなので、ツールやノウハウがそろっているJavaのほうで 遊んでみようかな。Javaなら文法は知ってるし、Eclipseもどんなもんか試してみたかったし。 一通り見たらまたvimに戻ってきそうな予感はする……。 Javaのリファクタリングをするためのvimのプラグインみたいのないかな……。

November 11, 2005

Sambaスゴス 21:51

研究室のパソコンはWin XPなんですが、重要なデータが入ってないんで徐々に シンクライアント化していくんでしょうか。

研究のプログラムは研究室の余ったLinuxにsshで入ってvimで。 WinのFirefoxでファイル(大体がプログラム)をダウンロードするときは、保存先として マイネットワークからLinuxへ。

Sambaを通して直接リモートのLinuxへダウンロードファイルを保存WinからLinuxの~/.vim/pluginに保存しようとしているところ

Sambaサーバを立てる前はURIコピペしてwgetで落としてたんですが、よくはまる罠が。 *.tar.gzみたいなファイル名の文字列に、いかにも「リンク先はファイルです」って感じでリンクが 張ってあるんでCopy Link Locationしてwgetしたら、 落ちてきたのはファイルじゃなくてHTMLだったっていう。

どういう文字列とリンク先を関連づけるのか、もうちょっと考えてマークアップしてくれると こういうことも無くなるんだけど。まーいーや。これからはそういう罠にもかからないぞー。

うわ、SourceForgeのリンクひどいや(´・ω・`)ショボーン

今適当に選んだGreensiteっていうプロジェクトのファイルリストのページでは 「Source.tar.gz」にリンクが張ってあるけど、リンク先はダウンロードサーバの選択ページ。 リンク先行く前にステータスバーでURIを確認すると、http://prdownloads.sourceforge.jp/greensite/17161/Source.tar.gzってなってる。 えええええΣ(゜д゜lll)ガーン SourceForgeのページだからここでクリックしてもファイル落ちてこないのは知ってるけど、 そのURIに他のページからリンクされたら俺絶対右クリックしてリンク先をコピーしてwgetの引数にしてるところだわ。

November 15, 2005

SCIMで親指シフト 19:07

最近nicolatter + FreeWnnから、SCIM + Anthyに乗り換えました。

やっぱり少しでも性能がよいと聞けば使いたくなるわけでAnthyはずっと気になってはいたんですが、 親指シフトの使えるインプットメソッドとしてはnicolatterしか知らなくて、 nicolatterがAnthyに対応しない限り使えなくてショボーンとしていたわけです。

でもtakkan_mにAnthyが使えるSCIMで親指シフトがサポートされていることを教えてもらいました。 てことでそのへん参考にインストール。以下に、Vine Linuxでの方法を備忘録として載せときます。

# apt-get install scim scim-anthy anthy kasumi

kasumiはAnthyの辞書管理をするやつです。SCIMのバーの辞書のアイコンはこれですね。

どうもこの先いろいろやってて作業を覚えてないんですが、

$ setime none

とやってから、~/.vine/system/imeのファイルを変更。 変えるのはXIM_PROGとGTK_IM_MODULE。

EMACS_IME=none
XIM_PROG=scim
JSERVER=localhost
WNN8_FRONT_END=kinput2
WNN7_FRONT_END=kinput2
WNN6_FRONT_END=kinput2
WNN8_SERVER=localhost
WNN7_SERVER=localhost
WNN6_SERVER=localhost
CANNA_SERVER=unix
GTK_IM_MODULE=scim

~/.xsessionに

export XMODIFIERS=@im=SCIM

確かこんな感じだったはず。そして再起動。するとGnomeでもKDEでも、タスクトレイにSCIMのアイコンが 現れますた。

どうも日々のあしあとさんの方法だと KDEのアプリケーションで入力ができないみたいで、 いろいろいじくった結果~/.vine/system/imeをXIM_PROG=scimに変更することで解決したような気がします。 ちなみにKDEのアプリケーションではIMEがONのとき、確定するまで入力位置の下にボックスが出ます。 まーいーや。

Konsoleにscimで入力中

まーほんと何がどこに影響を与えてるのか、はっきりわかってないんですが。 ほんとこのへんは意味わかめ。

最後に、不要になったFreeWnnに戦力外通告を出します。御世話になりましたm(_ _)m

# /sbin/chkconfig FreeWnn off

Anthyの辞書ツールkasumiで有効にならなかったり、変換候補が変な位置に現れたり、 ちょっとした問題もあったりします。 まだまだ調査の必要があるんですが、たぶん当分は調べないw  それから、どーもオレのキータッチとSCIMの反応が しっくりこない。まー慣れの問題なんですかね……。

とはいえ、親指シフトに対応してくれたことには大感謝です。 文字の入力はもっとも基本的な操作なので、 親指シフターはLinuxでも親指シフトを使いたいもんです。

オレ自身はnicolatterに出会わなければ、今でもLinuxに移行してないと思うくらいでして。 それからEmacs上のSKK nicola。Linuxに興味を持ち始めたときに、 nicolatterが使えるようになるまでオレをLinuxに引き留めてくれたのはこいつでした。 最近使ってないなEmacs……。

特にnicolatterは自分で改造したりしてこの1年間使ってきたので、ちょっとなごりおしいですね。

November 16, 2005

VNCでLinuxからPowerPointを使ってみた 19:56

もう、VNCは面白過ぎます。画像をひたすら送ってるみたいなんで素人目には「え、そんな単純なの?」と 思ってしまうものの、まー問題なく使えればいいと。

前回はLinuxにVNCサーバを立ててWindowsからLinuxのGUIを触ってたんですが、 なかなか使う機会がないです(ターミナルだけで済んでしまう)。 そこで、WindowsにVNCサーバを立てて、ゼミでの発表の時に LinuxのノートパソコンからWindowsのPowerPointを使ってプレゼンをしてみようと思って、 ちょっと動作を試してみました。

VNCでLinuxからPowerPointを

画像だとわかりにくいですが、Linux上でVNCビューア(vncviewerコマンド)を使ってPowerPointを表示してます。 今回もMetaVNCを使いました。

LinuxでVNCサーバを立てる時にはサーバの起動時に解像度を指定できたんですが、 Windows用のVNCサーバにはどうも見当たらないみたいなので、起動中のWindows自体の解像度を ノートパソコンの1024*768にあわせる必要がありました。

ノートパソコンのほうでPowerPointをいじると、Windows機のディスプレイのほうも動いてました。

ウィンドウを動かすと、残像が残ってしまいます。これは設定やノートパソコンのスペックに問題があるかも しれないけれど。でもプレゼンやる分にはそんなことはないです。

気になるのはVNCをフルスクリーンにしたときに PowerPointがキーボードに反応しないことですが、 発表中ターミナルをいじったりするのでフルスクリーンよりも ウィンドウになってる方がいいです。フルスクリーン解除するのがわずらわしいので。

まーホントにこれでゼミをやるかどうかはかなり微妙。 それよりも、なんか面白い使い方を誰か思いついてくれー(教えてくれー)って思ってやってみました。

November 18, 2005

FirefoxのQuick Search 22:34

この前EmacsのCtrl-aとCtrl-eを知らないでEmacsやらXkeymacsやらを使ってるLinuxerを2人も立て続けに見つけたので、 自分の常識・当たり前は他人には通用しないってのはかなりの場面で言えることなのかも。 特に話題に登りにくいところではなおさら。オレがlocateコマンドを知らなかったように。

てことで、自分が少しでも便利だと思ったことは「まー知ってるだろ」と思っても なるべくエントリにすると、数人幸せになれるのかなと思いました。 最近はブックマークして済ましてしまうことが多いし……。

前置きが長くなった。 Quick Searchって名前でいいのか知らないけど、Firefoxには「検索へのショートカット」とでも いうべき便利な機能があります。

例として、ここのブログの検索のQuick Searchを登録してみます。 検索用のテキストエントリの上で右クリックすると、 英語版だと「Add a keyword for this search...」というメニューが出ます。

テキストエントリで右クリック

それを選択すると、ブックマークへの追加のダイアログが出ます。

Quick Searchを追加

ここでは「myblog」というキーワードにしました。 このキーワードをロケーションバーで使うことができます。

ロケーションバーで検索

「myblog nicolatter」とすると、さっきの検索用のテキストエントリに「nicolatter」と入れて検索した場合と 同じ結果が得られます。なんかロケーションバーがシェルみたい。

オレの場合はIT用語辞典 e-WordsRuby リファレンスマニュアルruby-listを 登録してあります。おかげでwebページを見ていて何かわからない用語が出てきたらロケーションバーで すぐにe-Wordsから検索できます。 あと、Rubyのリファレンスを探すときはなぜかRefeじゃなくてこっちを使う。

で、これを突き詰めると多分こうなりますw

  1. e-Wordsのページまで行くのマンドクセ → Quick Search(GUIの作業はショートカットでウマー)
  2. Excelを開いてCSVをソートするのマンドクセ → sortコマンド(CLIへようこそ)
  3. 一時ファイル作るのマンドクセ → パイプ、リダイレクト(コマンド組み合わせるとプログラミングみたい)
  4. 何度もコマンド書くのマンドクセ → シェルスクリプト(ホントにプログラミングっぽくなってきた)
  5. 新しいウィンドウ開くのマンドクセ → vim, emacs -nw, screen(Eclipseが使えないオールドタイプに……)
  6. 使い捨てプログラムのためにエディタ開くのマンドクセ → コマンドのオプションを熟知、ワンライナーを駆使
  7. ……想像もつかない短気と傲慢と怠惰の世界へ

なんとLinuxへ続いておりますww つーかオレのLinuxの想像力しょぼい。

November 21, 2005

VineでBootchart 00:34

BootchartはLinuxのブートプロセスの視覚化をしてくれるやつです。 で、これがREADME見てもサイトを見てもGRUBの設定方法しか載ってなかったんで、 liloはどうすんだと思ってだらだらと調べてたらありました。

When lilo waits for you to select a kernel to boot off, you can enter 'your_kernel_name init=/sbin/bootchartd' This way you won't need to make any changes to your /etc/lilo.conf.

If your lilo has a nice graphical frontend, you can simply press tab to get to the textmode where you can type in parameters to lilo.

テキストモードでこちょこちょ書いてやればいいと。 テキストモードにするのに"press tab"って書いてあるけど、VineだとEscだね。

まーせっかくだから、メモ残して置きますね。

bootchartをダウンロードページからダウンロード。

$ tar jxvf bootchart-0.9.tar.bz2
$ cd bootchart-0.9
# ./install.sh

そして再起動。

liloの選択画面が出てきたらEscを押してテキストモードに。

linux2.6.12           linux2.4.30
boot:

こんなのが画面に出るので(linux2.6.12とかはラベル)、

boot: linux2.6.12 init=/sbin/bootchartd

と入力。=を入力するのにShift + -じゃなくて、右隣の^になってた……。

すると/var/log/bootchart.tgzができてるので、これを次にSVGに変換。 READMEにあるように方法は2つあるけど、bootchart.jarがすぐに見付からなかったのでcurlのほうで。

$ curl --form format=svg --form log=@/var/log/bootchart.tgz 
     http://bootchart.klika.si:8080/bootchart/render > bootchart.svgz

できあがったbootchart.svgzはGimpで開けます、たぶん。

参考までにうちのパソコンのをうpしときますね。 なんと70秒以上も起動にかかっている御様子。眺めててもそんくらいしかワカンネ(´・ω・`)

だーっと書いたけど、ほとんどREADMEの写しだなぁ。liloのところしか新しい情報はないし。 まーまとまってたほうがわかりやすいからいいか。

関係ないけどcurlってコマンドが気になるんですけど。

VineのRubyを1.8.3に 12:20

パッケージ作る人も忙しいんだろうけど、なかなかVineのRubyが1.8.1から上がらないので、 うちのVine Linux 3.2 seedで1.8.3化を試みました。つってもFedora core 3用のrpmをもらってきただけですが。

rpmfind.netから以下をダウンロード。

インストール。

# rpm -Uvh ruby-1.8.3-2.fc3.i386.rpm ruby-libs-1.8.3-2.fc3.i386.rpm irb-1.8.3-2.fc3.i386.rpm

依存で問題が出たやつ(確かrdoc)はいったん削除。 とりあえず自作2ちゃんブラウザは動きました。(これも進めないとね)

fc4用だと共有ライブラリのバージョンが低くて入りません。fc3用だとすんなり入ります。 あとは問題がでなければいいんですが。

November 23, 2005

SQLiteでお手軽データベース 03:51

研究で作ってるプログラムでいくらか大きめで多少込み入ったデータを使うんです。

これをファイルにして保存する場合、 ディレクトリやファイルの構成であるとかデータの検索の部分を自分で実装しなければならないわけです。 もう、ファイルが存在するかどうかの判定に始まって、ディレクトリをどう分けるだの、 そのためにmkdirを繰り返してあーだこーだ。 ファイルが作成されているか、変更はしっかり保存されているか、特定のデータは削除できたか、 なんて感じで結構低レベルな部分からテストしていかないといけない。

なんかね、めんどくさいし、そういったコードの面倒を見ていくのも気が滅入るなーと思ってたんです。 これは最近放置気味の自作2ちゃんブラウザを作ってたとき特に。

そのめんどくさい部分をデータベースで置き換えたら楽なんじゃないかと思ったときに、 やっとデータベースを利用する意義が見えてきましたよ。

今まではWebサービスで大量のデータを扱ったりとか、そういうの専用だと思ってたからデータベースには興味が無かった。 でもファイルの構成を考えて、そのファイル構成専用の検索ルーチンをしこしこ作る つまらないプログラミングをするくらいなら、 少しSQLを覚えてselectしてきたほうが楽で早いし、パフォーマンスも良さそうだと。

今まで避けててごめんねデータベース。 SQLは基本情報技術者試験の勉強で見かけて以来大嫌いだったけど、今なら好きになれそうだよ……。

で、さっき調べ物してたときに見つけたんだけど、ハテナオヤさんが昔 「MySQL は商用 RDBMS にとっての破壊的イノベーション」というエントリで 似たようなことを言ってます。オレは「ファイルより楽なんジャマイカ?」って思ってるだけだけど、 そのエントリではデータをネットワーク越しに共有みたいな話にまでなってます。 これは、うちの研究室でお金があることをいいことに高〜いサーバを買って、 そこでコーパスから計算した相互情報量のデータベースを動かしてみんなで利用っていう 話と近いんだろうか? もっと複雑な話かな……。

で話を戻すと、今回作るプログラムではデータベースを使うって決めてたんだけど、 MySQLはユーザを作ったり許可を与えたりとか、 テーブル作る前に寄り道しないといけないところの学習量が多くて、いやなんだよね。 作りたいのはユーザじゃなくてテーブルなのに。しかもテーブル作るのにも、データ型がいっぱいあって うんざり。数字と文字列を突っ込みたいだけなのに。

でも、半端な知識でも使えるデータベースがありましたよ。 SQLiteがそれです。 ざーと見た感じ、こんなところ。たぶん。

  • MySQLと違ってサーバが立つわけじゃない
  • 1つのデータベースは1つのファイルとして保存される(いらなくなったらrm、失敗してもrm。SQL苦手でもリセット簡単)
  • 「ユーザ」という概念は無い(パーミッションでやるみたい)
  • 基本的に型指定不要

もー、ちょっといじって遊ぶには最適じゃないすか! なにより、 sqlite起動したらすぐにcreate tableすればいいんだから話が簡単!  みんな、これ、楽しいよ。

VineでInitNGを使ってみた 17:05

オレの勉強不足気味の知識によれば、 Linux起動時の全てのプロセス(initの孫プロセスは違うけど)を起動するのがinitという話だったかと思うんだけど、 InitNGはinitの代わりにそれをやるやつです。これ速すぎw

インストールは至って簡単でした。ありがたい。(seedのパッケージかも)

# apt-get install initng

initngの設定ファイルなどは、/etc/initngにあります。/etc/initng/default.runlevelってファイルに 記述されているサービスを起動するみたいです。 まーこのへんは@ITの『InitNG環境でサービスを動作させるには』を みるとわかります。この記事によれば、まずやることは

# ng-update add daemon/xfs
# ng-update add daemon/gdm

です。これだけでもしっかり起動するんですが、anacronとか今まで起動してたやつは起動しなくていいんだろうか……。 こいつらが何やってるのかがしっかりわかってないから判断がつかない。ここは必要になったら追加ですかね。

とりあえずchkconfig --listを見て、今起動してるやつ(runlevel 5がon)のうち、 /etc/initng/daemonにあったやつを気休め程度に追加してみた。

# ng-update add daemon/anacron -> 失敗
# ng-update add daemon/atd
# ng-update add daemon/famd
# ng-update add daemon/hald
# ng-update add daemon/dcron

名前が違って取りこぼしてるやつがいるかもしれない。まーいーか。(dcronは少し変更する必要があります

次にInitNGのREADMEのページにあるように/etc/lilo.confを変更。 オレのはこうなりました。

image=/boot/vmlinuz-2.6.12-0vl5
        label=linux2.6.12
        initrd=/boot/initrd-2.6.12-0vl5.img
        read-only
        root=/dev/hda2
        append="init=/sbin/initng resume2=swap:/dev/hda3"

appendのところにinit=/sbin/initngを追加、と。もともとあったresume2はこれでいいのか知らないけど。 んで、liloを更新。

# /sbin/lilo

そういえば、bootchartを使おうとしてたときにどうもlilo.confが反映されないと思ってたら、 /sbin/liloを実行してなかったのね……。

ちなみに、initNGでbootchartを使うには、『InitNG で高速ブートを実現しよう』にあるように bootchartdを変更(/sbin/init→/sbin/initng)して、(lilo.confを書き換えるのはめんどくさいので) 前回のエントリのようにやればいいです。

initでは70秒かかっていたものが、25秒くらいになりました。 起動しているサービスが圧倒的に少ないんで速いのは当り前かも。 同じものを起動して比較したいけど、まー速くなったのは確かなんでこれでとりあえず満足。 支障が無ければinitに戻す必要もないや。

November 27, 2005

固有表現抽出ツールNExTのインストールメモというかパッチ 02:47

研究でNExTを使わせてもらおうと思ってるんですが、 少なくともVine Linux 3.2 GCC 3.3.2の環境ではコンパイルできなかったのでパッチを作りました。もう2度と同じことはしたくないよ……。

以下にインストールのメモを。

まず、依存しているICUというライブラリのページがマニュアルのとは変わってる。 http://www-306.ibm.com/software/globalization/icu/downloads.jspから落とす、と。 まーこんなものは探せばたどり着けるからいい。

で、NExT TypeC Ver. 0.10を落としてきて、 展開。

パッチを当てる。

$ tar zxvf NExtT_TypeC0.10.tgz
$ patch -p0 < next.diff

もう、パッチ作るのなんて、今回限りなんだからね!

つーかC++まともにわかってないんですが、そんなパッチでもコンパイルできます。

コンパイルが通ったので、マニュアルにあった例文を動かしてみます。

これ、うちのAthlon 1800+。約23秒。

$ time ./next temp.txt
<ah>三重大学</ah>の<aks>情報工学科</aks>は、<bbc>平成4年</bbc>に設立された。

real    0m23.139s
user    0m14.908s
sys     0m4.087s

これ、研究室のPentium 4 3.0GHz メモリ1GByte。約10秒。

<ah>三重大学</ah>の<aks>情報工学科</aks>は、<bbc>平成4年</bbc>に設立された。
./next chasen_temp.txt  7.19s user 2.67s system 100% cpu 9.853 total

なんでtimeの出力形式が違うのかわからないけど。

マニュアル読んだ限りだと、接尾辞の辞書とかとマッチングしたりしてるだけかと思ってたけど、 もっと複雑なんだね。結構かかるもんだねー。

ソース直してて思ったけど、ヘッダファイルに実装を書けるんだね……。 宣言だけかと思ってた。 つーかNExTのソース、1つ.cppであとは全部.hだ。 C++ってこういうもん?

そういえばソースコピペしすぎwww 修正したところのほとんどは重複したコードでしたよ。ばれてますよ。

まー文句言っちゃったけど、ありがたく使わせていだだきます。