Apache Solr 3.3.0 で日本語検索できるようになるまでにしたこと

これからはSolrを使って全文検索サービスの時代だということで、Solrをダウンロードしてきてサンプルアプリケーションで日本語が扱えるようにしました。 調べつつやっているのでもしかしたら間違っていることを言ってるかもしれません。 Apache Solr 3.3.0の…

Amazon HPC NIGHTにいってきた

Amazon HPC NIGHTに行ってきました。正直HPCなんて使う機会ないのでいまいちピンときてなかったのですが、話を聞いてるとなかなか興味深かったです。 中でも印象に残ったのは次のこと。Amazon CTOのヴァーナー氏曰く、大規模データ処理は以下の流れに行き着…

LinuxにOracleのJDKをインストールしたときのメモ

Linux(OpenSUSE 11.4 64bit)にOracleのJDKをインストールしたときのメモ。 インストール http://java.sun.com/javase/ja/6/download.html からJDKをダウンロードする。 $ chmod +x jdk-6u24-linux-x64-rpm.bin $ sudo ./jdk-6u24-linux-x64-rpm.bin $ # 途中…

AmazonEC2のオンデマンド利用料金まとめ #jawsug

どのリージョンのどのインスタンスを1ヶ月使うといくらかかるのかなーとか、いちいち調べるのも計算するのも面倒なので表にまとめました。 http://aws.amazon.com/jp/ec2/pricing/ の情報を元に作成しています。 1時間あたりの料金(ドル) Linux/Unix us-…

#sakuTextMining twitterのストリーミングAPIをTSVに変換するプログラムを書いた

第3回 さくさくテキストマイニング勉強会に参加してきました。会場には個人的にツイートを集めている人が多くいたので、テキストマイニング初心者の僕もRubyでプログラムを書いてツイートを集めることにしました。 とりあえずストリーミングAPIというか、jso…

MySQLの変数が便利そう

ちょっと使ってみただけなので何も知らないけど、忘れないようにメモ。次のSQLで1〜100までの連番がhogeにインサートされる。 set @i = 0; insert into hoge(a) select @i := @i+1 from hoge where @i < 100; 他にもselectの結果を持ったりできるらしいので…

WebSocketとCanvasでオンライン対戦オセロを作ろう 第2回 全体の設計

WebSocketとCanvasでオンライン対戦オセロを作ろう企画第2回を社内の勉強会で発表しました。その時に使用したスライドを公開します。 スライド WebSocketとCanvasでオンライン対戦オセロを作ろう 第2回 全体の設計 View more presentations from Matsuoka To…

AmazonSQSを簡単に使えるライブラリを書いたので使い方とか #jawsug

うちの会社ではAmazon SQSをバリバリ使ってるんですが、巷では全然流行ってないらしいので、簡単に扱えるライブラリを書きました。javaのBlockingQueueインターフェースを実装しているので、普段使っているQueueと差し替えることで簡単にSQSを利用することが…

深さ優先探索と幅優先探索の簡単な実装方法

深さ優先探索と幅優先探索は、実は簡単に実装することができます。次のインターフェースを実装したクラスで例を見ていきます。 interface Node { public String getName(); public List<Node> getChildren(); } 深さ優先探索 深さ優先探索は以下の手順で実装できま</node>…

WebSocketとCanvasでオンライン対戦オセロを作ろう 第1回 基礎の基礎

社内勉強会でWebSocketを使ってなにかやろうとして始めた企画。 以下の流れで進めてオンライン対戦オセロを実装していく予定です。 全5回、2週間間隔で進めます。 基礎の基礎 全体の設計 クライアントの設計&実装 サーバの設計&実装 デモ&まとめ スライド…

JavaScriptを簡単に記述できるCoffeeScriptの試し方

CoffeeScriptはRubyやPythonに似た書き方でJavaScriptをかけるようにするツールです。これからnode.jsやらWebSocketやらで遊ぼうと思っているので、JavaScriptが必須になってきます。それがRubyっぽく書けるって言うのであれば試さない理由はありません。早…

node.js+WebSocketのHelloWorld #nodejs_jp

昨日、node.jsとnpmをインストールしたので、WebSocketで遊んでみました。 websocket-serverのインストール npmでwebsocket-serverをインストールします。 $ npm install websocket-server サーバー側 入力された文字列を大文字にして返しす簡単なお仕事です…

node.jsのパッケージ管理ツールnpmをインストールしたときのメモ

Rubyでいうgemみたいなやつですね。node.js自体のインストールはこちら。 設定ファイルを作っておく 予めHOMEディレクトリに.npmrcという名前で設定ファイルを作っておきます。 # ~/.npmrc root = ~/.npm/libraries binroot = ~/.npm/bin manroot = ~/.npm/m…

AmazonLinuxにnode.jsをインストールしたときのメモ [15:00 追記]

AmazonEC2のAmazon Linuxにnode.jsをインストールしたときのメモです。参考:http://www.embracingthecloud.com/2010/12/05/InstallingNodejsOnAmazonEC2.aspx 必要なモジュールをインストールする $ sudo yum install -y gcc-c++ $ sudo yum install -y mak…

tapメソッドが便利すぎる件

Object#tapが便利すぎるのでメモ。 メソッドチェインの途中経過をprint Rubyで理解するMapReduceで書いたコードも、わざわざ分解することなく途中経過をprintすることができます。 p input_data.map{|d| d[/GET (.+?) /, 1]}.tap{|d| p d}. group_by{|d| d}.…

Rubyで理解するMapReduce

MapReduceの勉強と練習をかねてRubyでそれらしいことを書いてみます。 間違ったことをしてるかもしれないので、詳しい人がツッコミを入れてくれると嬉しいです。ruby 1.8.7で動作を確認しています。 テーマ Apacheのログっぽいデータを分析して、それぞれの…

sdbtoolをFirefox4にインストールする #jawsug

AmazonSimpleDBを操作するfirefoxプラグインのsdbtoolを、Firefox4にインストールする方法です。公式にサポートされた方法じゃないから動かない機能とかあるかも。とりあえず、今使ってる分には動いてるので書いておきます。以下の手順で操作します。 ソース…

RubyでGmailに届いたメールのメールアドレスを取得する

id:tottokugさんが地震情報をメールで配信するサービスを始めました。 http://d.hatena.ne.jp/tottokug/20110313/1300041440ただ、以下の欠点があるようです。 ーメールアドレスの登録は手での登録となってしまっていますので、 まずはメールいただいた方だ…

動的計画法でフィボナッチ数を求める

動的計画法でフィボナッチ数を求めるコードをRubyで書きました。 以下のプログラムの計算量はO(n)です。 n = 100 puts (1..n).inject([1,0]){|a,b| [a[1], a[0]+a[1]] }.last # => 354224848179261915075

階乗を高速に求める

なにやらid:nise_nabeさんが階乗を高速に求めるプログラムを掘り出していたので、Rubyで書きなおしてみました。何をやってるのかさっぱりなので、ほとんど写経です。 class Integer def factorial return 1 if self < 2 @n, p, r = 1, 1, 1 log = self.log2n…

SRM 497 DIV2

金曜日にあったSRM。 250 Filtering 問題:http://www.topcoder.com/stat?c=problem_statement&pm=11323&rd=14426 public class Filtering { public int[] designFilter(int[] sizes, String outcome) { int min = 100; int max = 1; for(int i=0; i

SRM 496 DIV2

250 AnagramFree 問題読まずにテストケースから判断しました。 なんかあってたのでよし。 import java.util.Set; import java.util.HashSet; import java.util.Arrays; public class AnagramFree { public int getMaximumSubset(String[] s) { Set<String> subsets =</string>…

SRM 494 Div2

250 InterestingParty 与えられた単語の集合から一番多く出現した単語の出現回数を求めよ。と理解。 firstとsecondがありますが、どちらも同じように扱ってよさそうでした。 なんか読み返してみるといろいろ直したくなりますね。 まあSystem Testは通過した…

二部グラフ判定問題をJavaで

プログラミングコンテストチャレンジブックのP93から書いてある「二部グラフ判定」をJavaで書いてみました。問題はこちら ■ 2部グラフ判定問題 頂点数nの無向グラフが与えられます。隣接している頂点同士が違う色になるように、頂点に色を塗っていきます。 2…

クラスカル法をJavaでリッチに書いたら遅かった。

id:nise_nabeさんがクラスカル法のコードを書いてたので、僕も書いて見ました。 「SRM492 時をかけるセールスマン」が解けたので多分合ってると思います。長いのでideoneに貼ってます。 http://ideone.com/3vtvW実行速度はid:nise_nabeさんのやつの2倍弱くら…

Topcoder SRM開催日時取得プログラム

id:nise_nabeさんがSRMの開催日時を取ってくるプログラムをJavaで書いていたので、Rubyで書くとこうなるよってのを書いてみました。 RubyのMechanizeというライブラリを使っています。 #!/usr/bin/ruby require 'rubygems' require 'mechanize' class SRM at…

zipメソッドが便利

どういうときに使うんだと思ってたんですけど、便利さに気づいたのでメモ。 2つ(以上)の配列の内容を同時に参照したい時、(a)みたいに書いていました。 zipメソッドを使うと(b)のように書けます。 aryA = [1,2,3,4,5] aryB = [6,7,8,9,10] # (a) aryA.each_i…

多重代入のすすめ

Rubyの多重代入がすごく便利です。 多重代入と配列操作を覚えたらもうRubyを手放せなくなります。 以下にちょっとだけ紹介します。 # 基本 a, b = 1, 2 # => a = 1, b = 2 # swapする a, b = b, a # => a = 2, b = 1 # 先頭の要素と、残りの配列に分ける car…

AOJ 0000-0004

AOJ

Aizu Online Judgeという物を始めたので、成果物を晒していきます。[9/14追記]ideone.comという物があったので、今度からここで公開します。0000 QQpackage vol0.p0000;public class Main { public static void main(String[] args) { for(int i=1; i for(in…

JavaのExecutorが便利

JDK5.0からjava.util.concurrentパッケージが追加され、マルチスレッドのサポートが強化されたようです。このパッケージに含まれるExecutorを使用すると、WorkerThreadパターンの実装がすごく簡単になります。サンプルpackage net.mrdad.blog.samples.multit…