분류 전체보기505 [PG] 뉴스 클러스터링 - JAVA 1. 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브는 사용자들이 편리하게 다양한 뉴스를 찾아볼 수 있도록 문제점을 개선하는 업무를 맡게 되었다. 개발의 방향을 잡기 위해 튜브는 우선 최근 화제가 되고 있는 "카카오 신입 개발자 공채" 관련 기사를 검색해보았다. 카카오 첫 공채..'블라인드' 방식 채용 카카오, 합병 후 첫 공채.. 블라인드 전형으로 개발자 채용 카카오, 블라인드.. 코딩테스트/PROGRAMMERS 2022. 9. 24. [NLP] Docker로 Konlpy 사용하는 Flask 배포 konlpy는 자바 라이브러리를 내부적으로 실행시키기 때문에 파이썬 코드라도 자바환경이 갖춰져야한다. 하지만 플라스크 배포 시에는 어떻게 해야할 지 방법이 잘 나와있지 않아서 여기저기 자료를 찾아보고 해결한 결과를 정리해둔다. 이 글을 읽기 앞서서, 플라스크의 구조는 [이 방식]으로 구성했다. 1. requirements.txt pip로 이 두 가지를 설치해야한다. JPype1 == 1.4.0 konlpy == 0.6.0 2. main.py 내 플라스크 api일부이다. 이것처럼 konlpy의 라이브러리를 쓰기전에 jpype.attachThreadToJVM()를 호출해야한다. 3. Dockerfile 자바랑 파이썬 같이 있는 이미지를 불러와야한다. openjdk:slim을 사용하면 자바와 파이썬이 동시에 .. 기록/CI&CD 2022. 9. 23. [Hadoop] Python으로 wordcount하기(Hadoop Streaming) 코드는 딱히 특별하지 않아서 설명하지 않는다. (내가 이 글로 말하고 싶은 부분은 3,4번에 있다.) 1. mapper #!/usr/bin/env phthon3 # -*-coding:utf-8 -* import sys for line in sys.stdin: words = line.strip().split() for word in words: print('{}\t{}'.format(word, 1)) 2. reducer #!/usr/bin/env python3 # -*-coding:utf-8 -* import sys def print_output(word, count): print('{}\t{}'.format(word, count)) word, count = None, 0 for line in sys.st.. 기록/그 외 프로젝트 기록 2022. 9. 22. [PG] 캐시 - JAVA 1. 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 지도개발팀에서 근무하는 제이지는 지도에서 도시 이름을 검색하면 해당 도시와 관련된 맛집 게시물들을 데이터베이스에서 읽어 보여주는 서비스를 개발하고 있다. 이 프로그램의 테스팅 업무를 담당하고 있는 어피치는 서비스를 오픈하기 전 각 로직에 대한 성능 측정을 수행하였는데, 제이지가 작성한 부분 중 데이터베이스에서 게시물을 가져오는 부분의 실행시간이 너무 오래 걸린다는 것을 알게 되었다. 어피치는 제이지에게 해당 로직을 개선하라고 닦달하기 시작하였고, 제이지는 DB 캐시를 적용하여 성능 개선을 시도하고 .. 코딩테스트/PROGRAMMERS 2022. 9. 18. [AWS] 같은 브랜치에 있는 프론트엔드, 백엔드 자동배포하기 (6) Jenkinsfile, vue & springboot Dockerfile 작성 1. 프로젝트 구조 프로젝트 구조는 다음과 같다. Jenkinsfile, frontend폴더, bacnekd폴더가 가장 최상단에 있고 그 밑에 Dockerfile이 있다. 2. Jenkinsfile tools에서 이전에 설치한 메이븐 이름을 쓴다. M3로 설정했으므로 maven "M3"을 적는다. stages는 네 단계로 나눴는데, 다음과 같다. 1) Docker kill 이미 프론트엔드, 백엔드 돌아가고있는 도커가 있다면 멈추고 해당 컨테이너를 지웠다. 만약 그 컨테이너가 없다면 오류가 나면서 빌드가 멈추기 때문에 || 연산을 사용해서 있든 없든 빌드가 계속되도록 했다. 2) Prepare checkout scm 명령어로 깃 레파지토리를 가져온다. 성공한다면 prepare success, 실패한다면 p.. 기록/CI&CD 2022. 8. 18. [AWS] 같은 브랜치에 있는 프론트엔드, 백엔드 자동배포하기 (5) jenkins 컨테이너 내부에 docker 설치 및 Webhook 설정 1. jenkins 컨테이너 내부에 docker 설치 1) sudo, vi, wget 설치 # 컨테이너 접속 docker exec -it jenkins bash apt update apt install vim apt install sudo apt install wget 2) docker 설치 sudo apt update sudo apt install apt-transport-https ca-certificates curl software-properties-common sudo wget -qO- | sh sudo systemctl start docker sudo systemctl enable docker 3) docker.sock 권한변경 sudo chmod 666 /var/run/docker.sock .. 기록/CI&CD 2022. 8. 17. [AWS] 같은 브랜치에 있는 프론트엔드, 백엔드 자동배포하기 (4) Jenkins 설치 및 설정 1. Docker로 Jenkins 설치 1) jenkins 이미지 파일 내려받기 docker pull jenkins/jenkins:lts 2) jenkins 이미지 컨테이너로 실행 ubuntu와 젠킨스 컨테이너 볼륨을 연결한다. ubuntu의 /jenkins 와 컨테이너의 /var/jenkins ubuntu의 /home/ubuntu/.ssh 와 컨테이너의 /root/.ssh ubuntu의 /var/run/docker.sock 와 컨테이너의 /var/run/docker.sock (바깥에 설치된 docker를 jenkins 속 도커에서도 사용할 수 있도록 한다.) 이름은 jenkins, 계정은 root로 한다. docker run -d -p 8080:8080 -p 50000:50000 -v /jenkins:.. 기록/CI&CD 2022. 8. 13. [AWS] 같은 브랜치에 있는 프론트엔드, 백엔드 자동배포하기 (3) Nginx 설치 및 설정 1. Nginx 설치 sudo apt update sudo apt install nginx 2. SSL 인증서 1) certbot 설치 sudo add-apt-repository ppa:certbot/certbot sudo apt install python-certbot-nginx 2) SSL 인증서 가져오기 nginx 플러그인을 사용한다. sudo certbot --nginx -d 도메인주소 차례대로 이메일, 서비스 약관 동의절차를 수행한다. Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Enter email address (used for urgen.. 기록/CI&CD 2022. 8. 12. [AWS] 같은 브랜치에 있는 프론트엔드, 백엔드 자동배포하기 (2) Docker, Docker Compose 설치 1. Docker 설치 1) 사전작업 sudo apt update sudo apt install apt-transport-https ca-certificates curl software-properties-common 2) 자동 설치 스크립트 활용 sudo wget -qO- | sh 3) Docker 서비스 실행하기 및 부팅 시 자동 실행 설정 sudo systemctl start docker sudo systemctl enable docker 4) Docker 그룹에 현재 계정 추가 sudo usermod -aG docker ${USER} # ${USER} 대신 ubuntu를 넣어 진행했다. sudo systemctl restart docker 2. Docker Compose 설치 1) 설치 $ sud.. 기록/CI&CD 2022. 8. 11. [AWS] 같은 브랜치에 있는 프론트엔드, 백엔드 자동배포하기 (1) 초기설정 1. 초기 설정 sudo apt update sudo apt upgrade sudo apt install build-essential 2. java 설치 # 설치 sudo apt-get install openjdk-8-jdk # 버전확인 java -version 3. timezone 설정 sudo rm /etc/localtime sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime 4. hostname 설정 sudo hostnamectl set-hostname 이름.localdomain sudo vi /etc/hosts /etc/hosts 맨 윗줄을 변경한다. 127.0.0.1 이름.localdomain 이름 localhost4 localhost4.loca.. 기록/CI&CD 2022. 8. 10. [AWS] ec2에 openVidu on premises 설치하기 1. 사전 작업 Docker와 Docker compose를 미리 설치해야 한다. 설치 방법은 [이 글]에 있다. openvidu는 포트를 많이 쓰기 때문에 아래 포트를 전부 열어야 한다. openvidu의 http, https 포트로 80, 443 외에 다른 걸 쓰려면 그 포트도 연다. (밑의 명령어는 80, 443만 열려있다.) # ufw 설치 sudo apt install ufw # 포트 열기 ufw allow ssh ufw allow 80/tcp ufw allow 443/tcp ufw allow 3478/tcp ufw allow 3478/udp ufw allow 40000:57000/tcp ufw allow 40000:57000/udp ufw allow 57001:65535/tcp ufw allow.. 기록/CI&CD 2022. 8. 9. [AWS] ec2에 mysql 설치하기 1. EC2에서 MySQL 설치 1) 설치 # 설치 sudo apt install mysql-server # root계정 접속 sudo mysql -u root -p 2) 계정 생성 및 권한 부여 CREATE USER '아이디'@'%' IDENTIFIED BY '비밀번호'; FLUSH PRIVILEGES; show grants for '아이디'@'%'; grant all privileges on *.* to '아이디'@'%'; 3) 외부접속 허용 sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf # bind-address=0.0.0.0로 변경한다. # 포트 허용 sudo ufw allow out 3306/tcp sudo ufw allow in 3306/tcp # mysql 재시.. 기록/CI&CD 2022. 8. 8. 이전 1 ··· 16 17 18 19 20 21 22 ··· 43 다음