2021-02-09(Tue)

ํ•ญ๋ชฉ

๋‚ด์šฉ

ํ•™์Šต ๋‚ ์งœ

2021-02-09(ํ™”)

ํ•™์Šต ์‹œ๊ฐ„

11:00~24:00

ํ•™์Šต ๋ฒ”์œ„ ๋ฐ ์ฃผ์ œ

Websocket, Rails Active Record, Backbone

ํ•™์Šต ๋ชฉํ‘œ

Appearance view ๊ตฌํ˜„์„ ์™„๋ฃŒํ•œ๋‹ค.

๋™๋ฃŒ ํ•™์Šต ๋ฐฉ๋ฒ•

jujeong, sanam๊ณผ ํŽ˜์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง„ํ–‰

์ƒ์„ธ ํ•™์Šต ๋‚ด์šฉ

Rails ํ…Œํฌ๋‹‰ ํ•œํ† ๋ง‰

Rails Active Record์—์„œ ์—ฌ๋Ÿฌ ์†์„ฑ ์กฐ๊ฑด์œผ๋กœ ํ•œ๋ฒˆ์— ๊ฒ€์ƒ‰ํ•˜๊ธฐ๋ฅผ ํ†ตํ•ด Active Record์—์„œ ์ข€ ๋” ๊ฐ„๋žตํ•˜๊ฒŒ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆด ์ˆ˜ ์žˆ์Œ์„ ์•Œ๊ฒŒ๋˜์–ด ์จ๋จน์—ˆ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ ์˜ˆ๋ฅผ ๋“ค์ž๋ฉด

chat_ban = ChatBan.where(user_id: params[:user_id]).find_by_banned_user_id(params[:banned_user_id])

์œ„์ฒ˜๋Ÿผ ์“ธ๋ฐ์—†์ด ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ ์•„๋ž˜์ฒ˜๋Ÿผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ.

chat_ban = ChatBan.find_by_user_id_and_banned_user_id(params[:user_id], params[:banned_user_id])

ํ•œํŽธ where์—๋Š” ํ•ด์‰ฌ๋ฅผ ๋„˜๊ธธ ์ˆ˜ ์žˆ๋‹ค. ๋•๋ถ„์— ๊ฒ€์ƒ‰ ์กฐ๊ฑด์„ ์•„๋ž˜์ฒ˜๋Ÿผ ์ค„์—ฌ๋ฒ„๋ฆด ์ˆ˜ ์žˆ๋‹ค.

# chat_ban = ChatBan.where(Hash[*params])

์•„๋ž˜๋Š” ์ฑ… ๋ฃจ๋น„๋กœ ๋ฐฐ์šฐ๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ๋””์ž์ธ์„ ์ฝ๊ณ  ์ ์€ ๊ฐ„๋žตํ•œ ๋ฉ”๋ชจ๋‹ค.

2์žฅ ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์„ ๋”ฐ๋ฅด๋Š” ํด๋ž˜์Šค ๋””์ž์ธํ•˜๊ธฐ

๋‹จ์ผ ์ฑ…์ž„ ์›์น™์€ ์™œ ์ค‘์š”ํ•œ๊ฐ€

ํ•œ ๊ฐœ ์ด์ƒ์˜ ์ฑ…์ž„์ด ์žˆ๋Š” ํด๋ž˜์Šค๋Š” ์žฌ์‚ฌ์šฉ์ด ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด ํด๋ž˜์Šค ์†์—์„œ ์—ฌ๋Ÿฌ ์ฑ…์ž„๋“ค์€ ์„œ๋กœ ์–ฝํ˜€ ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. ๋•Œ๋ฌธ์— ์‰ฝ๊ฒŒ ๊ฐ€์ ธ๋‹ค ์“ธ ์ˆ˜ ์—†๋‹ค.

๋ฐ˜๋ฉด ๋‹จ์ผ ์ฑ…์ž„ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‰ฝ๊ฒŒ ๊ฐ€์ ธ๋‹ค ์“ธ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ(pluggable units)๋‹ค.

ํด๋ž˜์Šค์— ๋‹จ์ผ ์ฑ…์ž„๋งŒ ์žˆ๋Š”์ง€ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์„๊นŒ

  • ํด๋ž˜์Šค๋Š” ๋‹จ์ˆœํ•ด์•ผํ•œ๋‹ค๋Š” ๋ง์„ ๋ช…์‹ฌํ•˜์ž. ํด๋ž˜์Šค๋Š” ์ตœ๋Œ€ํ•œ ์ž‘์œผ๋ฉด์„œ๋„ ์œ ์šฉํ•œ ๊ฒƒ๋งŒ ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

  • ํด๋ž˜์Šค์˜ ์ฑ…์ž„์„ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ๋งŒ๋“ค์–ด๋ณด์ž .์ด ๋•Œ '๊ทธ๋ฆฌ๊ณ '๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ํฌํ•จ๋œ๋‹ค๋ฉด ์ด ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์ฑ…์ž„์„ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. ๋งŒ์•ฝ '๋˜๋Š”' ์ด๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ํด๋ž˜์Šค๋Š” ์„œ๋กœ ์—ฐ๊ด€๋˜์ง€๋„ ์•Š์€ ๋‘˜ ์ด์ƒ์˜ ์ฑ…์ž„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

๋ณ€ํ™”๋ฅผ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ

๋ช‡๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ ํ–‰๋™์— ๊ธฐ๋ฐ˜ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ž. ๋ฐ์ดํ„ฐ์— ์ง์ ‘ ์ ‘๊ทผํ•˜์ง€๋ง๊ณ  ํ•„์š”ํ•œ getter/setter๋ฅผ ์ด์šฉํ•ด์„œ ์ ‘๊ทผํ•˜์ž

  • ๋ชจ๋“  ๊ณณ์— ๋‹จ์ผ ์ฑ…์ž„์›์น™์„ ๊ฐ•์ œํ•˜์ž

    • A ๊ฐ์ฒด์—์„œ ์ฑ…์ž„์„ ๋ถ„๋ฆฌํ•˜๋ฉด์„œ ๋ถ„๋ฆฌ๋œ ์ฑ…์ž„์„ ๊ฐ€์งˆ B ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์•ผํ•˜๋Š”์ง€ ํ™•์‹ ์ด ๋“ค์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ์—” block์„ ์ด์šฉํ•ด์„œ ์„ ํƒ์„ ์œ ๋ณดํ•  ์ˆ˜ ์žˆ๋‹ค.

      class Gear
        attr_reader :chainring, :cog, :wheel
        def initialize(chainring, cog, rim, tire)
          @chiainring = chainring
          @cog = cog
          @wheel = Wheel.new(rim, tire)
        end
        
        def ratio
          chainring / cog.to_f
        end
        
        def gear_inches
          ratio * wheel.diameter
        end
        
        Wheel = Struct.new(:rim, :tire) do
          def diameter
            rim + (tire * 2)
          end
        end
      end

ํ•™์Šต ๋‚ด์šฉ์— ๋Œ€ํ•œ ๊ฐœ์ธ์ ์ธ ์ดํ‰

์ด๊ฒƒ์ €๊ฒƒ ํ•œ๊ฒŒ ๋งŽ์•„๋„ ํ•˜๋ฃจ ์ข…์ผ ์ฝ”๋”ฉํ•˜๊ณ  ๋‚˜๋ฉด ์ง„์ด ๋น ์ ธ์„œ ๊ธฐ๋ก์œผ๋กœ ๋‚จ๊ธฐ๊ธฐ ์–ด๋ ต๋‹ค. ํŠนํžˆ๋‚˜ ์˜ค๋Š˜์€ ํƒ€ ๋ชจ๋“ˆ์˜ PR์„ Reviewํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์„ ๋Œ€๋ถ€๋ถ„ ํ™œ์šฉํ–ˆ๋‹ค๋ณด๋‹ˆ ๊ธฐ๋ก์ด ์• ๋งคํ•˜๋‹ค.

ํ•˜๋ฃจ ์ข…์ผ ์ฝ”๋”ฉํ•˜๋ฉฐ ์Œ“์ด๋Š” ์ง€์‹๊ณผ ๊นจ๋‹ฌ์Œ๋“ค์„ ์ข€ ๋” ์ ๊ทน์ ์œผ๋กœ ๊ธ€๋กœ ๋‚จ๊ธธ ์ˆ˜ ์ž‡๋„๋ก ๋…ธ๋ ฅํ•ด์•ผ์ง€..

๋‹ค์Œ ํ•™์Šต ๊ณ„ํš

  • Appearance view ๊ตฌํ˜„์™„๋ฃŒ

Last updated