기본 콘텐츠로 건너뛰기

6월, 2016의 게시물 표시

Meteor DDP 요점 정리

준비 ddp 라이브러리 추가 $ meteor add ddp 외부 DDP 연결 extDDP = DDP.connect("http://externalhost.com:4100"); Collection 연결 Posts = new Mongo.Collection('posts', extDDP); 2,3 과정은 client 에서 가장 먼저 실행되도록 client/lib 디렉토리 안에 넣는 것을 추천 기존 연결을 외부 DDP로 대치 Meteor.connection = extDDP; ex) 활용예 Meteor.connection = extDDP; Meteor.loginWithPassword(login.valiu, password.value); Meteor.startup 같은 곳에서 사용하면 좋음. 만일 login을 그냥 사용하려면 expDDP.call('login', .... ); 형태로 사용하여야함. Subscribe 사용 onCreated 시점에 this.subscribe 대신 DDP 객체의 subscribe를 사용 Template.postView.onCreated(function() {   extDDP.subscribe("getPosts", { searchWord: 'blahblah' }); }); Helper 사용 3번처럼 했다면 그냥 똑같이 사용 Tempalte.postView.helpers({   "posts": function() {     return Posts.find({});   } }); Method 사용 Template.postInput.events({   "submit": function(e) {     expDDP.call('addPost', inputText.value', function(error, result) {      /* do something */     });     e.preventDefa

microservice 기반 meteor application 설계 /w DDP

특정 업무가 장애가 일어나도 전체가 다운되지 않는 서비스를 Meteor 로 만들 수 있지 않을까 라는 생각을 하고 있었는데 실제로 한번 해보았다. 로긴 서버와 N개의 업무서버가 하나의 DB를 바라보고 클라이언트에서 로긴 서버에 계정생성/접속 후 토큰을 꺼내와서 나머지 서버에 접속하는 그림을 그려보았다. 업무 서버의 경우 웹앱에서 접근 문제가 있기 때문에 CORS를 열어준다. Meteor.startup ->   WebApp.rawConnectHandlers.use (req, res, next)->     res.setHeader "Access-Control-Allow-Origin", "*"     next() iOS/Android 앱의 경우는 사실 상관이 없지만 webApp인 경우엔 꼭 필요. 반대로 webApp 인 경우는 client 폴더에만 작업하면 되는데 가장 먼저 실행하는 파일(ex. client/lib) 에 DDP와 Collection 연결하는 부분을 만들어 준다. # global namespace @ddps =   loginDDP : DDP.connect "http://localhost:4100"   chatDDP : DDP.connect "http://localhost:4200" # models @Chats = new Mongo.Collection 'chats', ddps.chatDDP 그리고 Meteor App 이 시작하는 시점에 아래와 같이 구성한다. Meteor.startup ->   Meteor.connetion = ddps.loginDDP   Tracker.autorun ->     if Meteor.user()?       unless Meteor.loggingIn()         console.log Meteor.user()?.username      

Android 에서 DDP 라이브러리를 사용하자.

Meteor는 자체적으로 Cordova 를 통한 iOS/Android 앱을 지원한다. 하지만, Hybrid 앱은 역시 Native에 비해 예측 못할 변수가 많고 성능도 그다지 좋지 않다. DDP를 사용하여 Native Android 앱과 Meteor 서버를 연결해보자. 새 프로젝트를 만들고 File/Project Structure (cmd+;) 으로 들어가서 하단 +를 누르면 Library Dependency File Dependency Module Dependency 세개 나온다. Choose Library Dependency 창에서 ddp 하고 엔터쳐보자. 지금 현재는 3개 정도 나오는데 com.keysolutions:android-ddp-client:1.0.2.0 이걸 써서 할거다. 선택하고 OK 해서 추가하자. activity_main.xml 에 버튼 하나 만들고  AndroidManifest.xml 에     <uses-permission android:name="android.permission.INTERNET" />     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 이 두 개의 permission 이 있는지 확인하자. 없으면 추가. <application>이랑 나란히 놓으면 된다. 준비 해야할 class 는 일단 두개인데 하나는 어플리케이션 전체에서 DDP 연결을 책임질 MyApplication (Application을 상속받은 클래스)와 DDP에서 subscription 처리를 해줄 LoginDDPState(DDPStateSingleton을 상속받은 클래스)이다. 물론 이름은 임의로 정했다. 먼저 MyApplication.java 를 보자 package com.appsoulute.meteo

내가 underscore라이브러리를 별로 선호하지 않는 이유.

node.js 콘솔을 연다 (function() { return 10; })() --> 10 _ --> 10 (응????????) REPL에서 function의 반환값이 _에 저장됨. 그래서 _를 조사하면 10이 나옴. golang에선 _를 blank identifier로 사용. sum := 0 for _, value := range array {     sum += value } 이런 식으로. 논란의 여지는 있지만 단지 길이가 길어서 _를 함수명으로 쓰는 류들에 대해서 별로 좋아하지 않음. 마찬가지 이유로 $를 쓰는 jQuery도 그다지. 결론은 coffeescript 쓰세요. 두번 쓰세요. for in(of) when은 무적입니다. #하지만 둘 다 같은 사람이 만들었음;