RSS

React Native에서 데이터 관리하기

이번에 작은 RN 프로젝트를 하면서, 모델에 해당되는 데이터를 어떻게 보관해야 할 지 고민하였습니다. 요구사항은 다음과 같습니다.

  1. 1M가 넘는 JSON파일을 초기에 로드한 다음
  2. 특정 key의 value를 키워드 검색하여 매칭되는 리스트를 보여주는 기능입니다.
  3. 해당 JSON 데이터는 중간에 변하지 않고 앱 구동될 때 메모리에 올려놓고 쓰면 됩니다.

저는 먼저 react-native-local-mongodb 라는 라이브러리를 사용했습니다. NeDB의 react-native 용 port인데요. 꽤 쓸만한 속도가 나오네요.

그런데, 이렇게 data source를 구성하고 쿼리하기 위해서 이 라이브러리를 어디에 생성할 것인가 고민이 되었습니다. 이 데이터는 특정 뷰에서만 쓰는 건 아니고 다양한 뷰에서 접근 가능해야 합니다. 처음에는 Redux로 작업해야할 것으로 생각하고 공부해봤는데 이해하고 적용하기가 쉽지 않더라구요. 그래서 나름 대안으로 찾은게 singleton 객체를 만들어서 앱 실행시간동안 계속 메모리에 띄워놓고 쓰자는 거였어요.

자바스크립트에서 Singleton 만드는 건 아주 간단하게 구현했습니다. 그리고 여러 component에서 이 클래스를 접근해서 데이터를 읽어오는 게 가능했습니다.

 

 

 
댓글 남기기

게시자: 켬 2017년 6월 12일 in Uncategorized

 

Code Nine, 크리스마스 공연

23일 저녁에 마다가스카르에서 일하고 있었는데, 갑자기 코드나인(Code Nine)의 jazz 공연이 있다고 해서 자연스럽게 관객이 되어버렸네요. 😉

몇 곡을 vlinkr로 찍어서 공유해봤는데, 꽤 반응이 괜찮습니다.

다른 영상에 비해 높은 다운로드 수를 기록한 공연실황~!

다른 영상에 비해 높은 다운로드 수를 기록한 공연실황~!

http://vlin.kr/Aln57Q – 뉴욕 뉴욕 뉴욕

http://vlin.kr/s2k26w – 유지원아나운서의 The Christmas song

http://vlin.kr/04QZsA – 크리스마스 메들리송

즉석에서 찍고 바로 공유할 수 있는 vlinkr 괜찮은 앱인데 뭐라 설명할 길이 없군요. ^^;;

 
댓글 남기기

게시자: 켬 2014년 12월 29일 in Uncategorized

 

애플따라 우리도 셧다운!

애플사에 콘텐츠를 올리려면 구글 플레이에 비해 까다로운 리뷰 과정을 거치게 됩니다. 보통 일이주일이 소요되는데, Waiting for Review 상태에서 In Review로 넘어가는데도 일주일 씩이나 걸리는 걸 보면, 리뷰 대기열이 엄청 긴걸 예상해볼 수 있겠죠? 시간에 늘 쫓기는 스타트업은 이 리뷰 시간도 느긋하게 기다리지 못합니다. 조급하게 또 다른 업데이트를 계속 진행해가는 것이죠. 그래서 이렇게 사람이 하는 ‘긴 리뷰’가 원망스러울 때가 많아요.

그런데 이렇게 사람들이 리뷰하다보니 일년에 한 번, 크리스마스 시즌에 일주일 정도 문을 닫습니다. 교대해서 리뷰하거나 그러지 않고 사이트를 닫고 휴가 가버립니다. 개미처럼 일하는 한국 문화에서는 여간해서는 이해되지 않는 정책이지요. 올해도 이 휴가에 대해서 알고 있었기에 우리 회사의 첫 앱을 올리기 위해서 12월 초부터 일정을 맞추려 밤낮없이 개발했고 리뷰를 요청하고 기다렸죠. 중간에 한번 reject 된 후 바로 올려서 급행으로 처리를 요청하고 애타게 기다려 드디어 앱이 등록되었습니다.

일정 맞추느라 달렸는데 앱스토어에 올리고 나니 갑자기 맥이 탁 풀어지더군요. 그래서 애플 iTunes Connect 셧다운 기간동안 우리도 쉬기로하고 푸욱 쉬었습니다. 일주일간 방에 콕 쳐박혀 있었더니 와이프가 힘들어하네요. 애들도 방학했는데 어서 회사 가라네요.

코딩을 일주일 쉬었더니 그세 머리와 손이 굳어가는 거 같아요. 🙂

p.s. 제가 만든 앱을 다운받아 보시려면, US계정으로 itunes에 접속해서 pixbee – cinematic cam 을 다운 받아 보세요. 무료입니다.

 
댓글 남기기

게시자: 켬 2014년 12월 29일 in ETC

 

태그: , , ,

근황

블로그 쉰지가 좀 오래 되었네요. 아무렇지 않게 기다려준 wordpress가 고마울 지경입니다. 크리스마스 시즌이라 하지만 캐럴도 없고 아이들의 선물에 대한 기대감도 예전같지 않은 거 같습니다.

지난 5월에 Seerslab Inc.에 co-founder로 합류하고 위치기반 문서관리 서비스 DocBasket를 prototyping했습니다. 만들고 나서 어떻게 활용해야 할 지 모르는 좀 아쉬운 프로젝트에요. 지금 다시 기획하고 안드로이드 버전도 만들고자 하는데 서비스가 되려면 서비스 타겟 대상과 제공하려는 가치가 분명이 정의되어야 하는데 그런 것이 모호한 상태에서는 시간과 노력의 낭비를 가져오는 것 같습니다. 그렇게 애매모호한 프로젝트를 하느라 5월 중순~7월말 약 2.5개월을 고생하며 보냈지만 결국 제대로 된 서비스는 오픈하지 못하고 다음 단계 개발을 기다리는 입장이 되었어요.

8월 한 달동안 명동에 임시 사무실을 정리하고 한양대 창업보육센터로 이사하고, 새 제품 클라우드 카메라 pixbee의 프로덕트 비전을 공유하고, 설계하는 시간을 보냈는데 이때  팀내에 토론이 활발했던 시간이었어요. 새로운 인턴직원 summer도 들어와서 안그래도 더운 여름이 더욱 뜨거웠던 것 같네요. ^^; 기획을 8월 중에 마무리하고 실리콘벨리에서 개발을 마친다는 목표로 열심히 달렸던 게 이젠 추억이 되었네요.

image

실리콘벨리에서 아파트를 빌려 사무실 겸 숙소로 사용했는데 캘리포니아의 따뜻한 날씨와 깨끗한 공기가 비싼 임대료에 포함된 것 같아요.

실리콘벨리, 산호세에서의 3개월은 먹고 자고 놀고 일하는 데 집중할 수 있는 시간이었어요. 자는 시간 외에는 거의 일을 했고 일하다 심심하면 수영하고 또 일하고 밥먹고 그러면서 카메라 앱은 만들어졌습니다. 함께 간 JC님이 필터/이펙트 등 엔진부를 만들고 저는 UI를 만들었어요. 석 달 중에 몇 주를 투입해서 재미있는 프로젝트를 했습니다. vlinkr란 프로젝트인데 이 앱으로 영상이나 사진을 찍은 다음 링크 버튼을 누르면 서버에 올려주고 링크를 생성해줘요. 앱스토어에 올라가 있으니 한번 다운 받아서 사용해보세요.

vlinker screen shot

vlinkr의 링크 관리 페이지. 내가 만든 링크를 지우거나 암호를 걸 수 있는 기능

vlinkr 만들고 마케팅을 전혀 하지 않았더니 사용자 반응은 제로였습니다. 개발자들만 쓰는 서비스. ^^

그렇게 잠깐 vlinkr쪽으로 외도했지만 다시 pixbee카메라 앱 개발에 최선을 다했습니다. 그리고 11월 말에 귀국한 미진한 부분을 더 보안해서 앱스토어에 올려놓고 승인을 기다리고 있어요. pixbee에는 필터/이펙트/스티커 기능이 있는데 이걸 쓰면 재미있는 사진/영상 찍기가 가능해져요. 앱 사용자들이 재미있는 영상을 만들어서 친구들과 나눌 수 있는 기능이 현재 형상이에요. iOS뿐이지만 조만간 안드로이드도 나오겠죠.

반 년 동안 서비스를 세 개나 만들었네요. 앞서 만든 두 개 서비스는 아무에게도 알려지지 않은 서비스지만 마지막 pixbee는 많은 사람들의 사랑을 받는 앱이 될 것이라 기대됩니다. 카메라 앱은 누구나 환영하는 편이니깐 설치는 해보겠죠. 유용하면 계속 쓸거구요.

Seerslab에 있으면서 iOS UI만들고 rails로 서비스만드는 기술은 늘어가고요. 스타트업이다 보니 생존 욕구가 치열해 너무 많이 먹어서인지 몸무게도 늘어갑니다. ^^

image-2

산호세에서 가장 많이 먹었던 베트남 음식

크리스마스 인사로 마치려 합니다.

Merry Christmas!

 
댓글 2개

게시자: 켬 2014년 12월 19일 in 일상

 

태그: , ,

맥에서 ntfs 사용하기

파일 용량이 늘어나다보니 파일하나가 4기가가 넘어가고,  usb를 통해서 파일을 공유하려면 ntfs를 사용할 수 밖에 없게 되었습니다. 전에는 맥유저들이 MacFUSE와 ntfs-3g 조합으로 무리없이 사용했는데 어느 시점 부터는 업데이트를 중단한 것으로 보입니다.

그래서 대안이 뭐가 있는지 찾아보니, OSX FUSEntfs-free 조합이 잘 동작하네요.

 
댓글 남기기

게시자: 켬 2014년 8월 3일 in Uncategorized

 

현충일

현충일! 조국을 위해서 목숨을 바친 선조들의 결정에 감사하며,오늘 주어진 자유를 감사하며 제 일을 하겠습니다.

자기 목숨보다 다른 이를 위해서 내어 주는 것만큼 더 큰 사랑이 없다고 성경말씀에서도 가르쳐주고 있습니다. 

크고 작은 희생의 순간에 저는 그렇게 하지 못했습니다. 그래서 오늘이 더욱 부끄럽습니다.

이웃이 고통받을 때 도와줄 수 있는 그런 삶을 살겠습니다.

최피디

 
댓글 남기기

게시자: 켬 2014년 6월 6일 in Uncategorized

 

서울불편신고 앱

주말에 가족들과 동네 놀이터에 갔다가 시설물이 훼손되어 애들이 놀다 다치겠더군요. 불현듯 서울시에서 이런 때 쓰라고 만든 앱이 있다고 들은게 생각나서 앱스토어 열고 서울시 안전 이렇게 검색했더니 다산콜센터 앱만 뜨는 게 아닌가요? 그래서 그 신고기능 거기 포함되어 있을까싶어 다산콜센터 앱을 내려받았지요.

20140603-214509-78309126.jpg
아니나 다를까 불편신고 라는 앱이 딱 있었고 이를 내려받아서 켜봤습니다. 서울시에서 만든 앱을 처음 써보는 거라 약간 기대감도 있었구요. 짜잔! 첫 화면은 이랬습니다.

20140604-075110-28270710.jpg
다소 실망스러운 화면 설계지만 공공부문 앱에 너무 많은 걸 바란다며 스스로 달래며 사용해보았어요. 이름과 전화번호를 한번 입력해 두면 앱에 계속 저장되구요. 일종의 로그인인 셈이죠. 개인정보 입력이 끝나면 이제 신고를 해봅니다. 두 단계로 신고가 이뤄지는데요. 먼저 아래 스샷처럼 위치를 잡고 사진과 설명을 등록하고 신고를 마치면 됩니다.

20140604-083544-30944026.jpg20140604-083544-30944173.jpg  

신고되면 등록했던 휴대폰으로 문자 알림이 오며 이후 진행상황도 문자로 알려줍니다. 일요일에 신고했고 월요일에 관련부서 담당자에게 전화로 설명을 듣고 문자로 처리 현황도 공유되었습니다.

20140604-084346-31426532.jpg
아쉬운 점은 앱이 좀 더 완성도가 높으면 좋겠어요. 신고 등록이 완료되고 난 다음 완료 메시지가 없어 ‘어라 다시 등록해야하나?’ 고민하게 만들어서 불편하고 위치 설정을 위해 지도를 움직일 때마다 주소를 매번 받아오느라 시간이 1-2초 정도 걸리는데 지도상에서 위치를 다 잡은 다음에 주소를 가져오는 게 더 좋을 것 같습니다. 처음으로 서울시에서 만든 앱을 써 봤는데요. 제 점수는 100점 만점에 80점 정도 드리고 싶군요. 앱의 UI/UX를 고치면 더 높은 점수도 가능할 것입니다. ^^

최피디

 
댓글 남기기

게시자: 켬 2014년 6월 4일 in Uncategorized

 

세월호 참사 진상 규명을 위한 서명

예배 마치고 나오는데 세월호 진상규명 서명을 진행하고 있어 동참했습니다. 많이 늦은 감이 있지만 교회의 사회적 책임에 관심이 높아지고 있다는 증거로 보입니다.

20140601-125940-46780770.jpg

약한 사람들 편에 섰던 예수님의 행적을 본받아 그리 살아야 할 것입니다.

 
댓글 남기기

게시자: 켬 2014년 6월 1일 in Uncategorized

 
갤러리

Surface Pro 3: Microsoft finally makes a killer tablet — and it can replace your laptop (review)

Surface Pro 3: Microsoft finally makes a killer tablet — and it can replace your laptop (review)

Surface Pro 3! 끌리는 제품.

 
댓글 남기기

게시자: 켬 2014년 5월 30일 in Uncategorized

 

무료 https/ssl인증서 startssl 소개

최근에 kt를 사직하고, 작은 스타트업에 합류해서,  웹 서비스를 하나 개발하고 있습니다. 작은 회사다 보니 모든 것을 개발자가 해야하는 특권을 누릴 수 있어 좋습니다. ^^

지난 주에는 ssl인증서를 구매해야 하는데, railscasts에서 소개해준 무료 ssl인증서를 제공하는 startssl를 이용해봤습니다. 후기를 적습니다.

요약:

  1. 무료 ssl 구매 방법 소개
  2. 약 2일 정도 시간이 걸렸음.

startssl.com 은 이스라엘 회사로 웹사이트 인증에 많이 쓰이는 ssl인증서 뿐만 아니라 이메일 보안을 위한 인증서도 발급하는 인증으로 먹고 사는 회사입니다.

startssl.com 홈페이지

startssl.com 홈페이지

 

보통 http로 접속해서 인터넷 사이트를 이용하는데, 인터넷의 모든 정보는 저 멀리 어딘가에 떨어져 있는 웹서버를 통해서 우리 브라우저까지 전해지는데요. 이 데이터가 평문으로 전송됩니다. 이말은 누군가 가로챌 경우에 그 내용이 무엇인지 다 알 수 있다는 것입니다. 보안으로 취약한 것이죠. 특히나 우리가 회원 인증을 위해서 암호를 입력하는데 ******* 이런 식으로 브라우저에 표시되지만 네트워크로 전송될 때는 평문으로 누가 보면 암호를 알아 낼 수 있게 됩니다. 그래서 https 라는 보안 프로토콜을 사용하는 데 이 때 ssl 인증서가 필요합니다.

SSL에 대한 소개 영상 (한글)

생활코딩에서 설명하는 SSL과 https

위 영상을 보면 이해가 될 것 입니다만, 요약하면, 인증서는 공인인증서 같이 이 인증서의 주인이 누구다란 것으로 인증해주고, 웹서버 주인인 서비스 공급자가 자기가 보내는 웹사이트 정보를 암호화 시켜서 보내면, 브라우저에서는 이 웹사이트 주인의 인증서를 인증기관에 조회해서 그 사람의 공개키를 가지고 주인이 암호화한 것을 복호화 시켜 읽게 됩니다.

그런데, 이 인증서를 발급해주고 누군가 이 사이트 주인이 확실하냐라고 물었을 때, ‘그렇다 혹은 아니다’ 이야기 해줄 수 있는 인증기관이 필요한데, ssl인증 기관이 무료로 해주진 않고 소정을 수수료를 받고 1년간 인증해주는 식으로 운영되고 있습니다. 공인인증서 갱신시 돈을 내고 하는 인증서와 같습니다.

그런데 가격이 정해진 것이 아니고 업체마다 다양합니다. 약 100불 정도에 형성되어 있는데, 무료로 제공해주는 startssl.com 같은 독특한 회사도 있습니다.

싼게 비지떡 아니냐하는 반신반의로 시작했고, 이틀에 걸쳐서 인증을 받게 됩니다. 나쁘지 않습니다. 무료 ssl은 StartSSL Free 상품입니다.

철차는 다음과 같습니다.

  1. startssl.com 에 접속해서 내 이메일을 인증 받는다. (이메일 등록하면 메일로 해시키가 전송되고 그럴로 인증함)
  2. 인증하는 과정에서 내 브라우저에 인증서가 설치되고 이것으로 이후 로그인을 하게 됨. (id/pw방식이 아님)
  3. 로그인 후에, 내가 ssl인증을 받고자 하는 domain name을 내가 소유하고 있는지 확인하는 절차를 진행함. domain name owner에게 메일로 해시키를 보내고 그걸 받아서 입력하면 인증됨.
  4. 인증된 domain name을 선택하고 시키는 대로 진행하면 개인키를 생성하고 그에 맞는 인증서를 생성해주는데, 이 때 서브 도메인을 하나 정할 수 있는데, 기본적으로 1차 도메인 즉, example.com 은 ssl인증이 되기 때문에, 2차(서브) 도메인으로 http://www.example.com 을 추가해주거나 api.example.com 중에 하나를 선택하면 될 것이다. 요즘은 웹사이트와 오픈API도 ssl로 서비스하는 경우가 많으므로 웹사이트는 example.com 으로 api서비스는 api.example.com 으로 제공하면 괜찮을 것 같다.

이 방식을 진행할 때, 한번에 쭈욱되는 것은 아닙니다. 이메인 인증하거나 도메인 인증을 할 때에 6시간 정도씩 대기가 필요한 경우가 있으니 적용을 위해서 이틀 정도 시간을 두고 진행하세요.

하나 더 관심이 있을 것 같은데요. 2차 도메인을 여러개 쓸 수 있도록 허용해주는 *.example.com (wild cards) ssl 인증서를 받으려면 StartSSL verified 를 구입하세요. 60불 정도 합니다.

Happy Coding 😉

 

 

 
댓글 3개

게시자: 켬 2014년 5월 28일 in 클라우드, OpenAPI, Uncategorized, web server

 

태그: , , ,

 
워드프레스닷컴으로 이처럼 사이트 디자인
시작하기