2016年3月16日水曜日

【更新】elasticsearchのkuromojiプラグインがエラーでインストール出来ない時の話

現時点で最新のElasticsearch 2.2で日本語解析プラグインのkuromojiを入れようとしたら
Could not find plugin descriptor 'plugin-descriptor.properties' in plugin zip
とか言われて、インストール出来なかった。

ググッて最初に出てきたGitHubページを参考に、コマンドの行だけ読んで
bin/plugin install elasticsearch/elasticsearch-analysis-kuromoji/2.7.0
と何も考えずに実行すると、上記エラーになる。
ページの上部に書いてある通り、
IMPORTANT: this project now moved to elasticsearch repository.
elasticsearchのリポジトリに移動しました。とあるので、
公式らしきGitHubページに書いてあるのだから…と素直に plugin-descriptor.properties とかを調べだすとドツボにはまる。

Elasticsearch公式のページにあるように
bin/plugin install analysis-kuromoji
とすればインストールできる。

公式GitHubページの方に早く反映いただけませんかねぇ?
→大変失礼致しました、書いてありました…。Elasticsearchの中の方からご連絡頂きました。


…と、ここまで書いて再度確認したら、上記操作でインストールされるのはkuromoji 2.2だった。
Elasticsearchとのバージョンの違いだろうか?
(kuromojiのGitHubページには、 kuromoji 2.2はElasticsearch 1.2用だと書かれているので、納得はしていない...)

2016年3月3日木曜日

InstagramからAPIを使わずにスクレイピングでタグ検索をする

インスタグラムで画像検索してディープラーニングにでも使うか〜
と思ってたらAPIが2015年12月の改訂により全然使えないものになっていた。

https://www.instagram.com/developer/

プライバシーポリシーみたいなのを登録しないと、自分自身と招待した10人位のユーザの情報しか取れない。
こんなんならFlickrのほうがまだマシだ。

https://www.flickr.com/services/api/

とはいえ、Instagramのほうがソーシャル感が強いのは事実。
何とかしようということで、スクレイピングするスクリプトを書いた。

https://github.com/syamoji/getInstagram

インスタグラムのWebページを観察すると、POSTで何かしら投げたら次のページが読み込めることがわかった。

スクリプト上部で検索タグを決めて、取得ページ数を設定したら情報が取得できる。
サーバの負荷にならないように、1ページ取得すると5秒待つ仕様にしてある。
デフォルトではCSVファイルに保存している。

gemとして公開までしてみたいなぁ

2016年2月23日火曜日

elasticsearchをlocalhost以外の外部からアクセスできるようにする

elasticsearchはver.2以降でデフォルトlocalhostからのみ接続を許可することになっている。

elasticsearch.ymlで
network.host: 0
とすれば別のマシンからもアクセスできるようになる。

VirtualBoxゲストOS内のelasticsearchにホストOSからアクセスできず、NATの設定やらポートフォワーディングの設定やらを見直していたが、elasticsearch自体の設定だったとは…

DELETEメソッドで簡単に消したりできるので、信頼するネットワーク内でのみ実施したほうが良い。


参考
http://christina04.hatenablog.com/entry/2015/11/27/204127

2016年1月29日金曜日

MacでVLCを複数ウィンドウで再生できるようにする

VLCで同時に複数画面で再生したい場合、Windowsでは設定に「複数ウィンドウで開く」という項目があるらしいが、Macには無い。

その場合は、スクリプトエディタでスクリプトを書けば開けるようになる。

Mac標準のスクリプトエディタを起動し、以下のスクリプトを貼り付ける。
VLCはアプリケーションフォルダに置いておく。

on run
    do shell script "open -n /Applications/VLC.app"
    tell application "VLC" to activate
end run

on open theFiles
    repeat with theFile in theFiles
        do shell script "open -na /Applications/VLC.app " & quote & (POSIX path of theFile) & quote
    end repeat
    tell application "VLC" to activate
end open
ファイル→書き出すをクリックし、適当な名前を付け、保存する場所を選ぶ。
ドラッグアンドドロップなどで使いやすいようにデスクトップなど。
ダイアログ下部の「ファイルフォーマット」を「アプリケーション」に変更し、保存する。

出来たアプリケーションに動画ファイルをドロップすれば、複数ウィンドウで再生できるようになる。

参考
http://superuser.com/questions/894840/how-to-play-multiple-instances-of-vlc-on-mac

2016年1月1日金曜日

Elasticsearch 2.0系 でupdateしようとしたときに illegal_argument_exception が出る時の対処法

Elasticsearchで更新しようとして、
curl -X POST http://localhost:9200/blog/article/1/_update?pretty -d '{"script": {"inline": "ctx._source.content = \"new content\""}}'
を実行して
{
  "error" : {
    "root_cause" : [ {
      "type" : "remote_transport_exception",
      "reason" : "[Artie][127.0.0.1:9300][indices:data/write/update[s]]"
    } ],
    "type" : "illegal_argument_exception",
    "reason" : "failed to execute script",
    "caused_by" : {
      "type" : "script_exception",
      "reason" : "scripts of type [inline], operation [update] and lang [groovy] are disabled"
    }
  },
  "status" : 400
}
のようなエラーが返ってくるとき、elasticsearch.ymlに設定が必要になる。
/etc/elasticsearch/elasticsearch.yml とかにあるファイルを開いて
script.inline: on
を書けば良い。

ググったら↓こう書けと出てくるページもあるが、2.0系では有効ではない。
script.engine.groovy.inline.aggs: on
script.groovy.sandbox.enabled: true

参考
http://stackoverflow.com/questions/25291927/how-to-run-update-elasticsearch-with-external-script
http://t-cyrill.hatenablog.jp/entry/2014/04/19/161422

2015年7月27日月曜日

Raspberry Pi 2 B+でgitをソースからインストールする

このページに従ってgitをインストールしようとしたらハマった。
http://qiita.com/kb10uy/items/976a52f687bcb7745fc7#git

makeの途中で
libgettextsrc-[verNo].so
が無いだのとエラーが出てしまう。

このページの方法で解決した。
http://www.cnblogs.com/yiguang/p/3633087.html
要は別のパスにライブラリがあるので、シンボリックリンクを張ってあげれば良い。

しかし中国語のサイトで問題解決したのは初めてかもしれない…。

2015年1月26日月曜日

WindowsのAtomでgit-plusが入らなかった話

最近Emacsにも飽きてきたから、gitとの親和性が高そうなAtomに乗り換えようとしている。

その中で、git-plusというパッケージがインストール出来なかった。
エラーメッセージは
Command failed: fatal: could not create work tree dir 'c:\ファイルパス\npm-10856-e1a1dfc8\1420633333522-0.860646930988878\4feb1e9760e5ae6c15b4d41fd6c5115feb7cacd3'.: No such file or directory
こんな感じ。
Macでは普通に入ったから原因が特定しづらかった。
根本の原因はnpmが古かったこと。

ここを読むとどうやら1週間くらい前に発覚したバグらしい。
「npm@2.3.0で治すから!」って言っていて、報告者もfixを確認したらしいのでnpmをアップデートした。

ところが、やっぱり入らない。
何でやと思って、
apm -v
してみると、
PS C:\Users\> apm -v
apm  0.123.0
npm  2.1.18
node 0.10.35
python 2.7.6
git 1.8.1.msysgit.1
visual studio
こんな表示が。
apmはシステムのnpmとは別に独自にnpmを持っているらしい。

ならば、ということで、npmを差し替えた。
node.jsのインストールフォルダの
nodejs\node_modules\npm

ユーザフォルダ\AppData\Local\atom\app-version\resources\app\apm\node_moduelsへコピーした。

たぶん待ってたら数日後とかにapmがアップデートされてnpm@2.3がそのうち入ると思うので、それまでの応急策に。
(あと正当にapmのnpmをアップデートする方法があるのかも知れない)

Windowsではnpmのアップデートに手こずることもあるが、公式のここをみればやりかたが書いてある。