기본 콘텐츠로 건너뛰기

5월, 2017의 게시물 표시

Firebase Functions - backend 로직을 구축해보자.

아예 functions라는 이름의 HTTP기반 node.js application 도 올릴 수 있다.
잘하면 meteor도 올릴 수 있을 거 같긴한데 일단 나중에 볼 일이고
https://firebase.google.com/docs/functions/get-started 따라 해보자
먼저 init 부터
$ firebase init functions

     🔥🔥🔥🔥🔥🔥🔥🔥 🔥🔥🔥🔥 🔥🔥🔥🔥🔥🔥🔥🔥  🔥🔥🔥🔥🔥🔥🔥🔥 🔥🔥🔥🔥🔥🔥🔥🔥     🔥🔥🔥     🔥🔥🔥🔥🔥🔥  🔥🔥🔥🔥🔥🔥🔥🔥
     🔥🔥        🔥🔥  🔥🔥     🔥🔥 🔥🔥       🔥🔥     🔥🔥  🔥🔥   🔥🔥  🔥🔥       🔥🔥
     🔥🔥🔥🔥🔥🔥    🔥🔥  🔥🔥🔥🔥🔥🔥🔥🔥  🔥🔥🔥🔥🔥🔥   🔥🔥🔥🔥🔥🔥🔥🔥  🔥🔥🔥🔥🔥🔥🔥🔥🔥  🔥🔥🔥🔥🔥🔥  🔥🔥🔥🔥🔥🔥
     🔥🔥        🔥🔥  🔥🔥    🔥🔥  🔥🔥       🔥🔥     🔥🔥 🔥🔥     🔥🔥       🔥🔥 🔥🔥
     🔥🔥       🔥🔥🔥🔥 🔥🔥     🔥🔥 🔥🔥🔥🔥🔥🔥🔥🔥 🔥🔥🔥🔥🔥🔥🔥🔥  🔥🔥     🔥🔥  🔥🔥🔥🔥🔥🔥  🔥🔥🔥🔥🔥🔥🔥🔥

You're about to initialize a Firebase project in this directory:

  /Users/spectrum/Documents/js/_firebaseApp/sheepals

Before we get started, keep in mind:

  * You are initializing in an existing Firebase project directory


=== Project Setup

Fi…

Firebase 정적 호스팅

이번 google I/O도 그렇고 꾸준히 firebase를 밀고 있다.

디비 뿐만 아니라 정적 호스팅도 해준다는 소식에 혹 해서 살짝 내용을 살펴보았다.
https://firebase.google.com/docs/hosting/quickstart

https://console.firebase.google.com/
먼저 firebase 콘솔로 들어가서 프로젝트를 하나 만들자.
Add Project를 누르면

프로젝트 이름과 지역을 설정할 수 있다.
적절히 넣어주고 Create Project하여 프로젝트를 만들고

당연한 이야기지만 0.10.x 이상의 Node.js를 설치한 상태로 firebase-tools를 먼저 설치하자
npm install -g firebase-tools 좀 시간이 걸린다.
다 되면 폴더를 하나 만들고 그 안에서 init으로 초기화를 하자.
mkdir exam1
cd exam1
firebase init

     🔥🔥🔥🔥🔥🔥🔥🔥 🔥🔥🔥🔥 🔥🔥🔥🔥🔥🔥🔥🔥  🔥🔥🔥🔥🔥🔥🔥🔥 🔥🔥🔥🔥🔥🔥🔥🔥     🔥🔥🔥     🔥🔥🔥🔥🔥🔥  🔥🔥🔥🔥🔥🔥🔥🔥
     🔥🔥        🔥🔥  🔥🔥     🔥🔥 🔥🔥       🔥🔥     🔥🔥  🔥🔥   🔥🔥  🔥🔥       🔥🔥
     🔥🔥🔥🔥🔥🔥    🔥🔥  🔥🔥🔥🔥🔥🔥🔥🔥  🔥🔥🔥🔥🔥🔥   🔥🔥🔥🔥🔥🔥🔥🔥  🔥🔥🔥🔥🔥🔥🔥🔥🔥  🔥🔥🔥🔥🔥🔥  🔥🔥🔥🔥🔥🔥
     🔥🔥        🔥🔥  🔥🔥    🔥🔥  🔥🔥       🔥🔥     🔥🔥 🔥🔥     🔥🔥       🔥🔥 🔥🔥
     🔥🔥       🔥🔥🔥🔥 🔥🔥     🔥🔥 🔥🔥🔥🔥🔥🔥🔥🔥 🔥🔥🔥🔥🔥🔥🔥🔥  🔥🔥     🔥🔥  🔥🔥🔥🔥🔥?…

동적으로 로딩하는 Meteor i18n 다국어 적용기

작년부터 꾸려가던 서비스가 다행인지 불행인지 수입은 별론데 입소문과 방송이 마구 돌아서 해외에서도 요청이 들어오고 있다.

드디어 i18n! 즉, 다국어 지원을 해야할 시기가 온 것이다.
https://themeteorchef.com/tutorials/i18n-and-meteor 를 보고 tap-i18n(https://github.com/TAPevents/tap-i18n) 패키지를 써보기로 마음먹었다.

약간 삽질이 있었는데 처음에
meteor add tap:i18n 만 하면 나머지 다 잘 될줄 알았다.

아니었다. 역시 인생 실전...

내 경우는 json 파일을 정적으로 만드는 것이 아니라 개발팀이 아닌 일반 관리자가 새로 만든 상품에 대해서도 다국어 대응을 바로 해야하기 때문에 동적으로 로딩할 수 있도록 만들어야 했다.

먼저, 자원을 로드하는 건 별로 어렵지 않았는데
TAPi18n.loadTranslations(
    {
        es: {
            meteor_status_waiting: "Desconectado"
        },
        fr: {
            meteor_status_failed: "La connexion au serveur a échoué"
        }
    },
    "francocatena:status"
); 이런 식으로 언어별로 key/value 매핑을 하고 마지막 인자로 namespace를 주면 된다.
별로 떠오르는 이름이 없어서 위 예의 "francocatena:status" 대신 "project"라고 줬다.

html 헬퍼에서 {{{_ '번역할 문장'}}} 을 했더니 '_' 라는 펑션 없단다.
ecmascript 패키지와 충돌하느니 어쩌느니 얘기가 주절주절 많은데
결론은 project의 root에 project-tap.i18n 파일을 만들고
{
    "helper_name&…