전체 글

TIL

Todays' Dev Notes(2018-03-11)

오늘의 목표 parameter binding함수 리팩토링, HandlerMethodArgumentResolver 하나 더 만들기 어제 parameter binding하는 함수를 만들었는데요. 리팩토링은 진행은 하지 못하였습니다. 그래서 오늘 좀 더 깔끔하게 어떻게 구현할 수 있을까 고민하다가 다음과 같이 메서드를 분리하였습니다. public Object[] bind(Method method, MessageDto messageDto) throws Exception { Object[] args = new Object[method.getParameterCount()]; Class[] types = method.getParameterTypes(); for (int i = 0; i < args.length; i+..

TIL

Today's Dev Notes(2019-03-10)

목표 파라미터 바이딩 일부 구현하기! 어제 Custom하게 만든 Controller를 찾아 그 안의 각각 메서드를 형식에 맞게 등록시켜놓았습니다. 이제는 그 메서드 안으로 들어왔을 때 파라미터들이 스프링 프레임워크가 해주는 것처럼 보낸 데이터로 채워지도록 구현해야 합니다. 다시 말하면 파라미터로 User 객체가 들어있을 때 우리는 Socket 연결 중인 User 를 소켓 세션 정보를 이용하여 알아낸 다음 미리 주입시켜놔야 한다는 것입니다. 특정 타입 밖에 안되기 때문에 이전에 스프링 프레임워크에서 썼던 HandlerMethodArgumentResolver 와 같이 구현하여 특정 조건일 때 실행될 수 있도록 만들겠습니다. public interface HandlerMethodArgumentResolver ..

Algorithm/problem solving

Today's Algorithm(2019-03-10)

Today's Algorithm(2019-03-10) 한동안 프로그래머스에서 알고리즘 문제를 계속 풀어왔는데요. 하지만 제가 취약한 탐욕법, 다이나믹 프로그래밍을 좀 더 연습하고 싶어서 다시 백준으로 돌아왔습니다. 그 벽을 언제 넘을 수 있을지 모르겠지만 천천히 그리고 꾸준히 해보려 합니다. baekjoon 1010. 다리 놓기 이 문제를 보면 결국 조합을 구하는 문제라는 것을 알 수 있을 것입니다. n과 m을 입력으로 받을 때 nCm 을 구하면 되는 것이죠. 예전에 이것을 풀기 위해선 팩토리얼을 이용하여 n! / (n-m)! * m! 로 풀어서 쓸 수 있다는 것도 기억할 것이라 생각합니다. 근데 그냥 이렇게 풀면 다이나믹 프로그래밍이 아니죠. 최대한 효율적으로 풀어야 하는데 그 방법은 메모입니다. 이전..

TIL

Today's Dev Notes(2019-03-09)

Today's Dev Notes(2019-03-09) 팀 프로젝트로 구현했던 '레이저 장기'를 리팩토링 하는 작업을 시작해보려 합니다. 프로젝트를 진행했을 때 시간이 촉박하여 좀 더 고민해보고 싶었던 부분을 생각의 흐름대로 개발한 부분이 있습니다. 또 마지막에 마스터로 부터 받은 피드백도 반영해보고 싶어 빠른 시간 내에 리팩토링을 진행하고 싶었습니다. 오늘의 목표 게임 프로그래밍에서 요청 패스가 들어오면 해당 요청 패스의 Controller로 Request가 들어오게 합니다. 스프링에서 요청 Path에 대해 HandlerMapping이 해당 Controller를 연결해줍니다. 하지만 게임 중에 이용하고 있는 소켓 프로그래밍에선 또 다른 HTTP 요청시 연결이 끊기게 됩니다. 그래서 소켓 프로그래밍 메시지..

CS

웹을 지탱하는 기술3 - HTTP

HTTP란 REST의 중요한 특징인 Uniform 인터페이스, 스테이트리스, 서버, 캐시 등을 구현하고 있는 Web의 기반이 되는 프로토콜 HTTP는 TCP/IP를 기본으로 하는 프로토콜입니다. 그 말은 TCP/IP의 4계층(네트워크 계층, 인터넷 계층, 트랜스포트 계층, 애플리케이션 계층) 중 인터넷 계층에서 IP를, 트랜스포트 계층에서는 TCP를 사용하고 있다는 것을 말합니다. handshake TCP 3 handshake(연결시) 연결할래(SYN) 응, 연결해!(ACK, SYN) 응, 한다(ACK) SYN은 &#39;연결요청&#39;을 말합니다. 결국 둘다 ACK를 받아야 Connection이 이루어지는 것입니다. TCP 4 handshake(종료시) 종료할래(FIN) 응, 알겠어(ACK). 나도 ..

Seminar

좋은 개발자 되기

어제 교육기관 코드스쿼드에서 카카오톡 프론트엔드 개발자로 계신 Kean님이 &#39;좋은 개발자 되기&#39;라는 주제로 강연을 해주셨습니다. 정리한 내용을 공유할게요. 개발 역량 - 지식, 경험 협업 역량 - 태도, 커뮤니케이션 회사는 &#39;한 사람이 풀기 어려운 문제를 해결하는 곳&#39; 지식 & 경험 WHY에 대답할 수 있어야 합니다. "이 코드는 이렇게 짜는게 낫지 않나요?" "~~한 이유로 이렇게 짰습니다" 그 코드가 왜 필요한지에 대한 고민이 필요합니다. 지식 & 경험 늘이기 많이 읽고, 많이 쓰고, 많이 생각합니다. 코드리뷰시 적극적으로 코드가 어떻게 동작하는지 상상합니다. 그리고 어떤 것이 더 나은지 느껴야합니다. 많이 기록합니다. 지식 & 경험 보여주기 자신이 알고있는 것을 최대한 ..

Brad Lee
Brad's blog