분류 전체보기(161)
-
Foreign key constraint is incorrectly formed 에러 해결
문제 발생 개발집 프로젝트를 배포 중 아래와 같은 오류를 만났다. Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Invocation of init method failed; nested exception is org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement #..
2023.12.31 -
S3 퍼블릭 엑세스 차단을 활성화하면서 객체에 접근하는 방법, Pre-Signed-URL
문제 상황 위처럼 퍼블릭 엑세스 차단을 활성화하면, 객체를 안전하게 보호할 수는 있지만, 외부에서 접근할 수가 없다. 하지만, 객체에 접근을 해야하긴한다. 당연하게도, S3에서는 외부에서 해당 객체를 접근할 수 있는 방법을 제공하는 데 이것이 Pre-Signed-URL이다. 💡 Pre-Signed-URL을 사용하는 또 다른 이유는 뭐가 있을까?? 업로드하는 방식은 크게 2가지로 분류가 가능하다. 첫 번째는 클라이언트에서 서버를 거치지 않고 S3에 바로 업로드하는 방법이다. 이때, 클라이언트에서 key값을 가지고 있어야하기때문에 보안상 문제가 있다. 두 번째는 클라이언트에 서버로 객체를 넘겨 서버에서 S3로 업로드하는 것이다. 이 방법은 key가 서버에 있기때문에 상대적으로 안전하지만 서버의 부하가 심해질..
2023.12.03 -
네트워크 기본 학습 - IP, NAT, 포트 포워딩
IP란 무엇일까? IP는 Internet Protocol의 약자로 인터넷에 연결되어 있는 모든 장치들을 식별할 수 있도록 하는 각각의 장비에 부여하는 고유 주소이다. 이러한 IP들은 공인 IP와 사설 IP로 분류할 수 있다. 공인 IP 공인 IP는 인터넷 업체가 사용자에게 할당하는 주소이며, 고유한 외부 IP주소이다. 이는 사용자의 전체 네트워크에 적용되기 때문에 공용 IP 주소라고도 불린다. 사설 IP 사설 IP 주소란 어떤 네트워크 안에서만 사용되는 내부적인 주소이다. 예를 들어, 특정 공유기는 공인 IP를 가지고 있지만, 해당 공유기에 연결되어 있는 가정이나 회사의 각 네트워크 기기는 사설 IP를 가지고 있다. 사설 IP는 특정 네트워크 안에서만 사용되기 때문에 네트워크 내에서 중복되지 않아야한다...
2023.11.26 -
카카오 테크 캠퍼스 수료 및 대상 🏆
올해 초부터 계속 진행해온 카카오 테크 캠퍼스가 끝났다.우리 팀이 라춘상을 받았는 데 열심히 해준 팀원분들 너무 감사합니다. (상 이름도 참 이름도 카카오스럽다...) 아무튼 더 나은 개발자가 되기 위해서 개인 회고를 진행해보려고 한다. [깃허브 링크]https://github.com/Step3-kakao-tech-campus/Team14_BE GitHub - Step3-kakao-tech-campus/Team14_BE: 14조 Spark14조 Spark. Contribute to Step3-kakao-tech-campus/Team14_BE development by creating an account on GitHub.github.com 개인 회고 - 팀장주간 회의와 팀 소통매주 월요일 아침, 비..
2023.11.19 -
Transaction을 고려한 CheckedException 예외 처리
배경지식 CheckedException은 맨 아래에서 설명하고 있습니다. 문제 상황 현재 파일 시스템에 파일을 저장하고 있다. 아래 코드의 문제점이 무엇일까? public List storeFiles(List multipartFiles) throws IOException { List storeFileResult = new ArrayList(); for (MultipartFile multipartFile : multipartFiles) { storeFileResult.add(storeFile(multipartFile)); } return storeFileResult; } @Transactional public List saveCertifications(List certificates) throws IOEx..
2023.11.12 -
ThreadLocalRandom의 설계의도와 스레드의 관계
ThreadLocalRandom 클래스의 설계 의도는 무엇일까?? 기존의 Random 클래스는 멀티 스레드 환경에서 동시에 요청하는 스레드가 많을 경우 스레들간의 경합이 발생되어, 성능저하를 발생시킨다. 이를 개선하기 위해서 ThreadLocalRandom 클래스가 등장했다. Random 클래스가 왜 경합이 발생하는 데?? 다음은 Random 클래스의 핵심 메서드인 next() 메서드이다. protected int next(int bits) { long oldseed, nextseed; AtomicLong seed = this.seed; do { oldseed = seed.get(); nextseed = (oldseed * multiplier + addend) & mask; } while (!seed.c..
2023.11.01