일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 북한살둘레길
- 프래그먼트
- 목적중심리더십
- 소프시스
- 테트리스
- 함수형 프로그래밍
- 끝말잇기
- 좌식테이블
- 브런치작가되기
- 어떻게 나답게 살 것인가
- 베드테이블
- 한단어의힘
- 소프시스 밤부 좌식 엑슬 테이블
- 자취필수템
- 커스텀린트
- 슬기로운 온라인 게임
- 안드로이드
- T자형인재
- 재택근무
- 캐치마인드
- 한달브런치북만들기
- 한달어스
- 아비투스
- 1일1커밋
- 리얼하다
- 지지않는다는말
- 베드트레이
- 면접
- 목적 중심 리더십
- 한달독서
- Today
- Total
목록분류 전체보기 (351)
정상에서 IT를 외치다
안녕하세요. 블랙진입니다. 웹뷰를 사용하는 앱을 개발하다 보면 웹뷰와 앱간의 통신이 필요한 경우가 있습니다. 더 자세히 말하자면 웹뷰의 자바스크립트와 안드로이드의 클라이언트 코드의 통신이 필요합니다. 이를 위한 방법으로 javasriptInterface를 사용할 수 있는데요. 그럼 이와 관련된 구글 가이드에 있는 예제를 확인해 보겠습니다. 구글 예제 1. javaScriptEnabled를 활성화 시켜준다. val myWebView: WebView = findViewById(R.id.webview) myWebView.settings.javaScriptEnabled = true 2. @JavascriptInterface 함수를 생성해준다. /** Instantiate the interface and set ..
포스팅 순서는 아래와 같습니다. 1. 아무런 기술 적용 없이 요구사항에 맞춰 프로젝트를 구현합니다. 2. Repository 패턴을 적용하여 Model을 구현합니다. 3. Rx를 적용하여 구현합니다. 4. Databinding을 사용해 MVVM을 구현합니다.(현재) 5. AAC의 ViewModel을 사용해 MVVM을 구현합니다. 순차적으로 코드를 리펙토링 하면서 어떤 점에서 코드의 유지보수가 좋아졌는지 보겠습니다. MVVM 구현하기 이번 시간에는 DataBinding을 사용한 MVVM을 본격적으로 구현해 보겠습니다. MVVM 이란? 아키텍처에서 가장 중요한 부분은 바로 관심사의 분리 입니다. MVVM은 Model과 View 그리고 ViewModel 이라는 3가지 부분으로 이뤄져 있습니다. MVVM은 Mi..
포스팅 순서는 아래와 같습니다. 1. 아무런 기술 적용 없이 요구사항에 맞춰 프로젝트를 구현합니다. 2. Repository 패턴을 적용하여 Model을 구현합니다. 3. Rx를 적용하여 구현합니다.(현재) 4. Databinding을 사용해 MVVM을 구현합니다. 5. AAC의 ViewModel을 사용해 MVVM을 구현합니다. 순차적으로 코드를 리펙토링 하면서 어떤 점에서 코드의 유지보수가 좋아졌는지 보겠습니다. 서버 통신 Rx로 변경하기 이번 시간에는 깃허브 프로젝트에 RxJava를 적용하여 비동기 작업을 효율적으로 처리하는 방법을 알아보겠습니다. RxJava 안드로이드 개발을 하면서 비동기 처리와 콜백을 다루는 작업을 많이 겪게 됩니다. 이를 도와주는 여러 라이브러리 중에서 이번 시간에는 RxJav..
포스팅 순서는 아래와 같습니다. 1. 아무런 기술 적용 없이 요구사항에 맞춰 프로젝트를 구현합니다. 2. Repository 패턴을 적용하여 Model을 구현합니다. 3. Rx를 적용하여 구현합니다. 4. Databinding을 사용해 MVVM을 구현합니다. 5. AAC의 ViewModel을 사용해 MVVM을 구현합니다. 순차적으로 코드를 리펙토링 하면서 어떤 점에서 코드의 유지보수가 좋아졌는지 보겠습니다. Model 구현하기 출처 위 그림은 구글 가이드에 있는 MVVM 아키텍처 입니다. 이번 포스팅에 알아볼 것은 빨간 네모로 표시된 Model 부분입니다. Model은 데이터를 구현하는 부분으로 위 그림에서는 Repository 패턴을 적용해 구현되었습니다. 리포지터리 패턴이란? 먼저 리포지터리에 대한 ..
안녕하세요. 블랙진입니다. 안드로이드 개발을 어느정도 경험하게 되면 MVVM에 대해 한번 쯤은 들어보시게 될겁니다. 프로젝트의 크기가 커지게 되면 앱의 유지 보수를 위해 어떤 아키텍처를 선택하는지가 중요하게 됩니다. 여기서 아키텍처는 MVC, MVP, MVVM 등등 있지만 왜 많은 안드로이드 개발자들이 MVVM을 선택했을까요? MVVM을 처음 시작하고 공부하는 가장 큰 이유는 구글에서 권장(Guide to app architecture)하고 있다는 것과 많은 가이드를 제공하며 주변에서 많이 쓰니까이지 않을까 조심스럽게 생각합니다. (필자 또한 MVVM이 좋다고 해서 시작했습니다.) 우리는 MVVM에 조금만 검색해보면 아래와 같은 구현 방법을 읽을 수 있습니다. 1. View와 ViewModel은 다대다 ..
안녕하세요 블랙진입니다. 안드로이드 업데이트를 하고 나서 간혹 아래와 같은 에러가 발생하는 경우가 있습니다. > Installation did not succeed. The application could not be installed. 위 에러는 USB를 통해 앱을 연결해서 빌드하는데 계속 끊기는 현상입니다. 아래와 같은 이미지를 보여주면서 우리를 좌절시킵니다. ㅠㅜ 위와 같은 에러가 발생했을 때 디버그 설정을 한 번 확인해 주세요. Use libusb backend 가 체크되어 있는 경우 이를 해지하면 위 에러가 해결될 수 있습니다.
안녕하세요 블랙진입니다. 2019년 9월 21일 ~ 2020년 2월 29일 한해를 넘기면서 까지 진행한 매쉬업 8기에 대한 회고 글입니다. 이번 8기는 안드로이드 운영진을 하면서 보냈기에 필자에게는 더욱 뜻 깊은 기수가 아니었을까 합니다. 하지만 그만큼 아쉬운 점도 정말 많았습니다. 그럼 8기 매쉬업의 안드로이드 운영진으로서 한 해를 어떻게 활동 했는지 확인해 보겠습니다. 운영진의 첫 관문 - 면접 준비 운영진으로서 가장 큰 경험은 함께할 8기 인원을 뽑기위해 면접을 준비했다는 것입니다. 2019년 8월 16일 ~ 8월 26일 서류 접수를 시작으로 8월 31일, 9월 1일 2일간 면접을 진행했습니다. 한 분 한 분 모두 면접 때 뵙고 싶었으나 이번 8기와 적합한 분을 고르는 일은 정말 힘들었습니다. 모두..
안녕하세요. 블랙진입니다. 최근 이직과 동아리 활동을 하면서 협업에 대해 많은 관심을 가지게 되었습니다. 팀 내에서 어떻게 하면 협업을 잘 할 수 있을까? 프로젝트 팀원들과 어떻게 하면 모두가 만족한 결과를 만들어 낼 수 있을까? 이 과정에서 나는 얼마나 더 성장할 수 있을까? 저의 달라진 환경에 맞춰 협업과 성장에 대해 계속 고민하게 됩니다. 이런 고민을 하는 중 "함께 자라기 - 애자일로 가는길"을 읽게 되었는데요. 제 고민과 맞물려 많은걸 느낄 수 있었던 책이었습니다. 머리말 "내가 정말 잘할 수 있을까? 아니, 우리가 정말 잘할 수 있을까?" 그동안 혼자 고민하고 공부해온 저를 되돌아 보게 하는 문장이었습니다. 공부 하는데 있어서 혼자 하는게 익숙했고 혼자 하는게 더 빠르게 성장하는 법이라고 생각..
abstract class OnSingleClickListener( private val clickDelayMilliSecond: Long = CLICK_DELAY_TIME ) : View.OnClickListener { companion object { private const val CLICK_DELAY_TIME = 1000L } private var lastClickTime = 0L protected abstract fun onSingleClick(view: View) override fun onClick(view: View) { val now = System.currentTimeMillis() if (now - lastClickTime > clickDelayMilliSecond) { onSingl..
inline fun ifNotNull(a: A?, b: B?, code: (A, B) -> R) { if (a != null && b != null) { code(a, b) } } 다중 null check 할 수 있는 kotlin extension 함수 사용예 val temp1: String? = null val temp2: String? = null ifNotNull(temp1, temp2) { a,b -> //.. a,b는 null이 아니다 }