2011-01-01から1年間の記事一覧

ナウなヤングのsleep事情

Javaで一定時間sleepする時Thread.sleep()を使っていたんですけど、もっとナウい方法があったのでメモしておきます。 try { // レガシー極まりない5秒sleep Thread.sleep(5000); } catch(InterruptedException e) {} try { // ナウなヤングの5秒sleep TimeU…

僕はJavaのWeakHashMapを勘違いしていたというメモ

JavaにWeakHashMapというクラスがあって、僕はこれをvalueを弱参照で持てるHashMapだと思ってたんですけど、本当はkeyを弱参照で持つHashMapだったのでメモしておきます。どういうことかって言うと、僕はこんなことを期待していたわけです。 Map<String, String> m = new Wea</string,>…

百人一首でパトリシア木を作った

パトリシア木とは - Wikipedia ちはやふるのアニメが始まって、気が動転してつくった。後悔はしていない。これを頭に叩き込めばあなたも百人一首マスター? あ き かせにたなひくくものたえまより もれいつるつきのかけのさやけさ のたのかりほのいほのとま…

Amazon Elastic MapReduceで日本語のwordcountを試した時のメモ #jawsug

Amazon Elastic MapReduceで日本語のwordcountを試したので、備忘録的な意味も込めてその時のメモをまとめます。pythonで書いてますが、形態素解析のライブラリがあればどの言語でも大丈夫だと思います。 目次 Amazon Elastic MapReduce Ruby Clientインスト…

AOJ 0030 Sum of Integers

AOJ 0030 Sum of Integersです。 import java.util.Scanner; public class Main { private static Scanner s = new Scanner(System.in); public static void main(String[] args) { while (true) { int[] in = nextInput(); if (in[0] == 0 && in[1] == 0) {…

AOJ 0033 Balls

頻出典型アルゴリズムの演習問題としてよさげなやつ を上から順に解いていこう企画。最初の問題は「AOJ 0033 Balls」 深さ優先探索って書いてあったけど、これでいいのかな。 import java.util.Scanner; public class Main { private static Scanner s = new…

#jawsug Elastic MapReduceを使う前にやっとくと幸せになるかもしれない設定

Elastic MapReduceを使ってると何でもかんでもS3にアップロードさせられるので、いちいちManagementConsoleからアップロードするのは結構面倒です。ローカルにHadoopをインストールして、$HADOOP_HOME/conf/core-site.xmlに以下の設定を追加すると、HDFSのバ…

機械学習の基礎、パーセプトロンをRubyで作って学んだ

機械学習超入門III 〜機械学習の基礎、パーセプトロンを30分で作って学ぶ〜 を読んでRubyで書いてみました。以下ソースコード module MachineLearning class Perceptron attr_reader :w def initialize w={} @w = w end def predict vector_x vector_x.reduc…

JavaでUTCな時間文字列を取得する方法

Javaで"2011-09-07T00:00:00Z"みたいな文字列を作りたかったのに、タイムゾーンの設定がうまく行かなくてハマってました。DateFormatにsetTimeZoneする必要があったようです。忘れた時のためにメモを残します。 Calendar cal = Calendar.getInstance(TimeZon…

TDDBC Tokyo 1.7 for PHP #tddbc に行ってきました

8月21日に開催された TDDBC Tokyo 1.7 for PHP #tddbc に行ってきました。 テスト駆動開発(TDD)に関するid:t-wadaさんの講演やペアプロによるTDD実習など、充実した内容でした。講演の中で印象に残ったのは次の2つ テストの再分類のための視点 黄金の回転 テ…

Rubyでクールにモジュール宣言

Rubyのgrapeというモジュールのコードを読んでいたときに、かっこいいなあって思ったのでメモしておきます。grape.rbをまるまるコピペです。 require 'rack' require 'rack/builder' module Grape autoload :API, 'grape/api' autoload :Endpoint, 'grape/en…

東京リージョンのAmazonLinuxでまず最初にすること

システムの時間を日本時間に変更します。 $ # デフォルトだと9時間の時差がある $ date 2011年 8月 1日 月曜日 14:53:09 UTC $ # /etc/localtimeを置き換える $ sudo cp /usr/share/zoneinfo/Japan /etc/localtime $ # 時差がなくなる $ date 2011年 8月 1日…

Mechanize 2.0.1でUTF-8以外の文字化け対策

Mechanizeを使ってスクレイプしてるとUTF-8以外のページでうまくいかないことがあるので、その対策です。 http://blog.cles.jp/item/3416 からほとんどまるまるコピペなんですけど、2.0.1だと引数が変わってるみたいだったので対応しました。 Mechanizeをnew…

さくらのVPS開通後にやったこと - ログイン周りの整理

さくらのVPSを使い始めたので、ログイン周りを整理しました。 sshでのrootログイン禁止 公開鍵認証の有効化 パスワード認証の無効化 パスワードなしでsudo 環境 プラン:さくらのVPS 512 OS:CentOS 5 x86_64 前準備 ローカルの環境で鍵を作っておきます。 u…

RubyEE + nginx + UnicornでRedmineを動かしたときのメモ #redmine

Amazon EC2のmicroインスタンスでRedmineを動かすにはメモリが十分じゃない感じがしたので、できるだけスリムに頑張ってみた時のメモです。少人数でRedmineを使いたい時には十分じゃないかなと思ってます。 環境 Amazon EC2 microインスタンス上のAmazon Lin…

SRM 512 DIV 2

7月14日のSRM参加記録 Level One MarbleDecoration 問題:http://www.topcoder.com/stat?c=problem_statement&pm=11287&rd=14537石を交互に並べたいんだって。 import java.util.Arrays; public class MarbleDecoration { public int maxLength(int R, int G…

MavenのローカルリポジトリをGroovyから参照する

MavenのローカルリポジトリをGroovyから参照する方法です。 ~/.groovy/grapeConfig.xmlを作成して、以下のように書いておけばいいようです。 <ivysettings> <settings defaultResolver="downloadGrapes" /> <resolvers> <chain name="downloadGrapes"> <ibiblio name="local" root="file:${user.home}/.m2/repository/" m2compatible="true" /> </ibiblio></chain></resolvers></settings></ivysettings>

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…