일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 백준
- MariaDB
- 11053
- 알고리즘다지기프로젝트
- DP
- while
- 알고리즘
- 도커
- WebFlux
- RESTful
- 빗버킷
- 검색 API
- search api
- 자바
- bitbucket
- 2375
- Reactive stream
- event_scheduler
- 스프링 번역
- Programming
- jenkins
- 다이나믹프로그래밍
- 페이징
- 컴퓨터공학기초
- 젠킨스
- Today
- Total
목록IT (19)
쑥로그
사용스펙 Kotlin, MongoDB 왜 찾게 되었을까? 자원관리 모듈을 맡아 API를 만드는 중에 '자원은 검색이 용이해야하지 않을까?' 라는 생각을 했다. 방식을 찾을 때 염두한 것은 세 가지가 있다. 보수 비용이 적게 들 것 개발이 보다 쉬울 것 Restful할 것 그러면 어떻게 검색하면 좋을까? 첫 번째, 모든 필드들을 query parameter로 받는다. 예) GET ?a=b&c=d&e=f&page=0&size=10 장점 타입을 별도로 체크할 필요 없다. 예를 들어서 a는 int이고 c는 string이 명확하기 때문에 확인할 필요 없이 타입변환하면 된다. 필드 수가 적으면 개발이 빠르다. 체크하는 로직이 추가될 필요 없이 query parameter로 받겠다고 선언만 해놓으면 바로 쓸 수 있다..
관련 개념 Reactive stream Mono, Flux 목적 DB에 값이 있으면 while문을 빠져나오는 코드를 작성하자. 이로 인해 무한으로 돌 수 있는 사항은 제외 구현 webflux를 6개월 동안 다뤘지만 아직도 많이 어렵다. 기존 스프링의 동작 방식에 너무 익숙해져서 웹플럭스에 익숙해졌다고 생각할 때쯤 의외로 이상한 곳에서 또 기존으로 돌아가는 것이다. 제일 먼저 작성했던 코드는 아래와 같다. while(check) { println(1) 디비 가져오는 함수.flatMap { println(2) check = false Mono.just(check) } println(3) } 예상했던 안은, 1번 ) 1->2->3, 2번) 1->3(무한). 그런데 의외롭게도 1만 무한으로 출력되는 상황이 벌어..
기간 : 2019-10-13 ~ 2019-12-13 (약 2개월) 기능 : 이메일 전송 기능 수행 (바로전송, 예약전송, 발송완료) 기술 스택 : Spring boot-webflux, mongoDB, kotlin, aws 처음 1개월 - webflux, mongodb, kotlin, aws 스터디 다음 1개월 - 기능 개발
https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 www.acmicpc.net BFS로 쉽게 풀 수 있는 문제였다. 다만 조금 애먹었던 점이 메모리 초과 부분이었다. 익히 알고있는데로 BFS로 풀면 메모리 초과 문제가..
https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 마지막날까지 최대로 일할 때 얻을 수 있는 최고 수익을 구하는 문제. 처음에는 그리디인가 싶어서 그리디로 풀려고했지만, 결국 이건 답이 있는 문제기 때문에 다이나믹 프로그래밍으로 풀었다. 해법은 일단 일을 하기 시작하면 그 소요 기간만큼은 일할 수 없다는걸 가정하는것. 0. 퇴사날 이후로는 일을 할 수 없기 때문에 그 날에 걸리는 일들은 전부 -987654321로 처리했다. 1. 일 수를 돌면서 2. 그날 일을 한다면 소요기간만큼 건너 뛰고 그 다음 날부터 모든 일에 일을 할 수 있으므로 그날 일했을때 얻을수 있는 비용과 비교해서 최..
https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. www.acmicpc.net 풀이방법은, {10, 20, 10, 30, 20, 50} 일 때 10 10 20 10 20 30 10 20 50 10 20 30 50 이렇게 이전에 갔던 길을 저장하고 있는 것이다. 처음에 재귀로 풀었다가 시간초과가 났다. 재귀도 결국 이전에 계산 했던 값을 가지고 들어가는 거니까 상관없을 거라 생각..
https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 연속된 합중에서 가장 큰 값을 구하는 문제이다. 여기서 키포인트는 한 개 이상의 연속된 값 중에서 찾는 것이다. 문제 속 예제를 생각해본다면, 인덱스 0 0+1 0+1+2 0+1+2+3 ... 0+1+2+3+...+8+9 이다. 0+1, 0+1+2 등 공통된 부분이 자꾸 더해지므로 재사용하는 것이 좋다. 처음엔 이 값들을 배열에 저장하고 있을까 하다가 결국 합이라서 그렇게까지 할 필요가 없을 것 같았다. 왜..
간단히 에러 해결 방안을 기록하려 한다. mariadb, liquibase를 쓰면서 중간에 로그와 sql이 꼬이고 말았다. event_scheduler가 disabled되어있기 때문에 create event 할 수 없다는 에러가 출력됐다. 그러면 다시 abled 시켜주면 되지 하고 세팅해주기로 했다. SET global event_scheuler=on; 안된다.. 1,0,대문자, 소문자 다 써봤지만 되지 않았다. 디비를 지우고 다시 생성해봤다. 마리아db도 지우고 다시 설치해봤다. 그래도 저 설정은 계속 유효하다. 설정 정보가 남아있나?해서 yum remove mariadb yum uninstall mariadb 전부 다 해봤다. 그래도 계속 disabled다.. 그러던 중 반가운 글을 발견했다. htt..