String과 StringBuilder, StringBuffer는 모두 문자열을 저장 및 관리하는 클래스이다. 아래와 같은 방식으로 생성 가능하다. String str1 = new String("abc"); String str2 = "abc"; StringBuilder str3 = new StringBuilder("abc"); StringBuffer str4 = new StringBuffer("abc"); 참고로, StringBuilder와 StringBuffer의 생성자의 파라미터로 CharSequence 인터페이스를 구현한 모든 클래스를 사용할 수 있다. CharSequence를 구현한 클래스로는 CharBuffer, String, StringBuffer, StringBuilder가 있다. Strin..
컴파일할 때는 문제가 없던 프로그램도 동작 도중에 종종 오류가 발생한다. 사용자가 항상 개발자의 생각대로 프로그램을 사용하지 않기 때문이다. 숫자만 입력해야하지만 문자열을 입력하기도 하고, 파일을 업로드하기 전 파일의 이름을 지정하지 않기도 한다. 이럴 때 발생하는 오류를 사전에 방지하는 것은 중요하다. 그런데 개발자가 이러한 오류가 발생할 때마다 프로그램이 종료되는 것을 원치 않을 수 있다. 오류를 무시하고 싶을 수도 있고, 그 오류가 발생 했을 때 수행할 적절한 동작을 직접 정의하고 싶을 수도 있다. 이럴 때 활용하는 것이 try-catch-finally 구문이다. public class Main { public static void main(String[] args) { int [] arr = ne..
부제: IntelliJ에서 S3 연동하기, Spring Boot AWS 연동 이번 포스팅에서는 Spring Boot에서 Spring Cloud AWS를 활용하여 S3를 연동하는 법을 알아보겠다. 절차는 크게 3가지(의존성 설정, Properties 파일 설정, 구현)로 나눌 수 있다. 1. 의존성 설정 Spring Cloud AWS를 활용하면, 의존성만 추가해도 간편하게 AWS의 모든 기능을 활용할 수 있다는 장점이 있다. 아래 내용을 build.gradle에 추가하자. (버전은 알아서 적절히 넣도록 한다.) 12compile("org.springframework.cloud:spring-cloud-aws-context:${springCloudVersion}")compile("org.springframew..
부제: 샤오미 이어폰, 샤오미 피스톤4, 샤오미 전자제품 추천 엘지 전자의 G어폰(쿼드비트 시리즈)와 함께 가성비 이어폰으로 정평이 나있는 샤오미 피스톤4를 구매했다. 우리나라에는 수입 대행사를 통해 정식 판매되고 있는 듯 하다. 포장 컨셉이 원래 이런것인지.. 외계인이 생각나게 하는 포장 디자인이다. 천천히 개봉을 해봤다. 내부에 이어캡이 따로 들어있고, 중국어로 쓰여있는 설명서도 들어있다. 특이하게도, 이어폰의 연결단자부터 이어폰 선이 나눠지는 부분까지는 로프형태이다. 3만원도 안하는 이어폰치고는 나름 세심한 배려라고 할 수 있다. 이어폰 리모컨은 오른쪽에 있는데, 볼륨조절과 재생/정지 버튼이 있다.사진에는 보이지 않지만 마이크도 달려있다. 그런데 IOS(아이폰, 아이패드 등)에서는 볼륨조절버튼이 동..
부제: 싸융짱문오, 싸융짱, 김영민, 김영민개명, 기아 타이거즈, 2:2 트레이드, 유재신 오늘은 2016시즌 구원왕을 차지(KBO 역대 두번째 무패 구원왕)하고, 2017시즌 도중 넥센 히어로즈에서 기아 타이거즈로 트레이드 된 김세현 선수의 별명에 대해 알아보겠다. 김세현(김영민에서 개명) 선수의 대표적인 별명은 '사이버'이다. 김세현 선수는 06년에 현대 유니콘스에 지명된 이래 5년 넘게 부진과 부상 재활을 반복했는데, 현실에서는 안보이고 가상에만 존재하는 투수라고하여 팬들이 붙여준 이름이다. 현대 유니콘스 - 넥센 히어로즈 팬들에게 김세현은 애증의 존재이다. 프로야구 역사에 남을 06년 신인 드래프트에서 현대의 2라운드 지명(1라운더는 MLB에서 활약중인 강정호)을 받았지만, 최고 160에 육박하는..
Spring Boot를 활용하여 Restful 서버 개발을 하다보면, 다른 API를 호출할 일이 종종 생기는데, RestTemplete을 활용하면 좋다고한다. 나는 GPS 좌표(경도, 위도)를 파라미터로 하여 호출할 경우, 주소(도로명 및 지번주소)를 돌려주는 API를 활용하기로 했다. https://developers.naver.com 에서 위 그림과 같은 명세를 찾을 수 있다. (다른 API를 활용하는 경우에도 참고하길 바란다.) 나같은 경우, 안내된 URL로 GET요청을 날려야 했는데 NAVER에서 제공하는 JAVA 예제는 너무 길고 불편했다. 그래서 RestTemplete를 활용하기로 했는데, 구글링하면 대체로 getForObject, getForEntity를 활용하는 방법을 소개한다. 아래의 소..
Iaas: Infrastructure as a Service 서버, 스토리지, 네트워크를 가상화 환경으로 만들어, 필요에 따라 인프라 자원을 사용할 수 있게 서비스를 제공하는 형태. 이해하기 편하게 설명하자면, 컴퓨터의 하드웨어를 가상화 환경에서 제공하는 것이라고 보면 된다. IaaS를 사용하는 개발자는, OS 설치부터 각종 서버 환경을 직접 세팅하는 고통을 겪어야 해야한다. (예: AWS EC2) ▶ IaaS, PaaS, SaaS를 도식화하여 비교한 자료. PaaS: Platform as a Service 애플리케이션이나 서비스가 동작할 수 있는 환경을 제공하는 형태. IaaS에서 '동작환경세팅'이 이루어진 형태이며, SaaS의 개념을 개발플랫폼에도 확장한 것이다. 애플리케이션의 시작을 위한 복잡한 환..
부제: hibernate auto reconnect, spring boot JPA reconnect, org.hibernate.exception.jdbcconnectionexception could not prepare statement 문제 해결 Spring Boot + JPA + Hibernate로 MySQL을 연동하여 웹 앱을 구현했는데, 아래와 같은 문제가 발생했다. 구글링을 해보니, Mysql의 Connection Pipe(?)가 끊어진 것이다. 쉽게 말하면 연결을 잃어버린 것인데, Mysql의 경우 8시간 이상 요청이 없으면 연결을 끊어버린다고 한다. 내 앱을 쓰는 사람이 많은 것도 아니고, 밤에 자고 일어나는 것 감안하면 8시간은 너무 짧았다. 대책이 필요하다고 생각하여, 방법을 찾아봤는데 ..
사진 관련 웹 애플리케이션을 개발하다보니, 썸네일처리를 신경쓸 수밖에 없었다. 조금 고민을 해보니 썸네일 처리는 결국 두가지의 큰 흐름으로 나뉘게 된다. 그것은 바로.. 미리미리 vs 그때그때 여기서 '미리미리'라 함은, 사진을 최초 업로드할 때 썸네일을 생성하여 같이 S3서버에 저장하는 방식을 의미한다. 반면, '그때그때'는 이미지 조회를 요청할 때마다 썸네일을 생성하여 응답으로 돌려주는 방식을 의미한다. ▶ 구글에서 발표한 이미지 리사이징 라이브러리 SKIA. C/C++과 Python버전만 있어서 사용은 못해봤다. 나는 깊은 고민을 하지 않고 '그때그때' 썸네일을 생성하려고 했는데 자칫 위험할 수 있는 행동이었던 것 같다. 그래서 '미리미리'와 '그때그때'의 장점을 한번 정리해봤다. '미리미리'의 장..
우리나라에서 가장 인기있는 스포츠 중 하나인 야구. 워낙 인기가 있다보니, 스포츠 중에서 팬문화도 가장 활성화 되어있고 그러다보니 야구선수들을 부르는 별명(애칭)도 많이 생겼다. 이번 포스팅에서는 넥센 히어로즈에서 연습생 성공신화를 쓰고있는 서건창 선수의 별명에 대해 알아보겠다. 2008년 LG트윈스 신고선수로 시작했으나, 1군 딱 한경기 뛰고 방출. 그 후 육군 현역 복무하고, 제대 후 신고선수로 넥센히어로즈에 입단하여 몇개월만에 개막전에 데뷔. 2012년 신인왕, 2014년 MVP를 수상하며 류현진 이후 신인왕과 MVP를 둘 다 수상한 첫 선수. 2016년 넥센히어로즈 주장선임.. 굴곡진 시작이었지만 지금은 성공신화를 쓰고있는 서건창 선수의 별명은 다양하다. 그런데 그 시작은 '서센세'이다. 한국어로..