우분투 터미널 안 열림 현상 해결 방법은? 얼마 전 버츄얼박스에 우분투를 설치했는데 터미널(Terminal)이 열리지 않는 현상이 발생했다. 이러한 현상은 무인 설치(Unattended Install)를 진행하면 발생하는 현상으로 보인다. 이를 해결하는 법은 간단하다. 1. 우분투의 Settings에 들어간다. 2. Region & Language 탭을 누르고 Language를 English(United States)에서 'English(Canada)'로 바꿔준다. 3. 로그아웃 후 다시 로그인한다. 위와 같은 과정을 거치면 터미널을 사용할 수 있게 된다.
tail 명령어 tail 명령어는 tail(꼬리)라는 뜻에 걸맞게 파일의 끝 부분을 보여주는 명령어이다. 기본적으로 파일의 마지막 10줄을 출력해 보여준다. 이러한 tail 명령어는 리눅스에서 주로 파일 로그를 실시간으로 확인할 때 매우 자주 사용된다. tail [옵션] [파일명] ex) tail test.log // test.log의 마지막 10줄을 출력 자주 사용하는 옵션 -f : tail 명령어를 종료하지 않고 실시간으로 파일의 내용을 계속 출력한다. -n (라인 수) : 파일의 마지막줄부터 지정한 라인 수 까지의 내용을 출력한다. -c (바이트 수) : 파일의 마지막부터 지정한 바이트만큼의 내용을 출력한다. -q : 파일의 헤더와 상단의 파일이름을 출력하지 않고 내용만 출력한다. -v : 풀력하기..
윈도우10 리눅스 설치하기 Windows10 운영체제를 사용하는 사람이 어떠한 이유로 리눅스가 필요한 경우가 있다. 나의 경우 개발을 위해 리눅스 환경이 필요했다. 이때 PC에 직접 리눅스를 설치해 멀티 부팅을 하는 방식이나 WSL2를 이용할 수도 있지만, 나는 그보다 가상 머신을 이용하기로 했다. 가상 머신을 이용하면 마치 리눅스가 설치된 새로운 컴퓨터를 사용하는 것처럼 느껴지기 때문이다. VirtualBox, Vmware 등 다양한 가상 머신 지원 프로그램이 있지만, 나는 VirtualBox를 이용했다. 우분투(Ubuntu) iso 파일 다운로드 https://ubuntu.com/ Enterprise Open Source and Linux | Ubuntu Ubuntu is the modern, ope..
mkdir 명령어 mkdir은 make directory의 줄임말로 디렉토리를 생성하는 명령어이다. mkdir [옵션] [생성할 디렉토리] ex) mkdir test_folder // test_folder라는 디렉토리 생성 ex) mkdir /app/bin/test_folder // /app/bin 아래 test_folder 라는 디렉토리 생성 ex) mkdir test_folder1 test_folder2 test_folder3 // test_folder1, test_folder2, test_folder3 3개의 디렉토리 생성 경로를 지정하지 않으면 현재 위치를 디폴트로 설정한다. 자주 사용하는 옵션 -m : 디렉토리의 권한을 설정한다 ( 디폴트 : 755 ) -p : 상위 경로도 함께 생성 -v : ..
mv 명령어 mv는 move의 줄임말로 파일이나 디렉토리를 이동시킬 때 사용하는 명령어이다. mv [옵션] [이동시킬 디렉토리/파일] [이동 될 위치] ex) mv log.txt folder // 현재 디렉토리의 log.txt 파일을 folder 디렉토리로 이동 ex) mv log.txt log2.txt // 현재 디렉토리의 log.txt 파일의 이름을 log2.txt로 변경 ex) mv /app/bin/logs/log.txt /app/dw // /app/bin/logs 디렉토리의 log.txt 파일을 /app/dw 디렉토리로 이동 mv 명령어는 [이동시킬 디렉토리/파일] [이동될 위치] 두 인자를 필수로 갖는다. 경로를 지정하지 않는다면 현 위치를 디폴트로 설정한다. 이동시킬 때 새로운 이름을 지정할 ..
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는 테스트코드를 통과하지 않으면 문서를 만들 수 없기 때문이다.(이것은 단점이자 장점..