목록분류 전체보기 (572)
오봉이와 함께하는 개발 블로그
개요 회사 업무를 위해 WebSocket 기술 중 STOMP를 사용할 일이 생겼는데, 어떤 방식을 통해 클라이언트에서 서버를 구독할지 고르던 중 팀장님의 요청으로 어떤 것이 좋을지 자료 조사를 부탁하셔서 업무차 자료조사 했지만 의미있는 시간이 된 거 같아 해당 내용은 글로 남긴다. 프레임워크 내부까지 코드를 보는 것이 좋은 건지 모르겠지만 적어도 내가 특정한 무언가를 사용할 때 사이드 이펙트를 만들지 않기 위해 그런 코드를 보고 어떻게 동작하는지, 왜 이런 동작이 발생하는지 알아두는 것이 좋을 거 같다는 생각에 의미있다 생각한다. 먼저 WebSocket을 모른다면 아래 글부터 보는 것을 추천한다. https://5bong2-develop.tistory.com/541 convertAndSend vs con..
Pooling WebSocket이 나오기 전 사용했던 기술 일정 주기로 서버에 요청을 보내서 응답을 받는 방법 불필요한 요청과 커넥션이 발생하여 서버 리소스를 많이 소모시킨다. 주기에 따라 실시간으로 착시효과를 발생 시킬 수 있지만, 따지고 보면 실시간은 아니다. HTTP 통신이기 때문에 Response / Request 헤더가 불필요하게 크다. LongPooling Pooling과 유사하게 일정 주기마다 요청을 보내지만 서버가 바로 응답하지 않는 방식 특정 이벤트나 타임아웃이 발생했을 때 응답을 전달한다. 때문에 불필요한 요청 / 커넥션을 하지 않기 때문에 Pooling보다 리소스 소모는 적다 HTTP 통신이기 때문에 Response / Request 헤더가 불필요하게 크다. Streaming 커넥션을..
함수형 프로그래밍 외부 상태에 독립적으로 수행되는 함수들의 조합을 코드로 작성하는 방식의 프로그래밍 방식 순수 함수 각 함수는 외부 상태를 알 필요도, 알 수도 없어야 한다. 외부 상태를 모르기 때문에 항상 같은 입력에 대해 동일한 출력을 반환한다. 외부 상태를 변경할 수 없기 때문에 의도하지 않은 부수효과가 발생하지 않는다. 불변성 한 번 생성된 데이터는 변경되지 않고 데이터 변경이 필요할 시 변경된 값이 적용된 새로운 데이터를 생성한다. 일급 객체 함수는 함수 자체로 일급 객체로 취급된다. 함수를 변수에 할당하거나, 다른 함수의 인자로 전달, 함수에서 함수를 반환할 수 있다. 순수 함수 외부 상태 : 함수의 행동에 영향을 미칠 수 있는, 함수 밖에서 변경될 수 있는 변수나 상태 전역 변수 클래스의 인..
조건 분기 : 미궁처럼 복잡한 분기 처리를 무너뜨리는 방법 아래 작성하는 내용들은 다소 불친절 할 수 있으나, 내가 책을 보고 느낀 내용을 작성하려 한다. 책 내용이 필요한 분은 구글에 검색하여 찾아보심이 좋을 거 같다. 조건 분기가 중첩되어 낮아지는 가독성 이번 장표는 조건 분기가 중첩되어 엄청나게 긴 중첩이 발생한 코드에 대해 어떻게 해결할 수 있는지 알려준다. early retrun을 통해 해결하는 방법이다. switch 조건문 중복 책에서는 마법 스킬 사용을 통해 예시를 들고 있다. 기존 버그없이 구현된 switch 코드가 있고, 해당 switch 코드는 각 n개의 클래스에 나눠서 구현되어 있다. 새로운 스킬이 추가되어 각 n개의 클래스에 모두 추가해줘야 하는데, 문제가 발생한다. 특정 클래스에는..
응집도 : 흩어져 있는 것들 아래 작성하는 내용들은 다소 불친절 할 수 있으나, 내가 책을 보고 느낀 내용을 작성하려 한다. 책 내용이 필요한 분은 구글에 검색하여 찾아보심이 좋을 거 같다. static 메서드 오용 static 메서드를 "잘못" 사용하지 말자는 내용이다. static int add(int amount1, int amount2) { return amount1 + amount2; } SomeClass someVar = OrderManager.add(moneyData1.amount, moneyData2.amount); 위 코드를 예시로 보면 맞을까? amount는 moneyData에 있는데 왜 계산은 OrderManager의 add에서 하는가 어떤 상황에서 static 사용? 그렇다면 책에서..