본문 바로가기
반응형

컴퓨터공학 기초55

[MongoDB] group 쿼리를 사용하여 Array<Object> 데이터 그룹화하기 MongoDB 를 사용하다보면 Array 형식인 데이터를 그룹화 해야할때가 있습니다. 예를들어 아래와 같은 데이터가 있고 user 의 type 별 평균값을 알고싶다고 가정해봅시다. { "id" : 1, "userId" : 1, "items" : [ {"type" : 1, "value" : 1}, {"type" : 2, "value" : 2}, ] }, { "id" : 2, "userId" : 1, "items" : [ {"type" : 1, "value" : 3}, {"type" : 2, "value" : 4}, ] } 눈으로 보면 굉장히 쉬워보입니다. userId 로 group 한 후 타입별로 평균값을 내기만하면됩니다. 이 쉬워보이는 작업을 필자는 오랜시간 삽질한후에 결과를 낼 수 있었습니다. 혹시나 .. 2022. 7. 3.
[MongoDB] Index 를 이용하여 Sort 하기 Mongo 에서는 인덱스에 정렬필드가 포함되어 있다면 인덱스를 사용하여 정렬을 할 수 있다. 인덱스에 포함되지 않은경우 blocking sort 를 사용한다. blocking sort는 collection 또는 database 에서 concurrent 작업을 차단하지 않는다. 공식문서에 따르면 index 를 이용한 정렬이 blocking sort 보다 성능이 좋다. 정렬은 역방향, 정방향 둘 다 지원한다. 예를 들어보자 아래와 같은 인덱스를 생성 했을 때 db.records.createIndex( { a: 1 } ) 두 쿼리 모두 위의 인덱스를 사용한다. db.records.find().sort( { a: 1 } ) db.records.find().sort( { a: -1 } ) 하지만 Multiple .. 2021. 7. 16.
[PostgreSQL] postgresql replication slot does not exist backup을 통해 받으면 안생길 수 있다. 다시 생성해주면 정상적으로 replication 이 된다. 2021. 3. 15.
[nginx] error code 별로 error page 보여주기 에러코드별로 별도의 에러페이지를 보여줘야 할 때가 많다. nginx 를 이용하여 간편하게 처리할 수 있다. http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip.. 2021. 2. 28.
[nginx] worker_processes 란 ? nginx에는 worker_processes 라는 지시어가 있습니다. 이 지시어는 워커 프로세스의 개수를 정의하는데 사용됩니다. worker_processes 1로 정의를 하면 프로세스는 1개만 뜨게 됩니다. 이 옵션을 수정하고 재시작 해보겠습니다. 최적의 값은 사용 가능한 CPU 코어의 수라고 합니다. 현재 제가 실행하고 있는 인스턴스는 2 Core이므로 worker_processes를 2로 설정해보겠습니다. 재시작 후 프로세스 수의 변화를 살펴 보겠습니다. 프로세스가 2개 뜬것을 볼 수 있습니다. 출처 : nginx.org/en/docs/ngx_core_module.html#worker_processes Core functionality Core functionality Example Configur.. 2021. 2. 27.
[nginx] GCP에 nginx 설치하기 근무하는 회사에서 서비스 운영을 맡게되었다. 그로 인해 대충 알고있던 인프라에 대해 공부를 해야겠다고 생각했고 그 시작으로 nginx 설치를 하려고 한다. 1. sudo yum install yum-utils 2. /etc/yum.repos.d/nginx.repo 파일 생성 후 내용 작성 이때 주의해야 할것은 sudo 명령어를 이용하여 열지 않으면 작성이 되지 않는다. [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=tru.. 2021. 2. 26.
[Tomcat] war파일 없이 배포하기 Tomcat에서 war파일 없이 배포하는 방법을 알아보도록 하겠다. symbolic link를 이용하여 배포할 수 있다. Tomcat/webapps 하위에 Symbolic link를 설정해서 따라가게 할 수 있다. tomcat/webapps 경로에 Symbolic link 생성 ln -s 소스경로 ROOT tomcat/bin/start.sh 실행 2021. 1. 2.
[Tomcat] org.apache.catalina.util.LifecycleBase.handleSubClassException Failed to initialize component [Connector[HTTP/1.1-8080] 원인 : 이미 사용중인 포트에 start 를 하려고해서, 아마 서버를 내릴때 제대로 안내려갔다던가 여러가지 이유로 포트를 중복 사용하는 것으로 인식할 것이다. 처리 ps -ef | grep tomcat 결과 나오는 process 번호를 kill 명령어를 사용해서 종료하면 된다. kill -9 ~~ 2021. 1. 1.
JAVA 환경변수를 설정했는데 java 명령어가 안 먹힐 때 환경변수-시스템변수에 Path변수가 있다. 편집을 클릭한다. %JAVA_HOME%\bin을 맨위로 올린다. 확인한다. 2020. 12. 29.
[Maven] java: Compilation failed: internal java compiler error Maven으로 처음 프로젝트를 만들고 빌드를 하려고하면 java: Compilation failed: internal java compiler error 이러한 에러가 뜰 것이다. 원인은 Maven 은 처음 프로젝트를 만들게되면 build를 1.5기준으로 맞춘다. 해결방법은 아래 코드를 삽입해주면 된다. org.apache.maven.plugins maven-compiler-plugin 1.8 1.8 UTF-8 2020. 12. 13.
[Maven] maven unmappable character for encoding UTF8 maven으로 컴파일을 할때 maven unmappable character for encoding UTF8 이러한 오류가 발생할 수 있다. 검색해 보면 해결 방법은 간단하게 찾을 수 있다. org.apache.maven.plugins maven-compiler-plugin UTF-8 위와 같은 구문으로 encoding을 설정해주면된다. 나같이 maven이 익숙하지 않은 사람들을 위해서 조금 더 자세하게 적으려고 한다. 위의 문구는 build라는 태그 안에 들어가야한다. org.apache.maven.plugins maven-compiler-plugin UTF-8 2020. 12. 12.
[ELK] Unable to connect to Elasticsearch. Error: Request Timeout after 30000ms Kibana를 실행할때 Unable to connect to Elasticsearch. Error: Request Timeout after 30000ms 에러가 나면서 실행이 안되는 경우가 있을 것이다. (In case of using Kibana, there may be an error "Cannot connect to Elasticsearch. Error: Request Timeout after 30000ms" and it may not be executed.) 해결방법 (solution) 설치경로/kibana/config 하위에 kibana.yml 파일의 elasticsearch.requestTimeout 의값을 180000으로 늘려준다. (Under Installation path/kibana/c.. 2020. 11. 8.