![[SpringBoot] CoolSMS 이용한 휴대폰 인증](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FcsOCuC%2FbtshAAYqT2u%2FAAAAAAAAAAAAAAAAAAAAALWyzH8Emsos3-yr2dPIfHTvcB9NPktYn6eksjhvZGi7%2Fimg.jpg%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DAardreM4pL0Y7XIUk4o8HaF0sQg%253D)
서론 휴대폰과 이메일 중 압도적으로 휴대폰 사용량이 높다고 생각했고 이메일은 가입 시 인증받지 않는 곳도 많기 때문에 우선적으로 휴대폰인증을 구현하려고 했다. 이메일은 필요 시 SMTP 활용하여 구현 예정 기능 구현을 위해 찾아본 아래의 API 중 coolsms를 선택했다. 1. 네이버 SMS 2. Twilio 3. coolSMS 네이버는 한달에 50건이 무료고, Twilio는 가입 시 15달러를 준다고 한다. cool sms 사용하기 들어가기 앞서 유료임.. SMS를 보내는 것이기 때문에 당연한가 ? 세상에서 가장 안정적이고 빠른 메시지 발송 플랫폼 - 쿨에스엠에스 손쉬운 결제 전용계좌, 신용카드, 계좌이체 등 국내 결제 뿐만 아니라 해용신용카드로 한번의 카드번호 등록으로 자동충전까지 지원합니다. 전용..
![[SpringBoot] AWS S3 업로드 파일 제거 - 3(完)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FxPqBL%2FbtsgECW58yY%2FAAAAAAAAAAAAAAAAAAAAAAWCg2NZJ2UwA0Kk-eIoOAyW-Dq3tEl-WNEg7nN3L45W%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DhBYFa4irl8QXNo1l5xsWF1u%252BH6A%253D)
이전 글에서 이어집니다. [SpringBoot] AWS S3 이미지 업로드 - 1 토이 프로젝트를 하면서 기록 남겨놓으면 좋을것 같아서 포스팅 AWS 가입, AWS S3 BUCKET 생성과 IAM KEY 발급 과정은 생략하겠음. 트러블 슈팅 https://mag1c.tistory.com/354 https://mag1c.tistory.com/355 https://mag1c.t mag1c.tistory.com [SpringBoot] AWS S3 이미지 업로드 - 2 이전 글에서 이어집니다 https://mag1c.tistory.com/353 아쉬웠던 점은, 계속 S3에 디렉토리가 생긴다는 점이었으며, 이를 위해 코드 수정이 필요했다. 생각보다 엄청 간단했다. @Transactional @Override pu..
![[SpringBoot] AWS S3 이미지 업로드 - 2](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fbuwnbm%2FbtsgD9gc3Jk%2FAAAAAAAAAAAAAAAAAAAAAIZTeYBeLS80nCYXZNDHsHIM8LS6YxPrjIJQgoQZhr6x%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3Dq8Ic2IGOEj1qOByBszV4DDh%252FPWs%253D)
이전 글에서 이어집니다 [SpringBoot] AWS S3 이미지 업로드 - 1 토이 프로젝트를 하면서 기록 남겨놓으면 좋을것 같아서 포스팅 AWS 가입, AWS S3 BUCKET 생성과 IAM KEY 발급 과정은 생략하겠음. 트러블 슈팅 https://mag1c.tistory.com/354 https://mag1c.tistory.com/355 https://mag1c.t mag1c.tistory.com 아쉬웠던 점은, 계속 S3에 디렉토리가 생긴다는 점이었으며, 이를 위해 코드 수정이 필요했다. 생각보다 엄청 간단했다. @Transactional @Override public boolean img_modify(MultipartFile imgfile, UserDTO dto) throws IOExcepti..
![[Java/POI] Java Excel파일 읽고 쓸 때 java.lang.NoClassDefFoundError : xmlbeans / ooxml-schemas 등](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FyipNg%2FbtshxTcRdAZ%2FAAAAAAAAAAAAAAAAAAAAABfjiNJDYBkbEGlMMrTkhlwQoC0jDBgCjHxgQEh8StJ4%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DMw6%252FnGWD%252BER8yqG2FRHsU9Ql63Y%253D)
크롤링 데이터를 엑셀화 할 일이 생겨서 오랜만에 POI를 사용했다가(이제 두번째임 ㅋㅋ;) 에러가 발생했다. 에러 메세지 java.lang.NoClassDefFoundError 원인 Class를 정의할 수 없음.. 두번 발생했는데, 처음에는 xmlbeans이 없어서. 두번째는 버전이 맞지 않아서.. 해결 POI와 xmlbeans의 버전 맞춰주기 그리고 아래처럼 라이브러리 추가하기 이렇게 들어가있어야함..
![[AWS EC2 ubuntu] EC2 gradle build 멈출 때](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FFQuI4%2Fbtshr5Kg1uY%2FAAAAAAAAAAAAAAAAAAAAAKJNpGSOK-dE9UJnnbxlao5ivafNOr9mdo6_RacFAgrE%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DlVqfJyVNpjo%252FHze53FgiVYH6qqk%253D)
에러 메세지 에러....? 라고 보긴 뭐하지만 여튼 EC2를 통한 배포 과정에서 ./gradlew build명령어를 사용하여 gradle을 build하는 도중 멈춰버렸다. 원인 AWS 의 프리티어를 사용 시 프리티어가 사용할 수 있는 메모리의 크기는 1GB라고 한다. (free를 입력하여 내 메모리 상태를 볼 수 있음) 메모리가 작기 때문에 빌드 규모에 따라 멈춰버릴 때가 있다. 해결 메모리를 늘린다 > 과금 메모리 스왑으로 해결했는데, 방법을 몰라서 아래 게시물의 도움을 받았다. OKKY - AWS EC2 프리티어 쓰시는분들 참고하세요! 일기장에 기록해둔건데 프리티어 쓰시는 분들에겐 좋은 정보일것 같아 남깁니다.제 일기장에서 긁어온거라 폼이 많이 깨지긴 했는데 감안하고 봐주세요! AWS 프리티어 EC2..
![[SpringBoot] AWS S3 이미지 업로드 - 1](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fco9G4s%2FbtsgG5RGGlK%2FAAAAAAAAAAAAAAAAAAAAAJqYFuDH1um3WWDLjaswbxZpzrQnJlx85dLNwRkJKss2%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3D1H4O%252B%252B75DijPOkASX5%252FRTAgxic0%253D)
토이 프로젝트를 하면서 기록 남겨놓으면 좋을것 같아서 포스팅 AWS 가입, AWS S3 BUCKET 생성과 IAM KEY 발급 과정은 생략하겠음. 트러블 슈팅 https://mag1c.tistory.com/354 https://mag1c.tistory.com/355 https://mag1c.tistory.com/356 개발 환경 SpringBoot3.0.6 build.gradle DI implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE' aplication.properties # S3 cloud.aws.credentials.accessKey=YourKey cloud.aws.credentials.secretKey=..
![[JDBC] DB Connection ERROR / No operations allowed after connection closed](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2F8Tq2v%2Fbtshp30iLCB%2FAAAAAAAAAAAAAAAAAAAAADMJgGQtKqeI3NE6ymPmbZRD-A5tJ8W4h-opxSW4arTa%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DSld2NU3Yd7kjrHsegjL1y9LY2wE%253D)
에러 메세지 No operations allowed after connection closed 에러 원인 PreparedStatement pst = mysql.prepareStatement(query); 위의 코드에서 에러가 발생했는데, 에러 원인은 Connection 객체가 연결 해제됐거나. PreparedStatement 이 이상하거나 둘 중 하나라고 생각했는데, connection closed이기 때문에 Connection의 인스턴스인 mysql이 연결 해제된 후에 pst를 사용하여 쿼리를 실행하려 했기 때문인 것 같다. 만약 No operations allowed after statement closed 이라면 statement객체를 의심해봐야 할 것이다. 해결 처음에는 아래와 같이 해결하고자 했..
![[Java] 자바에서의 스레드 안전(Thread Safe)과 모니터(monitor)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FvGj0u%2Fbtshcge8vuH%2FAAAAAAAAAAAAAAAAAAAAAK1N8OnwaMtQoZBV8ioX9dGx64x0JBnoEvuHoBX7GNMm%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3Dtd8OJL%252BOyux869M8PEYjsCyJ%252Bck%253D)
연관 게시물 스레드 안전 - Thread Safe 연관 게시물 https://mag1c.tistory.com/365 [Java] 자바에서의 스레드 안전(Thread Safe)과 모니터(monitor) 자바에서의 Thread-Safe 1. Lock synchronized 아래 코드는 Synchronized 키워드를 사용하여 스레드의 안전성을 보 mag1c.tistory.com 자바에서의 Thread-Safe 1. Lock synchronized 아래 코드는 Synchronized 키워드를 사용하여 스레드의 안전성을 보장했다. @ThreadSafe public class Lock { @GuardedBy("this") private int nextValue; public synchronized int getN..