전체 글
-
메가테라 7주차 주간회고회고 2022. 10. 7. 15:04
이번 주는 본격적으로 웹 어플리케이션 서버를 만들어서 HTTP통신으로 원하는 페이지들을 웹 브라우저에 띄워 보고 있다. 뭔가 엄청난 것을 띄우지 않았지만 웹 브라우저에서 볼 수 있는 프로그램을 만드는 것이 참 재밌는 것 같다. 하지만 이번 주도 역시나 처음 배우는 내용과 과제들과 엄청난 개념들이 쏟아졌다. 그래서 사실 다 해야 했지만 선택과 집중을 해버렸다. 이번 주는 과제와 코딩을 선택하고 개념 공부를 살짝 소홀히 했다. 그래서 HTTP 쪽지시험 문제들에 답변을 많이 할 수 없었다. HTTP 공부를 오늘부터 내일까지 꼭 하고 쪽지 시험 문제들에 답변할 수 있는 수준까지 공부를 해보자. 그리고 다음 주 부터는 둘 중 하나에만 집중하는 것이 아니라, 둘 다 가져갈 수 있어야 될 것 같다. 그러려면 책을 주..
-
20221007 TIL 코테 기출 문제 분석하기TIL 2022. 10. 7. 13:28
기출문제는 반복된다. 동일하게 나오지는 않더라도 유사한 개념이 사용된다. 따라서 기출문제가 제일 중요하다. 카카오 신입 공채 1차 코딩 테스트 난이도 하 문제들을 저번주와 이번주에 풀었다. (https://school.programmers.co.kr/learn/courses/30/lessons/17681?language=java, https://school.programmers.co.kr/learn/courses/30/lessons/17682?language=java) 앞으로 코딩테스트 문제를 풀 때 기억하고 있어야 될 부분들을 살펴보자. 1. 2진수 컴퓨터는 2진수를 사용한다. 따라서 프로그래밍을 하는 사람들은 2진수와 친하게 지내야 한다. 그래서인지 2진수 관련된 문제가 코딩 테스트에서 많이 보인다...
-
20221006 TIL 꼬리에 꼬리를 무는 꼬리 재귀TIL 2022. 10. 6. 22:39
오늘은 for를 이용하지 않고 코딩테스트 문제를 풀어봤다. 나는 stream api를 썼는데, 같이 공부하는 분들 중에 재귀함수로 푸신 분이 계셨다. 코드가 넘 깔끔해서 놀랐다. 그런데 첫번째 테스트 케이스만 실패를 해서 확인을 해봤더니 스택오버플로우 때문이라고 한다. 스택오버플로우가 질문 커뮤니티인 줄만 알았는데 실제로 보니 신기했다. 일반적인 재귀함수는 함수 안에서 함수가 생기고 또 생기고 또 생기니 계속 스택에 쌓이게 된다. 따라서 일반적인 재귀는 스택오버플로우가 생길 수 있는 위험성을 가지고 있다. stream api를 쓰면 깔끔한 편이지만 for를 쓰는 것에 비해 6배 정도 느렸다... 일반적 재귀를 쓰면 빠르지만, 첫 테스트 케이스에서 스택오버플로우가 생겼다... 빠르면서 for를 안 쓰는 방..
-
20221005 TIL 인터페이스가 먼저다TIL 2022. 10. 5. 20:58
강의 반복 과제 인출에 성공했다! 어제까지만 해도 못 할 것 같았는데, 그 비결은 바로 인터페이스였다. 인터페이스 짱짱맨 인터페이스에 맞춰 구현을 해야되는 것이고, 구현에 인터페이스가 딸려가면 안된다. 따라서 일단 필요한 게 뭔지 생각한다. 인터페이스를 깔끔하게 만들어 준다. 그 후 그걸 구현하면 끝! 정말 쉽죠? 코드를 보면서 살펴보자. 1. 웹 어플리케이션 서버를 자바로 만들고 싶기 때문에 httpServer를 만들어줘야 한다. 따라서 아래와 같은 코드를 생성한다. HttpServer httpServer = HttpServer.create(...); 그런데 create안에 address를 넣어줘야 한다. 2. 따라서 필요한 address를 만들어주자. InetSocketAddress address =..
-
20221004 TIL 더 나은 Repository를 위하여TIL 2022. 10. 4. 19:34
시간이 지나면서 프로그램의 계층을 점점 나누고 있다. 그 이유는 각각의 계층의 관심사에 맞게 분리를해서 더 관리하기 쉬운 형태를 만들고 싶기 때문이다. 계층을 나누는 과정에서 이전에 분리되지 않았을 때와 다른 점이 점점 생기고 있다. 영속성이 없는 프로그램에서는 모든 데이터가 메모리에 띄워져 있다. 즉, 데이터 소스가 따로 없는 경우는 리포지토리가 있다고 하더라도 Repository의 멤버 변수에 값들이 저장된다. 하지만 데이터 소스(DB, file 등)가 있다면 Repository에 웬만하면 멤버 변수들이 있으면 안 된다. 예외적으로 테스트를 위해 파일 경로를 생성자에서 받아서 테스트 파일에 대한 처리를 따로 해준다면 파일 경로는 멤버 변수에 들어갈 수 있다. Repository는 멤버 변수가 아닌 데..
-
20221003 TIL 포워드 프록시 & 리버스 프록시TIL 2022. 10. 3. 10:22
프록시 서버의 개념을 주말동안 사알짝 익혔는데, 오늘 석태님께서 공유해주신 글에 리버스 프록시라는 용어가 나왔는데, 뭔가 어려운 개념같아서 한 번 찾아보았다. 프록시 서버란 기본적으로 클라이언트와 서버 사이의 중계 서버로, 통신을 대리 수행해주는 역할을 한다. 흔히 말하는 프록시는 포워드 프록시로, 클라이언트와 인터넷 사이에 위치하고, 포워드 프록시가 인터넷에 클라이언트 대신 접속해준다. 따라서 서버에서 클라이언트의 정보를 알 수 없어진다. 그리고 프록시 서버는 여러가지 기능도 할 수 있는데, 캐싱을 해줄 수 있다. 캐싱이란 가져오는 데 비용이 드는 데이터를 임시로 저장해두는 것을 의미한다. 한 번 이미지 등의 리소스를 가져온 뒤에 포워드 프록시에 캐싱을 해두면 클라이언트가 또 요청을 했을 때 인터넷을 ..
-
7주차 개념노트메가테라 2022. 10. 2. 23:10
Server와 Client client는 서버에게 리소스를 요청하고, server는 요청받은 리소스를 client에게 전달한다. 서버는 요청을 받은 경우에만 클라이언트에게 리소스를 제공한다. Web application server 웹 애플리케이션 서버는 프로그램의 실행환경을 제공하거나 데이터베이스에 대한 연결 기능을 제공하는 역할 등을 한다. 즉, 동적 사이트를 전문적으로 처리해주는 역할을 한다. 웹 시스템은 보통 웹 서버, 웹 애플리케이션 서버, 데이터베이스 서버로 구성되어 있는데, 웹 애플리케이션 서버는 웹브라우저에서 받은 요청을 처리하는 웹 서버와 데이터를 저장하는 데이터베이스 사이를 이어주는 역할을 한다. 웹 애플리케이션 서버는 Java애플리케이션 서버와 .NET애플리케이션 서버로 크게 나뉜다...
-
20221002 TIL 잊지 말고 해피해피 띵TIL 2022. 10. 2. 11:12
시험기간에는 그렇게 재미없던 뉴스마저 꿀잼이듯 요즘은 거의 매일이 시험기간 같아서 그렇게 싫어하던 책읽기 마저 재밌다. 이럴리가 없는데 클린 코드 책을 펼쳤는데 너무 재밌다. 공부가 재밌게 느껴지는 것을 오랜만에 느껴보는 것 같다. 바쁜 일상 오히려 좋아..? 오늘은 클린 코드 1장을 읽었다. 읽으면서 많은 반성을 했다. 나는 일정에 쫓겼다는 이유로 나쁜 코드를 양산했었다. 아직도 혼란스럽긴 하다. 기한을 맞추지 못하는 것도 정말 큰 일이기 때문이다. 하지만 좋은 코드를 사수하는 것 또한 프로라면 필수 조건이다. 물리적으로 기한을 맞추는 것과 좋은 코드를 사수하는 것이 동시에 불가능하다면 가장 좋은 방법은 좋은 코드를 짤 수 있는 만큼의 요구사항 개수로 요구사항을 줄이는 것일 것이다. 그리고 클린 코드에..