議事録(103) - hamamatsu-rb/hamamatsu-rb.github.com GitHub Wiki
Hamamatsu.rb 103
- 6人?
自己紹介
- 新人1人
- RubyやったことないけどSwift経験のある人
- アプリ公開してます
KPTふりかえり
- QRコードが有効活用された
- JSレビューは?・・・うまくいった
- モニター二台使ったらはかどった
- 次は一人10分で試す
雑談
- みんな常連・・・
- ちょっと人少なめかも?
- プロゲート使えるなら使ったほうがいいかも
- Railsやりたい?・・・Railsチュートリアルとか
- チェリー本とか
- SlackのRUBY-JPに参加してね
- Hamamatsu.rbのチャンネルにも
モブプログラミング - テーマ決め
- Left-padを実装する
- 文字を左埋めする。1⇒0001
- 2分でできるか?・・・
モブプログラミング
-
普段使いの言語が違う人はRubyルールで書けなかったりする(アンダースコアとか)
-
詰める必要がなかったらどうする?
-
⇒何もしないのが正解か
-
⇒何もしないように実装
-
詰める文字に複数文字渡ってきたらどうする?
-
⇒エラーとするように実装
-
⇒言語仕様による
-
エラーはassert_raisesで実装
-
1行IFより後置IFのほうがそれっぽい
-
rpadを実装したらlpadの実装は簡単だった
-
時間内に実装できたのでリファクタ
-
結果は以下
-
string_pad.rb
module StringPad
def lpad!(max_length, padding)
replace(pad_impl(max_length, padding) + self)
end
def lpad(max_length, padding)
str = self.dup
str.lpad!(max_length, padding)
str
end
def rpad!(max_length, padding)
replace(self + pad_impl(max_length, padding))
end
def rpad(max_length, padding)
str = self.dup
str.rpad!(max_length, padding)
str
end
def pad_impl(max_length, padding)
raise ArgumentError if padding.length != 1
padding_length = max_length - length
return '' if padding_length.negative?
padding * padding_length
end
end
- string_pad_test.rb
require_relative 'coverage'
require_relative 'string_pad'
require 'minitest/autorun'
class String
include StringPad
end
class TestStringPad < MiniTest::Test
def test_lpad
assert_equal '0001', '1'.lpad(4, '0')
assert_equal '00001', '1'.lpad(5, '0')
assert_equal ' 1', '1'.lpad(3,' ')
end
def test_lpad_selfの長さがmax_lengthより少ない場合
assert_equal '0001', '0001'.lpad(3, '0')
end
def test_lpad_paddingに1文字以外の文字列を渡したらエラー
assert_raises ArgumentError do
'0001'.lpad(5,'00')
end
end
def test_lpad_で自分自身が破壊されないこと
str = '1'
str.lpad(4, '0')
assert_equal '1', str
end
def test_lpad!
str = '1'
str.lpad!(4, '0')
assert_equal '0001', str
end
def test_rpad
assert_equal '1000', '1'.rpad(4, '0')
assert_equal '10000', '1'.rpad(5, '0')
assert_equal '1 ', '1'.rpad(3,' ')
end
def test_rpad_selfの長さがmax_lengthより少ない場合
assert_equal '1000', '1000'.rpad(3, '0')
end
def test_rpad_paddingに1文字以外の文字列を渡したらエラー
assert_raises ArgumentError do
'0001'.rpad(5,'00')
end
end
def test_rpad_で自分自身が破壊されないこと
str = '1'
str.rpad(4, '0')
assert_equal '1', str
end
def test_rpad!
str = '1'
str.rpad!(4, '0')
assert_equal '1000', str
end
end
これが今回のセッション https://cyber-dojo.org/kata/edit/YsC7BJ
告知
-
9/14 Android
-
9/15 Unityゲームプログラミング
-
9/19 JAWS-UG
-
9/21 Githubノウハウ共有
-
9/21 PyCON JP
-
9/26 kintone cafe
-
9/28 浜松golangもくもく会
-
11/9にhamamatsu.js
-
12月に合同勉強会?
-
高齢化の一過を辿っている
-
トライアルオフィスは勉強会じゃなくて企業間向けだから使いにくいかも
KPT
KEEP
- お菓子 ★4
- テーマがいじり甲斐があった ★2
- 全員コード書いた ★2
- 持ち時間10分良かった気がする ★1
- おおよそ完成した
- https://cyber-dojo.org/kata/edit/YsC7BJ ★1
PROBLEM
- Doorkeeperのページの地図が間違っていた
- プロジェクターが普通に使ってるだけなのに落ちた? ★2
- もうちょっと人いるといいかも ★1
- エアーズ株式会社の浜松 でGoogleマップみると、和地山の方が出る。https://www.google.com/search?q=%E3%82%A8%E3%82%A2%E3%83%BC%E3%82%BA%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE+%E6%B5%9C%E6%9D%BE
- FireKPTのレイアウト崩れる
- 地図については情報の修正の提案を行おう
TRY
- Doorkeeperのページの地図を直す
- なんかLTネタを作る ★5
- QRコード機能した ★1
- ruby-jpに参加
- みんなruby.jpのSlackチャンネル入ろうhttps://ruby-jp.github.io/ ★1
- 告知頑張る ★1
次回
- 10/9(水) #104
- 同じ場所で
- モブプロ