7월, 2017의 게시물 표시

Android Emulator 키보드 사용 설정

이미지
가끔 기기가 없을 때 Emulator를 사용해서 개발을 하곤 한다. 그런데 문제는 키보드를 사용하지 않고 마우스로 하나하나 타이핑을 하고 있으면 화가난다...ㅠ 그래서 키보드를 사용해서 Emulator에 key를 입력하도록 설정했다. # 키보드 설정  우선 Tools > Android > AVD Manager를 선택하여 AVD 설정화면으로 이동한다. 여기서 현재 생성해둔 Emulator의 리스트를 볼 수 있는데 원하는 Emulator를 선택하고 Edit 버튼을 클릭한다. Edit 버튼은 Action에 연필모양이다. 여기서 Show Advanced Setting 을 선택하여 메뉴를 늘린 후 하단에 Enable Keyboard Input을 체크하고 Finish를 클릭하여 마친다. 이후에 Emulator를 실행하면 키보드가 잘 적용될것이다.

Kotlin Android FindViewById없이 사용하기

Kotlin Android Extentions plugin을 사용해서 어떻게 Android 의 Java 를 대체할 수 있는지 살펴보자. # 개요 Android 개발자라면 자연스럽게 findViewById()를 사용하고 있을것이다. 사실 findViewById는 잠제적으로 버그를 유발할 수 있는 메소드이다. 왜냐하면 앞에 강제 캐스팅을 하는데 타입이 맞지 않으면 null이 반환되고 이를 체크하지 않으면 에러가 발생하기 때문이다. 몇몇 Butter Knife 같은 라이브러리들이 이를 도와주고 있지만 runtime에 의존적인 라이브러리고, 각각의 View에 annotation을 붙여야한다. Kotlin Android Extentions plugin은 그런 라이브러리들과 같이 간단한 표현으로 binding할 수 있고, 추가적인 코드나 compile-time에 알 수 있다. # Kotlin Android Extentions plugin 설정 우선 build.gradle 에 다음 코드를 추가한다. ``` apply plugin: 'kotlin-android-extenstions' ``` # 코드 <activity_main.xml> <MainActivity.kr> 코드를 보면 findViewById가 없다. 그냥 바로 View의 id를 불러다 사용할 수 있다. 또한 타입도 잘 정의가 되어있다. 이러한 것들이 가능하도록 하는게 바로 `import kotlinx.android.synthetic.main.activity_main.*` 이부분인데 .xml 파일을 import하여 사용 가능하도록한다.

Java String split메소스 사용시 `.` 문자 주의

애플리케이션에서 버전을 관리를 해야하기 때문에 서버에서 최신 버전을 받아왔다. 버전정보를 요청하면 Android 애플리케이션의 최신 버전이 Semver로 오도록 하였다. ``` JSON {     android: "1.0.0" } ``` 위와같은 식으로 오게 하였는데 앱에서 이 JSON을 받아서 "1.0.0" String을 '.'으로  split하여 String Array에 각각 {"1", "0", "0"} 이 들어오도록 하였다. 그치만 왠걸... split이 되질 않는것이다. 문제를 해결하기 위해 구글링 해보니 stackoverflow에서 이런 글을 찾았다. Java string split with “.” (dot) 흠... 내용을 읽어보시면 알겠지만 . 문자는 정규표현식으로 사용될 수 있기 때문에 "." 문자로 split하는것이 아니라 정규표현식 으로 사용되어 원하지 않는 방식으로 동작한것이다. 따라서 재대로 나오게 하려면 string.split("\\.") 을 해주어야한다.

Android studio 3.0 + Kotlin 튜토리얼

이미지
Google I/O에서 이제 Android가 Java를 대신해서 Kotlin을 사용하겠다고 공식적으로 선언했다. 그래서 Kotlin을 한번 사용해보려고 한다. Android Studio 3.0 부터 지원을 하는데 아직 Preview밖에 없어서 Preview를 통해 사용해보았다. # Kotlin 플러그인 설치 Kotlin 플러그인은 Android studio 3.0 이상부터 빌드가 된다. 만약에 이전 버전을 사용하고 있으면 반드시 Kotlin 플러그인을 설치해야 된다. File -> Setting -> Plugins -> Install JetBrains plugin... 에 들어가서 Kotlin을 검색해서 설치한다. 잘 설치가 되면 다음과 같은 화면을 볼 수 있을것이다. 다음으로는 플러그인을 설정해야하는데 Configure -> Plugins -> Install JetBrains plugin... 에 들어간다. 아마 완료하면 재시작을 해야될것이다. # 프로젝트 생성 이제 프로젝트를 생성해보자. 근데 생각보다 기존거랑 다른게 없다... 먼저 ` Start a new Android Studio project `를 선택한다. 그럼 아래와 같은 창이 나온다. 애플리케이션의 이름을 입력하고, 패키지 명을 입력하고 프로젝트 저장 위치를 입력한다. 중요한건 가장 아래쪽에 체크박스인데 ` Include Kotlin support `를 선택해야한다. 그리고 이후에 진행은 기존과 동일하다. Android Studio 3.0에서는 Activity를 바로 Kotlin으로 생성할건지 안할껀지 선택이 가능하다. 만약 선택하지 않는다면 다음 방법으로 Converting할 수 있다. Android Studio 3.0에서 Java 코드를 Kotlin으로 변환하는 방법 ( 이전 버전에서는 이게 안되서 좀 불편했다고 한다...  ) 일반적으로 가장 쉽게 Kotlin을 사용하는 방법은 자동으로

Android Studio 3.0에서 Java 코드를 Kotlin으로 변환하는 방법

이미지
기본적으로 Android Studio 3.0부턴 Kotlin 설정이 되어있으나 이전 프로젝트의 경우 따로 Converting을 해야한다. 생각보다 어렵지 않으니 한번 보면 금방 따라할 수 있을것이다. # Java 코드를 Kotlin 코드로 변환 우선 Java 코드를 열고 ` Convert Java File to Kotlin File ` 을 선택한다. ` Convert Java File to Kotlin File ` 는 Find Action 이나 Code -> Convert Java File to Kotlin 메뉴를 이용하면 된다. Find Action의 단축키는 맥기준으로 Command + Shift + A 이다. 아니면 아래처럼 바로 찾아서 선택해도 된다. `Convert Java File to Kotlin File`를 선택하면 잘 코드가 바뀐걸 확인할 수 있을것이다. # Kotlin 설정 만약에 Kotlin설정이 안되어있다면 아래 스크린샷처럼 위에 노란줄이 뜰것이다. ( 여기서부턴 내가 직접 해본건 아니고 튜토리얼에 나와있는 내용입니다ㅠ ) 여기서 Configure를 선택하고 Android with gradle을 클릭하면 아래와 같이 팝업이 나올것이다. Kotlin을 적용시킬 범위와 버전을 입력하면 알아서 gradle에 설정이 될것이다. 그리고 난 뒤에 Sync Now를 클릭하면 끝! 이제 Android를 Kotlin으로 개발하면 된다.

[리뷰] 실무에서 바로 통하는 자바

이미지
한빛 미디어 메일을 수신하는데 나는 리뷰어다 7월 이벤트를 하고있어서 별생각없이 신청했다. 여러가지 책들이 있었는데 그중 가장 끌리는 `실무에서 바로 통하는 자바`를 선택했는데 당첨되서 이렇게 리뷰를 쓰고있다...ㅋ 실무에서 바로 통하는 자바 우선 읽으면서 가장 좋은 점이라고 생각되는건 Java 8 내용까지 담고있다는점이다.  지금 나온 대부분의 책들은 출판된지 좀 되서 이전 내용들이 이전것들이 많은데 나름 최신버전 내용들이 많다.  두번째 장점으로는 이미지나 굉장히 많고 설명이 그만큼 디테일하다.  간혹 처음 접하는 사람들은 어떻게 툴을 사용해야되는지 글로만 써있으면 알기 쉽지않다. 아주 간단한 기능이지만 한번도 안보고 글로만 보긴 쉽지 않으니까... 프로젝트를 만들거나, 개발환경을 설정하는곳, 코드 작성하는 부분 등에서 step by step으로 알려주니 같이 따라하는데 큰 어려움이 없었다. 그런면에서 배려가 넘처서 좋았다. 세번째로는 진짜 실무에서 많이 쓰이고 있는 내용이 많았다는것이다. 책 재목에서도 실무에서 바로 통하는 자바라고 했드시 실무에서 자주 사용되는 내용 위주로 구성되어있다. 우선 간단한 문법부터 시작해서 java 8의 람다식까지 배우고 본격적으로 자주 사용되는 부분을 배운다. 문자열 조작, 날짜 또는 시간 클래스, 집합체 등을 다룬다.  이후에 디비나 쓰레드, 테스트도 도움이 많이 되었다. 하지만 가끔 특정 상황에서만 필요한 내용이 나오긴 한다...  Apache-Commons라던가... 당연히 프로젝트에서 사용하고 있다면 도움이 많이 되겠지만 사용하고 있지 않다면 굳이 필요한 내용이 아니니까ㅠ 그리고 입출력 부분에서 굳이 csv파일까지 다룰 필요까지 있나 싶었다.  카페에서 한컷...ㅋㅋㅋ

Android ScrollView의 스크롤 이동

가끔 ScrollView에서 스크롤의 위치를 수정해야될 일이 있다. 예를들면 최상단으로 이동해야되는 경우인데, 꽤 많은경우에서 이러한 기능을 사용한다. 아래 코드는 버튼을 클릭했을 때 스크롤뷰의 최상단으로 이동하는 코드이다. 소스코드

Android Splash 화면을 구현하는 올바른 방법

이미지
시작하면서... 여기 에 있는 글을 보고 정말 좋은 방법이라고 생각해서 번역하고 살짝 수정해서 글을 썼다. 원본이 더 잘 나와있으니 영어가 자신있으신 분들은  여기 를 참고하시는게 더 좋을것같습니다ㅠ 서론 앱을 구현하다보면 자연스럽게 앱이 준비되는동안 사용자에게 보여줄 Splash화면을 추가해야겠다고 생각하게 된다. 이미 많은 앱에서 Splash 화면을 보여주고 있다. Splash 화면을 구현하는데는 여러가지 방법이 있겠으나 사실 Splash화면을 사용하는 이유부터 알고 구현을 해야한다. 그런 의미에서 아래에서 설명할 방법이 개인적으로 가장 잘 구현했다고 생각한다.... 안드로이드 앱중 종종 splash 화면이 없는 경우도 있고, 올바르지 못하게 만드는 경우가 매우 많다. 앱 개발자들이 그런 splash화면을 구현하는데 걸리는 시간은 정말 작다. Splash 가이드 가이드에 나와있는  splash화면을 읽어보면 놀랄지도 모른다. Material Design  스팩을 확인해보자. 항상 그런경우는 아니지만, 구글은 splash화면을 별로 좋아하는것같지 않다. 심지어 이걸 안티페턴이라고까지 부르기도 한다... ( 안티페턴이라고 생각하지는 않는데 뭐 그렇다고 한적이 있다고 한다... ) 아래 이유때문인데 각각 보면 뭐 이해가 안가는건 아니다. 처음부터 가입을 요구하지 마라 splash화면을 사용하지 마라 유명한 서비스와 통합하지 마라 앱의 가치를 높여라 Splash 구현된 화면 사실 구글이 저렇게 왜 말했는지 조금 모순되는 부분이 있다. (혹시라도 아직까지 splash화면이 사용자에게서 시간을 뺏는다고 생각하는 사람은 없길 바란다...ㅠ Splash화면은 분명 목적도 있고, 필요성도 명확하다.) 하지만 안드로이드 앱은 시작하는데 약간의 시간을 소요된다.   (예외적으로 바로 메인에 도달하는 경우도 종종 있긴 하지만;;) 어쨋든 피할 수 없는 딜레이가 존재한다. 이러한 시간동안 아무 것도 없는 화면에

2017 Macbook 개인적인 후기

이미지
5년동안 사용하던 노트북을 드디어 바꾸게 되었다... 회사에서 iOS를 개발하게 되면서 나름 익숙해진 Mac에 맥북 프로를 지르기로 결심하고 한국에 입고되자마자 질렀다ㅋㅋ 13인치랑 15인치랑 정말 많은 고민을 했고 결국엔 15인치를 선택하게 되었다. 사용하고있는 지금 15인치를 선택한 내자신이 자랑스럽다... (물론 많은 지인들이 15인치를 사라고 강요해서 샀다ㅠ 감사합니다...ㅠ) 256G에 램은 16G를 선택했다. 어처피 클라우드 사용하기도 하고, 외장하드도 사용하니 용량은 크게 걱정 안되기 때문에... 집에서 맥북 왔다는 문자받고 회사에서 얼마나 집중이 안되던지ㅠ 집에 도착하자마자 상자를 풀고 꺼내서 조심스럽게 비닐을 벗겼다....핰ㅋㅋㅋㅋㅋ 안에 내용물은 깔끔하게 잘 들어있었다. 색상은 스페이스 그래이를 선택했고 아이폰이랑 색상을 맞추기 위해서 선택했다ㅋ 애플은 실버지! 라고 생각했었는데 막상 받고나니 스페이스 그레이도 나쁘지 않은것같다 상자랑 내용물은 다시 조심히 포장해서 잘 모셔두었다 벗겻던 비닐도 테이프로 해서 잘 마감처리 해서 넣었다. 혹시 모르니까?ㅋ 처음에 전원버튼이 어디있는지도 몰라서 좀 해멧었는데... 전원버튼은 우측 상단에 있다. 터치아이디도 전원버튼을 통해서 하더라... 터치바에 대해서 약간 아쉽다는 댓글이 많아서 걱정했는데 막상 사용해보니 꽤 괜찮다. esc를 누를때 키감이 없어서 아쉽기는 하지만 그래도 세련된 느낌을 받았다. 그리고 애플에서 지원하는 소프트웨어는 터치바를 이용해서 뭔가 이것저것 할 수 있는것같다. 사파리라던가, 사진 앱이라던가?? 잘은 모르겠지만 일단 할수있는게 많다ㅋㅋㅋ 파워포인트에서도 여러가지 추가 기능을 지원하는듯 하다...! 꼭한번 해보고싶었던 카페에서 맥북으로 작업도 해보았다...ㅋㅋㅋㅋ 평소에 카페에서 맥북으로 뭐 하는사람들 보면 엄청 멋있어보였는데 난 아무래도 아닌것같다ㅠ 쨋든 이제 개발환경 설정하고 이것저

[Bucket list #3] 헌혈 100회 (1/100)

이미지
고등학교때 CA로 RCY를 했었는데 그때 처음 헌혈을 하게 되었었다. 최근에 역곡을 지나다가 헌혈카페를 봤는데 30회, 50회, 100회 마다 명예카드? 처럼 헌혈증을 주고있는걸 보자마자 저걸 갖어야겠다고 생각이 들었다...ㅋㅋㅋㅋ 그래서 100번의 헌혈을 해보려고 한다. 두달에 한번씩 할수있으니까 1년에 6번... 즉 100번을 채우려면 18년이 걸리네...??  ??????????????? 어... 생각보다 긴 여정이 될것같다... 일단 Bucket list에 썼으니까 해봐야되겠네 일단 지금부터 시작했으니 18년 후면 43살에 끝낼 수 있을것같다...  크.... 그전에 뭔가 내가 헌혈증을 쓸일이 있을지도 모르겠다 쨋든 헌혈을 하러 역곡 남부역에 있는 헌혈카페에 갔다. 처음 가보는거라 엄청 어색했지만 안에 들어가니 더 어색했다. 먹을거는 자유롭게 가져다 먹을 수 있는것같았다...ㅋㅋㅋ 다음번에 갈땐 어색하지 않게 잘 갔다와야겠다는 마음을 갖고 이 글을 끄적이고 있다...ㅠ 일단 가서 번호표를 뽑고 우측에 있는 테블릿PC로 검진 (설문조사 같은거)를 한다. 아마 대부분 없음이나 뭐 건강건강 하다 체크하면 된다...ㅋ 혹시라도 해당사항이 있다면 멈추고 다음에 찾아가자ㅠ 생각보다 까다로웠던것같다... 해외에 간적 있는지, 병원간적이나 약먹는게 있는지 등등이 있었다. 그리고 잠시 대기하면 문진실에서 번호를 불러주는데 안에 들어가면 의사선생님이 몇가지 질문하신다. 처음 방문이라 샘플로 피 약간을 가져가셨다. 그리고 본격적으로 안으로 들어가면 침대가 한 10개 정도가 있는데 엄청 편해보인다... TV도 눈앞에 있고 테블릿도 있는 침대도 있었다. 잠시 앉아있으면 간호사님이 오셔서 이것저것 설명해주시고 하는데 그냥 그러려니...ㅋㅋㅋ;; 피뽑는거 별로 안좋아하긴한데 처음만 이상하고 나중엔 괜찮았다ㅋ 중간에 SNS