読者です 読者をやめる 読者になる 読者になる

basyura's blog

あしたになったらほんきだす。

unite-yarm で redmine のチケットを RU (表示・更新)

yet another redmine source for unite 本家がないので yet も糞もないけど、もっといいのが出てくることを期待して 使い方 Unite redmine チケット一覧の表示(かつ、一覧をキャッシュ) キャッシュがあればそれを表示 必要なもの webapi-vim https://github.…

pure vim 1 行で redmine のチケットを更新する

webapi-vim を用意する。 webapi-vim: Vim Interface to Web API Description: Interface to WEB APIs. Currently this library support following protocols. * Basic HTTP * OAuth * Atompub * SOAP (in progress) This library include: XML Parser BASE6…

鳥取Ruby会【とっとるびー】 第3回

blog に書くまでが tottoruby 鳥取Ruby会【とっとるびー】 第3回 Hosted By: @suzumura_ss 〜ソフトウエア技術者同士で雑談をしよう会〜 ・ Rubyの名前を冠していますがRuby以外も扱います。 ・ Ruby関連のふりをしてCとかLispだったりもします。 http://tw…

redmine のチケット一覧を表示する unite-yarm を作ってみた

会社をずる休みして redmine のチケット一覧を表示する unite-yarm を作ってみた。以前から pure vim で redmine のクライアントを書きたいと思っていたのだけど、力不足すぎて手が出せずにいた。チケットの一覧を取ってきて中身を表示するとこまでやったけ…

redmine_client

ActiveResource すごい。 redmine_client ってホントに小さなライブラリなのに、redmine の API にアクセスできちゃう。 サンプルプログラム #!ruby # -*- coding: utf-8 -*- require 'rubygems' require 'redmine_client' RedmineClient::Base.configure do…

rake で vim 環境を同期する

rake でなくてもいいんだ。Rakefile を書いてみたかっただけなんだ。複数の環境(windows(cygwin) × 3 , mac)で vim 環境の同期を取りたい場合に検討が必要なもの。 vimrc , gvimrc vimonline に登録されているフォルダ分割されている plugin vimonline に登…

1.9.2 の make で失敗 win32ole が原因?

cygwin 環境で rvm を使って ruby 1.9.2 を入れようとしているんだけど、win32ole の make 時にこけて入らない。 手持ちの他2つの cygwin 環境では入った ext/win32ole フォルダを消して make すれば入る make のログを見てもよく分からない orz [2010-09-2…

クラス変数とクラスインスタンス変数

メタプログラミングRuby作者: Paolo Perrotta,角征典出版社/メーカー: アスキー・メディアワークス発売日: 2010/08/28メディア: 大型本購入: 14人 クリック: 488回この商品を含むブログ (111件) を見る クラス変数がクラスに属していないからだ。クラスでは…

Ruby on 松江ラーメン

RubyKaigi で購入した Ruby ラーメンをようやく食べられた。盛りつけの順番をちょっと間違えたので見えないけど・・・チャーシューの下にネギともやしとコーンがある。 うまかった。

RubyKaigi 問題

玄人と素人(入り口層から中堅層に至らないまで)の温度差なんじゃないか。 発言の影響度は 玄人 >>>>>>>>>>>>>>>>>>>> 素人なんだけど、人数的には 玄人 <<< 素人なわけで。素人向け(面白い)セッションがフォーカスされるのは仕方ない。ruby 誕生から 17年(ぐ…

僕の rubykaigi2010

コミッター 圧巻だったなぁ。これを見てるだけで wktk した。 vim @sandinist と参戦。隣の部屋(emacs)と宗教戦争が始まるんじゃないかってぐらい人が殺到。@kana1 さん焦ってた。 椅子を隣から運んできてもらったりしてようやく着席(このとき、参加者がもっ…

rubytterなう

ruby + twitter の組み合わせで小物作りは継続している。今回は oauth を使った認証と、 oauth に対応したライブラリ 「rubytter」を使ってみる。 rubytter と oauth を使う てすてす。 # -*- coding: utf-8 -*- require 'rubytter' consumer = OAuth::Consu…

twitter4r で list のタイムラインを取得する

twitter4r にはまだ list を扱う API が無いようなので、本体に手を入れないで機能追加してみた。 require 'twitter' module Twitter class List include ModelMixin @@ATTRIBUTES = [:lists] attr_accessor *@@ATTRIBUTES class << self def attributes; @@…

bowline-twitter に勝手に機能追加

bowline による twitter クライアントの改造版(http://github.com/basyura/bowline-twitter) Ruby, HTML and JS desktop application framework. bowline css dock menu (jquery's plugin) で Dock っぽい動き If you are a big Mac fan, you will love this…

表示している Tweet を入れ替える

model で destroy_all すればメモリ上から消えるけど画面からは消えないのか。binder で入れ替えないとだめぽ。 def poll klass.poll self.items = klass.all end item は html の class="item" とマッチングしている(んだと思う)ので、そこに展開されている…

bowline-twitter をやっと動かせた

謎のエラー・・・ $ ruby script/run dlopen(/repos/bowline-twitter-org/vendor/gems/ruby/1.9.1/gems/yajl-ruby-0.7.7/ext/yajl_ext.bundle, 9): no suitable image found. Did find: /repos/bowline-twitter-org/vendor/gems/ruby/1.9.1/gems/yajl-ruby-0…

support for older version of activesupport

github では ActiveSupport::Dependencies.autoload_paths の差分が吸収されたようだ。 @@, -110,8 +110,14 @@ module Bowline 110 110 # Set the paths from which Bowline will automatically load source files, and 111 111 # the load_once paths. 112 …

callback

callback param で callback を通知することができる。 呼び出し側(index.html) var tweets = $('#tweets'); tweets.bowlineChain('TweetsBinder'); $('#tweet').click(function() { Bowline.invoke("TweetsBinder", "sing" , "aaaa" , function(res){alert(…

ようやく動いた

環境がおかしいのか起動でこけちゃう gem と ruby のバージョンをいろいろ試してもドツボにはまる一方 サンプル見て説明見てその通り書いても動かない で半ば放置してたんだけど。GoRuCo 2010 - Alex MacCaw - Bowline: Ruby Desktop Applications from Goth…

鳥取Ruby会【とっとるびー】 第1回GC本読書会

鳥取Ruby会【とっとるびー】 第1回GC本読書会 Hosted By: @suzumura_ss 〜鳥取にRubyistは何人いるんだろう その2〜 「ガベージコレクションのアルゴリズムと実装」 http://www.amazon.co.jp/gp/product/4798025623 の読書会です。 http://tweetvite.com…

ルーティングのお勉強

class UsersController < ApplicationController def show @user = User.find_by_user_id(params[:user_id]) end end Money::Application.routes.draw do |map| match 'user/:user_id' , :to => 'users#show' #=> http://localhost:3000/user/basyura match …

間違えやすい

Test#call_echo から Test.echo が呼べそうな気がするんだけど、呼ばれないんだな。 class Test def echo puts "echo" end def self.echo puts "self echo" end def call_echo echo self.echo end def self.call_echo echo self.echo end end Test.new.echo …

Rake::TestTask

ユニットテストを実行するためのタスクを作成するクラスです。 Rake::TestTask require "rake/testtask" Rake::TestTask.new do |t| t.libs << "test" t.test_files = FileList['test/test*.rb'] t.verbose = true end 特異メソッド new(name = :test) {|t| …

StringScanner

StringScanner は文字列スキャナクラスです。簡単に高速なスキャナを記述できます。 StringScanner ちょっと試してみた。 require 'strscan' s = StringScanner.new("<a>aaaa</a>bbbb<c>cccccc</c>aaa") スキャン s.scan_until(/<.*?>/) <a>aaaa</a>bbbb<c>cccccc</c>aaa s.matched <a>aaaa</a>b…

日付でバックアップしているファイルを消していく

today = (Time.now - 24 * 60 * 60 * 30).strftime("%Y%m%d") Dir.glob("file.*.tar.bz2"){|f| next unless f =~ /file\.(.*?)\.tar\.bz2/ if $1 < today puts "delete #{f} ..." `rm #{f}` end }

鳥取Ruby会【とっとるびー】 第0回Ruby勉強会

http://tweetvite.com/event/tottoruby_0参加してきました。定員 20 に対して 13 人 ・・・ちょっと少ない感じだったかな。最初は半分が学生だと思ってたけど、みんな働いてる方達だったのでちょっと驚く。んで、話を聞いていると、どうやら繋がりが全く無か…

rsense + neocomplcache

neocomplcacheと併用すると問題が発生します。私がneocomplcacheと相性が良くなるように書き換えたので、etc/rsense.vim を置き換えてください。 http://github.com/Shougo/rsense RSense をneocomplcacheで使用するには? てことで、ありがたく使わせて頂く…

リファレンス検索でメソッド補完もしてみた

http://keysnail.g.hatena.ne.jp/basyura/20100328/1269781662

Ruby API 検索

http://keysnail.g.hatena.ne.jp/basyura/20100325/1269523635存在するクラスの場合は直接リファレンスページを開き、無い場合はグーグルでサイト検索する。もっとスマートに書くにはどうしたらいいか。

vim から growl

twitvim.vim でリプライがあった場合に growl で通知できたらいいなぁという思いつきで試してみた。vim の ruby サポートを利用して、 vim → ruby → ruby-growl(gem) → growlで呼び出す。 function s:growl() ruby <

ダサいと言われようが Java の方が向いてるのかな

Rails3 β がリリースされたので久々に rails コードを書き始めてみると「あれ、この api を呼び出した結果はどういうインタフェースを持ってるんだっけ?」の連続で RDoc を見てみたり Web で検索してみたり、ソースを読んでみたりの繰り返し。趣味だから楽…

route.rb

今までの通りルーティングしたい場合は route.rb のコメントを外しとけばいいのかな。 # This is a legacy wild controller route that's not recommended for RESTful applications. # Note: This route will make all actions in every controller accessi…

rvm で切り替え

1.9.2 を使いたいとき rvm use 1.9.2システム(元)に戻したいとき rvm use systemとすればいいのか。 ついでに、 /Library/Ruby/Gems/1.8とか /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8に入ってた gem を一掃(rm)して(…

rvm

勘違いして地味にはまったけど cygwin と mac に rvm を入れた。便利になったもんだ。そろそろ 1.9 系を触り始めたい。.rvm/scripts/hook の一行目が //usr/bin/envってなってるのが気になる・・・。cygwin だとエラー出ちゃう。

Array の初期化

Array.new(3){""} でできた。それは良いとして Array.new(3,"") の使い道が分かりません (> <)

10 分でコーディング

今日の問題はかなり簡単です。 できるだけ早い時間でエレガントなコードを書きましょう。 あまりに簡単なので制限時間を10分としてやってみてください。 これ以上かかった人は 自分はかなりプログラミングができない。 プログラミングに自信があるやつこい…

lambda

ブロックをコンテキスト(ローカル変数のスコープやスタックフレーム)とともにオブジェクトにする def c_lambda c = 10 lambda {|a,b| return a * b * c} end puts c_lambda.call(3,4) #=> 120 中身が変えられると困る様なものはあらかじめ dup(または freeze…

インスタンスの生成無しに呼べるのはなぜ?

過去の日記を検索してみたら Ruby 初めて 4 年になることが分かったけど、Ruby に関しては分からない事だらけ。 class Object def hello puts "hello from Object" end end class Class def hello2 puts "hello from Class" end end class A end Object.hell…

Sequel Development を何となく訳してみる

Development Sequel is being actively developed! You can join in on the discussions, ask questions, suggest features, and discuss Sequel in general by joining our Google Group - Sequel Talk or our IRC channel. Sequel: The Database Toolkit f…

Sequel: The Database Toolkit for Ruby (v3.7.0)

なんとなく和訳してみる Sequel provides thread safety, connection pooling and a concise DSL for constructing database queries and table schemas. Sequel: The Database Toolkit for Ruby (v3.7.0) スレッドセーフなコネクションプーリングとDB 並び…

migrate

実行されないと思ったらファイル名に規則がある The Migrator module performs migrations based on migration files in a specified directory. The migration files should be named using the following pattern (in similar fashion to ActiveRecord mig…

ROneUsers で県別新着ユーザを RSS 配信

半径 1 クリックの範囲を収集した地域別 Twitter ユーザ数 あーるわんゆーざーず タイムゾーンが日本のユーザがフォローしているユーザを地域別に丸めて(新宿区→東京 etc)集計 一時間に一回ぐらい統計データを更新 ROneUsers 県別に新着ユーザを RSS 配信す…

Hash.new([]) にたまにハマる

Array#inject でキーに対する値を配列で持つ Hash を生成する際に、 m = ["a","a","b","b"].inject(Hash.new([])){|map,v| map[v] << v.upcase map } p m #=> {} としちゃって返ってきた Hash が空でたまにハマる。 デフォルト値として、毎回同一のオブジェ…

RSS配信してみた

http://basyura.org/rone/ Twitter ユーザを県別に集計している(地味に)んだけど、これの新着ユーザを RSS で配信するようにしてみた。RSS を取得して中身を見るのは何回かやったことあるんだけど、自分で生成するのは始めて。差分更新の仕方がよく分からな…

トップ画面まるごとキャッシュした

http://basyura.org/rone/ require でいろいろロードしたり、Sequel で DB につなげたりと cgi で呼び出されるごとに毎回やるのは非常に厳しいので、トップ画面を cache = erb :index // この後 cache を PStore で書き込み // 1 時間おきに cache の作り直…

ROneUsers を手直し

してみた → http://basyura.org/rone/ 新しく取り込んだユーザを非同期表示してみたり。 cgi だとレスポンスが微妙すぎる・・・。集計結果を PStore でキャッシュしてるけど require でムダにライブラリ読んだり DB つなげたりしちゃってるのもあるだろうな…

なぜそう思ったか?

「なんとなくそう感じた」というような思いこみではなく、「このような事実が観測された」、「このような理由でこう思った」というような事実の積み重ねがなければ、正しい知識を身につけることはできないと思います。 [http://blade.nagaokaut.ac.jp/cgi-bi…

つくりなおし

ROneUsers を放置してたらブクマがついてたので慌てて修正。 ユーザ情報を API でクロールしまくっといてその後は MapReduce ヨロシク的な事をしたかったのだけど、さくらサーバで CGI じゃ分散処理もできないしキャッシュも厳しいので困り果ててたところ。3…

なにこれ気持ち悪い

ここから class A def execute(msg) puts msg end end A.new.execute(<<-MSG) HELLO WORLD NANI KORE KIMOCHIWARUI MSG #=> HELLO WORLD #=> NANI KORE KIMOCHIWARUIすげー便利だと思う。ただ・・・なにこれ・・・気持ち悪い。 はみってるよね・・・MSG くん…

csv 出力

sql 実行しただけなんだけど。 require 'sequel' DB = Sequel.connect('mysql://root:pass@127.0.0.1/tusers') DB.execute("select * from users into outfile '/tmp/mout.csv' fields terminated by \',\'") find_all で全件取得するよりも、csv に吐いたも…