Ruby

カタカナにする

require 'rubygems' require 'igo-ruby' mes = ARGV.join(' ') unless ARGV.empty? mes = "引数にparseしたい文章を入れて起動してね" unless mes tagger = Igo::Tagger.new('/usr/local/share/ipadic') puts tagger.wakati(mes) p tagger.parse(mes).map{|i…

fizzbuzz書いてみた

FizzBuzzまったく書けない人がいるとか、じゃんけんの方がルール難しいしおかしいだろとかバカにしてたけど、一度も書いたことなかったので書いてみた chatに残ってたログといっしょにコピペする まず原型 #!/usr/bin/env ruby (1...100).each do |i| (puts …

rubyのmemcached gemインストール

久しぶりにmemcache-client gemを使ったら動かなくて困った。 http://www.sssg.org/blogs/naoya/archives/1940 にmemcache関連のgemが解説されている。今はmemcachedというのが良いらしい。 memcache-clientは非推奨になり、Dalliに引き継がれたり、memcache…

githubが復活したら起こして

くれるスクリプトを書いたので昼寝する #!/usr/bin/env ruby # -*- coding: utf-8 -*- require 'net/http' require 'uri' uri = URI.parse('https://github.com/') loop do puts "watch ... #{Time.now}" res = nil begin Net::HTTP.start(uri.host, uri.por…

nokogiriインストール

libxmlとlibxsltが必要なのよく忘れる sudo apt-get install libxslt1-dev libxml2-dev gem install nokogiri

Google Document List APIを使う

これ使いたい http://code.google.com/intl/ja/apis/documents/ google docsの中身のテキストを取得したい。 gem install gdocs4ruby http://cookingandcoding.com/docs/gdocs4ruby/ http://cookingandcoding.com/gdocs4ruby/ DocList API2.0を使うらしい"あ…

階乗を求める

100の階乗を求める puts (1..100).to_a.inject{|a,b|a*b} puts 1.upto(100).inject{|a,b|a*b} puts (1..100).map{|i|i}.inject{|a,b|a*b} arr = (1..100).to_a func = lambda{|i,arr| return i if arr.empty?; i*func.call(arr.shift, arr)} puts func.call(…

daemontoolsでrvmを使う

#!/bin/sh exec 2>&1 exec setuidgid sho bash -c ' rvm_path=/Users/sho/.rvm source /Users/sho/.rvm/scripts/rvm rvm use 1.8.7 ruby /Users/sho/src/ruby/img-server/img-server.rb ' http://blog.monoweb.info/archives/936

TCP Socketサーバーとクライアント

両方EventMachine::Connectionで書く serverとclientどちらが先に起動しても良い clientはserverから切断されたら自動再接続する unbindイベント内でreconnectしたらできた clientは適当な文字列を送信して、1秒sleepする。 serverはclientから受信した文字…

rssの生成

ruby1.8の標準ライブラリのrss/makerでいける require 'rss/maker' rss = RSS::Maker.make("2.0") do |rss| rss.channel.about = 'http://shokai.org/rss.xml' rss.channel.title = "橋本商会" rss.channel.description = "橋本商会のrssです" rss.channel.l…

crontabでrvmのrubyを使う

こっちが正しい http://d.hatena.ne.jp/shokai/20110603/1307052038 crontabの一番上の行に SHELL=/bin/zshこれを書いておく。よく忘れてはまる。.zshrcにrvmを使う設定が書いてあるので、それを読み込むため。これ書くと、~/.zshrcを読み込んでくれる。 そ…

Sinatra1.2.1とthin1.2.10を同時に使うと死ぬ

なんか問答無用でhttpアクセスした瞬間に落ちる (eval):2:in `method_missing': undefined method `associate_callback_target' for #<Thin::Connection:0x102753d40> (NoMethodError) from /Users/sho/.rvm/gems/ruby-1.8.7-p334/gems/eventmachine-0.12.10/lib/em/connection.rb:39:in `n</thin::connection:0x102753d40>…

newgemのエラー

newgem(1.5.3)コマンド使うと /Users/sho/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:55: uninitialized constant ActiveSupport::Dependencies::Mutex (NameError)エラーでる。 適当に2.3系で新しいactivesup…

ProcessingとRubyの連携

ProcessingはMacとWindowsとLinuxで簡単に動かせて、どの環境でも同じコードで一番楽にUSBカメラを扱えるので愛用してたんだけど Javaなのでいろいろネットワークまわりの所に俺が慣れてない。 今回はwebcamで撮影して簡単な画像処理をして、httpでform-mult…

mongodbでpaging

limitとskipでpagingに便利 #!/usr/bin/env ruby # -*- coding: utf-8 -*- require 'rubygems' require 'mongo' $KCODE = 'u' page = 5 per_page = 10 m = Mongo::Connection.new('localhost', 27017) db = m.db('skype') db['chat'].find({:from => /ozawa/…

evma_httpserverでworkerにhttpインタフェースも付ける

EventMachineで色々な処理(socketとかシリアルポートとか)をしているworkerに、httpからも一部機能を使えるAPIがほしかったので調べたらevma_httpserverを使うとヨサゲだったので調べた。 gem install eventmachine_httpserver0.21が入った。windows用には…

短縮URL展開を1行で(ruby)

http://blog.livedoor.jp/dankogai/archives/51573012.htmlrubyはhugeurl使うといい tinyurlやbitlyとか主要なのは展開できる ruby -rubygems -e 'require "hugeurl";puts URI.parse("http://bit.ly/d4VYD2").to_huge'

卒論の文字数をカウント

卒論シーズンなので texファイルの文字数を数えるワンライナー 一応頭に\と%の行はカウントしない。 ruby -e 'just=ARGV.map{|a|a.size}.max;total=0;ARGV.each{|arg|words=0;open(arg){|f|f.each{|line|words+=line.chomp.strip.split(//u).size unless lin…

igoの辞書を作って、igo-rubyで形態素解析

javaで実装された形態素解析エンジンのigoがrubyに移植されたのを使ってみた 最初から辞書がビルドされてるなら、pure rubyだからgemで一発でインストールできるから楽だな。 http://igo.sourceforge.jp/ http://kyow.cocolog-nifty.com/blog/2010/12/igorub…

haml内のrubyコード

blogのインデックスページとかで、新着5件とかをforで回して表示する時、それぞれの記事にidを振ったりとかしたい。 先にまとめ 先頭に - がある行はrubyスクリプトとして評価される tagの後に = があると、それ以降はrubyスクリプトとして評価される。 tag…

ruby-serialportをwindowsで使う

http://rubyforge.org/tracker/download.php/61/321/9924/1800/ruby-serialport-0.6.0-mswin32-gem.zip にパッチ適応済みのruby-serialport 0.6.0がある 0.7はlinux/macで使い方がよくわからなかったので俺は0.6を使ってる。特に問題ないし。windowsでも0.6…

rvmで入れたrubyでopensslが無いエラー

oauthとか使うとエラー "no such file to load -- openssl" 解決した sudo apt-get install libssl-dev~/.rvm/src/ruby-1.8.7-p302/ext/openssl ruby extconf.rb make make install どうやらaptで必要なパッケージを入れる前にrvmでrubyを作るとこうなるらし…

rvmにreadlineを入れて再インストール

ubuntu10.04にrvmで入れたruby1.8.7, 1.9.2でirbを使ったら Readline was unable to be required, if you need completion or history install readline then reinstall the ruby. You may follow 'rvm notes' for dependencies and/or read the docs page h…

exiftoolで動画のサイズや回転を取得

exiftoolを入れる sudo port install p5-image-exiftoolgem install mini_exiftool#!/usr/bin/env ruby require 'rubygems' require 'mini_exiftool' exif = MiniExiftool.new ARGV.first w = exif['ImageWidth'] h = exif['ImageHeight'] rot = exif['Rotat…

CDトレイを開閉

ruby -e 'IO.open(IO.sysopen("/dev/cdrom",File::NONBLOCK)){|io|io.ioctl(0x5309)}'ruby -e 'IO.open(IO.sysopen("/dev/cdrom",File::NONBLOCK)){|io|io.ioctl(0x5319)}'参考 http://d.hatena.ne.jp/n9d/20090122/1232592242

URLエンコード

ruby-1.8.7-p302 > ERB::Util.url_encode 'http://ああああ' => "http%3A%2F%2F%E3%81%82%E3%81%82%E3%81%82%E3%81%82" ruby-1.8.7-p302 > CGI.escape 'http://ああああ' => "http%3A%2F%2F%E3%81%82%E3%81%82%E3%81%82%E3%81%82" ruby-1.8.7-p302 > URI.enc…

ffi-mecabインストール

git clone http://github.com/yoidoreorg/ffi-mecab.git cd ffi-mecab rake package gem install pkg/ffi-mecab-0.1.2.gem

rubyでskypebot作れる

Ruby4Skypeを使う require "rubygems" require "skype" puts "start" app_name = "test_app" Skype.init app_name Skype.start_messageloop Skype.attach_wait s = Skype::Application.new(app_name) s.invoke("MESSAGE shokaishokai hello") # 相手を指定し…

rubyでskypebotを作る

環境はUbuntu10.04skype apiを使うためにvncサーバーを起動する tightvncを使ってたんだけどキーボード配列がおかしい。adgjを押すとasdfと出る。真ん中の段はズレがわかるけど他の段はメチャクチャ vnc4serverに換えたらokだった sudo apt-get remove tight…

Skypeのグループチャットにメッセージ送信

rb-skypemacのソース読んでたら、 Skype.send_(:command => "コマンド") で生のSkypeAPIに触れられる事がわかった。apple scriptのインタフェースを使っているらしい。chat系はrb-skypemacはラッパーが用意されてないけど、send_使えば http://developer.sky…