rm 명령어 rm 명령어는 remove의 줄임말로 말 그대로 파일이나 디렉토리를 삭제하는 명령어이다. rm [옵션] [삭제 할 디렉토리/파일] ex) rm original.txt // 현재 디렉토리의 original.txt 라는 파일 삭제 ex) rm /app/bin/logs/log.txt // /app/bin/logs 디렉토리의 log.txt 라는 파일 삭제 ex) rm -r folder // folder 라는 디렉토리 삭제 위와 같이 [삭제 할 디렉토리/파일]을 인자로 갖는다. 경로를 지정하지 않으면 현재 위치를 디폴트 값으로 설정한다. 비어있지 않은 디렉토리는 -r 옵션을 필수로 줘야지 삭제할 수 있다. 자주 사용하는 옵션 -r : 디렉토리 내부의 모든 내용을 삭제 -f : 강제로 파일이나 디렉토리..
리눅스 cp 명령어 리눅스에서 cp 명령어는 copy의 줄임말로 말 그대로 무언가를 복사할 때 사용하는 명령어이다. cp [옵션][복사 할 디렉토리/파일명][복사 될 디렉토리/파일명] ex) cp original.txt copy.txt // 현재 디렉토리의 original.txt라는 파일을 copy.txt라는 파일로 복사 ex) cp /app/bin/original.txt /app/logs/copy.txt // /app/bin 디렉토리의 original.txt라는 파일을 /app/logs에 copy.txt라는 파일로 복사 cp 명령어는 위의 예시처럼 [복사할 디렉터리/파일명] [복사될 디렉터리/파일명] 인자를 필수로 갖는다. 경로를 지정하지 않으면 현재 위치를 기본값으로 설정한다. 자주 사용하는 옵션 -..
리눅스 ls 명령어 리눅스(Linux)에서 ls 명령어는 list의 줄임말로 현재 위치한 디렉토리의 내용(디렉토리, 파일 등)을 출력하는 명령어이다. 윈도우의 dir 명령어와 비슷하다. ls [디렉토리] ls : 현재 디렉토리의 파일 목록 출력 ls /app : /app 경로의 파일 목록 출력 ls [디렉토리] 와 같은 형식으로 디렉토리를 지정하여 파일 목록을 출력할 수 있다. 이때 디렉토리 명을 생략하면 현재 위치한 디렉토리의 파일 목록을 출력한다. 자주 사용하는 옵션 -l : 자세한 내용을 출력한다 -a : 숨김 파일을 포함한 모든 파일을 출력한다. -R : 하위 디렉토리의 파일까지 모두 출력한다. -h : 파일크기를 해석하기 쉽게 K, M, G 단위를 사용하여 출력한다. -r : 출력 결과를 내림차..
cd 명령어 cd 명령어는 change directory의 줄임말로 현재 작업 중인 디렉토리의 위치를 이동하는 명령어이다. cd 명령어 뒤에 디렉토리 이동경로를 입력하면 해당 디렉토리로 이동한다. cd [이동할 경로] ex) cd / : root로 이동 ex) cd log : 현재 디렉토리 내 log 디렉토리로 이동 ex) cd /app/bin : /app/bin 디렉토리로 이동 위와 같이 cd 명령어를 이용해 디렉토리를 이동할 수 있다. cd 명령어는 절대 경로 뿐만 아니라 상대 경로를 통해 상위 폴더나 이전 폴더로 이동할 수 있다. 이러한 cd 명령어는 별도의 옵션이 존재하지 않는다. 절대 경로와 상대 경로 절대 경로는 모든 경로를 처음부터 끝까지 나타낸 것을 뜻한다. 예를 들어 "/home/app/..
KMP 알고리즘이란? KMP 알고리즘은 Knuth, Morris, Pratt 세 사람이 만든 알고리즘으로, 문자열 중에 특정 패턴을 찾아내는 문자열 검색 알고리즘 중 하나이다. 그렇다면 문자열 검색 알고리즘이란 뭘까? 위 사진은 웹 사이트에서 Ctrl+F 를 눌러 특정 문자열을 검색한 결과이다. 문자열 검색 알고리즘이란 말 그대로 문자열에서 특정 패턴을 찾아내는 알고리즘이다. KMP 알고리즘은 문자열에서 특정 패턴을 효율적으로 찾을 수 있다. 살펴볼 문자열의 길이가 N, 찾고 싶은 패턴의 길이가 M이라면 O(N+M)의 시간 복잡도를 가지는 매우 효율적인 알고리즘이다. KMP 알고리즘이 얼마나 효율적인지 알기 전에, 모든 문자열을 일일이 비교하는 경우를 살펴보자. 모든 문자열을 일일이 비교하는 경우(브루트..
웹소켓(WebSocket) 프로토콜이란? 웹소켓(WebSocket)은 클라이언트와 서버(브라우저와 서버)를 연결하고 실시간으로 통신이 가능하도록 하는 첨단 통신 프로토콜이다. 웹소켓은 하나의 TCP 접속에 전이중(duplex) 통신 채널을 제공한다. 쉽게 말해, 웹소켓은 Socket Connection을 유지한 채로 실시간으로 양방향 통신 혹은 데이터 전송이 가능한 프로토콜이다. 오늘날 채팅 어플리케이션, SNS, 구글 Docs, LOL 같은 멀티플레이 게임, 화상회의 등 많은 분야에서 사용되고 있다. HTTP와의 차이는? 기존 HTTP는 단방향 통신이였다. 클라이언트에서 서버로 Request를 보내면 서버는 클라이언트로 Response를 보내는 방식으로 동작했다. 또한, HTTP는 기본적으로 무상태(S..
스웨거(Swagger)란? 스웨거는 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크이다 - 위키백과- 스웨거를 이용하면 간편하게 API 문서를 작성할 수 있다. 뿐만 아니라 간단하게 API 테스트도 해볼 수 있다. 스웨거외에도 유명한 API 문서 툴로는 Spring Rest Docs 등이 있다. Spring Rest Docs와 스웨거는 각각의 장단점이 존재한다. 우리는 스웨거가 적용하기 간단하고, 프런트엔드와 빠른 협업을 위해 당장 테스트를 하지 않아도 문서를 만들 수 있는 스웨거를 사용하기로 했다. Spring Rest Docs는 테스트코드를 통과하지 않으면 문서를 만들 수 없기 때문이다.(이것은 단점이자 장점..
쿠키(Cookie)란? 쿠키는 클라이언트(로컬)에 저장되는 키와 값이 들어있는 작은 데이터 파일이다. 이러한 쿠키는 클라이언트에 저장되어 필요시 정보를 참조하거나 재사용할 수 있다. 보통 웹 환경에서는 클라이언트와 서버가 HTTP 프로토콜을 이용해 통신한다. 하지만 HTTP 프로토콜은 아래와 같은 특징을 가지기 때문에 쿠키를 사용한다. 1. Connectionless(비연결성) -> HTTP는 TCP 연결을 맺고 요청(Request)을 보내면 서버는 응답(Response)을 보내고 연결이 끊어진다. 물론 HTTP 1.1 버전은 커넥션을 계속 유지하는 keep-alive 옵션이 디폴트이긴 하다. 하지만 HTTP 1.0 버전은 기본적으로 connectionless이다. 참고) [Web] HTTP 1.0 과 ..
사이드 프로젝트 시작 - 멤버 구하기 사이드 프로젝트를 모집하는 사이트는 아래와 같이 다양하게 있다. 1. 스프 https://soup.pw/projects 스프 흩어져 있는 스터디와 프로젝트가 모여있는 곳 soup.pw 인프런, OKKY, 캠퍼스픽 등등 다양한 플랫폼에 올라와있는 프로젝트 구인 공고를 모아서 볼 수 있는 사이트다. 2. HOLA https://holaworld.io/ Hola! 스터디, 사이드 프로젝트 팀원을 구하는 가장 쉬운 방법! holaworld.io 자체적으로 다양한 스터디와 사이드 프로젝트 구인 공고가 올라오는 플랫폼이다. 3. 비긴메이트 https://www.beginmate.com/ 비긴메이트 - 스타트업 팀빌딩 플랫폼 비긴메이트 - 스타트업 팀빌딩 플랫폼 www.begin..
이 책을 읽게 된 이유 클린 코드는 컴퓨터공학과 학생, 개발자라면 누구나 한 번쯤은 들어봤을 책이다. 나 또한 언젠가 꼭 읽어봐야겠다 생각했던 책이었다. 취업준비생 시절 이 책을 가볍게 한 번 읽었는데, 취업을 하고 나서 다시 한번 읽어야겠다는 생각이 들어 두 번 읽게 되었다. 책 소개 애자일 소프트웨어의 혁명적인 패러다임을 제시하는 책이다. 저자 로버트 마틴은 오브젝트 멘토(Object Mentor)의 동료들과 힘을 모아 ‘개발하며’ 클린 코드를 만드는 최상의 애자일 기법을 정제하여『Clean Code 클린 코드』에 담았다. 아주 많은 코드를 읽고 그 코드의 무엇이 옳은지, 그른지 생각하며 전문가로서 자신이 지니는 가치를 돌아보기 위해 꾸준히 노력한다면, 이 책을 통해 여러분의 프로그래밍 실력은 한층 ..