일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- JPA mapping
- spring boot tomcat
- JPA
- spring jpa
- spring-mvc
- SuperTypeToken
- 세미나
- spring-webmvc
- Spring Data JPA
- spring pid
- ORM
- spring batch 코드
- spring boot
- REST API
- ApplicationPidFileWriter
- Data REST
- spring-webmvc #코드읽기
- batch
- Spring Batch
- spring bean
- spring camp
- tomcat
- JUnit
- static inner class
- 톰캣
- IntelliJ
- docker
- Spring
- 코드 리뷰
- Spring Data REST
- Today
- Total
목록net.woniper.java (163)
woniper
주변 친구들이나, 회사 동료들 중 배달의 민족이라는 앱을 모르는 사람이 있을까? 사실 배달의 민족은 앱이름이다. 정식 회사 이름은 우아한 형제들이다. 회사명도 그렇고 앱 이름도 조금은 특이하고 재밌다. 내가 처음 배민(배달의 민족)의 대표님인 김봉진 대표님을 처음 알게된 것은 2012년 여름으로 기억한다. (아마 년도는 정확하지 않을 수도있다.) 그때는 Startup Weekend라는 행사에 알바로 참가했을 당시였다. 그 당시 배민은 한창 떠오르는 스타트업 기업이였고, 그 중심에 김봉진 대표님이 있었다. 대표님이 그 행사에 와서 회사 소개와 어떻게 창업하게 되었는지 발표하는 자리였다. 학생이였던 나는 조금은 충격적이고 기억에 남는 것이 있다. 창업을하고 배달 업체 데이터를 모으기 위해서 주요 지하철역 주..
TypeToken (ModelMapper)1234567891011121314151617181920212223242526272829package org.modelmapper; import java.lang.reflect.GenericArrayType;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.lang.reflect.TypeVariable;import java.lang.reflect.WildcardType; import org.modelmapper.internal.util.Assert;import org.modelmapper.internal.util.Types; public class TypeToke..
토비님 방송을 보고 SuperTypeToken이란 것을 알게됐다. 이게 뭔지도 모르고 써서 그렇지 그동안 종종 써오던 코드다.SuperTypeToken 이란게 무엇인지는 간단하게 설명하고 그동안 용어도 모른체 사용해온 코드를 설명하기 위해서 글을 쓴다.일단 자세히 알고 싶은 분은 여기를 보기 바란다.토비의 봄 TV 2회 - 슈퍼 타입 토큰토비의 봄 TV 2.5회 - 수퍼 타입 토큰(2), 스프링 ResolvableTypebesidesoft 에서 방송을 본 뒤 정리한 블로그 글전체 예제 소스 SuperTypeToken 자바에서 ArrayList로 제네릭을 사용할 때는 아래와 같이 사용한다.1List list = new ArrayList();cs 그리고 클래스에 메타정보를 가지고 있는 java.lang.Cl..
Rest API Version Path 문제 Rest API를 만드는데 version 관리가 되어야한다.예를 들면http://localhost:8080/v1/foohttp://localhost:8080/v2/foo와 같은 URL이 필요하다. Spring에서는 @RequestMapping에 value값으로 URL을 설정할 수 있다. 위 URL을 @RequestMapping으로 표현해보자. 1234567891011@RestControllerpublic class SampleController { @RequestMapping(value = "/v1/foo") public ResponseEntity v1Foo() { return ResponseEntity.ok("v1 foo"); } @RequestMapping..
버전과 환경은 아래와 같다.Spring Boot:1.4Spring Data JPA + QuerydslGradleIntellij idea Querydsl을 실제 사용해본적이 없기 때문에 (코드는 언젠가 본 기억이 있다.) 프로젝트에 적용될 설정부터 해야했다. (역시 스프링은 설정이...) 먼저 구글링을 했다. 설정 예제는 모두 대부분 maven 설정이였다. 나는 Gradle을 사용했기 때문에 Gradle 설정을 찾아봤다. 역시 나왔지만 삽질 끝에 얻어낸 한가지 문제(?)를 해결했다. (바보 같은 문제였지만, 구글링해서 나온 자료를 통해서 설정한다면 나처럼 또 누군가는 이런 실수를 할 거 같다는 생각에 정리한다.) com.mysema.querydsl VS com.querydsl maven querydsl을 ..
개발 공부를 하면서 어떻게 해야 효율적으로 공부 할 수 있을까 고민했다. 그래서 마인드스케일에서 프로그래,밍 어떻게 공부할 것인가를 보았다. 애자일 교육으로 유명한 김창준님의 강의이다. 이 내용은 이번 포스팅에서 소개하는 1만 시간의 재발견 이라는 책에 나오는 내용과 공부 방법을 토대로 한 강의 인것같다. (책 내용이 강의에서 많이 소개된다.) 내가 강의와 책 내용에 대해서 정리하면 아래와 같다.무작정 시간을 투자한다고해서 잘 하는 것이 아니다. (그게 무엇이든)타고난 재능은 없다. 모든 재능은 만들어진 것이다.항상 재밌을순 없다. 책에서는 comfortable zone이라고 소개하는데 우리가 무언가를 잘하기 위한 연습 시 재밌고 편한 영역에 들어온다면 그것은 즐길뿐 실력 향상에는 도움 되지 않는다.3F..
이력서에 폼나게 쓰는 문장이 있다. 가치 있는 소프트웨어를 만들고 싶다. 보여주기를 목적으로만 쓴 문장은 아니다. 프로그램은 판단과 반복을 사람 대신해준다. 어떤 일을 판단하고 반복하는 것을 프로그래밍 언어로 정의할 수 있고, 반복을 할 수 있게 만들면 그게 프로그램이라고 생각한다. 그럼 이것은 가치 있는 소프트웨어인가? 나에게는 그렇다. 여러 산업 아니 거의 모든 산업에 이제는 IT 기술이 융합되지 않은 분야가 없는거 같다. 그런 의미에서 개발자는 참으로 의미 있고 가치 있는 일을 하는 사람이 아닐까 하는 생각을 하고 나 또한 개발자이기 때문에 자랑스럽다. 하지만 현실을 생각하면 가끔은 이런 큰 가치와 의미를 잊고 사는 것 같다. 회사에서 월급을 받기 위해 일을 하고 일을 하다보면 불만도 쌓이고 스트레..
개발자로써 힘들고 고민되는 시기를 보내고 있다. 내가 생각하는 가치관과 의미있는 일을 생각하지 못하고 회사 일에만 집중하는 시간만 갖게되는 시간이였다. 여러가지 불만스러운 점과 바꿀 수 없는 구조를 어떻게 바꿀 수 있을까.. 등등.. 고민도 되고 힘든 시기를 보내는 중에 이런 문제에 해답을, 또는 내 마음을 어떻게 위로 할 수 있을까 고민하던 중 이 책을 보게되었다. 지금까지 고민하고 이상적으로만 생각했던 부분에 대해서 좋은 길을 제시해주는 책이다. 어떻게 해야 장인이되는 길이며, 장인은 무엇인지 설명한다. 책 내용에는 장인이라는 타이틀을 별로 좋아하지 않는 개발자가 많다고 한다. 나도 그렇게 생각한다. 타이틀만 장인보다는 정말 마음속 깊이 장인과 같은 마음과 행동이 더 중요하다고 생각한다. 책을 다 읽..
며칠 전부터 Docker를 학습하고 있는데, 집에 있는 서버에 docker를 이용해 jenkins를 띄워보고 싶었다. jenkins 뿐만 아니라 여러가지 서비스를 nginx에 연결해서 사용하고 싶었다. nginx 역시 마찬가지로 docker로 사용하기로 했다.설명을 보지 않고 바로 사용하고 싶다면 github을 보자.docker에 기본 명령어는 설명하지 않을 것이다. 기본 설명은 여기를 참고하자. hub.docker.com hub.docker.com에는 docker 사용자들이 만들어 놓은 docker image 들이 존재하기 때문에 우리가 사용하고자 하는 image가 필요하다면 여기서 먼저 검색해보자. jenkins 설치 jenkins 역시 docker hub에 존재한다.먼저 jenkins image를 ..
PHP Version : 5.4.1Codeigniter Version : 1.7.2 회사 레거시 코드가 php이다. 어디선가 500error가 계속 떨어진걸 확인했는데 아무리 찾아도 어딘지 잘 모르겠다. 에러 로그를 보니 Using $this when not in object context 라는 에러가 계속 떨어지는걸 확인했다. 아래 예시 코드를 보고 어떤 상황인지 확인해보자.1234567891011121314151617public class Foo { // static function public static function foo() { Bar::bar(); }} public class Bar { // general function public function bar() { $this->callBar..
12345private Map map = new HashMap(); public boolean isPut(String text) { return map.put("test", text) != null;}Colored by Color Scriptercs isPut 메소드와 같은(map에 데이터를 put하고 데이터가 잘 저장되었는지 확인하는 메소드) 메소드를 만든다고 가정해보자. 정상적으로 동작할까? HashMap에 put 메소드는 새롭게 저장된 데이터 즉, 새로운 key로 저장된 데이터라고 판단되면 null을 반환한다. 그러니까 위 코드는 한번 호출 됐다면 false를 return할 것이고, 두번 이상 호출 됐다면 true를 return할 것이다. 의도와 다른 메소드이다. 그렇다면 List는 어떨까?1234..
앞서 SpringApplication Class를 보면서 run 메소드 안에 StopWatch라는 클래스를 본적이 있다. 클래스 명만 보고 그냥 StopWatch 기능을하는 클래스구나하고 넘어갔는데, 오늘 문뜩 그 클래스가 생각이나서 한번 봤는데 역시나다. (java-doc 문서) SpringApplication 클래스에서 StopWatch에 사용되는 메소드는 start, stop 를 사용하고 객체를 StartupInfoLogger.logStarted 메소드에 파라미터로 넘긴다. start12345678public void start(String taskName) throws IllegalStateException { if (this.running) { throw new IllegalStateExcept..