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

Was this helpful?