nginx를 설정하는 .conf파일에서 fastcgi_param이 뭔지 모른채로 사용했어서 fastcgi_param에 대해 알아보고자 한다. 먼저 .conf파일에서 include라는 명령어는 fastcgi_params라는 파일을 포함하겠다는 의미이다. fastcgi_params라는 파일은 nginx의 설정 파일인 nginx.conf가 있는 폴더를 기준삼아 있다. 필자의 경우 nginx.conf파일은 /etc/nginx에 위치해 있었고, 여기에 fastcgi_params라는 파일이 위치해 있었다. fastcgi_params파일을 vim 모드로 들어가보면,, 위와 같이 나와있음을 확인할 수 있다. 즉, include fastcgi_params의 의미는 여러 param들을 한 곳에서 관리하면 복잡해서 파일로 ..
웹 서버의 디버깅을 위해 리눅스에서 실시간으로 로그를 확인해야 하는 경우가 있었습니다. 이는, 리눅스의 tail(파일의 끝 부분 출력), grep(파일 내 문자열 찾기), |(파이프)를 조합해 확인해볼 수 있습니다. 예를 들어, nginx를 이용한 웹서버에서 들어오는 요청을 실시간으로 확인해보겠습니다. 위와 같은 구조에서 access.log파일을 실시간으로 들어오는 get 요청에 대해 확인하고 싶다면, tail -F access.log | grep “GET”; 와 같이 사용합니다. 실시간으로 대기하고 있는 상황에서 브라우저를 통해 요청해본다면, 요청 로그가 실시간으로 추가되는 것을 확인할 수 있습니다. tail -F access.log | grep “GET”에서 tail -F access.log는 acc..
리눅스에서 vim을 사용할 때 무심코 Ctrl + z를 눌러 종료를 하는데, 선배님이 Ctrl + c를 사용할 것을 권했다. 그래서 둘의 차이를 알아보고자 한다. 리눅스에서 Ctrl + z : 해당 프로세스 정지, 정지되었기 때문에 fg % + []안의 번호 재시작이 가능하다. Ctrl + c : 해당 프로세스 종료 , 종료되었기 때문에 프로세스를 다시 살릴 수 없다. 여기서 fg는 foreground를 의미한다. 백그라운드 작업을 포그라운드로 옮긴다는 의미이다. 반대로 bg는 background로, 포그라운드 작업을 백그라운드로 옮긴다는 의미이다. 예를 들어 알아보자. Vim 모드 진입 Vim모드 진입 화면에서 Ctrl + z을 사용해 본다. Stopped가 나오는 것을 확인할 수 있다. [2]이므로 ..
리눅스환경에서 php프로젝트가 2개로 늘어나는 바람에 이전에 진행했던 nginx, php-fpm간의 연동이 제대로 되지 않았다. 따라서, nginx를 사용하기 위한 설정파일인 nginx.conf파일에서 수정해줘야 했다. 그 과정에서 fastcgi_pass명령어는 뭘 의미하는지, 모른채로 연동했어서 정리하고 넘어가고자 한다. [출처] : https://battlecook.github.io/2017/12/22/nginx-phpfpm-communication.html 위 그림은 nginx와 php를 사용해 웹 서버를 구축하는 경우의 구조이다. 필자의 우분투에는 여러 php이 있고, 어떤 버전을 연동해야 하는지 의문이였다. 클라이언트에서 API를 호출하면 Nginx의 location에 따라 어떤 방식으로 php..
PHP에서 .csv파일을 읽어들일때, 숫자의미를 가지는 데이터를 문자열로 읽어들이고 JSON으로 바로 출력시 아래와 같이 숫자의미를 가지는 데이터가 문자열로 출력되는 문제가 발생합니다. PHP는 데이터 타입이 동적으로 변하기 때문에 JSON으로 출력 시 csv에서 읽어온 데이터의 데이터 타입이 문자열인지 정수형인지 확인하고 사용해야 합니다. 이를 해결하기 위해 두가지 방법이 있습니다. 첫번째, csv파일에서 문자열로 읽고 데이터를 저장할 때 int로 타입캐스팅 두번째, 데이터를 문자열로 php변수에 저장하고 json_encode하는 과정에서 JSON_NUMERIC_CHECK옵션 부여 숫자의미를 가지는 데이터를 문자열로 저장하든 json을 인코딩할때 json_encode메서드에서 JSON_NUMERIC_C..
이번 시간에는 자바에서 문자열을 다루는 클래스인 String, StringBuffer, StringBuilder에 대해서 알아보겠습니다. 문자열을 다루는 클래스들을 나눠논 이유는 무엇일까요? 만약 문자열 연산횟수가 많아질 경우, 멀티스레드 환경일 경우, Race Condition의 상황이 발생할 경우 어떤 문자열 클래스를 사용할지 고려하지 않는다면, 문제가 발생할 수 있습니다. String 클래스와 StringBuffer, StringBuilder의 차이점은 불변여부입니다. String클래스는 불변하기 때문에, 만약 아래와 같이 문자열 연산을 하게 된다면 기존의 heap메모리에 생성되었던 "jungwoo"에 "kim"을 추가로 붙이는 게 아니라, 기존에 heap 메모리안 String pool에 생성된 "..