Tips
-
Redshift에서의 where ... in과 inner join 성능 비교Tips 2023. 10. 30. 18:56
비교 쿼리: explain select {컬럼} from {테이블} as o inner join ( select {조건 컬럼 1} , {조건 컬럼 2} from {테이블} ... ) as t on o.{조건 컬럼 1} = t.{조건 컬럼 2} and o.{조건 컬럼 1} = t.{조건 컬럼 2} explain select {컬럼} from {테이블} where ({조건 컬럼 1}, {조건 컬럼 2}) in ( select {조건 컬럼 1} , {조건 컬럼 2} from {테이블} ... ) 결과: 실행계획을 살펴보니 where ... in 쿼리도 inner join으로 수행되었다. 아마도 분석 후 inner join으로 실행하는 것이 더 효율적이라 그렇게 실행한 것 같다. 일반적으로 RDBMS에서 whe..
-
따옴표 또는 쌍따옴표가 포함된 문자열을 DB API로 적재하기Tips 2023. 10. 24. 18:50
python에서는 문자열을 표현하는 기호로 쌍따옴표(")와 따옴표(')를 모두 사용하므로, 문자열 안에 쌍따옴표나 따옴표가 포함될 경우 알아서 escape 기호(\)를 사용하거나 문자열 표현자를 쌍따옴표 또는 따옴표를 선택해서 사용함으로써 인식한다. 하지만 SQL에서 쌍따옴표는 컬럼명을 의미하므로, 문자열에는 ' 만 사용할 수 있고, 문자열 내부에 '가 포함되는 경우 escape 기호를 사용해서 넣으면 된다. 부딪힌 상황은 외부 api를 사용해 받은 응답값을 DB에 저장하는데 해당 응답 문자열에 ' 또는 "가 포함되는 경우가 있었고,(예시 - "이름은 'abc'입니다.") 해당 문자열을 executeone 함수로 insert했을 때 syntax error가 발생했다. 해결 방법은 두 가지가 있는데, 첫 ..
-
colab에서 mecab 설치 실패시 해결 방법 (error: subprocess-exited-with-error)Tips 2023. 8. 24. 18:51
로컬에서 Mecab 설치할 때는 m1이라고 애먹이더니 코랩에서 설치하니 또 왜 안돼는지 모르게 안됐다. (심지어 어제까진 됐음..;) 빌드파일에 에러가 있는 것 같아 pip --upgrade도 해보고, 자바도 다시 설치해보고, 블로그 상위에 나오는 글들은 다 시도해봤지만 안됐는데 다음 구문으로 설치 했다. !pip install cython !pip install 'nemo_toolkit['all']' !curl -s https://raw.githubusercontent.com/teddylee777/machine-learning/master/99-Misc/01-Colab/mecab-colab.sh | bash
-
눈으로 보기에 같은 글자이지만 다른 글자로 인식되는 경우에는 아스키코드를 뽑아보자Tips 2023. 6. 12. 23:09
현재까지 수집된 검색어를 대상으로 추천 검색어를 추출하는데, 입력된 검색어와 달라야하는 조건이 있었다. "한복"을 검색했는데 "한복"을 추천해주는 건 의미가 없으니. select input_s."query" as input_query , rmcd_s."query" as rcmd_query from searched_quries as input_s join searched_queries as rcmd_s on input_s.user_id = rcmd_s.user_id where input_s."query" != rcmd_s."query" (위의 코드는 실제 데이터를 추출한 코드에서 로직만 간략하게 표시한 코드이다) join시 where절에 input 검색어 != 추천 검색어 조건을 걸어줬는데도 다음과 같이 ..
-
Javascript에서 서버 시간대에 상관없이 한국 시간으로 현재 날짜 호출하기Tips 2023. 5. 16. 10:35
function getToday() { const locale = new Date(); // 서버 시각 /* 1) .getTime()을 통해 현재 서버의 에폭시간(unix time)을 구함 2) .getTimezoneOffset()을 통해 서버와 UTC간의 시간차를 분단위로 구함 (Offset이라고 함) 3) Offset에 *60000을 해서 밀리초로 변환함 4) 두 초를 더해줌 = UTC의 에폭시간이됨 */ const ust = locale.getTime() + (locale.getTimezoneOffset() * 60 * 1000); /* 1) KST와 UST의 시차인 9시간을 밀리초로 변환해준 것을 UST와 더함 = KST의 에폭시간이 됨 2) KST의 에폭시간을 Date함수의 인자로 넣어주면 연,..
-
우분투에 Curl 최신 버전 설치하기 (http 400, 500에러 실패 처리하기 (--fail 옵션), curl: option --retry-all-errors: is unknown 에러 해결)Tips 2023. 1. 30. 16:24
http 400/500 응답시 cUrl 요청 실패처리하기 cUrl은 http, https, ftp 등의 프로토콜을 통해 url로 데이터를 전송하는 명령줄 도구이다. 서버가 응답을 하면 성공으로 인식을 하는데, http/https서버의 경우 400번대, 500번대 응답 코드를 받아도 응답한 것으로 간주하여 CICD 파이프라인에서 cUrl로 서버 응답 확인을 할 때 서버는 띄워졌으나 특정 엔드포인트가 응답하지 않을 경우에도 exitcode를 0으로 리턴하는(성공)으로 인식하는 문제가 있었다. 이 때, 두 가지 방법으로 처리할 수 있는데, 첫번째 방법은 -w 옵션을 사용하여 http상태코드를 출력값으로 받는 것이다. 해당 출력값을 변수로 받아 if문으로 200이 아닌 경우 파이프라인을 실패하도록 처리할 수 있..
-
apt vs apt-get vs apt-cache차이, remove vs purge vs auto-remove 차이Tips 2023. 1. 30. 11:56
apt란? 나는 VM 운영체제로 주로 우분투를 사용하는데, ubuntu에서는 패키지를 관리할 때 apt를 사용한다. apt는 advanced package tool의 줄임말로, 데비안 계열의 운영체제들의 패키징 시스템 관리 도구다. CICD파이프라인을 짜다보면 패키지 업데이트나 삭제를 해야할 일들이 많은데, 이 때 사용되는 명령어들의 차이가 궁금해져 한 번에 정리해보려고 한다. 1. apt vs apt-get vs apt-cache apt-get은 패키지를 설치, 업데이트, 제거하는데 사용하며, apt-cache는 새 패키지를 검색하는데 사용한다. 이 외에도 dpkg라고 시스템에 이미 설치되어있는 패키지를 조회하는 명령어가 있는데, 이 세 개에서 각각 자주 사용되는 명령어들을 합쳐서 최종 사용자들이 한 ..