近藤さんがんばれ。 サッカーの中田や野球のイチローもそうですけど、 彼らが何か行動する度に 『俺はこうやる。お前はどうだ』 と無言の問を投げかけてくるように感じます。 同年代だからなのかなぁ。
僕はどうする?今まで色々ウロウロしたから、ここいらでしばらくじっとしてみよう。 じっとすることで、動いていたときに見えなかった物も見えるようになる。
あなたはどうする?
はてなの近藤淳也社長が日本を去る。
妻ともう1人の社員1と、犬1匹を連れて。
社員19人を、東京に残して。
[ITmedia News:はてな、アメリカへより引用]
何となく出来たので載せときます。
説明文は後で追記する事にしよう。
使い方
ruby exgrep.rb '検索したい正規表現' '検索したいエクセルファイル名'
そうすると検索したい正規表現があるセルを
ファイル名:シート名:行:列:セルの内容
で表示してくれます。(grep -Hn風)
注意
くくりはシングルクォートでお願いします。
ダブルクォートだとrubyに渡す前にコマンドプロンプトで展開しちゃうみたいですね。
例)
'*.xls' => *.xlsがARGVへ渡る
"*.xls" => *.xlsを検索した結果がARGVへ渡る
便利な使い方
検索したいエクセルファイル名はrubyのDir::glob(ココ←)に直接渡るので**/*.xlsとかが使えます。
おやくそく
基本的には安全な『はず』のソースですが使用は自己責任でお願いします。
ライセンス
良く知らない…ので後で書きます
たいした物じゃないのでお好きにどうぞ
todo
セルの結合に対応してない?
引数がないとエラーになります
エクセルファイル以外を指定するとエラーになります
思いついたら追記します。
$KCODE = 's'
require 'win32ole'
def getAbsolutePath filename
fso = WIN32OLE.new('Scripting.FileSystemObject')
return fso.GetAbsolutePathName(filename)
end
def openExcelWorkbook filename
filename = getAbsolutePath(filename)
xl = WIN32OLE.new('Excel.Application')
book = xl.Workbooks.Open(filename)
begin
yield book
ensure
xl.Workbooks.Close
xl.Quit
end
end
def putresults filename, sheetname, row, col, val
puts "#{File::basename(filename)}:#{sheetname}:#{row}:#{col}:#{val.to_s.gsub(/\n/,"\\n")}"
end
regexp = Regexp.new(ARGV[0])
filenames = ARGV[1]
Dir::glob(filenames) do |filename|
openExcelWorkbook(filename) do |book|
book.Worksheets.each do |sheet|
sheet.UsedRange.Rows.each do |row|
row.Columns.each do |cell|
putresults(filename, sheet.Name, row.Row, cell.Column, cell.Value) if regexp =~ cell.Value.to_s
end
end
end
end
end
twitterで,あるユーザーが作成したリストに含まれているメンバーを一括followするrubyスクリプトです.ruby1.9で動作確認しました.
# -*- coding: utf-8 -*-
require 'logger'
require 'rubytter'
LOG = Logger.new('follow_user_on_the_list.log')
USER = 'niku_name' # your twitter account
PASS = '' # your twitter password
# ex) follow list "http://twitter.com/hdhsakym/robocup"
TARGET_USER = 'hdhsakym'
TARGET_LIST = 'robocup'
# oauth = Rubytter::OAuth.new(CONSUMER_KEY, CONSUMER_SECRET)
# access_token = OAuth::AccessToken.new(oauth.create_consumer, ACCESS_TOKEN, ACCESS_SECRET)
# @client = OAuthRubytter.new(access_token) # 2010/05/16現在 OAuth だと list 操作が 404 Not Found になる
@client = Rubytter.new(USER, PASS)
def all_users
ary = []
next_cursor = -1
while next_cursor != 0
begin
res = @client.list_members(TARGET_USER, TARGET_LIST, {cursor:next_cursor})
rescue => ex
LOG.warn ex
sleep 10
retry
end
ary.concat res.users
next_cursor = res.next_cursor
LOG.info "next_cursor is #{next_cursor}"
sleep 60
end
ary
end
all_users.each do |user|
LOG.info "#{user[:screen_name]}処理中..."
begin
@client.follow user[:screen_name]
sleep 60
rescue => ex
LOG.warn ex
sleep 10
retry
end
end
_ かいちょー [NYSL(煮るなり焼くなり好きにしろライセンス)というのがあるらしい。。]
_ ヽ(´・肉・`)ノ [かいちょー それは凄いw]