ruby

Rails3のルーティングについて自分なりにまとめてみる #rails

最近Rails3で遊んでて、ようやくルーティングが分かってきたのでまとめます。僕の知ってる範囲しかまとめないので、すべての機能を網羅するわけではありませんが、これだけ知ってれば不自由しない気がするのでそれで良いです。ウフフ、オッケー。 基本的なこ…

さくらのVPSにRubyの環境を構築したときのメモ

さくらのVPSの新プランに申し込んだので早速環境構築をしました。RedmineとGITLABを動かす予定なので、RVMを使ってRuby1.8.7とRuby1.9.2をインストールしたときのメモです。 環境 プラン:さくらのVPS 1G OS:CentOS 6 x86_64 ユーザ作成とログイン周りの整…

RubyでN-gramを計算するメソッド

RubyでN-gramを計算するメソッドを作ったよーって言うメモです。 class String def ngram n characters = self.split(//u) return [self] if characters.size <= n return 0.upto(characters.size-n).collect do |i| characters[i, n].join end end end p "…

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

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

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

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

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

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

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

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

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

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

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のログっぽいデータを分析して、それぞれの…

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…

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…

Ruby on Java - つまりJRuby

JRubyはJavaで実装されたRubyのインタプリタです。JRubyの凄いところは、JavaとRubyのコード間で双方向のアクセスを可能にしているところです。その素晴らしさを伝えるために、双方向アクセスの例を用意しました。下準備JRubyのダウンロードページから、自分…

Twitter4RによるTwitter Botの作り方

Twitter4RによるTwitter botのサンプルを公開します。 Timelineを取得してその中にある"(笑)"を"www"に変換してtwitterにpostするbotです。 このプログラムをcronをつかって1時間おきに実行します。 ログイン情報を記述したファイル(conf.yml) bot: login…

ActiveRecordで設定ファイルを使用する

プログラム上でデータベースに接続する際、データベースの設定情報は別ファイルになっていた方が何かと便利です。 今回はActiveRecordでデータベースに接続する際の、設定ファイルの使用方法を説明します。 設定ファイルを用意する YAML形式で設定ファイルを…

ActiveRecordでSQLiteを操作する

ActiveRecordはRuby on Railsで使われているO/Rマッパです。ActiveRecordを使うことによって、DBの操作が簡単になります。今回の例では以下のディレクトリ構成で説明します。db test.sqlite migrate 001_init_db.rb Rakefilesample.rbインストールgem instal…

Twitter4Rを使ってみる

Twitter4RはTwitterAPIのRubyラッパーです。今回はそのインストール方法と使い方を説明します。インストールgemを使って簡単にインストールできます。$ gem install twitter4r使い方yaml形式でコンフィグファイルを用意します。(例:conf.yaml)test: login: …