読者です 読者をやめる 読者になる 読者になる

サナギわさわさ.json

サナギさんとキルミーベイベーとプログラミングが好きです

独断と偏見で選ぶHDFSのファイル形式

HDFSのファイル形式を何にすべきか、というのはRPGの主人公の名前を何にすべきか、と同じぐらい皆さん悩まれるかと思います。 ご多分に漏れず僕も悩みましたので、調べた事をまとめておきます。 なお先に結論だけ言っておきますと、大体のケースではORCをZli…

re:dashでEMR上のHive・Prestoクエリを可視化する

BIツールには色々なものがありますが、今回はOSSのre:dashを使ってEMR上で実行するHive・Prestoクエリを可視化してみます。 re:dashとは re:dashはOSSのPython製可視化ツールです。Web UIからRedshift・BigQuery・MySQL・Hiveなど様々なデータソースのクエリ…

Serverless Framework V.1 Alphaのかなり丁寧なチュートリアル

サーバーレスアーキテクチャという言葉を聞くようになってしばらく経ちました。 サーバーレスアーキテクチャに関しては以下の記事が非常に綺麗なのでそちらをご覧ください。 サーバーレスアーキテクチャという技術分野についての簡単な調査 - Qiita サーバー…

Elasticsearch実運用時の注意点とアンチパターンまとめ

Elasticsearch実運用時に個人的に気をつけている点をまとめました。 自分でも整理できていない部分がありますので、間違っている点・追加した方が良い点などありましたら教えていただけると非常に助かります。 目次 目次 インデックス・スキーマ設定 スキー…

Swift2のProtocol Extensionsとクラス継承を比較する

クラス継承で処理を共通化していた時は仕様変更のたびに親クラスが肥大化したり、子クラスの挙動が親クラスに依存して分かりにくくなったりするのが辛かったが、Protocol Extensionsでは複数のProtocolを使って実装を共通化できるので見通しが良くなりそう …

PlayFrameworkをただの静的型付けMVCだと思って本番稼動させると死ぬ

(3/15 : タイトル修正しました。wは小文字ですね、すみません・・・) PlayFrameworkが流行り始めてから割と経ちますので、そろそろ正式採用しようと考える方も多いのではないかと思います。 強力な静的型付けで守られたPlayは、ミッションクリティカルなシス…

Play2のPromiseと非同期処理について調査した

PlayFrameWorkはイベント駆動型を基本としているため、全ての処理は非同期で実行される事が前提となっています。 これによって単一スレッドで複数のリクエストを捌く事ができます。 非同期のHTTP呼び出しを実現するPlay WS APIを使って外部のWebサイトにアク…

CentOS6.6にApache Zeppelinを入れてチュートリアルをやる

明けましておめでとうございます。山田哲人が野球盤でチェンジアップを上手く拾ってヒットにしていたので今年も良い一年になりそうです。 今回はApache Zeppelinを試してみようと思います。 http://zeppelin-project.org/ Apache Zeppelinについて Apache Sp…

PlayのFormバリデーションをネストされたパラメータに適用する

PlayのFormでバリデーションするのは楽です。 ネストされたパラメータに適用する際は、頭に@Validをつける必要があります。 Validation Constraints with nested objects in play ... 以上です。来年こそScalaでPlay書きたい...

Sparkでjarファイルからプログラムを実行する

前回 でSparkの擬似分散環境構築とインタラクティブシェル上からのプログラム実行まで行ったので、今回はjarファイルからのプログラム実行を行います。 環境 CentOS6.6 CDH 5 IntelliJ IDEA 14 参考サイト http://qiita.com/imaifactory/items/823caa3363919…

CentOS+CDH5でSparkの擬似分散環境を作る

日本シリーズが終わってしまったのでSparkをやります。今年中に何とかSparkを実用できるところまで持って行きたいです。 参考サイト http://dmtolpeko.com/2015/02/06/installing-and-running-spark-on-yarn/ http://datasciesotist.hatenablog.jp/entry/201…

CentOSにgensimを入れてWord2Vecを試す

超今更で恐縮ですがWord2Vecを試してみたくなりました。常に流行から2年ぐらい遅れてる気がします。キルミーベイベーの存在にもアニメ放映時に初めて気付いたぐらいです。 手軽そうなので、gensim上で動かします。gensimは自然言語処理系のモデルがいっぱい…

Apache Sparkについてのメモ

大規模バッチ処理が必要になったので、名前だけ聞いた事はあっても詳細を知らなかったApache Sparkについて簡単に調べました。 参考サイト http://spark.apache.org/talks/overview.pdf Apache Sparkってどんなものか見てみる(その1 - 夢とガラクタの集積…

協調フィルタリングのメモ

レコメンドエンジンを作りたくなったので、協調フィルタリングについて簡単に調べました。今回はメモリベースの協調フィルタリングにのみ言及します。数学的な式などは省いており、概念的なメモだけです。 参考リンク: http://japan.zdnet.com/web/sp_08ec/…

ElasticSearchの良く使うcurlコマンドまとめ

ElasticSearchの良く使うcurlコマンドをまとめました。良かったら使ってください。 コマンドの詳細な説明は書いていませんが、キーワードで調べればすぐ分かるかと思います。 データ投入系 スキーマの登録 curl -XPOST http://localhost:9200/testindex -d @…

ElasticSearchのAggregationをJavaで書く

ElasticSearchには1.0.0からAggregationという機能が導入されました。SQLで言うSumやGroup Byを簡単に行える機能です。詳しくは公式サイト見てください。 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html Aggreg…

ElasticSearchのfield data cacheについて

ElasticSearchをしばらく運用してみて、いくつかノウハウがたまってきたので残しておきます。 Solrを使う事が多かったので最初は慣れなかったんですが、公式のドキュメントがSolrより充実しているしクエリがJsonベースで組みやすいので結構使いやすい気がし…

JavaのHashMapの値をソートして列挙する

JavaのHashMapから列挙する時は、 for (Long key : targetMap.keySet()) { } ですが、 List<Long> sortedKeys = new ArrayList(targetMap.keySet()); Collections.sort(sortedKeys); for (Long key : sortedKeys) { } とすると手軽にソートして列挙できます。 小ネ</long>…

OpenRestyとTorch7でREST APIを作る

前回の続きですが、Torchのインストール先を/usr/localに変更した都合上、Torchのインストールからやり直しています。 Vagrant上のUbuntuでTorch7のCPU開発環境を作る - サナギわさわさ.jsonkakakazuma.hatenablog.com Torchをインストール 今回はOpenResty…

CentOS6.6にOpenRestyをインストールする

OpenRestyはnginxの拡張で、Luaを動かせるようになります。 インストール $ wget http://openresty.org/download/ngx_openresty-1.7.10.1.tar.gz $ tar xzvf ngx_openresty-1.7.10.1.tar.gz $ cd ngx_openresty-1.7.10.1 $ sudo yum install pcre* $ sudo yu…

Vagrant上のUbuntuでTorch7のCPU開発環境を作る

男もすなるTorch7といふものを、女もしてみむとてするなり。 まずはVagrant上にUbuntuを立てて開発環境を作ります。 Vagrant上ではGPUは使えませんが、あくまで体験版という事で。あと私は男です。 インストール〜開発環境構築まで UbuntuのVagrantを作成し…

PlayFrameworkをSupervisorを使いながらデプロイする

普段は肉と魚が好きですが、ピオーネ食べてる時だけはベジタリアンになっても良い気持ちになります。 今回は掲題の通り、PlayFrameworkのデプロイをSupervisorを使いつつやった手順を残します。 本当はFabricも使いたかったです。環境はCentOS6.4 + Play2.3…

NavigationControllerのPushAnimationが引っかかる問題

swiftオープンソース化という事でそろそろやってみようと思ったんですが、 self.navigationController?.pushViewController(vc, animated: true) と書いた時に、遷移アニメーションが途中で引っかかる問題が発生しました。 色々調べてみると、 objective c -…

OpenRestyのngx.req.get_body_dataがnilになる問題

夏なのでOpenRestyを始めました。 Postで送られてくるデータを元に色々するためにngx.req.get_body_data()を使っていたのですが、 返り値がちょくちょくnilになる問題が発生しました。 ちょっと調べてみたところ、データサイズがclient_body_buffer_size(デ…

phpでTwitterStreaming APIを取得してMySQLに突っ込む

今更感のあるテーマですが、ちょっと機会があってphpで実装することになったので残しておきます。 基本的には[PHP] ライブラリに頼らないTwitterAPI入門 - Qiitaと【php】twitter Streaming API の statuses/filter を試す at softelメモ を参考にしただけで…

nginxで権限を設定した後も403 Forbiddenが出た話

恥ずかしながらnginxまともに使ったことなかったのでCentOS7に入れて試してみたんですが、 server { listen 80 default_server; server_name localhost; root /usr/share/nginx/html; location /test { alias /var/www/html/test; } } としてhttp://localhos…

Solrで類似画像検索(LIRESolr)を導入する

ヤクルトの投手陣がやけに調子良いので、皆さんもまさかの事態に備えて乾パンや懐中電灯を買い込んでおきましょう。 今日はSolrで類似画像検索をするためにLIRESolrを導入した際の備忘録を残しておきます。 LIREというのは、画像から色やエッジベースで特徴…

Solr4.1からSolr5に移行する際の注意点

プロ野球が開幕しました。ヤクルトスワローズが延長戦で勝利するという奇跡を目の当たりにしたので昨日からずっとニヤついています。 今回はSolr4.1からSolr5にデータ移行をした際に自分が少しはまった点を参考として残しておきます。 pint,sintは使えない …

Eclipseのbuild automaticallyでPlayのbindFromRequest()が動かなくなった

「bindFromRequest() 動かない」だと何かアホっぽくて検索をためらってしまったのですが、 「bindFromRequest() not work」だと何かセーフな気がして検索できて、無事解決しました。 Play FrameWorkにはformという便利機能があって、 public class User { pu…

Tomcat7 + Solr4.10の環境構築

Solrは5.0からスタンドアロンなサーバーアプリケーションになりましたが、Tomcatの上で動かしたい時のためにTomcat7 + Solr4.10の環境構築手順を残しておきます。今回はソースからビルドします。 Solr5.0の環境構築はこちら: CentOS7にSolr5.0を入れる手順 …

CentOS7にyumでMariaDBを入れる手順

CentOS7ではMySQLの代わりにMariaDBが採用されているようなので、yumでのインストール手順を残しておきます。 インストールからサービス登録まで yum install mariadb mariadb-server vi /etc/my.cnf [mysqld] character-set-server=utf8 firewall-cmd --per…

CentOS7でphpMyAdminに403 forbiddenを出され続けた話

こんなしょうもない事で1時間ぐらいはまってました。 CentOS7で開発環境を作っていてphpMyAdminを外部からアクセス可能にしようと思い/etc/httpd/conf.d/phpMyAdmin.confを Order Deny,Allow #Deny from All Allow from All と変更してapacheを再起動したの…

CentOS7にSolr5.0を入れる手順

ユリ熊嵐面白いですよね。 CentOS7にSolr5.0を入れたので、その時の手順を残しておきます。 まず注意点として、Solr5.0ではJavaは1.7u55以上でないと正常に動きません。更にsolr.xmlの形式が変わっており、Solr4.3以前のものでは動かなくなっていることにも…

ElasticSearchのインデクシングを高速化する

諸事情でElasticSearchの事ばっかり書いてますが、Solrの方が好きです。 ElasticSearchのインデクシングを高速化するためにやった事を残しておきます。 基本的には↓に書いてあることばかりです。 Performance Considerations for Elasticsearch Indexing | E…

ElasticSearchでmlockall:trueが効かない時にチェックすること

ElasticSearchって日本語の情報少なくて辛いです。 今回はmlockall:trueの設定が効かなかった時のチェック項目を残しておきます。 mlockall:trueとは ElasticSearchは公式で「起動時にメモリを確保し、スワップしないようにする」という設定が推奨されていま…

PlayFrameWork + eclipseの開発環境構築手順

PlayFrameWorkのプロジェクトをeclipseで開発するための環境構築手順を残しておきます。 activatorになってからは非常に単純で、WindowsでもMacでも大して変わりません。 Windowsの場合 https://www.playframework.com/downloadからactivatorをダウンロード…

Friendly iFrameで広告コードを遅延読み込みする

沙村広明先生の漫画が好きなんですが、その中でも特に「ハルシオンランチ」が好きです。 ストーリーが良く出来ていて簡単に言うと女の子がゲロを吐いて世界が救われる話なんですが、その他にも読むとゲロを吐くことに対する躊躇いが無くなって、飲み過ぎた次…

ElasticSearchでビッグデータ集計を試みて困った点その1:Java APIで何回も接続に行っていたらNoNodeAvailableExceptionで落ちる

前にも書いたのですが、ElasticSearchはまだ日本語の情報が少なく、はまった時にやや面倒というのが私の所感です。ElasticSearchを使って1000万件ぐらいのデータの集計をしようと試みていくつか困った点があったので、日本語の情報が無さそうだった物だけ備…

CentOS7系へのElasticSearch導入手順

CentOS7系へのElasticSearch導入手順を残しておきます。 CentOS7系になってiptablesとか無くなってて、サナギさんが中学生だと知った時ぐらいびっくりしました。 インストールからsystemctl登録まで yum install java-1.7.0-openjdk* yum install wget wget …

ElasticSearchのデータ投入と削除の基本コマンドまとめ

オープンソースの全文検索エンジンといえばApache Solrだとずっと思っていたのですが、他にもElasticSearchというものがあって最近ではそちらが流行っているようです。 調べてみたら結構前から流行っていたようで今更知ったのは少し恥ずかしいのですが、キル…

「テキストボックスのフォーカス時に全選択状態にする」をクロスブラウザ対応

フロント開発の楽しさを定量化するとキルミーベイベー第5話ぐらいはありますが、クロスブラウザ対応となると途端にキルミーベイベー第1話ぐらいの楽しさになってしまうというのは皆さんもご存知の通りです。 「テキストボックスのフォーカス時に全選択状態に…