기본 콘텐츠로 건너뛰기

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

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.i