닥치고 코딩 84

screen 명령어모음

screen이란 백그라운드로 동작하는 다중 터미널을 생성. 세션을 종료해도 터미널을 종료하지 않는이상 작업이 중지되지 않는다 설치 apt-get install screen --screen 생성 screen -S [이름] -- screen 목록 확인하기 screen -ls --screen 다시 들어가기 $ screen -r [이름] -- screen에서 빠져나가기(종료되지 않음) ctrl+a d -- screen 종료하면서 빠져나가기 ctrl+a k --키보드 사용방법 확인하기 ctrl+a ? # 세로로 화면 분할 ctrl+a | # 가로로 화면 분할 ctrl+a S # 분할된 화면 으로 넘어가기 ctrl+a Tab # 새 세션 열기 ctrl+a c # 스크롤 하기(아래 명령어 후 방향키 입력) ctrl+..

리눅스 2021.07.06

개발서버 정리 2탄) 서버에 걸리는 부하 검사하기

서버에 걸리는 부하를 파악해서 해결하려면, 먼저 서버에 어떤 부하가 걸리는지 부터 알아야 한다. 우리가 확인할 수 있는 서버부하는 크게 네트워크 부하 와 서버의 성능 부하 로 분류됨. 네트워크 부하는 말 그대로, 서버에 접속하려는 사람이 폭발적으로 증가하여 트래픽이 급증한 경우의 네트워크에 걸리는 부하를 말한다. 이러한 경우 서버 앞단에서 트래픽 자체를 분산시켜주는 로드밸런서를 사용하거나 서버의 대수를 더 늘리는 방식으로 해결할 수 있음. 하지만, 애초에 우리의 서버가 서버 자체의 성능을 100% 발휘하고 있지 않다면 서버의 대수를 늘리거나 로드밸런서를 사용해도 그 효율이 매우 낮을 것이다. 따라서 로드밸런서 등으로 네트워크 부하에 대한 분산을 고려하기 전에, 서버 1대가 자신의 성능을 잘 발휘하고 있는..

리눅스 2021.01.19

개발서버 정리 1탄) 용량 비우기, 안쓰는 파일 삭제

1. 현재 나의 용량 확인하기 df : 디스크의 남은 용량을 확인 df -h : 보기 좋게 보여줌 du : 현재 디렉토리에서 서브디렉토리까지의 사용량을 확인 du -a : 현재 디렉토리의 사용량을 파일단위 출력 du -s : 총 사용량을 확인 du -h : 보기 좋게 바꿔줌 du -sh * : 한단계 서브디렉토리 기준으로 보여준다. - 가장 자주 쓰이는 것들로 정리. 2. 불필요 파일 삭제 ! 읽기 전에 파일 삭제할때는 항상 경로를 주는게 좋다. ! rm abc.txt abc.txt 파일을 삭제한다. rm *.txt '.txt'로 끝나는 파일을 모두 삭제한다. rm * 모든 파일을 삭제한다. (위험) rm -r dir1/ dir1 디렉토리를 삭제한다. 디렉토리를 삭제하기 위해서는 -r 옵션을 사용해야 한..

리눅스 2021.01.07

php-fpm 슬로우로그 찍는법

php-fpm 기반의 웹 서비스에서 응답속도가 저하되는 현상이 발생 하는 경우 DBMS의 SQL 응답속도 저하 (Slow Query) 네트워크 지연 서버 리소스 점유율 (CPU, RAM 등) Disk 입출력 문제 등이 있다. 서버 리소스나 네트워크에 별 다른 문제가 없고, Slow Query 로그에도 별다른 이상징후가 없다면, 로직 상의 문제일 가능성이 크다. 개발환경이라면 debug를 활용 수 있겠지만, 실 서비스 중인 서버에는 적용할 수 없는 방법이다. 이 때는 php-fpm의 slowlog를 찍어서 확인하는 방법이 있다. php-fpm.conf 파일을 열어보면 아래와 같은 설정을 확인할 수 있다. 보통 etc/php/ fpm폴더에 있음. request_slowlog_timeout = 30s slow..

php 2021.01.05

메모리구조

프로그램 실행 순서 프로그램의 운영체제는 메모리(ram)에 메모리를 할당함 할당해주는 메모리는 총 4가지 이다 . 1. 코드(code) 영역 2. 데이터(data) 영역 3. 스택(stack) 영역 4. 힙(heap) 영역 코드(code) 영역 메모리의 코드(code) 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트(code) 영역이라고도 부른다. CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리함. 프로그램이 시작하고 끝날 때 까지 메모리에 계속 남아있는다. 데이터(data) 영역 메모리의 데이터(data) 영역은 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역. 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다. 힙(heap) 영역 메모리의..

기술면접 대비 2020.10.11

스택(stack) 과 큐(queue)

스택(Stack)의 개념 한 쪽으로만 자료를 넣고 뺄 수 있는 LIFO(Last In First Out) 형식의 자료 구조 메모리의 스택영역은 함수의 호출과 관계되는 지역변수외 매개변수가 저장되는 영역 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸. 컴퓨터의 시간지역성(최근에 참조된 자료가 다시 참조될 확률이 높다는 원리)을 활용할 수 있는 추상적 자료구조 스택(Stack)의 연산 pop: 스택에서 가장 마지막에 입력된 항목을 활용하고 제거한다. push(item): item 하나를 스택의 가장 윗 부분에 추가한다. peek(top): 스택의 가장 위에 있는 항목을 활용한다(삭제 ㄴㄴ). empty(): 스택이 비어 있을 때에 true를 반환한다. full : 스택이 다 차있으면 true반환..

기술면접 대비 2020.10.11

Ajax 통신시 header추가

api 통신이나 Ajax통신을 할 때 jwt, Content-type등 헤더 부분을 추가할 때 beforeSend에 넣어주면 된다. header부분에 Content-type과 JWT을 추가한다고 가정해보자. function test() { var token = localStorage.getItem("token"); $.ajax({ type: "GET", url: "/api/test", beforeSend: function (xhr) { xhr.setRequestHeader("Content-type","application/json");//header추가 xhr.setRequestHeader("Authorization","JWT " + token);//header추가 }, success: function ..

javascript 2020.09.24

그리디 알고리즘(탐욕법)

탐욕적 기법(Greedy Algorithm), 이 기법은 항상 눈앞의 가장 큰 이익만을 쫒는 방법이다. 그리디 알고리즘의 가장 큰 특징은 문제의 성질이 동일하게 보존되고, 그로 인해 같은 전략을 반복적으로 실행 할 수 있는 것이다. 그리디의 대표적인 문제는 동전문제, 도시락 문제가있다. 예로 500원, 100원, 50원, 10원의 동전을 이용하여 가장 적은 갯수의 동전을 구하는 알고리즘이 대표적인 그리디문제인데 이는 각 동전이 배수라는 성질이 보존되기에 가능한 문제이다. 만약 60원, 50원,10원의 동전으로 220원을 표현할 때 그리디알고리즘으로 풀고자 60원 3개, 10원 4개로 생각하여 7개를 사용한다면, 50원4개, 10원 2개를 사용한 6개보다 많이 쓴 것으로 틀린 답이 된다. 예제로 백준의 알..

알고리즘 2020.09.21

완전 탐색(Brute-force Search)

모든 문제를 푸는 데 있어서 가장 쉽고 간단한 방법. 완전탐색, 브루트포스(Brute-force)는 가능한 경우를 일일이 다 탐색하는것. 절대 틀릴 일은 없는 강력한 방식이지만, 당연히 시간은 최대로 들어간다. 따라서 알고리즘에 잘 나오진 않지만 기본이 되기 때문에 알아보자 예제는 백준알고리즘 2798번 블랙잭문제 문제 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다. 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다. 김정인 버전의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다. 그 다음, 딜러는 N장의 카드를 모두 숫..

알고리즘 2020.09.17