議事録(88) - hamamatsu-rb/hamamatsu-rb.github.com GitHub Wiki

Hamamatsu.rb 88

  • イスがギリギリ。16人が限界か

KPT振り返り

  • リモート参加・・・カメラはある。可能性はあるのかも。Slackとかハングアウトとか?
  • Slackはビデオチャット機能があるらしい
  • おやつナイス

自己紹介

  • ※個人の特定を難しくしてあります
  • 浜松でRubyの仕事してる人
  • C#、ERPパッケージの仕事してる人
  • 組み込み系,機械学習とか
  • 3回めくらいの初心者。普段はデザイン
  • 技術系フリーランスの人。最近はAWS周り
  • 初参加:製造業の方だけどWebサービスを作ろうと思ってる人。詳しい人に手伝ってもらっている。
  • 普段は違う業界の人。
  • 普段は組み込みC++の人。
  • 普段はWebプログラマだが半分学生
  • 社労士
  • Railsの仕事を続けている人
  • 4回目の人。定年退職した人
  • 静岡でIT周りの仕事をしている人。Rubyは趣味と社内ツールで。Ruby会議行ってきた

LT、告知

東海道らぐ 6/30(土)

PlanetWalkerのご紹介

  • https://www.planetwalker.biz/accounts/sign_in
  • ここ3週間で稼働開始したサービス
  • heroku/aws/rubyで動いてる
  • 1人で開発
  • 仕事依頼サービス
  • 類似したシステムだと中抜きが大きい
  • なんとかエージェントだと履歴によって蹴られる
  • 決済にStripe使ってるのは洒落てる
  • https://stripe.com/jp
  • Stripe登録時に、サービス内容とか書くのがなんかいや。わかりずらい?
  • 名古屋にStripeユーザーグループができるらしい
  • 英語バージョンもあるよ

Menta(マッチングサービス)でオンライン上で勉強中なので作ったアプリケーションにアドバイス頂きたい

  • Twitterにはアドレスを上げました
  • https://twitter.com/rails17981126/status/1006528208035110913
  • スタバレビュー用のサイト。ファンサイト的なもの
  • スタバに限らなくてもいいかも
  • 食べログのようなもの
  • 自分で買ったコーヒーとかを投稿する
  • 値段の情報は店が入れる
  • レビューした店舗の情報が入るとより有用かも
  • 混み具合がわかると助かる。町中数件あるので空いてるところに行きたい
  • スタバ意識して並ばせている説
  • 個人店舗だとやりやすいかも

読書会

  • 4.1〜4.8/20:40まで

質問

  • 4.2.1 元の配列長を超えたところに値を入れたらエラーにならない?

  • 動的言語なのでエラーにはならない。

  • 取り出すときにエラーにする方法がある。取り出すときにnilにならないで欲しい時はfetchで。

  • []これはなんて読む?⇒ブラケットが正しい

  • 英語で覚えておくといいかも

  • pushか<<か・・・pushの場合は複数入れられるが、<<は一個しか入れれない。

  • <<は続けて入れられる。 << a << b のような

  • <<派が多いかも

  • <<やpushは破壊メソッド

  • あえてjsを違う書き方をすると混乱しないかも

  • 4.3.2 forが使われなくなってforおじさんとよばれるようになったりgoto文のように絶滅するか

  • Rubyだとfor文は書きにくい

  • whileは使うことがあるかも。ブロック文にしずらい

  • eachの逆順はrevere_eachがある

  • シャドーイング・・・警告出す奴が増えている

  • メソッドチェーン使う場合は{}で。do endだと収まりが悪い

  • 配列の最後のカンマ・・・たまに見かける。意図的になることはない。PJの規約に従え

  • 4.4.1 一番左のメソッドが一般的?・・・map派とmap_reduce派が居た。

  • inject・・・織り込むという意味。

  • Swiftだと、Rangeの...と..が逆の意味。

  • Rubyは昔..しかなかった。後付で...が増えた。

  • PerlはRangeオブジェクトはない

  • Rangeで分岐を書けるのは便利。綺麗にまとまる

  • "bad"から"bag"までとかはよく知らなかった

  • スプラット展開は使ったことなかった

  • mapはRangeに対しても使える

みんなのRGB変換プログラム

  • 正規表現
def to_ints(hex)
  /(#)(\w\w)(\w\w)(\w\w)/ =~ hex
  [$2.to_i(16), $3.to_i(16), $4.to_i(16)]
end
  • scanfのパワー
require 'scanf'

def to_ints(hex)
  hex.scanf('#' + ('%02x' * 3))
end
def to_hex(r, g, b)
  [r, g, b].map { |n| n.to_s(16).rjust(2, '0') }.inject('#') { |result, s| result + s }
end
  • sprintfのパワー
def to_hex(r, g, b)
  '#' + format('%02x' * 3, r, g, b)
end
  • 力技
class ConvertRGB
  def is_valid_unsigned_integer(num)
    ((Integer(num) rescue false) && num > -1 && num < 256)
  end
  def generate_code(num)
    num.to_s(16).rjust(2, '0')
  end
  def to_hex(red, green, blue)
    (is_valid_unsigned_integer(red) && is_valid_unsigned_integer(green) && is_valid_unsigned_integer(blue)) ? ('#' + generate_code(red) + generate_code(green) + generate_code(blue)) : nil
  end
  def to_ints(color_code)
    ret = []
    color_code.delete('#').scan(/.{1,#{2}}/).each { |hex|
      ret.push((hex =~ /[0-9a-f][0-9a-f]$/i).nil? ? nil : hex.to_i(16))
    }
    ret.include?(nil) ? nil : ret
  end
end

cv = ConvertRGB.new

p cv.to_hex(0, 0, 1)
p cv.to_ints('#ff09ff')

次回

  • 4.7から。繰り返しの種類いろいろ
  • 7/11(水)

KPT