2007年7月26日木曜日

ssh pseudo-tty allocation

crontabを書き換えるのに、わざわざログインするのが面倒くさいと思って、
sshで出来ないかと思ったら、強制的にttyを確保されれば出来るね。
ssh -t host crontab -e

考えてみたら、ローカルファイルに書いておいて、ssh host crontab < fileでいいのか。
こっちの方がいいな。



2007年7月24日火曜日

cmecabをwindowsで

cmecabをWindows上で動かしてみた。
バイナリ配布のPython 2.5.1とmecab-win32 0.96と、Windows SDKを使用。
cmecab.cPyObject_HEADの後にある、セミコロンをなくすだけでコンパイルできた。
とりあえず動いた。

付いてたベンチマークをやってみたら、こんな感じ。

  • cmecab
    3 function calls in 33.654 CPU seconds
  • mecab-python
    10015 function calls in 85.746 CPU seconds



2007年7月12日木曜日

Sun™ studio 12でpythonをbuild

Solaris上でコンパイルするので、Sun studio 12をつかってみた。
Sun studioのコンパイラでは、ctypes用のlibffiが、そのままだとコンパイルできません。
Sun studioのコンパイラが、__i386__を定義していないのが原因なので、__i386__から__i386にすると通ります。

参考



distuiltsのbdist_msi

python setup.py bdist_msiで、
msi形式のインストーラも作れるのに、なんでマニュアルとかには載ってないんだろう?
msi形式で配布されているのも知らないし(Python自体がmsiだけど)。

単純にmsiが嫌われてるだけかな…



VGP-BMS33(Bluetooth mouse)買った

SonyのVGP-BMS33/Bを買いました。ちょっと安くなっていたので。
Notebook Presenter Mouse 8000よりは、持ちやすいので、使いやすい。
東芝のスタックで、特に問題なくつながった。

こいつは単3電池が2本なので、余り気味のeneloopが使えるのがうれしい(単4のが不足気味)



2007年7月11日水曜日

続き mecab-python on windowsの問題

Windows SDKに入っているコンパイラと、mecab-win32でビルドできた。
バイナリ配布のlib/dllを使うので、MeCab_wrap.cxxへのパッチが必要。

manifest(python.exe.manifest, pythonw.exe.manifest)を修正しないと、MSVCR80.DLLがロードできないので、
manifestに、以下のエントリを追加した。

  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>

idleでも問題なくなったけど、pyscripterはだめだな。manifestを内部で持ってるのかな?
ほとんど使わないからいいか。




2007年7月10日火曜日

mecab-python on windowsの問題

mingwでコンパイルした、mecabmecab-pythonが、うまくロードできないことがある。
だめなときは、ImportError: DLL load failed: メモリ ロケーションへのアクセスが無効です。とか言われる。

idle、PyScripter, IPythonからだと確実にロードできない。
MeCabLibでもだめだったから、libmecab-1.dllが原因かな。何が悪いんだろう。
バイナリ配布のmecab-win32だと、g++で作ったのとリンクできないし、VC++で試すしかないのかな。

ついでに、mingwだと、mecabをコンパイルするときに、mecab.hをいじっておくか、
MeCab_wrap.cxxをいじらないと、リンクに失敗した。
mecab.hをいじるなら、以下のdiff。

--- mecab.h     2007-03-11 23:19:42 +0900
+++ mecab-0.96/src/mecab.h      2007-07-10 09:58:10 +0900
@@ -217,11 +217,11 @@
     virtual ~Tagger() {}
 
 #ifndef SIWG
-    static Tagger* create(int argc, char **argv);
-    static Tagger* create(const char *arg);
+    MECAB_DLL_EXTERN static Tagger* create(int argc, char **argv);
+    MECAB_DLL_EXTERN static Tagger* create(const char *arg);
 #endif
 
-    static const char *version();
+    MECAB_DLL_EXTERN static const char *version();
   };
 
   /* factory method */

MeCab_wrap.cxxはこっち

--- MeCab_wrap.cxx      2007-06-10 23:32:44 +0900
+++ mecab-python-0.96/MeCab_wrap.cxx    2007-07-10 12:44:27 +0900
@@ -4450,7 +4450,7 @@
   arg2 = reinterpret_cast< char ** >(argp2);
   {
     try {
-      result = (MeCab::Tagger *)MeCab::Tagger::create(arg1,arg2);
+      result = (MeCab::Tagger *)MeCab::createTagger(arg1,arg2);
     }
     catch (char *e) {
       SWIG_exception (SWIG_RuntimeError, e);
@@ -4483,7 +4483,7 @@
   arg1 = reinterpret_cast< char * >(buf1);
   {
     try {
-      result = (MeCab::Tagger *)MeCab::Tagger::create((char const *)arg1);
+      result = (MeCab::Tagger *)MeCab::createTagger((char const *)arg1);
     }
     catch (char *e) {
       SWIG_exception (SWIG_RuntimeError, e);
@@ -4548,7 +4548,7 @@
   if (!PyArg_ParseTuple(args,(char *)":Tagger_version")) SWIG_fail;
   {
     try {
-      result = (char *)MeCab::Tagger::version();
+      result = (char *)mecab_version();
     }
     catch (char *e) {
       SWIG_exception (SWIG_RuntimeError, e);




2007年7月9日月曜日

Softbank 911Tのドキュメントビューアが使えなくなった(のが直った)

本当に、約2ヶ月で、ドキュメントビューアがつかえなくなった…。
調べると、修理に出しても、根本的な解決はしないようだ。
面倒だから、修理出したくないなぁ。

前使ってた、903Tのコンテンツエラーの放置といい、サポートが当てにならなそうだし。
(904Tとか、その頃の機種みんなに起こる問題らしいが、903Tしか知らない)

ソフト(ファーム?)ウェアの更新とかで直らないのかなぁ。

追加
ファームの更新で直りました。



2007年7月8日日曜日

WindowsXPの休止状態

新しい方のノート(memory 1.5GB)で、休止状態が失敗した(システム リソースが不足するため、API を終了できません)。
このマシンでは、いままで一度も出なかったので、パッチの存在をすっかりわすれてた。

何で今まで平気だったんだろう?
2GB乗せているマシンは、しょっちゅう失敗してたのに。



2007年7月6日金曜日

mysqld was killed by less

less hoge.bz2でファイル見てたら、lessが太りまくって、OOM killer発動でmysqldが殺された。怖いね。