관리 메뉴

아보카도 Blog

WIL 2주차: 웹개발 종합반 복습, SQL 완강, 자료구조 알고리즘 1-4주차, http 특강 본문

개발일지

WIL 2주차: 웹개발 종합반 복습, SQL 완강, 자료구조 알고리즘 1-4주차, http 특강

수수 아보카도 2022. 11. 28. 00:57

이번주는 자료구조, 알고리즘 때문에 엄청난 지식을 익혔다.

일단 월요일은 웹개발 종합반에서 배운 flask도 복습하고, 서버와 클라이언트의 관계도 익혔다.

API, Ajax, JSON도 개념을 훑었다.

그리곤 가볍게 파이썬 문법기초를 배웠다. 자바 쓰다가 자바스크립트 배웠다가 파이썬으로 코딩하려니까 너무 헷갈렸다.

map(), filter(), lambda식과 함께 익혔다. 

함수의 매개변수는 입력값의 개수를 지정하지 않고 모두 받을 수 있는 것도 새로 알게 되었다.

그리고 대망의 객체 지향. 그냥 이름만 익히고 갔다.

 

이번주에는 sql을 2주차부터 4주차까지 부수었다. sql문법을 익히고 완강까지 했다.

가장 어려웠던 건 subquery를 작성하는 거였는데, from절에 하위 쿼리 집어 넣을 떄 조금 헷갈렸다. 연습이 필요하다.

 

자료구조, 알고리즘 1주부터 4주까지의 진도가 나갔다.

시간 복잡도와 알고리즘 구현력, 배열, 링크드리스트, 이분탐색, 재귀함수, 정렬, 스택, 큐, 해쉬 등의 자료구조도 배웠다.

그리곤 힙, DFS&BFS도 익히고, Dynamic Programming도 익혔다.

아직 4주차 숙제 하기 전인데 퀴즈 하나하나 풀때마다 30분씩은 걸리는 것 같다.

이분탐색 할때 i와 j의 수를 세는 게 햇갈리고,

매번 알고리즘 짜고 나서 시간복잡도를 계산하고 효율성을 높이기 위해 더 나은 구조를 생각해내는 게 참 어렵다.

메소드를 함수에 .찍고 올바르게 작성하는 것도 어렵고,

어떤 변수를 만들 떄 얘를 배열로 만들어야 할지, 딕셔너리로 만들어야 할지도 헷갈린다.

단순히 상수를 지정할 때도 망설이게 된다. 0으로 해야 하나, 아니면 i로 지정해줘야 하나.

인덱스는 어떻게 지정하며, count를 세는 변수는 몇 개나 만들어야 하나.

배열을 빈 배열로 정해야하는건지, 아니면 주어진 배열의 길이만큼 미리 설정해줘야 하는건지...

스택과 힙에서 어떤 기능을 구현해야 하는건지도 단순히 정렬을 앞 또는 뒤에서 하는 건지에 따라 달라지는 건지도 헷갈리고

문제에서 앗, 이거 스택으로 풀어야겠구나 또는 재귀함수로 풀어야겠구나 라는 생각을 하기까지가 시간이 많이 걸린다.

이런 것들은 모두 문제를 더 많이 풀면서 암기+ 익숙해지는 수밖에 없는 것 같다.

다가오는 주에는 알고리즘 4주차 숙제를 하고, 5주차 진도까지 나간 다음에

1주차 수업부터 주르륵 복습을 해야 할 것 같다. 특히나 2,3,4주차 것들...!!!

 

금요일 오후에는 http/https 특강을 들었다.

평소에 궁금하던 부분인데,

우리가 웹 브라우저에 특정 사이트 주소를 쳤을 때

클라이언트와 서버 사이에서 어떤 일이 일어나는가에 대한 해답을 알 수 있었던 수업이었다.

IP Address, Domain Name System(DNS), TCP/IP, HTTP 메소드, SSL/TLS handshake

그 중에서도 HTTP 통신흐름은 면접에서도 자주 나온다고 하니 간단히 정리해보자.

1. 웹 브라우저에 www.naver.com 을 입력하면

2. 도메인 네임 부분을 DNS 서버에 검색한다. 그럼 DNS 서버에서 IP 주소를 찾아온다.

3. HTTP 요청 메시지를 생성한다. TCP 프로토콜을 사용해서 인터넷 망을 통해 해당 IP 주소의 컴퓨터로 전송된다.

4. 서버는 웹 페이지의 url 정보 중 path와 method에 맞는 액션을 취한다.

5. http 응답 메시지로 만들어진다. 요청했던 컴퓨터(클라이언트)로 전송한다.

6. 랜더링 과정을 통해 출력되어 사용자가 naver.com의 화면 볼 수 있게 된다.