기본 콘텐츠로 건너뛰기

2월, 2017의 게시물 표시

Grinder를 사용한 Meteor load testing

https://www.youtube.com/watch?v=tCPBGVI3PdA
Adrian Lanning의 영상을 전에 본적이 있는데 기회가 있어 해보기로 함.

https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein 설치는
curl https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein > /usr/local/bin/lein
chmod 755 /usr/local/bin/lein 대략 이런 식으로 하면 된다.
lein 을 한번 실행하고 https://github.com/alanning/meteor-load-test 를 받았다.
lein deps 를 실행해서 의존성 라이브러리들을 받아놓자.

https://github.com/alanning/meteor-load-test 에서 시키는 대로 해보자.

로컬 Meteor Application을 띄우고
bin/grinder agent start 로 에이전트 먼저 시작 start 뒤에 URL을 적어도 된다고 한다.
tail -f log/agent_1.log 로그 파일도 모니터 하고
bin/grinder console start grinder 콘솔을 실행하자.
clojure로 만든 되게 불편해 보이는 툴이 뜬다.
그냥 의전용 스샷이 아니니 잘 봐둬야...
script탭을 선택하고 grinder 경로 아래에 working.properties 를 열어보자. OS X 유저들은 cmd 키가 안먹는다고 당황하지 말자. ctrl+c, ctrl+v, ctrl+a 등등 ctrl키를 이용.
grinder.script = meteor.clj
grinder.targetUrl = http://localhost:3000/
가 보인다. 실제 grinder가 구동하는 스크립트는 clj파일이다. ;;
;; Load-testing Meteor apps with The Grinder
;;
(ns meteor-load…

Meteor cordova app에서 splash 시간을 지연하고자 할때

최근 framework7(https://framework7.io/)을 비롯해 UI Framework들이 기존의 하이브리드 웹앱의 한계를 극복하고자 하는 움직임도 있고 cordova 버전도 올라갔고(WKWebview + Crosswalk 지원) 하이브리드 앱 환경이 상당히 개선이 되었다는 반가운 소식을 들어 다시 Meteor를 가지고 하이브리드 앱을 만지고 있다.

Cordova로 앱을 만들다 보면 가장 처음에 직면하는 것은 아무래도 어색한 Splash Screen인데.
https://atmospherejs.com/meteor/launch-screen 를 발견하고 미시적이지만 꽤 프로페셔널한 개선이
어서 소개하고자 한다.

모바일 앱에서 최초 splashScreen은 무의미하고 느린 UI의 일종이라고 생각하지만 subscription등이 오래걸리거나 화면 이미지 로딩등으로 준비가 아직 되지않은 상태를 보여주기 싫다면 의미가 있다고 본다.

가령, 별도로 손을 쓰지 않으면
Splash 노출 -> Splash 소멸 -> 첫화면 (빈목록) -> subscription 끝 -> 첫화면 - 목록 노출 과 같은 단계를 실행할 것이고 빈목록이 보이는 지루한 시간은 사용자에게 완성도가 떨어지는 앱이라는 느낌을 줄 수 있다.
Splash 노출 -> subscription 완료 -> Splash 소멸 -> 첫화면 - 목록 노출 처럼 작동한다면 splash화면을 봐줄만한 이유가 있고 제 역할을 하는 좋은 UI라고 생각한다.
먼저 package를 추가해보자.
meteor add launch-screen namespace 가 없다! 그렇다. 서드파티가 아니고 공식지원이다!

일단 사용은 무척이나 간편한데
var handle = LaunchScreen.hold(); 를 글로벌 scope 에 넣기만 하면 끝.
subscribe를 받아서 subs.ready() 같은 reactive data source를 감시한 뒤 handle.release(); 로 풀어볼까 …