분류 전체보기 24

aws sdk로 s3업로드하기 & steam 업로드

s3 파일업로드를 개발하며 고생한 경험 기록.private static AmazonS3 s3Client;private static AmazonS3 getAmazonS3(){// 싱글톤 적용 if(s3Client == null){ // 클러스터에 role을 넣어줘서 credentials, region은 자동으로 설정된다. // 반대로 로컬에서 수행하려면 클라이언트에 해당정보를 넣어주면 된다. s3Client = AmazonS3ClientBuilder.defaultClient(); } return s3Client;}private void uploadS3(MultipartFile multipartFile, String key, String bucketName){..

Multithread step 적용하기

많은 데이터를 S3에 업로드 할 필요가 있었는데. 집에서 AWS 프리티어를 이용해서.. 테스트 해보고 실제로 적용해보았다. return JobBuilerFactory.get("batchJob") .incrementer(new RunIdIncrementer()) .listener(listener) .start(checkDbIsEmptyStep) .on("FAILED") .end() .from(checkDbIsEmptyStep) .on("*") .to(s3UploadStep) .end() .end() .build(); DB에서 S3로 업로드하는 job이다. S3업로드 step에서 Job의 대부분의 시간이 소요되었다. @Bean public TaskExecutor S3UploadTaskExecutor() { ..

개발/Spring Batch 2023.11.19

AWS Certified Solution Architect - Associate 취득/공부

새해 AWS 자격증을 따는것을 목표로 2개월정도 공부했고 3월에 AWS SAA를 취득했다. (글은 8월에 올리기) SSAFY때 수업이후 AWS스터디를 통해 AWS Certified Cloud Practitioner는 취득했었는데. 가장 낮은단계 자격증이다보니 아쉬움이 있었고. 사내에서 AWS 서비스들을 사용해보면서 자신감이 생겨서 SAA시험을 준비하게 되었다. 회사에서 Udemy를 지원해줘서 퇴근 후 하루 1~2시간 정도 강의를 보고 정리했었다. 강의는 이론 + 실습으로 이루어져있고 처음에는 서비스명만 들으면 무슨 서비스인지도 잘 모르겠고(EC2, S3, Lambda 이정도만 알아듣는수준) 이걸 할 수 있을까 싶었는데 한 2~3주정도 지나니 점점 아는게 늘어가는 느낌이 확실히 있었다. 챕터 하나지나갈때마..

Mongoose 사용하기 - 연결, 스키마정의, select, update

따로 서비스에서 몽고디비조회나 update 만들어 진건 없고.. 간단하게 처리할겸 샘플소스 만들어보았다. mongoose 연결, 스키마생성, select, updateAll 이해하기엔 좋을 것 같다. const mongoose = require(mongoose); const test = async () => { const dbURI = `mongodb://{id}:{pw}@{ip}:{port}/{dbname}`; // 몽고디비 연결 URI mongoose.connect(dbURI, { useCreateIndex: true, useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: false, }); const { connection } = m..

Path variable Query string 으로 바꾸기

API 가 동작을 안 하고 있다길래... 확인해봤더니 쿼리 스트링으로 보내는걸 리엑트에서 Path variable로 받고 있었다. 보내는 형식이 저랬다면, 지금까지 정상적으로 처리가 안됐을텐데? test?code=1234&search=안녕 // 이렇게 보내고 있었는데 test/1234/안녕 // 이렇게 보내겠지? 하고 받도록 구현되어있었다. 원본 (그냥 간단하게 적었다) const middleHandler = () => { const {code, search}= useParams(); return { } } function App(){ return ( ) } const Page = (props) => { const [code,setCode] = useState(); const [search,setSear..

개발/React 2022.12.18

백준 1766 문제집

https://www.acmicpc.net/problem/1766 1766번: 문제집 첫째 줄에 문제의 수 N(1 ≤ N ≤ 32,000)과 먼저 푸는 것이 좋은 문제에 대한 정보의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 둘째 줄부터 M개의 줄에 걸쳐 두 정수의 순서쌍 A,B가 빈칸을 사이에 두고 주 www.acmicpc.net 위상정렬문제. solved.ac 문제 목록 보다가 위상정렬 알고리즘 문제가 있길래 공부하고 풀어보았다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.LinkedList..

개발/알고리즘 2022.07.16

Spring 3 RestController 구현

학생 때 공부해보면서 Rest API 만들어야 할 때는 RestController로 참 쉽게 구현했었는데 이번에 Spring3 환경에서 개발해야 할 일이 있어서 @RestController 어노테이션을 달고 import 하려고 하니 Spring3에서 RestController가 없다는 것을 알게 되었다. 구글링 하고 약간의 삽질 끝에 구현했다. import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web..

백준 1406번 에디터

https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 링크드리스트로 풀었다가 시간초과나서 덱2개 사용한풀이로 통과했다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.List; import java.util.StringTokenizer; public c..

개발/알고리즘 2022.06.20

백준 16234 인구 이동

https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 시뮬레이션 문제, 재밌는 문제인데 한방에 맞춰서 더 좋았다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import j..

개발/알고리즘 2022.06.14