스토리 홈

인터뷰

피드

뉴스

조회수 951

디자이너와 클라이언트를 위한 알쏭달쏭 색깔정리(1)

컬러. 그 오묘한 세계. 디자인을 함에 있어서 클라이언트와 디자이너의 가장 큰 오해를 불러일으키는 묘한 미라클월드가 바로 컬러라고 할 수 있겠습니다. 사실 디자이너들은 답답할 겁니다. 여기에 이 색은 아닌데, 자꾸 그런 색을 써달라고 하니 답답스러울 수도 있습니다. 하지만 신묘한 사실을 알려드리죠.사실 사람마다 색의 강도와 색상을 구별하는 능력은 천차만별입니다. 색을 보는 것도 일정부분 훈련에 의해서 길러질 수 있는 부분이지만, 대부분 색상을 구별하는 원추세포의 발달정도에 따라 달라지는 것이 보통입니다.원추세포에 대해서 잠깐 알아보자면 이러합니다. 원추세포는 꼬깔콘 모양의 시세포로 망막에 위치하고 있습니다. 약 600만개 정도가 있다고 알려져 있으며 0.1룩스 이상의 빛을 감지합니다. 물론 이 감지범위도 사람에 따라 조금씩 다릅니다. 원추세포는 L,M,S원추세포로 나뉘어져 있으며 각각 노란~초록 / 녹색~파랑 / 파랑~보라를 감지합니다. 또한 파장에 따라서도 680mm 이상이 넘어가는 적외선, 380mm 미만의 자외선은 감지할 수 없습니다. 그러나 이 또한 개인차가 굉장히 커서 특이한 경우 자외선을 감지하는 경우도 있습니다.일전에 한 번 논란이 있었던 드레스색깔도 75:25%비율로 서로 다른 색이라고 난리가 났었죠. 이건 너가 병신이고 내가 정상이야..라기보단 서로 민감하게 받아들이는 색상의 차이가 있기 때문입니다. 이 때문에 같은 색이라고 해도 일반인과 디자이너가 보는 색은 매우 다를 수 있습니다. 모니터와 미디어기기의 차이도 물론 엄청나죠.하지만, 이러한 생물학적인 차이가 아닌 전혀 엉뚱한 문제로 고전하는 경우가 더 많아요. 그건 바로........'뭔 말인지 모르겠는 색깔표현' 때문이죠. 너무 찐하지 않은 검정색이랄지...강렬하지 않은 빨간색이랄지... 이런 우스개소리처럼 돌아다니는 난제들을 봉착할 때면 도대체 무슨 색을 어떻게 쓰라는 건지 답답할 때가 있을 겁니다. 클라이언트도 답답합니다. 난, 최대한 알아듣기 쉽게 설명했다고 생각했는데 자꾸 말도 안되다고 하니 가슴을 치고 인절미가 명치에 메이겠죠.그러니 오늘 이 시간엔 이상한 표현말고, 더 신개념의 표현을 활용해서 서로의 컬러에 대한 오해를 풀어보고자 합니다.물론, 반은 웃자고 하는 겁니다. 너무 진지하게 받아들이진 마세요. 다만, 실제로 이게 그 말인 경우가 꽤 있었습니다.ㅋㅋ....1. 장범준분홍 = 파스텔분홍좋아요, 희끄무레한 분홍색입니다. 흔히 파스텔...이라고 하면 희끄무레를 얘기합니다. 흐리흐리하고 허여멀건 것이 특징이죠. 화이트톤이 많이 섞여들어가 있습니다.2. 소세지분홍발그레한 색..이라고 하면 이런겁니다. 볼터치 느낌이죠. 저기, 디자이너님 볼터치할 때 분홍색있잖아요. 라는 표현이 더 어울릴 것 같습니다. 분홍소세지의 분홍이기도 합니다. 옛날도시락 소세지 분홍색으로 해주세요. 라고 하면 거의 정확합니다.3. 진한분홍색보통 여기까지도 분홍색이라고 합니다. 분홍분홍인데 조금 진하죠. 이걸 빨간색이라고 하지 않습니다. 크리미한 분홍색입니다. 플랫컬러에도 자주 쓰이지만 플랫컬러로 쓰기엔 좀 색이 약한 감이 있어서 그냥 진한 분홍이라고 하겠습니다.4. 예쁜빨간색 / 너무 강하지 않은 빨간색그 왜 예쁜 빨간색있잖아요. 하면 이 색입니다. 강하지 않은 빨간색의 정체가 바로 이것이죠. 코드까지 적으려고 했으나 너무 귀찮은 관계로 그냥 스포이드를 찍으시길 바랍니다. 예쁜 빨강은 그러니까..클라이언트님이 어디서 많이 봤는데 '플랫컬러' 라는 말을 잘 모르니 하는 말입니다. 하지만 그 분들이 그 용어까지 알 필욘없죠. 그냥 예쁜 빨강하면 이 색이다..하고 찰떡같이 알아먹으면 됩니다.5. 빨간색빨간색입니다. 거의 원색에 가깝습니다. 실제 RGB코드상에선 아직 조금 다른 색이 섞이긴 했지만, 어차피 다 그냥 빨강일뿐입니다. 너무 강해요...란 소리가 나올 수도 있지만 연령대가 올라갈수록 이 색을 좋아합니다. 나이가 점점 들어갈수록 붉은색계열을 더 선호하는 경향이 있다는 연구가 있었습니다. 원추세포의 노화와도 관계가 있죠. 누굴 탓할 일이 아닙니다.6. 새빨간이제부터 세종대왕님의 놀라우신 역사와 반만년 한민족의 얼과 정신이 살아숨쉬는 찰진 표현들이 등장하기 시작합니다. 샛빨강입니다. 원색 레드를 넘어섰습니다. 원색코드를 넘는 순간부터 '새...' 라는 표현을 씁니다. '새빨강, 새파란, 샛노란...'7. 찐한 빨강찐한빨강, 막 장미색 이런거 써달라고 하면 바로 이 색입니다. 블랙이 조금씩 섞여들어가는 겁니다.8. 불그죽죽 / 피색 / 빠아아알간! 색다양한 표현으로 쓰이지만 어휘력이 풍부하신 분은 불그죽죽이란 말을 쓰고, 잔혹한 분은 피색, 경쾌한 분은 억양을 담아서 "빠아아알간!!! 색" 이라고 하는 것이 바로 이 색입니다.9. 상아색 / 살색살색은 인종차별적인 단어이니 상아색을 쓰잔 얘기가 많았습니다. 사실 상아색은 좀 더 밝긴하지만, 주황색계열에서 화이트가 많이 섞인 파스텔톤의 주황색이 이것입니다. 주로 배경이나 스퀘어로 많이 깔리죠.10. 파스텔톤 주황색흔히 파스텔파스텔하는 것들은 주로 이런 크리미한 색들입니다. 그러니 파스텔이라고 해서 진짜 파스텔속 색상을 찾으면 안됩니다. 흔히 일반인들이 파스텔..이라고 하는 것들은 '크리미'와 비슷한 의미입니다.11. 연한주황색'연하다.....' 표현과 파스텔은 좀 다릅니다. 연한 것은 플랫과 파스텔의 사이라고 보시면 됩니다. 딱 이정도가 연하다..라는 느낌과 흡사합니다. 화이트가 섞이긴 했지만 아직 플랫컬러스럽진 않은...12. 이쁜주황색흔히 '이쁜....' 이라는 표현이 붙으면 거의 다 플랫컬러입니다. 그 중 위 색상은 약간 채도가 높네요. 11번의 연함과 이 색의 중간사이에서 쓰면 주로 '이쁘다'라고 얘기하는 그 색일 가능성이 높습니다.13. 귤네 귤입니다. 복잡하게 얘기하지말고 그냥 귤이라고 합시다. 탱글하고 맛있는 귤.14. 연한 갈색여기서부턴 갈색이 됩니다. 기억해두세요. 귤 다음은 갈색입니다. ㅎㅎ..갈색인데 연한 갈색이면 이런 색을 말합니다. 조금씩 블랙컬러가 섞여들어갑니다.15. 똥/브라운/카스테라 맛있는 부분설마 클라이언트가 똥색이라고 하겠어? 라고 하지만..실제로 하시는 분들도 계셨습니다. 우리는 달팽이가 아니니 담즙색깔대로 일정하고 빛깔고운 황금이들을 낳지만...똥의 색은 사람마다 다를 수 있으니 그냥 브라운이라고 합니다. 또는 카스테라 맛있는 부분 색이라고 해줘도 무관합니다.16. 진정한 브라운애매하다 싶으면 클라이언트에게 물어보세요. '진정한 브라운을 원하세요?' 라고. 끄덕이면 이 색입니다. 브라운은 애시당초가 섞인 색이라서 원색이라고 할 게 없습니다. 그냥 봐도 뭔가 밀가루음식이 좀 탄 느낌이나..크레파스로 나무칠할 때 쓰던 색을 생각하면 진정한 브라운입니다.17. 찐한 갈색진한 아닙니다. '찐한'18. 파스텔노랑유독 노랑에 대한 파스텔톤은 좀 더 연한 편입니다. 그건 위에서도 설명했듯 인간이 노랑색을 받아들이는 원추세포가 잘 발달되어있기도 하고, 채도에 밝기가 높아서 조금만 색이 들어가도 튀어보이는 탓도 있는 것 같습니다.19. 연한노랑/이쁜노랑/병아리연한 노랑은 흔히 이 정도의 색을 얘기합니다. 레몬색이라고도 하는데, 레몬보단 좀 진합니다. 병아리가 적당하겠네요. 제가 엉덩이로 깔아죽인 잔혹하고 끔찍했던 어릴적 그 기억이 자꾸 생각나는 힘겨운 색입니다.20. 이쁜노랑플랫한 컬러 노랑입니다. 앱이나 웹에서 겁내 자주 쓰는 컬러입니다. 그러니 화면으로 보여지는 미디어 제작물을 만드실 때는 왠만하면 이 노랑을 써주면 좋습니다. 크리미하고 이쁜노랑21. 그냥 노랑그냥 노랑.22. 샛노랑샛. 이 들어갔습니다. 샛은 뭐라고 했죠? 그렇습니다 원색 이상의 채도입니다.23. 누리끼리 / 금색또 한 번 한글의 위대함에 오줌을 지렸습니다. 흔히 전날 술먹고 다음 날 아침 소변보면 나오는 색인데..누리끼리. 라는 이름이 있습니다. 조금 고급스럽게 하면 금색입니다.24. 똥2 / 안이쁜노랑제가 뭐 딱히 그런 문제가 있다거나 그런 걸 좋아하는 사람은 아닙니다. 사람들이 유독 이 표현을 은근 쓰니까...;;;;(변명).... 아까 위에도 똥이었는데 이것도 ...그겁니다. 대부분 이런 색을 딱히 사람들이 좋아하지 않으니 그렇게 이름붙이는 게 아닐까합니다. 그래서 좀 헷갈리면 건강한 거요? 아님 묽은거요? 이렇게 물어보시던가..아니면 안이쁜노랑이요? 라고 하면 물어보도록 합시다.25. 누르스름한데 이상한 색그 약간 이상한 색..있잖아요. 누르스름한데..면 이 색입니다. 잘 쓸일은 없을거예요.26. 누르스름하고 이상한 색을 좀만 찐하게..(진한카키)노랑에 검정이 섞여들어가는 색들을 지칭하는 말들이 그닥 많지 않습니다. 사실 많기는 하지만, 일상에서 자주 쓰진 않죠. 왜냐면 그닥 예쁘지 않으니까요. 카키색 정도가 되겠네요. 그 왜...주머니가 옆에 달리고 체인주렁주렁 달고 다니는..예전 그런 카키바지같은...건데 좀 더 진하달까요.27. 아..좀 진한데 브라운보단 연한.. 보통 이것을 지칭할 땐 '아..좀 진한데 브라운보단 연한..;;;;' 이라고 말씀하시면서 머리를 긁적이십니다. 이해합니다. 저도 긁적이게 되네요.27. 파스텔톤 초록색초록도 마찬가지로 색구별이 굉장히 민감한 색중에 하나입니다. 그래서 보통의 파스텔보다 훨씬 연한 색으로 '파스텔'이란 표현을 많이들 씁니다.28. 이쁜연두연두색이란 건 이런걸 말합니다. 파스텔보단 좀 진합니다. 항상 뭔가 일반적인 이름이 있는 색들 사이의 색에 '이상한' 수식어가 붙기 마련입니다. 연두 / 초록 사이에 있는 색들에 먼가 이상한 수식어들이 붙는 것이죠.29. 진한연두진한 연두입니다. 콩색이죠. 하지만 아직까진 초록이 아니니, 진한연두..라는 것은 약간의 형광느낌이 더 있는 편입니다.30. 밝은/복고스러운(이라고 쓰고 그냥 형광,촌스런 초록색)이제부터 초록색입니다. 근데 좀 촌시럽다..라는 표현을 씁니다. 물론 시안에 들어갈 것이니 대놓고 촌스럽다고 하기보단 그냥 형광느낌이 좀 있는. 밝은 초록!...31. 그냥초록네 이것이 초록색입니다. 하도..계속 색을 보다보니 뭐가 진하고 연한지 점점 헷갈립니다...ㅋ 약간 톤이 안정된 느낌입니다. 원색을 써주세요!!!! 라고 해도 형광으로 해달란 얘긴 아니므로, 조금 블랙톤으로 채도를 안정시키도록 합시다.32. 진한초록 / 풀색놀라운 걸 알려드릴까요. 풀은 초록색이 아닙니다. 31번은 잔디색이고 32번은 풀색입니다. 뭐가 다르냐구요? 다릅니다. 골프장에 보면 그린이 있고, 러프가 있잖습니까? 32번색은 좀 더 풀이 길어서 음영이 진 느낌이랄까요....(겁나 섬세함)33. 어두운 초록재밌는 사실. 노랗다. 파랗다. 빨갛다. 까맣다. 하얗다.. 다 말이 되는데 초랗다..???... 초르스름?...샛초록?.. 뭔가 초록에 수식어를 붙이기는 힘듭니다. 왜 이럴까요? 저도 모릅니다.(개쿨) 저건 어두운 초록입니다.34. 국방색여성분들도 어렵지 않게 이해하실 겁니다. 하도 여기저기 많이 거리에 보일테니까요. 이건 국방색이라고 합니다. 나라를 지키는 색이라니 얼마나 대단합니까. 물론 진정한 국방색은 좀 더 어둡긴합니다만, 스마트폰으로 많이들 보시니까 아마 한 톤 더 어둡게 나올 것을 생각해서 조금 밝게 맞췄습니다. 디자이너가 '아 국방색으로 해드려요?' 라고 하면 클라이언트님께서 흠칫 놀라시며 과거의 군생활을 떠올립니다. 그리곤 한 떨기 눈물을 떨굽니다. 이내 조용히 왼쪽 윗주머니의 손수건을 꺼내 눈가를 훔치며 말없이 고개를 끄덕이실 겁니다.스크롤압박이 너무 심해서..나머 30가지 색은 2부에서 계속 다루도록 하겠습니다!!2부에 계속. 빠잉
조회수 1559

첫 '단추' 제대로 잠그기.

창업가도 발산형/수렴형으로 나뉠까?창업가는 보통 발산형이다.  아이디어를 구체화시켜나가는 과정은 힘들다. 불가능해보이는 난관을 극복하려면 끊임없이 새로운 아이디어, 전략을 생각해내야 한다. 티를 많이 안 내려 하지만 나도 발산형이다. 자고 일어나면, 샤워하면서, 지하철에서 멍때리면서 새로운 아이디어들이 불쑥불쑥 떠오른다.하지만, 위대한 창업가에 의해서 만들어진 위대한 회사는 발산적 사고에 의해서 성공하지 않았다. 모두 하나의 완벽한 product를 기반으로 위대한 비즈니스를 일궜다. Warby parker, Facebook, Instagram, Google 등등... 완벽한 첫번째 product가 없었다면, 과연 우리가 아는 거대한 기업이 되었을까?하나를 제대로 못하면, 아무것도 할 수 없다. - 래리 페이지 -발산형 사업가는 하고 싶은 게 너무 많다. 이것도 만들고, 저것도 만들어서 위대한 회사가 10년 걸려서 만든 원대한 왕국을 시작부터 구축하는 꿈을 꾼다. 하지만 고객이 원하는 것은 그들에게 필요한 단 하나의 제품이다. 고객은 창업자가 뭘 원하고, 그들의 비전이 무엇인지에 관심이 없다. 창업자는 먼저 고객이 원하는 바에 집중해야 한다. 고객을 위한 회사가 되어야지, 창업자를 위한 회사가 되서는 안 된다. 자칫, 모든 것을 팔려고 하다가 아무것도 팔지 못하게 된다.하나의 첫 번째 product를  완벽하게 만들자.경쟁 제품보다 10%가 아닌 10x로 압도하는 제품을 만들자.그래야, 다음 제품을 만들 수 있는 기회가 주어진다.'삼분의 일' 이야기'홈클' 서비스를 종료하고, 여러 프로젝트에 참여 하면서 우연히 매트리스 업계에 발을 들이게 되었다. 그때부터 완벽한 메모리폼 매트리스를 만들때까지 꼬박 1년이 가까운 시간이 걸렸다. 그리고 아직도 더 완벽한 매트리스를 만들기 위해 연구를 하고 있다.나는 누웠을때 몸에 생기는 압점을 모두 없애서, 마치 물위에 떠있는 무중력 기분을 느낄 수 있는 매트리스를 만들고 싶었다. 이를 위해서 우리나라 최고의 공장들을 연결하고, 천번이 넘는 레이어 조합 테스트를 해서 마침내 최종 제품에 가까운 매트리스를 개발할 수 있었다.해보고 싶은게 너무 너무 많았지만, 모든 에너지를 첫번째 제품인 매트리스를 완벽하게 만드는데 집중했다. 더 나은 제품을 만들기 위해 집착했고, 제품은 매번 조금씩 개선되었다.  그리고 11번째 제품을 베타테스팅 했을때, 그토록 원하던 고객 반응이 오기 시작했다.첫번째 완벽한 제품 없이는 두번째 제품은 존재할 수 없다. '삼분의 일'은 두번째 제품을 만드는 날을 기대하면서 오늘도 더 완벽한 첫번째 매트리스를 만들기 위해서 고객을 인터뷰하고 제품을 개선해 나가고 있다.요약마케팅 전략을 짜고, 상품군을 확대하고, 매출을 폭발시키는건 나중에 얼마든지 할 수 있다.사실 첫번째 Product가 완벽하면 위의 목표 달성은 매우 쉬워진다.먼저 첫번째 단추를 제대로 잠그자.By 전주훈#삼분의일 #매트리스 #창업가 #창업자 #스타트업 #마인드셋 #인사이트 #조언
조회수 1156

린더를 만들고 있는 이유 1.0

여러 인공지능 서비스가 우후죽순 생겨나고 있습니다. 그리고 각각의 '인공지능 비서'들이 내세우는 주요 기능 중 하나는 바로 일정 관리죠. 그럴만도 한것이 일정관리야 말로 인간이 가장 큰 보조를 받을 수 있는 영역 중 하나이기 때문이라고 할 수 있겠습니다.개인 비서가 없어봐서 모르겠지만 영화나 드라마를 보면 주로 훤칠하게 잘생긴, 또는 아름다운 비서가 회장님이 묻기도 전에 그의 다음 일정을 알려줍니다. 내가 언제, 어디서, 무엇을 해야 하는지 끊임 없이 기록하고 상기 시켜주는 사람이 옆에 있다면 나의 삶도 여러모로 편해질수 있지 않을까요.이러한 측면에서 볼 때 다양한 인공지능 서비스가 나오고 있다는 점은 환영 할 일이지만, 그 서비스들이 실질적으로 사람들의 삶에 도움이 되는 기능들을 갖추고 있느냐는 완전히 다른 차원의 질문이 될 수 있습니다. 이름만 인공지능일 뿐이지 할줄 아는 것이라고는 내가 입력한 일정을 당일 아침에 읊어주는 수준이라면, 그것을 '비서'라고 부르기에는 부족할지 모릅니다.대부분의 사람들이 일정을 놓치게 되는 이유는 주로 해당 일정을 기록해두지 않기 때문입니다. 바쁜 생활 속에서 모든 일을 일일히 기록하기는 매우 어렵고, 나중에 해야지라는 생각으로 묻혀두었던 일정들은 어느새 지나있기 마련이죠.진정으로 똑부러지는 일정 도우미라면 내가 일정을 직접 입력하기도 전에 내가 선호할 만한 일정들을 먼저 정리하여 제시할 수 있어야 합니다. 우리는 여러개의 일정 중 가장 끌리는 것을 선택하기만 하면 되는것이죠. 그렇다면 위와 같이 사용자가 일정을 입력하기 전 먼저 선택지를 제시하기 위해서는 무엇이 필요할까요?현재 히든트랙팀에서 제공하고 있는 일정구독서비스, 린더( https://linder.kr )는 화장품 세일일정, 학교 학사일정, 프로야구 경기 일정 등 다양한 일정들을 한데 모아 개인의 캘린더로 구독 받을 수 있도록 돕고 있습니다. 현재까지 약 2만명의 사용자가 7천개가 넘는 다양한 일정들을 받아보고 있죠.아직 린더의 데이터는 아이돌 스케줄, 학사일정, 프로야구 경기일정 등에 국한되어 있지만, 이후 공연 티켓팅, 쇼핑몰 세일 등 다양한 분야로 확장해나갈 계획입니다. 기존에 심한 건망증으로 매번 놓쳤던 티켓팅이나 세일 일정이 있다면 린더를 통해 해당 일정을 놓치지 않고 실행에 옮길수 있게 되는것이죠.내가 직접 기록하지 않더라도 내 캘린더의 표시 되어있는 일정을 통해 행사나 이벤트에 참여할 수 있으며 주요 일정들에 대해서는 푸시알림을 통해 일정 시작 전 행사 정보를 파악 할수 있습니다. 락페스티벌을 좋아하시는분이라면 주요 락페스티벌의 티켓팅 및 공연 일정을 받아볼수 있고, 마라톤을 좋아하시는 분이라면 연간 마라톤 일정을 미리 확인 할 수 있게 되는것이죠.현재 린더는 캘린더를 통해 일정을 제공하고 있지만 이는 어디까지나 린더가 정보를 제공하는 여러 채널 중 하나일뿐입니다. 포화 된 앱 시장에서 돌파구를 찾고자 일시적으로 캘린더 플랫폼을 사용하고 있지만, 저희가 확보하고 있는 일정 데이터는 캘린더 뿐만이 아닌 모바일앱, 챗봇, AI스피커 등 다양한 형태로 제공 될 수 있습니다.캘린더에 표시도 안 한 2학기 수강신청을 10분 전에 내게 먼저 알려줄수 있는 앱이 있다면 멋지지 않을까요. 아침에 일어나자마자 고대하던 신상 구두가 출시 되었음을 알려주는 스피커가있다면 사랑스럽지 않을까요.잊고 있었던 티켓팅, 화장품 세일, 축구 경기, 신상 출시를 알려주는 당신만의 비서를 만들기 위해 저희 팀에서는 지속적으로 서비스를 개선해나가고 있습니다.아직 써보지 못하셨다면 사용해보신후 가감없는 피드백 부탁드리며, 내가 만들어도 이것보다 잘만들겠다 싶으신분이 있으시면 제게 연락주세요 ( [email protected] ). 제가 잘 꼬드겨서 저희팀으로 모셔갈수 있도록 하겠습니다 :)2017년 8월 2일. 목을 다쳐 하루종일 침대에 누워있지만 더 이상 잠은 안오는 어느날 밤.#히든트랙 #챗봇 #기술기업 #개발자 #개발팀 #인사이트 #경험공유
조회수 6150

[SQL 데이터분석] 증감율 구하는 간단한 방법

sql에서는 = 등호가 비교연산자로 사용됩니다.대신 := 이렇게 콜론(:)과 등호(=)를 같이 쓰면 대입연산자로 쓸 수 있어요.select @prev := users.id // @prev 라는 임시변수에 users.id 값을 넣어라. from users가입일자로 사용자수를 구해보면, 아래처럼 가입일로 group_by 를 해서 구하죠.select date(created_at) as '가입일' , count(1) as '가입자수' from users group by 1 order by 1 desc;// 가입일 | 가입자수 // --------------------------- // 2017-08-02 100 // 2017-08-01 50그럼 전일 대비 증감율을 구하려면 어떻게 할까요?select date(created_at) as '가입일' , @prev as '전일 가입자수' , (count(1) - @prev) / @prev as '증감율' , @prev := count(1) as '가입자수' from users group by 1 order by 1 desc;// 가입일 | 전일 가입자수 | 증감율 | 가입자수 // -------------------------------------------------------- // 2017-08-02 50 1.0 100 // 2017-08-01 50 0 50증감율을 계산하는 count(1) / @prev까지는 @prev 에 전일 가입자수가 저장되어 있구요.@prev := count(1) 에서 당일 가입자수로 할당이 됩니다.저는 := 이 연산자를 알기 전엔 self-join 형태로 증감율을 구했는데데이터를 가오는 속도는 := 이 연산자가 훨씬 빠른것 같습니다.다음엔 self-join 으로 증감율을 구하는 법도 한 번 올려볼께요.#티엘엑스 #TLX #개발 #개발팀 #개발자 #꿀팁 #인사이트 #조언
조회수 22383

Next.js 튜토리얼 9편: 배포하기

* 이 글은 Next.js의 공식 튜토리얼을 번역한 글입니다.** 오역 및 오탈자가 있을 수 있습니다. 발견하시면 제보해주세요!목차1편: 시작하기 2편: 페이지 이동 3편: 공유 컴포넌트4편: 동적 페이지5편: 라우트 마스킹6편: 서버 사이드7편: 데이터 가져오기8편: 컴포넌트 스타일링9편: 배포하기 - 현재 글개요아래와 같은 궁금증이 생긴 적이 있나요?어떻게 내가 만든 Next.js 애플리케이션을 배포할 수 있나요?아직 배포에 대해 이야기하지 않았지만 배포하는 것은 꽤 간단하고 직관적입니다.Node.js를 동작할 수 있는 곳이라면 어디든 Next.js 애플리케이션을 배포할 수 있습니다. 매우 간단한 ▲ZEIT now로 배포하는 데에도 불구하고 어떤 잠금 장치도 없습니다.설치이번 장에서는 간단한 Next.js 애플리케이션이 필요합니다. 다음의 샘플 애플리케이션을 다운받아주세요:아래의 명령어로 실행시킬 수 있습니다:이제 http://localhost:3000로 이동하여 애플리케이션에 접근할 수 있습니다.Build와 Start처음으로 프로덕션에 우리의 Next.js 애플리케이션을 빌드해야 합니다. 빌드는 최적화된 프로덕션의 코드 세트를 생산합니다.이를 위해 간단히 다음의 npm 스크립트를 추가하세요:그런 다음 하나의 포트에서 Next.js를 시작해야 합니다. 사이드 렌더링을 수행하고 페이지를 제공합니다. (위의 명령으로 빌드됩니다)이를 위해 다음의 npm 스크립트를 추가하세요:이러면 3000 포트에서 우리의 애플리케이션이 시작됩니다.이제 프로덕션에서 애플리케이션을 동작시키 위해 다음의 명령어를 실행할 수 있습니다:두 개의 인스턴스 실행하기애플리케이션의 인스턴스 두 개를 실행시켜 봅시다. 대부분 앱을 수평으로 확장하기 위해 이 작업을 수행합니다. 처음으로 start npm 스크립트를 다음과 같이 변경해봅시다:만약 Winodws라면 next start -p %PORT%로 스크립트를 변경해야 합니다.이제 애플리케이션을 처음으로 빌드해봅시다.npm run build그러면 터미널에서 다음의 명령어로 실행시켜 봅시다:PORT=8000 npm startPORT=9000 npm startWinodws에서는 다른 명령어를 실행시켜야 합니다. 하나의 옵션은 애플리케이션에 cross-env npm 모듈을 설치하는 것입니다.그런 다음 커맨드 라인에서 cross-env PORT=9000 npm start를 동작시켜 주세요.두 개의 포트 모두에서 애플리케이션에 접근할 수 있나요?- 네. http://localhost:8000와 http://localhost:9000 둘 다 접근할 수 있습니다.- http://localhost:8000에서만 접근 가능합니다.- http://localhost:9000에서만 접근 가능합니다.- 둘 다 접근할 수 없습니다.한 번의 빌드로 많은 인스턴스 실행시키기보다시피 애플리케이션을 한 번 빌드해야 합니다. 그런 다음 원하는만큼의 많은 포트들을 시작할 수 있습니다.▲ZEIT now에 배포하기Next.js 애플리케이션을 빌드하고 시작하는 방법을 배웠습니다. npm 스크립트를 사용하여 모든 것을 수행했습니다. 그래서 원하는 배포 서비스를 사용해서 동작하도록 애플리케이션을 설정할 수 있습니다.하지만 ▲ZEIT now를 사용하면 딱 한 번의 과정만 수행하면 됩니다.다음과 같은 npm 스크립트만 추가해주세요:그런 다음 now를 설치해주세요. 설치 후 다음 명령어를 적용해주세요:now기본적으로 애플리케이션의 루트 디렉터리 안에서 "now" 명령어를 실행합니다.여기에서 애플리케이션을 시작하는 포트로 8000 포트를 지정했지만 ZEIT now에 배포할 때 변경하지 않았습니다.그러면 ZEIT now에 배포할 때 애플리케이션에 접근할 수 있는 포트는 어떤 것일까요?- 8000- 443 (혹은 언급되는 포트가 없음)- URL에 언급한 모든 포트- 에러를 표시한다. "443 포트에서만 시작할 수 있습니다"ZEIT는 항상 443 포트를 사용합니다실제로 8000 포트에서 애플리케이션을 시작해도 now에 배포될 때는 443 포트를 사용해서 접근할 수 있습니다. ("https" 웹사이트의 기본 포트)이것은 ▲ZEIT now의 특징입니다. 원하는 포트에서 애플리케이션을 시작해야 합니다. ▲ZEIT now는 항상 443 포트로 매핑합니다.로컬에서 애플리케이션 빌드하기▲ZEIT now는 npm build 스크립트를 발견하고 빌드 인프라 내부에 빌드합니다.하지만 모든 호스팅 제공자가 이와 같은 것을 가지고 있지는 않습니다.이 경우 로컬에서 다음의 명령어를 사용해서 빌드할 수 있습니다:npm run build그런 다음 .next 디렉터리를 사용하여 애플리케이션을 배포하세요.커스텀 서버를 사용하여 애플리케이션 배포하기우리가 막 배포한 애플리케이션은 커스텀 서버 코드를 사용하지 않았습니다. 하지만 만약 사용한 경우에는 어떻게 배포할 수 있을까요?다음의 브랜치로 체크아웃하세요:커스텀 서버를 사용하여 애플리케이션을 실행하기 위해 애플리케이션에 Express를 추가해주세요:npm install --save express애플리케이션 빌드하기이를 위해 next build를 사용하여 애플리케이션을 배포할 수 있습니다. 다음의 npm 스크립트를 추가해주세요:애플리케이션 시작하기프로덕션 애플리케이션임을 알리기 위해 커스텀 서버 코드를 생성해야 합니다.이를 위해 server.js로부터 이 코드를 살펴봅시다.이 부분을 살펴봅시다:그러면 프로덕션으로 이와 같이 애플리케이션을 시작할 수 있습니다.그래서 "npm start" 스크립트는 다음처럼 변경됩니다:마무리Next.js 애플리케이션을 배포하는 것에 대해 거의 다 배웠습니다.문서에서 Next.js 배포하기에 대해 더 배울 수 있습니다.배포에 대한 질문이 있다면 자유롭게 Slack에서 물어보거나 issue를 제출하세요.#트레바리 #개발자 #안드로이드 #앱개발 #Next.js #백엔드 #인사이트 #경험공유
조회수 3482

개발자, 디자이너, 기획자의 온도차

 아마 가장 많은 분들이 생각하시기에 가장 걱정되는 부분이라고 생각이 듭니다.그래서 저 역시도 이 이야기를 하는 것에 좀 조심스럽습니다. 이야기는 바로 "업무를 대하는 개발자, 기획자, 디자이너 간의   온도차."입니다. (다시 한번 말씀드려요! 제가 사용한 방법이 백프로 모두에게 맞는 말은 아닙니다!!) 스타트업은 큰 기업처럼 디자인팀, 개발팀, 기획팀이 갈려서 서로의 팀장에게 허가를 받고, 기획을 시작하고, 개발을 시작하고, 디자인하는 그런 상하관계의 구조가 아닙니다. 서로서로들 비슷한 경력들과 환경에서 서비스를 제작하는 사람들이 많죠. 특히, 젊은 스타트업 기업들은 대학생들이나 대학원생 등 아직 본격적인 사회생활을 해보지 않은 인원들이 더 많을 것으로 알고 있습니다. 아시다시피, 다들 맞춰진 직무를 기반으로 개발자는 개발자의 생각과 계산에 따라서 일을 진행하고 있고, 기획자는 기한에 맞춰 예상했던 진행대로 일을 진행하고 싶어 하고, 디자이너들은 보다 다은 디자인으로 서비스를 보이려 다양한 자료들을 모으고 분석하여 제작자의 아이디어를 입혀 새로운 콘텐츠를 제작하려 노력합니다.문제는 서로가 서로의 일에 대하여 모른다는 것입니다. 스타트업의 팀원들 간의 커뮤니케이션은 마치 연애와 같아서 서로 이야기해주지 않으면 모를 수밖에 없고, 서로 어떻게 일을 하는지, 얼마나 시간이 걸릴 것이다 등 일정에 대한 공유나, 업무를 하는 절차를 이야기 해주짖 않으면, 원치 않는 감정의 골이 생기기 마련입니다. 이런 문제를 해결하기 위해, 기업은 매일매일 아침시간에 진행하는 Scrum이라든지, Jira, Taskworld, Trello 등 다양한 프로젝트 매니지먼트 툴을 사용하고, 스크럼 마스터나, 다양한 서비스를 제작해 보신 PM(Project Manager), 또는 PO(Product Owner)님들이 각부서의 현황들을 파악하고, 다양한 부서를 총괄하고 관리합니다.그러나, 기본적으로 국내 스타트업 상황은업무자들의 수가 절대적으로 부족하고,젊은 개발자나 디자이너 같은 경우는 생업(또는 학업)과 스타트업을 동시에 하는 인원이 많고,젊은 창업자들과 직원들의 경우, 프로젝트 경험이 없어 이러한 분업구조를  낯설어하고,개발자와 디자이너 역시 자신이 작업하는 프로젝트가 언제쯤 끝날지 가늠할 수 없는 상황이 생기고,적은 인원들이 많은 프로젝트를  진행하느라 예민한 구조가 되어 남을 이해하기 힘든 상황등의 다양한 이유들 때문에 각 직군 간의 갈등 상황이 큰 기업에 대비하여 많이 생기고 있습니다(물론 큰 기업도 문제가 없진 않다고 합니다.).이 전설의 짤을 보신적이 있으신 분들도 많으실듯... (출처: http://9gag.com/) 이러한 갈등 해결 방안은 다음에 더  디테일하게 설명드리도록 하고, 이번 글에서는 간단히 저가 생각하는 발전방향에 대하여  이야기해보도록 하겠습니다. 앞서 말씀드린 것과 같이, 스타트업 팀원들의 관계는 마치 연예와 비슷하다고 생각합니다. 말하지 않으면 모를 수밖에 없는 노릇이고, 말을 해줘도 이해할 수 없는 일들이 수두룩 합니다(그런 이유로 저는, 스타트업에서 근무하시는 분들은 서로의 업무에 대하여 어느 정도의 배경지식을 배우는 게 필요하다고 생각합니다.). 그럼에도 불구하고 우리는 항상 이야기를 해야 해요. 연애를 할 때도 말이 안 통해도 될 때까지 이야기하듯이. 스타트업에서의 업무는 끊임없이 피보팅을 진행하고, 하루하루 떠오르는 처리해야 할 일들이 생깁니다. 그리고, 그러한 변경사항들에 관하여  이야기할 때, 서로가 서로의 말을 이해해 주지 못한다면, 더 큰 갈등 상황들을 야기하기 마련이지요. 그러나, 만약 각 직군의 전문가들이 서로의 업무에 대한 배경이나, 아주 기본적이더라도 기초사항을 알고 있다면, 서로의 업무량에 대한 불만이 아무래도 적을  수밖에 없다고 생각합니다. 제가 스타트업을 진행할 당시를 말씀드리자면, 저는 창업 당시 기획자로서 서비스를 기획하고, 프로젝트를 관리하고, 투자 또는 공모전 등에 쓰일 기획서 등을 제작하는 업무를 주로 하였습니다. 디자인에 관하여는 무엇을 논할 수 있는 실력도 아니고, 개발에 관하여는 더더욱 그렇습니다. 그러므로 기획서를 작성할 때나, 어떤 계획을 할 때 “원하는 시간”을 개발자나 디자이너에게 요청하고, 그러한 요청 사안과 당사자들과의 이야기를 통해 조정하고 계획을 진행하는 것이 주  업무였습니다. 그리고 나름 생각하기에는 "개발이나 디자인을 하나도 모르는 사람이 일의 진행 정도를 스스로 보고 판단하고, 기한을 준다는 것은 올바르지 않다."라고 생각하여 아주 기초적일 수 있지만 웹 공부와 포토샵 일러스트 디자인 등의 디자인과 개발 툴 공부를 꾸준히 하면서 개발과 기획에서 어느 정도  서포트할 수 있는 실력을 기르기 위해 많은 시간을 투자했었습니다. 그리고 이러한 노력 덕분에 서로의 직군과 업무에 대한 고충을 이해할 수 있어서 많은 이점을 가질 수 있었지만, 그럼에도 불구하고, 자주자주 일이 딜레이 되는 상황이 발생하였고, 그러함에 따라서 개발자와 디자이너와 기획자들이 조금씩 소원해지고  섭섭해지는 상황이 발생하였던 것 같습니다. 그래서 하나 더 생각했던 것이, "일을 처음 시작하는 초보들에게도 바로 적용해서 업무에 도입할 수 없는 어려운 프로젝트 매니지먼트 툴이 아닌 서로의 작업현황이나, 상태 정도를 가늠할 수 있는 PM 툴을 만들어 보자." 하는 것이었습니다. 그래서 창업 당시 사용한 아주 간단한 툴이 있는데, 이 프로젝트 메니지 방법은 내일 이미지로 보여드리면서 설명드릴게요. :) 그리고 지금은 Taskworld나 Jira 같은 더 전문적인 툴을 사용하고 있지만, 해당 툴에 대한 전문전 지식이 아직 없는 분들은 엑셀 등으로 서로의 일을 정리해서 공유하는 것도 좋을 것 같네요! 기회가 되면, 요즘은 제가 어떤 식으로 툴을 사용하는지 설명하는 글도 적도록 하겠습니다! 마지막으로 긴 글을 세줄 정리하자면, 1. 개발자, 기획자, 디자이너는 달라요. x나 달라요.... 2. 다르면 잘 들어보고 뭘 하는지 아는 것이 중요하다고 생각합니다. 3. 그리고 서로가 어떤 일을 하고 있는지 현황을 파악할 수 있다면 더 좋겠죠?오늘도 읽어주셔서 감사합니다! 좋은 하루들 되세요:)#코인원 #블록체인 #기술기업 #암호화폐 #스타트업인사이트
조회수 1586

날짜 변환, 과연 그리 간단할까?

안드로이드에서는 입력한 날짜를 변환 및 검증하는 로직을 간단하게 구현하기 위해 SimpleDateFormat 클래스를 종종 활용하게 되는데 이 클래스는 규칙에 관대하다(lenient)는 재미난 특성이 있습니다. java.text.SimpleDateFormat 클래스의 근간이 되는 java.text.DateFormat 클래스의 다음 API 문서를 살펴봅시다.By default, parsing is lenient: If the input is not in the form used by this object’s format method but can still be parsed as a date, then the parse succeeds. Clients may insist on strict adherence to the format by calling setLenient(false).파싱 기본 동작은 관대합니다. 이 객체의 날짜 포맷과 일치하지 않는 입력이 주어지더라도 날짜 형태만 유지한다면 파싱이 성공합니다. 클라이언트 코드에서는 setLenient(false) 메소드를 호출해 파싱 규칙을 여전히 엄격하게 가져갈 수 있습니다.lenient 라는 흔하지 않은 단어 때문에 의미가 잘 와닿지 않습니다만, 캠브릿지 영영사전에 따르면 ‘관대하다’ 라는 뜻이 있다고 하네요.lenient /ˈliː.ni.ənt/ ▶ adjective ▶ Level C2(Mastery Proficiency)A lenient punishment is not severe.Thesaurus: allowing, forgiving, merciful, permissive, tolerant하지만 규칙에 관대하다는 말이 무슨 의미인지 여전히 와 닿지 않습니다. 잠시, 아래의 소스코드를 읽고 그 결과를 한번 예측해 볼까요? parse 메소드는 기본적으로 lenient 하다는 특성에 주의합시다./* * 2017년 13월 32일 이라는 입력에 대해 어떤 결과가 나타날까? * 1. 2017-13-32 * 2. 2018-02-04 * 3. 2017-01-01 * 4. 2018-01-01 * 5. ParseException 이 발생 */ val userDate = "2017-13-32" val date = SimpleDateFormat("yyyy-MM-dd").parse(userDate) val localDate = LocalDateTime.ofInstant(date.toInstant(), ZoneOffset.UTC) println ("사용자의 ISO-8601 Date 입력 결과는 ${localDate.year}년-${localDate.month}월-${localDate.dayOfMonth}일 입니다.") lenient 라는 사전 hint 없이 바로 문제를 낼 경우 사람들이 제일 많이 선택한 결과는 ParseException 이 발생한다 였습니다. 하지만 lenient 한 특성으로 인해 실행 결과는 의외로 두번째, 즉 2018년 2월 4일 입니다. 막상 글로 풀어 쓰려니 별 것 아닌 내용처럼 보입니다만, 필자가 담당하는 서비스에서 이 특성을 제대로 파악하지 못해 특정 사용자의 생년월일을 제대로 인식하지 못한 문제가 있었습니다.또한 우리가 흔히 아는 달력을 쓰지 않는 국가도 있다는 점 까지 고려한다면 날짜 변환이라는 것이 간단한 문제가 아니게 됩니다. 즉, 한국인의 관념 속의 ‘달력’ 이란 Gregorian calendar 를 기반으로 한 ISO-8601 달력 입니다. 그런데 이 달력을 쓰지 않는 문화권도 있습니다(한국도 흔하진 않지만 ‘단기’ 라는 별도의 달력을 쓰기도 합니다). 이런 문제 때문에, 글로벌 서비스를 준비하고 계신다면 날짜 변환 문제를 꼭 점검해 보셔야 합니다.Android 에는 이 문제를 해결해 주는 클래스가 있습니다만 불행히도 API Level 이 26이나 되어 2018년 현재에는 제대로 쓰긴 어렵습니다. 다행히도 이 문제를 보완한 joda-time 라이브러리의 안드로이드 포팅 버전도 있으니 이 라이브러리의 도입을 검토해 보는 것도 좋은 문제 해결 방법이 될 것입니다.#개발 #인사이트 #하이퍼커넥트 #개발자 #안드로이드 #개발후기
조회수 1422

개발자의 시간 벌기

Overview지루한 작업은 저와 어울리지 않습니다. 한마디로 귀차니즘이 가득한 개발자입니다. 반복적인 일을 하고 있으면 딴 생각이 많이 떠오릅니다. 특히 개발 과정은 쿼리를 작성하고, 프로그램에 적용하고, 검증하는 일이 자주 발생하는데 필요 이상으로 내 시간을 낭비한다는 생각이 들었습니다. 매번 다시 작업해야 하는 쿼리의 조합을 책상 서랍에 착착! 정리해둔 물건처럼, 코드도 언제든 쓸 수 있게 착착! 준비해두면 시간도 절약되고, 업무도 편리해지지 않을까요. 도대체 최종 결과는....?개발언어를 PHP로 전향하면서 제일 오래 걸리는 부분은 프로그램에서 발생하는 쿼리를 다시 조합하고, 검증하는 작업이었습니다. 프로그램에 사용하는 조건을 체크하고, 대입되는 변수들을 체크하고, 치환할 부분에 넣어주는 작업을 반복해야 하고, 야근하고, 건강 잃고… 쿼리가 정상적으로 조합되지 않으면 어느 부분이 틀렸는지 매번 확인해야 합니다. 이 번거로운 작업을 안드로이드 개발에서 사용하는 logcat 같은 기능으로 만들면 좋을 것 같았습니다. 그래서 PHP용 Log 프로그램을 간단하게 만들기 시작했습니다.Logcat 화면, 한결 보기 편해 보인다. ㅂㄹ개발 컨셉손으로 쓱쓱 그려 보았습니다.PHP 쿼리 요청 코드// sql 디버깅 코드: 쿼리 시작 if (ENVIRONMENT == 'testing') {     if(function_exists('localDebugger')) localDebugger( 'sql_start', "0,".$sql);  } // Run the Query if (FALSE === ($this->result_id = $this->simple_query($sql)))  {     // 소스 생략     if ($this->db_debug)      {              // 소스생략 ...            $this->trans_complete();              // sql 디버깅 코드: 쿼리 에러           if (ENVIRONMENT == 'testing') {               if(function_exists('localDebugger'))  localDebugger( 'sql_error', '0, -- Error  Number: '.$error_no  ."\n--  message: ".$error_msg."\n");           }              // 소스생략 ...      }     return FALSE;  } // 소스 생략 // sql 디버깅 코드: 쿼리 종료 if (ENVIRONMENT == 'testing')  {     if(function_exists('localDebugger')) localDebugger( 'sql_done', ($em + $es) - ($sm + $ss).",");  } PHP 디버그 서버에 요청 코드$callNo = time();           /**           *로컬서버에 디버깅 메세지           * 지정된 서버에 디버깅 메세지 전달           * @access public           * @author BoseungChun           * @param string $message   디버깅할 메세지           */ function localDebugger( $type, $message ) {           global $callNo;           //debugger server           $url = 'http://127.0.0.1:3000';           $ch= curl_init($url);            // 요청 파일 분석           $trace= debug_backtrace();           $fileName= substr( $trace[1]['file'],strrpos($trace[1]['file'], '/') );           $line= $trace[1]['line'];           $fileName2= substr( $trace[2]['file'], strrpos($trace[2]['file'], '/'));           $line2= $trace[2]['line'];             // POST로 로깅 서버에 메세지 전달            curl_setopt($ch, CURLOPT_POST, 1);           curl_setopt($ch, CURLOPT_POSTFIELDS, $callNo.' '.$type.' '.uri_string().' '.$fileName2.':'.$line2."\n".$fileName.':'.$line.' '.$message);           curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);           $response = curl_exec($ch);           curl_close($ch);     } nodejs 일부 코드 // 서버 기동 const http = require('http');   const hostname = '127.0.0.1';  const port = 3000;   const server = http.createServer((req, res) => {       res.statusCode = 200;       res.setHeader('Content-Type', 'text/plain');       var body = '';       req.on('data', function (chunk) {           body += chunk;       }).on('end', function () {           var pos = body.indexOf(' ');           var no = body.substring(0, pos);           body = body.substring(pos+1);           pos = body.indexOf(' ');           var type = body.substring(0, pos);           body = body.substring(pos+1);           pos = body.indexOf(' ');           var uri = body.substring(0, pos);           body = body.substring(pos+1);           pos = body.indexOf(' ');           var file = body.substring(0, pos);           body = body.substring(pos+1);           pos = body.indexOf(',');           addSqlBlock( no, uri, file, body.substring(pos+1), body.substring(0, pos), type );      })      res.end('');  });   server.listen(port, hostname, () => {       console.log('Server running at http://${hostname}:${port}/');   }); // 코드 생략   function addSqlBlock( no, uri, file, sql, ms, type ) {      // UI를 구성해서 코드 블럭를 관리하는 태그에 붙여준다.   } 코드는 위의 코드와 같이 간단한 것들을 사용했습니다. 아래의 이미지는 nodejs를 이용해서 디버깅 메시지를 받을 서버를 만들고, 포트를 열어둔 것입니다. 정리하면 PHP 코드에서 발생하는 쿼리의 최종 내용을 디버깅 서버에 HTTP post 방식으로 전달해주는 구조입니다. 코드는 몇 줄 안 되지만, 꽤나 강력한 도구가 만들어졌습니다."어때요. 참 쉽죠?"짜란~~~ Logger 베타 버전이 도구는 페이지를 요청하는 즉시 쿼리가 잡힙니다. 어떤 페이지 요청에서 어떤 쿼리가 발생하는지 쉽게 분석할 수 있으니 번거롭게 쿼리를 조합하는 과정은 자연스럽게 사라졌습니다.색상으로 쿼리의 속도를 표현했다.이 프로그램의 제작자이지만, 유일한 사용자이기도 합니다. 불편한 게 느껴지면 바로 수정해야 했습니다. 어렸을 때 학습지 좀 풀었던 실력으로 알아서 척척척 스스로 기능을 보강했습니다. 위의 이미지처럼 색상만 추가해도 쉽게 분별할 수 있습니다. 쿼리 실행시간을 추가해 어떤 쿼리가 병목을 잡는지도 빠르게 찾을 수 있습니다.PHP 요청 패스를 넣었더니 개 이득!디버깅에 유용한 정보까지 추가했습니다. 요청된 경로, 쿼리가 실행된 파일의 이름, 라인 위치 모델을 요청한 상위 파일의 이름과 라인 위치를 추가해 트래킹을 보강했습니다. 이쯤 되니 거의 절대반지급입니다. 쿼리 이즈 마이 프레셔스..개발에 필요한 정보들이 노출되니 기쁘지 아니한가!이외에도 현재까지 아래의 기능들을 추가했습니다.쿼리 카피 기능과 신텍스 하이라이트, 쿼리 라인쿼리 에러 메시지 로깅url 요청 단위로 쿼리 묶어주기시간이 지난 쿼리 자동 지우기키워드 검색 기능필요한 걸 직접 만들어 사용하는 것이 귀찮을지도 모릅니다. D.I.Y도 아닌데 말입니다. 하지만 자신의 개발 능력을 활용해 업무 환경을 개선하고, 개선된 만큼의 시간을 다시 투자해 선순환 구조를 만든다면 행복한(?) 개발이 될 거라 생각합니다. (=더 많은 일을 하게 되는 건 안 비밀)오늘은 업무 전, 반복 작업을 개선하면 어떨까요. 참고(사용기술)nwjsPHP (codeigniter)CSS3 + HTML5JQuery글천보성 팀장 | R&D 개발2팀[email protected]브랜디, 오직 예쁜 옷만#브랜디 #기업문화 #조직문화 #업무환경 #인사이트 #경험공유
조회수 3178

하늘 아래 같은 레드는 없다

초록색 = 스타벅스주황색 = 나이키노란색 = 이마트다들 한 번쯤은 특정 컬러를 보았을 때 자연스럽게 그 컬러를 사용하는 브랜드가 떠오르는 경험을 해보셨을 거예요. 이처럼 컬러가 브랜드에 미치는 영향은 대단합니다. 브랜드 컬러는 브랜드 아이덴티티를 확실하게 전달함은 물론 구매에 까지 영향을 미치기 때문이죠.데일리의 서비스 앱 '데일리호텔(DAILYHOTEL)'은 브랜드 컬러로 '버건디'를 사용하는데요. 브랜드 가이드를 제작하던 중 이 '버건디'컬러의 Align 필요성을 느끼게 되었습니다. 브랜드 컬러의 영향이 막중한 만큼 그 컬러의 일관성 또한 매우 중요하기 때문이죠. 더군다나 데일리처럼 온(RGB)/오프라인(CMYK)으로 컬러를 사용하고, 넓은 영역과 앱 내의 좁은 영역에서 쓰이는 컬러 값을 다르게 설정하는 경우 각 플랫폼의 컬러 통일화 작업은 매우 중요합니다.(*면적에 따라 달리 적용되는 컬러 값 관련 참조 글 : https://brunch.co.kr/@suyoung/8)AS-IS 파악본 프로젝트를 진행할 당시 데일리의 브랜드 컬러는 #900034 였습니다. 하지만 앞서 말했듯이 넓게 보이는 영역과 작게 보이는 영역에서 컬러 값을 다르게 가져가야 하는 이슈로 진작 앱 내에서는 #b70038이 사용되고 있었죠. 또한 오프라인으로 출력 시에 인쇄용 CMYK값이 아닌 웹용 RGB Hex인 #900034를 그대로 출력하여 버건디가 아닌 어두운 갈색으로 출력이 되고 있었습니다.앱 내의 컬러 재정의(In-App Color)1. 앱 내에 버건디 컬러가 사용되는 부분버건디 컬러는 자체가 강한 컬러이기 때문에 앱 내에서는 CTA 버튼으로 가장 많이 사용되고 있습니다. 모든 화면에 강조색을 과하게 사용할 경우에 눈에 피로도를 주어 콘텐츠에 집중할 수 없는 이슈가 있기 때문이죠. 현재 앱의 내비게이션 바 색상을 흰색으로 처리한 이유도 그 때문입니다.2. 이전 이슈사항아이폰과 안드로이드의 환경이 다르기 때문에 같은 색상일지라도 두 디바이스를 함께 두고 같은 화면을 보았을 경우 색상 차이가 발생합니다. 특히 안드로이드의 경우 기존에 사용하던 #900034 컬러를 적용할 시 어두운 갈색으로 보이는 경우가 있어, CTA 버튼 컬러로 사용 시에 버튼에 대한 명확도가 떨어져 역할에 부족함이 있었습니다.3. 대응사항각기 다른 안드로이드 단말마다 모두 다른 색상을 가져갈 수 없는 문제이기에 어떠한 디바이스던 버건디 색상이 명확하게 보일 수 있도록 다양한 디바이스를 모아 테스트를 거쳐 명도를 밝게 뺀 최적의 버건디 컬러를 뽑았습니다. 앱 적용시 화면프로덕트 자체가 모바일 기반 서비스인 페이스북, 구글의 CI도 모바일이나 웹 환경에서 더욱 가독성이 있어 보이도록 계속해서 CI 컬러를 리뉴얼하고 있습니다. 아래처럼요.(*관련 기사 링크 : http://m.zdnet.co.kr/news_view.asp?article_id=20150702091741#imadnewshttp://m.businesspost.co.kr/news/articleView.html?idxno=16798&daum_check=&naver_check=#cb)모바일 기반 타사 브랜드 컬러 리뉴얼 예시4. 결론기존 안드로이드 디바이스에서 #900034 버건디 컬러가 팥색으로 보이던 이슈로 인해 안드로이드, 아이폰 모든 디바이스에 사용하기 좋은 컬러로 재정의하여 #b70038로 새로운 컬러 값을 지정하였습니다.(짝짝)앱 아이콘 컬러 재정의(App Icon Color)물론 예외적인 부분도 존재합니다. 바로 앱 아이콘 컬러의 경우인데요. 현재, 다른 앱 아이콘들과 함께 쓰이는 홈 스크린 화면에서는 다른 앱 아이콘과 함께 데일리호텔 앱에 돋보일 수 있도록 #70038보다 더 밝은 #d1004 c를 사용합니다.이유는 제일 왼쪽의 이미지처럼 기존 컬러 #900034를 사용할 경우, 다른 아이콘들과 비교했을 때 주목성이 약해지게 되므로 아이콘으로써의 역할을 잃기 때문입니다. 많은 서비스들이 앱 내에서 사용하는 지정 컬러가 있지만, 다른 아이콘과 함께 사용되는 홈 스크린 아이콘은 더 밝고 튀는 색상으로 가져가고 있습니다.타사 예시출력용 CMYK 컬러 재정의(Offline Color)모니터에서 사용되는 RGB 컬러를 CMYK로 변환 과정을 거치지 않고 그대로 출력할 경우 색상은 매우 다르게 표현됩니다. 때문에 RGB 값에 맞추어 출력 시에 동일할 수 있도록 CMYK값과 PANTONE값을 따로 추출해야 하죠. 하지만 출력 기계와 인쇄소의 여건에 따라 동일한 CMYK값을 지정한다고 해도 미세하게 다른 컬러로 출력된 것을 받아보기 마련인데요. 이런 이유로 어느 환경에서도 동일한 컬러로 출력할 수 있도록 제작된 컬러칩 PANTONE이 있습니다. 아래는 팬톤 컬러로 테스트를 한 경우입니다.PANTONE컬러를 맞추기 전과 후출력물로 컬러 테스트 결과 PANTONE 1945 c가 새롭게 정의된 브랜드 컬러인 #b70038와 가장 흡사함을 확인할 수 있었습니다. 해서 데일리호텔의 브랜드 컬러는 아래와 같이 재정의 되었습니다.버건디의 친구(Secondary Color)데일리의 브랜드 컬러인 '버건디'가 재정의 되었습니다. 그리고 그 '버건디'는 친구가 필요했어요. 혼자 쓰이기에는 너무 임팩트가 약하고 전달하고자 하는 메시지가 잘 공유되지 않았기 때문이죠.1. Product하지만 앱 내에서 사용되는 컬러는 실질적으로 Main(버건디), Second(골드) 두 가지가 주로 사용됩니다. 또한 홈 화면에 호텔/레스토랑의 등급을 알려주는 뱃지에 사용되는 컬러는 여러 가지로 베리에이션이 되어야 하기 때문에 제한적인 컬러를 사용할 수 없는 이슈가 있었습니다.다양한 컬러로 사용되는 앱내 뱃지 예시2. Brand / Marketing기업 굿즈와 옥외광고 등 데일리호텔의 브랜딩이 노출되는 곳에는 응용을 위해 Second 컬러를 제외한 Accent 컬러가 필요했습니다. 하지만 앱 내에 보이는 이벤트 페이지는 기획전 성격과 이미지에 따라 컬러가 자유롭게 사용되기 때문에 지정된 컬러를 사용하기에는 어려운 이슈가 있었죠.Accent 컬러 적용 예시Second/Accent 컬러 적용이 다소 어려워 보이는 마케팅 컨텐츠의 예시3. 결론- 예외적으로 Brand / Marketing에 사용되는 Accent Color를 따로 선정- Main(버건디), Second(골드)를 공통적으로 사용하되 프로덕트와 브랜드(온/오프라인)에 사용되는 컬러 값은 다르게 적용(*넓은 영역과 좁은 영역에서 다르게 사용되는 컬러 값 이슈)확립된 데일리의 브랜드 컬러!이런 과정으로 지금의 데일리 컬러 '버건디'가 탄생했습니다. 어찌 보면 단순해 보이지만 많은 테스트를 거쳐 유저들에게 최적의 상태로 표현되기 위해 노력하고 있답니다.(!)앞으로 이런 데일리의 노력 많이 지켜봐주세요 :)진행In-App Color/App Icon Color : Product팀Offline Color/Secondary Color : Creative팀#데일리 #데일리호텔 #디자인 #디자이너 #UI #디자인철학 #인사이트
조회수 2050

홈클의 흥망성쇠

*2016년에 작성된 글입니다2016년 4월 6일 홈클 서비스를 종료했습니다. 그리고 정말 많은 분들의 연락을 받았습니다. 그동안 주신 과분한 관심에 감사드리고, 그동안 큰 도움을 받았으나 미처 연락을 못 드린 분들께 죄송한 마음을 전합니다. 신변이 정리되고 연락드리도록 하겠습니다.서비스 종료 후, 그냥 숨기보다는 어떠한 이유로 서비스를 종료하게 되었는지를 명확히 밝히고, 홈클을 운영하면서 느낀 점을 간략하게 정리해서 향후 O2O 서비스를 준비하시는 분들에게 미약하게 도움이 되고자 홈클 관련 마지막 글을 쓰기로 했습니다.  (밑에부턴 반말 이해해주세요.)Cash flow is King'와트니 법칙'이라는 말이 요즘 스타트업계에서 종종 회자된다. 펀딩 시장이 얼어붙으면서 영화 마션에서 영감을 받은 단어이다. 더 이상 외부 자금에 의존한 사업은 존속하기 어렵고 자생력을 키워야 한다는 뜻이다.영화에서 마크 와트니는 외부로부터 식량을 조달받을 수 없어지자 '온실'을 만들어 감자를 재배하고 생산가능량(revenue)과 자신이 먹는 양(burn rate)을 계산해서 며칠이나 버틸 수 있는지 계산하는 장면도 나온다.나는 원래 외식사업을 했었고, 수익구조와 현금흐름에 목숨 거는 '쫀쫀한' 사장님이었다. 하지만 '스타트업'은 다르게 운영되어도 괜찮다고 생각했다. 당장 돈이 벌리지 않아도 운영비는 투자금으로 충당하고, 시장 선점과 '이쁜' 그래프를 만들고자 했다. Operation에서 cash가 나오지 않는 O2O 비즈니스는 회사의 운명을 외부 상황에 맡기게 된다는 사실을 애써 외면했다. 마일스톤을 달성하고 이를 기반으로 투자를 받는 것을 공식처럼 여겼다. 확실시되던 투자가 미끄러지고, 대기업 진출 소식까지 전해지면서 외부 상황은 최악으로 치닫았다. 뒤늦게 전략을 수정하고 BEP를 맞추기 위해 '온실'을 만들어 보려 했으나 온실을 만들 재원조차 남지 않은 상황이 생각보다 훨씬 더 빨리 왔다. 적어도 O2O 비즈니스에서 일단 시장을 선점하고 그 기반으로 나중에 뭘 해보겠다는 건 너무 어렵다. 그리고 여러 O2O 비즈니스를 병렬식으로 연결해서 돈을 벌겠다는 건 정말 꿈같은 이야기이다. (불가능한 건 아니다.)"일단 돈이 안되면 똥이야. 똥을 모으면 다이아몬드가 되냐? 똥이 모이면 x라 큰 똥이 된다."청소업체 모 대표님의 말이 기억에 남는다.'존버 정신'의 필요(충분) 조건아마존의 매출, 수익 그래프위 그래프를 보면 뭐가 느껴지는가? 나는 답답한 성장 단계에서의 지루함을 끝까지 버텨낸 제프 베조스의 위대함을 느낀다. 그는 95년 창업해서 10년 가까이 존x 버텼다. 10년 동안 흔들림 없이 아마존을 이끈 그의 인내심과 끈기 그리고 미래에 대한 확신은 나 같은 범인이 범접하기에는 너무나도 위대해 보인다. 아마존의 97년도 주주서한을 읽어보았는가? 나 같은 일개 스타텁 대표는 그저 그의 위대함에 감탄할 수 있을 뿐이다.https://sttora2.net/30175564371 (97년 아마존 주주서한)나 같은 범인이 제프 베조스의 인내와 끈기를 발끝만큼이라도 쫓아가려면 최소한 나에게 맞는 일, 내가 즐거운 일, 내 일생의 mission을 clear 할 수 있는 일을 해야 한다.에어비앤비 호스트 데이에 부스로 참가한 홈클홈클 서비스는 나에게 어떤 의미였을까?호텔 비즈니스가 궁금했던 나는 에어비앤비 호스팅을 몇 개 시작했다. 오잉? 매달 풀 부킹이었다. 근데 빨래, 청소가 죽을 만큼 하기 싫었다. 그래서 홈클은 에어비앤비 청소 서비스로 탄생했다. 아이러니하게도 청소가 죽을 만큼 싫었지만 홈클을 만들고 근 1년 동안 청소만 생각하면서 살아왔다. 가정집으로 확장을 하고 매출이 늘면서 VC분들에게 피칭도 할 기회가 생겼다. 하지만 솔직히 가사도우미 업에 대한 가슴 떨림이나 사명감은 없었다. 대신 어렵고 모두가 기피하는 비즈니스에서 큰 획을 그어보자는 결연한 의지가 있었다. 힘든 외부 상황이 계속되니 사명감없는 결연한 의지는 봄날 눈녹듯 사르륵 녹아내렸다.세금 & 법률 이슈1) 법률문제가사도우미는 직업안정법의 선급금 금지조항의 영향을 받는다. 이 법에 의하면 중개업자는 가사도우미의 임금을 줄 수 없다. 실 서비스 이용자가 임금을 줘야 한다. 한 번의 카드결제로 도우미 배정을 하는 경우 선급금 금지법안을 피할 수 없다. 물론 꼼수는 있다. 고객의 결제 금액이 회사 통장에 들어오기까지는 3~5일 정도 소요된다. 이 기간 동안 가사도우미의 가상계좌에 먼저 해당 임금을 이체하고 청소가 끝난 후 정산할 수 있는 시스템을 구축하면 된다. 하지만 근본적인 해결 방안은 가사도우미를 정규직원으로 고용하는 것뿐이다. 근데 계산을 몇 번 돌려 보면 사대보험을 지급하고는 답이 안 나온다. razor thin margin....2) 세금 문제직업상담사 2급을 따고 유료직업소개업으로 등록하면 부가세가 발생하지 않는다. (면세사업) 아직 유료직업소개업 등록하고 카드 결제 시 카드사 명세서에서 부가세가 0으로 찍혀나오는 건 확인하지 못했다. 가사도우미분들에게는 3.3%를 제외하고 세무사 사무실에는 사업소득으로 신고하면 제일 깔끔하다. 그런데 유료직업소개소를 운영할 때는 직업안정법의 선급금 금지 법안을 지켜야 하는데 3.3%를 떼고 서비스 이후에 임금으로 지급하는 건 명백한 선급금 금지 법안 위반이다.법률적 검토도 안 해보고 왜 시작했냐?고용노동부에서 발행하는 질의회신서에서는 '강박이 없고 예약 내용을 보증하는 예약금 형식의 선급금은 지급 가능하다'라고 나와 있었다. 법안과 상충되는 내용을 고용노동부에 몇 차례 질문을 하였으나... 그 누구도 확인을 해주지 않았다. 심지어 해당 질의 회신서를 쓰신 분은 퇴사했다고... 질의회신서도 맞긴 하나 아무튼 어떠한 형식의 선급금은 절대 불허한다라는 최종 답변을 받았다. 읭?..3줄 요약1. 수익화 실패.2. 외부 상황이 힘들 때 버틸 요인이 부족.3. 세금&법률 리스크.4. 민감한 문제이므로 삭제이렇게 실패 요인만 쓰고 글을 마무리 하기는 아쉬워 쑥스럽지만 홈클이 잘한 점도 한번 써볼라고요.실행력 (hustle)보통 서비스 공급자를 뽑아서 교육시키고 현장에 배치하면 되지 않냐고 한다. 그렇게만 하면 어마어마한 컴플레인 후폭풍을 경험하게 될 것이다. 단순한 연결, 본질이 없는 growth hacking은 가사도우미 업에서는 통하지 않는다. Uber 기사는 A지점에서 B지점까지 데려다만 주면 되는 반면, 가사도우미는 집에 들어가서 수십 가지 접점 포인트를 만들어 낸다. 게다가 고객의 집은 모두 제각각이고, 원하는 사항과 기대치는 천차만별이다. 홈클 매니저의 서비스와 고객의 기대치 사이의 간극은 홈클 팀원들의 시간과 열정을 갈아 넣어서 메꿀 수 있었다."정답은 항상 현장에 있다."반년 동안 현장을 누비고 수십 명의 고객과 매니저를 인터뷰 한 끝에 웬만큼 쓸만한 서비스 매뉴얼을 만들 수 있었고, 매니저를 교육할 수 있는 역량을 갖추게 되었다. 평소에 본인집 청소도 잘 안 하던 홈클 팀원들의 고생은 이루 말로 표한할 수 없을 정도였다. ㅠㅠ홈클 팀원이 직접 나갔던  첫 서비스 현장호기롭게 시작한 서울 전 지역 서비스는 재앙이었다. 몰려드는 주문에 모두들 멘붕에 빠졌다. 하지만 결국 우리는 해냈다. 가사도우미가 없는 지역에서 주문이 들어오면, 고객에게는 아직 해당 매니저가 교육 중이라고 양해를 구하고 1주일의 유예기간을 만들어냈다. 그리고 그 기간 동안 무슨 수를 써서라도 해당 지역 매니저를 뽑고 교육해서 배정을 완료했다. 일종의 buffer를 만들고 서울 전역으로의 주문수를 차근차근 늘려 나갔다.[고객 구인 - 매니저 구인 - 매니저 교육 - 업무 배정] 업무를 꾸역꾸역 계속하면서, operation 고도화는 한 번도 소홀하게 하지 않았다. 홈클 만큼은 기존 업체들과 비교해서 명확한 서비스 차별화를 이뤄내고 싶었다. 홈클 없인 못산다는 팬도 생겨나고, 매출은 매월 30%씩 늘었다. 월 천 건을 돌파하고, 우리가 한 땀 한 땀 뽑고 교육한 매니저는 200명을 넘어섰으며, 정기 서비스 재구매율을 85%까지 돌파했다. 그리고 돈은 남지 않았다.중간중간 환희의 순간들이 있었지만, 대부분 고통스럽고 정신적, 육체적으로 힘들었다. 수백명의 인력을 관리한다는 건 상당한 스트레스를 동반했다. 뱃살과 흰머리가 부쩍 많이 늘었다.  홈클 서비스 종료하기 직전에 올라온 마지막 두 리뷰를 보니, '우리가 진짜 열심히 노력했었구나' 라는게 실감이 나면서 코끝이 찡해졌다.마지막 날 무능한 대표에 빙의되어 미안한 마음에 홈클팀원들에게 그동안 너무너무 고생이 많았고, 너무너무 고마웠다는 말을 하지 못한것이 맘에 걸린다. ㅠㅠ (내맘 다 알죠?)홈클 관계자 여러분 그동안 정말정말 감사했습니다. 수고했구요. 어딜가나 성공할겁니다.Good- Bye 홈클#삼분의일 #매트리스 #홈클 #팀원 #CEO #대표 #고민 #성장 #인사이트 #경험공유
조회수 1113

기운's Slide share 공유 결과

작년부터 I/O는 대표님을 시작으로 스위처 시즌1 생산과정에 대한 내용을 공유하였다. SlideShare에는 스위처와 관련하여 현재 총 3개의 Slide가 올라가 있다.1. 스마트홈 스타트업 스위처가 지난 3개월 동안 시도한 것들 그리고 앞으로의 계획2. 스마트홈 스타트업 스위처 마케팅 이야기3. 하드웨어 스타트업이 1700개의 제품을 생산할 수 있었던 4가지 단계(*내용이 궁금하면 보세요.)지난 2개의 경우 어떤 페이지에서 효과가 가장 좋았는지 기록을 남기지 않았다. 앞으로는 어떤 페이지에서 우리와 같은 하드웨어 스타트업들이 관심을 많이 받는지 공유하기 위해 결과물을 남겨야겠다. I/O Maker의 슬라이드 쉐어Maker의 Slide를 공유한 곳은 다음과 같다.(1) 스위처 페이스북 페이지(2) 스타트업 타임스(3) 코딩이랑 무관합니다만(4) start up together(5) IOT 패러다임(6) Opencreators(7) ArduinoStory(8) Fab Lab이 중 결과가 가장 좋은 것은 역시 facebook! 그중 그중 'IOT 패러다임'과 'start up together'에서의 효과가 가장 좋았다. (slide를 올린지 3일이 지난 지금도 자는데 계속 페이스북 알림이 뜬다. 이번 주말까진 계속 관심을 받지 않을까? 싶습니다.)(* 위 페이지 중 (6), (7)만 네이버 카페)* '스타트업 타임스'의 경우 페이지가 망한듯하다. 작년 6월 글이 최신이고 내가 올린 글 승인이 떨어지지 않는다.. 2016.4.21 15:44 현재 링크 클릭률슬라이드 쉐어 전체 클릭율(1) 스위처 페이스북 페이지 - 738(2) 스타트업 타임스 - 0 (3) 코딩이랑 무관합니다만 - 627(4) start up together - 720(5) IOT 패러다임 - 1,019(6) Opencreators - 111(7) ArduinoStory - 96(8) Fab Lab - 207클릭률 상위 4개 페이지 '공유' / '좋아요' / '댓글' 수(1) 스위처 페이스북 페이지 - 59 / 82 / 4(3) 코딩이랑 무관합니다만 - 89 / 113 / 24(4) start up together - 75 / 72 / 8(5) IOT 패러다임 - 52 / 60 / 2신기하다. 링크 클릭률이 가장 높은 (1)과 (3)이 '공유수'는 가장 낮다. 왜일까? 해당 링크를 공유해간 사람들의 관련도(?) 관심도(?) 차이일까? 가령, 스위처는 IoT 제품이다. 당연히 다양한 스타트업 분야 중 하드웨어/IoT 관련된 사람들의 관심이 많을 것이다. 그렇다면 공유를 해간 사람들의 지인 역시 그런 분야에 종사 혹은 관심을 가지고 있는 사람이 아닐까? 그러다 보면 자연스럽게 클릭률이 올라갈 것이고.스위처 페이지 역시 마찬가지. 스위처에 관심을 가지고 있는 사람들이다 보니 클릭을 더 많이 했을 것이라고 생각이 든다. (네 당연한 소리입니다.)앞으로 I/O 는 디자인 / 운영 / 개발 분야의 내용도 공유할 것입니다. 이런 저희의 공유 정신이 이제 막 혹은 같은 출발선에 있는 다른 팀에게 작은 도움이라도 되길 바랍니다. 스타트업 파이팅! global! (I/O는 더 파이팅!)#스위처 #Switcher #마케터 #마케팅 #SNS마케터 #SNS마케팅 #슬라이드쉐어 #Slideshare #페이스북 #Facebook
조회수 1667

데이터 검증이 중요한 이유

데이터 검증은 system error 또는 human error에 의해 garbage data가 쌓이고 있진 않은지, 정상적으로 데이터가 수집되는지 여부를 확인하는 매우 중요한 단계인데요. 오늘은 왜 데이터 검증 단계가 중요한지를 최근 경험을 통해 설명드리고자 합니다.한 고객사에서 데이터 검증 과정 중 GA(Google Analytics for Mobile Apps) 대비 저희가 공급한 툴(와이즈트래커)의 세션수(방문수)가 너무 낮다는 문의를 주셨습니다. 그 수치는 무려 3배 가량의 차이로 acceptable이 힘든 데이터였습니다.사실 세션은 설정이 요하는 분석 항목이 아니기 때문에 측정기준으로 비교해 봐야 했지만, 세션 기준 역시 30분으로 GA와 와이즈트래커와 동일했습니다. 이에 저는 GA에서 over counting되는 요인이 있을거라 생각하고 열심히 구글링 하다 흥미로운 아티클을 발견했습니다. GA SDK V4 적용했더니 세션수 2배 이상 증가했다?>> Link이 문의에 한 사람이 답변을 달기를, GA에는 activity auto tracking 기능이 있는데, 이를 사용할 경우 앱을 백그라운드에 내리거나 프로세스 킬하고 재실행하면 30분 세션 유지기간에 상관없이 세션이 증가한다는 내용이었습니다. 이 말인즉, 사용자가 앱과의 인터렉션이 없어도 GA SDK가 자동으로 새로운 세션을 발급한다는 건데요. 설마했지만 사실 확인을 위해 테스트를 진행했습니다.1) 테스트 앱 개발2) GA SDK v4 적용3) 앱 실행4) 앱 프로세스 종료 후 30분 이내 재실행 or 백그라운드 처리이는 불과 1분 안에 일어난 현상테스트 전 데이터는 사용자 1, 세션 6건이었고, 3단계 앱을 실행하는 시점에 사용자 2, 세션 7이 되었습니다. 정상적으로 사용자 1건, 세션 1건이 증가한 것입니다. 여기서 앱을 종료하고 바로 앱을 다시 재실행 해보았습니다. 그리고 데이터를 보니 오잉? 정말 세션이 증가했습니다. 정말인가 싶어 여러 번 했지만, 아래 캡쳐시간을 보시면 알겠지만, 불과 1분도 채 안되서 3건의 신규세션이 발생한 것입니다.그렇다면 도대체 왜 이렇게 처리한 것일까? 오류일까?정확히 알 수는 없지만 이 기준 자체는 데이터 해석에 큰 오해를 일으킬 수 있습니다. 우리는 보통 평균 값을 갖는 파생지표를 세션을 기준으로 산정합니다. 그래서 보시는 것 처럼, 평균 세션당 화면, 평균 세션 시간이 세션수를 기준으로 나눠진 것을 알 수 있습니다.평균 세션당 화면, 평균 세션 시간, 사용자당 방문횟수와 같은 지표는 사용자의 앱 인게이지먼트를 판단하는 척도로 활용하는 사용성 높은 지표인데, 사용자와 앱 간의 실질적인 인터렉션이 전혀 없는 허수의 세션이 증가하니 세션수와 연관있는 모든 파생지표 데이터가 실제보다 낮은 수치로 표기되고, 이를 가지고 잘못된 해석을 하고 잘못된 액션까지 취할 수 있다는 것입니다.해당 고객은 안타깝게도 세션 뿐만 아니라 세션과 관련된 파생지표 모두 잘못된 기준의 KPI를 보았다고 할 수 있는데요, 사실 아직까지 국내는 GA에서 추출하는 기본 데이터 수준으로 KPI를 활용하는 경우가 많고, 특히 GA의 activity auto tracking 기능을 대부분 true로 설정하여 활용하고 있을 것이기 때문에 데이터 해석의 문제는 생각보다 굉장히 범용적으로 발생하고 있을 것으로 예상됩니다.!! 데이터 검증은 선택이 아닌 필수 과정데이터 분석을 잘하기 위한 전제 조건은 좋은 데이터를 수집하는 것입니다. 하지만 보통 3rd party tracking 업체는 툴을 제공하는 것 까지만 수행하지, 클라이언트의 개발자가 제대로 적용했는지, 적용한 데이터가 정상 수집되고 있는지 등의 과정까지 support 하지 않습니다. 그럼 클라이언트가 직접해야 하는데 이건 현실상 더더욱 힘들 수 밖에 없습니다.그래서 툴을 선택할 때는 반드시 도입 단계에 데이터 검증을 지원하는지 여부를 확인해야 합니다. 2012년부터 빅데이터 분석 바람이 불고 있지만, 현실은 기업에 전문 분석가 1명이 없는 기업이 아직 대부분입니다. 또한 비전문가가 쉽게 배우고 커버할 수 있는 업무도 아니기 때문에 전문 업체의 지원을 받아야 합니다. 안해주면 해달라고 떼 써야 합니다. 초기 도입시에 말이죠. 그래야 이후에 자신감있게 데이터를 신뢰하고 분석하고 액션 플랜을 수립할 수 있습니다.오늘 당장 리포트의 데이터를 의심의 눈으로 한 번 다시 보시는 계기가 되면 좋겠습니다. * WISETRACKER는 모바일 광고 성과 측정부터 In-app 이용자/컨텐츠 분석, 푸시메시지 최적화까지 지원하는 모바일 통합 분석/타겟팅 솔루션입니다. 와이즈트래커 솔루션의 무료체험을 원하실 경우 여기를 클릭해주세요.* WISETRACKER가 제공하는 무료 데이터 분석 컨설팅를 원하신다면 여기를 클릭해주세요. #와이즈트래커 #데이터 #데이터리포트 #데이터분석 #서비스소개

기업문화 엿볼 때, 더팀스

로그인

/