rabbit-slide-QWYNG-qwyng_slide 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.rabbit +2 -0
- data/README.md +24 -0
- data/Rakefile +17 -0
- data/abc150a.png +0 -0
- data/config.yaml +23 -0
- data/img.png +0 -0
- data/letsplayatcoder.md +133 -0
- data/pdf/qwyng_slide-letsplayatcoder.pdf +0 -0
- metadata +64 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: bc7d11dee87323778d42a068f7fe29ee8e07bdc112bf0076b90ad219a97a17a5
|
4
|
+
data.tar.gz: d8a3cae99c7fff35211ad3b383cdb98121361114a0a140ec8f1191edd8b3f05c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 74341f1e5487fd4ca0fda710190a04ef2e2ea0bcd87846a32620ea087b0757695dfeda4f27aea928d84bdc69408f69c3de0eac1452e927a46adeb1803c2492ca
|
7
|
+
data.tar.gz: 296f93777df60600062d9ecbd007ba5b0506c7d70db80d5e70a2da4235c0f65d06408e96218ae94de257db2c358e76c2963eb44cd1d78b40582216cdee025ea6
|
data/.rabbit
ADDED
data/README.md
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# My Ruby tools for AtCoder
|
2
|
+
|
3
|
+
自作のAtCoder用Rubyツールの紹介スライドです。
|
4
|
+
|
5
|
+
## 作者向け
|
6
|
+
|
7
|
+
### 表示
|
8
|
+
|
9
|
+
rake
|
10
|
+
|
11
|
+
### 公開
|
12
|
+
|
13
|
+
rake publish
|
14
|
+
|
15
|
+
## 閲覧者向け
|
16
|
+
|
17
|
+
### インストール
|
18
|
+
|
19
|
+
gem install rabbit-slide--qwyng_slide
|
20
|
+
|
21
|
+
### 表示
|
22
|
+
|
23
|
+
rabbit rabbit-slide--qwyng_slide.gem
|
24
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require "rabbit/task/slide"
|
2
|
+
|
3
|
+
# Edit ./config.yaml to customize meta data
|
4
|
+
|
5
|
+
spec = nil
|
6
|
+
Rabbit::Task::Slide.new do |task|
|
7
|
+
spec = task.spec
|
8
|
+
# spec.files += Dir.glob("doc/**/*.*")
|
9
|
+
# spec.files -= Dir.glob("private/**/*.*")
|
10
|
+
# spec.add_runtime_dependency("rabbit-theme-YOUR-THEME")
|
11
|
+
end
|
12
|
+
|
13
|
+
desc "Tag #{spec.version}"
|
14
|
+
task :tag do
|
15
|
+
sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
|
16
|
+
sh("git", "push", "--tags")
|
17
|
+
end
|
data/abc150a.png
ADDED
Binary file
|
data/config.yaml
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
---
|
2
|
+
id: qwyng_slide
|
3
|
+
base_name: letsplayatcoder
|
4
|
+
tags: []
|
5
|
+
presentation_date:
|
6
|
+
presentation_start_time:
|
7
|
+
presentation_end_time:
|
8
|
+
version: 1.0.0
|
9
|
+
licenses: []
|
10
|
+
slideshare_id:
|
11
|
+
speaker_deck_id:
|
12
|
+
vimeo_id:
|
13
|
+
youtube_id:
|
14
|
+
width: 1920
|
15
|
+
height: 1080
|
16
|
+
source_code_uri:
|
17
|
+
author:
|
18
|
+
markup_language: :markdown
|
19
|
+
name: QWYNG
|
20
|
+
email: ikusawasi@gmail.com
|
21
|
+
rubygems_user: QWYNG
|
22
|
+
slideshare_user:
|
23
|
+
speaker_deck_user:
|
data/img.png
ADDED
Binary file
|
data/letsplayatcoder.md
ADDED
@@ -0,0 +1,133 @@
|
|
1
|
+
# My Ruby tools for AtCoder
|
2
|
+
|
3
|
+
author
|
4
|
+
: QWYNG(大澤広朗)
|
5
|
+
|
6
|
+
institution
|
7
|
+
: SmartHR LT会 May, 2024
|
8
|
+
|
9
|
+
theme
|
10
|
+
: rabbit
|
11
|
+
|
12
|
+
|
13
|
+
# AtCoderにRubyで参加する
|
14
|
+
* AtCoder: 競技プログラミングのコンテストを開催しているサービス
|
15
|
+
* https://atcoder.jp
|
16
|
+
* Rubyで参加する際に利用している自作ツールの自慢をします
|
17
|
+
* Rubyを使ったアルゴリズムの解説はしません
|
18
|
+
|
19
|
+
# AtCoderに参加するときの流れ
|
20
|
+
1. サンプル入出力からテストを生成する
|
21
|
+
2. 問題を解く
|
22
|
+
3. デバックする
|
23
|
+
4. テストを通す
|
24
|
+
5. 提出
|
25
|
+
|
26
|
+
* 1と3で自作ツールを使っています
|
27
|
+
|
28
|
+
|
29
|
+
# サンプル入出力からテストを生成する
|
30
|
+
* green_day
|
31
|
+
* https://github.com/QWYNG/green_day
|
32
|
+
* 自作のスクレイピングツール
|
33
|
+
* 問題の入出力からテストを自動生成してくれます
|
34
|
+
* コンテスト開催中等クッキーが必要な場合にも対応しています
|
35
|
+
|
36
|
+
# green_dayのデモ(1)
|
37
|
+
{:width='1280' height='720'}
|
38
|
+
|
39
|
+
# green_dayのデモ(2)
|
40
|
+
```shell
|
41
|
+
$ bundle exec green_day new abc150
|
42
|
+
```
|
43
|
+
|
44
|
+
```shell
|
45
|
+
abc150
|
46
|
+
├── A.rb
|
47
|
+
├── B.rb
|
48
|
+
├── C.rb
|
49
|
+
├── D.rb
|
50
|
+
├── E.rb
|
51
|
+
├── F.rb
|
52
|
+
└── spec
|
53
|
+
├── A_spec.rb
|
54
|
+
├── B_spec.rb
|
55
|
+
├── C_spec.rb
|
56
|
+
├── D_spec.rb
|
57
|
+
├── E_spec.rb
|
58
|
+
└── F_spec.rb
|
59
|
+
```
|
60
|
+
|
61
|
+
# green_dayのデモ(3)
|
62
|
+
|
63
|
+
```ruby
|
64
|
+
RSpec.describe 'abc150/A.rb' do
|
65
|
+
it 'test with "2 900\n"' do
|
66
|
+
io = IO.popen('ruby abc150/A.rb', 'w+')
|
67
|
+
io.puts("2 900\n")
|
68
|
+
io.close_write
|
69
|
+
expect(io.readlines.join).to eq("Yes\n")
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'test with "1 501\n"' do
|
73
|
+
io = IO.popen('ruby abc150/A.rb', 'w+')
|
74
|
+
io.puts("1 501\n")
|
75
|
+
io.close_write
|
76
|
+
expect(io.readlines.join).to eq("No\n")
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'test with "4 2000\n"' do
|
80
|
+
io = IO.popen('ruby abc150/A.rb', 'w+')
|
81
|
+
io.puts("4 2000\n")
|
82
|
+
io.close_write
|
83
|
+
expect(io.readlines.join).to eq("Yes\n")
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
87
|
+
```
|
88
|
+
|
89
|
+
# デバックする(1)
|
90
|
+
テストで入出力をキャプチャしているのでREPLが動かない
|
91
|
+
|
92
|
+
```shell
|
93
|
+
> rspec abc150/spec/A_spec.rb
|
94
|
+
FFF
|
95
|
+
|
96
|
+
Failures:
|
97
|
+
|
98
|
+
1) abc150/A.rb test with "2 900\n"
|
99
|
+
Failure/Error: expect(io.readlines.join).to eq("Yes\n")
|
100
|
+
~~~~~~~~ snip ~~~~~~~~
|
101
|
+
(compared using ==)
|
102
|
+
|
103
|
+
Diff:
|
104
|
+
@@ -1,9 +1,18 @@
|
105
|
+
+
|
106
|
+
+From: abc150/A.rb @ line 3 :
|
107
|
+
+
|
108
|
+
+ 1: k, x = gets.split.map(&:to_i)
|
109
|
+
+ 2: check_complition = '予測変換もいい感じになってほしいなぁ'
|
110
|
+
+ => 3: binding.irb
|
111
|
+
+ 4: puts k * 500 >= x ? 'Yes' : 'No'
|
112
|
+
+Switch to inspect mode.
|
113
|
+
+
|
114
|
+
Yes
|
115
|
+
```
|
116
|
+
|
117
|
+
# デバックする(2)
|
118
|
+
* リモートプロセスのIRBを別のプロセスから操作することができるGemを作りました
|
119
|
+
* https://github.com/QWYNG/irb-remote
|
120
|
+
|
121
|
+
# irb-remoteのデモ(1)
|
122
|
+
{:width='1280' height='720'}
|
123
|
+
|
124
|
+
# irb-remoteの先行研究
|
125
|
+
* dRubyを使ってオブジェクトをプロセス間でやりとりしています
|
126
|
+
* dRubyでREPLを行う発想は先人の方を参考にしたものです
|
127
|
+
* https://github.com/Mon-Ouie/pry-remote
|
128
|
+
* https://github.com/iguchi1124/irb_remote
|
129
|
+
* 今回はRelineを使いたかったので自作しました
|
130
|
+
|
131
|
+
# まとめ
|
132
|
+
* 皆さんもぜひ使ってみてください
|
133
|
+
|
Binary file
|
metadata
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rabbit-slide-QWYNG-qwyng_slide
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- QWYNG
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-06-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rabbit
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.0.2
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.0.2
|
27
|
+
description: 自作のAtCoder用Rubyツールの紹介スライドです。
|
28
|
+
email:
|
29
|
+
- ikusawasi@gmail.com
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- ".rabbit"
|
35
|
+
- README.md
|
36
|
+
- Rakefile
|
37
|
+
- abc150a.png
|
38
|
+
- config.yaml
|
39
|
+
- img.png
|
40
|
+
- letsplayatcoder.md
|
41
|
+
- pdf/qwyng_slide-letsplayatcoder.pdf
|
42
|
+
homepage: https://slide.rabbit-shocker.org/authors/QWYNG/qwyng_slide/
|
43
|
+
licenses: []
|
44
|
+
metadata: {}
|
45
|
+
post_install_message:
|
46
|
+
rdoc_options: []
|
47
|
+
require_paths:
|
48
|
+
- lib
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: '0'
|
59
|
+
requirements: []
|
60
|
+
rubygems_version: 3.4.10
|
61
|
+
signing_key:
|
62
|
+
specification_version: 4
|
63
|
+
summary: My Ruby tools for AtCoder
|
64
|
+
test_files: []
|