サナギわさわさ.json

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

Java→Kotlin変換時のハマりポイント (potatotips #53)

potatotips#53 のAndroidブログまとめ枠で参加させていただきました。 初参加でしたがどの発表もクオリティが高く楽しかったです。次に参加する時は自分もLTしたい。 全発表を議事録的にまとめようかと思っていたのですが、当日の夜にはすでにまとめられてい…

メンタリングと心理的安全性「エンジニアリング組織論への招待 - 第2章 - 」

先日「エンジニアリング組織論への招待」の第1章についての感想を書きましたが、今回は第2章について書きます。 kakakazuma.hatenablog.com 第2章はメンタリングがテーマです。メンタリングという用語自体は最近良く聞くものではありますが、その詳しい手法…

スタートアップでの経験から読み解く「エンジニアリング組織論への招待 - 第1章 - 」

お久しぶりです。前職を辞めて株式会社GlobeeのCTOになってから約10ヶ月が経ちますが、本当に色々な事がありました。 前職でエンジニアをやっていた時に私が解いていた課題は 大規模データ収集基盤を低コストで安定運用するためのアーキテクチャ設計 大規模…

「快感回路」を読んだ

最近インプットが減っていて良くないと思ったので、色々な所で紹介されていた「快感回路」という本を読みました。 快感回路---なぜ気持ちいいのか なぜやめられないのか (河出文庫)作者: デイヴィッド・J・リンデン,岩坂彰出版社/メーカー: 河出書房新社発売…

iOS/Androidの同時開発を高速化する設計手法について

明けましておめでとうございます。今年もよろしくお願い致します。 弊社では現在abceed analyticsというアプリを開発していますが、iOS/Androidのアプリを両方作る際の開発工数を削減したいというのは人類共通の課題かと思います。 そこで今回は、弊社がアプ…

BDD(振る舞い駆動開発)に則った自動テストでiOSアプリの開発速度を高める

この記事はiOS2 Advent Calendar 2017の8日目の記事です。 私事で恐縮ですが数ヶ月前に株式会社Globeeという会社のCTOに就任しまして、今はabceed analyticsという教育系アプリを開発しています。前職ではHadoop系を活用したログ収集基盤やログ解析基盤を担…

UdacityのDeep Learning Nanodegree Foundationを修了しました

UdacityのDeep Learning Nanodegree Foundationを修了しました。受講期間は約4ヶ月でした。 Deep Learning Nanodegree Foundation | Udacity 主な学習内容 numpyでの多層パーセプロトン実装(これ以降は全てTensorFlow) 畳み込みニューラルネットによる画像分…

Udacityのディープラーニングのナノ学位基礎コースを受講します

ネットサーフィンしてたらUdacityがディープラーニングのナノ学位基礎コースを立ち上げ、399ドルで志願者全員入学の記事を見つけたので、受講してみることにしました。 ディープラーニングの基礎の基礎ぐらいは分かっていると思うのですが、どうも具体的なア…

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

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

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

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

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

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

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

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

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書きたい...

Amazon ElastiCacheのchunk_sizeとEvictionではまった件

今更ですが今シーズンはヤクルトが優勝したので嬉しいです。記念に人の画像を全部畠山っぽくしてくれるフィルタを作りたいところです。 Unused MemoryがいっぱいなのにEvictions発生 本題です。この前Amazon ElastiCache(Memcached)にバッチでデータをロード…

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を作成し…