<오늘 한 일/>
- 이력서 수정하기
- 이력서를 수정하기는 했는데 누가봐도 X를 줄 것 같다,,,
- 예쁘게 꾸밀 자신 없으면 인텔리픽 이력서에 쓰라고 해서 했는데 영 아닌 것 같다
- 아무래도 노션을 이용해야겠어...
- 여튼 아직 공개하기는 부끄러우니 그냥 오늘 이력서를 수정했다~ 라는 흔적만 남긴다 ㅋㅋㅋ
- 알고리즘 문제 풀이
- https://guco.tistory.com/282
- https://guco.tistory.com/283
- 오늘 2문제 풀었는데 빨리 레벨2로 넘어가야 할 것 같다
- 근데 알고리즘 문제시트에 있는 문제는 다 풀고 넘어가고 싶어서 꾸역꾸역 하는 중
- 코테 특강 때 실력을 향상시키려면 내 수준보다 어려운 문제를 풀어야 한다고 하는데....근데 사실 난 아직 레벨1이 맞긴 한디....레벨2...풀 수 있을까.....?
- 알고리즘 문제시트에 있는 문제를 다 풀고 나면 레벨2를 자연스게 풀 수 있게 되지 않을까?!
- 장고 50문 50답 채우기
Django가 무엇인지 설명하시오
- Python 프로그래밍 언어로 작성된 오픈 소스 웹 애플리케이션 프레임워크로 개발자들이 빠르고 쉽게 웹 애플리케이션을 만들 수 있도록 도와줌.
- Django는 Model-View-Controller (MVC) 패턴을 따르며, 이를 통해 데이터 처리와 사용자 인터페이스를 분리하여 코드의 가독성과 유지관리가 향상됨.
- 또한 Django는 강력한 관리자 기능을 제공하여 데이터베이스와의 상호작용을 용이하게 하며, 내장된 보안 기능으로 웹 애플리케이션의 보안을 강화할 수 있음.
Django를 백엔드 스택으로 선정한 이유는 무엇입니까?
- Python 기반
- Django는 Python 언어로 작성되어 있어서 Python의 장점 모두 활용 가능함. Python은 가독성이 좋고, 빠르게 배울 수 있는 언어로, 다양한 분야에서 사용됨.
- 데이터 과학, 머신러닝, 웹 개발 등에서 인기를 끌고 있어, 다양한 분야의 프로젝트와 호환성이 좋음.
- 빠른 개발
- Django는 "배터리가 포함된 웹 프레임워크"라는 철학을 가지고 있으며, 개발자가 기본적인 웹 애플리케이션 개발에 필요한 대부분의 기능을 갖추고 있음.
- 이로 인해 개발 시간이 단축되고 개발자가 비즈니스 로직에 더 집중할 수 있음.
- MVC 아키텍처
- Django는 Model-View-Controller(MVC) 패턴을 사용하며, 이를 통해 데이터 처리와 사용자 인터페이스를 분리할 수 있음.
- 이는 코드를 가독성이 좋고, 유지보수가 쉬운 구조로 만들어 줌.
- 생산성과 확장성
- Django의 확장 가능한 플러그인 시스템과 함께 거대한 커뮤니티가 지원하는 수많은 패키지 덕분에 빠른 개발 속도와 뛰어난 확장성을 가짐.
- 보안
- Django는 내장된 보안 기능을 통해 Cross-site Scripting(XSS), Cross-site Request Forgery(CSRF), SQL 인젝션 등의 주요 웹 애플리케이션 취약점에 대해 보호할 수 있음.
- 관리자 기능
- Django는 강력한 관리자 인터페이스를 제공하여 데이터베이스와의 상호작용을 용이하게 하여 개발 및 유지보수에 도움이 됨.
Django에는 어떤 장점이 있습니까?
- 기본적인 기능, 패키지 및 라이브러리가 다 갖춰져 있어 개발하기 편리함.
- 공식 문서가 엄청 자세하게 쓰여있음.
- 장고 이용자가 많아서 질문을 했을 때 원하는 답변을 비교적 쉽게 얻을 수 있음.
Django가 다른 Python 웹 프레임워크와 비교되는 특징이 있다면 무엇입니까?
Django의 프로세스는 어떤 순서로 동작합니까?
- 클라이언트로부터 요청(Request)를 받으면 URLconf 모듈을 이용해서 URL을 분석함.
- URL 분석 결과를 통해 해당 URL에 매칭되는 View 실행.
- View는 자신의 로직을 실행하고, 데이터베이스 처리가 필요하면 Model을 통해 처리하고 그결과를 반환 받음.
- View는 자신의 로직 처리가 끝나면 Template을 사용하여 클라이언트에 전송할 HTML 파일을 생성함.
- View는 최종 결과로 HTML 파일을 클라이언트에게 보내 응답(Response)함.
Django의 MTV 패턴 시스템은 무엇입니까?
- Model-Template-View의 약자로 MVC(Model-View-Controller)와 비슷한 개념이나 장고만의 특징을 가지고 있어 명칭이 다름.
- Model은 MVC의 Model과 대응되며, 데이터베이스에 저장되는 데이터를 말함.
- Template는 MVC의 View와 대응되며, 사용자에게 보여지는 부분. 장고는 뷰에서 로직을 처리한 후 html 파일을 context와 함께 렌더링하는데 이 때의 html 파일을 템플릿이라 칭함. 장고는 자체적인 Django Template 문법을 지원하며 이 문법 덕분에 html 파일 내에서 context로 받은 데이터를 활용할 수 있음.
- View는 MVC의 Controller와 대응되며, 웹 요청을 받고 전달받은 데이터들을 view에서 해당하는 로직(함수)으로 가공하여, 그 결과를 템플릿에 보내줌. 항상 템플릿을 렌더링 하는 것은 아니고 백엔드에서 데이터만 주고 받는 경우도 있음.
ORM에 대해서 설명하시오
- ORM(Object-Relational Mapping)은 객체 지향 프로그래밍과 관계형 데이터베이스 관리 시스템(RDBMS) 간의 데이터를 변환하고 관리하는 기술.
- ORM은 프로그래밍 언어로 작성된 객체와 데이터베이스 테이블 간의 맵핑을 제공하여 개발자가 관계형 데이터베이스에 대한 SQL 쿼리 없이 데이터를 조작할 수 있음.
Django ORM의 장단점은 무엇입니까?
- <장점>
- 객체지향적인 코드로 인해 더 직관적이고 로직에 집중할 수 있도록 도와줌.
- SQL문이 아닌 클래스의 메소드를 통해 DB를 조작할 수 있으므로 개발자가 객체 모델만 이용해서 개발을 하는 데 집중 가능.
- 선언문, 할당, 종료 같은 부수적인 코드가 없거나 줄어듦.
- 객체마다 코드를 별도로 작성하기 때문에 코드의 가독성이 높아짐.
- SQL의 절차적이고 순차적인 접근이 아닌 객체지향적인 접근으로 인해 생산성을 높여줌. - 재사용 및 유지보수의 편리성 증가
- ORM은 독립적으로 작성되어있고, 해당 객체들을 재활용할 수 있음.
- 매핑 정보가 명확하여, ERD를 보는 것에 대한 의존도를 낮출 수 있음. - DBMS(Database Management System)에 대한 종속성이 줄어듦.
- 대부분 ORM 솔루션은 DB에 종속적이지 않기 때문에 구현 방법 뿐만 아니라 많은 솔루션에서 자료형 타입까지 유효함.
- 개발자는 Object에 집중함으로 극단적으로 DBMS를 교체하는 큰 작업에도 적은 리스크와 시간이 소요됨. - ORM을 사용하면 SQL 쿼리를 직접 작성하지 않고 데이터베이스 작업을 수행하기 때문에 SQL 인젝션과 같은 보안 문제에 대한 위험이 감소함.
- 객체지향적인 코드로 인해 더 직관적이고 로직에 집중할 수 있도록 도와줌.
- <단점>
- 완벽한 ORM으로만 서비스를 구현하기 어려움.
- 사용하기는 편하지만 설계는 매우 신중하게 해야 함.
- 프로젝트의 복잡성이 커질 경우 난이도 또한 올라갈 수 있으며, 이때는 직접 SQL 쿼리를 작성할 필요가 있을 수 있음.
- 잘못 구현된 경우에 속도 저하 및 심각할 경우 일관성이 무너지는 문제점이 생길 수 있음.
- 일부 자주 사용되는 대형 쿼리는 속도를 위해 SP를 쓰는 등 별도의 튜닝이 필요한 경우가 있음. - 프로시저가 많은 시스템에선 ORM의 객체 지향적인 장점을 활용하기 어려움.
- 이미 프로시저가 많은 시스템에선 다시 객체로 바꿔야하며, 그 과정에서 생산성 저하나 리스크가 발생할 수 있음.
- 완벽한 ORM으로만 서비스를 구현하기 어려움.
<느낀 점/>
- 이력서 누가 대신 작성해줬으면 좋겠다...
- 근데 이력서를 쓰면서 느끼는 건데 프로젝트 할 때는 진짜 할 것도 많고 내가 뭔가 많은 것을 했다고 생각했는데 정리하려고 보니까 내가 했던 일들은 너무 기초적인 거라 포트폴리오에 쓰기 좀 그렇다
- 나 진짜 뽑아만 주면 진짜 잘....까지는 아니어도 진짜 잘 적응하고 잘 따라가고 잘 공부할 자신 있는데...!!!
- 나를 소개하는 게 너무 어려운 것 같다....
<내일 목표/>
- 이력서 피드백에 따라 수정하기(웬만하면 노션에 이력서를 만들어야 할 것 같음. 인텔리픽은 폼이 안 남...!!)
- CS 기초 개념 공부하기
- 알고리즘 2문제 이상 풀기