π Crescendo
, μ μ λ ν¬κ³ κ°νκ².
"ν¬λ μΌλ"λ μ΄ν리μμ΄μμ μ λν μμ μ©μ΄μ λλ€. μ΄κ²μ 'μ±μ₯νλ€' λλ 'μ¦κ°νλ€'λ₯Ό μλ―Έν©λλ€. μμ μμλ μλμ΄ μ μ μ¦κ°νλ κ²μ λνλ΄λ ννμΌλ‘ μ¬μ©λλλ°, μ‘°μ©ν λΆλΆμμ μμνμ¬ μ μ°¨μ μΌλ‘ κ°νκ², λλ ν¬κ² νλ μ΄νλΌλ μλ―Έλ₯Ό κ°μ§λλ€. λΆμΌλ₯Ό λ§λ‘ νκ³ , "μ±μ₯" μ΄λΌλ λ¨μ΄λ μ€μ€λ‘ λ°μ νκ³ μ νλ μ΄λ€μ κ°μ΄μ λκ·Όκ±°λ¦¬κ² ν©λλ€. ν¬λ μΌλ μλΉμ€λ₯Ό ν΅ν΄μ, λ°μ μ μνλ μ΄μ μ μΈ μ¬λλ€κ³Ό "μ±μ₯" ν΄ λ³΄μΈμ. μ μ λ ν¬κ³ , κ°νκ²!
π¨βπ©βπ§βπ¦ ν¨κ» μ±μ₯νλ μ¦κ±°μ
ν¬λ μΌλλ₯Ό ν΅ν΄ κ°λ°μλ€μ μμ μ μλμ ν₯μμν€κ³ , λ€λ₯Έ κ°λ°μλ€κ³Ό μν΅νλ©° μ§μμ 곡μ ν μ μμ΅λλ€. λν, λ€μν κ°λ° λΆμΌμ μ€ν°λμ μ°Έμ¬νμ¬ μλ‘μ΄ μ§μμ μ΅λνκ³ , μμ μ κ΄μ¬ λΆμΌλ₯Ό νμ₯ν μ μμ΅λλ€. μ¬λ¬κ°μ§ μ€ν°λλ₯Ό μ¦κΈ°λ©°, μ΄μ μ μΈ μ€ν°λ λ©€λ²λ€κ³Ό ν¨κ» μ±μ₯νλ κ²½νμ λ§λ보μΈμ!
π 체κ³μ μ΄κ³ ν¨μ¨μ μΈ μ€ν°λ μ΄μ
ν¬λ μΌλλ κ°λ°μλ€μ΄ μμ λ‘κ² μ€ν°λλ₯Ό κ°μ€νκ³ μ°Έμ¬ν μ μλ μλΉμ€μ λλ€. μ΄μνκ³ μΆμ μ€ν°λλ₯Ό κ°μ€νκ³ κ³Όμ λ₯Ό λ±λ‘ν μ μμΌλ©°, κ°μ νκ³ μΆμ μ€ν°λμ μ°Έμ¬νμ¬ κ³Όμ λ₯Ό μ μΆν μ μμ΅λλ€. νμμ λͺ¨μ§νκ³ κ³Όμ λ₯Ό λ±λ‘νκ±°λ, μνλ μ€ν°λμ μ°Έμ¬νμ¬ κ³Όμ λ₯Ό μ μΆν΄λ³΄μΈμ!
π μ½κ³ λΉ λ₯Έ μ€ν°λ νμ
κ°λ° μΉ΄ν κ³ λ¦¬ λ³λ‘ λΆλ₯λ μ€ν°λλ₯Ό νμν μ μμΌλ©°, ν€μλλ‘ κ²μμ΄ κ°λ₯ν©λλ€. κ°μ νκ³ μΆμ μ€ν°λλ₯Ό μ°Ύμλ€λ©΄ μ°Έμ¬ μ μ²μ 보λ΄λ³΄μΈμ. μ€ν°λ λ©€λ²λ‘ μΉμΈλμλ€λ©΄ μ€ν°λμμΌλ‘μ νλν μ μμ΅λλ€.
- κ°λ° μΉ΄ν κ³ λ¦¬λ³λ‘ λΆλ₯λ μ€ν°λ νμμ΄ κ°λ₯ν©λλ€.
- κΈ μ λͺ©, μ€ν°λλͺ , νκ·Έ, μΉ΄ν κ³ λ¦¬λ‘ μ€ν°λλ₯Ό κ²μν΄λ³΄μΈμ.
- ν₯λ―Έκ° κ°λ μ€ν°λκ° μλ€λ©΄, μμΈ μ 보λ₯Ό νμΈν΄λ³΄μΈμ!
- κ°μ€ν μ€ν°λλ₯Ό λννλ μΈλ€μΌ μ¬μ§μ λ±λ‘νκ³ , μΉ΄ν κ³ λ¦¬μ νκ·Έλ₯Ό ν΅ν΄ μ¬λλ€μ΄ νμν μ μλλ‘ ν보κΈμ μμ±ν΄λ³΄μΈμ.
- μ€ν°λμ λͺ¨μ§ κΈ°κ°κ³Ό μ€ν°λ κΈ°κ°μ μ€μ ν μ μμ΅λλ€.
- ν μ€νΈ μλν°λ₯Ό ν΅ν΄ μ€ν°λ μκ°κΈμ λ€μ±λ‘κ² μμ±ν΄λ³΄μΈμ!
- μ€ν°λμ μ°Έμ¬νκ³ μΆμ μ΄μ λ₯Ό κ°λ¨νκ² μμ±ν μ μμ΅λλ€.
- μμ±ν λ΄μ©μ μ€ν°λμ₯μκ²λ§ 보μ¬μ§λλ€.
- μμ μ΄ κ°μ€ν μ€ν°λ λͺ©λ‘κ³Ό μ 보λ₯Ό νμΈν μ μμ΅λλ€.
- μ°Έμ¬ μ μ²μ λ³΄λΈ μ€ν°λ λ° μ°Έμ¬ μ€μΈ μ€ν°λ λͺ©λ‘μ κ΄λ¦¬ν μ μμ΅λλ€. μ§μμλ₯Ό μ½κ³ κ°μ΄ 곡λΆν μ΄μ μ μΈ μ¬λλ€μ μ°Ύμ보μΈμ!
- μμ μ΄ κ°μ€ν μ€ν°λλΌλ©΄, κ³Όμ λ₯Ό λ±λ‘ν μ μμ΅λλ€.
- μ€ν°λ λͺ¨μ§κΈμ μ¬λ¦° μ§νλΆν° λ±λ‘μ΄ κ°λ₯ν©λλ€.
- κ°μ ν μ€ν°λκ·Έλ£Ήμ κ³Όμ λ₯Ό μ μΆν μ μμ΅λλ€. (κ³Όμ μ μΆ λͺ©λ‘ -> κ³Όμ μ μΆνκΈ°)
- νλ κΈ°κ° λ΄μλ§ κ³Όμ λ₯Ό μ μΆν μ μλ€λ μ μ κΌ κΈ°μ΅νμΈμ!
- Next.jsλ‘ SSRλ₯Ό μ μ©νμ¬ μ΄κΈ° λ λλ§ μλμ SEOλ₯Ό ν΄κ²°νκ³ μν©μ λ°λΌ SSG, CSRλ μ μ ν νμ©νμμ΄μ.
- Yarn Berryλ‘ PnP λͺ¨λλ₯Ό μ¬μ©νμ¬ μμ‘΄μ±μ κ΄λ¦¬νκ³ CI μκ°μ λ¨μΆνμμ΄μ.
- TailwindCSSλ‘ λΉλ νμμ μ€νμΌμ μμ±νλ zero-runtime μΌλ‘ μ€νμΌλ§μ μ μ©νμμ΄μ.
- TanStack Queryλ₯Ό ν΅ν΄ λΉλκΈ° μ²λ¦¬ λ‘μ§κ³Ό μλ² μνλ₯Ό ν¨μ¨μ μΌλ‘ κ΄λ¦¬νμμ΄μ. μΊμ± κΈ°λ₯μ ν΅ν΄ μλ² ν΅μ λΉμ©μ μ€μ΄κ³ suspense μ΅μ μ ν΅ν΄ λΉλκΈ° μνλ₯Ό μ μΈμ μΌλ‘ κ΄λ¦¬νμμ΄μ. λκ΄μ μ λ°μ΄νΈλ₯Ό ν΅ν΄ λλ¦° λ€νΈμν¬ νκ²½μ μ¬μ©μ κ²½νμ κ°μ νμ΄μ.
- React-Quillλ‘ WYSIWYG ννμ μΉ μλν° κΈ°λ₯μ ꡬννμμ΄μ.
- MSWλ‘ APIλ₯Ό λͺ¨νΉνμ¬ κ°λ° μ΄κΈ° λ¨κ³μμ μμ°μ μΈ κ°λ°μ νμμ΄μ.
- Jest, RTLλ‘ μ λ, ν΅ν©ν μ€νΈλ₯Ό CypressμΌλ‘ μ¬μ©μ μλ리μ€λ₯Ό κΈ°λ°μΌλ‘ E2E ν μ€νΈλ₯Ό μμ±νμμ΄μ. λλΆμ μμ κ° μκ² λ¦¬νν λ§μ ν μ μμμ΄μ.
- PWAλ₯Ό μ μ©νμ¬ λͺ¨λ°μΌ νκ²½μμ κ°νΈνκ² μ¬μ©μκ° μ κ·Όν μ μκ³ μ±κ³Ό κ°μ μΈν°νμ΄μ€λ‘ μ¬μ©ν μ μμ΄μ.
- GitHub Actionsλ‘ λΉλ λ° ν μ€νΈ μλνλ₯Ό ꡬμΆνμμ΄μ.
- WAS ꡬμΆμ μν΄ Python κ³Ό Django & Django REST framework λ₯Ό μ¬μ©νμ΄μ. "λ§κ° κΈ°νμ΄ μλ μλ²½μ£Όμμλ₯Ό μν μΉ νλ μμν¬", Django μ κΈ°λ₯λ€μ μ κ·Ή νμ©νλ κ²½νμ ν μ μμμ΄μ.
- μΈμ¦μ λꡬλ‘μλ JWT λ₯Ό νμ©νμμ΅λλ€.
- Oracle κΈ°λ° ν΄λΌμ°λ μλΉμ€λ₯Ό μ κ·Ή νμ©νλ κ²½νμ νμ΄μ.
- μΉ μλ²λ‘μ Nginx λ₯Ό νμ©νμ¬, WAS μ Web Server λ₯Ό λΆλ¦¬ν μ μμμ΄μ.
- Docker & Docker Compose, Github Actions λ₯Ό νμ©ν΄ λ°°ν¬ μλνλ₯Ό ν¨μ¨μ μΌλ‘ ꡬμ±ν μ μμμ΄μ.
- Oracle Cloud Infrastructure μλΉμ€λ₯Ό μ κ·Ή νμ©ν΄ λ°°ν¬νμ΄μ.
- DBMS μλ²λ‘ Oracle Autonomous Database λ₯Ό νμ©νμ΄μ.
- Github μ μ₯μμ main λΈλμΉμ λ³ν©μ΄ μΌμ΄λλ©΄, Github Actions μ νμ©νμ¬ μλμ μμ
μ μνν΄ λ°°ν¬λ₯Ό μλνν μ μμμ΄μ.
- Github Actions μμ Docker μ΄λ―Έμ§λ₯Ό λΉλν©λλ€.
- λΉλν μ΄λ―Έμ§λ₯Ό DockerHub μ μ λ‘λν©λλ€.
- μ€λΌν΄ μ»΄ν¨νΈ μΈμ€ν΄μ€ μλ²μ μ μν΄ λ§λ€μ΄μ§ Docker μ΄λ―Έμ§λ₯Ό μλ‘ λ°°ν¬ν©λλ€.
- LetsEncrypt μ DuckDNS λ₯Ό νμ©ν΄ HTTPS λ₯Ό μ μ©νμμ΅λλ€.
- λ°°ν¬ μ μλμ μμ
μ ν΅ν΄ μ½λ νμ§μ μ μ§νμ΄μ.
- flake8 μ ν΅νμ¬ μ½λμ μ€νμΌμ κ²μ¬ν©λλ€.
- λ§μ½ flake8 κ²μ¬μ μ€ν¨νλ©΄, λ°°ν¬λ μ€ν¨ν©λλ€.
- μ μ₯μμ μμ±λ Django ν μ€νΈ μ½λλ₯Ό Coverage μ ν¨κ» μ€νν©λλ€.
- λ§μ½ 컀λ²λ¦¬μ§κ° μΌμ μμ€ μ΄νμ΄κ±°λ ν μ€νΈ μ½λκ° μ€ν¨νλ©΄, λ°°ν¬λ μ€ν¨ν©λλ€.
- μ μ νμ κ²μ¬ λꡬ, Mypy λ₯Ό ν΅ν΄ νμ΄μ¬μ νμ ννΈλ₯Ό μΌλΆ μ μ©νμ΄μ.
- pre-commit μ νμ©ν΄ μ»€λ° μ flake8, black κ²μ¬κ° ν΅κ³Όνλ κ²μ 보μ₯νμ΄μ. μ΄λ κ² ν¨μΌλ‘μ, μ»€λ° μ μΌμ νμ§ μ΄μμ μ½λλ§ μ μ₯μμ λ³ν©λ μ μλλ‘ ν μ μμμ΅λλ€.
- [REAL Python β Flask] β βμ΄λ»κ² Flask νλ‘μ νΈλ₯Ό ꡬμ±ν κ²μΈκ°?β ν΄λΉ νλ‘μ νΈμ μλ νλ μμν¬λ Django κ° μλλΌ Flask μμ΄μ. 맨 μ²μ, νλ‘μ νΈλ₯Ό μ μ ν λ νλ‘μ νΈλ₯Ό μ΄λ»κ² ꡬμ±ν΄μΌ ν μ§μ λν΄μ κΉμ κ³ λ―Όμ ν μ μμλλ°, κ³ λ―Όν κ³Όμ μ λΈλ‘κ·Έμ μ 리νμμ΅λλ€.
- [REAL Python β Flask] β βPythonμμ κΆκ·Ήμ Repository ꡬννκΈ°β Flask μ ν¨κ», μ λ§μ Repository Pattern μ μ΄λ»κ² ꡬνν μ μμλμ§λ₯Ό μ 리νμ΄μ. Python κΈ°λ° μνκ³λΏλ§ μλλΌ, Repository Pattern μ μ¬μ©νλ λ€λ₯Έ μνκ³λ μ΄λ»κ² ꡬμ±λμ΄ μλμ§ λμλ³΄κ³ κ³ λ―Όν μ μμμ΅λλ€.
- Flask μ Flask-Smorest λΌλ νλ μμν¬λ₯Ό μ¬μ©νλ€ Django&DRF λ‘ κΈ°μ μ€νμ λ³κ²½νκ² λ μ΄μ λ Flask-Smorest μ multipart/form-data μ λν λ¬Έμν μ§μμ΄ λΆμ‘±νκΈ° λλ¬Έμ΄μμ΄μ. μ΄λ―Έ μλΉ λΆλΆ κ°λ°μ΄ μ§νλ νλ‘μ νΈμ νλ μμν¬λ₯Ό λ³κ²½νλ κ²½νμ νλ©°, "κΈ°μ μ€νμ μ μ€νκ², μνκ³μ λ νΌλ°μ€κ° νλΆν κ²μ μ νν κ²" μ΄λΌλ κ΅νμ μ»μ μ μμμ΄μ.
Frontend | Frontend | Frontend | Backend |
---|---|---|---|
μ΄νλ | κΉνν | κΉνμ | μ μ¬κ· |