클라이언트가 HTTP 프로토콜을 이용해 서버로 요청을 보내는 방법인 HTTP Method에는 크게 GET 방식과 POST 방식이 있다. 이 둘에 대해 알아보자. GET, POST GET은 가져온다. POST는 수행한다. GET은 서버에서 데이터를 조회하기 위해 사용하는 메서드이다. POST는 서버에 데이터를 수정하거나 새로 추가하기 위해 사용하는 메서드이다. 둘의 가장 큰 차이점은 데이터를 전송하는 방식이다. GET과 POST 메서드 둘 다 데이터를 서버로 보내야 하는데, GET은 Header에 POST는 Body에 데이터를 포함시켜 전송한다. GET GET은 요청을 전송할 때 필요한 데이터를 URL에 쿼리 스트링을 통해 전송한다. 쿼리 스트링이란 URL 주소 끝에 ? 뒤에 붙는 파리미터들을 말한다. e..
전체 글

매직 마우스 감도가 너무 낮아서 사용하지 않고 있다가 이번에 다시 꺼내보았다.감도를 높이는 방법을 찾아서 적용해보니 나름 쓸만하다. 다른 마우스를 살 때까지 적응해서 써봐야겠다. 감도 설정방법은 다음과 같다.기본적으로 설정에서 마우스 이동속도를 조절할 수 있다.하지만 최대로 설정해도 감도가 너무 느려 답답할 수 있다. 기본 최대 감도가 너무 낮다면 터미널로 더 높은 감도를 지정해줄 수 있다. Lanchpad에서 터미널을 찾거나, commad+space로 '터미널'이라 검색해 터미널에 접속한다.접속 후 아래 명령어를 통해 감도 설정을 해준다.defaults write -g com.apple.mouse.scaling 5마지막 5라는 숫자가 마우스 감도를 나타낸다.원하는 만큼 조절 후 재부팅하면 설정해준 감도..

왜 트랜잭션이 안되지?몽고디비를 처음 써보면서 평소처럼 아무 생각없이 @Transaction을 사용했다. 테스트 환경을 격리하기 위해 별다른 작업없이 @Transaction 애노테이션을 붙혀줬는데, 다음과 같은 에러가 발생했다.java.lang.IllegalStateException: Failed to retrieve PlatformTransactionManager for @Transactional test: 에러 메세지를 읽어보면 @Transaction 테스트를 위한 트랜잭션 매니저를 찾을 수 없는 것 같다.스프링은 트랜잭션을 처리하기 위한 트랜잭션 매니저를 자동으로 등록해주는 걸로 아는데, 왜 찾을 수 없다고 하는걸까? 몽고디비는 트랜잭션이 필수가 아니라 트랜잭션 매니저를 등록하지 않는다고 한다.따라..

트리 트리(Tree)란? 트리는 부모노드와 자식노드로 이루어진 계층적인 구조를가지며, 무방향 그래프의 일종이자 사이클이 없는 자료구조이다. 트리는 정점(Vertex)과 간선(Edge)으로 이루어진 그래프의 일종이다. (그래프 > 트리) 트리의 용어 노드(node) : 트리를 구성하는 정점. ex) a,b,c,d,e,f,g 간선(edge,link) : 각 노드간 연결하는 선 루트 노드(root node) : 트리의 최상위 노드. 트리는 하나의 루트 노드만을 가진다. ex) a 리프 노드(leaf node) : 트리의 최하위 노드. ex) d,e,f,g 내부 노드(internal node) : 최소 1개 이상의 하위 노드를 갖는 노드. ex) a,b,c 부모 노드(parent node) : 하위 트리를 가지..

이번 글에서는 소프트웨어 디자인 패턴 중 하나인 MVC 패턴에 대해 기록해보려고 한다. MVC 패턴이란 MVC는 Model-View-Controller의 약자로, 애플리케이션을 3가지 역할로 구분하는 디자인 패턴이다. 이렇게 역할을 분리하는 이유는 무엇일까? 화면과 데이터 처리를 분리해 코드 간의 종속성을 줄이고 구성 요소 간의 역할을 명확하게 함으로써 코드 분리가 쉽고 유지보수가 용이하기 때문이다. 이해하기 쉽도록 실생활로 예를 들어보자면, 하나의 회사에서 마케팅 업무를 하는 직원, 디자인 업무를 하는 직원, 개발 업무를 하는 직원, 기획 업무를 하는 직원이 모두 한 공간에서 작업을 진행한다고 생각해보자. 만약 특정 디자인에 수정이 필요할 때, 그 복잡한 환경에서 해당 디자인 업무를 담당하는 직원들을 ..

인텔리제이에서 클래스를 열었을 때 다음과 같이 자동으로 메서드를 한줄로 접어주는 기능이 있다. 맥을 사용하는 나는 매번 command + shift + plus 단축키를 사용해 펼쳐서 확인했는데, 이게 갑자기 너무너무 번거롭게 느껴졌다. 나처럼 자동 접기 기능이 오히려 방해가 된다면 아래 설정을 만져주자. Settings > Editor > General > Code Folding imports, one-line methods 체크 박스 해제
git 명령어를 잘못쳐서 작업 내용이 다 날아가 멘붕이 온 경험이 한번쯤 있을 것이다. git은 우리의 실수를 예견하고... 친절하게 지난 명령어의 history를 기록하고 다시 되돌아갈 수 있도록 기능을 제공한다. 이전 명령어 확인하기 git reflog 지난 git history를 확인하는 명령어이다. 명령어를 치기 전 상태로 되돌아가기 git reset --hard HEAD@{1} 만약 가장 마지막으로 한 명령어가 잘못되었다면, 돌아가야할 위치는 HEAD@{1} 이다. 이렇게 지난 로그를 확인하고 돌아가야할 위치를 확인해 reset을 해주면, 명령어를 치기 전 상태로 다시 되돌아갈 수 있다. 앞으로 명령어를 잘못 쳤다면, 당황하지 말고 reflog와 reset을 사용해 해결해보자.

재귀함수 재귀함수는 함수 안에 자신의 함수를 다시 호출하는 함수를 말한다. 재귀함수는 자신의 로직을 내부적으로 반복하다가, 일정한 조건이 만족되면 함수를 이탈하여 결과를 도출한다. 재귀함수는 스택 프레임을 사용해 작동한다. 스택 프레임에 저장되는 정보는 다음과 같다. 매개변수 정보 지역변수 정보 복귀 주소 그렇다면 재귀함수가 어떻게 작동하는지 코드를 통해 알아보자. 다음은 일반적으로 재귀함수를 표현하는 패턴이다. class DFS { public static void dfs(int n) { if (//재귀 탈출 조건) { return; } else { dfs(//탈출을 위한 반복 조건); } } } 예시 코드이다. class DFS { public static void dfs(int n) { if (n ..