2012-12-14

Machine Learning Advent Calendar 2012 の 14 日目の記事になります。気まぐれでこのカレンダー登録してみたものの、この日に至るまでの数々の記事のガチな高レベルさに登録してしまったことをかなり後悔している @komiya_atsushi です。 この記事では、オンライン学習アルゴリズムの AROW...

2012-11-29

難しい手順ではないのだけれど、ちょっとはまったことがあったので未来の自分のためにメモを残しておきます。 手順 play new で Play framework のアプリを作成する ./conf/dependencies.yml に Twitter4J を利用する旨を記述する play dependencies で依存ライブラリを ./lib に配置する $ play eclipsify で Eclipse 上で開発可能な状態にする javaee-api-5.0-x.jar をビルドパスから取り除く 「2. ./conf/dependencies.yml に Twitter4J を利用する旨を記述する」について 以下のように、Twitter4J に対する依存を記述すれば OK。Twitter4J の jar ファイルをダウンロードして特定ディレクトリに配置… みたいなことをする必要はありません。 #...

2012-11-17

2013.06.08 追記:JDBC 接続文字列で characterEncoding / connectionCollation を指定すると思った通りの挙動をしてくれないようなので、別の方法 (多分これが正しい方法) を記載しました。 Unicode における、こんな 感じの絵文字、いわゆる Unicode の 追加面 の文字、Java...

2012-09-30

2012/9/30(日)に開催された 第3回 データ構造と情報検索と言語処理勉強会 DSIRNLP で、最近(個人的に)注目の圧縮ライブラリ、LZ4 に関してトークしてきました。 LT という時間枠でしたので、テーマを絞って LZ4 の速さの秘密について話しましたが、秘密が盛りだくさんで話し切れず。時間をオーバーしてご迷惑をおかけしてしまいました。すみません… 発表資料は以下になります。 DSIRNLP #3 LZ4 の速さの秘密に迫ってみる from Atsushi KOMIYA 私の発表はアレですが、LZ4 を知らない方が結構多い集まりでしたので、今回の発表を機に、もっと利用が広まるといいなあと思っています。 以下、個人的な反省点です。 LT で 90 ページ超とか無理があり過ぎるのでやめよう。 もっと簡潔に話そう。 テーマを絞り込もう...

2012-08-29

Play 的に正しいと思われる解決方法が明らかになったのでメモ。Play framework 1.2.5 が対象です。また、フロントの Web サーバは nginx を想定しています。 リバースプロキシと SSL Play framework を使って開発された Web アプリケーションを本番環境で運用する場合、Play アプリの...

2012-08-17

業務システムとかを開発していると、たまにこの手の処理がしたくなるのですが、 Date date = new Date(); for (int i = 0; i < 10; i++) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.HOUR, 1); date = cal.getTime(); // ここに date オブジェクトを利用した処理が書かれる... } こんなコードを書きたくない人向けの Iterator / Iterable クラスがこちらになります。 This file contains...

2012-07-02

先月末に前職を退職したばかりですが、本日より新宿・代々木にある、とある「分析力をコアとする情報最適化企業」でエンジニアとして働き始めることになりました。新しい仲間のみなさま、これからよろしくお願いします。また、および前職でお世話になったみなさま、これから『も』よろしくお願いいたします。 転職先・仕事について 初めての転職でもあり、ゆっくり時間をかけて、次の会社を探す・・・つもりでしたが、思いのほか早く、いまの自分のやりたいこと(のひとつ)である「ビジネスに近い立ち位置での分析・データマイニング」が実現できる会社を選ぶことができました。 入社後は、まずはエンジニアリングで会社に貢献していくつもりです。データサイエンティストの方々 が、よりよくデータ解析できるように、エンジニアリング面でのサポートもしていきたいですね。幸いなことに(?)、エンジニアリングの分野には楽しそうな課題やこの先取り組んでいきたい技術などが転がっているそうなので、これからの仕事が本当に楽しみです。 もちろんエンジニアリングだけでなく、データ分析の分野にもいろいろと楽しそうな案件があるそうなので、ゆくゆくは分析力をつけて、データサイエンティストな道も狙ってみたいなあ、と、ほんのりと野望を抱いていたりします。 お礼 とてもありがたいことに、今回の退職・転職にあたって、いくつかの企業の方からお話をいただくことがありました。また、知人経由でエージェントの方をご紹介していただくこともありました。その他、勉強会などの場で、転職についてのご相談をしていただくこともありました。 実際に各社のお話を伺わせていただき、それぞれの会社の魅力を知ることで、正直、どの道に進むべきか迷った時期もありましたが、結果として「ビジネスに近い立ち位置での分析・データマイニング」「B2C...

2012-06-23

実に 1 年 4,5 ヶ月ぶり? に TokyoWebmining でトークをしてきました。今回はソーシャルグラフ(social network)における「リンク予測」と、ソーシャルグラフを利用した「レコメンデーション」の2つのネタで話をしました。 ちなみに、発表資料に載せていたソーシャルグラフは TouchGraph を使って描いています。 ソーシャルグラフを活用したレコメンデーション - レコメンデーション最前線(?) - #TokyoWebmining 19th View more presentations from Atsushi KOMIYA 以下、個人的な反省点です。 発表時間は 80 分でも足りない。100 分ぐらいの時間枠を要求しよう。 Random Walk (with Restarts) ネタを振るときは、ちゃんと説明できる準備をしよう (...

2012-06-16

lz4-ruby という、native extensions (C 拡張) を含む Ruby gem を開発していて、Linux/Windows 両方に対応した gem パッケージを作るのに苦労したので、その内容を備忘録がてらにまとめます。 gem の開発環境構築と、実際の gem 開発に分けてエントリを書く予定です。このエントリは、前者の開発環境構築についてのエントリとなります。 構築する開発環境について 今回構築する開発環境は Linux をベースとし、jeweler により gem のスケルトンを作成、mingw32/rake-compiler で Windows 向けのプリコンパイルされた native extension を作る構成になります。 以下、開発を行う OS、パッケージ、Ruby 環境、gem パッケージのそれぞれについてまとめています。 OS 後述する...

2012-06-05

(主に社員宛て)。今月 6 月末をもちまして、いま勤めている会社を退職します。 退職エントリをポストするにはまだちょっと早いですが、直接、退職の意思を伝えたい社員にはほぼ伝えきれたことと、退職するまでの間に、他の社員には意思というか真意を伝える機会がなかなかないと感じたので、このタイミングでポストします。 現職での業務 いまの会社に新卒で入社し、6 年とちょっと、お世話になりました。 数値解析業務、コンシューマ向けパッケージ製品開発・販売業務など、いろいろ手広くビジネスをしている独立系の中小企業にて、業務システム開発を担当する SIer 的な部署に所属し、入社後はずっと、エンジニアリングを軸としたお仕事をしてきました。 同部署では主として、Web 系の業務システム開発にフロントエンドからサーバサイドまで携わってきました。その一方で、とある研究所の研究者の方とご一緒に仕事をさせていただき、レコメンデーションエンジンの研究開発のお手伝いをすることもありました(自分の中で、一番思い入れのある仕事でした)。近年は...

2012-05-31

簡潔データ構造を利用したイケてる trie 実装 marisa-trie を Node.js で扱えるようにするための、誰得感溢れるモジュールを作ってみました。ソースコードと npm は以下のとおりに公開しています。 komiya-atsushi / node-marisa-trie npm registry とりあえずデモ的なことをしてみましょう ひとまず、marisa-trie のsample.cc の JavaScript 版を実行することを目標としましょう。 まずは、marisa-trie のインストールをします。 環境によっては、/usr/local/lib にインストールされた共有ライブラリが参照されなかったりするので、その場合は /etc/ld.so.conf.d/ ディレクトリあたりに /usr/local/lib ディレクトリ配下の共有ライブラリを参照させるような...

2012-04-23

とっても残念なことに、Heroku Toolbelt のインストーラが CentOS やら Scientific Linux などの RHEL クローンな OS に対応していない (Linux は Debian/Ubuntu のみサポート) らしいので、頑張って (中途半端に) 環境構築したメモを残しておきます。 ざっくり手順 gcc やら git、Ruby のビルドに必要なライブラリ (openssl-devel などなど)、ごく基本的な開発環境がすでに整っていることを前提とします。 rvm をインストールする Ruby をインストールする foreman をインストールする heroku CLI をインストールする heroku コマンドにパスを通す rvm をインストールする rvm を入れなければならない、というわけではありませんが… rvm がお好みに合わないようであれば、rbenv...

2012-02-16

Eclipse を使って開発した Play のアプリケーションを Eclipse 上でデバッグしようとすると、Play アプリケーションのプロセスとデバッガの連携に失敗する問題に遭遇することがあったりします。このエントリでは、その一つの原因と対処法について解説します。 現象 今回対象とする事象は、公式に書かれている内容 に従ってデバッグ手順を進めていて、Connect...

2012-01-14

Play framework を扱う案件に最近携わっていて、いろいろとドキュメントにないノウハウが溜まりつつあるのでここらでメモ書きしておきます。 Play framework とトランザクション Play framework では、HTTP リクエストはもちろんのこと、非同期ジョブにおいてもトランザクションが自動的に提供されます。通常の業務であれば、1つの HTTP リクエスト処理・非同期ジョブに1つのトランザクションがあればそれで十分ですが、ちょっと込み入ったことをやろうとすると、例えば 監査用の操作ログ・クエリログをテーブルに出力したい →コミットされるタイミングは後でもいいんだけど、本流の処理で転けてロールバックかけた場合に、操作ログまでなかったことになるのは避けたい。 非同期ジョブなどで、ジョブ管理テーブルを随時監視・更新したい →本流の処理のトランザクションはコミットしたくないけど、ジョブ管理テーブルへの変更は即座にコミットして反映させたい。 など、1つのトランザクションではちょっと実現が難しいこともあったりします。前者の例は、トランザクションを二つに分けたとして互いが重ならないように工夫できるでしょうが、後者はそう簡単にはいきません。互いのトランザクションが一部重なり、同時並列で存在しなければならない状況が発生し得ます。 ところで...