일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ORM
- spring bean
- Data REST
- batch
- static inner class
- 세미나
- JUnit
- tomcat
- spring camp
- docker
- spring jpa
- JPA mapping
- spring batch 코드
- Spring Data REST
- IntelliJ
- spring-webmvc #코드읽기
- Spring Data JPA
- spring boot tomcat
- spring-webmvc
- spring boot
- JPA
- 톰캣
- SuperTypeToken
- Spring Batch
- REST API
- ApplicationPidFileWriter
- spring pid
- 코드 리뷰
- Spring
- spring-mvc
- Today
- 1
- Total
- 916,386
목록net.woniper.java (163)
woniper
몇년 전 모 회사 면접을 볼때 이런 질문을 받았다.1234567891011public void method() { Object obj1 = null; Object obj2 = null; if(flag) { obj1 = new Object(); obj1 = new Object(); } else { throw new IllegalArgumentException(); }}Colored by Color Scriptercs 위 코드 obj1과 obj2를 바로 초기화 하지 않고 if, else 문에서 객체를 초기화 했는지에 대한 질문이였다. 그 회사는 코딩 테스트를 본 후 인터뷰를 진행하는데 내가 작성한 코드를 인터뷰를 통해 검증하는 시간이다. 예를 들기 위해 위와 같이 의미를 파악 할 수 없는 코드로 설명을 했는..
토비의 스프링 3.1 Vol.1 토비의 스프링 예제 코딩 처음 토비의 스프링을 읽을때가 생각난다. 그땐 회사 구직활동 중이였고 2주 동안 vol.1을 읽은게 기억난다. 정확히 모든 내용을 이해하고 읽지는 못했지만, 읽는 내내 감탄을 하며 읽은 책이다. 이번에 읽을때도 마찬가지로 감탄에 감탄을 하며 읽었다. 처음엔 간단한 예제로 시작해서 자연스럽게 패턴을 적용하고 적용된 패턴을 스프링에서는 어떻게 사용하지는 군더더기 없이 정말 자연스럽게 독자에게 전달된다. 이번에 두번째로 읽을때는 vol1만 읽으며 예제를 따라하기로 마음먹었다. 무작정 따라치며 이해 안가는 부분은 다시 읽고, 코드를 이해하며 넘어갔다. 테스트를 통과하며 기쁨을 맛봤다. 두번째 읽으면서도 어려운 부분은 항상있다. 다시 한번 정리가 필요하다...
Spring Boot Source12345678910111213@RestController@SpringBootApplicationpublic class App1Application { public static void main(String[] args) { SpringApplication.run(App1Application.class, args); } @GetMapping("/") public String app1() { return "hello app1"; }}Colored by Color Scriptercs Spring Boot Dockerfile 1234567FROM java:8MAINTAINER woniper VOLUME /tmpADD app1.jar app1.jarEXPOSE 8888ENTRYP..
개발에서 중요한건 무엇일까? 사람마다 생각이 다를것이다. 예~~~전에 모 회사 면접보면서 개발자에게 필요한 덕목이 무엇이라고 생각하는지 면접관 분에게 여쭤 본적이있다. 반 장난으로 500타라고 하셨다. 개발 타건 속도 500타 라고 말씀하신거다. 장난 처럼 말씀하셨지만 동의한다. 개발에서 중요한 부분 중 하나는 속도라고 생각한다. (코드를 얼마나 보기 좋게 작성했는지, 얼마나 객체지향적으로 작성했는지 중요하지 않다고 말하는게 아니다.) 아무리 코드를 보기 좋고 객체지향적으로 잘 작성한다고해도 타자 속도가 느리다면 일정에 영향을 미친다. 개발자는 자신에게 주어진 업무에 일정을 스스로 정할 수 있어야한다고 생각하는데(스스로 정하지 못하는 회사가 대부분이지만..) 3일이면 끝낼 수 있는 업무를 타자 속도가 느..
올해는 개발적으로 시간을 많이 투자 못했다. 다이어트를 시작했기 때문이다.2015년 12월 07일 부터 06월 30일까지 다이어트를 했다. 총 40kg 감량했다. 정말 힘들었지만, 느낀게 많다. 다른 것도 이렇게 꾸준히하면 좋은 성과를 얻을 수 있겠구나를 몸으로 깨닳았다. 1월8일 : JPA 사내 발표12일 : Cloud Foundry와 Spring Cloud 소개 및 데모 meetup 참가20일 : SLiPP Spring Core 소스 까보기 스터디 시작 ~ 5월 11일28일 : 사내 Spring 스터디 시작 (강사) 4월6일 : 지연 만남 6월30일 : body profile 촬영 12월27일 : Docker 스터디 ~ 17년 01월 03일 올해는 개인적으로 공부한것과 외부 활동을 거의 안했다. 내년..
AWS Cloud Taekwon:: Docker를 활용한 서비스 배포 - 스마트스터디에서의 사용사례Docker로 보는 서버 운영의 미래클라우드 코딩 서비스 구름에서의 Docker Container 활용 사례DevOps with DockerDocker+Kubernetes를 이용한 빌드 서버 가상화 사례 사례들을 보아보았다. 대부분 내용을 보면 배포를 설명한다. 그만큼 애플리케이션 개발 또는 수정한 후 서버에 실수없이 성공적으로 배포하는 것은 정말 중요하다. 실수없이 성공적으로 배포하기 위해서는 배포 자동화가 중요하다. 내가 다닌 회사 중에 대부분 회사는 수동배포(손배포라고도 한다.)를 한다. 자바로 예를 들어 수동 배포는코드 수정소스 컴파일war 생성war 파일을 서버로 이동 또는 ..
개인적으로 Docker를 써야하는 이유를 몇가지 생각해보았다.서버 운영이 쉬워진다.장애를 해결하기 위한 재연이 쉬워지고 그로인해 장애 해결 시간을 줄일 수 있다.개발장비에 테스트 환경 구축이 쉽고 깔끔하다.서버 운영이 쉬워진다. Docker란 무언인가에서 설명한 부분인데, Docker로 서버 환경을 일관성있게 유지하고 공유할 수 있기 때문에 추가로 서버가 확장되거나, 서버 환경이 변경되는경우(애플리케이션 뿐 아니라 서버도 마찬가지도 요구사항이 자주 변경되기 마련이다.) 쉽고 빠르게 공유와 확장이 가능하다. 이는 즉 2번(장애를 해결하기 위한 재연 쉬워진다.)으로 이어진다. 하지만 Docker를 학습해야하지 않냐는 대답을 종종 듣곤하는데, 그렇게 치면 애플리케이션을 운영한다는 것은 평생 공부하고 기술을 익..
Docker 엔진 맥북을 사용하면서 공인인증서 결제를 사용하기 위해서 가상 머신으로 윈도우를 설치해본 경험이 있을 것이다.(없을수도ㅋㅋ)가상화 기술에서는 현재 사용하고 있는 OS를 Host OS라하고, Host OS에 가상 머신으로 설치된 OS를 Guest OS라고 한다. 가상화 기술로는 전가상화와 반가상화가 존재하는데 이 글에서는 자세히 설명하지 않겠다.(사실 나도 잘 모른다.) 이 가상화 기술은 성능 문제가 있다. Guest OS를 설치한다는 것은 OS(host)안에 OS(guest)를 설치해서 사용하는 것이기 때문에 성능과 용량에 문제가 있을 수 밖에 없다. 때문에 Docker는 반가상화 기술보다 더 경량화 시킨 가상화 기술이다.(전가상화 -> 반가상화 -> Docker 엔진) Docker는 Gue..
과거 서버 환경을 경험해 보지 못했지만, 적어도 내 경력 3~4년 동안 클라우드 서비스로 인해 많은 변화를 가져온 것 같다. 클라우드 서비스를 사용하지 않고 서버를 구축한다면... 서버(하드웨어)를 구입하고 OS를 설치하고, 서버에 필요한 Web Server, WAS(Web Application Server), 기타 필요한 애플리케이션, 그 뿐 아니라 여러가지 설정과 보안도 신경써야한다. 서버가 몇대 안되면 다행이다. 수백 수천대라고 생각하면 저 작업을 일일이 해야한다. 자동화 툴이나 쉘스크립트를 사용해서 자동화 해도 되지만, 쉽지 않은 작업이다. 그렇다면 클라우드 서비스를 사용한다면... 나는 AWS만 사용해봤는데 클릭 몇번으로 내가 원하는 OS 셋팅이 가능하고, 보안과 여러가지 아키텍처들을 빠르고 쉽..
프로그램 개발이 끝났다고 모든것이 끝난게 아니다. 나는 그때부터 시작이라고 생각한다. 끝이없다. 사용자 요구사항은 항상 변한다. 예상치 못한 에러로 인해 장애가 발생하기도한다. 장애가 난 경우 미리 대처하면 너무나 좋겠지만, 개발자 또한 사람이기 때문에 실수 한다. 아니, 기계나 프로그램도 사람이 만들기 때문에 실수한다. 때문에 더 중요한 것은 장애가 난 경우 빠르게 대응하는게 더 중요하다. 사실 장애는 빨리 해결될 수록 좋겠지만, 그러지 못한 경우도 있고 당장 수정하지 않아도 되는 경우도 있다.(물론 빨리 해결하자.) 장애 대응하기알림, 사용자에게 보고 받기 보단, 레포팅 시스템을 구축하자.프로그램 로그를 잘 찍었다고 치자. 로그를 계속 모니터링 하고 있을것인가? 아니다. 알림을 받자.요즘은 Slack..
예제 : https://github.com/woniper/JavaExample 두 리스트를 비교해 데이터를 추출해야되는 요구사항이 있다. 보통 Collection을 사용한 로직은 반복문을 사용해야하는데, 2개의 리스트가 있는 경우는 2중 for문을 사용하는게 대부분이다. java8 stream에서는 어떻게 2중 for문을 사용할지, 어떻게 데이터를 필터링하는지 알아보자. 대상 리스트12private List targetList = Arrays.asList("a", "b", "c", "d", "e");private List filterList = Arrays.asList("a", "b");cs 불일치 데이터 필터링123456789@Testpublic void testTwoListNonMatch() thro..
전체 예제 : https://github.com/woniper/spring-example/tree/master/spring-boot-custom-bean-name-generator좀더 훌륭한 문서 : https://spring.io/blog/2013/12/03/spring-framework-4-0-and-java-generics 스프링 4.0 부터 자바 제네릭 타입을 주입받을 수 있다. 4.0 미만 버전도 가능은 했지만 번거로운 추가 작업이 필요했다. 예를들어Notification 인터페이스를 구현한 3개의 구현체가 있다고 예를 들자. 12@Autowirdprivate List notifications;cs 4.0 이상부터는 Notification List Type으로 주입이 가능해졌다. 매우 편리하다...