기본 콘텐츠로 건너뛰기

안드로이드 스튜디오의 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보다 앞에서 정의되어야 합니다. ...

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

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 바인딩을 ...