Furudateのブログ

プログラミングやネットワーク系の知識・技術がメインのブログ。技術メモ帳的な感じになるかと。岩手から発信していきます。

Mecab-perlのインストール

こんばんは。
Mecabについて、これまでPHPのバインディングRubyのバインディングをインストールしてきました。
次はperlバインディングをインストールしたいと思います。
やり方はRubyのときとほぼ一緒だと思いますが・・・

# mecabのバージョンに合わせたものをダウンロードしてきます
$ wget https://mecab.googlecode.com/files/mecab-perl-0.996.tar.gz
$ tar zxfv mecab-perl-0.996.tar.gz
$ cd mecab-perl-0.996

# インストールです
$ perl Makefile.PL
$ make
$ sudo make install

# エラーが出なければOK!テストしてみます
$ perl test.pl

これでテスト結果がきちんと出力されればOKです。
簡単でしたね。

それでは。

BerkeleyDBとperlのDB_Fileモジュールのインストール

こんばんは。
今回はperlのDB_Fileモジュールというものを使いたかったのでそれのインストール方法をメモしておきます。
このモジュールをインストールするためにはBerkeleyDBというDBMSの一つをインストールする必要があります。
DB_FileはBerleleyDBの一部の機能を使うことができるものです。
こちらに詳しく書いてありましたので、気になる方はどうぞ。

さて、まずBerkeleyDBのインストールです。
これはHomebrewでやっちゃいましょう。

$ brew install berkeley-db

次にDB_Fileモジュールのインストールです。
以下ではWgetでソースファイルを持ってきて設定ファイルを書き換え(HomebrewでインストールしたBerkeleyDBを読み込ませるように)し、インストールしています。

$ wget http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/DB_File-1.835.tar.gz
$ tar zxfv DB_File-1.835.tar.gz

$ cd DB_File-1.835
$ vim config.in
# INCLUDEとLIBのパスをコメントアウトして以下のように追記(バージョンは現時点です)
INCLUDE = /usr/local/Cellar/berkeley-db/5.3.28/include
LIB = /usr/local/Cellar/berkeley-db/5.3.28/lib

# インストールです
$ perl Makefile.PL
$ make
$ make test
$ sudo make install

これでエラーが出なければOKです!
今回は簡単でしたね。

それでは。

参考にさせていただいたサイト

DB_Fileのインストール - Berkeley DBへのperl accessor - end0tknrのkipple - web写経開発

perlによる大規模データの取扱い

Cabochaをインストールしてrubyで使えるように

こんばんは。

今回はCabochaをMacに入れてみたいと思います。
Cabochaは係り受け解析器です。
今回はすごく簡単でした。

なお、mecabがインストールされていないと動かないので注意です。

インストール

まずはインストールです。
こちらからダウンロードしてくるのもいいんですが、今回はHomebrewにパッケージがあったのでそちらからインストールしました。

$ brew install cabocha
$ cabocha
隣の客はよく柿食う客だ

cabochaコマンドが使えればOKです。

rubyバインディングのインストール

次にRubyから呼び出せるようにします。
Homebrewで入れるとRubyバインディングの実行ファイルが入ってこないので、こちらから同じバージョンのものをダウンロードします。

$ wget https://cabocha.googlecode.com/files/cabocha-0.68.tar.bz2
$ tar zxfv cabocha-0.68.tar.bz2
$ cd cabocha-0.68/ruby

rubyディレクトリにいったらインストールします。

$ ruby extconf.rb
$ make
$ sudo make install

$ ruby test.rb

テストでエラーが出なかったらOKです!
今回は簡単でしたね!
それでは。

参考にさせていただいたサイト

Cabochaのインストールメモ - Qiita

vimのよく使うコマンドや便利なコマンドなど

こんばんは。

今回はvimについて、よく使うコマンド、便利なコマンドなどを細かい部分を含めてメモしておきたいと思います(よく忘れるので…)。

基本的なコマンド

まずは基本的な部分です。
:(コロン)を使わない基本的なコマンドをここに記載します。

カーソル移動

hjklでの移動は省略します。

コマンド 説明
w 1単語前へ移動
b 1単語後ろへ移動
e 単語の最後の文字に移動
gj, gk 一行が折り返しているとき、表示行単位で移動
gg ファイルの先頭へ移動
G ファイルの最後へ移動
Ctrl-u 半画面上へ移動
Ctrl-d 半画面下へ移動
0 行の先頭に移動
$ 行末へ移動
fx(文字) カーソル位置から行末までにxがあればそこへ移動
Fx(文字) カーソル位置から行頭までにxがあればそこへ移動

文字列操作

コマンド 説明
yw カーソルのある単語をヤンク
yy カーソルのある行をヤンク
y0 行頭からカーソルの直前までをヤンク
y$ カーソルの位置から行末までをヤンク
dw カーソルのある単語を切り取り
dd カーソルの行を一行切り取り
x(数値)dd カーソル以下のx行を切り取り
d0 行頭からカーソルの直前までを切り取り
y$ カーソルの位置から行末までを切り取り
v ビジュアルモード
V 行単位でビジュアルモード
Ctrl-v 短形ビジュアルモード
p 貼り付け
P カーソルの前に貼り付け
Ctrl-a カーソル行の数字をインクリメント
Ctrl-x カーソル行の数字をデクリメント

その他の操作

コマンド 説明
u 元に戻す(undo)
Ctrl-r やり直す(redo)
(文字列打った後に)Ctrl-p 前候補を選択
(文字列打った後に)Ctrl-n 次候補を選択
. 直前のコマンドを実行

インサートモードについて

インサートモードに入る際、様々な方法があります。
使い分けると何気便利です。

コマンド 説明
i カーソル位置からインサート
a カーソルの次の位置からインサート
o カーソルの次の行からインサート
O カーソルの前の行からインサート
I カーソルのある行の行頭からインサート
A カーソルのある行の行末からインサート

複数行操作(コメントアウト

次にビジュアルモードで複数行操作する方法についてです。
私は基本的に v でビジュアルモードに入って、選択したものをヤンクしたり切り取ったりしています。
ここでは複数行を一気に操作(コメントアウトとか)する方法を記載しておきます。

  1. Ctrl-vで短形選択モードになり、複数行を指定
  2. Shift-iで入力モードに
  3. 挿入したい文字列(//とか)を入れる
  4. Esc

以上で複数行にまとめて文字列を挿入出来ます。
コメントアウトしたいときに非常に便利です。

コマンドラインモードにおけるコマンド

次はコマンドラインモード(コロン打ったとき)における基本的なものや便利コマンドを載せておきます。

文字列操作

コマンド 説明
:s/xxx/yyy/gc カーソル行にある全てのxxxをyyyに置換。cで確認ありにする。また/gを外すと一つずつになる
:%s/xxx/yyy/gc ファイル全てのxxxをyyyに置換
:%s;/xxx/yyy/;/www/zzz;gc ファイルにある全てのパス名を置換。パス名などの場合は;を区切り文字にする
= インデント整形。選択した部分を整形してくれる

画面操作

ウィンドウやタブ操作です。 ちなみにvim -p file1 file2でファイルをタブで開き、vim -o[-O] file1 file2でファイルを水平分割(垂直分割)して開くことができます。

コマンド 説明
:e file fileを現在のウィンドウで開く
:new file fileを新しいウィンドウで開く(垂直方向)
:vnew file fileを新しいウィンドウで開く(水平方向)
Ctrl-w h,j,k,l それぞれの方向のウィンドウへ移動
:tabe file fileを新しいタブで開く。file指定しないと空のタブを開く
:tabc 現在のタブを閉じる
gt 次のタブへ
gT 前のタブへ

以上です。
今後便利なコマンドが見つかり次第追記していきます。

それでは。

参考にさせていただいたサイト

覚えておきたい Vim コマンド 備忘録 - Qiita

脱初心者を目指すなら知っておきたい便利なVimコマンド25選 (Vimmerレベル診断付き) - Qiita

Linux - 【Vim入門】ノーマルVimで使えると便利かもなコマンド10つ - Qiita

Vimがちょっと便利になる5つ起動オプション(おまけあり) - Qiita

viの使い方/基本操作

git submodule の使い方

こんにちは。

今回は個人的に最初ちょっと扱いづらかった git submodule について基本的な使い方をメモしておきたいと思います。

git submoduleは外部のgitリポジトリを自分のリポジトリのサブディレクトリとして扱うことができるようになるものです。
cloneせずにsubmoduleとすることで、対象のリポジトリが更新されたときも追従することが可能となります。

最初は使いづらいしよく分からなかったのでcloneしてましたが、慣れると便利です。

それでは使い方を見てみましょう。

サブモジュールの追加

サブモジュールは git submodule add コマンドで追加出来ます。

$ git submodule add <gitリンク>

追加すると、Gitリポジトリのルートに .gitmodules が作成されます。
中身を見てみると、追加したリポジトリの名前やパスが記述されていると思います。
このファイルでサブモジュールを管理するんですね。
なお、.git/config にも記載されています。

サブモジュールの更新

サブモジュールの更新は git submodule update で行います。
サブモジュールに更新があった場合は随時これを実行します。

$ git submodule update

なお、 --recursive をつけることでサブモジュール内のサブモジュールも再帰的に更新するようです。

サブモジュールの削除

サブモジュールの削除は git submodule deinit で行います。

$ git submodule deinit リポジトリ名
$ git rm -rf 対象のファイル

サブモジュールを削除したら、 git rm コマンドでgitからもファイルを削除します。
削除後に .gitmodules などを見てみると、該当の記述が消えています。

サブモジュールを含んだリポジトリを clone したとき

サブモジュールを含んたプロジェクトをgithubからcloneすると、サブモジュールとして取り込んだディレクトリには何も含まれていません。
その際にサブモジュールを再度取り込むには、以下の流れで行います。

$ git clone <gitリポジトリURL>
$ git submodule init
$ git submodule update

init してから update することで、取り込むことができます。

なお、cloneする際に一緒に submodule init と git submodule update を一度に済ませる場合は、clone に --recursive オプションを使います。

$ git clone --recursive <gitリポジトリURL>

以上です。
これからは積極的に使っていきたいと思います。

それでは。

参考にさせていただいたサイト

git submodule は癖がすごいとの噂だったが素直につきあっていけそうという話 | deadwood

mecab-rubyのインストール方法

こんにちは。
今回はMecabRubyで使えるようにするために、OS Xmecabrubyをインストールします。

mecabrubyはソースをダウンロードしてきてインストールします。
ただ、gemでもインストールすることができるのでビルドしたくない方はそちらで。
しかし、gemの場合はruby2.0以上じゃないと正常に動作しないようなので(未確認ですが)、今回は2.0以下で使いたいこともあり、普通にソースを取得してビルドする方法を採用しました。

ソースの取得と解凍

まずはソースを取得しましょう。
なお、mecab-rubymecabのバージョンに合わせたものをダウンロードしないといけないので注意してください。
私の環境ではmecab 0.996なのでそれに合わせます。

$ wget http://mecab.googlecode.com/files/mecab-ruby-0.996.tar.gz
$ tar zxfv mecab-ruby-0.996.tar.gz
$ cd mecab-ruby-0.996

extconf.rb の修正

次に extconf.rb ファイルを修正します。
このファイルでMakefileを作っているのですが、現状のままではMac標準のmecabを参照してしまうので、brewで入れたものを参照するように修正します。

$CFLAGS += ' ' + `#{mecab_config} --cflags`.chomp

$LDFLAGS += ' -L' + `#{mecab_config} --libs-only-L`.chomp # この行を追加

インストール

さて、これでインストールする準備が整いました。
先程のファイルを実行して make install します!

$ ruby extconf.rb
$ make
$ sudo make install

これで何もエラーが出なければOKです。
ただ、ruby 1.9 より下のバージョンだと以下のようなエラーが出るかもしれません(自分は出ました)。

 -c mecab_wrap.cpp
mecab_wrap.cpp:1859:10: fatal error: 'ruby/version.h' file not found

mecab_wrap.cpp を見てみると、今のディレクトリから相対参照で ruby/version.h を include するようにしていたので、以下のように変えたら動くようになりました。

/* 下の行をコメントアウト */
/* #include "ruby/version.h" */
#include <version.h> /* このように変更 */

テストしてみる

さて、makeが無事に通ったらテストしてみましょう。

$ ruby test.rb

これで結果が出力されればOKです!
お疲れ様でした。

なお、rbenvでruby複数バージョン入れている場合は、バージョンごとに上記のインストールをやらないとダメです(自分はこれで若干詰まってました・・・)。

それでは。

参考にさせていただいたサイト

MeCab と MeCab Ruby をインストールする - kzy52's blog

Ruby1.8.7+bundler+mecab-rubyのインストール - ザリガニが見ていた...。

rbenvでコンパイラ関連のエラーが出たときの処理

rbenvで「C compiler cannot create executables」っていうエラー文が出たときの対処法。
ちょっと詰まったのでメモしておきます。

  1. Homebrewで apple-gcc42をインストール
  2. Rubyをインストールする際にgccのバージョンを指定する
$ brew install apple-gcc42

$ CC=gcc-4.2 brew install 1.8.7-p375

自分の場合は上記のようにすればrubyをインストールすることが出来ました。
最近gcc周りで詰まりまくってますがここら辺はよく理解出来ていないのでしないとですね・・・

それでは。

参考にさせていただいたサイト

【Ruby】rbenvでruby1.9.1-p430をインストールしようとしたらハマった - とある大学生の開発メモ