행복한 가족, 패밀리그램

안드로이드 17

Application 개발 시 Network handling, React, Android

React, Android Application ( 이하 App ) 개발 시 신경 써서 처리해야 하는 게 네트워크 핸들링 ( Network handling )이다. Retry policy ( 에러 발생 시 재시도 ), Local cache policy ( 앱 저장 캐시 ), 에러 발생 시 처리를 잘 신경 써야 사용자가 쾌적함을 느낄 수 있는 환경의 앱을 만들 수 있다. Retry policy 모바일 환경에서는 네트워크 핸드오버 또는 Mobile - Wifi 간의 전환 때문에 네트워크 에러가 발생하는 경우가 흔하다. 특히나 아침 출퇴근 시간 때에는 직장인들이 엘리베이터에서 앱을 사용하는 경우가 있어서, 타임아웃 에러가 많이 발생하기도 한다. 사용자가 에러가 발생했을 때 재 시도를 할 수 있는 UI, 그리고..

개발 2021.09.05

스미싱 방지를 위해 한 번 알아보자

업무 중 문자 한통이 날아왔다 구매하신 선물이 배송되었습니다 자세한 내용을 보려면 아래 URL을 클릭하세요 요즘 코로나 때문에 수기로 방문기록을 남기는 경우가 있는데 이런 곳에서 유출된게 아닐까 생각해본다 난 선물을 구매한 적이 없는데 알 수 없는 숏링크 ( Short Link ) 와 함께 날아온 문자였다. * Short link 란 아주 긴 인터넷 주소 (URL) 을 짧게 사용 할 수 있게 해주는 일종의 서비스이다. 구글이나 TinyURL 라는 서비스가 있다 몇 년전에 친누나가 스미싱에 당해 거액의 현금피해를 본 사건이 있었다. 그리고 최근에 장모님께서 가족을 가장한 알 수 없는 문자메세지를 받은적이 있다고 하신다. 스미싱 예방을 잘 모르는 주변 사랑하는 사람들을 위해 스미싱이 어떻게 이루어지는 추측성..

AJ일상 2021.03.18

Android MVVM 패턴을 위한 Architecture Components library - LiveData #2

https://developer.android.com/topic/libraries/architecture/adding-components.html 아키텍처 콤포넌트 소개 영상 LiveData - LiveData는 옵저버 패턴의 Data holder 이다. Data가 변경될 때 Observer를 통해 감지 할 수 있으며, 이를 통해 UI를 업데이트 할 수 있다.이전 포스팅인 Room Database에 LiveData를 사용 할 수 있다. 간단하게 LiveData를 살펴본 뒤 느낀 부분은 LiveData 는 Reactive + Object 라는 느낌이었다. Reactive X의 Subject와 같은 Observable 를 정의된 Object ( LiveData ) 가 기본적으로 갖고 있으며 , LiveDat..

Android MVVM 패턴을 위한 Architecture Components library - ROOM #1

구글에서 안드로이드개발을 위한 아키텍처 컴포넌트 라이브러리 1.0 이 나왔다. 5월 말 쯤에 나왔는데 다른 것들에 관심을 갖다 연말이되어서야 확인하고 있다. ( 너무 알아야 할 것이 많아지는 것 같아 슬프다. ) 간단하게 아키텍처 컴포넌트는 기존 안드로이드 개발에서 MVVM 패턴을 구현할 수 있도록 도와주는 라이브러리로 판단된다. 지금 까지 RxJava를 이용하여 Lifecycle을 Observe 하고 이를 이용해 MVVM 패턴을 구현했는데, 구글 안드로이드에서 직접 나서서 아키텍처 콤포넌트 라이브라리를 만들었다. For Room RxJava support, add:implementation "android.arch.persistence.room:rxjava2:1.0.0"아직 사용은 안해봤지만, RxJa..

알아두면 좋은 Android Studio Live templates

잘 사용하면 개발 속도를 눈부시게 단축시켜 주는 Android Studio Live templates. 꼭 Android Studio IDE에만 있는 기능은 아니고 대부분의 IDE에 Live templates기능을 제공한다. ( 사실상 IntelliJ에서 지원하는 기능이다. ) Android Studio의 Live templates 메뉴는 Preferences -> Editor -> Live Templates 에 위치해 있다. 그럼 한번 Live Template을 한개 등록해보자. Live Templatesabbreviation 에 원하 단축 키워드를 입력 하고 Description에 해당 키워드의 설명을 넣는다. 그리고 Template text:에 입력되어야 할 결과값을 입력한다. Live templa..

쇼핑 할 때 사용 할 수 있는 장바구니 메모 앱

몇 달 전 어떤 안드로이드 앱을 만들어 볼 까 고민하던 중 아내가 장바구니 메모 앱이 필요하다가 얘기했다. 그래서 장 볼 때 사용 할 수 있는 장바구니 메모 앱을 만들기로 결정했다.우선 어떤 것들이 필요한지 정리했는데, 새로운 패러다임을 연 RxJava와 Lambda 은 반드시 사용하기로 결정했다. 그리고 단순히 메모만 되면 심심하니, 상품 메모를 입력하면 그에 해당하는 이미지를 자동으로 불러 올 수 있게 구현하였다. 구글플레이 스토어 - 장바구니 메모 최대한 익숙하고 단순한 UX/UI를 사용하려고 노력했는데 혼자 만들기엔 역시나 쉽진 않았다. 그래도 어쨋든 완성해서 비루한 내용으로 퍼블리싱을 완료한 상태이다. ( 기능적 면으론 주변 사람들의 칭찬을 많이 받았다 ㅋ ) 우선 아내가 편리하게 자주 사용했으..

안드로이드에서 Graph를 표현하기 위한 GraphView Library

개인 프로젝트에서 Graph를 구현하기 위해 CustomView를 만들까 하다가, 왠지 이미 좋은 라이브러리가 있을 것 같아 구글링에 들어갔다. 역시나 GraphView라는 좋은 라이브러리가 이미 있었다.사용하기도 편리하며, 커스터마이징도 굉장히 편하다 ( 많은 편의성을 제공한다. )GraphView http://www.android-graphview.org/위 링크에서 자세한 내용을 확인 할 수 있다. 따로 Jar파일로 라이브러리를 제공을 하기도 하지만, Android Studio의 Gradle dependency도 제공한다.compile 'com.jjoe64:graphview:4.2.1'

안드로이드 Jenkins 설정 시 반드시 필요한 것들

CI 서버를 운용하기 위해 Jenkins 를 사용한다. 안드로이드 프로젝트에서 Jenkins 사용 시 필요한 것들이 무엇인지 정리해본다. 서버 Ubuntu 서버 JDK sudo apt-get install openjdk-8-jdk JREsudo apt-get install openjdk-8-jreAndroid SDKsudo wget http://dl.google.com/android/repository/tools_r25.2.3-linux.zip ( 버전에 따라 경로가 다르다.)안드로이드 sdkmanager --update빌드에 필요한 build-tools 설치 빌드에 필요한 support library 설치. 나머지 필요한 것들은 Jenkins에서 처리 할 수 있다.

안드로이드 프로젝트 Jenkins 설정 에러 #2

Could not initialize analytics, treating as opt-out. java.io.FileNotFoundException: /var/lib/jenkins/.android/analytics.settings (No such file or directory) Jenkins 폴더에 .android 폴더가 없어서 발생하는 문제. Jenkins 프로젝트 빌드 스크립트에 아래 Shell 스크립트를 추가하면 해결된다. ( Ubuntu ) 1234567891011if [ -d ~/.android ]; then echo ".android is exists" else echo "Create .android directory" mkdir ~/.android fiColored by Color Scri..

안드로이드 프로젝트 Jenkins 설정 에러 #1

[Gradle] - Launching build. [****] $ /var/lib/jenkins/workspace/****/gradlew assembleRelease Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain 정말 기본적인 실수 중 하나인 것 같다. Version control에 (Git, SVN 등등) 프로젝트의 gradle 폴더가 포함되어 있지 않아 발생하는 문제이다. 프로젝트의 gradle 폴더가 소스서버에 올라가있는지 확인 다시확인해 보면 정상적으로 진행되는 것을 확인 할 수 있다. start build [Gradle] - Launching build. [****] $ /var/lib/jenkins/w..