미니옵빠의 code stubs
운영 중 자주 사용하는 명령어 기록. cat access.log | awk '{ print $1 }' | sort -nr | uniq -c | sort -nr -k 1 File 기반 access log 에서, 특정 column 기반으로 aggeration (group by) count 출력. count 높은 순으로 desc. 특정 사이트 접속이 많을 때, 접속량이 많은 도메인 추출 등에 활용 e.g. 아래와 같은 형태의 access log raw 가 있을 때 abc.domain.com 111.222.111.222 - - [28/Dec/2021:23:59:59 +0900] "GET " bcd.domain.com 111.222.111.222 - - [28/Dec/2021:23:59:59 +0900] "GET..
Docker 최초 설치 후 client 명령어 실행 시 아래와 같이 인증서 오류가 나는 경우 unable to resolve docker endpoint: open /Users/username/.docker/ca.pem: no such file or directory Docker client 19.0x 부터 클라이언트에 ca 인증서가 강제되고 있음. (이하 버전에선 no problem) 아무 인증서 파일을 ca.pem 으로 rename, 해당 위치에 복사해 두면 일단 동작 함
MongoDB aggregate + unwind + out 조합에서 duplicate ID 오류를 만날 경우 projection 시 _id 를 없애면 됨. $out 으로 생성되는 신규 collection 의 PK 로 기존 문서의 _id 가 입력되다보니, unwind 로 array field 가 deconstructs 되었을 때 (left join 처럼) 중복 키가 발생됨. 그래서 _id 를 제거해 버리면, 신규 collection 내 신규 _id 가 생성되어 중복 오류가 사라짐 예) 기존 _id -> id 로 대체하고, _id 필드는 지움 .aggregate([{ $project: { id: '$_id', _id: 0, }},{ $unwind: { ... }},{ $out: 'tempCollection'..
MongoDB 사용 시, 데이터 추출을 위해 mongoexport 를 활용 1. aggregate 사용하지 못함가장 기본적인 export 도구이기 때문. 이럴 땐 aggregate 의 $out 기능을 활용하여"집계 결과를 신규 컬렉션에 저장" > "해당 컬렉션을 mongoexport" 로 추출 이라는 절차로 진행2.6+ 이상에서만 가능 Ref: https://stackoverflow.com/questions/16468602/mongoexport-aggregate-export-to-a-csv-file 2. ID/PW 입력 시 특수문자 escaping uri 나 host+id+pw 조합에서, 비밀번호 등에 @, $, single quote 등이 있을 경우 "server returned error on SAS..
mongoDB 에서 aggregate 후 sort 를 할 때 요런 오류 메시지를 만날 때가 있음 MongoDB : Sort exceeded memory limit of 104857600 bytes 아래와 같이 쿼리 내 allowDiskUse 옵션을 추가하여 해결 가능 db.getCollection('hello').aggregate( [ { $project: { "name": 1, "field_length": {$strLenCP: { $ifNull: ["name", "" ]}} } }, {$sort: {"field_length": -1}}, {$project: {"field_length": 0}}, ], {allowDiskUse: true} ) 참고로 Robo3T 에서 Replica Set 에 쿼리 시, ..
apache 의 child process 중 일부가 안 죽고 오래 살아있는 경우가 있어, 거기다 cpu 사용량까지 높아 서버 자원이 부족한 사태가 발생.서버 모니터링 문자 등을 받아 수작업으로 kill 시켜주다가, 귀찮아서 스크립트로 작성. 사실 원인 파악을 하고 해결해야 하지만, 여러 복잡한 관계가 얽혀있다보니 임시조치로 -_- 방법은 많겠지만 간단하게. 요런 스크립트를 하나 만들어 crontab 돌려두면 됨.참고로 5분 이상 돌고 있으면 죽여버리게 했는데, 이 코드도 문제가 있기 함. top -b -n 1 | grep -v root | grep httpd | awk '{ if ($11 > "5:00.00") { print $1 } }' | xargs kill -9
개발자 인증서 및 PP 는 해당 개발자 인증서 + 해당 mac 기기에 한해 인증됨 기기 변경 또는 두 개 이상 기기에서 개발 시, 본래 기기의 키체인에서 필요한 인증서 파일을 export 하여 사용하면 됨 Ref: https://soooprmx.com/archives/2260
Node 에서 log4js 를 사용하고, pm2 cluster 모드 사용 시 log4js 로그가 출력되지 않는 현상이 있음. pm2-intercom 을 활용하여 해결. pm2 worker 에서는 log4js 출력이 되지 않고, master 프로세스에서만 출력 된다고 합니다.pm2-intercom 에서 logEvent 를 받아 모든 프로세스로 broadcast 해준다고 하네요. 아래 그림 참고. 그림 ref: https://github.com/log4js-node/log4js-node/issues/547#issuecomment-385136125 설정 ref예시: https://gist.github.com/nomiddlename/99b7530281debc926d5e7b8a3b87350flog4js Confi..
openssl 로 확인 가능 openssl x509 -in ./인증서파일.crt -noout -text
yarn install 시 node_modules 에 일부 package 가 누락될 때.대부분 devDependencies 가 빠져있을 것임 NODE_ENV=production 설정되었을 때, yarn install 할 경우 devDependencies 가 제외되며 production 모드이지만 build 를 위해 devDependencies 가 필요할 경우 아래와 같이 --production=false 옵션을 주어 해결하면 된다. yarn install --production=false