클라이언트가 HTTP 프로토콜을 이용해 서버로 요청을 보내는 방법인 HTTP Method에는 크게 GET 방식과 POST 방식이 있다. 이 둘에 대해 알아보자. GET, POST GET은 가져온다. POST는 수행한다. GET은 서버에서 데이터를 조회하기 위해 사용하는 메서드이다. POST는 서버에 데이터를 수정하거나 새로 추가하기 위해 사용하는 메서드이다. 둘의 가장 큰 차이점은 데이터를 전송하는 방식이다. GET과 POST 메서드 둘 다 데이터를 서버로 보내야 하는데, GET은 Header에 POST는 Body에 데이터를 포함시켜 전송한다. GET GET은 요청을 전송할 때 필요한 데이터를 URL에 쿼리 스트링을 통해 전송한다. 쿼리 스트링이란 URL 주소 끝에 ? 뒤에 붙는 파리미터들을 말한다. e..
전체 글
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuA4pD%2FbtsEnbhOANn%2FkCmjSFQBS0ZmIbqOjZNIKk%2Fimg.png)
매직 마우스 감도가 너무 낮아서 사용하지 않고 있다가 이번에 다시 꺼내보았다. 감도를 높이는 방법을 찾아서 적용해보니 나름 쓸만하다. 다른 마우스를 살 때까지 적응해서 써봐야겠다. 감도 설정방법은 다음과 같다. 기본적으로 설정에서 마우스 이동속도를 조절할 수 있다. 하지만 최대로 설정해도 감도가 너무 느려 답답할 수 있다. 기본 최대 감도가 너무 낮다면 터미널로 더 높은 감도를 지정해줄 수 있다. Lanchpad에서 터미널을 찾거나, commad+space로 '터미널'이라 검색해 터미널에 접속한다. 접속 후 아래 명령어를 통해 감도 설정을 해준다. defaults write -g com.apple.mouse.scaling 5 마지막 5라는 숫자가 마우스 감도를 나타낸다. 원하는 만큼 조절 후 재부팅하면 ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6s2zt%2FbtsC74EABnN%2Fn84dp3BAqibF3VH5st7bU1%2Fimg.jpg)
트리 트리(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) : 하위 트리를 가지..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdleV3%2FbtsCOEeMP0i%2FeavTeUxjkff2FSHMD9Cys0%2Fimg.png)
이번 글에서는 소프트웨어 디자인 패턴 중 하나인 MVC 패턴에 대해 기록해보려고 한다. MVC 패턴이란 MVC는 Model-View-Controller의 약자로, 애플리케이션을 3가지 역할로 구분하는 디자인 패턴이다. 이렇게 역할을 분리하는 이유는 무엇일까? 화면과 데이터 처리를 분리해 코드 간의 종속성을 줄이고 구성 요소 간의 역할을 명확하게 함으로써 코드 분리가 쉽고 유지보수가 용이하기 때문이다. 이해하기 쉽도록 실생활로 예를 들어보자면, 하나의 회사에서 마케팅 업무를 하는 직원, 디자인 업무를 하는 직원, 개발 업무를 하는 직원, 기획 업무를 하는 직원이 모두 한 공간에서 작업을 진행한다고 생각해보자. 만약 특정 디자인에 수정이 필요할 때, 그 복잡한 환경에서 해당 디자인 업무를 담당하는 직원들을 ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZazuN%2Fbtsy0gIK9p1%2Fw7m0IrKbh80T7HHrGaKTRK%2Fimg.png)
인텔리제이에서 클래스를 열었을 때 다음과 같이 자동으로 메서드를 한줄로 접어주는 기능이 있다. 맥을 사용하는 나는 매번 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을 사용해 해결해보자.
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA7cnK%2FbtsmJP9HF0G%2FgwvigbDbgNQJLrOmdEdSUk%2Fimg.png)
재귀함수 재귀함수는 함수 안에 자신의 함수를 다시 호출하는 함수를 말한다. 재귀함수는 자신의 로직을 내부적으로 반복하다가, 일정한 조건이 만족되면 함수를 이탈하여 결과를 도출한다. 재귀함수는 스택 프레임을 사용해 작동한다. 스택 프레임에 저장되는 정보는 다음과 같다. 매개변수 정보 지역변수 정보 복귀 주소 그렇다면 재귀함수가 어떻게 작동하는지 코드를 통해 알아보자. 다음은 일반적으로 재귀함수를 표현하는 패턴이다. class DFS { public static void dfs(int n) { if (//재귀 탈출 조건) { return; } else { dfs(//탈출을 위한 반복 조건); } } } 예시 코드이다. class DFS { public static void dfs(int n) { if (n ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbnttzg%2FbtsmwXuptnl%2FgugkNCl0CYkWK83PELlkik%2Fimg.png)
1장. 협력하는 객체들의 공동체 객체지향이란 시스템을 상호작용하는 자율적인 객체들의 공통체로 바라보고 객체를 이용해 시스템을 분할하는 방법이다. 자율적인 객체란 상태와 행위를 함께 지니며, 스스로 자기 자신을 책임지는 객체를 의미한다. 객체는 시스템의 행위를 구현하기 위해 다른 객체와 협력한다. 각 객체는 협력 내에서 정해진 역할을 수행하며, 역할은 관련된 책임의 집합이다. 객체는 다른 객체와 협력하기 위해 메세지를 전송하고, 메시지를 수신한 객체는 그것을 처리하는 데 적합한 메서드를 자율적으로 선택한다. 객체지향의 핵심은 적절한 책임을 수행하는 역할 간의 유연하고 견고한 협력 관계를 구축하는 것이다. 클래스는 협력에 참여하는 객체를 만드는 데 필요한 구현 메커니즘일 뿐 클래스가 객체 지향의 중심이 아니..