• πŸ‘‹ μ •κΈ€μ†Œκ°œ

    • μš΄μ˜μ§„ 및 μΌμ •μ†Œκ°œ

      μš΄μ˜μ§„μ˜ 정글에 λŒ€ν•œ 생각과 ꡐ윑 λ°©ν–₯에 λŒ€ν•΄ μ„€λͺ…ν•˜μ˜€λ‹€.

      SWμ—”μ§€λ‹ˆμ–΄λ‘œ μ„±μž₯ν• μˆ˜ μžˆλŠ” κΈ°λ°˜λ‹€μ§€κΈ°κ°€ SW사관학ꡐ μ •κΈ€μ˜ λ°©ν–₯μ΄μ—ˆλ‹€.

      μž₯λ³‘κ·œμ˜μž₯λ‹˜μ˜ 말씀을 λ“€μœΌλ©° λ‹€μ‹œν•œλ²ˆ λ§ˆμŒμ„ λ‹€μž‘κ²Œ λ˜μ—ˆλ‹€.

  • ▢️ ν”„λ‘œμ νŠΈ κ°œμš”

    • ν”„λ‘œμ νŠΈ λͺ©ν‘œ : μž…ν•™μ‹œν—˜ λ•Œ 배운 κΈ°μˆ λ“€μ„ ν† λŒ€λ‘œ λ―Έλ‹ˆ ν”„λ‘œμ νŠΈ μ™„μ„±ν•˜κΈ°

    • ν”„λ‘œμ νŠΈ 일정 : 11μ›”1일 17:00 ~ 11μ›” 4일 12:00

    • ν”„λ‘œμ νŠΈ 주제 : 자유 주제

      아이디어λ₯Ό μ°Έκ³ ν•œ μ‚¬μ΄νŠΈ (https://spartacodingclub.kr/community/exhibition)

    • ν•„μˆ˜ 쑰건

      1. 둜그인 κΈ°λŠ₯ κ΅¬ν˜„
      2. Jinja2 ν…œν”Œλ¦Ώ 엔진을 μ΄μš©ν•œ μ„œλ²„μ‚¬μ΄λ“œ λ Œλ”λ§
  • πŸš΄πŸ½β€β™‚οΈ ν”„λ‘œμ νŠΈ μ§„ν–‰

    1. 주제 μ„ μ •

      λ§›μ§‘ μ§€λ„λ‚˜ 주식 정보 κ³΅μœ λ“± λ‹€μ–‘ν•œ 의견이 λ‚˜μ™”λ‹€.

      κ·Έ μ€‘μ—μ„œ μ •κΈ€ 3κΈ°μƒλ“€μ—κ²Œ κ°€μž₯ μœ μš©ν•œ 것은 학식 μ•Œλ¦¬λ―ΈλΌλŠ” 의견이 λ‚˜μ™€ ν•™μ‹μ•Œλ¦¬λ―Έλ‘œ μ •ν•˜μ˜€λ‹€.

      λ¬Έμ§€ 캠퍼슀 학식 메뉴와 메뉴 리뷰 κ³΅μœ ν•˜λŠ” '학식 μ•Œλ¦¬λ―Έ' ν”„λ‘œμ νŠΈλ‘œ μ •ν•˜μ˜€λ‹€.

    2. 와이어 ν”„λ ˆμž„ μž‘μ„± 및 ν”Όλ“œλ°±

      ν”„λ‘œμ νŠΈμ˜ 골격인 '와이어 ν”„λ ˆμž„'을 μž‘μ„±ν•˜κ³  ν”Όλ“œλ°±μ„ λ°›μ•˜λ‹€.

      • 와이어 ν”„λ ˆμž„

        ν”„λ‘œμ νŠΈ 골격과 μ„ΈλΆ€ κΈ°λŠ₯듀을 μ μ–΄λ³΄μ•˜λ‹€.

        • 와이어 ν”„λ ˆμž„ 이미지
        • 둜그인 νŽ˜μ΄μ§€ μ—μ„œ 둜그인 ν•˜λ©΄ λ©”μΈνŽ˜μ΄μ§€λ₯Ό 좜λ ₯
        • 쑰식, 쀑식, 석식 λ²„νŠΌμ„ ν΄λ¦­ν•˜λ©΄ λͺ¨λ‹¬μ°½μ΄ νŒμ—…
        • λͺ¨λ‹¬μ°½μ—λŠ” 식단 메뉴와 κ·Έλ‚  μ‹μ‚¬ν•œ μ‚¬λžŒλ“€μ΄ 남긴 리뷰와 별점 좜λ ₯
      • ν”Όλ“œλ°±

        처음 νŒ€μ›λ“€κ³Ό 이야기 ν• λ•ŒλŠ” 금일 식사 ν›„ 남긴 리뷰만 λ³Ό 수 있게 ν•˜λ €κ³  ν–ˆμ—ˆλ‹€.

        ν•˜μ§€λ§Œ, 금일 메뉴와 λ™μΌν•œ 메뉴λ₯Ό 식사 ν›„ 남긴 λŒ“κΈ€λ“€λ„ μ‘°νšŒν•˜λŠ”κ²Œ μ’‹κ² λ‹€λŠ” ν”Όλ“œλ°±μ„ λ°›μ•„ λͺ¨λ‹¬ 창의 κΈ°λŠ₯을 μˆ˜μ •ν•˜κΈ°λ‘œ ν•˜μ˜€λ‹€.

    3. ν•„μˆ˜ 쑰건 λ‚΄μš©ν•™μŠ΅

      1. JWT 방식을 μ΄μš©ν•œ 둜그인 κΈ°λŠ₯ κ΅¬ν˜„

        • JWT 인증방식 κ°œμš”λ„

        JWTλž€ Jason Web Token의 μ€„μž„λ§λ‘œ 토큰을 κΈ°λ°˜μœΌλ‘œν•œ 인증 방식이닀.

        κΈ°μ‘΄ μ„Έμ…˜ 방식과 λ‹€λ₯΄κ²Œ μ‚¬μš©μžμ˜ μƒνƒœλ₯Ό 토큰에 μ €μž₯ν•˜μ—¬ API κ΅¬ν˜„ μ‹œ 토큰 정보λ₯Ό μ„œλ²„μ— μ „λ‹¬ν•œλ‹€.

        μ„œλ²„μ—μ„œ ν† ν°μ˜ μœ νš¨μ„±μ„ κ²€μ¦ν•œ ν›„ 유효 μ‹œ APIλ₯Ό κ΅¬ν˜„ν•œλ‹€.

        λ§Œμ•½ 토큰이 λ§Œλ£Œλ˜κ±°λ‚˜ μœ νš¨ν•˜μ§€ μ•Šμ„ 경우 둜그인 νŽ˜μ΄μ§€λ‘œ λ„˜κΈ΄λ‹€.

        토큰은 보톡 쿠킀에 μ €μž₯ν•˜λ©° CSURF 라이브러리λ₯Ό μ΄μš©ν•΄ CSRF 곡격에 λŒ€λΉ„ν•œλ‹€.

        μœ„ λ‚΄μš© 및 μ΄λ―Έμ§€λŠ” μ•„λž˜ λΈ”λ‘œκ·Έλ₯Ό 기반으둜 μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

        μ„Έμ…˜ 기반 인증 방식과 토큰 기반 인증(JWT)

      2. CSR(Client Side Rendering)과 SSR(Server Side Rendering)의 차이점

        1. CSR(Client Side Rendering)
          • μ„œλ²„μ—μ„œ 졜초 1번 전체 νŽ˜μ΄μ§€λ₯Ό λ‘œλ”©ν•˜μ—¬ 보여주고 μ΄ν›„μ—λŠ” μ‚¬μš©μžμ˜ μš”μ²­μ΄ μ˜¬λ•Œ λ§ˆλ‹€, μ„œλ²„λŠ” λ°μ΄ν„°λ§Œ μ „λ‹¬ν•˜κ³  μ‚¬μš©μžκ°€ μ£Όμ–΄μ§„ 데이터λ₯Ό κ°€κ³΅ν•˜μ—¬ λ Œλ”λ§ ν•˜λŠ” 방식
          • μž₯점
            1. 졜초 1회 μš”μ²­μ„ μ œμ™Έ ν•˜κ³  νŽ˜μ΄μ§€ μ „ν™˜ 속도가 λΉ λ₯΄λ‹€.
            2. μ„œλ²„μ˜ λΆ€ν•˜κ°€ 적닀.
          • 단점
            1. 졜초 λ‘œλ”© 속도가 λŠλ¦¬λ‹€.
            2. 졜초 html ν…μŠ€νŠΈκ°€ λΉ„μ–΄μžˆμ–΄ 검색에 λ¬Έμ œκ°€ μžˆλ‹€.
            3. μΏ ν‚€λ‚˜ μ‚¬μš©μž 정보λ₯Ό μ €μž₯ν•˜κ³  μžˆμ–΄ λ³΄μ•ˆμ— μ·¨μ•½ν•  수 μžˆλ‹€.
        2. SSR(Server Side Rendering)
          • CSRκ³Ό 달리 μ„œλ²„μ—μ„œ μ‚¬μš©μžμ˜ μš”μ²­μ— λ”°λ₯Έ νŽ˜μ΄μ§€λ₯Ό λ Œλ”λ§ ν•˜μ—¬ μ‚¬μš©μžμ—κ²Œ λ°˜ν™˜ν•˜λŠ” 방식
          • μž₯점
            1. 졜초 λ‘œλ”© 속도가 λΉ λ₯΄λ‹€.
            2. 졜초 λ‘œλ”© μ‹œ html 정보가 ν¬ν•¨λ˜μ–΄ μžˆμ–΄ 검색이 κ°€λŠ₯ν•˜λ‹€.
          • 단점
            1. νŽ˜μ΄μ§€ μ „ν™˜λ§ˆλ‹€ μ„œλ²„μ—μ„œ λ Œλ”λ§ ν•˜μ—¬ μ„œλ²„μ˜ λΆ€ν•˜κ°€ 크닀.
            2. νŽ˜μ΄μ§€ μ „ν™˜λ§ˆλ‹€ μƒˆλ‘œκ³ μΉ¨ λ˜μ–΄ UXκ°€ λ‹€μ†Œ λ–¨μ–΄μ§„λ‹€.(κΉœλΉ‘μž„)

        μœ„ λ‚΄μš©μ€ μ•„λž˜ 두 λΈ”λ‘œκ·Έλ₯Ό 기반으둜 μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

        SSR, CSR 차이

        SSR과 CSR의 차이

    4. κΈ°λŠ₯ κ΅¬ν˜„

      1. νšŒμ›κ°€μž… 및 둜그인

        • νšŒμ›κ°€μž…

          νšŒμ›κ°€μž… μ‹œ κ°€μž… 정보와 λΉ„λ°€ 번호λ₯Ό μ„œλ²„μ— μ „λ‹¬ν•˜μ—¬ DB에 μ €μž₯ν•œλ‹€.

          μ΄λ•Œ λΉ„λ°€λ²ˆν˜ΈλŠ” λ³΄μ•ˆμƒ 문제둜 hashlib λ°©μ‹μœΌλ‘œ μ•”ν˜Έν™” ν•˜μ—¬ μ €μž₯ν•œλ‹€.

        • 둜그인

          둜그인 μ‹œ html input값을 μ„œλ²„μ— μ „λ‹¬ν•œλ‹€.

          전달 받은 input값을 DBμ—μ„œ κ²€μƒ‰ν•˜μ—¬ 결과값이 있으면 토큰을 λ‚΄λ €μ£Όκ³  μ—†μœΌλ©΄ 둜그인 νŽ˜μ΄μ§€λ‘œ λ¦¬λ‘œλ“œ ν•œλ‹€.

          μ•”ν˜Έν™”λ₯Ό μœ„ν•΄ hashlib ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜λ©° jwt 인증방식을 μœ„ν•΄ pyjwt ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ˜€λ‹€.(jwt ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ μ—λŸ¬κ°€ λ°œμƒν•˜μ˜€λ‹€.)

      2. 금일 식단 리슀트 μ›Ή μŠ€ν¬λž˜ν•‘

        • μ„œλ²„μ—μ„œ 금일 λ‚ μ§œλ₯Ό λ°›μ•„ μ•„λž˜ λΉ¨κ°„ 뢀뢄에 μ‚½μž…ν•˜μ—¬ 금일 μ‹λ‹¨νŽ˜μ΄μ§€λ₯Ό 쑰회 ν•˜μ˜€λ‹€.(파이썬 datetime ν•¨μˆ˜ ν™œμš©)

          https://www.kaist.ac.kr/kr/html/campus/053001.html?dvs_cd=icc&stt_dt=2021-11-12

        • μƒλ‹¨μ˜ url을 #tab_item_1 > table > tbody > tr > td:nth-child(1)의 textλ₯Ό 슀크랩 ν•˜μ—¬ μ„œλ²„μ—μ„œ split ν›„ 리슀트둜 μ €μž₯ν•˜μ˜€λ‹€.(파이썬의 BeautifulSoup4 ν•¨μˆ˜λ₯Ό 이용)

          Untitled

        • DBμ—μ„œ 금일 식단과 λ™μΌν•œ 메뉴λ₯Ό μ°Ύμ•„μ„œ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μž‘μ„±ν–ˆλ˜ 리뷰와 λ³„μ μ˜ 평균을 μ „λ‹¬ν•˜μ˜€λ‹€. μ΄λ•Œ μ„œλ²„μ‚¬μ΄λ“œ λ Œλ”λ§μ„ μ΄μš©ν•˜μ˜€λ‹€.

        • 탐색은 파이썬 이쀑 for 문을 μ‚¬μš©ν–ˆμœΌλ©° 메뉴 3κ°œμ΄μƒ 같은지 countν•˜μ˜€λ‹€.

      3. 리뷰 μž‘μ„± 및 DBμ—μ„œ data λ°˜ν™˜

        • 리뷰 μž‘μ„± ν›„ input 값을 POST ν•˜λ©΄ ν•΄λ‹Ή 메뉴와 리뷰, 별점, 아이디λ₯Ό μ„œλ²„μ— μ „λ‹¬ν•˜μ—¬ MongoDB에 μ €μž₯ν•˜μ˜€λ‹€.
  • βΉοΈΒ ν”„λ‘œμ νŠΈ μ™„λ£Œ 및 λŠλ‚€μ 