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

感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

RubyでHTTPリクエストを飛ばしたり。

<スポンサーリンク>

Rubyの基礎をしつこくしつこく色んな本でやる。
今日はJava Ruby本。

Rubyの繰り返し

ブロック付きメソッドという、forと似たような処理を行うメソッドがある。
uptoというのは、引数に指定した分だけ、ブロック変数に渡す。
なんかうまく説明できないのが歯がゆいけれど、例を出すと以下の様な感じ。

if true
	x = 3
end

$stdout.puts x

1.upto(3) do |i|
	$stdout.puts i
end

結果

3
1
2
3

Rubyでクラスを定義するために利用するクラス定義式

class クラス名
  #式
end

Rubyでメソッドを定義するためのメソッド定義式

def メソッド名(param)
  #式
end

Javaではbooleanにはだいたい「isEmpty」みたいにするけれど、Rubyでは「empty?」のように末尾に[?]をつけるのがセオリーらしい。
なんか「empty?|д゚)チラッ」って聞いてるみたいでかわいいよね。

基礎をやっててちょっと飽きてきたから、色々といじってみる。

Rubyでネット上のHTMLを取得するサンプル

require 'net/http'
require 'uri'

response = Net::HTTP.get_response('www.oreillly.com', '/about/')
puts response.code
puts response.body.size
puts response['Content-type']
puts response.body[0,200]

puts "----------------------"
#Net::HTTP.get(URI.parse("http://www.yahoo.com/"))
yahoo_response = Net::HTTP.get_response(URI.parse("http://www.yahoo.com/"))
puts yahoo_response.body[0,300]

結果は以下のように、取得したHTMLの一部が表示される。

200  ##レスポンスコード
1306  ##body.size
text/html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR
/html4/frameset.dtd">
## 略
----------------------
<!DOCTYPE html>
<html lang="en-US" class="dev-desktop ua-ie ua-win ua-6.0 ua-ie8  bkt900 uni-lig
ht-grey failsafe" style="">
##略
    <title>Yahoo!</title>

RubyでHTTPリクエストヘッダーをカスタマイズしてみる

Rubyのnet/httpライブラリはデフォルトではUser-Agentヘッダーを送信しないようだ。
そのため、RubyでUser-Agentを設定する時は、明示的に送信する必要がある。

require 'net/http'
require 'uri'

module Net
	class HTTP
		def HTTP.get_with_headers(uri, headers=nul)
			uri = URI.parse(uri) if uri.respond_to? :to_str
			start(uri.host, uri.port) do |http|
				path_query = uri.path + (uri.query ? ('?' + uri.query) : '')
				return http.get(uri.path, headers)
			end
		end
	end
end

res = Net::HTTP.get_with_headers('http://www.yahoo.com/', {'Accept-Langage' => 'ch'})
s = res.body.size
puts s
puts res.body[s-20000 .. s-19500]

Accept-Langageをdeにしたり、色々といじってみると、レスポンス結果も変わって面白い。

「面白」といえば、ふと冷静になると、こんな天気のいい日曜日に、RubyでHTTPリクエストを飛ばして、そのレスポンスを見て「面白い!」なんて言っている僕は、どんなことでも面白くなれる素質があるんじゃないだろうか。

でもやっぱりプログラムを書いてると面白いよ。
今は基礎を固めるために、本を読んだりしているけれど、これは部活にたとえるとフットワークみたいなもので、
これで試合に出たり(Webサイトを公開したり)、ボールを使った練習をしたり(色んなWebアプリを作ってみる)ようになったらもっと面白いと思う。
まぁ、会社ではけっこう書いてるんだけれど、やっぱり楽しいもんね。

参考文献

JavaプログラマのためのRuby入門

JavaプログラマのためのRuby入門


基礎を固めるための本。
とても教科書的に、詳しく解説してくれる。

Rubyクックブック ―エキスパートのための応用レシピ集

Rubyクックブック ―エキスパートのための応用レシピ集


RubyのTipsがたくさん紹介されている。

感謝のプログラミング

今回で感謝のプログラミングは【488時間目】
10000時間まで、あと【9512時間】