マイクラPC始めました
今更マイクラのPCを始めました。
前までPEやってたんですが、煩わしくなって今更PCに乗り換えです。
とりあえずスクショだけ。
木と小麦を育てるエリア
牧場予定地
船着場(入水前)
船着場(入水後)
早く寝床をどうにかせねば・・・・
オフラインでもChatOpsしたい!Dockerで解決しよう!
経緯
ざっくり言うと、ChatOpsしたい!けどネットワークに制約がある!なのでDockerで必要なものを用意してイメージを持ち込もう!という経緯です。
入れるもの
Restyaboard
Trelloのクローンです。
プロジェクト管理でRedmineを使ってましたが、カンバンを使いたく、かといってRedmineのカンバンがあるけどもRedmineは個人的に今後の展望にwktkしなかったので流行ってるTrello!・・・を使えないからそのクローンのRestyaboardを使ってみようという経緯です。
Rocket Chat
Slackのクローンです。
最初はLet's Chatを使ってました。
すごくシンプルで、かつオシャンティなので浸透も早かったです。ただ問題点が、アバター画像がgravatarで外部接続が必要で、こちらの記事を参考に手を加える必要がありました。アップデートする度に手を加えるのも辛いし、もっといいのないかと探してたら見つけたのがRocket Chatです。
高機能なのですが、浸透するのに逆に足かせになりそうだなと思いつつ、WebRTCでのビデオ通話ができるという点が大きくメリットで切り替えるようにしました。
Hubot
Gitlabなどと連携させるためにBOTとしてHubotもいれます。
Jenkins2
Jenkinsがメジャーバージョンアップしました!(パチパチー!)
よく使われるプラグインがデフォルトで同梱されるようになったらしいので、せっかくだし2でいこう!という経緯です。
その他
コード解析用にSonarQubeと、ナレッジベース用にLodgeかなにか・・・を入れようと思ってます。
Docker Compose
Docker Composeで入れることができます。
各OSSがオフィシャルで公開しているものを組み合わせて1つのComposeファイルにします。
docker-compose.ymlファイル
data: image: busybox volumes: - /usr/share/elasticsearch/data - /var/lib/postgresql/data - /usr/share/nginx/html/media - /srv/docker/jenkins/jenkins:/var/jenkins_home - /srv/docker/mongodb:/var/lib/mongodb command: tail -f /dev/null restart: always # ElasticSearch elasticsearch: image: elasticsearch volumes_from: - data restart: always # PostgreSQL postgres: image: postgres environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: something ports: - "5432:5432" volumes_from: - data restart: always # RestyaBoard restyaboard: build: . links: - elasticsearch:elasticsearch - postgres:postgres volumes_from: - data ports: - "1234:80" restart: always # Rocket Chat rocketchat: image: rocketchat/rocket.chat environment: - MONGO_URL=mongodb://mongodb/rocketchat - ROOT_URL=http://localhost:80 ports: - "1235:3000" links: - mongodb # MongoDB mongodb: image: mongo ports: - 27017 volumes_from: - data # Hubot hubot: image: rocketchat/hubot-rocketchat links: - rocketchat:rocketchat environment: - ROCKETCHAT_URL=rocketchat:3000 - ROCKETCHAT_ROOM=GENERAL - ROCKETCHAT_USER=bot - ROCKETCHAT_PASSWORD=bot - BOT_NAME=bot - EXTERNAL_SCRIPTS=hubot-pugme,hubot-help # Jenkins jenkins: restart: always image: jenkins:latest environment: - JENKINS_OPTS=--prefix=/jenkins volumes_from: - data ports: - "1236:8080"
Restyaboard用に必要な以下のファイルはGithubから持ってきて同じフォルダにおいておきます。 * docker-entrypoint.sh * Dockerfile
Docker Composeを利用するうえで、よく利用するコマンドをメモとして残しておきます。
// Composeで起動中のイメージを確認 # docker-compose ps // Dockerfileをビルドします # docker-compose build // デーモン状態で起動します # docker-compose up -d
Mecabの辞書のパスを登録
ちょっと前の記事でMecabのオリジナル辞書を作成してみたという記事を書いてました。
今回辞書をちゃんと登録しておきたいと思い調べた内容を記載します。
環境
前回のおさらい
オリジナルの辞書を以下の通り作成していました。
mecabrc
mecabrcにDicファイルをユーザー辞書として登録します。
私の環境では以下にありました。
/usr/local/Cellar/mecab/0.996/etc
開くと以下のような感じ
; ; Configuration file of MeCab ; ; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $; ; dicdir = /usr/local/Cellar/mecab/0.996/lib/mecab/dic/ipadic ; userdic = /home/foo/bar/user.dic ; output-format-type = wakati ; input-buffer-size = 8192 ; node-format = %m\n ; bos-format = %S\n ; eos-format = EOS\n
この中の
; userdic = /home/foo/bar/user.dic
を
userdic = /Users/hogeeeee/work/ruby/dicAdd/custom.dic `` とします。
summpyを使って文章を要約してみる(今北産業)
文章の要約をしたいなーって思って前にマルコフ連鎖やらいろいろ調べてて、その熱が冷めた今頃簡単にできるぞって情報を得たので試してみました。
Github上のソースは以下から
リクルートテクノロジーズの大杉さんと広島市立大学修士2回生の飯沼さんが作られたようです。
あざまっす!
環境
Mecabの導入については以前の記事を参考にしてください。
導入
GithubのREADMEを見るとPython2.7〜だそうで、手元のMacの中に入ってるバージョンを見てみると問題なかったです。
初めてPythonだなーと思い見てたら、Pythonにもパッケージ管理としてpipというのがあるようです。
※Rubyでいうgemですかね。
さっそくpipを使えるようにしてsummpyを入れてみました。
sudo easy_install pip sudo pip install summpy
READMEに以下でWEBサーバーとして起動してcurlで実行できるとありますのでやってみます。
pip install summpy python -m summpy.server -h 127.0.0.1 -p 8080 curl http://127.0.0.1:8080/summarize\?sent_limit\=3\&text\=要約したい文章を入力。
エラーでました。。
ImportError: No module named janome.tokenizer
READMEをもう一度読み返してみると以下が必要とのことです。
※読み落としてました。。
pipで入れることができるそうなので、まずはpipで既に何が入っているか確認してみます。
# pip freeze altgraph==0.10.2 bdist-mpkg==0.5.0 bonjour-py==0.3 CherryPy==4.0.0 decorator==4.0.6 macholib==1.5.1 matplotlib==1.3.1 modulegraph==0.10.4 networkx==1.10 numpy==1.8.0rc1 py2app==0.7.3 pyobjc-core==2.5.1 pyobjc-framework-Accounts==2.5.1 pyobjc-framework-AddressBook==2.5.1 pyobjc-framework-AppleScriptKit==2.5.1 pyobjc-framework-AppleScriptObjC==2.5.1 pyobjc-framework-Automator==2.5.1 pyobjc-framework-CFNetwork==2.5.1 pyobjc-framework-Cocoa==2.5.1 pyobjc-framework-Collaboration==2.5.1 pyobjc-framework-CoreData==2.5.1 pyobjc-framework-CoreLocation==2.5.1 pyobjc-framework-CoreText==2.5.1 pyobjc-framework-DictionaryServices==2.5.1 pyobjc-framework-EventKit==2.5.1 pyobjc-framework-ExceptionHandling==2.5.1 pyobjc-framework-FSEvents==2.5.1 pyobjc-framework-InputMethodKit==2.5.1 pyobjc-framework-InstallerPlugins==2.5.1 pyobjc-framework-InstantMessage==2.5.1 pyobjc-framework-LatentSemanticMapping==2.5.1 pyobjc-framework-LaunchServices==2.5.1 pyobjc-framework-Message==2.5.1 pyobjc-framework-OpenDirectory==2.5.1 pyobjc-framework-PreferencePanes==2.5.1 pyobjc-framework-PubSub==2.5.1 pyobjc-framework-QTKit==2.5.1 pyobjc-framework-Quartz==2.5.1 pyobjc-framework-ScreenSaver==2.5.1 pyobjc-framework-ScriptingBridge==2.5.1 pyobjc-framework-SearchKit==2.5.1 pyobjc-framework-ServiceManagement==2.5.1 pyobjc-framework-Social==2.5.1 pyobjc-framework-SyncServices==2.5.1 pyobjc-framework-SystemConfiguration==2.5.1 pyobjc-framework-WebKit==2.5.1 pyOpenSSL==0.13.1 pyparsing==2.0.1 python-dateutil==1.5 pytz==2013.7 scikit-learn==0.17 scipy==0.13.0b1 six==1.4.1 summpy==0.2.1 Twisted==13.2.0 xattr==0.6.4 zope.interface==4.1.1
MecabをPythonで実行するためのモジュールがないようなので追加します。
sudo pip install mecab-python3
ちなみにGithub上のリポジトリは以下です。
cookpadの方のようですね。いつもTechブログ読ませていただいてます。
無事必要なものがそろったので先ほどのWEBサーバー起動+curlで実行を試してみましょう。
要約を試す記事は以下です。
記事の選定が単純にGoogleニュースのトップだったからです。
実行
# python -m summpy.server -h 127.0.0.1 -p 8080 # curl http://127.0.0.1:8080/summarize\?sent_limit\=3\&text\=NHKは11日、塚本堅一アナウンサー(37)が危険ドラッグを所持していたとして、厚生労働省関東信越厚生局麻薬取締部に医薬品医療機器法違反の疑いで10日に逮捕された、と発表した。麻薬取締部によると、塚本容疑者は容疑を認めているという。逮捕容疑は、10日、自宅で危険ドラッグを所持していたというもの。同部は自分で使用する目的だったとみている。NHKの説明では、塚本容疑者は2003年入局。京都放送局などを経て、15年2月から東京のアナウンス室所属。「ニュース シブ5時」でリポーターを務めていた。NHKは「職員が逮捕されたことは遺憾であり、視聴者の皆様や関係者に深くおわびいたします。事実関係を調べたうえで厳正に対処します」とコメントを出した
結果
{ "debug_info": {}, "summary": [ "NHKは11日、塚本堅一アナウンサー(37)が危険ドラッグを所持していたとして、厚生労働省関東信越厚生局麻薬取締部に医薬品医療機器法違反の疑いで10日に逮捕された、と発表した。", "麻薬取締部によると、塚本容疑者は容疑を認めているという。", "NHKの説明では、塚本容疑者は2003年入局。" ] }
動きましたー!
結果としては文から単語に分解してというよりは、重要文抽出のような印象ですね。
RSSをクロールして、記事取得して、summpyで要約してDBに突っ込んでRubyでAPIサーバー起動してフロントエンドから取得するという流れが出来そうです。いいすねー!
追記
WEBサーバーを起動して以下にアクセスしたら簡単な入力画面が表示されますね。便利!
他の方々が試したという記事
OpenCV3.1をOSXでJava(Eclipse)で実行する
OpenCV3をMacで使おうと思ったらかなり苦労したのでメモしておきます。
最初OpenCV3をGitでチェックアウトして使おうと思ったら迷走しました。
Windowsであればexeを実行してすぐ使える状態なんですが、Macだと苦労・・・
結局Homebrewで入れたんですが、それでも一曲あったので実行できるまでの流れをメモしておきます。
環境
1.OpenCV3.1を入れる
※Homebrewが使えることを前提に進めます。
brew tap homebrew/science brew install opencv3 --with-java
--with-java
でjarが用意されます。
最初この指定を忘れていて、用意されなかったので一旦アンインストールしました。
brew uninstall opencv3
その後再度installしようとすると以下のエラーがでました。
Error: You must `brew link eigen libpng libtiff ilmbase openexr numpy` before homebrew/science/opencv3 can be installed
brew linkしろって言ってるので言われてる通りしてみます。
brew link libtiff ilmbase openexr numpy
するとまたエラー。。。
Error: Could not symlink lib/pkgconfig/libtiff-4.pc /usr/local/lib/pkgconfig is not writable.
権限の問題なので付与します。
sudo chmod g+w include/
無事インストールできたら以下のような構成になると思います。
/usr/local/Cellar/opencv3/3.1.0_1/share/OpenCV/java/
- libopencv_java310.so
- opencv-310.jar
これでOpenCVの用意は完了です。
次はEclipseで使えるようにしましょう。
Eclipseにライブラリを取り込む
Eclipseで新しいJavaプロジェクトを作成して、ライブラリを単純に追加というわけではなく、jarを追加したあと、ネイティブライブラリとして追加する必要があります。
そこら辺の記述はググればいっぱいでてきますが、日本語で説明している記事見つけたのでリンク貼って割愛します。
JavaでOpenCVのインストール・eclipseの設定など(Mac OSX) | takuroYONEZAWA
※記事では2.4.4ですが、3.1.0に読み替えてください。
追加するjarのパスは上記でも説明したとおり以下です。 * /usr/local/Cellar/opencv3/3.1.0_1/share/OpenCV/java/opencv-310.jar
で、問題のネイティブライブラリですが、作成されたファイルはlibopencv_java310.so
です。
Macでの実行なので、拡張子を変更してlibopencv_java310.dylib
にします。
よってネイティブライブラリのパスは以下です。 * /usr/local/Cellar/opencv3/3.1.0_1/share/OpenCV/java/libopencv_java310.dylib
OpenCVでいうHelloWorld
「OpenCV java」とググるとよく見るサンプルのコードを実行することで、動作が正しく動くかの確認ができるようです。
import org.opencv.core.Core; import org.opencv.core.CvType; import org.opencv.core.Mat; public class Hello { public static void main(String[] args) { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); Mat m = Mat.eye(3, 3, CvType.CV_8UC1); System.out.println("m = " + m.dump()); } }
実行結果
m = [ 1, 0, 0;
0, 1, 0;
0, 0, 1]
うまくいくと上記のような結果が表示されます。
ネイティブライブラリのパスが正しく書かれているかは以下で確認できます。
System.out.println(System.getProperty("java.library.path"));
とりあえず今日は動くところまで!
以上ですー。