ランプの中身(Ruby on Railsのシステム開発)
ランプの中身(Ruby on Railsのシステム開発)では、株式会社ケイビーエムジェイのRuby on Railsエンジニアが蓄積したノウハウを公開しています。Ruby on Railに関する技術解説や実践的なノウハウなど、開発現場の技術に則したコンテンツを随時追加していきます。 初心者の方でもわかりやすい技術解説を心がけています。リクエスト、ご質問も受け付けいますので、ご気軽にコメントを記述して下さい。

< 遠隔地のチョロQを操縦する方法 with... | メイン | 社内SNSをiPhoneで快適に見るため... >

佐藤伸吾(akio0911)のデジタルライフハック(Ruby
2008.03.25

Rubyを使ってPaSoRi経由でSuicaの乗車履歴を取得し、GoogleMapsやGoogleEarthで表示する


 

佐藤伸吾です。

今回はRubyを使ってPaSoRi経由でSuicaの乗車履歴を取得し、GoogleMapsやGoogleEarth上で表示してみました。以下、その仕組みについて詳しく解説していきます。

Rubyを使ってPaSoRi経由でSuicaの乗車履歴を取得する

 

 

デモ動画

 

実際に動作している様子については、以下の動画をご覧下さい。

 

PaSoRi

 

PaSoRiとは、ソニーの非接触型ICカード「FeliCa」用の読み取り・書き込み機のことです。今回は「RC-S320」という機種を使用しました。

 

 

libpasori

 

libpasoriというライブラリが公開されており、これを用いれば、PaSoRiからの各種データ取得が可能です。

libpasori - RC-S320操作コード

Mac上にてlibpasoriを使用したい場合、以下のページが参考になります。

libpasori の共有ライブラリ化

 

libusb

 

libpasoriはlibusbも使用しますので、インストールして下さい。

 


% port search libusb 

libusb devel/libusb 0.1.12 Library
providing access to USB devices

% port variants libusb

libusb has the variants:
universal

% sudo port install libusb

 

 

テストプログラム

 

試しにC言語でテストプログラムを書いてみましょう。
単にデータを読み出すだけであれば、以下のようなプログラムでOKです。

 



#include
#include "libpasori.h" 

int main(void)
{
pasori *p;
felica *f;
uint8 d[16];

p = pasori_open(NULL);
pasori_init(p);

f = felica_polling(p, 0xfe00, 0, 0);
felica_read_without_encryption02(f, 0x170f, 0, 0, d);

printf("%d¥n", d[14]*256+d[15]);

pasori_close(p);

return 0;

}


 

 

Suicaデータのフォーマット

 

Suicaデータのフォーマットについては
Ruby で Suica を覗いてみる
を参照してみて下さい。

 

rubyラッパーを書く

 

rubyからpasoriの機能を利用する為に、ラッパーを書きます。

詳細についてはRuby で PaSoRi 使ってみるを参照してみて下さい。

 



require 'dl/import' 

module Pasori
extend DL::Importable
dlload '/usr/local/lib/libpasori.dylib'

typealias 'uint8', 'unsigned char'
typealias 'uint16', 'unsigned int'
#typealias 'uint16', 'unsigned short int'

# libpasori.h
extern 'pasori* pasori_open(char*)'
extern 'void pasori_close(pasori*)'
extern 'int pasori_send(pasori*,uint8*,uint8,int)'
extern 'int pasori_recv(pasori*,uint8*,uint8,int)'

POLLING_ANY = 0xffff
POLLING_SUICA = 0x0003
POLLING_EDY = 0xfe00

SERVICE_SUICA = 0x090f
SERVICE_EDY = 0x170f

# libpasori_command.h
extern 'int pasori_init(pasori*)'
extern 'int pasori_write(pasori*,uint8,uint8)'
extern 'int pasori_read(pasori*,uint8,uint8)'
extern 'felica* felica_polling(pasori*,uint16,uint8,uint8)'
extern 'int felica_read_without_encryption02(felica*,int,int,uint8,uint8*)'
end
module Pasori
class << self
def felica_raw_values systemcode, servicecode, little_endian = false
values = []
b = Array.new(4).to_ptr
psr = pasori_open ""
pasori_init psr
flc = felica_polling psr, systemcode, 0, 0
i = 0
while felica_read_without_encryption02(flc, servicecode, 0, i, b) == 0
row = b.to_a('I')
data = ""
row.size.times do |j|
if little_endian
4.times { |k| data += sprintf "%02x", (row[j].to_i >> (8 *
k)) & 0xff }
else
data += sprintf "%08x", row[j].to_i & 0xffffffff
end
end
yield data if block_given?
values << data
i += 1
end
pasori_close psr
values
end
end
end
require 'pasori'
Pasori.felica_raw_values Pasori::POLLING_SUICA, Pasori::SERVICE_SUICA,
true do |data|
puts data
end


 

 

路線・駅コード

 

路線・駅コードについては、路線・駅コード一覧からExcelファイルをダウンロードし、CSV形式で保存しておきます。

 

駅名から緯度経度を調べる

 

駅名から緯度経度を調べる為にGoogle Geocoderを使用しました。

 

GoogleMapsを利用したHTMLを生成する

 

erbを用いて、HTMLを生成します。GoogleMapsはJavaScriptから制御します。詳細についてはGoogle Mapsの基礎などを参照してみて下さい。

 



<%
require 'pasori' 

def Pasori.parse_suica_raw_value data
d = "%016b" % data[8, 4].hex
{
:type => data[0, 2],
:date => Time.local(d[0, 7].to_i(2) + 2000, d[7, 4].to_i(2), d[11, 5].to_i(2)),
:in => data[12, 4],
:out => data[16, 4],
:yen => data[20, 2].hex + (data[22, 2].hex << 8),
}
end

require 'station'

stations = Station.read('StationCode.csv.utf8')

list = []
Pasori.felica_raw_values Pasori::POLLING_SUICA, Pasori::SERVICE_SUICA, true do |data|
d = Pasori.parse_suica_raw_value data

station_in = nil
station_out = nil

list << []

list.last << d[:date]
stations.each do |s|
if s.area_cd.hex != 2 and s.line_cd.hex
== d[:in][0,2].hex and s.station_cd.hex == d[:in][2,2].hex
station_in = s
list.last << s
end
end

stations.each do |s|
if s.area_cd.hex != 2 and s.line_cd.hex
== d[:out][0,2].hex and s.station_cd.hex == d[:out][2,2].hex
station_out = s
list.last << s
end
end

list.last << d[:yen]
end

%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script
src="http://maps.google.co.jp/maps?file=api&amp;v=2&amp;key=hogehoge"
type="text/javascript"
charset="utf-8">
</script>

<style type="text/css">
#mymap {
position: absolute;
left: 0;
height: 400px;
width: 400px;
}
#list {
margin-left: 400px;
}

</style>

<script type="text/javascript">

var map;

onload = function(){
map = new GMap2(document.getElementById("mymap"));
map.setCenter(new GLatLng(35.6984, 139.7732), 13);
map.addControl(new GLargeMapControl());
map.addControl(new GScaleControl());
map.addControl(new GMapTypeControl());

<% list.each do |inout| %>
setMarkers('<%= inout[1].station_name %>駅');
setMarkers('<%= inout[2].station_name %>駅');
<% end %>
}
onunload = GUnload;
onresize = function() { map.checkResize(); }

var geocoder = new GClientGeocoder();

function moveTo(place){
geocoder.getLatLng(place, moveToThePlace);

function moveToThePlace(latlng){
if(latlng){
map.panTo(latlng);
}else{
}
}
}

function setMarkers(place){
geocoder.getLocations(place, setMarkersToThePlaces);

function setMarkersToThePlaces(locs){
if(locs.Status.code == G_GEO_SUCCESS){
for(var i=0; i<locs.Placemark.length; i++){
var point = locs.Placemark[i].Point;
var lng = point.coordinates[0];
var lat = point.coordinates[1];
var latlng = new GLatLng(lat,lng);
var mk = new GMarker(latlng);
map.addOverlay(mk);
}
}else{
}
}
}
</script>
</head>
<body>
<h1>乗車履歴表示</h1>
<form onsubmit="moveTo(this.place.value); return false;">
<input type="text" size="40" id="place" />
<input type="submit" value="move" />
</form>
<div id="mymap" style="width:400px; height:400px;"></div>
<div id="list">
<table border="1">
<% list.each do |inout| %>
<tr>
<td><%= inout[0].strftime('%Y/%m/%d') %></td>
<td><%= inout[1].company_name %></td>
<td><%= inout[1].line_name %></td>
<td><a href="#" onclick="moveTo('<%= inout[1].station_name %>駅')">
<%= inout[1].station_name %></a></td>

<td>-></td>

<td><%= inout[2].company_name %></td>
<td><%= inout[2].line_name %></td>
<td><a href="#" onclick="moveTo('<%= inout[2].station_name %>駅')">
<%= inout[2].station_name %></a></td>
<td><%= inout[3] %>円</td>
</tr>

<% end %>

</table>
</div>

</body>
</html>


 

 

GoogleEarthを利用して乗車履歴を表示する

 

乗車履歴を元にKMLというXMLファイルを生成し、Google Earthに読みこませれば、3Dツアーを再生することができます。KMLファイルの詳細についてはGoogle Earth KMLのレシピを参照してみて下さい。

 



require 'pasori' 

def Pasori.parse_suica_raw_value data
d = "%016b" % data[8, 4].hex
{
:type => data[0, 2],
:date => Time.local(d[0, 7].to_i(2) + 2000, d[7, 4].to_i(2), d[11, 5].to_i(2)),
:in => data[12, 4],
:out => data[16, 4],
:yen => data[20, 2].hex + (data[22, 2].hex << 8),
}
end

$stderr.print "乗車履歴読み取り中"

require 'station'

stations = Station.read('StationCode.csv.utf8')

list = []
Pasori.felica_raw_values Pasori::POLLING_SUICA, Pasori::SERVICE_SUICA, true do |data|
d = Pasori.parse_suica_raw_value data

station_in = nil
station_out = nil

list_ele = []

list_ele << d[:date]
stations.each do |s|
if s.area_cd.hex != 2 and s.line_cd.hex == d[:in][0,2].hex
and s.station_cd.hex == d[:in][2,2].hex
station_in = s
list_ele << s
end
end

stations.each do |s|
if s.area_cd.hex != 2 and s.line_cd.hex == d[:out][0,2].hex
and s.station_cd.hex == d[:out][2,2].hex
station_out = s
list_ele << s
end
end

list_ele << d[:yen]

next unless station_in and station_out

list << list_ele

$stderr.print '.'
end

$stderr.print "\n"

require 'rexml/document'
require 'open-uri'
require 'nkf'

puts '<?xml version="1.0" encoding="UTF-8"?>'
puts '<kml xmlns="http://earth.google.com/xml/2.0">'
puts '<Document>'
puts '<name>kinshicyou.kml</name>'
puts '<visibility>1</visibility>'
puts '<open>1</open>'
puts '<desctiption>desctiption</desctiption>'

def output_point(lon, lat)
puts '<visibility>1</visibility>'
puts '<Style>'
puts '<IconStyle>'
puts '<Icon>'
puts '<href>root://icons/palette-3.png</href>'
puts '<x>96</x>'
puts '<y>160</y>'
puts '<w>32</w>'
puts '<h>32</h>'
puts '</Icon>'
puts '</IconStyle>'
puts '</Style>'
puts '<Point>'
puts '<extrude>1</extrude>'
puts '<altitudeMode>relativeToGround</altitudeMode>'
puts '<coordinates>' + lon + ',' + lat + ',50</coordinates>'
puts '</Point>'

end

def add_heading
$heading += 90
$heading = $heading % 360
end

def output_placemark(g, inout)
address = inout[1].station_name + '駅(東京)'
point = g.getPoint(address)

if point
lon = point[0]
lat = point[1]

name = inout[0].strftime('%Y/%m/%d')
name += ' '
name += address
name += ' '
name += '乗車'

puts '<Placemark>'
puts '<name>' + name + '</name>'
puts '<desctiption>description</desctiption>'
puts '<LookAt>'
puts '<longitude>' + lon + '</longitude>'
puts '<latitude>' + lat + '</latitude>'
puts '<range>200</range>'
puts '<tilt>60</tilt>'
puts '<heading>' + $heading.to_s + '</heading>'
add_heading()
puts '</LookAt>'

output_point(lon, lat)

puts '</Placemark>'
end

address = inout[2].station_name + '駅(東京)'
point = g.getPoint(address)

if point
lon = point[0]
lat = point[1]

name = inout[0].strftime('%Y/%m/%d')
name += ' '
name += address
name += ' '
name += '下車'

puts '<Placemark>'
puts '<name>' + name + '</name>'
puts '<desctiption>description</desctiption>'
puts '<LookAt>'
puts '<longitude>' + lon + '</longitude>'
puts '<latitude>' + lat + '</latitude>'
puts '<range>200</range>'
puts '<tilt>60</tilt>'
puts '<heading>' + $heading.to_s + '</heading>'
add_heading()
puts '</LookAt>'

output_point(lon, lat)

puts '</Placemark>'
end

end

require 'geocoder'

key = 'hogehoge'
format = "xml"
g = Geocoder.new(key, format)

$stderr.print "緯度経度取得中"

$heading = 0;
list.reverse.each do |inout|
output_placemark(g, inout)
$stderr.print '.'
end

$stderr.print "\n"

$stderr.print "経路情報描画中"

puts '<Placemark>'
puts '<Style>'
puts '<LineStyle>'
puts '<color>99ff0000</color>'
puts '<width>6</width>'
puts '</LineStyle>'
puts '</Style>'
puts '<LineString>'
puts '<altitudeMode>relativeToGround</altitudeMode>'
puts '<coordinates>'

list.reverse.each do |inout|
address = inout[1].station_name + '駅(東京)'
point = g.getPoint(address)

if point
lon = point[0]
lat = point[1]
puts sprintf("%s,%s,50", lon, lat)
end

address = inout[2].station_name + '駅(東京)'
point = g.getPoint(address)

if point
lon = point[0]
lat = point[1]
puts sprintf("%s,%s,50", lon, lat)
end

$stderr.print '.'
end

puts '</coordinates>'
puts '</LineString>'
puts '</Placemark>'
$stderr.print "\n"

puts '</Document>'
puts '</kml>'

$stderr.print "処理終了!!\n"


 

 

まとめ

 

いかがでしたか?前回のGainerや今回のPaSoRiといったハードウェアをRubyから制御することによって、アイディア次第で面白い仕組みを比較的簡単に作ることが可能になります。

次回もRubyと何かを組み合わせて面白い仕組みを紹介する予定です。よろしければこのブログのRSSも購読してみて下さい。次回をお楽しみに!!

 


 

コメント (0)  |トラックバック (63)

ブックマークに追加する Subscribe with livedoor Reader あとで読む

トラックバック URL

トラックバック一覧

Suicaデータから乗車履歴をGoogleMapsで表示する
ランプの中身(Ruby on Railsのシステム開発) Rubyを使ってPaSoRi経由でSuicaの乗車履歴を取得し、GoogleMapsやGoogleEarthで表示する http://do... [続きを読む] posted from ぶるべあの株と旅行日記 2008.03.25 21:51
This is one of the web's most interesting stories on Wed 26th Mar 2008
These are the web's most talked about URLs on Wed 26th Mar 2008. The current winner is .. [続きを読む] posted from purrl.net |** urls that purr **| 2008.03.26 11:07
Python: PaSoRiでSuicaの履歴を読み出す
Rubyを使ってPaSoRi経由でSuicaの乗車履歴を取得し、GoogleMapsやGoogleEarthで表示するって記事でPaSoRiなるものを知った。Edyもオサイフケータイも使ってないし、F... [続きを読む] posted from 良いもの。悪いもの。 2008.03.28 20:03
adipex no prescription
Site - very comprehensive and meticulous from all points of view, it [続きを読む] posted from adipex without prescription 2008.06.15 05:45
what is the generic for adipex
One isn't necessarily born with courage, but one is born with potential. Without courage, we cannot... [続きを読む] posted from adipex no prescription 2008.06.15 05:52
buy cheap adipex
More or less nothing seems worth doing, but oh well. I just don't have anything to say now. <a hr... [続きを読む] posted from adipex hurt me 2008.06.15 07:44
Stacy Kibler Nude
Manhunt Gay <a href="http://etoqomyjubujato1492008.blogspot.com/">Manhunt Gay</a> [続きを読む] posted from Stacy Kibler Nude 2008.07.23 02:34
Lisa Rinna Nude
Adult Flintstone <a href="http://uremef3902008.blogspot.com/">Adult Flintstone</a> [続きを読む] posted from Lisa Rinna Nude 2008.07.23 03:22
American Porn Thumbs
Sex Swing Videos <a href="http://www.google.com/notebook/public/04443973645862032114/BDSIKQgoQr9u93L... [続きを読む] posted from American Porn Thumbs 2008.07.23 04:10
Wendi Mclendoncovey Nude
Lesbian And Gay Sex <a href="http://www.google.com/notebook/public/04443973645862032114/BDQxBQwoQrdu... [続きを読む] posted from Wendi Mclendoncovey Nude 2008.07.23 04:57
Anna Nicole Smith Sex Movies
Manhunt Gay <a href="http://www.google.com/notebook/public/04443973645862032114/BDSMKQgoQs9u93LQj">M... [続きを読む] posted from Anna Nicole Smith Sex Movies 2008.07.23 05:44
Amateur Tiener
American Porn Thumbs <a href="http://www.google.com/notebook/public/04443973645862032114/BDQPCQwoQq9... [続きを読む] posted from Amateur Tiener 2008.07.23 06:27
Truro Mayor Gay Pride
Sex Porn Free Denmark <a href="http://www.freewebtown.com/quxe311/Sex_Porn_Free_Denmark.html">Sex Po... [続きを読む] posted from Truro Mayor Gay Pride 2008.07.23 07:14
Extreme Sex Toys
Gay Male Porno Video Clip Previews <a href="http://www.freewebtown.com/wina1658/Gay_Male_Porno_Video... [続きを読む] posted from Extreme Sex Toys 2008.07.23 08:01
Teen Pov
Nude Anne Hathaway <a href="http://www.freewebtown.com/unohi3315/Nude_Anne_Hathaway.html">Nude Anne ... [続きを読む] posted from Teen Pov 2008.07.23 08:45
Gay Pig Sex
Bam Margera Sex Video <a href="http://www.freewebtown.com/ilo5377/Bam_Margera_Sex_Video.html">Bam Ma... [続きを読む] posted from Gay Pig Sex 2008.07.23 09:30
Paz Vega Nude
Free Nude Celbs <a href="http://www.freewebtown.com/acoha2555/Free_Nude_Celbs.html">Free Nude Celbs<... [続きを読む] posted from Paz Vega Nude 2008.07.23 10:17
Kelsey Michaels Porn Videos
Rare Nude Celebrities <a href="http://www.freewebtown.com/idebo4567/Rare_Nude_Celebrities.html">Rare... [続きを読む] posted from Kelsey Michaels Porn Videos 2008.07.23 11:01
Amture Video Gay
Sly Cooper Porn <a href="http://www.freewebtown.com/ate4515/Sly_Cooper_Porn.html">Sly Cooper Porn</a... [続きを読む] posted from Amture Video Gay 2008.07.23 11:47
Lesbian Adult Movie Clips
Brandy And Mr Whiskers Porn <a href="http://www.freewebtown.com/wozof4920/Brandy_And_Mr_Whiskers_Por... [続きを読む] posted from Lesbian Adult Movie Clips 2008.07.23 12:30
Cassie Nude
Adult Coloring Pages To Print <a href="http://www.freewebtown.com/acoha2555/Adult_Coloring_Pages_To_... [続きを読む] posted from Cassie Nude 2008.07.23 13:22
Nude Dwarfs
Lynda Carter Porn Pic <a href="http://www.freewebtown.com/ocir3456/Lynda_Carter_Porn_Pic.html">Lynda... [続きを読む] posted from Nude Dwarfs 2008.07.23 14:03
Sexy Teen Porn
Nude Sandee Westgate Galleries <a href="http://www.freewebtown.com/apiko8665/Nude_Sandee_Westgate_Ga... [続きを読む] posted from Sexy Teen Porn 2008.07.23 14:53
Laure Marsac Nude
Bbw Adult Nude Bbw Bubble Butt <a href="http://jejy4392008.blogspot.com/">Bbw Adult Nude Bbw Bubble ... [続きを読む] posted from Laure Marsac Nude 2008.07.23 15:41
Ayumi Kinoshita Nude
Gay Sex Clips <a href="http://hojyhabehon2602008.blogspot.com/">Gay Sex Clips</a> Calender Girls Nud... [続きを読む] posted from Ayumi Kinoshita Nude 2008.07.23 16:23
Male Ass Stuffing
Jacks Teen America <a href="http://jejy4392008.blogspot.com/">Jacks Teen America</a> Virtual Games F... [続きを読む] posted from Male Ass Stuffing 2008.07.23 17:04
Teen Nudist Pics
Adult Theaters Palm Springs <a href="http://wasypem4292008.blogspot.com/">Adult Theaters Palm Spring... [続きを読む] posted from Teen Nudist Pics 2008.07.23 17:52
The Gay Barbie Song
Deelishish Nude Pics <a href="http://edubuxehityfusim4782008.blogspot.com/">Deelishish Nude Pics</a>... [続きを読む] posted from The Gay Barbie Song 2008.07.23 18:31
Australian Girls Masterbating
African Goddess Nude <a href="http://www.google.com/notebook/public/02273371091365957191/BDRGDQwoQu-... [続きを読む] posted from Australian Girls Masterbating 2008.07.23 19:17
Grandad Sex
Artful Nudes <a href="http://www.google.com/notebook/public/02273371091365957191/BDQcKQgoQzfnp87Qj">... [続きを読む] posted from Grandad Sex 2008.07.23 19:59
Wclg Girls
Ketrin Teen Model <a href="http://www.google.com/notebook/public/02273371091365957191/BDQxBQwoQuejq8... [続きを読む] posted from Wclg Girls 2008.07.23 20:44
Lombok Gay
Youn Teen Porn <a href="http://www.google.com/notebook/public/02273371091365957191/BDQcKQgoQy_np87Qj... [続きを読む] posted from Lombok Gay 2008.07.23 21:28
Jamie Lynn Spears Fake Nude
Upskirt Fighting Girls <a href="http://www.google.com/notebook/public/02273371091365957191/BDRGDQwoQ... [続きを読む] posted from Jamie Lynn Spears Fake Nude 2008.07.23 22:13
Jessica Alba In The Nude
Artful Nudes <a href="http://www.google.com/notebook/public/02273371091365957191/BDSMKQgoQyfnp87Qj">... [続きを読む] posted from Jessica Alba In The Nude 2008.07.23 22:52
Adult Arkansas
Sybia Sex Tool <a href="http://www.google.com/notebook/public/02273371091365957191/BDSIKQgoQs-jq87Qj... [続きを読む] posted from Adult Arkansas 2008.07.23 23:34
Girls Sequined Beaded Ballet Flats
Simmone Mackinnon Nude <a href="http://www.google.com/notebook/public/02273371091365957191/BDQPCQwoQ... [続きを読む] posted from Girls Sequined Beaded Ballet Flats 2008.07.24 00:20
Gay Blacks On Whites
<a href="http://rollyo.com/Milf-Lessons-Po8670">Milf Lessons Porn Review Of Milflessons</a> <a href=... [続きを読む] posted from Gay Blacks On Whites 2008.07.24 02:52
Porn Animated Gifs
<a href="http://rollyo.com/Gay-Sperm-Cup1618">Gay Sperm Cup</a> <a href="http://rollyo.com/Beijing-M... [続きを読む] posted from Porn Animated Gifs 2008.07.24 03:38
Wild Orchids Adult
<a href="http://rollyo.com/Can-Sex-Offende6604">Can Sex Offenders Enter Mexico</a> <a href="http://r... [続きを読む] posted from Wild Orchids Adult 2008.07.24 04:23
Ballerina Halloween Costumes Adult
<a href="http://rollyo.com/Adult-Cell-Phon8316">Adult Cell Phone Graphics Downloads</a> <a href="htt... [続きを読む] posted from Ballerina Halloween Costumes Adult 2008.07.24 05:11
The Brady Bunch Xxx
<a href="http://rollyo.com/Girls-Set-Stock8238">Girls Set Stock Car Lionel</a> <a href="http://rolly... [続きを読む] posted from The Brady Bunch Xxx 2008.07.24 05:54
Micro G String Bikini
<a href="http://rollyo.com/Gay-Hangouts-In6343">Gay Hangouts In Salt Lake City</a> <a href="http://r... [続きを読む] posted from Micro G String Bikini 2008.07.24 06:40
Gay Hitcher
<a href="http://rollyo.com/Sex-Party-Galle1479">Sex Party Galleries</a> <a href="http://rollyo.com/S... [続きを読む] posted from Gay Hitcher 2008.07.24 07:21
Teenage Girl Bedroom Ideas
<a href="http://rollyo.com/Sex-Fetish-Stor1704">Sex Fetish Stories</a> <a href="http://rollyo.com/Nu... [続きを読む] posted from Teenage Girl Bedroom Ideas 2008.07.24 08:09
Sex And Fucking
<a href="http://rollyo.com/Bright-Eyes-Cit7573">Bright Eyes City Has Sex Mp3</a> <a href="http://rol... [続きを読む] posted from Sex And Fucking 2008.07.24 08:53
Erin Kelley Nude
<a href="http://rollyo.com/Adult-Massage-K3283">Adult Massage Keystone Fl</a> <a href="http://rollyo... [続きを読む] posted from Erin Kelley Nude 2008.07.24 09:35
Sex With Pig
<a href="http://rollyo.com/Jason-Cerbone-N2837">Jason Cerbone Nude</a> <a href="http://rollyo.com/Se... [続きを読む] posted from Sex With Pig 2008.07.24 10:18
Vanessa Hudgens Actual Nude Shot
<a href="http://rollyo.com/Bathhouse-Sex9426">Bathhouse Sex</a> <a href="http://rollyo.com/Sex-Offen... [続きを読む] posted from Vanessa Hudgens Actual Nude Shot 2008.07.24 11:01
Snail Fuck
<a href="http://rollyo.com/Sun-Tanned-Girl5510">Sun Tanned Girls</a> <a href="http://rollyo.com/Nude... [続きを読む] posted from Snail Fuck 2008.07.24 11:51
Hard Yaoi Pics Porn Hentai
<a href="http://rollyo.com/Pete-Wentz-Nude8707">Pete Wentz Nudes</a> <a href="http://rollyo.com/Flin... [続きを読む] posted from Hard Yaoi Pics Porn Hentai 2008.07.24 12:36
Miss Mina Bbw
<a href="http://rollyo.com/Pictures-Of-Nud6968">Pictures Of Nude Lita</a> <a href="http://rollyo.com... [続きを読む] posted from Miss Mina Bbw 2008.07.24 13:19
Blonde Girls With Blue Eyes
<a href="http://rollyo.com/Gay-Bathouses8460">Gay Bathouses</a> <a href="http://rollyo.com/Turd-Porn... [続きを読む] posted from Blonde Girls With Blue Eyes 2008.07.24 14:08
Men Fucking Cowboy Boot Fetish
<a href="http://rollyo.com/Daughter-Penetr1609">Daughter Penetrated Her Ass</a> <a href="http://roll... [続きを読む] posted from Men Fucking Cowboy Boot Fetish 2008.07.24 14:48
Sexy Nude Redheads
<a href="http://rollyo.com/Girls-Pooping-I3034">Girls Pooping In Their Panties</a> <a href="http://r... [続きを読む] posted from Sexy Nude Redheads 2008.07.24 15:34
San Antonio Gay Life
<a href="http://rollyo.com/Homemade-Stream8024">Homemade Streaming Porn</a> <a href="http://rollyo.c... [続きを読む] posted from San Antonio Gay Life 2008.07.24 16:17
Free Nude Pics Anna Kournakova
<a href="http://rollyo.com/Bancock-School-7747">Bancock School Boys Nude</a> <a href="http://rollyo.... [続きを読む] posted from Free Nude Pics Anna Kournakova 2008.07.24 17:01
Free Naked Teens
Young Sexy Teens <a href="http://uilypahy8312008.blogspot.com/">Young Sexy Teens</a> Russian Girls G... [続きを読む] posted from Free Naked Teens 2008.07.24 21:02
Nude Male Models
World Of Warcraft Porn <a href="http://euizisidyzypukon4132008.blogspot.com/">World Of Warcraft Porn... [続きを読む] posted from Nude Male Models 2008.07.24 21:44
Japanese School Girls
Free Lesbian Sex Movies <a href="http://www.google.com/notebook/public/08846020943471582394/BDSIKQgo... [続きを読む] posted from Japanese School Girls 2008.07.24 22:27
Jenny Mccarthy Nude
Download Free Porn <a href="http://www.google.com/notebook/public/08846020943471582394/BDRE-QwoQn97Y... [続きを読む] posted from Jenny Mccarthy Nude 2008.07.24 23:31
Free Female Celebs Nude
Big Girls Dont Cry <a href="http://www.google.com/notebook/public/08846020943471582394/BDQPCQwoQjd7Y... [続きを読む] posted from Free Female Celebs Nude 2008.07.25 00:11
Free Webcam Girls
Aunt Polly Sex <a href="http://rollyo.com/Aunt-Polly-Sex3326">Aunt Polly Sex</a> Tyra Banks Nude <a ... [続きを読む] posted from Free Webcam Girls 2008.07.25 00:59
Free Online Porn Movies
Emily Procter Nude <a href="http://rollyo.com/Emily-Procter-N5461">Emily Procter Nude</a> Amateur St... [続きを読む] posted from Free Online Porn Movies 2008.07.25 01:48

この記事にコメントする

ニックネーム:
メールアドレス:
URL:


KBMJのWebソリューション
Ruby on Rails Summer Festival 2008開催決定!!

TOPICS

2008/06/25
ZD Net Builder」の連載記事です。第四回は「Rubyでどう書く?:重複したRSSをまとめる」が掲載されました。

2008/05/30
ZD Net Builder」の連載記事です。第三回は「Rubyでどう書く?:Rubyで特定URLの画像パス一覧を表示する」が掲載されました。

2008/05/07
ZD Net Builder」に連載を始めました。第二回は「Rubyでどう書く?:RubyでPDF履歴書を作成する」が掲載されました。

2008/04/24
アットマーク・アイティ」に『 Rubyを使ってPaSoRi経由でSuicaの乗車履歴を取得し、GoogleMapsやGoogleEarthで表示する』が掲載されました。

全体のRoR最新ブログ一覧

プロフィール

  • ssato
  • 佐藤伸吾(akio0911)です。2008/01からWeb業界に入りました。フィジカルコンピューティングやユビキタスコンピューティングに興味があります。

ブログの購読

RSS

timelog
株式会社ケイビーエムジェイロゴ