기본 콘텐츠로 건너뛰기

2018의 게시물 표시

[성탄절인사] 메리 크리스마스~~~

최근 바쁘게 지내다보니 성탄절인지도 모르다가 어제 저녁때쯤 알게 되었습니다. 제 블로그를 방문해주시는 소중한 분들께 드릴건 없고 어제 저녁에 찍은 노을 사진으로 성탄인사를 대신합니다^^ 메리 크리스마스~~

안드로이드 스튜디오의 Image Asset을 이용한 아이콘 변환 (뻘짓 기록)

음... 오늘 포스트는 올리기가 사실 좀 겁이 나는 글입니다. 너무 초보적인 부분에서의 뻘짓이라... 약간 핑계를 대 보자면, 저는 안드로이드 앱 개발 경험이 없습니다. 가끔 다른 친구들이 개발해서 넘겨준 APP Source를 가지고 로직 쪽 디버깅하거나 약간의 수정을 하기 위해 공부한 아주 기초적인 기반 지식만 가지고 있습니다. 핑계는 여기까지만 하고.... 오늘은 그 안드로이드 앱에서 확인해 볼 일이 있어서 안드로이드 스튜디오를 실행하고 약간의 개발을 진행했습니다. 그런데, 아주 말도 안 되는 부분에서 걸렸어요. Inkscape로 간단한 아이콘 하나를 만들고, 그 아이콘을 ActionBar 에 추가하는 과정이 있었는데, PNG로 만들어진 아이콘의 색이 변경이 안 되더군요. 제가 작업 중에 걸린 작업은 아래 그림 1과 같이 제작된 아이콘을 그림 2와 같이 ActionBar에 추가하는 아주 간단한 작업이었습니다. 그림1 그림2 그림1의 아이콘을 안드로이드 스튜디오의 Image Asset을 이용해서 추가하려 했고요. 대충 아래와 같은 작업 과정입니다. 우측의 미리보기 보시면 색이 회색이지요? 저 색으로 계속해서 ActionBar에 나오는 겁니다. 앞에서도 말씀드렸듯이 UI 쪽은 다뤄본 적이 없다 보니 굉장히 당황스럽더군요. 최대한 간단하고 단순하게 작업하고 되도록 Customizing 하지 않는 것이 원래 저의 개발 스타일인지라, 어떻게든 간단하게 할 방법을 한 시간이 넘게 찾아본 것 같습니다. 사실 저 작업은 제가 해보려 한 부분에 영향을 주는 일은 아니지만, 왠지 오기가 생기더군요. ^^ 아무튼 거의 포기하고 해보려던 걸 하려고 마지막으로 Image Asset 작업을 하다 보니 아래와 같은 부분이 눈에 들어오더군요. 저 부분을 HOLO_LIGHT로 바꿨다가 다시 HOLO_DARK로 바꿔봤습니다. 아이콘이 흰색으로 나오네요. (스샷으로는 흰색이라 안 보이시겠지만..

[외국포스트 공유] 15 Spring Core Annotation Examples

제주도 한라산 둘레길 - 수악길에서 올해는 가을을 별로 느끼지 못한 상태에서 바로 겨울이 찾아오는 느낌입니다. 슬슬 겨울과 내년을 준비할 시즌이 되었는데, 요즘 이래저래 다른 일들로 뭔가를 할 만한 여유가... ^^ 핑계 대지 말고 열심히 살아야 할 것 같습니다. 오늘도 잠시 짬을 내서 외국 포스트 하나 공유할까 합니다. Ramesh Fadatare 라는 분이 올린 Spring Framework의 Annotation 정리 내용입니다. 주요 15가지의 Annotation에 대해서 간단한 설명과 샘플 코드를 정리해 놓았네요. 포스트에 정리되어있는 Annotation의 리스트는 아래와 같습니다. @Autowired @Bean @Qualifier @Required @Value @DependsOn @Lazy @Lookup @Primary @Scope @Profile @Import @ImportResource @PropertySource @PropertySources 자주 쓰는 Annotation도 있고 그렇지 않은 것도 있지만, 한 번 정리해볼 겸 훑어보는 것도 좋을 것 같네요. 자세한 내용은 아래에서 확인 가능합니다. 15 Spring Core Annotation Examples 보러가기

[외국포스트 공유] When (Not) to Use Java Abstract Classes

키보드가 고장 나서 병원 갔던 맥북이 하판 갈이를 한 후에 다시 돌아왔습니다. 키보드가 잘 쳐진다는 것이 이렇게 즐거운 일인지 몰랐네요. 오늘은 DZone에 올라온 외국 포스트 하나를 공유할까 합니다. Abstract Class 뭐 한국어로 추상 클래스라고 하는 것 얼마나 쓰시나요? 어떤 회사에서는 무조건 추상 클래스나 인터페이스를 정의해서 쓰라고 하는 경우도 있고, 쓰지 말라고 하는 회사도 있고, 뭐 개발자에게 맡기는 회사도 있고.... 저는 보통 몇 가지 예외적인 케이스(서비스 레이어라던가...)를 제외하고는 구현과정에서 리팩토링을 하면서 추상 클래스나 인터페이스를 역으로 정의하는 스타일인지라... 뭐가 옳고 옳지 않다는 기준은 없다고 봅니다. 여기 소개해드리는 포스트는 어찌 보면 너무 당연한 결론을 이야기하고 있긴 합니다만, 한번 가볍게 읽을만한 포스트가 아닐까 해서 공유합니다. 원본 포스트 :  https://dzone.com/articles/when-to-use-java-abstract-classes 저자 : Dave Taubler (Lead Engineer and Engineering Manager, ZapLabs) 원저자가 이야기하는 결론은 아래와 같습니다. 클래스의 호출자가 추상 클래스의 구현 메소드를 호출하는가? 아니면 구현 클래스의 메소드를 호출하는가? 후자의 경우라면 구현 클래스의 메소드에서 추상 클래스의 메소드를 호출하게 되는데 이는 자칫 안티 패턴이 될 수 있다. 음.. 너무 당연한가요? 가끔은 당연한 것을 잊어버리고 사는 경우가 많은 요즘입니다. ^^ 즐거운 일상이 되시길...

경력 개발자의 자기소개서에 대해서...

갑자기 뜬금없이 이런 글을 쓰다니 무슨 생각이야? 라고 생각하시는 분들이 있을지도 모르겠네요. 뜬금없음에 대한 변명은 잠시 접어두고 일단 오늘 쓰려고 하는 글을 시작해볼까 합니다. 개발자로 대충 16년을 그럭저럭 보내왔습니다. 시대적 상황으로 5년 차쯤에 대리로 처음 팀장을 시작했으니, 일반 개발자로 산 시간보다는 어쨌건 프로젝트 또는 팀의 리더로 산 시간이 더 많았던 것 같습니다. 그 기간 동안 남들보다 좀 심하게 회사를 많이 옮겨 다니다 보니 꽤 많은 면접을 볼 수 있는 경험이 있었고, 또 옮긴 회사가 대부분 팀을 리빌딩하는 곳이었다 보니 꽤 많은 채용절차에 관여할 기회가 있어서 어린 나이부터 비교적 많은 이력서를 검토했고 면접관으로도 여러 사람을 만날 수 있었습니다. 처음 면접을 보러 다니던 시절의 제 이력서의 자기소개서는 항상 "19XX년 봄 XX업계에 종사하시던 아버님과 집안일에 헌신적인 어머니의 유복한 가정에 1남 1녀의 막내로..." 로 시작되었습니다 (이 문장에 향수를 느끼시는 분들 많으실 거예요. ^^). 경력이 5년이 넘은 어느 날 도대체 이 문장을 왜 써야 하느냐는 의문이 생겨서 조금 바꾸긴 했습니다만, 그 뒤로도 꽤 오랜 세월을 이런 자기소개서가 항상 제 이력서에 붙어있었죠. 요즘 누가 저런 식으로 자기소개서를 써? 라고 생각하시는 분들 많으실 거로 생각해요. (대신 요즘은 대학 시절의 봉사활동이나 해외연수 이력이... 뭐 어차피 그놈이 그놈입니다.) 저런 자기소개서를 써야 한다는 것이 어디서 어떻게 시작된 것인지는 몰라도 회사를 그만두기 전인 2년 전까지도 약간의 표현은 다를지 모르지만 비슷한 문장으로 시작하는 자기소개서를 이력서에 첨부해서 보내는 지원자들을 볼 수 있었습니다. 이제 제가 뜬금없는 이런 글을 쓰게 된 이유를 밝히고 계속 진행해야겠네요. 블로그에 올릴 글을 준비하는 일이 생각보다 힘들어요. 블로그에 올리려고 준비한 주제에 맞는 소스를 작업하고 거기에 글을 입히다 보면 가끔

[외국포스트공유] 자바개발자가 Enum에 대해서 반드시 알아야할 18가지.

개발하시면서 Enum은 많이 쓰시나요? 저 같은 경우는 회사 다니는 동안에는 사실 Enum을 아주 가끔 쓸 뿐 거의 사용하지 않았었는데요. 회사 그만두고 하는 작업에서는 Enum을 꽤 자주 사용하고 있습니다. 생각보다 편한 부분도 많고 코드 가독성도 좋아지는 것 같고 이래저래 장점이 많은데, 이 부분은 다른 포스트에서 이야기하기로 하고요. 앞으로 몇 개의 포스트가 될지는 모르겠지만 한동안은 Enum에 대한 포스트가 자주 올라가게 될 것 같습니다. 오늘 소개해드릴 것은 그 첫 편으로 자바 개발자가 반드시 알아야 할 Enum의 18가지 포인트에 대한 Pramod Bablad의 DZone에 올라온 글을 간단히 정리하겠습니다. 대부분 아시는 내용일 테고, 혹시 Enum을 아직 쓰지 않거나 잘 모르시는 분들을 위한 내용이라고 생각하시고 봐 주시기 바랍니다. 아래 원문 링크 한번 눌러주세요. (바로 창 닫지 마시고 잠시 열어놓으시면 더 고맙겠네요) 원문 :  https://dzone.com/articles/18-points-every-java-developer-should-know-about-e 1. 정해져 있는 것은 아니지만, Enum의 Constant 들은 대문자로 사용합니다. 2. Enum이 비록 클래스가 아니지만, 클래스와 같이 Field, Constructor, Method를 가질 수 있습니다. 3. Enum의 Constructor(생성자)는 private 으로 선언해야 합니다. 이것은 매우 당연하죠. Enum을 new 로 생성하는 것이 가능하면 안되겠지요? 4. Enum Constant(열거형 상수)는 전체 실행에서 단 한 번만 생성됩니다. 모든 Enum Constant는 그중 하나가 코드에서 사용될 때 생성되고, 각 Enum 상수가 생성될 때 해당 Constructor가 호출됩니다. 5. Enum Constant는 Field, Constructor, Method보다 앞에서 정의되어야 합니다. 6. 모든 Enu

블로그에 애드센스가 연결되었습니다.

2년 전쯤에 한차례 시도했다가 결국 실패했던 애드센스가 연결되었네요. 제 블로그를 방문하시는 분 중 욕하시는 분들도 있을 수 있습니다만... 몇 가지 실험해 볼 것이 있어서 연결한 것일 뿐 돈을 목적으로 연결한 게 아니라는 변명을 드려봅니다. 사실 하루 방문자 수가 그리 많지 않아서 광고로 돈을 버는 것은 불가능합니다. 최대한 불편하지 않게 글 마지막 부분에 살짝 광고를 넣어봤습니다. 구글 애드센스와 애널리틱스가 연결되는 부분에 대한 몇 가지 테스트를 진행 중이니 양해 바랍니다. 이왕 걸린 광고.... 한 달에 만원이라도 벌 수 있으면 하는 바램은 있습니다. 하하하.

Spring Cloud GCP가 1.0 정식버전을 릴리즈 했습니다.

얼마 전에 Knavtive 에 Spring이 협업하고 있다는 소식을 전해드린 적이 있습니다. 그동안 Google의 GCE 서비스와 GCP의 Google Cloud SQL 서비스, Firebase 등을 이용하면서 Spring이 Google 서비스와의 Integration Project를 진행해주면 좋겠다는 아쉬움이 컸었는데요. 이번에 Spring Cloud Project에서 Google Cloud 팀과 협업을 진행해 Spring Cloud GCP를 정식 Release 했다는 반가운 소식을 접하게 되었습니다. Spring에서 발표한 정식 Release 소식은 여기 서 확인이 가능하고, 전반적인 Project 내용은 여기 서 확인 가능합니다. 언제나 그렇듯이 통합되는 내용을 아주 간단하게 정리하면 다음과 같습니다. Messaging 모든 Spring Messaging 지원은 spring-cloud-gcp-pubsub 및 spring-cloud-gcp-pubsub-stream-binder 모듈과 Spring Integration 및 Spring Cloud Stream을 기반으로 한다네요. 여기에는 Google Cloud Pub/Sub 기반의 PubSubTemplate이 있고, PubSubTemplate 기반으로 작업된 PubSubInboundChannelAdapter와 PubSubMessageHandler가 Spring Integration Channel Adapters의 역할을 하게 됩니다. 그리고, 이번 릴리즈에는 메시지 변환을 위한 PubSubMessageConverter와 헤더 맵핑을 위한 PubSubHeaderMapper도 포함되어있다고 합니다. Spring Boot도 당연히 지원되는데 spring-cloud-gcp-autoconfigure 모듈을 이용해서 PubSubMessageChannelBinder를 통한 Spring Cloud Stream Integration 바인딩을 제공한다고 하네요. Database G

[간단번역] Top 20 REST and Spring MVC Interview Questions for Java Developers - Javin Paul

Javin Paul( LinkedIn , Javarevisited , JAVA67 )은 프로그래머면서 블로거인데, 자바나 스프링과 관련돼서 저도 가끔 들어가는 블로그의 주인장입니다. 특히 저 JAVA67 사이트는 자바와 관련된 기술적인 다양한 글들이 있어서 몇 번 도움을 받았던 부분이 있었습니다. 이번에 Javin Paul이 Top 20 REST and Spring MVC Interview Questions for Java Developers라는 제목으로 DZone에 글이 하나 올라왔는데 꽤 간단히 정리를 잘했더군요. 초보 개발자나 중급 개발자 정도의 레벨에서 주로 할만한 질문들을 정리해 놓은 글들인데, 일단 제가 볼 때는 3년 이하의 개발자들이 한 번쯤 정리하고 지나간다 생각하고 볼만한 글로 보입니다. 진짜 못하는 영어이지만 간단히 번역해서 소개해 봅니다. 번역은 그냥 반말 대화체로 진행합니다. 말투나 의역이 거슬리더라도 이해 바랍니다. 20개의 질문이라더니 실제로는 22개네요. 정말 번역하시는 분들 존경합니다. 이리 힘든 일을... 원문 :  Top 20 REST and Spring MVC Interview Questions for Java Developers - Javin Paul (DZone) 안녕 친구들! 최근 몇 개월 동안 그리고 오늘까지 REST와 Spring 강좌를 나눠왔는데, 자바 웹 개발자를 지원했을 때 자주 받게 되는 Spring MVC와 REST에 대한 질문들을 나눠볼까 해. 자바 웹 프로그램과 RESTful Web Service를 개발하면서 Springframework는 가장 보편적이고 표준적인 프레임워크이기 때문에, Senior 자바 개발자에게는 Spring Core와 Spring MVC에 대한 충분한 지식이 필요해. 그러나 작업 명세에 REST와 Web Service가 명시되어있다면, 스프링을 이용해서 RESTful web service를 어떻게 개발할 것인가 하는 것도 알아야 해. Spring 3.1 이후로 S

Pivotal이 Knative에서 구글과 힘을 합쳤다고 합니다.

며칠 된 소식으로 보이는군요. Pivotal이 Knative에서 구글과 힘을 합쳤다고 합니다. Knative는 구글이 Google Cloud Service에서 Kubernetes + Istio를 발전시켜서 Serverless 생태계에 좀 더 나은 솔루션을 제공하려고 만든 프로젝트라고 합니다. ( Knative 프로젝트 메인 페이지 , Knative Github ) Kubernetes와 Istio는 Cloud Service에 관심 있으신 분들은 잘 아시는 내용일 텐데요. 전 Istio는 이번에 처음 봤습니다. 찾아보니 Google, IBM, Lyft가 기여하고 있는 오픈소스 Service Mesh 구현체라고 합니다. 즉, 서비스 간의 통신을 추상화하고 거기에 Service discovery, Load balancing, Dynamic Request Routing, Circuit breaking, Retry and timeout, Distributed tracing 등등을 지원하는 서비스를 Service Mesh Service라고 하는데, 이것의 구현체 중 하나가 Istio라고 보시면 될 것 같습니다. (자세한 내용은 Cloud Labs Tech의 글을 참고 ) Spring Cloud에는 이미 Spring Cloud Neflix 프로젝트에 의해서 대부분 포함이 되어있는 기능이 아니냐고 생각하실 텐데요. 이 기능을 스프링 프로젝트에 설정하지 않고 Kubernetes + Istio 에서 지원을 한다는 뭐 그런 내용이지요. 아무튼 이 프로젝트에 그동안 Pivotal의 엔지니어들이 풀타임으로 지원을 했다고 하네요. 결국 Pivotal이 서비스하고 있는  Pivotal Container Service (PKS) 에  Knative가 통합이 되었다고 합니다. 현재 저는 그냥 앞서 말씀드렸던 Spring Cloud의 일부 모듈을 설정해서 사용하고 그 위에 docker-compose의 내부 통신 추상화 기능을 사용하고 있습니다만, 관련 글들

[포스트 공유] Top Five Books to Learn Spring Boot and Spring Cloud for Java Developers

오늘도 다른 이의 포스트를 공유해 드립니다. 몇 년 전부터 매우 핫한 아이템이죠. 스프링부트와 클라우드서비스! 지금은 철 지난 포스트가 되었지만 몇 년 전에 저도 여러 포스트를 올린 적이 있습니다. 버전을 업해서 포스트를 꾸준히 관리해놔야 하는데, 최근 보다 보니 제 포스트보다는 다른 분들의 포스트가 훨씬 훌륭해서 그냥 과거의 산물로 놔두기로 했습니다. (핑계는 그만~~ ^^) 오늘은 그와 관련된 책을 소개한 포스트 하나를 공유하려고 합니다. Top Five Books to Learn Spring Boot and Spring Cloud for Java Developers Infotech 의 Lead Programmer 시고, 제가 자주 가는 DZone 에서도 활발히 활동하시면서 많은 글을 올리시는  Javin Paul 이라는 분의 시각에서 바라본 Top 5 입니다. Top XX 라는 글들을 그리 좋아하지는 않지만 보다 보면 몰랐던 새로운 것을 발견하게 되는 즐거움이 있기도 하죠. 이 글도 최근에 발표된 책들 위주로 정리가 되어있어서 관심 있게 본 글입니다. 참고로 아래는 글에서 언급된 책에 대한 국내 정보와 간단한 정리입니다. 언제나 그렇듯이 원문에는 더 많은 정보가 있으니 꼭 원문을 봐주시길 바랍니다. 1. Spring Boot in Action Walls, Craig가 쓴 책입니다. 국내에서는 스프링부트 코딩 공작소라는 이름으로 번역되어 발매되어 있습니다. 번역본은 2016년 7월 31일에 발매되었다고 합니다. 저도 이 책을 봤습니다만, 스프링부트에 대해서 개괄적인 이해와 동작을 확인하기에 딱 좋은 책이라고 생각합니다. 스프링부트를 사용하고도 한 1년쯤 지나서 이 책을 봤던 거 같은데, 그냥 무작정 검색하고 레퍼런스를 참고해서 쓸 때의 약간의 답답한 부분들을 해소해줬던 책이었던 기억이 있습니다. 다시 보면서 좀 더 정확한 감상을 적고 싶지만, 서울집에 책이 있어서... 2. Cloud Native Java

[외국 포스트 공유] 어떻게 하면 더 나은 코드를 짤 것인가? (How to Write Better Code?)

프로그래머가 되고 싶어서 시작하는 친구들도 2~3년 정도를 프로그램해 온 친구들도 또는 그 이상을 프로그래머로 회사에서 일했던 친구들도 모두가 가장 궁금해 하는 건 어떻게 하면 더 좋은 코드를 짤 수 있는가가 아닐까 싶습니다. (사실 이런 고민을 하는 친구들은 정말 훌륭한 프로그래머들의 자질이 있다고 생각하죠. 저런 고민조차 없는 직장인 프로그래머들이 훨씬 많긴 하죠) 저도 15년 정도 여러 분야의 여러 직장에서 프로그래머로 일을 하고 지금도 홀로 개발하는 상황에서 가장 많은 질문을 받았고 지금도 받는 질문일지도 모릅니다. 2년 차에는 어떻게 해야 할까요? 전 5년 차인데 뭘 준비하면 좋을까요? 저는 사실 대기업에서 근무를 해본 적도 없고 그리 훌륭한 프로그래머도 아닙니다. (대기업에 다녀야 훌륭한 프로그래머라는 얘기는 아닙니다. 대기업에서 할 수 있을 만큼의 큰 프로젝트를 해 본 적이 없다는 의미입니다.) 즉, 저런 질문에 뻔뻔하게 답을 해 줄 수 있을 만큼의 능력이 안 됩니다. 그래도 최근에 블로그를 새로 열면서 한 번쯤은 제가 중소기업 또는 중견기업에서 일하면서 느꼈던 프로그래머로서의 본질적인 부분들에 대한 내용을 정리해보는 것도 나쁘지 않겠다는 생각이 들더군요. 한 번 준비를 해 보자는 생각으로 조금씩 정리를 해 보고 있는데 참 쉽지 않더군요. 그래서 제가 도움을 받았던 책들이나 생각들이라던가 실제 있었던 일들이라던가를 간단히 정리해 보고 있습니다. 역시 가진 것이 별로 없다 보니 쉽지 않더군요. 그런데 오늘 뉴스리더를 보다 보니 제 생각과 비슷한 부분이 상당히 많은 외국 포스트가 하나 올라왔더군요. 그래서 일단은 이 글을 공유하는 것에서 시작해 보고자 생각했습니다. 이 글의 내용의 핵심을 조금은 극단적인 표현으로 요약하면 협업을 잘하고 다른 동료에게 민폐가 되지 않게 프로그램을 개발하는 것이 좋은 코드를 만드는 방법이라는 겁니다. 저게 전부는 아니겠지만, 아니 아니지만 저런 자세에서 시작되는 게 아닐까 합니

개발하는 카페 사장으로의 새출발

정말 오랜만에 포스트를 올리는 것 같습니다. 별로 궁금해하시는 분들도 없긴 하지만, 그래도 거의 8개월이 넘게 멈췄던 블로그를 다시 시작하는 만큼 일단 근황 보고 하는 포스트를 먼저 올려볼까 합니다. 그동안 개인 신변에 많은 변화가 있었어요. 제주도 친구와 공동작업을 진행하다 보니 많은 시간을 제주에서 보내게 되었었는데요. 개인적인 실력의 부족과 여러 어려움이 닥쳐서 작업이 계속 미뤄지더군요. 그러다 친구의 꼬임(?)에 넘어가 결국 제주도에서 카페 공동사장을 하고 있습니다. 물론 카페 한쪽에 작업공간을 만들고 시간 날 때는 개발 작업을 진행하고 있고요. 친구와의 공동작업 프로젝트 외에도 개인 프로젝트도 진행을 시작하려다 보니 예전보다 더 정신은 없네요. 사실 별로 진행되는 것도 없으면서 말이죠. 혹시 제주도에 오시는 개발자분들 중 시간은 많은데 할 일이 없으신 분들은 들려주세요. 함께 개발 이야기도 할 수 있다면 좋겠네요. 여기 있으니 개발자와 직접 소통이 거의 없어서 좀 외롭네요. 계획에 없었던 일이긴 하지만, 이왕 제주도 생활이 시작된 거 간간이 제주도 이야기도 올려볼까 합니다. 참고로 카페와 함께 펜션도 하고 있으니 이용해주셔도 됩니다. 헛! 의도치 않게 광고 포스트가 되어버렸네요. 요즘 장사가 안되다 보니 그런가 봅니다. 이왕 광고를 시작한 거!! 펜션 문의는 아래에서 하시면 됩니다. 홈페이지 : https://sumbi.modoo.at/ 카페는 매주 화요일 정기휴무고 오전 10시 ~ 오후 7시까지 영업합니다. 아래는 제가 있는 카페의 사진입니다.