windows 7 な ruby1.9.1 でopenssl loaderror

ustとyoutubeの録画したビデオの共有の件で、自宅に帰って
windows7でやることにしたが、入ってるruby1.9.1で下記コードを実行しようとすると
openssl のloaderrorエラーが発生する。

require 'rubygems'
require 'mechanize'
require 'kconv'

agent = Mechanize.new
agent.get('http://www.google.co.jp/')
agent.page.form_with(:name => 'f'){|form|
  form.field_with(:name => 'q').value = 'Ruby'
  form.click_button
}

下記サイトから、
http://www.atmarkit.co.jp/fcoding/articles/ruby191/ruby191a.html

DEAN LEE:/DEV/BLOG - Download OpenSSL for windows
http://www.deanlee.cn/programming/openssl-for-windows/

libeay32.dllとssleay32.dllを、C:\ruby\binへコピーで解消された。

Ustに録画したビデオを定期的にYoutubeに共有する(未完成)

そういうことをしたいんですが、なんとなく作ってみて
ustからのアップデートが失敗になってしまう。。なんでだろう

require 'rubygems'
require 'mechanize'
require 'json'
require 'open-uri'
require 'rss'

# error
  class LoginError < StandardError ; end
  class MovNewMovieToYoutubeError < StandardError ; end
  class OverLimitError < StandardError ; end
  
class UstreamMoiveMovToYoutube
  def initialize(user_name , password , option = {})
    option[:max_history] ||= 1
    @user_name = user_name
    @password  = password
    @logined   = false
    @agent = Mechanize.new
    @agent.max_history = option[:max_history].to_i
    @currentMovieList = Array.new
    @oldMovieList = Array.new
    @newMovieList = Array.new
    #@oldMovieListFileName = File.dirname(__FILE__)+"/oldMovieList.dat"
    @oldMovieListFileName = './oldMovieList.dat'
    
  end
  def login
    @page = @agent.get('http://www.ustream.tv/ajax/login.json?username='+@user_name+'&password='+@password)
    @body = @page.body
    @parseJsonString = JSON.parse(@body)
    if !@parseJsonString["success"]
      p @parseJsonString
      raise LoginError.new
    end
  end
  def getMovieList
    rss = open("http://www.ustream.tv/"+@user_name+"-videos.rss"){ |file| RSS::Parser.parse(file.read) }
    rss.items.each do |item|
      urlString = (item.link)
      @currentMovieList << urlString.sub('http://www.ustream.tv/recorded/',"")
    end
  end
  def getOldMovieList
    if File.exist?(@oldMovieListFileName)
      File::open(@oldMovieListFileName) {|f|f.each {|line| @oldMovieList << line.chop}
      }
    end
  end
  def getNewMovieList
    getMovieList
    getOldMovieList
    for movie in @currentMovieList
      if @oldMovieList.index(movie)==nil
        @newMovieList << movie
      end
    end
    saveMovieList
  end
  def saveMovieList
    f = File::open(@oldMovieListFileName,"a")
    for movie in @newMovieList
      f.puts movie
    end
  end
  def movNewMovieToYoutube
    getNewMovieList
    for movie in @newMovieList
      @page = @agent.get('http://www.ustream.tv/ajax/youtube/upload.json/'+movie)
      @body = @page.body
      @parseJsonString = JSON.parse(@body)
      if !@parseJsonString["success"]
        raise MovNewMovieToYoutubeError.new
      end 
    end
   end
end

#
a = UstreamMoiveMovToYoutube.new("test","test")
a.login
a.movNewMovieToYoutube

ustreamからyoutubeへの自動共有

ログインURL
http://www.ustream.tv/ajax/login.json?username=USENAME&password=PASS
アップデート
http://www.ustream.tv/ajax/youtube/upload.json/録画したビデオのID

rubyからmechanizeでログイン後にアップデートのurlを叩く
スクリプトでいけるかな。

ところがだ。
環境と思われるが、windowsでjruby1.6.4から作っていると

agent = Mechanize.new { |a| a.log = Logger.new("mech.log") }
agent.user_agent_alias = 'Mac Safari'
page = agent.get("http://www.google.com/")

agent.getでUnsatisfiedLinkError
なんでだろう。
プログラムを作るときの大半の問題は、こんなのだよね。

BDDとウォータウォール開発を考えてみる。パート1

ウォータウォール開発だと、要件定義書があって、仕様書があって
プログラムを作って、テストを行う。
アジャイルは響きはいいけど、業務系だと仕様を固めないと
何も出来ない、仕様というのは、一連の流れすべてであって
なかなかサイクル的に開発は出来ない。もちろんウォータウォール開発で、
フェーズ毎にリリースというのもあると思うが、その1フェーズは結構大きいスパンである。

うちの会社だとこんな感じの開発

?概要:
ショッピングセンターの売り上げ管理システム

?要件定義:
1.バッチ系システム図的なもの
2.オンライン系システム図とかシーケンスとか

?仕様書:
要件定義書をもとに、必要な機能を洗い出し
各機能毎に起こしていく
1.オンライン売上紹介画面仕様書
2.オンライン売上修正画面仕様書
3.etc....

?詳細設計書:
言葉でプログラムする。
1.オンライン売上紹介画面仕様書

?コーディング:
作る

?単体テスト
詳細設計書をもとに単体テストを作成する。
観点は、分岐網羅、限界境界テスト

?結合テスト
機能間連携テスト
オンライン売上照会画面→売上修正画面→照会画面みたいな

?システムテスト
すべてがっちゃんこしてやるテスト

?性能テスト:
性能試験

?リリース

ruby会議on UST

たのしいRails を聞いてメモ

コミュニティに参加しようよ。っというお話でした。
とっても面白かったです。
ラクティスとして

  • 毎日comitログを見る
  • ドキュメントをメンテする
  • 英語を覚える
  • 毎日edgeを見る?
  • rails会議に行こう

こんな感じかな?下の本の著者さんみたいですね。読んでみたいな。

Rails3レシピブック 190の技

Rails3レシピブック 190の技

Rubyマスターへの道 を聞いてメモ

  • githubを使おうよ
  • rubyのソースをみようよ

みたいなのが、気になったポイントかな。
githubの話が会議全体でよく出てくる気がするな。

あとまとめの

幸せは現在感じていること。

みたいな言葉の紹介がすばらしかった。
未来に感じる幸せは幸せじゃなくて、過去の幸せを振り返るの幸せではなくて
現在感じている幸せが幸せなんだと。感動した!w

BDD style Unit Testing を聞いてメモ

Rspecとかminitest?とかの使い方が主みたいだ。

おいらとしては、BDDを使用した仕様の落し込み?みたいなの聞きたいな。
おいらの現場は、要件定義書があって、仕様書が出来上がって、プログラムを
つくることになるんだけども。仕様書をつくったんじゃBDDする意味ないと思うんだよね。

5 years know-how of RSpec driven Rails app. development. を聞いてメモ

これは面白そうだ。
railsrspecに関して
テストの書き方についてみたいだ。

  • モデルのテストを書く
  • データ作りが大変
  • データの種類
    • マスタ
      • 更新されない
      • 依存が少ない
      • 自動生成でいいよね〜的な
    • リソースデータ(ファイルとかじゃない)
      • 学生とか?
      • 増減し、更新されるもの
    • イベントデータ(テンポラリデータ、売上げとか?)
  • fixture
    • 特徴
      • はやい
      • yamlなのでメンテが大変?
      • モデルのvalidを追加すると設定値が全滅する?
    • fixture Replacement?
      • オブジェクトの作り方を定義しておいて、そこから作る?
      • flexibleらしい
      • 使い方が難しい
      • 遅い
      • Fabricator?
    • 両方使う
      • マスタ→fixuture
      • リソース→fixture Replacement
      • イベント→before()/setup
  • 問題
    • DRYじゃなくなる?
      • データの読み込み処理の定義が重複する
      • 修正すると、大変
コンテキストを共有しよう!
      • なるほど!!
  • コンテキスト
    • 適切な名前をつける
      • オブジェクト名のネーミングルールを適切につくって、そこからまとめる?
    • 適切にまとめる
    • letで名前をつける?
  • RSpec
    • Rspec shared_context()
      • ある状況をshare_contextとして名前をつけてコードを定義する。
      • そしたらそれをインクルードする。
  • まとめ
    • モデルのテスト書く
    • データは、うまく機能を使って作れ!
    • shareconが良いよ!

Java in Ruby: Scripting Java in JRuby を聞いてメモ

  • java のライブラリを使うのは、C拡張を使うのと同じようなもんだ
  • しかし、javaはCよりrubyに近い
  • javagc
  • javarubyを相互で使える
  • C拡張は、Cのコールバックを使用するので大変だ
  • jruby しか動かない

howto

  • ardor3dでデモ
  • javaのサンプル
    • 型を定義したり、準備がいっぱいで大変
  • rubyのサンプル
    • シンプルになる
  • require 'java'
  • require 'javaライブラリー'
  • jrubyがうまくやってくれる
    • javaはキャメルケース(メソッドの名前最初がおおもじ)
    • rubyは'_'でつなげるが
    • 自動型変換
  • javaのインタフェースの実装をrubyでできる?
  • javaのclassをrubyで拡張#継承できる。(extends)
  • javaのclassにrubyのメソッドを追加できる
  • まとめ
    • すでにあるライブラリを使おう
    • javaにはたくさんある
    • javaAPIrubyAPIのように呼ぼう

Q&A
Q-jrubyはいつメソッドの変換をしている?
A-クラスをロードしたときにやる。

  • >名前がかぶるときは、明示的にjavaの名前を呼ぶことも可能

Q-名前変換のルールは?
A-jruby wiki にあるよ
A-javaBeansに沿っているよ

Q-jrubyは1.9or1.8
A-国際化のとこがメタメタそこは、1.8ほかは1.9

Q-jrubyはどれだけJISを意識しているのか
A-hoply

The Gate を聞いてメモ

面白い人みたいだ

デビッドトーマスの紹介から

達人プログラマー―システム開発の職人から名匠への道

達人プログラマー―システム開発の職人から名匠への道

  • 作者: アンドリューハント,デビッドトーマス,Andrew Hunt,David Thomas,村上雅章
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/11
  • メディア: 単行本
  • 購入: 42人 クリック: 1,099回
  • この商品を含むブログ (347件) を見る
RailsによるアジャイルWebアプリケーション開発 第3版

RailsによるアジャイルWebアプリケーション開発 第3版

話し手の紹介
角谷 信太郎
http://www.esm.co.jp/agile/people/kakutani.html

理工学専門書|Ohmsha
http://www.ohmsha.co.jp/

アジャイルサムライ ――達人開発者への道
http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06856-0

アジャイルサムライ−達人開発者への道−

アジャイルサムライ−達人開発者への道−

ruby会議on UST

現在育児休業中なので、当然出席なんて出来なくて、USTで見ております。

Ruby Ruined My Life. を聞いていてメモ

最後のプロポーズが印象的だったw

Ruby を利用した大規模ウェブサービスの開発・運用 を聞いていてメモ

内容は、インフラ的な説明が主だった気がする。下記アプリが、気になった。

あと、最終的な判定時に、リリースしないアプリが発生する際の戻しを
専用の機能をつくってやっているみたいだ。
こういうの結構現場であると思う、現に私が働いている職場でもよく聞く、
簡単にできるなら、ぜひとも公開してほしい。

Shipping at the Speed of Life を聞いていてメモ

英語が早くてわからない><;

Rubyで作った "critical mission" システムについて を聞いていてメモ

緊急地震速報地震の集計部なのか?、rubyで作られているみたいだ、その開発に関する発表だった。

rubyを使ってやったのは、正直SUGEEEEEなっつうか、よくrubyに決まったなっ!って感じだが、
最後の質問でもあったが、

質問「なぜrubyを最初にえらんだのか?」
回答「お客さんからrubyを使えと言われたから」

うーん、なんとも。rubyでWEB以外を作れたっという実績はとっても評価できるが、
発表内容をみると、rubyが遅いとか、信頼性がないからrubyのバージョンアップが出来ないとか
まぁーミッションクリティカルならそうだろうけども、それだと発表にあったバージョンしか
信頼出来ないということになるし、よかった点というのも、プログラマが呟いた、

「rubySUGEEE」

っていうところだけだと、ここから、本当のお客さんにアピールできることは、なさそうだ。

本当のお客さんというのも、なんかお金がとってもありそうなプロジェクトだったみたいだ
普通のお客じゃなさそうだ。

早く、安く、信頼性の高いシステムを!ってのが求められている中で、この発表だと
rubyというか、javaに行っちゃうと思うな。