본문 바로가기

전체 글

(223)
TourAPI를 이용하여 축제 데이터 수집하기 1. 개요 이번에는 다음의 기능을 구현할 계획에 있다. 금일 진행하는 팝업스토어와 축제 리스트를 지도에 위치를 나타냄과 같이 보여주고, 해당 정보를 확인할 수 있는 기능이다. 필자는 축제 리스트 조회를 맡았고, 이를 구현하고자 한다.2. API 축제 정보는 공공데이터 API에서 가져오도록 하고, 다음의 두 데이터셋이 눈에 띄었다.2-1. 전국문화축제표준데이터https://www.data.go.kr/data/15013104/standard.do#/tab_layer_open 전국문화축제표준데이터국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datasewww.data.go.k..
Trouble Shooting - @Mock vs @Spy 1. 개요현재 소셜로그인은 관련 제공사의 확장에 대응하기 위해 다음과 같아 전략 패턴을 사용하고 있다. private final List oAuth2MemberStrategies; /** * OAuth2 과정을 프론트 단에서 처리 * @param response * @param oAuth2LoginDto * @param provider * @return */ public CheckActiveMemberDto oauth2Login(HttpServletResponse response, OAuth2LoginDto oAuth2LoginDto, OAuth2Provider provider) { OAuth2UserInfo userInfo = ge..
웹 크롤링 - 축제 정보 가져와보기 1. 개요 Tripot 프로젝트 중 축제 정보를 가져와 보여줄 기능을 구현하고자 했었다. 이에 대한민국 구석구석 사이트에서 정보를 크롤링해와 이를 보여주는 기능을 구현해보자. 후술하겠지만 해당 코드는 프로젝트에 사용하지 않았다. 웹 크롤러: 조직적, 자동화된 방법으로 월드 와이드 웹을 탐색하는 컴퓨터 프로그램웹 크롤링: 크롤러가 하는 작2. Selenium웹 브라우저 자동화를 위해 만들어진 파이썬, 자바, C# 등 다양한 언어를 지원하는  오픈 소스 프레임워크이다. @NullMarkedpublic interface WebDriver extends SearchContext { void get(String url); @Nullable String getCurrentUrl(); @Nullabl..
백준 16235 나무 재테크 (Java) 1. 문제부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 떨어진 칸의 개수, c는 가장 왼쪽으로부터 떨어진 칸의 개수이다. r과 c는 1부터 시작한다.상도는 전자통신공학과 출신답게 땅의 양분을 조사하는 로봇 S2D2를 만들었다. S2D2는 1×1 크기의 칸에 들어있는 양분을 조사해 상도에게 전송하고, 모든 칸에 대해서 조사를 한다. 가장 처음에 양분은 모든 칸에 5만큼 들어있다.매일 매일 넓은 땅을 보면서 뿌듯한 하루를 보내고 있던 어느 날 이런 생각이 들었다.나무 재테크를 하자!나무 재테크란 작은 묘목을 구매해 어느정도 키운 후 팔아서 수익을 얻는..
k6을 이용한 성능 테스트 1. 개요 이번에는 원활한 유지보수를 위해 성능 테스트를 해보고자 한다. 성능 테스트를 통해 가상의 사용자를 만들어 서비스를 이용시킨 후 그 성능을 측정할 수 있다. 만약 생각하는 성능에 못 미칠 경우 개선하는 방향을 생각해볼 수 있다. 이번에는 처음 사용하는 만큼 로컬에서 스크립트를 구성하고, 실행해볼 것이다. 2. K6 vs Jmeter 성능 테스트 툴은 여러 가지가 있지만, 두 가지 도구를 놓고 비교하였다.2-1. K6 Go 기반으로 Grafana Labs에서 개발된 성능 테스트 툴상대적으로 리소스를 덜 사용함javascript를 사용한 스크립트 작성 및 실행 가능2-2. JmeterJava 기반으로 개발된 오픈 소스 성능 테스트 툴리소스를 많이 사용함GUI가 잘 되어있어 러닝커브가 상대적으로 낮음..
백준 15681 트리와 쿼리 (Java) https://www.acmicpc.net/problem/156811. 문제간선에 가중치와 방향성이 없는 임의의 루트 있는 트리가 주어졌을 때, 아래의 쿼리에 답해보도록 하자.정점 U를 루트로 하는 서브트리에 속한 정점의 수를 출력한다.만약 이 문제를 해결하는 데에 어려움이 있다면, 하단의 힌트에 첨부한 문서를 참고하자.입력트리의 정점의 수 N과 루트의 번호 R, 쿼리의 수 Q가 주어진다. (2 ≤ N ≤ 105, 1 ≤ R ≤ N, 1 ≤ Q ≤ 105)이어 N-1줄에 걸쳐, U V의 형태로 트리에 속한 간선의 정보가 주어진다. (1 ≤ U, V ≤ N, U ≠ V)이는 U와 V를 양 끝점으로 하는 간선이 트리에 속함을 의미한다.이어 Q줄에 걸쳐, 문제에 설명한 U가 하나씩 주어진다. (1 ≤ U ≤ ..
모니터링 구축(feat. Prometheus, Grafana) 1. 개요 운영을 하게 되면 항상 로직이 잘 돌아갈 수는 없다. 문제가 발생하면, 이를 해결해야 하는데 그 전에 원인을 빨리 파악하는 것이 중요하다. 이번에는 모니터링 구축을 위해 프로메테우스와 그라파나를 사용해보고자 한다. 2. 프로메테우스와 그라파나 서버를 운영할 때, CPU 사용률, 메모리 사용률, 요청 등 성능 측정을 위한 수치를 메트릭이라 하는 데 이를 저장하는 DB이다.  간단히 보면 Prometheus targets에서 메트릭을 가져와서 Prometheus server에 저장한다. 이를 Data visualization에 있는 대시보드로 편하게 볼 수 있는 데, 이 역할을 Grafana가 한다. 3. 적용 우선 다음 두 dependencies를 추가한다. 본 멀티 모듈 프로젝트에서는 API ..
MySQL 백업하기 1. 개요 Tripot 운영을 시작했다. 실제로 운영을 시작한 만큼 유저들의 정보가 있을 것이고, 모종의 이유로 DB 데이터가 손실된다면 치명적이다. 이를 방지하기 위해 매일 운영 DB를 백업하고자 한다. 2. 백업 현재 서비스는 mysql 8.0을 사용하여 운영중에 있다. 이는 mysqldump를 사용하여 다음과 같이 백업이 가능하다.mysqldump -uroot -p{password} {db이름} > {백업경로} 현재 서비스에서 mysql은 도커 컨테이너 위에 올라가 있다. 컨테이너 외부로 덤핑 파일을 확인하기 위해 우선 다음과 같이 볼륨을 설정했다. mysql: container_name: mysql image: mysql:8.0 ... volumes: ..