«前の日(07-13) 最新 次の日(07-15)» 追記

ヽ(´・肉・`)ノログ

2005|05|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|11|12|
2010|01|02|03|04|05|06|07|08|

2006-07-14

_ はてな、アメリカへ

近藤さんがんばれ。 サッカーの中田や野球のイチローもそうですけど、 彼らが何か行動する度に 『俺はこうやる。お前はどうだ』 と無言の問を投げかけてくるように感じます。 同年代だからなのかなぁ。

僕はどうする?今まで色々ウロウロしたから、ここいらでしばらくじっとしてみよう。 じっとすることで、動いていたときに見えなかった物も見えるようになる。

あなたはどうする?

はてなの近藤淳也社長が日本を去る。

妻ともう1人の社員1と、犬1匹を連れて。

社員19人を、東京に残して。

[ITmedia News:はてな、アメリカへより引用]

[]

2007-07-14

_ [General]excelをgrepするrubyスクリプトexgrep.rb

何となく出来たので載せときます。

説明文は後で追記する事にしよう。

使い方

ruby exgrep.rb '検索したい正規表現' '検索したいエクセルファイル名'

そうすると検索したい正規表現があるセルを

ファイル名:シート名:行:列:セルの内容

で表示してくれます。(grep -Hn風)

注意

くくりはシングルクォートでお願いします。

ダブルクォートだとrubyに渡す前にコマンドプロンプトで展開しちゃうみたいですね。

例)

'*.xls' => *.xlsがARGVへ渡る

"*.xls" => *.xlsを検索した結果がARGVへ渡る

便利な使い方

検索したいエクセルファイル名はrubyのDir::glob(ココ←)に直接渡るので**/*.xlsとかが使えます。

    • /*.xlsとするとカレントディレクトリ以下の全てのフォルダの*.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

_ [General]台風4号関東に接近中

台風4号が関東へと向かってきているようです。予想図が丁度西日本をなめる形で来ていますね。

笑い事じゃない人たちも沢山いるとは思いますが、水不足気味の地方の方には恵みの雨だったりするので一概に悪いとは言えないんですよね。

僕はそういう利害関係を抜きにして単純に感情的に自然の猛威っていうのが好きなのでわくわくします。

本日のツッコミ(全2件) [ツッコミを入れる]

_ かいちょー [NYSL(煮るなり焼くなり好きにしろライセンス)というのがあるらしい。。]

_ ヽ(´・肉・`)ノ [かいちょー それは凄いw]

[]

2010-07-14

_ [ruby] twitterのlistに登録されているmemberをfollowするrubyスクリプト

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
[]

«前の日(07-13) 最新 次の日(07-15)» 追記