전체 글

DevOps

[DevOps] ElasticBeanstalk와 Docker를 이용한 CI/CD 구성 - GithubAction 스크립트 작성(1)

ElasticBeanstalk과 Docker그리고 ElasticContainerService를 이용해서 CI/CD를 구성해보려고 합니다. 방식은 이렇습니다. 수정한 코드를 Github에 올리면 GithubAction이 이를 받아 빌드 후 Docker이미지로 만들어 ECR에 올립니다. ElasticBeanstalk은 이 이미지를 Pull해서 인스턴스에 SpringBoot를 띄웁니다. 먼저 GithubAction이 AWS에 접근하기 위한 IAM을 만들겠습니다. 이 화면에서 사용자 추가를 눌러줍니다. 직접 정책 연결을 누른 후 AdministratorAccess-AWSElasticBeanstalk를 추가해줍니다. 이렇게 생성 후 만들어진 AccessKey, SecretKey, Region을 깃허브 레포지토리에..

Java

[Java] parallelStream과 stream의 차이점

글 쓰게 된 배경 모던 자바 인 액션을 읽는 도중 parallelStream을 처음 알게 되었습니다. 많은 레포지토리의 소스코드들을 참고했지만 parallelStream을 사용하는 코드는 본적이 없어서 병렬로 처리하면 작업속도가 빠를텐데 사용하지 않는 이유가 있지 않을까? 하는 고민에 알아보게 되었습니다. 결론 결론부터 말하면 parallelStream의 병렬처리가 단순히 작업을 쪼개서 수행하는 것에 그치는 것이 아니라, 그것을 취합하는 과정도 있고 쪼개면서 발생하는 오버헤드, 컨텍스트 스위칭도 고려해야하기 때문에 잘 사용하지 않습니다. parallelStream 병렬 처리이기 때문에 순서를 보장하지 않습니다. 별도의 설정이 없으면 해당 어플리케이션이 구동되는 스펙에 따라 스레드 수가 결정됩니다. 스레드..

SpringBoot

[SpringBoot] 3.x OAuth2 invalid_token_response 문제

SpringBoot 3.0.1 로 업데이트 후 OAuth2 로 소셜 로그인을 진행하는데 계속 token을 받아올 수 없는 현상이 발생했다. [invalid_token_response] An error occurred while attempting to retrieve the OAuth 2.0 Access Token Response: 401 Unauthorized: [no body] 분명 client-authentication-method: post 를 잘 적어주었고 client-id, client-secret 까지 틀림없이 적었는데 오류가 계속 났다.. 구글을 다 찾아보고 공식 문서를 뒤져봤지만 도무지 찾을 수 없었다. 하지만 카카오 api 에서 secret 기능을 끄면 소셜 로그인이 잘 됐다. secr..

알고리즘

[알고리즘] BOJ 1463번 / 1로 만들기

문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. 1. X가 3으로 나누어 떨어지면, 3으로 나눈다. 2. X가 2로 나누어 떨어지면, 2로 나눈다. 3. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 10^6보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 예제 입력 1 예제 출력 1 2 1 예제 입력 2 예제 출력 2 10 3 힌트 10의 경우에 10 -> 9 -> 3 -> 1 로 3번 만에 만들 수 있다. DP는 시간제한이 작기 때문에 무작정 생각나는 대로 문제를 진입하는 것보다는 어떻게 하면 효율적이면..

알고리즘

[알고리즘] C++ 기초 코드 작성 요령 (feat. 바킹독)

STL과 함수 인자 함수인자 void func(int a) { a = 5; } int main(void) { int t = 0; func(t); cout

알고리즘

[알고리즘] C++ 여러가지 자료형 (feat. 바킹독)

정수 자료형 char 자료형은 1byte = 8 bit 이다. unsigned char 자료형의 범위: 0 ~ \(2^{0}\) + \(2^{1}\) + ··· + \(2^{7}\) (= \(2^{8}\) - 1 = 255) char 자료형의 범위: -\(2^{7}\)(= -128) ~ \(2^{0}\) + \(2^{1}\) + ··· + \(2^{6}\) (= \(2^{7}\) - 1 = 127) short(2 byte): \(2^{15}\) - 1 (= 32767) int(4 byte): \(2^{31}\) - 1 (21억) long long(8 byte): \(2^{63}\) - 1 * int가 long long보다 연산 속도와 메모리 모두 우수하지만 int 자료형이 표현할 수 있는 범위를 넘어서는..

진세박
sejineer