Hatena::ブログ(Diary)

katsyoshiの日記 このページをアンテナに追加 RSSフィード Twitter

2014-02-10

fluent-plugin-mecab

誰が何のために使うのかよくわからないけど,新しいfluentd plugin書きました.

fluntdに流れてくる日本語のデータをmecabに食わせて形態素解析結果をもう一度fluentdに流すプラグインです.

install

Gemfileに以下を書いて,bundle installすればいいです

gem 'fluent-plugin-mecab', git: 'git://github.com/katsyoshi/fluent-plugin-mecab.git'

使い方は簡単です.以下のように設定します

<source>
  type forward
</source>

<match mikutter.**>
  type copy
  <store>
    type stdout
  </store>
  <store>
    type mecab
    key message
    tag mecab.meacab
  </store>
</match>

<match mecab.**>
  type stdout
</match>

ってやる形態素解析結果をfluentdに投げることができます

やらないといけないこと

1. gem

2. mecabの出力方法に対応

chasen,wakatiなど

2013-12-12

miktter advent calendar 2013 12日目

コンソールでmikutter

みなさんご存知のmikutterdを使ってmikutterからついーとします.

以前作ったmikutter-rpcを利用すればすぐにできます.

pluginディレクトリmikutter-rpcを導入し,mikutterを起動したあと

以下のスクリプトを実行するとついーとできるようになります.

require 'msgpack/rpc'

cli = MessagePack::RPC::Client.new('127.0.0.1',5000)

loop do
  line = gets
  break if line.chomp == 'exit'
  count = 0
  begin
    cli.call :tweet, {message: line}
  rescue MessagePack::RPC::ConnectionTimeoutError => e
    count += 1
    raise e if count > 3
    sleep 0.1
    retry
  rescue => e
    p e
  end
end

スクリプトを実行すると一行ごとについーとされるようになります

これでひとの目を気にせずにツイッターができますね!!

2013-12-09

mikutter advent calendar 2013 9日目

rakegem依存関係解決☆(ゝω・)v

はい

http://dev.mikutter.hachune.net/issues/628

ruby mikutter.rb --confroot=/path/to/conf/path

で起動できるのにpluginのgemfileを読み込む設定を手動で書き換える必要があります.

めんどくさいのでrakeインストールできる様にしました.

rake gemfile [confroot=/path/to/conf/path] # Gemfileの生成
rake install [gem_dir=/path/to/bundler/path] # bundler利用してgemのインストール
rake run # mikutterの起動

2013-12-01

mikutter advent calendar 2013 1日目

mikutterビッグデータ処理

はいネタです.

とりあえずmikuttermessagepack-rpcを導入します.

以下のプラグインを.mikutter/plugin/に導入します.

require 'msgpack/rpc'
Plugin.create(:rpc) do
  UserConfig[:tw_port] ||= 5000

  class Remote
    def tweet(msg)
      Service.primary_service.update(msg)
      true
    end

    def bigdata(str)
      Plugin.activity :system, str
      true
    end
  end

  on_boot do
    start
  end

  def start
    @server = MessagePack::RPC::Server.new
    @server.listen('0.0.0.0', UserConfig[:tw_port], Remote.new)
    Thread.new do
      @server.run
    end
  end

  def stop
    @thread.kill
  end

  settings "rpc" do
    adjustment "port number", :tw_port, 1024, 0xffff
  end
end

これを導入するとmikutterでmsgpack-rpcが使えるようになります.

そこでクライアントとして以下のプログラムを実行します.

require 'msgpack/rpc'
5000.times do |t|
  cli = MessagePack::RPC::Client.new('127.0.0.1', 5000)
  cli.call(:bigdata, t.to_s)
  cli.close
end

この例だと5000個のデータをmikutterに投げつけてます.

mikutterは受け取るのはそんなに時間はかかりませんが,表示するのに時間がすごくかかります.

ので,mikuttter.dを使ってGUI表示しなければそんなに時間かからないと思うのでそこそこ使えるのでは?

2013-04-19

homebrewにtd-agentがやってきた

今日,mac向けにtd-agentのhomebrew用のformulaが公開されたのでインストールしたお話を.

Install

とりあえずインストール方法*1ですが,

$ brew install  "http://toolbelt.treasure-data.com/brew/td-agent.rb"

インストールでできます

インストール終わったら,設定ファイルを設定します.

設定ファイルは/usr/local/etc/td-agent/td-agent.confが読み込まれるのでそれを編集します.

以前から利用している設定ファイルを置けば動きます.

次にdaemonとして登録し,起動します.

$ ln -sfv /usr/local/opt/td-agent/homebrew.mxcl.td-agent.plist ~/Library/LaunchAgents/.
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.td-agent.plist

で起動できます.

ログファイルは/usr/local/var/log/td-agent/td-agent.logに出力されます

オプションとか

$ brew options td-agent
--fluentd-rev=<revision>
        Using specify Fluentd revision