PostgreSQL을 설치한 머신내에는 psql이 기본적으로 설치가 되어 있겠지만, 리모트로 접속해야 하는 경우는 별도로 설치해 줘야 한다. 여러 GUI 기반 client들도 많지만, 간단하게 보거나 명령어로 손쉽게 조회해 보려면 psql도 충분할 경우가 많다. 특히 기본 메타 정보 등을 조회하는 명령어는 범용 GUI에서는 지원하지 않기 때문에, psql 나름의 장점이 있다. 맥북에서 psql 설치하기 다음과 같이 libpq를 설치한다. $ brew install libpq libpq 설치가 완료되었다면, $ brew link --force libpq 를 실행하여 심볼릭 링크를 생성한다. Linking /usr/local/Cellar/libpq/13.2... 372 symlinks created. If ..
디렉토리 이하 특정 문자열 및 한글 포함여부 찾기 프로젝트 전체 파일들을 대상으로 특정 문자열 혹은 한글이 포함되어 있는 부분을 찾거나, 파일명 들을 추출하려면 다음과 같이 shell을 활용해 보자. 사용법 아래와 같은 형식을 지켜주면 되겠다. $ find . -name "파일명 또는 파일명 패턴" -print0 | xargs -0 egrep -l "검색어 또는 패턴" $ find . -name "파일명 또는 파일명 패턴" -print0 | xargs -0 egrep "검색어 또는 패턴" egrep 옵션 참고 egrep 뒤에 -l 옵션을 주면 파일명을 출력한다. -l, --files-with-matches Only the names of files containing selected lines are w..
파이썬으로 MySQL 사용하기 Python으로 MySQL에 접속하고, 데이터를 다루려면 여러 라이브러리가 있다. 마침 StackOverFlow에도 이와 관련한 Q&A가 있어서 살펴보고 선택하고자 한다. https://stackoverflow.com/questions/43102442/whats-the-difference-between-mysqldb-mysqlclient-and-mysql-connector-python What's the difference between MySQLdb, mysqlclient and MySQL connector/Python? So I've been trying to do some database update with python and while setting up the w..
MySQL에서 쿼리 타임아웃을 설정하려면? MySQL에서 쿼리를 실행하다 보면, 클라이언트쪽이 아니라 서버쪽에서 실행시간을 제어하고 싶을 때가 있다. 너무 실행시간이 길어지는 경우 kill을 하면 좋겠지만, 클라이언트와 서버간 중간 커넥션이 끊어지면 트래킹하기도 어렵다. 만약, 조건(?)만 만족한다면 다음의 옵션을 검토해 보자. 사용 옵션 - MAX_EXECUTION_TIME(n) 제목에도 썼듯이, 사용할 옵션은 MAX_EXECUTION_TIME이다. 환경 변수나, conf로 설정하게 되면 여러 쿼리들에 적용되는 부작용을 겪을 수도 있다. 따라서, 쿼리 힌트로 사용하는 것이 현실적이라고 생각한다. SELECT /*+ MAX_EXECUTION_TIME(n) */ * FROM ... 형식으로 사용하면 된다...
gist는? gist는 간단히 말해 소스를 공유하는 서비스라고 보면 된다. 그리고, 이 서비스는 github.com에서 제공한다. gist로 코드를 생성하면, 나중에 다른 곳에서도 재사용하기 쉽다. 생성된 스크립트만 복사하면 되고, gist 자체적으로 히스토리를 제공하기 때문이다. 코드 생성 방법 https://gist.github.com에 접속해서, github 계정이 없다면 계정을 만들자. 가입한 후 로그인하면 1번과 같이 상단의 + 버튼을 클릭하면 코드를 작성할 수 있다. 코드 모음이 생성되면, 이 코드가 무엇인지에 대한 설명을 2번 위치에 적어준다. 확장자를 포함하여 임의의 파일명을 3번 위치에 적어준다. 이 파일명을 바탕으로 syntax highlighter가 활성화된다. (문법 표시) 인용할 ..
Javascript를 jsfiddle에서, SQL을 dbfiddle/sqlfiddle에서 확인하는 것처럼 Spock framework을 체험할 수 있는 사이트를 발견했다. 기존에 프로젝트가 셋업이 되어 있다면 그 프로젝트 파일에서 확인해 보면 좋겠지만 간단하게 확인하는 용도로는 나쁘지 않을 것 같다. 사이트: http://meetspock.appspot.com meetspock 이라는 이름이 뜻하는 것처럼, 간단히 체험해 볼 수 있다. 처음에 접속하면 다음과 같은 화면이 뜬다. 사이트 둘러보기 1에 표시한 영역에는 Spock 코드를 작성하면 된다. 사이트에 접속하면 화면과 같은 샘플코드가 먼저 작성되어 있다. 테스트 코드를 작성 한 후, 2에 표시된 바와 같이 "Run Script"를 실행하면 테스트 결..
주피터 랩/주피터 노트북 - password or token 입력창 뜨면? 아나콘다를 네비게이터를 실행하여 주피터랩/주피터노트북을 띄우려고 했더니, 다음과 같이 이미 실행 중인 인스턴스가 있다고 뜬다. 그리고, 브라우저를 통해 URL에 접속을 시도했더니 다음과 같은 창이 뜬다. Password 또는 Token을 입력하라고 한다. 문제 해결 친절하게도 해결책까지 스크린샷에 포함되어 있으니 그대로 따라해 보자. 즉, 1의 칸의 내용을 채워야 하는데 그 값은 2의 명령어로 확인 가능하다는 뜻이다. 터미널을 열고, 안내된 명령어를 입력해서 확인해 본다. $ jupyter notebook list http://localhost:8891/?token=2297dd42140a810437e50fe2b789909b1db0..
본 글에서는 SpringBoot와 Spock Test Framework를 연동하는 방법에 대해 소개한다. 구성 환경 (의존성) SpringBoot: 2.4.2 Default JUnit: 5.x Spock: 1.3 Groovy: 2.5 만약, 이후에 다른 버전으로 테스트 한다면, 그에 맞는 설정 방법을 다시 확인해야할 것이다. 기본 틀잡기 Spring Initializer(https://start.spring.io/)를 활용하여, 일단 기본적인 프로젝트를 다음과 같이 설정해 보았다. plugins { id 'org.springframework.boot' version '2.4.2' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java..
MySQL Information_schema로 세부 정보 확인하기 특정 어느 한 개의 테이블에 대한 스키마 정보를 알고 싶을 때, desc 테이블명 을 실행하면 테이블의 스키마를 확인할 수 있다. 그런데, 전체 스키마 중 어떤 특징을 기준으로 조회하거나 내용을 걸러서 확인해야 한다면, 모든 테이블을 대상으로 desc 하는 것은 비효율적이다. DB 테이블 구조를 쿼리로 확인할 수 있다면 도움이 될 것이므로, 어떤 정보를 조회할 수 있는지 다음과 같이 확인해 보자. 테스트스키마 및 테이블 구성 테스트를 위해, 아래와 같이 스키마를 만들고 몇 개의 테스트 데이터를 넣어보자. CREATE TABLE IF NOT EXISTS `docs` ( `id` int(6) unsigned NOT NULL, `rev` int..
Docker를 사용하여 MySQL을 설치하는 방법을 정리한다. docker-compose.yml YAML 파일의 기본 골격을 다음과 같이 작성한다. version: "3" services: db: image: mysql:8.0.20 container_name: mysql_db restart: always ports: - "3306:3306" environment: MYSQL_DATABASE: "${MYSQL_DATABASE}" MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}" MYSQL_USER: "${DB_USER_ID}" MYSQL_PASSWORD: "${DB_USER_PASSWORD}" command: - --character-set-server=utf8mb4 - --co..
docker-compose: An http request took too long to complete 에러? docker-compose를 실행했는데, 실행 도중 아무 반응이 없다가 툭하니 An http request took too long to complete. 에러가 발생한다면? ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information. If you encounter this issue regularly because of slow network conditions, consider setting COMPOSE_HTTP_TIMEOUT to a higher value (current..
에어팟/에어팟 프로를 쓰다 보면 자동으로 연결이 잘 되어서 좋긴 한데, 사용하는 애플 기기 중 페어링 해놓은 기기가 여러 개가 되면 의도적으로 조정하고픈 순간이 온다. 예를 들어, 아이폰/아이패드/맥북 등을 쓰고 있는데, 마지막에 연결해서 듣던 기기는 아이폰이었다. 그런데, 나는 지금 원격 회의에 들어가야 하고, 이 때 에어팟을 쓰고 싶다. 얼른 페어링을 전환해야 하는데, 급할 때는 이게 또 잘 안된다. 메뉴를 찾아서 클릭도 해야할라치면 번거롭고 잘 되지도 않는다. 이럴 때, 본 글처럼 설정해 놓으면 이런 상황에 대응하기 유용하다. TL;DR - 원문 링크 등도 첨부하나 아래와 같이 따라하면 금방 설정할 수 있을 것이다. 아래 링크를 보면, animated gif로 되어 있어, 대충 어떻게 쓰면 된다는 ..