OPEN SOURCE

    [Docker, Ubuntu] docker 환경에서 한글 안 깨지도록 설정하기

    Docker 컨테이너 환경에서 한글 안 깨지도록 설정하기 docker 환경에서 VIM을 사용할 때 아래와 같이 한글이 깨지는 현상이 발생할 수 있습니다. 이 경우, bash의 언어 설정을 변경해주어야 합니다. Docker 컨테이너의 OS 환경 확인하기 먼저, OS별로 명령어가 다르기 때문에 자신이 사용하는 OS 환경이 무엇인지 확인해야 합니다. 아래 명령어를 통해 어떤 OS인지 확인가능합니다. grep -n . /etc/*-release 필자가 사용하고 있는 docker 컨테이너 OS 환경은 아래에서 볼 수 있듯이 Ubuntu 환경입니다. Ubuntu 환경에서 한글 깨지지 않도록 언어 설정하기 아래 명령어들은 모두 root에서 실행할 때의 경우를 작성한 것이며, root에서 실행한 것이 아니라면 명령어 ..

    [NGINX] if 조건식 사용하기

    if 조건식 Syntax: if (condition) { ... } Context: server, location NGINX의 if 조건식에서는 condition 부분에 여러 가지가 올 수 없고 한 가지 조건만 가능합니다. if 조건식 내 condition 변수 이름을 넣어 해당 변수가 빈 문자열이거나 0이면 false로 간주합니다. =나 != 연산자를 사용하여 변수를 문자열과 비교합니다. ~ 및 ~* 연산자를 사용하여 정규 표현식에 대해 변수가 일치하는지 비교합니다. !~ 및 !~*은 정규 표현식에 대해 변수가 일치하지 않는지 비교합니다. -f 및 !-f 연산자로 파일 존재를 확인합니다. -d 및 !-d 연산자로 디렉토리 존재를 확인합니다. -e 및 !-e 연산자를 사용하여 파일, 디렉토리 및 심볼릭 ..

    [NGINX] forward proxy와 reverse proxy

    들어가기 전에 nginx에서 주로 사용되는 reverse proxy 기능과 함께 reverse proxy와 forward proxy간 차이점에 대해 알아보고자 합니다. Proxy Proxy는 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램을 가리킵니다. 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것을 proxy라고 합니다. Proxy 서버 구축 목적 Speed: proxy 서버는 사용자의 요청을 캐싱하여 동일한 요청이 들어올 경우 캐시된 자원을 반환할 수 있습니다. ACL: 사이트 접근에 대한 접근 정책을 정의할 수 있습니다. Security: 중요한 일을 하는 내부 서버에 직접 익명의 사용자가 접근하는 것을 막을 수 있습..

    [tomcat7] tomcat JDBC Connection pool

    들어가기 전에 하기 내용은 구글링과 기존에 알고 있던 부분을 토대로 tomcat JDBC connection pool 속성에 대해 정리한 글입니다. Tomcat JDBC Connection Pool 설정 아래 표는 tomcat7 기준 tomcat JDBC Connection pool 속성에 대한 설명입니다. 버전에 따라 default 값이 상이할 수 있습니다. 속성 이름 설명 factory tomcat JDBC를 사용할 경우, org.apache.tomcat.jdbc.pool.DataSourceFactory로 설정(내부적으로 상속 tomcat JDBC를 상속 받은 custom을 설정할 수도 있음) initialSize BasicDataSource 클래스 생성 후 최초로 getConnection() 메소드..

    [Docker] SpringBoot와 PostgreSQL 이미지 docker-compose로 한 번에 관리하기

    들어가기 전에 기존에는 아래와 같이 AWS Beanstalk을 사용하여 개발용 SpringBoot(Backend)을 관리하였고, DB는 AWS RDS를 이용하였습니다. AWS 초심자다보니, 운영 어플리케이션을 AWS에 올리기 전에 미리 AWS를 사용해보자는 취지로 위와 같은 구조로 진행했었습니다. 하지만, 비용 이슈로 인해 개발용은 각자 로컬에서 띄우는 것이 맞다는 생각이 들었습니다. 이에 docker-compose를 통해 SpringBoot와 DB를 하나로 묶어서 띄워서 테스트할 수 있는 환경을 구성해 보았습니다. Front-End에서 Back-End 어플리케이션을 띄워 API 테스트가 필요했던 터라, docker-compose로 어플리케이션과 DB를 함께 묶어 손쉽게 테스트를 진행할 수 있도록 했습니..

    [OpenAPI] Google API를 통한 Oauth2 로그인 구현 시 403 forbidden 에러 해결 법

    들어가기 전에 하기 글은 구글 GCP의 계정이 존재하고, 프로젝트 내 사용자 인증 정보를 생성하여 구글의 Oauth 사용을 위한 클라이언트 ID를 이미 발급 받은 상태라고 가정하고 진행합니다. 만약, Google의 Oauth 사용을 위한 클라이언트 ID를 생성하지 않은 상태라면 글 하단의 Oauth2 로그인 구현 방법을 먼저 살펴보시기 바랍니다. 403 forbidden이란? 403 forbidden은 클라이언트 오류 상태 응답 코드로 서버에 요청은 전달되었지만, 권한 때문에 거절되었다는 것을 의미합니다. Google API를 통한 Oauth2 로그인 구현 시 403 forbidden 에러 해결법 먼저, GCP 콘솔에 접속하여 하기와 같이 검색창을 통해 API 및 서비스 페이지로 넘어갑니다. Google..

    [ANSIBLE] with_sequence와 when 사용하기

    with_sequence with_sequence를 이용하면 범위에 맞는 값들을 format 형식으로 넣어줍니다. - name: with_sequence debug: msg="{{ item }}" with_sequence: start=1 end=4 format=test%02x # result test01 test02 test03 test04 format을 test{{ 2자리 수로 sequence }}로 두었기 때문에 위와 같은 결과를 보여줍니다. with_sequence에서 루프를 돌 때의 변수는 item입니다. C, C++, JAVA 등에서 for(int i = 0; i < 8; i++)할 때의 i를 item이라는 이름의 변수로 사용한다고 생각하면 됩니다. 만약, with_sequence에 들어가는 s..

    [Jinja2] Jinja2에서 조건식 사용하기

    Jinja2에서 if문 사용하는 방법 if 문법 기본 구조 {% if 조건식 %} # 조건식에 해당하는 경우 endif를 만나기 전까지의 구문 수행 {% elif 조건식 %} # 위 조건이 아닌 경우 또 다른 조건을 수행 {% else %} # 위 조건이 아닌 경우 무조건 수행함 {% endif %} # 조건식 나감 if문 예제 {% if condition == 'yes' %} condition is 'yes'; {% elif condition == 'no' %} condition is 'no'; {% else %} condition is 'nothing'; {% endif %} condition 값이 'yes'이면 condition is 'yes';가 적힐 것이고, condition 값이 'no'면 c..