기본 콘텐츠로 건너뛰기

7월, 2017의 게시물 표시

[Android] Fragment를 XML 코드로 생성하기

Android에서 Fragment는 무조건 Java Code로 FragmentTransaction을 통해 띄우는 건 줄 알았는데, 간단히 XML만으로도 띄울 수 있는 방법을 알게 되어 간단히 적어 본다. 1. Fragment를 상속받는 Class를 정의한다. public class DetailsFragment extends Fragment {     @BindView(R.id.tv_title) TextView mTvTitle;     public DetailsFragment() {     }     @Override     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {         View root = inflater.inflate(R.layout.fragment_details, container, false);         ButterKnife.bind(this, root);         return root;     } } fragment_details.xml 은 생략한다. 2. 위에서 정의한 DetailsFragment를 적재할 MainActivity의 layout xml 코드를 아래와 같이 작성한다. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"         xmlns:tools="http://schemas.android.com/tools"         android:layout_width="match_parent"         android:layout_height="match_parent"         android:orientation="horizontal"         t

[Firebase] 데이터 정합성을 위한 Cloud Function 적용 사례 - 2

Firebase Cloud Functions를 적용하게 되었던 배경을 이전 글에서 소개해드린 바가 있습니다. 그 글에 이어 Cloud Functions 적용기를 간단히 소개하고자 합니다. 순서는 다음과 같습니다. 1. Cloud Functions 개발 환경 구축 2. Cloud Functions 코드 작성 3. Deploy 좀더 상세한 내용을 원하시면 하기 링크를 참고하시기 바랍니다. (본 글에서 다루는 내용보다 상세한 내용을 담고 있습니다.) https://firebase.google.com/docs/functions/get-started https://firebase.google.com/docs/functions/database-events 1. Cloud Functions 개발 환경 구축 먼저 Cloud Functions을 시작하기 위해서는 별도 개발 환경을 구축해야 합니다. Cloud Functions은 Node.js를 기반으로 동작하는 것 같습니다. 따라서 다음 단계가 선행되어야 합니다. Node.js 설치 (v6.11.1 recommend) npm 설치 Firebase CLI 설치 Node.js와 npm을 설치했다면 다음 명령어로 Firebase CLI를 설치할 수 있습니다. npm install -g firebase-tools Firebase CLI까지 설치가 되었다면 이제 Firebase Cloud Functions 프로젝트를 생성해야 합니다. 제가 개발 중인 프로젝트는 Android 모바일 어플리케이션이었습니다. 하지만 지금 작성하고자 하는 코드는 Android 앱이 아닌 Google Cloud 서버에 로드되어 동작할 코드이기 때문에 별도 프로젝트를 생성해야 합니다. 1.1 먼저 다음 명령어를 통해 Firebase tool 사용을 위한 인증을 완료합니다. firebase login 1.2 원하는 경로에 원하는 이름으로 Directory를 생성하고, 다음 명령어로 초기화합니다.

[Firebase] 데이터 정합성을 위한 Cloud Function 적용 사례 - 1

현재 Firebase의 다양한 기능들을 적용하여 모바일 어플리케이션을 개발하고 있습니다. 아시다시피 Firebase는 인증, 데이터베이스, 스토리지와 같은 여러 핵심적인 서버 기능들을 제공하고 있죠. 덕분에 Client 코드만으로도 충분히 Serverless한 서비스를 개발하고 있습니다. 개발을 하면서 Firebase 위력에 하루 하루 감탄/감사(?)하고 있죠. 그런데 지금 제가 진행하고 있는 프로젝트에서는 위 기능들만으로는 조금 부족했습니다. Firebase Realtime Database는 Json을 베이스로 하기 때문에 기본적으로 일반 관계형 데이터베이스와는 다른 DB 설계를 생각해야 했고요. 이로 인해 데이터 정합성 문제가 발생했습니다. 결론적으로는 Firebase Cloud Function을 통해 해결할 수 있었고 본 글은 Cloud Function의 적용 사례를 소개하는 글입니다. 우선 본 장에서는 Firebase를 사용하면서 어떤 문제 상황을 마주했고, 이를 해결하기 위해 선행적으로 어떤 대안들을 생각했었는지, 그리고 결국에는 왜 Cloud Function을 최종 대안으로 선택했는지 소개하고자 합니다. 일반적으로 관계형 데이터베이스에서는 데이터 중복 저장은 가급적 피해야하고, 이를 달성하기 위해 정규화라는 개념이 적용됩니다. 하지만 Firebase Realtime Database는 관계형 데이터베이스가 아닌 Mongo DB와 같은 Document Store입니다. 우선 제 입장에서 이런 구조는 익숙하지 않은 형태의 데이터베이스였고, 처음 이것을 접했을 때에는 가급적 관계형 데이터베이스와 유사하게 데이터 구조를 가져가려고 노력했습니다. 하지만 이는 생각처럼 쉽지 않았고, 결국 성능을 위해 일부 데이터를 중복 저장하기로 결정했습니다. [이해를 돕기 위한 예제 소개] 본 글에서는 우리가 직면한 문제를 소개하기 위해 User, Group의 예를 사용합니다. User: 사용자의 정보를 담은 객체 G