개발 29

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

오래간만에 쓰는 잡담글...

신입사원으로 회사를 입사한지도 어느덧 1년을 넘었다. (인턴까지 하면 1년6개월인데.. 좀 많이 넘었다 크흠...) 회사에서 일하면서 알게 된 것, 공부한 것 기록해두면 도움이 될 것 같아서. 블로그를 만들었었는데 회사일도 많기도 했고 스터디도 있고 혼자 공부해보고 싶은 것 코딩하느라 바쁘다 보니 너어무 안 적었던 것 같다. 일하면서는... 모바일 웹에서 사용할 문자인증 기능 개발하고, EC2에 올려진 서비스들에 문제가 생겨서 복구(+내가 담당하는 서비스들 운영) 이것저것 하다 보니 정신없게 시간이 훅훅 지나갔고. 스터디는 SSAFY 친구들이랑 백준 알고리즘 스터디 이후 백준만 풀다 보니 프로그래머스에서는 문제 푸는 게 익숙하지 않은 것 같아서. 프로그래머스 문제 푸는 알고리즘 스터디 만들어서 5주 차 ..

개발/잡담 2022.12.11

백준 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