본문 바로가기

전체 글

(223)
Trouble Shooting - nginx 용량 늘리기(feat. 스토리 등록 오류) 1. 개요 Tripot 프로젝트를 운영하던 중 스토리가 정상적으로 등록되지 않는 오류가 발생했다. 이를 해결하는 과정을 기술하고자 한다.2. 증상세부적인 증상은 다음과 같다.사진을 등록하는 경우 오류 발생개발서버에는 없는 증상, 운영서버에서 스토리를 등록하는 경우에만 발생서버에서 INVALID_TOKEN 예외 발생이를 기반으로 우선 프론트 측에서 토큰이 정상적으로 오지 않을것이라는 생각을 1차적으로 하여 요청 및 응답을 받았다. 다음은 이의 일부이다.413 Request Entity Too Largenginx/1.27.3... "status": 413, ... 3. 원인 및 해결 현재 스토리 작성 로직은 다음과 같이 이루어진다.사용자가 스토리를 작성한다. 작성중이고, 확정되지 않았으므로 스토리의 사진은 ..
앱 버전 저장 및 관리하기 1. 개요 Tripot 프로젝트는 모바일 서비스이다. 어플을 운영하다 보면 버그가 생길 수 있다. 만약 치명적인 버그라면? 이를 수정했는데 업데이트 없이 그대로 사용하는 유저가 있다면? 업데이트를 한 사용자와 하지 않은 사용자는 UX적으로 큰 차이를 경험하게 될 것이다. 이를 방지하기 위해 버전을 서버에 저장하고, 사용자의 버전에 따라 업데이트를 권장하거나 강제하는 기능을 만들고자 한다.2. ERD ERD는 다음과 같다. 개인적으로 처음 구현해보는 기능이라 설계에서 애를 좀 먹었다. 필드를 하나씩 살펴보자.version_id: 해당 정보의 PK이다.version: 앱 버전을 기술한다. 1.0.1, 1.0.2와 같이 앱 버전이 들어갈 수 있다. 원활한 버전 비교 및 저장을 위해 문자열로 저장했다.(1.2...
백준 2824 최대공약수 (Java) 1. 문제상근이는 학생들에게 두 양의 정수 A와 B의 최대공약수를 계산하는 문제를 내주었다. 그런데, 상근이는 학생들을 골탕먹이기 위해 매우 큰 A와 B를 주었다.상근이는 N개의 수와 M개의 수를 주었고, N개의 수를 모두 곱하면 A, M개의 수를 모두 곱하면 B가 된다.이 수가 주어졌을 때, 최대공약수를 구하는 프로그램을 작성하시오.입력첫째 줄에 N(1 ≤ N ≤ 1000)이 주어진다. 둘째 줄에는 N개의 양의 정수가 공백으로 구분되어 주어진다. 이 수는 모두 1,000,000,000보다 작고, N개의 수를 곱하면 A가 된다.셋째 줄에 M(1 ≤ M ≤ 1000)이 주어진다. 넷째 줄에는 M개의 양의 정수가 공백으로 구분되어 주어진다. 이 수는 모두 1,000,000,000보다 작고, M개의 수를 곱하..
백준 1248 Guess (Java) https://www.acmicpc.net/problem/12481. 문제Given a sequence of integers, a1, a2, …, an, we define its sign matrix S such that, for 1 ≤ i ≤ j ≤ n, Sij="+" if ai + … + aj > 0; Sij="−" if ai + … + aj For example, if (a1, a2, a3, a4)=( −1, 5, −4, 2), then its sign matrix S is a 4×4 matrix: -+0+ +++  --   +We say that the sequence (−1, 5, −4, 2) generates the sign matrix. A sign matrix is valid if it c..
백준 16719 ZOAC (Java) 1. 문제2018년 12월, 처음 시작하게 된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다.앞 글자부터 하나씩 보여주는 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로운 규칙을 고안해냈다!규칙은 이러하다. 아직 보여주지 않은 문자 중 추가했을 때의 문자열이 사전 순으로 가장 앞에 오도록 하는 문자를 보여주는 것이다.예를 들어 ZOAC를 보여주고 싶다면, A → AC → OAC → ZOAC 순으로 보여주면 된다.바쁜 성우를 위하여 이 규칙대로 출력해주는 프로그램을 작성하시오.입력첫 번째 줄에 알파벳 대문자로 구성된 문자열이 주어진다. 문자열의 길이는 최대 100자이다.출력규칙에 맞게 순서대로 문자열을 출력한다. 2. 풀이이 문제의 조건을 성립시키기 위해서는 다음의 ..
백준 20010 악덕 영주 혜유 (Java) 1. 문제FT온라인 게임에서 치열한 경쟁을 통해 영주가 된 혜유는 퀘스트를 받았다. 퀘스트의 내용은 자신이 관리하고 있는 마을 사이에 교역로를 건설하여 마을 간 교류를 활성화시키는 것이다. 이때, 교역로는 양 방향으로 이동할 수 있으며, 서로 도달이 불가능한 마을이 없도록 교역로를 건설하여야 한다.마음이 괘씸한 혜유는 돈을 최대한 적게 쓰면서 퀘스트를 달성하려고 한다. 혜유를 도와서 모든 마을과 마을을 최소한의 비용으로 연결하고 그 비용을 구해보자. 또한 혜유는 이때 마을과 마을을 이동하는 가장 최악의 비용이 얼마인지에 관심이 많다. 임의의 두 마을을 이동하는 최단 경로 중 비용이 가장 큰 경로의 비용도 구해보자.입력첫 번째 줄에는 마을의 수 N(1 ≤ N ≤ 1,000)과 설치 가능한 교역로의 수 K(..
소셜 로그인 - 애플 identity_token에서 사용자 정보 가져오기 1. 개요 Tripot 프로젝트는 우선 아이폰 용으로 개발되었다. 기능 구현을 다 마치고 앱스토어에 올리려는데, 소셜 로그인을 사용하는 아이폰 앱 서비스는 애플 로그인을 필수로 구현해야 하는 조건이 있었다. OAuth2 자체는 프론트에서 구현을 해줬는데, 서버에서는 유저 고유id와 닉네임을 받아 회원 정보를 생성한다. 하지만 애플에서는 다음과 같이 응답이 전달된다.{ "authorizationCode": "인증 코드", "email": "이메일@....appleid.com", "fullName": { "familyName": "성", "givenName": "이름", "middleName": null, "namePrefix": null, "nameSuffix": null,..
백준 14925 목장 건설하기 (Java) 1. 문제랜드 씨는 퇴직금으로 땅을 사서 목장을 지으려 한다.  그가 사려고 소개받은 땅은 직사각형이고 대부분 들판이지만, 여기저기에 베기 어려운 나무와 치울 수 없는 바위가 있다.그는 목장을 하나의 정사각형으로 최대한 크게 지으려 하는데, 그 안에 나무나 바위는 없어야 한다. 땅의 세로 길이가 M미터, 가로 길이가 N미터일 때, 1미터 간격의 격자로 된 땅의 지도를 M x N행렬로 표현하자. 이때, 행렬의 원소 0은 들판, 1은 나무 그리고 2는 돌을 의미한다.  랜드씨의 땅에서 지을 수 있는 가장 큰 정사각형 목장의 한 변의 크기 L을 출력하시오.입력M NM x N 행렬1 1 출력L2. 풀이dp 배열을 다음과 같이 정의해보자.dp[i][j]: (i, j)를 마지막으로 하는 정사각형 중 가장 큰 것gr..