mona 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.rspec +1 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +32 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +19 -0
- data/Rakefile +49 -0
- data/VERSION +1 -0
- data/lib/mona.rb +26 -0
- data/lib/mona/board.rb +50 -0
- data/lib/mona/client.rb +10 -0
- data/lib/mona/thread.rb +57 -0
- data/spec/board_spec.rb +27 -0
- data/spec/client_spec.rb +15 -0
- data/spec/mona_spec.rb +5 -0
- data/spec/spec_helper.rb +12 -0
- data/spec/test_data/dat.txt +119 -0
- data/spec/test_data/subject.txt +2 -0
- data/spec/thread_spec.rb +46 -0
- metadata +113 -0
data/.document
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/Gemfile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
# Add dependencies required to use your gem here.
|
3
|
+
# Example:
|
4
|
+
# gem "activesupport", ">= 2.3.5"
|
5
|
+
|
6
|
+
# Add dependencies to develop your gem here.
|
7
|
+
# Include everything needed to run rake, tests, features, etc.
|
8
|
+
gem 'httpclient'
|
9
|
+
group :development do
|
10
|
+
gem "rspec"
|
11
|
+
gem "bundler"
|
12
|
+
gem "jeweler"
|
13
|
+
# gem "rcov", ">= 0"
|
14
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
diff-lcs (1.1.3)
|
5
|
+
git (1.2.5)
|
6
|
+
httpclient (2.2.4)
|
7
|
+
jeweler (1.8.3)
|
8
|
+
bundler (~> 1.0)
|
9
|
+
git (>= 1.2.5)
|
10
|
+
rake
|
11
|
+
rdoc
|
12
|
+
json (1.6.5)
|
13
|
+
rake (0.9.2.2)
|
14
|
+
rdoc (3.12)
|
15
|
+
json (~> 1.4)
|
16
|
+
rspec (2.8.0)
|
17
|
+
rspec-core (~> 2.8.0)
|
18
|
+
rspec-expectations (~> 2.8.0)
|
19
|
+
rspec-mocks (~> 2.8.0)
|
20
|
+
rspec-core (2.8.0)
|
21
|
+
rspec-expectations (2.8.0)
|
22
|
+
diff-lcs (~> 1.1.2)
|
23
|
+
rspec-mocks (2.8.0)
|
24
|
+
|
25
|
+
PLATFORMS
|
26
|
+
ruby
|
27
|
+
|
28
|
+
DEPENDENCIES
|
29
|
+
bundler
|
30
|
+
httpclient
|
31
|
+
jeweler
|
32
|
+
rspec
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 Yamada Masaki
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
= mona
|
2
|
+
|
3
|
+
Description goes here.
|
4
|
+
|
5
|
+
== Contributing to mona
|
6
|
+
|
7
|
+
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
8
|
+
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
|
9
|
+
* Fork the project
|
10
|
+
* Start a feature/bugfix branch
|
11
|
+
* Commit and push until you are happy with your contribution
|
12
|
+
* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
|
13
|
+
* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
|
14
|
+
|
15
|
+
== Copyright
|
16
|
+
|
17
|
+
Copyright (c) 2011 Yamada Masaki. See LICENSE.txt for
|
18
|
+
further details.
|
19
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'bundler'
|
5
|
+
begin
|
6
|
+
Bundler.setup(:default, :development)
|
7
|
+
rescue Bundler::BundlerError => e
|
8
|
+
$stderr.puts e.message
|
9
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
+
exit e.status_code
|
11
|
+
end
|
12
|
+
require 'rake'
|
13
|
+
|
14
|
+
require 'jeweler'
|
15
|
+
Jeweler::Tasks.new do |gem|
|
16
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
+
gem.name = "mona"
|
18
|
+
gem.homepage = "http://github.com/masarakki/mona"
|
19
|
+
gem.license = "MIT"
|
20
|
+
gem.summary = %Q{talk 2ch}
|
21
|
+
gem.description = %Q{talk to 2ch library}
|
22
|
+
gem.email = "masaki@hisme.net"
|
23
|
+
gem.authors = ["masarakki"]
|
24
|
+
# dependencies defined in Gemfile
|
25
|
+
end
|
26
|
+
Jeweler::RubygemsDotOrgTasks.new
|
27
|
+
|
28
|
+
require 'rspec/core'
|
29
|
+
require 'rspec/core/rake_task'
|
30
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
31
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
32
|
+
end
|
33
|
+
|
34
|
+
RSpec::Core::RakeTask.new(:rcov) do |spec|
|
35
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
36
|
+
spec.rcov = true
|
37
|
+
end
|
38
|
+
|
39
|
+
task :default => :spec
|
40
|
+
|
41
|
+
require 'rdoc/task'
|
42
|
+
Rake::RDocTask.new do |rdoc|
|
43
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
44
|
+
|
45
|
+
rdoc.rdoc_dir = 'rdoc'
|
46
|
+
rdoc.title = "mona #{version}"
|
47
|
+
rdoc.rdoc_files.include('README*')
|
48
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
49
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.0
|
data/lib/mona.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
#Mona - 2ch library.
|
2
|
+
#Copyright (C) 2011- masarakki <masaki@hisme.net>
|
3
|
+
#
|
4
|
+
#== How to access 2ch.net
|
5
|
+
#
|
6
|
+
#first, create instance of Board.
|
7
|
+
#if you want to access to hayabusa2.2ch.net/news4vip,
|
8
|
+
# board = Mona::Board.new('hayabusa2', 'news4vip')
|
9
|
+
#then you can get list of Thread by
|
10
|
+
# threads = board.threads
|
11
|
+
#or if you know thread info, you can create Thread instance
|
12
|
+
# thread = Mona::Thread.new(:board => Mona::Board.new('hayabusa2', 'news4vip'), :id => 101010101)
|
13
|
+
#
|
14
|
+
module Mona
|
15
|
+
autoload :Client, 'mona/client'
|
16
|
+
autoload :Board, 'mona/board'
|
17
|
+
autoload :Thread, 'mona/thread'
|
18
|
+
|
19
|
+
VERSION_MAJOR = 0
|
20
|
+
VERSION_MINOR = 1
|
21
|
+
VERSION_PATCH = 0
|
22
|
+
|
23
|
+
def self.version
|
24
|
+
[VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH].join('.')
|
25
|
+
end
|
26
|
+
end
|
data/lib/mona/board.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'kconv'
|
2
|
+
|
3
|
+
#
|
4
|
+
#Board of 2ch.net
|
5
|
+
#
|
6
|
+
class Mona::Board
|
7
|
+
attr_reader :host, :board
|
8
|
+
|
9
|
+
#
|
10
|
+
#=== initialize method
|
11
|
+
#
|
12
|
+
#_host_:: subdomain
|
13
|
+
#_board_:: board name
|
14
|
+
#
|
15
|
+
#==== example
|
16
|
+
#if you want to access http://hayabusa2.2ch.net/news4vip/
|
17
|
+
# Mona::Board.new('hayabusa2', 'news4vip')
|
18
|
+
def initialize(host, board)
|
19
|
+
@host = host
|
20
|
+
@board = board
|
21
|
+
end
|
22
|
+
|
23
|
+
#
|
24
|
+
#=== get threads
|
25
|
+
#
|
26
|
+
#array of Thread
|
27
|
+
#
|
28
|
+
def threads
|
29
|
+
@threads ||= connect.toutf8.lines.map do |line|
|
30
|
+
_, id, title, res_num = line.split(/^(\d+)\.dat<>(.+)\((\d+\))$/)
|
31
|
+
Mona::Thread.new(board: self, title: title.strip, res_num: res_num.to_i, id: id.to_i)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
#
|
38
|
+
#=== url for subject.txt
|
39
|
+
#
|
40
|
+
def dat_url
|
41
|
+
"http://#{@host}/#{@board}/subject.txt"
|
42
|
+
end
|
43
|
+
|
44
|
+
def connect
|
45
|
+
res = Mona::Client.new.get(dat_url)
|
46
|
+
if res.status == 200
|
47
|
+
res.content.toutf8
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/lib/mona/client.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'httpclient'
|
2
|
+
class Mona::Client < ::HTTPClient
|
3
|
+
attr_reader :last_accessed_at
|
4
|
+
def initialize(args = {})
|
5
|
+
agent_name = args.delete(:agent_name) || 'Monazilla'
|
6
|
+
agent_name += "/#{Mona.version} (ruby-mona)"
|
7
|
+
super(agent_name: agent_name)
|
8
|
+
self.transparent_gzip_decompression = true
|
9
|
+
end
|
10
|
+
end
|
data/lib/mona/thread.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'time'
|
2
|
+
|
3
|
+
#
|
4
|
+
#Thread of 2ch.net
|
5
|
+
#
|
6
|
+
#
|
7
|
+
#
|
8
|
+
class Mona::Thread
|
9
|
+
attr_reader :title, :id, :res_num, :board, :last_accessed_at, :dat_size
|
10
|
+
|
11
|
+
#=== initialize method
|
12
|
+
#
|
13
|
+
#==== required options
|
14
|
+
#_:board_:: instance of Board
|
15
|
+
#_:id_:: thread id
|
16
|
+
#==== optionals
|
17
|
+
#_:title_:: title of thread
|
18
|
+
#_:res_num_:: number of res
|
19
|
+
#_:last_accessed_at_:: timestamp of last accessed time
|
20
|
+
#_:dat_size_:: size of known dat file
|
21
|
+
#
|
22
|
+
def initialize(args = {})
|
23
|
+
@board = args[:board]
|
24
|
+
@title = args[:title]
|
25
|
+
@id = args[:id]
|
26
|
+
@res_num = args[:res_num]
|
27
|
+
@last_accessed_at = Time.at(args[:last_accessed_at] || 0)
|
28
|
+
@dat_size = args[:dat_size] || 0
|
29
|
+
end
|
30
|
+
|
31
|
+
def parse_body(body)
|
32
|
+
first = body.lines.first.strip.split(/<>/)
|
33
|
+
@title = first[4] if first[4]
|
34
|
+
end
|
35
|
+
|
36
|
+
def reload
|
37
|
+
headers = {'If-Modified-Since' => @last_accessed_at.rfc2822, 'Range' => @dat_size}
|
38
|
+
res = Mona::Client.new.get(dat_url, :header => headers)
|
39
|
+
|
40
|
+
case res.status
|
41
|
+
when 200
|
42
|
+
@dat_size += res.body.bytesize
|
43
|
+
@last_accessed_at = Time.rfc2822(res.header["Last-Modified"].first)
|
44
|
+
body = res.body.toutf8
|
45
|
+
pase_body body
|
46
|
+
body
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
#
|
52
|
+
# === url for thread dat
|
53
|
+
#
|
54
|
+
def dat_url
|
55
|
+
"http://#{board.host}/#{board.board}/dat/#{id}.dat"
|
56
|
+
end
|
57
|
+
end
|
data/spec/board_spec.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
3
|
+
|
4
|
+
def test_subject
|
5
|
+
File.read(File.expand_path(File.dirname(__FILE__) + '/test_data/subject.txt'))
|
6
|
+
end
|
7
|
+
|
8
|
+
describe Mona::Board do
|
9
|
+
before do
|
10
|
+
Mona::Board.any_instance.stub(:connect) { test_subject }
|
11
|
+
end
|
12
|
+
|
13
|
+
subject { Mona::Board.new('localhost', 'board_001') }
|
14
|
+
its(:dat_url) { should eq("http://localhost/board_001/subject.txt") }
|
15
|
+
describe :threads do
|
16
|
+
subject { Mona::Board.new('localhost', 'board_001').threads }
|
17
|
+
its(:count) { should eq 2 }
|
18
|
+
its('first.title') { should eq'【東京】岩手の食材をテーマにした居酒屋が復興目指して急遽オープン' }
|
19
|
+
its('first.id') { should eq 1317477718 }
|
20
|
+
its('first.res_num') { should eq 49 }
|
21
|
+
its('first.board') { should eq subject }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe Mona::Board, 'real' do
|
26
|
+
subject { Mona::Board.new('hibari.2ch.net', 'prog') }
|
27
|
+
end
|
data/spec/client_spec.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe Mona::Client do
|
4
|
+
before do
|
5
|
+
Mona.stub(:version) { '0.7.2' }
|
6
|
+
end
|
7
|
+
context :with_args do
|
8
|
+
subject { Mona::Client.new(agent_name: 'UnkoBrowser') }
|
9
|
+
its(:agent_name) { should eq 'UnkoBrowser/0.7.2 (ruby-mona)' }
|
10
|
+
end
|
11
|
+
context :without_args do
|
12
|
+
subject { Mona::Client.new }
|
13
|
+
its(:agent_name) { should eq 'Monazilla/0.7.2 (ruby-mona)' }
|
14
|
+
end
|
15
|
+
end
|
data/spec/mona_spec.rb
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
+
require 'rspec'
|
4
|
+
require 'mona'
|
5
|
+
|
6
|
+
# Requires supporting files with custom matchers and macros, etc,
|
7
|
+
# in ./support/ and its subdirectories.
|
8
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
9
|
+
|
10
|
+
RSpec.configure do |config|
|
11
|
+
|
12
|
+
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
�d�l����������<>sage<>2008/05/07(��) 17:50:10 <> �ق����Ă����Ă� <br> �T�Ɉ��A�P���ԎQ������Ƃ� <br> ���̒��x�ł����ǁB <br> <br> ��V�͐��_�I��V�݂̂� <br> �����͕����܂���B <br> <br> �������Ȃ��ƃq�}�Ŏ��ɂ����Ȑl�����H <>�E�c�a�̃v���O���}�[���ق��X��
|
2
|
+
�d�l����������<>sage<>2008/05/07(��) 17:52:50 <> 2get <br> <br> �������̐l�ɖ��f�ɂȂ邩�畅�����~�J���͍��������Ȃ��ł��������B <>
|
3
|
+
�d�l����������<>sage<>2008/05/07(��) 17:58:12 <> �܂��X�^�[�g���ĂȂ��� <br> �[������͂��߂�v���W�F�N�g�ł��B <br> <br> �S���E�c�a�̃v���O���}�[�ō\���������B <>
|
4
|
+
�d�l����������<>sage<>2008/05/07(��) 18:28:37 <> �����ĒN�����Ȃ��Ȃ��� <>
|
5
|
+
�d�l����������<>sage<>2008/05/07(��) 20:29:21 <> �T�a�ł� <br> �o�ɐ��T(�����T)�Ƃ����B��Q���ǂ̟T�Ƃ����낢�날��܂����ǁA <br> ������Ƃ��A�ǂ��ł��̂�H�@ <>
|
6
|
+
�d�l����������<>sage<>2008/05/07(��) 21:44:06 <> ���肪�����b�����ǂ� <br> �J�t�F�܁[����Ɠ����I�`�Ȃ�˂��́H <br> ���N�����������ɏo�Ă����l�^����� <>
|
7
|
+
�d�l����������<><>2008/05/07(��) 21:57:58 <> �݂�ȂŐ����̃e�B���|���r�߂�X�����Ă��Ƃ��ȁH <>
|
8
|
+
�d�l����������<>sage<>2008/05/07(��) 21:59:14 <> �n���ɂ����Ђł����ł����ł��Ă���A <br> �ق�Q�������B <br> �킴�킴���o�͂��Ȃ����ǁB <>
|
9
|
+
�d�l����������<>sage<>2008/05/07(��) 22:27:38 <> �E�c���Ǝv���Čق��Ă��� <br> ���̂܂ɂ��N�]���Ă���тт�܂���ˁB <br> <br> �ق��A���Ă����Ă������͂��Ȃ��� <br> ���_�I��V�݂̂ł��B <br> ��ƗÖ@�ɋ߂��H <br> <br> �l�b�g�o�R�ł����g������Ȃ̂� <br> �ǂ��ɏZ��ł��Ă��Ă�����܂� <br> �W�Ȃ������H <>
|
10
|
+
�d�l����������<><>2008/05/07(��) 22:54:28 <> �ŁA������́H <br> ���m�ȃr�W�������Ȃ��̂ɂ���Ȃ��ƌ����悤����ˁB <>
|
11
|
+
�d�l����������<><>2008/05/07(��) 23:01:37 <> �v���W�F�N�g�E�E�m���� <>
|
12
|
+
�d�l����������<>sage<>2008/05/07(��) 23:14:57 <> sage <>
|
13
|
+
�d�l����������<>sage<>2008/05/08(��) 11:38:46 <> ���C�Ȃ��Q�[���ł���낤�� <br> �T�a�̃v���O���}�[��f�v���ăv���O������������V�~�����[�V���� <br> ���ꂾ���̃Q�[����T�a�}���W�܂��č���Ă����ƟT�� <br> <br> ���ɖ{�C�ɂȂ����z����@���o�������� <>
|
14
|
+
�d�l����������<>sage<>2008/05/08(��) 13:20:06 <> �Q�[���ł����ł�����Ă݂�̂͂��������ˁB <br> TeamUTU. <br> <>
|
15
|
+
�d�l����������<>sage<>2008/05/08(��) 14:13:17 <> �`�[���T�I�I <>
|
16
|
+
�d�l����������<>sage<>2008/05/08(��) 14:14:09 <> �A�z�ȃA�����J�l�����܂��� <br> �u�T�v <br> �Ƃ����^���D�[����ꂳ����v���W�F�N�g <>
|
17
|
+
�d�l����������<>sage<>2008/05/08(��) 14:29:56 <> �u�I�A�i�C�X �f�U�C���v <>
|
18
|
+
�d�l����������<><>2008/05/08(��) 14:51:24 <> �I�E �G�C�W�A���e�C�X�g �x���[�i�C�X�I <>
|
19
|
+
�d�l����������<><>2008/05/08(��) 14:58:34 <> �_�� <>
|
20
|
+
�d�l����������<>sage<>2008/05/08(��) 19:24:40 <> �y�J�����z�`�[���S�������ސE�c�u�l�ގg���̂Ċ�Ɓv�ʼn����N������ [08/05/07] <br> http://news24.2ch.net/test/read.cgi/bizplus/1210172261/ <br> <>
|
21
|
+
�d�l����������<>sage<>2008/05/09(��) 00:43:43 <> ��Ђɉ��Ƃ��ʋ��Ă�T�}�ł��Q���ł��܂��H <br> <br> �̂͋x�݂������ğT�ɂȂ������ǁA <br> �]�E�������ł͉ɂ����ǁA��i���������A���şT�B�i���܂�VB6�Ɖ���DB�ɂ����݂��Ă�c <>
|
22
|
+
�d�l����������<>sage<>2008/05/09(��) 02:40:55 <> �l�������ł��ɂȂ����̂��A <br> �d���������ĂȂ��Ă��ɂȂ����̂��A <br> �������炢�͊m�F�����ق���������ˁA�B <>
|
23
|
+
�d�l����������<>sage<>2008/05/10(�y) 02:34:43 <> �����������Ń_���ɂȂ����������܂����� <br> ���̘J��������Ă݂����nj����Ȃ������� <>
|
24
|
+
�d�l����������<><>2008/05/14(��) 11:08:04 <> �����I��肩 <>
|
25
|
+
�d�l����������<><>2008/05/14(��) 11:43:20 <> ��������B <br> �����Ƃ��̊J�����̂����点��̂��B <br> ���[�����O���X�g�Ƃ�����̂��B <br> ���Ԍ���ɂ���H���Ȃ�B <br> �l����ƃE�c�ɂȂ肻��������A����ȏ�͍l�������Ȃ��B <br> <>
|
26
|
+
�d�l����������<>sage<>2008/05/14(��) 13:36:59 <> �i�P�j <br> �������̂��Ƃ������Ƃł����A <br> ���̏�ł͔���J�Ƃ����Ă��������܂��B <br> <br> ���R�́A�ȑO���J������Ђǂ��ڂɂ����� <br> ���ꂩ��w�K��������ł��B <br> <br> �i�Q�j <br> �����Ƃ��̊J�����̂����点��̂� <br> �Ƃ������Ƃł����A�����ł��B <br> �������ق����\�t�g�������Ă���������� <br> �g�߂Ȃ��̂őg�߂�l���m�ۂ������Ƃ������Ƃł��B <br> �ł������͕����܂���B���_�I��V�݂̂ł��B <br> ����ȊO�̕�V�͂���܂����A�����ł͏����܂���B <br> �ʂɃ��[����IM���Ŗʒk�ɂȂ����Ƃ��ɋ����܂��B <br> <br> (3)���Ԍ���Ă����̂́A��W����������Ԃ�����A�A�A <br> �Ƃ����Ӗ��ł��傤���H <br> ����Ƃ��J�����Ԃ̂ق��H <>
|
27
|
+
�d�l����������<><>2008/05/14(��) 13:45:04 <> <a href="../test/read.cgi/prog/1210150210/26" target="_blank">>>26</a> <br> �������ق����\�t�g���ĉ��ł����H <br> ���Ȃ����o�l�ɂ��āA���ʕ��̓t���[�Ŕz�z�ɂ���H <br> �S�Đ��_�I��V�Ƃ������Ƃɂ���B <br> <br> �J�����Ԃ̕��ł��B <>
|
28
|
+
�d�l����������<>sage<>2008/05/14(��) 13:47:10 <> �S�g���Ƃ��v���I�ȕ������ł��R�[�h��ł��Â������M�Ɛ��_�͂��~���� <>
|
29
|
+
�d�l����������<>sage<>2008/05/14(��) 13:57:15 <> �O�[�O���݂����� <br> �u���[���[�U�[�̗��p�͖����v <br> �݂����ɂ��Ă������ł����ǁA <br> ���W�b�N�̕�����R�A�̕����� <br> ����J�ł�肽���̂ł��B <>
|
30
|
+
�d�l����������<><>2008/05/14(��) 14:22:14 <> �܂��A��������ł����H <>
|
31
|
+
�d�l����������<>sage<>2008/05/14(��) 14:43:20 <> sage <>
|
32
|
+
�d�l����������<><>2008/05/14(��) 17:26:00 <> �Ȃ�Ńv���O���}�[���ĉT�ɂȂ�l�������̂ł��傤�H <>
|
33
|
+
�d�l����������<>sage<>2008/05/14(��) 17:47:39 <> �v�ʼnT�������H�Ȃɂ��̌Œ�T�O <>
|
34
|
+
�d�l����������<>sage<>2008/05/15(��) 16:16:31 <> �o���h�}���̕��������� <>
|
35
|
+
�d�l����������<>sage<>2008/05/15(��) 18:29:33 <> �v���ė��Ɉ�a��������܂��� <>
|
36
|
+
�d�l����������<><>2008/05/18(��) 18:05:13 <> �Ȃɂ��́u���E����́H���Ⴀ���̑O��SEX�����āv�݂����ȗ��_www <br> ����PJ�ɎQ�����邱�ƂłȂɂ������b�g����́H <br> ���_�I��V���ċ�̓I�ɉ��H <br> �Ȃ��T�̃v���O���}���g�����Ǝv�����́H <>
|
37
|
+
�d�l����������<><>2008/05/18(��) 18:23:17 <> <a href="../test/read.cgi/prog/1210150210/36" target="_blank">>>36</a> <br> �ٗp���ɑ傫�ȃ����b�g�����邾�� <br> ���_�I��V��^���邱�Ƃɂ��A�����I��V�̓[���ɉ��������� <br> <br> �u���E����́H���Ⴀ���̑O��SEX�����āv���_���̂��̂��� <>
|
38
|
+
�d�l����������<><>2008/05/28(��) 21:32:57 <> �����I��肩 <>
|
39
|
+
�d�l����������<>sage<>2008/05/28(��) 22:12:58 <> �o�J�̉��ł����g����Ȃ�āA�������蒦�肾�� <>
|
40
|
+
�d�l����������<>sage<>2008/05/28(��) 22:16:04 <> �������_�I��V���ĈӖ�ܶ�� <br> ���͌�500���ԘJ�����������Ƃ��ł� <br> �����\���ȕ����I��V���������� <br> ���_���Ȃ������Ǝv���ˁB <br> <br> �܂�<a href="../test/read.cgi/prog/1210150210/36" target="_blank">>>36</a>�ł��̃X���̑S�Ă�����Ă�킯�����B <>
|
41
|
+
�d�l����������<><>2008/05/28(��) 22:47:56 <> �o���炵�Œ������܂��傤�݂����ȁB <br> ���v���������˂݂����ȁB <>
|
42
|
+
�d�l����������<>sage<>2008/05/28(��) 23:20:25 <> ���_�I��V�Ƃ����̂͑��l����̕]�� <br> ���Ȃ킿�����I��V�̂��Ƃł���ˁH <br> �����⋋���͕���Ȃ������ł����A <br> �������i����N�[�|�����ȂNJ������̍������̂Ȃ牽�ł�OK�ł���B <>
|
43
|
+
�d�l����������<>sage<>2008/05/29(��) 04:23:04 <> ���C���̕�V�͎d����^���Ă�邱�ƁB <br> <br> �͂ĂȂ̋��l��W�̃y�[�W����Ƃ����Ă��邯�� <br> <br> �u�������ׂ��������ōl���邱�Ƃ��ł��� <br> �Ȃ��������ŃR�[�f�B���O���ł���l�v <br> <br> ���Ă̂��W���Ă邯�ǁA����Ȑl�͏��Ȃ��̂� <br> �͂ĂȂ͐l�ޕs���Ő������~�܂���̂Ǝv����B <br> <br> ��������A�l����l�ƃR�[�f�B���O����l�� <br> �������ق��������I�ł���ˁB <>
|
44
|
+
�d�l����������<>sage<>2008/05/29(��) 20:39:21 <> sage <>
|
45
|
+
�d�l����������<><>2008/06/11(��) 02:32:18 <> age <>
|
46
|
+
�v���O���}�[����<><>2008/06/15(��) 03:40:41 <> �v���O���}�[�̕��� <br> �`�[�g������Ă��炢�����ł��B <br> �ڂ����̓��[���Řb�������Ǝv���܂��B <br> masaki18952005@yahoo.co.jp <br> ����Ă��炢�`�[�g��LOSTONLINE�̃`�[�g�ł��B <>
|
47
|
+
�v���O���}�[����<><>2008/06/15(��) 03:42:26 <> ����1000�~ <br> �������͎���1000WM���l���Ă��܂��B <>
|
48
|
+
�v���O���}�[����<><>2008/06/15(��) 03:57:09 <> �쐬�������y�ю����쐬�����ɂ́A��V���܂��B <>
|
49
|
+
�d�l����������<>sage<>2008/06/15(��) 16:21:08 <> 2ch�ŕ�W����ނŁA�㕥���Ƃ��M�p�ł��Ȃ����ƚ삵�� <>
|
50
|
+
�v���O���}�[����<><>2008/06/15(��) 18:01:02 <> �v���O���}�[�̕��Ȃ�A�h�o�ׂ�MAC�A�h���X�ׂ邱�Ƃ��炢�ł���ł��傤 <>
|
51
|
+
�d�l����������<>sage<>2008/06/15(��) 18:09:01 <> ���߂Ď��� <>
|
52
|
+
�v���O���}�[����<><>2008/06/15(��) 18:55:08 <> ����1000~1500WM�����܂����Ă� <>
|
53
|
+
�d�l����������<>sage<>2008/06/15(��) 19:08:37 <> �����玩�����ĂȂ� <br> �������炢������悤�ɂȂ��Ă��痈�� <>
|
54
|
+
�v���O���}�[����<><>2008/06/15(��) 19:15:38 <> �X�}�l�[�}���ł�����뎚�ɂ��Â��Ȃ������� <br> ����1000WM ~1500WM�ŗ��ނ� <br> LOSTONLINE �̎��ŗ��݂܂� <>
|
55
|
+
�d�l����������<>sage<>2008/06/15(��) 19:25:13 <> ���̃`�[�g��MAC�A�h���X���ǂ��W���邩�������Ă���B <>
|
56
|
+
�v���O���}�[����<><>2008/06/15(��) 20:32:10 <> ����A�]�����āA�����҂��̂����������Ȃ����� <br> MAC�A�h���X��N���z�X�g�ׂĂ����ĐF�X��������������Ă��� <br> �ʂɋC�ɂ��Ȃ��l�͂������� <>
|
57
|
+
�d�l����������<>sage<>2008/06/15(��) 20:44:21 <> �����̍��ŕ�W������H <br> �Ȃ����{�l���J���ɏo����Ǝv�����̂�������Ȃ����ǁA <br> ���̓��{��͂���N���M�p���܂����B <>
|
58
|
+
�v���O���}�[����<><>2008/06/15(��) 20:58:54 <> �����A���{�l�ł� <>
|
59
|
+
�d�l����������<>sage<>2008/06/15(��) 21:05:52 <> <a href="../test/read.cgi/prog/1210150210/58" target="_blank">>>58</a> <br> ���A����1000�~���Ⴀ �l��16���v�Z�ɂȂ����Ⴄ���� <br> �ǂ�Ȓ�ӂ̃v���O���}�����čŒ�30���͎����� <br> ���ɍ���Ȃ��� <>
|
60
|
+
�d�l����������<>sage<>2008/06/15(��) 21:06:08 <> >57 <br> �ŋ߂̂�Ƃ�͂���Ȃ����H <>
|
61
|
+
�d�l����������<>sage<>2008/06/15(��) 21:06:45 <> �l�����Z�Ō����ƁA��ӂł�30���A���ʂ�80�`160�������ꂾ�� <>
|
62
|
+
�d�l����������<>sage<>2008/06/15(��) 21:16:55 <> �Ƃ����masaki18952005@yahoo.co.jp�������ȏo��n�T�C�g�ɓo�^���܂����Ă����H <>
|
63
|
+
�d�l����������<>sage<>2008/06/15(��) 21:17:43 <> <a href="../test/read.cgi/prog/1210150210/50" target="_blank">>>50</a> <br> MAC�A�h���X��ip�A�h���X���A�l���ؖ�������̂ɂ͂Ȃ蓾�Ȃ� <br> �ǂ��������Ȃ��������x���̍�ƂŃ��[�U���C�ӂɕύX���邱�Ƃ��\ <br> ��Ƃ�͂������ƐQ�� <>
|
64
|
+
�d�l����������<>sage<>2008/06/15(��) 21:19:00 <> MAC�A�h���X�͐��E�Ɉ�����Ȃ��� <>
|
65
|
+
�d�l����������<>sage<>2008/06/15(��) 21:25:29 <> <a href="../test/read.cgi/prog/1210150210/64" target="_blank">>>64</a> <br> (��) <>
|
66
|
+
�d�l����������<>sage<>2008/06/15(��) 21:27:10 <> ���̒��ɂ�MAC�A�h���X��ς�����{�[�h������Ƃ͖��ɂ��v���Ă͂��Ȃ��̂��낤�Ȃ� <>
|
67
|
+
�d�l����������<>sage<>2008/06/15(��) 21:33:47 <> �Ƃ�����MAC�A�h���X�����Ȃ̂���m��Ȃ��Ǝv���B <>
|
68
|
+
�d�l����������<>sage<>2008/06/15(��) 21:38:10 <> <a href="../test/read.cgi/prog/1210150210/66" target="_blank">>>66</a> <br> �ꉞ�A���O���MAC�A�h���X�͐��E�łЂƂł���悤�ɂ��ׂ� <br> ���[�K�肪�������A���Ȃ����ԈႢ�ł��Ȃ��B <br> �d�l�Ǝ���͂킯�čl���悤�B <>
|
69
|
+
�d�l����������<>sage<>2008/06/15(��) 21:38:39 <> ��������̃A�h���X�т�����̒��Ŗl�́� <>
|
70
|
+
�d�l����������<>sage<>2008/06/15(��) 21:40:55 <> ���������ꍇ�ɏd�v�Ȃ͎̂d�l������Ȃ̂ł́H <>
|
71
|
+
�d�l����������<>sage<>2008/06/15(��) 21:56:35 <> ������ˋ����\�̃T�C�g�������Ƃ�����ǂ��A <br> ������̃v���o�C�_���Ƃ��AIP�A�h���X�Ƃ��\�����āA <br> �F�؊����������炢���略���A�Ƃ����ďo���Ă����ˁB <br> ����A����Ȃ�ɒm�����Ȃ��ƁA <br> �|�����略���Ă��������ĂȂ�l�����邾�낤�Ȃ��Ǝv������B <br> <br> ���ɒ��J�ŁAIP�A�h���X�Ƃ��p������������������Ă�����ǁA <br> �����ɉR���Ă��ȁB�� <>
|
72
|
+
�d�l����������<>sage<>2008/06/15(��) 22:02:46 <> ��1 <br> 365�l�̃v���O���}��ג��o���A <br> ���̂Ƃ��S���̒a���������ꂼ��Ⴄ�m�������߂�B <br> <br> ��2 <br> ��1�̌��ʂ����ɁA <br> MAC�A�h���X�����E�Ɉ�����Ȃ��Ƃ��������̔����ɂ��ďq�ׂ�B <>
|
73
|
+
�d�l����������<>sage<>2008/06/15(��) 22:03:01 <> �߉ނɐ��@�Ƃ����̂��T���猩�Ă��镪�ɂ͖��˂ƕς��Ȃ� <>
|
74
|
+
�d�l����������<>sage<>2008/06/16(��) 00:02:32 <> �[���A�S�����S���Ⴄ���Ă����[�Ȃ����� <br> �ӂ[�ɔ����Ăӂ[�Ɏg���Ă�l�b�g���[�N�� <br> �܂���ӂ�MAC�A�h���X���낊�� <>
|
75
|
+
�d�l����������<>sage<>2008/06/16(��) 00:03:33 <> MAC�A�h���X�Ǘ���ς�����̂͏펯�Ƃ��Ă� <br> �{�����j�[�N���Ƃ����̂��܂��펯����� <>
|
76
|
+
�d�l����������<>sage<>2008/06/16(��) 00:12:58 <> �ł́A�`�[�g�̌��̓X���[�ł����܂����H <>
|
77
|
+
�d�l����������<><>2008/06/16(��) 05:33:34 <> �T�a�ł��C���Ȃ��A���������邩�킩��܂��� <br> PHP�APerl��WEB�G���W�j�A�A���Ј��ٗp�Ō�50��x16�����œ����܂��B <br> �ٗʘJ�����Ŏ��R�o�Ђł��肢���܂��B <br> �s���A�ł����TX�������Ŗ��͑�]�ː������ŁB <br> <>
|
78
|
+
�d�l����������<><>2008/06/16(��) 20:07:20 <> http://jp.youtube.com/watch?v=xd5TCDgQ4_w <>
|
79
|
+
�d�l����������<><>2008/06/17(��) 16:19:05 <> �U���h���ɃX������Ă��ׂ���Ȃ���B <br> ���V�X�e���ł��H <>
|
80
|
+
�d�l����������<><>2008/06/17(��) 16:20:01 <> �U���h���ɃX������Ă��ׂ���Ȃ���B <br> ���V�X�e���ł��H <>
|
81
|
+
�d�l����������<><>2008/06/17(��) 16:21:00 <> 2�d���e�B�^���ɋ߂��̂��ȁB <>
|
82
|
+
�v���O���}�[����<><>2008/06/21(�y) 21:16:24 <> aaaaaa <>
|
83
|
+
�d�l����������<><>2008/06/21(�y) 22:39:02 <> http://storage.irofla.com/?name=hatten&type=swf <>
|
84
|
+
�d�l����������<><>2008/06/21(�y) 22:56:05 <> �ׂ��悤�Ƃ���Ȃ�A��Ђ���Ȃ菟��ɂ�������b�ŁB <br> ���N�Ȑl�Ԃ��ق��Ėׂ�������B <br> ���ꂪ�ł��Ȃ�����T�a�̐l���ق��Ƃ����͍̂D���ɂȂ�Ȃ��B <br> �����ł��b����Ȃ����낤�B <br> <br> �����~�����Ȃ�A�T�a�҂͗����̂��錒�S�Ȍo�c�҂�I�сA <br> �����ŋ��l����l�͑����Ō��N�Ȃo�f���ق������B <br> <br> �����ł́A�T�a�̂o�f����c���I�Ȋ����ŎЉ�v���o�����ɂł��Ȃ����B <>
|
85
|
+
�d�l����������<>sage<>2008/06/21(�y) 23:07:45 <> �T�̐l�� �T�̐l���W�߂� �������UTSU ��ݗ�������� <>
|
86
|
+
�d�l����������<><>2008/06/21(�y) 23:17:37 <> �m�f�n�����B <br> <br> �T�a�̂o�f���W�߂āA�����̎q�������Ƀv���O���~���O�̊y������������Ƃ����v���W�F�N�g�B <br> ���ނ̓}�C�N���\�t�g��VisualStudio���g�p����B <br> ����͂l�r�̌��݂̐헪�ƍ��v����̂ŁA�l�r�̋��͂������邩������Ȃ��B <>
|
87
|
+
�d�l����������<>sage<>2008/06/22(��) 00:06:29 <> <a href="../test/read.cgi/prog/1210150210/86" target="_blank">>>86</a> <br> �T�̐l�����Ɂu�y�����v����������킯��������E�E�E <br> �y����������T�ɂȂ�ˁ[�� <>
|
88
|
+
�d�l����������<>sage<>2008/06/22(��) 08:40:02 <> �q�ǂ������u�v���O��������Ă�ƁA�E�c�Ă����̂ɂȂ����Ⴄ�̂�...�v <>
|
89
|
+
�d�l����������<>sage<>2008/06/22(��) 14:20:52 <> ��[�B <br> �ł��A���ł����T�����Ă邯�ǁA <br> �{���̓v���O���~���O�D���ł��傤���Ȃ���A���Đl <br> ���\�����Ȃ����Ǝv�����ǂȂ��c <br> <br> <a href="../test/read.cgi/prog/1210150210/86" target="_blank">>>86</a> <br> �u�����̎q�������v���āc���͉��H�� <>
|
90
|
+
�d�l����������<>sage<>2008/06/22(��) 19:43:59 <> <a href="../test/read.cgi/prog/1210150210/89" target="_blank">>>89</a> <br> �v���O���~���O�̃X�g���X�� �v���O���~���O�ŏ����� <br> <br> ���Đ��r�̔h���̐l�������Ă��� <>
|
91
|
+
�d�l����������<>sage<>2008/06/24(��) 19:55:00 <> �f�o�b�O�̘b�Ȃ��ĂȂ��B <>
|
92
|
+
�d�l����������<>sage<>2008/06/25(��) 01:56:18 <> �W�E�G���h���ق��� <>
|
93
|
+
�d�l����������<>sage<>2008/06/28(�y) 23:40:44 <> �����x���@��\�����B <>
|
94
|
+
�d�l����������<>sage<>2008/06/29(��) 18:26:30 <> ����Ȗ@�ɗ��鎞�_�Ŏ������N�\��������� <>
|
95
|
+
93<>sage<>2008/06/30(��) 11:13:55 <> �܂��������ĂȂ��̂ꂷ�B <>
|
96
|
+
�d�l����������<><>2008/07/01(��) 00:14:02 <> �A���R�[���ˑ��ǂ͕a�C�ł��B ���Â��K�v�ł��B <br> <br> �ł��A�A���R�[���ˑ��ǂɂȂ�O�͂ǂ��������̂ł��傤���B <br> �����S�̖����A���炵�Ȃ��l�������̂ł͂Ȃ��ł��傤���B <br> <br> <br> <br> �T���a�C�ł��B <br> �ł����A�����Ɏ���܂ł̌o�܂͂ǂ̂悤�Ȃ��̂������̂ł��傤���B <>
|
97
|
+
�d�l����������<>sage<>2008/07/01(��) 00:46:54 <> �Ë����邱�Ƃ��o���Ȃ������Ɍ������ЂƂ�������Ȃ����� <>
|
98
|
+
�d�l����������<><>2008/07/01(��) 07:16:25 <> <a href="../test/read.cgi/prog/1210150210/74" target="_blank">>>74</a> <br> <a href="../test/read.cgi/prog/1210150210/75" target="_blank">>>75</a> <br> ���������̏��S�҂߁B <br> <br> �����MAC�A�h���X���������Ă邩��A <br> ���E�ɂЂƂ���Ȃ���B <br> �ӂӂӁB <br> <>
|
99
|
+
�d�l����������<><>2008/09/15(��) 18:05:00 <> �X�N�G�j�̒��J��͂��Ȃ�̐��_�a���ҁB <br> �������߂�I�ޏ������E�ɒǂ������A���t���Ă�B <>
|
100
|
+
�d�l����������<>sage<>2009/03/31(��) 22:09:21 <> �a�@�ɍs������T�f�f���ꂽ���ƂȂ��ł��� <br> ��{�I�ɈÂ��Ƃ����܂� <br> �ȑO�ꎞ�������E��Ŏ�������ƉT���`��������Č����܂��� <br> ���ʁA�����ɂ��̈Č��͏I�����܂��� <>
|
101
|
+
100<><>2009/03/31(��) 22:09:45 <> ���͉T�Ȃ�ł��傤���H <>
|
102
|
+
�d�l����������<>sage<>2009/03/31(��) 22:14:29 <> ��҂ɕ��� <>
|
103
|
+
�d�l����������<>ri2121-ys0711@docomo.ne.jp<>2009/03/31(��) 22:23:07 <> �������������� <>
|
104
|
+
�d�l����������<><>2009/04/01(��) 02:00:28 <> PC�̓d���g�ƟT�a�Ɖ��炩�̈��ʊW������悤�ȋC������B <>
|
105
|
+
�d�l����������<>sage<>2010/11/22(��) 17:13:50 <> ����͂Ȃ��B�����A����ȋC������Ȃ�A���ȃP�[�X�ɂ�����ǂ����B <>
|
106
|
+
�d�l����������<><>2011/01/31(��) 01:29:48 <> �E�c�̌��� <br> http://www.youtube.com/watch?v=XVRrOQzH-FI <>
|
107
|
+
�d�l����������<>sage<>2011/02/10(��) 12:52:21 <> �H�Z�������Ȃ����B <br> �ق��Ă���B <br> ���S�O�O�O�~�̃l�b�g����~�������lj�Ђ̉���ƒ[���݂��Ă����Ȃ炻��ł����B <br> �ꉞ���ȏЉ� <br> �@�w�m�A�R�P�A�Ɩ����R�N�A�傽��J������o�g�o�A�i�`�u�`�A�`�a�`�o <br> �����A�����Ў�ԂɃf�o�b�O�o������B <br> �����o���A�����������Apostgle�i�^�p�j <br> �Ɩ��͕����A�g�ݍ��݁B <br> �����ȂƂ����荞�܂��¶�Ȱ���ēz�ł����B <br> ��Q�ҕs�F��A�����ی�͈�҂Ƀ_���Ƃ���ꂽ�B�z�[�����X�ɂȂ肽���Ȃ� <>
|
108
|
+
�V�g </b>��uL5esZLBSE <b><>sage<>2011/07/01(��) 22:13:46.37 <> Ruby�o�J�ɂ��Ă�q���Ă� <br> �ϐ��Ɂ����Ă錾��G���Ă���Ď������ <br> <br> ��������SHIFT�{�S�L�[������ �� �ł��܂����Ă銴�G�͂ǂ��H <>
|
109
|
+
�d�l����������<>sage<>2011/07/03(��) 23:42:51.74 <> �N�]����Ƃ���Ȃӂ��ɖ\������ <>
|
110
|
+
�V�g </b>��uL5esZLBSE <b><>sage<>2011/07/06(��) 09:34:29.24 <> ���������� <br> �i�i�i�i�i�i Ruby�o�J�ɂ��Ă�q���Ă� �j�j�j�j�j�j�i�L���b�b!!!�L���b!!�����b�b!�b�b�b�I�I�I�I <br> ���� <br> �i�i�i�i�i�i�i�i�i�i�i �ϐ��Ɂ����Ă錾��G���Ă���Ď������ �j�j�j�j�j�j�j�j�j�j�j(�����b�b�I�I�I�I <br> �������� <br> �i�i�i�i�i ��������SHIFT�{�S�L�[������ �� �ł��܂����Ă銴�G�͂ǂ��H �j�j�j�j�j(�L���b�b�b�b!!�����b�b�b�b�L���b�b�b!!�����b�b�b�I�I�b�b�I�I <br> <br> <br> �ȂA�����̃S�~�� <>
|
111
|
+
�d�l����������<><>2011/10/02(��) 09:41:03.60 <> <a href="../test/read.cgi/prog/1210150210/109" target="_blank">>>109</a> <br> ����͂Ȃ��B <>
|
112
|
+
�d�l����������<><>2011/10/03(��) 13:54:11.55 <> �q���͕a�C�ł��B ���Â��K�v�ł��B <>
|
113
|
+
�d�l����������<><>2011/10/08(�y) 15:47:38.85 <> 101 �F100 [] �F2009/03/31(��) 22:09:45 <br> ���͉T�Ȃ�ł��傤���H <br> <br> <br> 102 �F�d�l���������� [��] �F2009/03/31(��) 22:14:29 <br> ��҂ɕ��� <br> <>
|
114
|
+
�d�l����������<><>2011/10/08(�y) 16:03:25.82 <> <a href="../test/read.cgi/prog/1210150210/107" target="_blank">>>107</a> <br> ���ꂾ������h����T���A <br> ���\����Ǝv���B <br> �R�P�˂ł���H <br> �܂��܂��Ⴂ�I <br> <>
|
115
|
+
�d�l����������<>sage<>2011/10/10(��) 00:06:50.03 <> ������ꂽ <br> ���ɂ����B�B�B <>
|
116
|
+
�d�l����������<><>2011/10/11(��) 08:59:58.74 <> ���ʋC�ɂȂ��Ă������ł��Ȃ��B <br> ���C�ɂȂ��ĊJ������A��������B <br> <br> ���ꂪ�ǂ������B���ɂ͊W�Ȃ��B <br> �̐��_�ł����� �X�ɂ悵�B <>
|
117
|
+
�d�l����������<><>2011/10/11(��) 09:24:04.97 <> 101 �F100 [] �F2009/03/31(��) 22:09:45 <br> ���͉T�Ȃ�ł��傤���H <br> <br> <br> 102 �F�d�l���������� [��] �F2009/03/31(��) 22:14:29 <br> ��҂ɕ��� <>
|
118
|
+
�d�l����������<>sage<>2011/10/11(��) 14:07:31.15 <> �T�Ŏ��ɂ������ǎ��ʋC�͂������Ȃ�ēz���������� <>
|
119
|
+
����������<><>2011/10/26(��) 16:34:26.90 <> what'snow�@���E�҂𑝂₵���Ɛl�́E�E�E!! <br> http://www.youtube.com/watch?v=6V7sBnvAtLE <>
|
data/spec/thread_spec.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
3
|
+
|
4
|
+
def test_dat
|
5
|
+
File.read(File.expand_path(File.dirname(__FILE__) + '/test_data/dat.txt'))
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
describe Mona::Thread do
|
10
|
+
|
11
|
+
let(:accessed_at) { Time.now - 6400 }
|
12
|
+
let(:board) { Mona::Board.new('localhost', 'board_001') }
|
13
|
+
|
14
|
+
subject { Mona::Thread.new(title: 'title', board: board, id: 101010, res_num: 34, dat_size: 100, last_accessed_at: accessed_at) }
|
15
|
+
its(:title) { should eq 'title' }
|
16
|
+
its(:board) { should eq board }
|
17
|
+
its(:id) { should eq 101010 }
|
18
|
+
its(:res_num) { should eq 34 }
|
19
|
+
its(:last_accessed_at) { should eq accessed_at }
|
20
|
+
its(:dat_url) { should eq "http://localhost/board_001/dat/101010.dat" }
|
21
|
+
its(:dat_size) { should eq 100 }
|
22
|
+
describe :reload do
|
23
|
+
it { 'hoge' }
|
24
|
+
end
|
25
|
+
|
26
|
+
describe :parse_body do
|
27
|
+
subject { Mona::Thread.new }
|
28
|
+
|
29
|
+
it do
|
30
|
+
lambda {
|
31
|
+
subject.parse_body test_dat.toutf8
|
32
|
+
}.should change(subject, :title).from(nil).to('ウツ病のプログラマーを雇うスレ')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe Mona::Thread, 'real' do
|
38
|
+
subject { Mona::Thread.new(board: Mona::Board.new('hibari.2ch.net', 'prog'), id: 1210150210) }
|
39
|
+
it "reload should change last_accessed_at" do
|
40
|
+
pending
|
41
|
+
lambda {
|
42
|
+
subject.reload
|
43
|
+
}.should change(subject, :last_accessed_at)
|
44
|
+
subject.reload.should be_nil
|
45
|
+
end
|
46
|
+
end
|
metadata
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mona
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- masarakki
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-03-01 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: httpclient
|
16
|
+
requirement: &8085440 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *8085440
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec
|
27
|
+
requirement: &8084360 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *8084360
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: bundler
|
38
|
+
requirement: &8083380 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *8083380
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: jeweler
|
49
|
+
requirement: &8082680 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *8082680
|
58
|
+
description: talk to 2ch library
|
59
|
+
email: masaki@hisme.net
|
60
|
+
executables: []
|
61
|
+
extensions: []
|
62
|
+
extra_rdoc_files:
|
63
|
+
- LICENSE.txt
|
64
|
+
- README.rdoc
|
65
|
+
files:
|
66
|
+
- .document
|
67
|
+
- .rspec
|
68
|
+
- Gemfile
|
69
|
+
- Gemfile.lock
|
70
|
+
- LICENSE.txt
|
71
|
+
- README.rdoc
|
72
|
+
- Rakefile
|
73
|
+
- VERSION
|
74
|
+
- lib/mona.rb
|
75
|
+
- lib/mona/board.rb
|
76
|
+
- lib/mona/client.rb
|
77
|
+
- lib/mona/thread.rb
|
78
|
+
- spec/board_spec.rb
|
79
|
+
- spec/client_spec.rb
|
80
|
+
- spec/mona_spec.rb
|
81
|
+
- spec/spec_helper.rb
|
82
|
+
- spec/test_data/dat.txt
|
83
|
+
- spec/test_data/subject.txt
|
84
|
+
- spec/thread_spec.rb
|
85
|
+
homepage: http://github.com/masarakki/mona
|
86
|
+
licenses:
|
87
|
+
- MIT
|
88
|
+
post_install_message:
|
89
|
+
rdoc_options: []
|
90
|
+
require_paths:
|
91
|
+
- lib
|
92
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
93
|
+
none: false
|
94
|
+
requirements:
|
95
|
+
- - ! '>='
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
segments:
|
99
|
+
- 0
|
100
|
+
hash: 1781530423412323806
|
101
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
|
+
none: false
|
103
|
+
requirements:
|
104
|
+
- - ! '>='
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '0'
|
107
|
+
requirements: []
|
108
|
+
rubyforge_project:
|
109
|
+
rubygems_version: 1.8.15
|
110
|
+
signing_key:
|
111
|
+
specification_version: 3
|
112
|
+
summary: talk 2ch
|
113
|
+
test_files: []
|