ほんとのこと知りたいだけなのに。

夏休みはもうおわり。

続・openSUSE に MeCab をインストール

先日 MeCab を xx 経由でインストールしましたが、どうやらこれではイマイチみたい。

openSUSE に MeCab をインストール

なので今回は再度インストールします。

発生した問題

libmecab-dev(かな?)相当のものがインストールされていないっぽい。

mecab-python3 をインストール中に mecab.h が無いと叱られた。

> sudo pip3 install mecab-python3
       : 
       : 
    MeCab_wrap.cxx:3052:19: fatal error: mecab.h: No such file or directory
     #include "mecab.h"
                       ^

MeCab 自体は動くんだけれども。。。。

再度インストール

それではインストール開始。

ダウンロード

本家 の以下のメニューにあるものをダウンロードする。

ダウンロード > MeCab 本体 > Source

解答&インストール

本家の方法ですんなりインストール。

Downloads> tar zxvf mecab-0.996.tar.gz
    :
mecab-0.996/Makefile.am
Downloads> cd mecab-0.996/
mecab-0.996> ./configure
    :
config.status: executing default commands
mecab-0.996> make
    :
make[1]: Leaving directory '/home/somewrite/Downloads/mecab-0.996'
mecab-0.996> make check
    :
==================
All 3 tests passed
==================
make[2]: Leaving directory '/home/somewrite/Downloads/mecab-0.996/tests'
make[1]: Leaving directory '/home/somewrite/Downloads/mecab-0.996/tests'
make[1]: Entering directory '/home/somewrite/Downloads/mecab-0.996'
make[1]: Leaving directory '/home/somewrite/Downloads/mecab-0.996'
mecab-0.996> sudo make install
    :
make[1]: Leaving directory '/home/somewrite/Downloads/mecab-0.996'
mecab-0.996> mecab -v
mecab of 0.994

ついでに mecab-python3 をインストール

問題なく通過

mecab-0.996> sudo pip install mecab-python3
Collecting mecab-python3
  Using cached mecab-python3-0.7.tar.gz
Installing collected packages: mecab-python3
  Running setup.py install for mecab-python3 ... done
Successfully installed mecab-python3-0.7

おわり。

はやく zypper でインストールできるようになると良いですね。

burgled-batteries をどのように利用するかを考えてみる。

Pythonのプログラムをどう動かすか。 ちょいと整理してみる。

github.com

概要

ストーリーとしては以下のような感じでしょうか。 このストーリーで実装してみます。

  1. Python でプログラムを書く。 書いたプログラムはファイルに保管しておく。
  2. burgled-batteries でそのファイルを読み込む。
  3. Pythonの関数をCL上で定義する。
  4. CL上から定義した関数を実行する。

実装

Python でプログラムを書く。

# coding: utf-8
# HelloWorld.py
def test_func(name):
    return "Hello world! " + name

burgled-batteries でそのファイルを読み込む。

> (ql:quickload :burgled-batteries)
(:BURGLED-BATTERIES)
> (in-package :burgled-batteries)
#<PACKAGE "BURGLED-BATTERIES">
> (startup-python)
; No value
> (import "sys")
0
> (run "sys.path.append('/home/someml/junk')")
; No value
> (import "HelloWorld")
0
> (run "HelloWorld.test_func('yanqirenshi')")
"Hello world! yanqirenshi"

Pythonの関数をCL上で定義する。

> (defpyfun "HelloWorld.test_func" (name))
HELLOWORLD.TEST_FUNC

CL上から定義した関数を実行する。

> (helloworld.test_func "yanqirenshi") 
"Hello world! yanqirenshi"

おわり

想像以上にすんなり出来ました。 これでPythonでプログラムを書けば寄さそう。

あとは引数の引き渡しと、戻値の受け取りで他のデータタイプで上手に出来れば問題なさそう。

FFIは文字コードまわりで躓くこともよくあるし。

まぁ難しい場合DB経由でデータの受け渡しすれば良いのでなんとかなるかな。

index のことろから作業再開のための整理。

前回 からかなり間が空いてしまい、すっかり何をしていたのかわからなくなりました。

なので思い出しも含めて整理しました。

現在の状況

以下のような状況だった。

今後の進め方

現状のままだとややこいので残りのテストを書くイシューを立て、このイシューはクローズすることにしました。

<立てたイシュー>

slot-index-multiple のテストを書く #111

Github の Project を作成してみました。

今まで マイルストーンで管理していましたが、 Github に Project 機能(カンバン機能?)が追加されたので それを利用してみることにしました。

これ: Upanihsad Ver 1.0

ちがった

managed-pool/pool.lisp のテストを書く #102 で止っていただけの模様。

おわり

なかなか時間が割けないので思い出し作業の方が多いような気がしてきました。

このあたりも含め早く完了したいものです。