스토리 홈

인터뷰

피드

뉴스

조회수 1043

스타트업에서 잊을 수있는 경영업무

 대한민국에서 창업을 하고, 사업을 진행해서 수익을 얻는다면 (또한, 투자를 받으려면), 개인 사업자 등록이나 법인을 설립하고, 설립된 법인에 부가 된 세금을 내는것은 사업체를 운영하는 절차 입니다. 근데, 대다수의 어린 창업자들이 이 부분을 간과하기 마련입니다. 당장 서비스를 도출해 내고 개발해 나가는 데 당장 필요한 절차가 아니라고 생각하기 때문이지요 (저도 그렇게 생각했었구요). 그리고 결국 나중에 금전적, 세적 도움이 필요해 질 때 간단하게 “법무사/ 세무사 사서 정리하면 되지."라는 안일한 태도로 마주하게 될 때가 생길 때도 있습니다. 창업경진대회나, 투자상담을 받아보신 분들은 알겠지만, 노무관리(팀원관리), 회계기록의 문서화, 현금 흐름표 및 예산기획 및 법무업무 분야는 서비스를 떠나 사업체를 판단하는 중요한 요소들입니다.일단 단어들에 대한 간단한 설명을 해드리자면, 1. 노무: 같이 일하는 팀원들의 인사, 급여 등의 직원관리에 관한 업무 2. 재무: 회사의 수익, 지출을 계산하고, 납세에 관한 정보를 파악하는 업무 3. 법무: 법률에 관한 다양한 업무 (법인설립, 지분분할 등) 에 관한 업무이고, 법무 업무 중 투자 또는 사무실임대 업무 등의 절차를 진행하기 위하여 스타트업 하시는 분들이 가장 우선적으로 해야 할 법인 설립에 관련해서 아주아주 간단하게 설명드리자면, 1. 법인기업: 2인 이상이 기업을 만들고, 일정한 자본금을 가지고 지분을 설정, 투자를 유치할 수 있는 기업. 2. 개인사업자: 1인 기업으로 자신이 하는 일에 투자 없이 100% 권한을 가지고 있는 기업.(자세한건 링크를 첨부하였습니다~ :http://bit.ly/1OeRxzy)이 있습니다. 처음 스타트업을 시작하시는 분들은 “이제 벌건데 뭘 벌써 이렇게 하나…” 싶으신 분들도 많을겁니다. 몇은 맞고 몇은 틀리다고 생각하는데요, 제가 저런 말씀을 드리는 이유를 들어보시면 이해가 되실겁니다. 스타트업을 하다 보면 정말 많은 스타트업들을 하는 사람들을 볼 수 있습니다. 물론, 열심히 고안해 내신 서비스를 위해 정말 열심히 고군분투하시는 분들도 많지만, 속칭 “공모전 헌터(특별히 서비스를 개발하고 시작하지 않으면서 아이디어나 기획서만으로 공모전 등에서 입상한 후 돈 또는 재회적 이익만 가져가는 사람들)"도 많이 생겼고, 서비스보다는 “이력서에 하나 넣는 정도.” 로 창업을 생각하는 분들도 많기 때문이지요. (특히 요즘들어서는 6개월 내지 7개월 정도 조그만 서비스를 준비하는 식으로 준비를 하고 이력으로서 스타트업을 시작하는 속빈 강정같은 스타트업이 많아져 인사담당자 분들이 그러한 분들을 가려내느라 고생을 많이 하신다고 들었습니다.) 그래서 이러한 회계, 노무, 경영상의 금전적 지표와 개인사업자 등록이라든지, 법인등록이라는 것들은 정말 서비스를 통해서 얻고자 하는 목적의식이 확실한 것을 증명할 수 있는 중요한 지표로서 관리해야한다고 생각을 합니다. 우선 회계 업무부터 말씀드리자면, 간혹 몇몇 분들은 “나는 지금 당장은 돈을 벌지 않는 스타트업이라서 회계업무는 그닥 필요가 없다.” 라고 생각하시는 분들이 종종 계실것 같은데, 아니에요, 잘못생각하고 계십니다. 지금 당장 수익활동이 없더라도, 초기에 시작하신 종잣돈(Seed Money)의 흐름,프로토 타입 과정을 거치면서 들었던 기술적 비용들을 정확하게 파악하신다면, 추후에 이익이 생기거나 투자에 대한 기획서를 작성할 때 정말 엄청난 시간절약과 현금흐름을 보다 정확하게 파악하실 수 있으리라고 생각합니다. "나중에 해야지." 라는 생각을 하고 재무업무를 진행하기엔 너무 늦습니다. 물론, 재무와 세무 노무를 하나하 다 체크하시면서 서비스를 개발하고 기획한다는 것은 너무나도 힘든 일입니다. “기획하고 개발할 시간도 없는데 그런 걸 언제 다 하나…” 라고 생각하시는 분들이 많을 것 같은데, 그렇다고 이러한 재무 세무 노무에 관하여 완전한 전문가가 되실 필요는 없다고 생각합니다. 사업자 등록이나 지분정리 등을 도와주시는 법무사님들, 정확하게 조세에 대한 전문지식을 가지고 계신 세무사님들의 도움을 받으면 충분히 생각보다 적은 비용으로 창업자들에게 골치 아플 수 있는 일들을 처리해 주실 것 입니다. 분명히 한푼이 아쉬우실것 이라는거 저도 분명히 잘 압니다, 저도 분명히 그런 입장이었고… 그러나 기회비용으로 따져 봤을 때, 아무것도 모르는 개인이 세무, 법무, 노무에 관하여 모든 것을 공부하고 이행하는 기회비용이 그러한 시간 동안 서비스를 개발하고 집중하면서 얻는 기회비용보다 훨씬 높을 거라는 것이 저의 개인적인 생각입니다. 그래서 상대적으로 저희 팀 역시 서비스에 집중할 수 있었다고 생각합니다.그렇다고 그냥 맡기는 것은 절대로 옳지 않습니다.자신의 팀이 얼마를 벌었고, 어떤 일에 어떻게 얼마를 사용해 왔고, 임금으로 얼마를 사용했고, 매출은 얼마였고, 어디에 돈이 가장 많이 들어갔는지를 창업자 스스로가 작성할 수 있다면 최대한 작성하고, 의심스럽거나 이상한 부분이 있다면 쉽게 추적할 수 있을 정도로는 알고 있어야 합니다. 세무사, 법무사, 노무사님들은 개개인의 기업을 잘 알지 못합니다. 어떻게 기업이 경영돼 가는지를 설명하고 보여주는 것은 창업자의 역할입니다. 그리고 이러한 세무사, 법무사, 노무사님들의 더욱 수월하고 간단하게 일을 처리해 줄 수 있게 도와드릴 수 있는 것이 기업장부, 고용계약서, 지분현황표, 및 각종 계약서 입니다. 기업장부라고 해서 완전히 회계사님들이나 전문적으로 경리업무를 하는것처럼 하지 못하시더라도, 적어도1. 업무와 관련된 영수증은 버리지 말고 폴더에 모아두기, 2. 업무용 체크카드와 가계부 어플리케이션 연동시켜놓기, 3. 모아져 있는 자료들 월별로 한번씩 정리해보기,를 해 놓으신다면, 나중에 이익이 생기시고, 정말 사람이 필요하겠다. 싶을때에 회사의 상태를 파악할 수 있을것입니다. 정리하자면,1. 재무업무에 관하여 사용될 금전 출납부 기록은 서비스 기획 맨 처음부터! 2. 팀원들을 모으고, 팀원들과 서류계약(지분, 월급 관련 계약서) 역시 서비스 기획 맨 처음부터! 3. 만약 사무실을 바로 알아보시고, 계약을 하셔야 한다면, 법인 설립은 그전에 완료 해 놓으셔야 합니다! 4. 투자는 법인기업만 되는거 알고 계시겠죠? 5. 수익이 생기실 때가 되면 반드시 회계사 분들과 상담하시는것을 적극적으로 추천드립니다! 그리고 요즘은 참 감사하게도, 법인 설립이나 회계업무에 관하여 스타트업을 지원해 주시는 분들 또는 서비스도 굉장히 많이 늘어낫고, 특히 법인설립같은 경우는 장벽이 굉장히 낮아져 온라인으로도 지원하실 수 있으니, 정확한 정보는 제가 나중에 스타트업에 관련된 링크들을 모아놓은 장에서 한번에 보여드리도록 하겠습니다! 세무 법무 노무에 관한 정보가 깨끗하지 못한 기업은 신뢰를 떨어트리고, 팀 내에서도 와해를 불러일으킬 수 있으며, 사기를 저하시킬 수 있습니다. 그러한 결과보다는 조금 귀찮고 조금 돈이 든다고 하더라도 서류의 정확한 기록 및 보관과 전문인력을 사용하는 것이 더 효과적일 것이라고 생각합니다.#코인원 #블록체인 #기술기업 #암호화폐 #스타트업인사이트
조회수 4784

문돌이가 개발자랑 일할만큼만 프로그래밍 익히기

나는 대기업(스러운 곳)의 경영기획팀의 기획자로 5년간 일하다가 작년 초 회사를 그만두고 스타트업을 하겠다고 나왔다 (이거 뭐 써먹을데가 있어야지). 흔히 스타트업에서 '기획'한다고 하면 그건 대부분 '모바일/웹 서비스 기획자'를 의미한다. 이들은 개발자, 디자이너, 마케터들 사이에 새우 등 터지듯 일하는 경우가 많기 때문에 프로그래밍 배경지식이 없으면 특히 개발자들에게 x무시 당하기 쉽다. 이 글에서는 나같은 문돌이가 짜투리시간 약 3-4개월만 투자하면 초보 수준의 웹사이트는 개발 가능할 정도의 프로그래밍 스킬을 익혀서 개발자랑 어느정도 대화가 되는 PM이 되는 법에 대해 논하고자 한다. 참고로, 책보고 공부하는거 질색인 사람들에게 강추한다.지금부터 내가 설명하려는 '문돌이의 프로그래밍공부 방법론'은 어디까지나 다음에 해당하는 사람들에게 어울리는 방법임을 미리 밝혀둔다.1. 나는 학원같은거 다니면 적어도 반 이상은 완주할 정도의 인내력이 있다.2. 기본적인 영어 리스닝 실력은 있다.3. 내 목표는 개발자 되는게 아니라 개발자랑 일하는거다 (-> 진짜 프로그래머가 되는법은 절대로 내가 한 방법론으로 해서는 안된다.. 이건 그러니까.. 어디까지나 야매) Step 1. 생활코딩으로 공부하지 말고 준비운동만 하기 (1주일)생활코딩은 이제 너무 유명해져서 많은 문돌이들이 코딩 공부하는 성역이 되어버렸다. 그런데 아이러니한건 여기를 아는 사람은 많은데 여기서 코스 하나를 완주했다는 사람 보기는 힘들다는거. 생활코딩 사이트에 보면 생활코딩 작심 40시간 라이브 가 있는데 그야말로 40시간동안 웹서비스의 방대한 영역을 전부 건드리는 무지막지한 코스로서, 아무리 이고잉님이 쉽게 리드한다지만 문돌이가 처음부터 저걸 다 따라하는건 무리가 있다고 생각한다. 하지만, 이고잉님이 프로그래밍의 세계에 대해 전반적인 그림을 아주 잘 그려주시기 때문에 한번쯤 완주하고 나면 앞으로 내가 뭘 공부해야 하겠구나 하고 감 잡는데 큰 도움이 된다. 여기서 명심할 것은 이걸 그냥 가벼운 마음으로 시청만 하라는거다. 설치하라는거 다 설치하고, 코딩하라는거 다 코딩하면서 너무 진지하게 보지 말고, 그냥 시청만 하면서 프로그래밍 세계에 대해 맛만 보는거다. 왜냐면 완전 초보자가 AWS 트고, 리눅스, 우분투 설치하고, 깃허브에 서브라임까지 생소한 툴들 만지작하다 보면 겁부터 먹고 그냥 접게되는 경우가 많기 때문이다.생활코딩으로 프로그래밍의 방대한 세계의 맛만 보자Step 2. 유데미에서 Ruby on Rails 프로그래밍 코스 완주 (2개월)요즘 온라인에서 프로그래밍 배우는 사이트가 정말 많아졌다. 유데미, 유다시티, 칸, 코세라, 린다닷컴 등등 내가 아는 곳만 해도 10군데는 된다. 개인적으로 처음 프로그래밍 공부하는거면 왠만하면 한글로 배우지 말고 영어로 배우는 것을 추천한다. 객체 지향, 변수, 매개변수, 상수, 선택자, 제어문... 등등 한글로 배우면 이런 한문어로 된 단어들로 가르치는데 솔직히 더 어렵기도 하고 어차피 나중에 코딩하다 막히면 가장 많이 찾아볼 사이트가 스택오버플로우일텐데 저거 다시 영어로 찾아보느니 아예 처음부터 저걸 object-oriented, variable, parameter, constant, control statement... 요런식으로 인식해 버리는게 더 낫기 때문이다.해외 온라인 사이트는 많은 사람들이 유다시티를 얘기하는데 나는 유데미를 추천한다. 이유는 간단하다. 우리의 목표는 프로그래머로 취직하는게 아니라 프로그래머랑 일을 같이 하는게 목표이기 때문이다. 유다시티는 진짜 프로그래머 취업을 목표하는 사람들을 위해 디자인되었기 때문에 일단 수강료가 비싸고, 퀴즈도 엄청 풀어야 하고, 출석률도 체크하고, 아무튼 엄청 까다로운데 비해 유데미는 내가 필요한 특정 스킬들만 골라서 퀴즈같은거 없이 (있어도 점수체크 없음) 빠르게 수강 가능하고, 수업료도 저렴한 편이고, 무엇보다도 강사들이 대부분 실제 현업 종사자들이어서 가르치는 내용이 매우 실무적이다. (유다시티는 대학 백그라운드에 좀 교수같은 느낌)유데미에는 내가 필요한 특정 분야만 골라서 빠르게 마스터가 가능한 구조로 되어 있다.아까 1단계의 생활코딩 40시간 라이브를 전부 들었다면, 이제 프로그래밍의 세계가 대략 클라이언트-서버 프로그래밍의 두 영역으로 구분될 수 있고 (하드웨어, OS 이런거 제외), 프로그래밍 언어가 뭔지 (Ruby, Python, PHP 이런거), 프레임워크가 뭔지 (Ruby on Rails, Django, CodeIgnitor 이런거) 정도는 감이 생겼을 거다. (저게 각각 뭔지는 몰라도 되고 그냥 카테고리화만 할 줄 알아도 된다는 뜻임)이 글에서는 간단하게 프로그래밍 언어와 프레임워크의 차이점만 짚고 넘어가 보자. 프로그래밍 언어는 말그대로 소프트웨어를 작성하기위해 필요한 언어규약을 의마한다. 즉 내가 미국사람과 대화를 하려면 영어라는 언어가 필요하듯이 어떤 웹서비스를 통해 사용자와 통신하려면 수 많은 프로그래밍 언어들 중 내가 필요한거를 사용한다는것으로 이해하면 편하다. 흔히 고급언어-저급언어 이런말이 있는데 뭐 고급언어가 더 좋은거고 저급언어가 나쁜거고 이런말이 아니고, 최대한 사람이 사용하는 언어와 가까우면 고급언어라 부른다. 반대로 컴퓨터가 CPU 레벨에서 비트단위로 직접 사용하는 언어는 저급언어라고 부르고 기계어, 어셈블리어 뭐 이런걸 말하는데 이런건 지금 몰라도 된다. (생활코딩에서 이고잉님이 빙산의 일각 그림으로 아주 명쾌하게 설명해 주신다) 즉, 우리 초보레벨에서 프로그래밍 언어라고 하면 Ruby, Python, PHP, Java, JavaScript, C, C++, HTML, CSS 요런거 말하는거라고 이해하면 되고, 저기서 HTML, CSS는 웹브라우저에서 지금 당신이 보고있는 페이지 띄워주기 위해 필요한 언어이다. 즉, HTML, CSS는 웹페이지 코딩하려면 반드시 들어가는 내용이고, 좀 현란한 인터렉션도 넣으려면 JavaScript도 이 범주에 필요할 수 있고, 나머지 Ruby, Python, PHP, Java, C들 중에서 당신이 기본 베이스로 할 프로그래밍 언어를 선택하면 된다는 뜻이다. 정리하면, |HTML, CSS, JavaScript (선택) | + |기본 베이스로 할 언어 한개| 요렇게 공부를 해야 한다는 뜻이다. 프레임워크는 저기 언급한 프로그래밍 언어들로 프로그래밍을 쉽게 할 수 있도록 필요한 뼈대를 미리 설계해 놓은것, 좀더 어려운 말로는 재사용이 가능한 클래스들과 그 관계들을 미리 정의해 놓은 패키치같은거라고 이해하면 되는데, 각 기본 베이스로 선택하는 언어별로 프레임워크가 정해져 있다. 예를들어 Ruby 언어를 공부하면 프레임워크는 Ruby on Rails, Python을 공부할거면 프레임워크는 Django를 같이 공부하는 식이다.정리하면, 생활코딩 강의로 그냥 저 전반적인 세계에 대해서는 맛만 보고 당신은 그냥 Ruby와 Ruby on Rails를 선택해서 배우도록 하자. 왜 Ruby on Rails로 공부해야 하는가에 대해서는 여러가지 내 나름의 이유가 있는데 첫째, 컨벤션이 매우 엄격해서 비록 처음에는 러닝커브가 조금 있는 편이지만 초보자가 실수할 여지를 최대한 줄여준다. 예를들어 내가 써야하는 구문이 살짝만 틀려도, 명령어 하나의 대소문자만 틀려도 레일즈는 아예 페이지 전체를 보여주지 않는다. 이게 장점일수도 단점일수도 있겠지만 초보자가 어느정도 돌아가는 웹사이트 만들기 위해서 말도안되게 코딩한게 지저분하게 돌아가는 웹사이트보다는 좀 오래걸리지만 한번 만들고 나면 제대로 돌아가는 웹사이트가 운영하는데 더 유리하겠다라는 내 개인적 의견이다. 둘째, 레일즈에는 Ruby Gem이라고 불리는 아주 강력한 서드파티 라이브러리가 있다. 물론 대부분의 프로그래밍 언어에서 서드파티 라이브러리는 다 있지만, 루비젬이 강력한 이유는 앞서 얘기한 첫번째와 유사하다. 다른 언어의 라이브러리는 초보자가 그대로 가져다 쓰면 분명 에러 백퍼일것이다. 내 상황에 맞게 어느정도 변형할 수 있는 수준의 프로그래밍 능력이 있어야 할텐데 문돌이 초보자에게 그걸 기대하긴 어렵다. 반면 루비젬은 (전부 다 그렇진 않지만) 진짜 옛날 MS도스 시절 디스크 갔다 꼽고 인스톨 클릭하면 알아서 프로그램 깔아주던 느낌으로 젬파일을 인스톨하면 대부분의 라이브러리가 알아서 장착된다.루비를 선택해야 하는 마지막 이유는 (또 가장 중요한 이유는) 실제 웹사이트를 Deploy하는데 있어서 아무런 지식이 필요 없이 가능하다는데에 있다. 당신의 컴퓨터에서 코딩한 웹페이지들을 실제로 유저가 사용하기 위해서는 크게 다음 3가지가 필요하다. 1/서버 - 당신이 만든 웹페이지들을 어딘가에 가져다 놔야 유저가 찾아올수 있다. 당신 컴퓨터로 유저가 직접 접속할 순 없지 않은가. 2/도메인 - 당신 집에 유저가 놀러오려면 집주소가 필요한것 처럼, 당신이 올려놓은 웹페이지를 호출하기 위해서 필요한 주소같은 거다. 3/Deploy (배포) - 위 준비된 내용들을 실제 서버에 설치하고 유저가 찾아올 수 있게 만들어주는 일. 이 3가지 영역은 보통 백엔드라고 부르고 아마존 클라우드 서버니 하는게 다 저거 매니징하기 위해서 활용하는 서비스 이다. 아무튼, 이 영역은 나같은 평범한 문돌이에게 넘사벽의 영역이다. 괜히 배우려고 낑낑댈 필요도 없다. 레일즈를 배우면 나중에 디플로이할때 '헤로쿠'라는 서비스를 활용할 수 있는데 (물론 다른 언어도 가능하지만 쓱 읽어보면 레일즈로 하는게 젤 편해보임) 저기 웹사이트에서 시키는 대로 코드 복붙하고 명령어 몇번 치면 디플로이가 정말 마법처럼 이루어지고 덤으로 공짜 도메인까지 준다!! (물론 일정 트래픽 이하에는 서버비도 공짜) 난 이 3번째 이유만으로도 초보자들이 첫 배우는 프로그래밍 언어로 루비만큼 강력한게 없다고 생각한다.서론이 너무 길었다.. 아무튼 결론은 아까 말한 유데미 사이트에서 Ruby on Rails로 웹사이트 만들기 프로그램을 찾아서 공부하라는 말을 하려고 이 긴 설명을 한 거다. 유데미에서 레일즈로 웹사이트 만드는 코스 찾아보면 한 20개는 넘게 검색되는데, 다음 기준에 부합하는 내용의 코스를 선택하도록 한다.1. Bootcamp가 제목에 있는 코스 - 부트캠프라고 명시한 코스는 대부분 웹서비스 하나를 실제 서버에까지 올려서 완전하게 구현하는 코스를 말한다.2. Ruby on Rails를 활용하는 코스 - 각 코스 실라부스에서 Ruby on Rails를 활용하는지 확인해 본다.3. 레이팅이 적어도 4.5 이상, 별점 준 학생수가 최소 200 이상인 코스를 선택한다.참고로 내가 들었던 과정은 The Complete Web Developer Bootcamp라는 코스인데, 이미 1년 넘은 과정이기 때문에 이걸 듣지 말고, 그냥 이 코스의 실라부스를 참고해서 유사한 최신 코스를 찾아서 완주하길 바란다. 보통 2-3달 코스로 디자인 되어 있는데 하루에 1시간정도씩만 투자하면 2달이면 완주 가능하도록 되어있다.내가 수강했던 레일즈로 웹사이트만드는 부트캠프 코스. 이 코스의 실라부스를 참고해서 수강할 코스를 결정하도록 하자.Step 3. 부트스트랩 (Bootstrap) 숙달하기 (1주일)부트스트랩이란 아까 잠시 짚고 넘어간 HTML, CSS등의 웹페이지를 구현하는 언어를 위한 프레임워크이다. 사실 HTML, CSS도 초보자가 자유자재로 내가 구상한대로 화면에 딱 띄우도록 코딩하는건 매우매우 어렵다. 심지어 버튼하나 중앙정렬 하는것도 쉽지 않다. 부트스트랩은 이런 일들을 마법같이 쉽게 해주는, 그리고 모바일 반응형 구현도 코딩 몇줄로 가능하게 해주는 프레임워크이다. 아마도 당신이 선택할 유데미 코스에서 부트스트랩 활용하는 법이 포함되어 있을 듯 한데, 거기서는 정말 기본적인 내용만 훑어볼게 뻔하니 1주일정도 투자해서 부트스트랩을 제대로 익히고 넘어가도록 하자. 부트스트랩 사용법은 유데미에서 저렴한 코스를 하나 찾아서 수강하는것도 좋은 방법이고 그리 어렵지 않으니 부트스트랩 공식 웹사이트에서 필요한 내용만 골라서 본인의 웹사이트에 이것저것 적용해보며 익히는것도 좋다.부트스트랩은 초보자에게 어려울 수 있는 CSS의 박스모델, 플로팅, 정렬 이런걸 마법같이 쉽게 해주는 프레임워크이다.Step 4. 부트스트랩 코딩 되있는거 통째로 다운받아서 내 포트폴리오 사이트로 변형해보기 (3주일)여기까지 왔으면 당신은 이미 웹서비스에 관해서는 개발자랑 어느정도 대화는 되는 수준이 되어있을 것이다. 하지만, 여기까지 왔는데 실제로 내가 직접 코딩해서 서버에 디플로이까지 해 본 사이트 하나 정도는 있어야 하지 않겠나? 하지만 아무리 유데미 코스 하나 들었다고 당장 멋진 포트폴리오 웹사이트 만드는게 그리 쉽지는 않을 것이다. 이 단계를 아주 쉽게 해주는 사이트가 하나 있다. 바로 부트스트랩에서 제공하는 연습용 웹페이지인 Start Bootstrap이다.  완성도 높은 부트스트랩기반 웹사이트 파일을 통째로 다운받아 공부할 수 있는 사이트 이다.여기 가면 아주 잘 디자인된 다양한 종류의 부트스트랩 기반 웹사이트 코딩 파일들을 통째로 다운받을 수 있다. 본인이 도전해 보고 싶은 스타일 몇개를 골라서 다운받은 후에 index.html과 연결된 css파일 구조를 잘 파악해 본 다음에, 본인의 포트폴리오 웹사이트를 한번 만들어 보자. 이미 뼈대가 다 잡혀있기 때문에 그 뼈대를 분석하는 것 만으로도 큰 공부가 된다. 박스모델을 어떻게 쓰고 있고, 각종 버튼들을 글리피콘이랑 폰트어썸을 써서 멋있게 구현하는 법, jQuery의 각종 트랜지션들을 어떻게 구현하고 있는지 등등을 배울수 있고, 이 중에서 내가 필요한 부분을 복붙해서 내 웹사이트에 붙여볼 수도 있다. 나는 이 당시 여기의 웹사이트들 중 3개를 적절히 조합해서 다음과 같은 내 포트폴리오 웹사이트를 만들었다.StartBootstrap에서 3-4개의 사이트를 조합해서 만들어본 내 포트폴리오 웹사이트이다.당신이 여기까지 오는데 아마도 3-4달정도의 시간이 필요할 것이다. 다시 한번 강조하지만, 이렇게 공부하고 나서 당신이 '나는 개발자 입니다'라고 말하면 x욕 먹기 쉽다. 개발자의 세계는 웹개발만 해도 그리 녹록한 세상이 아니다. 하지만 이렇게 3달정도 야매로 포트폴리오 웹사이트 하나 뚝딱 만들어낼 정도로 훑어내고 나면 개발자랑 어느정도 대화가 통하는 문돌이 PM이 될수는 있다. 또한 당신이 정말 뜻이 생겨서 앞으로 앱개발도 배우고 직접 스택오버플로우 찾아다니면서 버그도 고치고 하다 보면 한 반년쯤 후에는 진짜 기본수준의 프로그래밍은 할 줄 아는 문돌이 PM이 되어 있을 것이다. PM으로서 본인이 구현하고자 하는 기능의 기술스택에 대해 개발자랑 어느정도 대화도 가능할 것이다.다음 글에서는 같은 맥락으로 디자이너랑 일할 수 있는 PM되기, 또는 디자이너 없는 스타트업에서 PM이 디자이너역할하기의 야매스러운 방법론에 대해 논해보고자 한다.글쓴이는 스팀헌트 (Steemhunt) 라는 스팀 블록체인 기반 제품 큐레이션 플랫폼의 Co-founder 및 디자이너 입니다. 비즈니스를 전공하고 대기업에서 기획자로 일하다가 스타트업을 창업하고 본업을 디자이너로 전향하게 되는 과정에서 경험한 다양한 고군분투기를 연재하고 있습니다.현재 운영중인 스팀헌트 (Steemhunt)는 전 세계 2,500개가 넘는 블록체인 기반 앱들 중에서 Top 10에 들어갈 정도로 전 세계 150개국 이상의 많은 유저들을 보유한 글로벌 디앱 (DApp - Decentralised Application) 입니다 (출처 - https://www.stateofthedapps.com/rankings).스팀헌트 웹사이트 바로가기
조회수 3864

jekyll을 이용한 Github 블로그 만들기

Overview“githubPage로 기술 블로그를 만들자!” “jekyll로 만들면 한두 시간이면 가능할 거야!” 지난 1월, 브랜디 기술 블로그 제작 작업을 시작했습니다. 다양한 삽질과 험난한 여정의 결과물인 기술 블로그의 제작 및 커스터마이징 과정을 소개하겠습니다.GithubPage는 Github에서 공식적으로 운영하는 블로그 서비스입니다. 이곳엔 개발자들의 경험이나, 코드가 업로드되어 있습니다. 저장 공간도 무료로 제공되고, 도메인 연결도 편리하게 할 수 있지만, 무엇보다 GithubPage 혹은 GithubIO라고 하면 개발자 스멜이 풀풀 나기 때문에 선택의 이유가 되는거 같습니다.GitgubPage 제작 프로그램은 jekyll, HEXO가 가장 많이 쓰입니다. 브랜디의 기술 블로그는 템플릿의 종류도 많고, 더 어울리는 jekyll을 선택했습니다. jekyll 공식 사이트는 여기를 클릭하세요. 한국어도 지원하니 아주 멋집니다. 변역된 문서가 2015년 11월 23일 문서인 게 함정이지만 기능의 거의 유사하기 때문에 문제될 것은 없습니다. 1. 준비물을 챙기자!$ gem install jekyll $ jekyll new my-awesome-site $ cd my-awesome-site /my-awesome-site $ jekyll serve ▲ jekyll 설치 스크립트이제 브라우저로 http://localhost:4000 에 접속합니다.메인에 내거는 것처럼 설치와 실행이 쉽지만 몇 초 만에 되진 않습니다. 설치가 몇 분 정도 걸리고 ruby나 bundler같은 선행 조건이 갖춰져야 하기 때문입니다.ruby는 있는데 bundler가 없다면 아래와 같이 설치하면 됩니다.gem install bundler 설치가 잘 되고, 사이트 생성 후 실행을 했다면 브라우저와 함께 기본 페이지가 뜹니다. 설치가 성공했다!2. 1차 멘붕, 이제 무엇을?설치는 제법 쉽게 했지만 ‘이제 무엇을 해야 하나’ 막막하기만 합니다. 블로그 작성에 대한 아무런 가이드도 없고, 페이지나 이미지 추가 확인 등의 작업을 커멘드로만 하려니 힘들고 아찔하기만 합니다.커멘드 지옥..jekyll admin을 검색했더니 이런저런 아이들이 나옵니다. 그중에 jekyll 공식 플로그인을 선택했습니다. jekyll-admin 공식 사이트 이미지그런데 사이트 메뉴얼만 보고 설치하기 쉽지 않습니다. 이제 막 jekyll 띄웠을 뿐인데 플로그인은 어떻게 추가하는지 알 길이 없습니다. 이런저런 삽질을 거듭하고 안 되는 영어를 해석하다 보니 얼떨결에 성공했습니다.추가한 프로젝트 root에 보시면 Gemfile이 존재합니다.아마도 사이트 제너레이트 시 실행되는 스크립트인 것 같습니다. 파일을 열고 아래와 같이 추가합니다.# 아래와 같이 한줄 추가해주세요 gem 'jekyll-admin', group: :jekyll_plugins 프로젝트 root로 이동해 설치를 요청합시다.bundle install 달라진 게 없어 보여도 http://localhost:4000/admin 으로 접속하니 아뉫! 관리자가 설치되었습니다. 이제 한시름 놓입니다.3. 마크다운, 넌 누구?마크다운을 잘 안다면 넘어가도 됩니다.관리자를 설치하고 나면 그나마 좀 할만하지만 막상 글을 쓰려고 보니 무언가 다릅니다. HTML이나 위지윅 에디터도 아니고 Textarea만 덩그러니 있기 때문입니다....마크다운은 위키나 Github페이지 설명 작성 등에 쓰이는 언어입니다.1) HTML을 어느정도 한다면 문법만 읽어도 금방 이해할 수 있습니다. 생각보다 어렵지 않아서 간단한 문서 작성은 수월하게 가능합니다. 무엇보다 코드를 붙여넣을 때 아주 좋습니다. ``` PHP 코드 내용 ```위의 그림처럼 작성하면 자동적으로 신텍스 하이트라이트가 적용되니 개발 코드를 전달하기 편리합니다.4. Posts? Pages? Static Files? Data Files?확실히 jekyll은 그동안 봤던 블로그나 워드프레스 등 유명한 블로그와는 많이 다릅니다. 일단 개념부터 짚어보겠습니다. PostsPost는 한 개의 글을 지칭합니다. 블로그의 글 하나입니다. 어느 정도 구축이 되면 Post에서 글만 작성해도 쉽게 운영할 수 있습니다.PagesPost처럼 계속 추가되는 형태가 아닌 고정 페이지를 작성할 때 씁니다. About이나, 채용, 회사소개 등 Post와 분리가 필요한 글을 작성할 때 유용합니다.Static Files정적 리소스를 올리는 기능입니다. 생각보다 버그가 많아서 사용하기 쉽지 않습니다. 저는 이 기능을 커스터마이징해서 약간 쓰기 쉽게 바꾸었지만 쉽지는 않았습니다. 자세한 관리자 커스터마이징은 나중에 다루겠습니다.Data Files정적 데이터를 다루는 기능입니다. 저자 관리나 공통 변수를 담아두면 편리하게 쓸 수 있는 기능입니다. 역시나 버그가 넘쳐납니다. 당분간은 그냥 파일을 직접 수정하는 게 나을 겁니다.5. 블로그 제목 등 설정을 바꾸고 싶다면관리자의 configuration 메뉴를 이용하거나, 프로젝트 루트에서 _config.yml 을 열고 수정해도 됩니다. 사이트에서 사용할 전역 변수나, 플로그인, 기본값 등을 관리해주기 때문에 자주 수정하는 파일입니다. 제목을 변경하려면 title을 찾아서 변경하면 됩니다. 그외의 하단 문구는 buttomtitle을 변경하면 됩니다. 아래 보이는 각종 정보들은 맞게 수정하면 되고, social: 밑에 있는 정보들은 나중에 페이스북 공유나, 트위터 공유 등으로 사용할 수 있습니다. 해당 정보가 없거나 공유를 원치 않는다면 share를 false로 변경합니다. _config.yml은 수정 후 재시작을 해야만 반영되므로 jekyll를 다시 실행하면 됩니다.6. 테마를 적용하자테마 기능은 jekyll를 선택한 가장 중요한 이유였습니다. 멋진 디자인과 추가로 구현된 특수한 기능들은 jekyll이 가지고 있는 큰 메리트입니다. 테마를 사용하려면 소스를 다운로드 받고 압축을 해제해 사용하거나 git checkout 하면 됩니다. 해당 폴더로 이동해 실행하면 테마를 쉽게 사용할 수 있습니다.jekyll serve jekyll은 테마가 완성된 프로젝트 개념이기 때문에 바로 사용이 가능하지만 마이그레이션 이슈가 있습니다. 마이그레이션은 _post의 있는 파일과 _page에 있는 파일을 그저 테마 프로젝트 폴더에 덮어쓰기하면 됩니다.아쉽게도 _config.yml파일은 다시 세팅하는 게 빠릅니다. 어드민 설정 부분도 다시 하면 됩니다. 테마마다 약간씩 기능이 달라 마이그레이션이 안 되는 경우도 있으니 테마는 초기에 선택하는 게 좋습니다. 브랜디 랩스는 Centrarium 테마를 적용했습니다.테마가 적용된 화면7. 글에 이미지를 어떻게 넣을까?글을 쓰면 참고자료로 쓸 이미지도 필요합니다. static file에 업로드 기능이 있지만 업로드를 하면 프로젝트 루트 폴더에 업로드되어 관리상 좋지 않습니다. 앞서 공유한 것처럼 해당 기능 개선에 대해서는 다루지 않을 것이기 때문에 수기로 이미지를 관리하는 방법을 소개하겠습니다.로컬 프로젝트 기준에서 _site는 제너레이트된 최종결과라고 할 수 있습니다. 그래서 _site 폴더에 assets와 같은 폴더가 있으나 그 폴더에 올리면 덮어쓰기와 동시에 초기화 되므로 반드시 프로젝트 루트의 assets에 파일을 올려주시면 됩니다. 폴더를 생성하는 것도 문제 없으므로 포스팅마다 이미지를 나누길 권장합니다. 이미지가 폴더에 복사가 되었다면 이제 글에 넣어봅시다.마크다운 위지윅을 이용해도 좋고 이미지 부분을 HTML코드롤 사용해도 좋습니다. 마크다운으로 이미지를 추가할려면 아래처럼 사용하면 됩니다. ![이내용은 alt속성으로 치환됨](/assest/20180118/test.jpg "이 내용은 타이틀로 치환 됨") assets/test.jpg적용된 이미지이미지의 사이즈나 정렬을 변경하는 건 다음에 다루겠습니다.8. Gnav 변경은 어떻게 할까?커스터마이징한 Gnav영역테마도 적용했고, 글도 쓸 수 있지만 안 쓰는 기능 삭제를 비롯해 손볼 곳은 아직 많습니다. (분명 한두 시간이면 된다고 했던 일이 2주째 수정 중입니다…) 화면 구성을 고치려면 프로젝트에 포함되어 있는 템플릿 파일을 고쳐야 합니다.템플릿은 Liquid 라는 언어로 구성되어 있으며, 문법이 좀 난해하지만 충분히 헤쳐 나갈 수 있습니다. 다만 어디서부터 어떻게 고쳐야 하는지를 파악하는 게 어렵죠. 문법은 공식 사이트를 참고하고, 사용 가능한 변수는 여기를 참고하면 됩니다.사용 가능한 변수는 site와 page로 나눌 수 있습니다. site는 _config.yml 설정한 내용과 jekyll이 지원하는 전역 변수들입니다. page는 해당 페이지에 지정된 세부 변수들입니다. 글의 제목이나 경로 내용들은 기본적으로 세팅되어 있습니다. 추가적인 값을 다루려면 post를 작성하면서 meta정보를 추가하면 됩니다.템플릿의 시작파일은 index.html이고, 페이지에 layout이 지정되었다면 _layouts 안에 있는 [layout].html이 됩니다. 기본적 틀은 _layout/default.html에서 파생됩니다. 그외 파츠로 사용되는 HTML파일은 _includes에 넣고 `{% include header.html %} 같은 방식으로 추가하면 됩니다. 우리 변경하려는 파츠는 header.html에 있습니다. site.pages에는 모든 페이지가 들어있기 때문에 그중에 gnav가 지정된 글만 상단에 노출되게 했습니다. 그리고 상단 글에 대한 정렬이 없기 때문에 좋은 방식은 아니지만 1~10까지 숫자를 기입하면 순서대로 나오게 코드를 구성했습니다. (site.pages에는 posts와 pages가 같이 나옵니다.){% for i in (1..10) %}   {% for page in site.pages %}     {% if page.title and page.gnav == i %}     {{ page.title }}     {% endif %}   {% endfor %}  {% endfor %} 글에 옵션을 지정한 화면이제 pages에서 상단에 노출하고 싶은 글만 gnav를 숫자로 부여해 노출할 수 있게 변경했습니다.9. 스타일 변경은 어떻게 할까?sass로 구성된 스타일의 변경은 심도있게 다루지 않으려고 합니다. sass를 처음 사용한 것도 있지만 내용이 너무 깊어지기 때문입니다. 스타일변경은 _sass 밑에있는 scss 파일을 변경하면 되고, 템플릿마다 구조가 다르기 때문에 열심히 찾는 수밖에 없습니다.10. 저자 기능을 추가해보자 (1)최고의 난이도를 자랑하는 신규 기능 추가입니다. 브랜디의 기술 블로그에서는 작성자를 클릭하면 작성자의 글만 따로 모아서 볼 수있습니다. 하지만 이 기능은 공식적으로 지원되는 것이 아니기 때문에 처음부터 만들어야 했습니다. 완성된 작성자 기능위의 이미지와 같은 기능을 구축하려고 collection을 사용했습니다. collection은 posts나 pages와 같이 그룹핑된 글 목록을 이야기 합니다. posts나 pages는 기본 세팅되어 있고, 약간(?)의 설정 변경으로 collection을 추가할 수 있습니다. 작성자의 메인 페이지가 필요하니 authors라는 collection을 추가해보겠습니다.# _config.yml collections:   authors:     title: Authors     output: true jekyll을 재시작하면 아래와 같이 Authors가 관리자에 추가된 것을 볼 수 있습니다.authors는 작성자 메인 페이지만 생성하면 되므로, 내용에는 작성자에 대한 소개글만 간략히 쓰면 됩니다. jekyll admin에 한글 버그가 있기 때문에 우선 영어로 작성하고, 제목을 다시 한글로 수정하면 됩니다.포스팅마다 저자의 정보가 공통적으로 나와야 하기 때문애 위의 전역변수에 authors를 추가해 따로 관리하게 했습니다.# data/authors.yml # authors 공용 변수   - name: chunbs     koname: 천보성 팀장     email: [email protected]     position: R&D 개발2팀     img: /assets/profile/chunbs.jpg   - name: kangww     koname: 강원우 과장     email: [email protected]     position: R&D 개발2팀     img: /assets/profile/kangww.jpg 그리고 작성자의 포스팅을 엮어주려고 작성자의 아이디가 같을 때, 포스팅으로 나오게 구성합니다.{% if post.author %} {% for author in site.data.authors %}   {% if post.author == author.name %}   {{author.koname}}   {% endif %}  {% endfor %}  {% endif %} 11. 저자 기능을 추가해보자 (2)데이터가 준비되었다면 저자 레이아웃을 추가해야 합니다.(이거 도대체 언제 끝날까요) 저자가 작성한 글만 노출되어야 하는 게 어려울 수도 있지만 jekyll의 구동 원리를 이해하면 손쉽게 할 수 있습니다.jekyll은 내용 수정이 발생되면 전체를 다시 컴파일하는 구조입니다. 다시 말해 일부 파일이 변경되면 노출되는 모든 html파일을 다시 랜더링해서 write하는 것입니다. author의 각 작성자 페이지는 컬렉션에 포함되어 있기 때문에 랜더링이 발생하고 site.posts엔 작성된 모든 페이지 정보가 있습니다. site.posts를 foreach를 돌리고, 저자가 일치하는 페이지만 리스트로 보여줍시다.{% for post in site.posts %} <!-- author 정보가 저자와 같은 경우만 리스트로 출력한다. --> {% if post.author == page.author %}       {{ post.title }}         {{ post.content | strip_html | truncatewords: 25 }}         {{ post.date | date: "%Y-%m-%d" }}           {% if post.author %}         {% for author in site.data.authors %}           {% if post.author == author.name %}           {{author.koname}}           {% endif %}         {% endfor %}       {% endif %}       {% if forloop.last == false %} {% endif %}   {% endif %} {% endfor %} Conclusionjekyll admin은 은근히 버그가 많습니다. 그래도 ‘md파일을 메모장으로 작성하세요’라고 하는 것보단 편하죠. 다양한 기술을 사용하기 때문에 어려울 수도 있겠습니다. 글에서 소개할 수 없거나, 너무 깊어지는 내용은 소개에서 제외했습니다. 양해를 부탁드립니다. 대신에 브랜디 랩스는 저의 피땀 눈물로 만들어졌다는 걸 기억해주세요… 기타jekyll의 기본값 설정을 이용하면 layout과 같은 공통적인 부분을 쉽게 설정할 수 있다.# _config.yml defaults:  - scope:     path: ''     type: posts   values:     #permalink: "/blog/:title/"     layout: post     cover: /assets/default.jpg     author:  - scope:     path: ''     type: authors   values:     layout: author     cover: /assets/author.jpg     subtitle: ~담당하고 있습니다.     author: 영문이름 jekyll admin이 버그가 많아서 업로드 기능은 커스터마이징 했다. 루비와 UI코드를 고쳐서 다시 빌드하는 어지러운 작업을 했다.만약 버그를 고치기 어렵다면 IDE로 파일을 직접 수정하는 게 안전하다. 참고 1)마크다운 작성법은 여기를 참고하세요.글천보성 팀장 | R&D 개발2팀[email protected]브랜디, 오직 예쁜 옷만#브랜디 #개발문화 #개발팀 #업무환경 #인사이트 #경험공유
조회수 805

이브(EVE)의 Concept from Nature

Instinctus Co., Ltd. 는 ‘누구나 안전하게 사랑할 권리가 있다’는 비전을 바탕으로 보다 더 건강하고 안전한 성문화를 만들어나가기 위해 노력하는 소셜벤쳐입니다. 자연에서 영감을 얻은 EVE의 로고는 나뭇잎의 잎맥을 연상시키는 그래픽을 통해 친환경성에 대한 EVE의 철학을 고스란히 담고 있습니다.What we believe누구나 안전하게 사랑할 수 있어야 한다고 믿습니다. 당연한 말일지도 모르지만, 현실은 그렇지 못할 때가 많습니다. 모르는 사이 유해물질에 노출되어온 소비자, 편견으로 콘돔을 구매하는 것조차 쉽지 않은 청소년, 타인의 왜곡된 시선 때문에 피임에 참여하기도 어려운 여성, 사랑할 권리마저 지탄 받는 성소수자까지도 – 숨기고 감추는 것은 오히려 우리를 더 해칠 뿐입니다. 청소년이든 성인이든, 여성이든 남성이든, 성소수자든 성다수자든, 장애인이든 비장애인이든, 누구나 안전하게 사랑할 권리가 있습니다.안전한 사랑은 비단 protected sex 뿐만이 아니라, 안심하고 쓸 수 있는 성분의 안전성을 의미하기도 합니다. 생식건강을 가장 먼저 생각하기에, 자연을 닮은 제품을 지향하기에, 소비자의 권리와 기업의 양심을 잃지 않기에 – 그래서 EVE는 성인용품이 아닌 섹슈얼 헬스케어(Sexual Healthcare) 브랜드 입니다.
조회수 1299

숙박업계 어벤져스! 옐로오투오 ‘온라인 숙박사업부’

안녕하세요! 옐로모바일 사내기자 Y입니다. 멋진 패밀리사의 서비스와 팀문화를 소개하는 옐친소 인터뷰! 20번째 인터뷰를 장식할 주인공은 바로바로 옐로오투오의 ‘온라인 숙박사업부’입니다:) 숙박시장의O2O 혁신을 선도할 숙박업계의 어벤져스! 그들이 전망하는 앞으로의 숙박시장 트렌드는 무엇일까요? 온라인 숙박사업부의 이야기를 듣기 위해 임승민 본부장을 찾았습니다! 안녕하세요:) 옐로인들에게 ‘온라인 숙박사업부’에 대해 간략히 소개 부탁 드립니다. 안녕하세요 옐로 여러분! 온라인 숙박 사업부는 국내외 약 7천여개의 펜션, 모텔, 호텔, 한인게스트하우스 등의 숙박업체들과 여행객들이 온라인을 통해 만날 수 있도록 ‘가교(B2B/B2C)’ 역할을 하고 있습니다. 7천여개라니, 엄청나네요! 온라인 숙박 사업부와 함께 하는 멤버들은 어떻게 되나요? 온라인 숙박 사업부는 전국 펜션 실시간 예약 사이트인 ‘우리펜션’, 숙박공간 커머스 ‘핀스팟’, 모바일 호텔 예약 서비스 ‘핫텔’, 그리고 전세계 한인 게스트하우스 예약 서비스 ‘한인텔’로 구성되어 있습니다. 여기에 채널 제휴 및 사업개발 팀과 지원팀이 더해졌는데요, 저희끼리는 숙박업계의 어벤져스(?)라고 부르고 있습니다ㅎㅎ어벤져스라니ㅋㅋㅋ 뭔가 웃기면서도 어울리네요! 온라인 숙박 사업부의 사업모델은 무엇인가요? 저희 핵심 사업모델은 중개 수수료입니다. 온라인 숙박사업부 4개의 자체 채널(우리펜션/한인텔/핀스팟/핫텔) 또는 네이버, 인터파크 등의 제휴 채널을 통해 고객과 숙소를 연결하고 이에 대한 중개수수료를 수수합니다.  현재 제휴중인 숙소와 채널의 현황은 어떠한가요? 말씀드린 것처럼 약 7천여개의 숙박업체 DB를 보유하고 있는데요, 카테고리별로 보면 펜션 3,100개, 모텔 2,100개, 호텔 1,000개, 한인게스트하우스 800개 입니다. 또한 OTA, 숙박커머스, 포털, 오픈마켓, 소셜커머스 등의 다양한 채널과 제휴를 맺고 있습니다:)혹시 해외 채널과도 제휴를 하고 있는지요?네, 국내 인바운드 여행객(약 13백만)의 대다수를 차지하는 중국 1위 OTA(Online Travel Agency)인 Ctrip과 제휴 중에 있으며, 전세계 여행객을 커버하는 미국의 대표 OTA Expedia와 제휴를 완료하였습니다. 특히 Expedia는 Hotels.com, Trivago등의 서비스도 운영 중이라 더 많은 여행객을 커버할 수 있죠. 앞으로 인바운드 여행객이 더욱 늘어날 것으로 기대되는 동남아 및 일본 OTA와도 제휴를 활발히 추진할 계획입니다.조직 변화 이후 빠르게 성장했는데요, 그 비결이 궁금합니다. 우선 온라인 숙박 사업부의 모든 인원이 한 마음으로 프로세스 효율화를 위해 노력해왔고 작년 하반기부터 여기어때, 네이버 등의 대형 채널과의 제휴플랫폼을 강화해온 것이 좋은 결실로 나타난 것 같아요. 특히 제휴채널을 확대한 펜션 카테고리의 경우 이번 1분기 매출이 작년 1Q대비 200% 이상 성장했습니다:)독특하거나 자랑할 만한 기업문화가 있나요?요즘 ‘워라벨’이라고 하죠. 직원들의 Work-life balance를 위해 월 1회 반차데이, 1년에 총 6일 여성데이, 8세 미만 자녀가 있는 직원에게 아동병가를 사용할 수 있도록 하고있어요. 물론 모두 유급 휴가입니다:) 또 임직원들의 독서활동을 독려하기 위해 도서비도 지급하고 있습니다. 타사 대비 옐로오투오의 온라인 숙박사업부의 가장 큰 강점은 무엇인가요? 우선 상품 경쟁력을 꼽을 수 있는데요, 저희는 중저가-고가, 도심-지방을 모두 커버하는 최대 규모의 숙박상품을 확보하고 있으며, 호텔/모텔/펜션/한인 게스트하우스 카테고리를 통합적으로 제공할 수 있는 유일한 사업자입니다. 또 하나의 강점은 옐로오투오 가족사간 협업입니다. 옐로오투오 내부에 업계 top 객실관리시스템 기업인 씨리얼과 가람정보시스템 등과의 활발한 협업이 우리 온라인 숙박사업부의 큰 강점이라고 생각해요.  이걸 물어보지 않을 수 없겠죠! 앞으로의 숙박시장 트렌드는 무엇이라고 생각하시나요? 첫번째로 모텔, 펜션, 게스트하우스 등 ‘중소형 숙박시장’의 시대가 도래할 것이라고 생각합니다. 기존 부정적인 이미지에서 탈피한 고급화 전략을 택하는 모텔들이 늘어나고 있고 중소형 숙박업체들의 서비스와 시설은 표준화 되고 있죠. 두번째로는 ‘Hyper 경쟁’이라고 생각합니다. 숙소<->예약관리<->도매(B2B)<->소매(B2C)의 영역 별 강자와 통합 사업자 간 경쟁이 온/오프라인을 가리지 않고 벌어지고 있고 앞으로도 이러한 트렌드는 이어질 것으로 예상합니다.마지막으로 아시아 국가를 중심으로 인바운드 여행이 꾸준히 증가할 것입니다. 젊은 인바운드 여행객이 확대되며 호텔뿐 아니라 합리적인 가격의 중소형 숙박시장도 함께 활성화 될 것으로 예상합니다. 올해 온라인 숙박사업부의 목표는 무엇인가요? 정량적으로는 사업부의 체질을 개선하여 연간 영업이익을 달성하는 것이 올해 목표입니다. 정성적으로는 중소형 숙박시장의 온라인화를 선도할 수 있는 기반을 만들기 위해 구성원들 모두가 열심히 노력 중입니다. 마지막으로 한 말씀 부탁드릴게요:)옐로 가족들과 숙박시장의 O2O 혁신을 선도할 온라인 숙박 사업부의 여행을 지켜봐 주세요~ 옐로오투오 파이팅! 옐로모바일 파이팅! 숙박 사업부의 즐거운 워크샵
조회수 1324

스타트업에 다니는 아빠

스타트업에 다니는 두 아이의 아빠인 나의 하루 일과를 소개해 본다. (광화문으로 이사 오기 전 사당 버전이다)7시첫째가 깨워 준다. 최근 첫째는 아빠가 아침을 준비하는 동안 TV를 조금이라도 보기 위해 빨리 일어난다. 아내와 함께 두 아이의 아침을 먹이고 어린이집 등원 준비를 시킨다. 9시집에서 출발해서 회사로 향한다. 조금 여유 있게 집에서 나오면 일부러 5분 정도 더 걸리지만 환승이 없는 2호선을 탄다. 자리에 앉게 되면 노트북을 꺼내 오늘 해야 할 일을 정리한다.10시 매일 10시부터 팀의 데일리 미팅이 있다. 항상 오늘의 나의 목표를 이야기 하지만 말한 만큼을 완료하는 날은 흔치 않다. 늘 욕심은 앞서고 할 일은 넘친다.12시입사 후 한 달은 회사에 계신 분들과 친해지기 위해 나가서 점심을 먹었다. 그 이후 한참 동안은 시간이 부족해서 점심을 근처 편의점에서 사 먹었었다. 식사를 마치면 바로 일을 한다. 20시 아내에게 8시 30분까지 간다고 이야기해놓고, 일을 하다 보면 항상 시간이 빠듯해진다. 같이 논의를 하다가 혹은 같이 디버깅을 하다가도 12시를 넘긴 신데렐라처럼 빠져나오게 된다. 10번 중에 8번은 뛰어서 퇴근을 한다.  물론 회사에서 집까지 뛰어다닌 것은 아니고 지하철역과 회사 사이를 그리고 지하철역에서 집 사이를 뛰어다닌다. 퇴근하는 지하철에서는 테더링을 해두고 회사에서 하던 일을 보통 이어서 한다. 많은 사람들이 회사에 남아 일을 하고 있기 때문에 슬랙으로 대화를 이어가고, 마무리 못한 코드를 정리하기도 한다.20시 30분 간단하게 저녁을 먹고 아이들 목욕을 시킨다. 첫째를 목욕시키면서 나도 같이 목욕을 한다. 그러면 30분 뒤에 아내는 둘째를 재우러 들어간다. 평일에는 아내와 거의 대화할 시간이 없다. 둘째는 목욕하는 시간과 출퇴근할 때 한 번씩 안아주는 것을 제외하면 평일에는 거의 놀아주지 못한다. 미안한 마음이다. 21시 첫째와 놀아준다. 자동차 놀이를 할 때도 있고 책을 읽어 줄 때도 있다. 이제 말도 꽤 늘어서 대화하는 재미가 있다. 하지만 놀아주는 동안에도 슬랙을 확인하지 않으면 불안하다. 중간중간 확인을 하고 답을 한다. 22시 첫째와 같이 잠자리에 든다. 보통 20분 정도면 잠이 든다. 아들이 잠든 것 같으면 빛이 새어나가지 않도록 이불을 덮어쓰고 웹툰을 보거나 페북을 하며 10분 정도를 논다. 푹 잠든 것 같으면 슬그머니 잠자리에서 빠져나온다. 간혹 빨리 나오려다가 아들에게 “아빠. 어디가?” 라며 걸리는 경우도 있다. 그 전날 늦게 까지 일을 하거나 공부를 한 경우에는 첫째보다 먼저 잠드는 경우도 있다. 22시 30분간단한 집안일을 한다. 거실 정리를 간단하게 해두고 국을 끓이거나 한 그릇 요리들을 준비한다. 23시 드디어 나만의 시간이다. 회사에 급한일이 있거나 테스트해봐야 할 아이디어가 있는 경우 회사일을 한다. 보통은 그렇다. 그렇지 않으면 공부를 하거나 글을 쓴다. 대부분 컴퓨터를 쓰게 되기 때문에 슬랙을 통해서 회사 업무에 대한 의견을 내거나 회사 사람들과 시답잖은 채팅을 하기도 한다.1시 보통 1시에서 2시 사이에 잠자리에 든다. 이런 식의 생활을 8퍼센트에 입사한 후 6개월째 이어오고 있다. 이 일과에서 벗어난 것은 회사 회식을 포함하고도 손꼽을 정도다. 개인적인 약속은 단 한 번도 잡지 않았다. 모임에 초청해 주는 친구들에게 미안한 마음이다. 회사 동료들과도 따로 술자리를 만들어 많은 이야기들을 나누고 싶은데, 그런 기회 또한 거의 없었다.큰 빈틈없이 팍팍하게 살아간다.  CTO와 가장 양쪽 모두에 내가 만족하지 못하니 삶에 여유가 부족할 수밖에 없다. 특히 입사 초반에는 회사 내에서 나를 증명해 내야 한다는 압박감에 시달려서 잠을 줄였었다.(회사에서 준비해준 아빠와 아들의 커플 티셔츠)내 마음의 많은 부분이 회사에 가있다 보니 가족들에게 항상 미안한 마음이다. 상대적으로 안정적이고 대우도 좋았고 가족과 함께 하는 시간도 많았던 전 직장을 떠나서 내게 많은 곳을 요구하는 곳으로 옮겨 왔다. 이 결정이 나를 위한 것인가? 우리 가족을 위한 것인가?라고 묻는다면 나를 위한 선택이었다. 나의 행복을 위해 가족의 행복을 양보받았다. 아이들과 많은 시간을 함께 보내지 못하고 아이들과 함께 하는 시간에도 일이 머리에서 쉬이 떠나지 않는다. 그럼에도 불구하고 8퍼센트에 지금보다 더 많은 시간을 쓰고 싶다. 미혼이거나 자녀가 없는 경쟁자들은 더 많은 시간을 회사에 쏟고 있을 거다. 바쁜 일이 있으면 회사에서 자면서 일을 할 수도 있을 테고, 특별한 일이 없다면 주말에도 나와 일을 할 수도 있을 거다. 내가 결혼 전에 그랬던 것처럼. 그리고 내가 퇴근 한 이후에도 전우들은 회사에 남아서 열심히 일을 하고 있다. 나는 그들의 희생에 기대어 성공을 바라고 있는 것이 아닌가 하는 생각이 종종 든다. 스타트업이라는 선택을 한 만큼 그 선택을 옳게 만들기 위해서는 노력만이 남아 있다. 조금 더 불태워서 회사일을 하고 싶지만 시간의 분배 면에서 보면 지금 이 정도가 장기적으로 지속할 수 있는 최선이라고 생각한다. 앞으로 내가 할 수 있는 것은 질적인 개선이다. 순간순간에 최선을 다하자. 단 하나의 답이다.#8퍼센트 #에잇퍼센트 #스타트업 #가장 #CTO #워라밸 #워라벨 #워크라이프밸런스
조회수 1526

스타트업의 운, 창업자의 도박

우리는 불확실성의 시대에 살고 있다.더군다나 창업자라면 더더욱 내일이 불확실한 시간을 보내고 있다.나 역시 매일 밤을 불면증과 두려움을 가지고 하루를 정리한다.페이스북에서 어떤 페이지 광고를 보고 흠칫 놀랐다.스타트업에게 점을 봐준다는 내용.물론 재미로 클릭해 보는 것에 뭐라 깐죽댈 수는 없다.다만 헛웃음만 나올 뿐.인생은 한 번이라며 과감하게 지르는 분들과는 달리우리는 인생이 한 번이라 더 신중해야 한다.사업이란 게 모 아니면 도라는 식의 도박 정신은너무 무책임한 생각이다.사업에 운이 크게 작용하는 바를 부인하지는 않는다.내가 바라보는 운은 크게 두 가지로 나뉜다.운에는 근거 있는 운과 근거 없는 운이 있다.1. 근거 있는 운만들어지는 운이다.사람을 통해서, 과거의 행동에 의해서,현재의 노력을 통해서 다가오는 기회와 흐름이랄까?2. 근거 없는 운진짜 아무 상관없이 다가오는 운이다.마치 카오스 이론처럼 북경에서의 날갯짓이샌프란시스코에서 허리케인이 되듯이...하늘의 뜻으로 밖에 설명하기 힘든 기적이랄까?(출처: 구글, 직썰 사이트, 망설임)경영을 하면서여러 선택지 앞에서 우리는 망설인다.고민하고, 이것저것 재가면서...길을 찾는다.모든 창업자들은최선이 아니더라도 최악은 안 되길 바라면서...운도 따르길 소원한다.하늘은 스스로 돕는 자를 돕는다고 했던가.스스로 자문하고, 가능한 모든 수단과 방법을 동원하여가장 합리적인 방안을 도출해야 한다.그리고 우리가 더 이상 손댈 수 없는영역까지 다다랐을 때 비로소 하늘에 맡겨야 할 것이다.흘린 땀과 잠 못 이루고,포기해왔던 기회비용들에 대한보상에 플러스 알파로 운이 따라주길 원한다.그리고 그 운이란 녀석이근거 있는 운이면 더할 나위 없이환영하겠다.그러나 우리는 정말 최선을 다했던가,더 이상 방법이 없던가,우리 손에서 공이 떠나갔다고 생각하지만사실은 아직도 룰렛은 돌아가고 있고공은 손에 쥐어져 있는 건 아닐까?근거를 만들었던가,인과관계가 있는 운을 만들어가는데부족함이 없었던가.막연한 낙관과 덧없는 희망으로근거 없는 운을 기대하고 있는 것은 아닌가.스타트업을 시작하면서,다시금 우리 자신을 돌아본다.우리는 누구인가.어느 번호 또는 어느 색깔에 공이 들어갈지가슴 졸이며, 오늘의 운을 시험하듯이자금과 시간... 그리고 동료들을칩으로 베팅하는 플레이어가 돼버린 것은 아닌지.수많은 연습과 숙달된 경험으로어느 곳에 공을 넣을지 계산하고예상하는 포인트를 위해 힘 조절을 하고 있는붉은색 명찰의 딜러가 될 것인가.간혹 플레이어 이기는 경우가 종종 있다.주위의 사람들이 환호하고, 운을 부러워한다.하지만 시간은 누구의 편인가.한 번, 두 번은 플레이어의 운이 뒤를 봐줄지라도,플레이 횟수가 늘어나고 시간이 지날수록이기는 횟수와 칩의 개수는... 누구의 것이 되는가.나는 게임에 참여한 플레이어일까?아니면 게임을 조율하는 딜러일까?모두에게 운은 다가온다.이게 될지 안 될지는운에 의존하는 도박이 아니라노력과 확률이란 근거에살짝 "운"이라는 조미료가 들어간다.(출처: 만화 바텐더, 운에 대하여, 참고로 전 노~오력만을 외치는 꼰대는 아닙니다)운이 최고의 영향력이라고?운이란 녀석은어떤 이에게는 행운이 되고어떤 이에게는 불운이 된다.운을 활용할 준비가 되어 있는가,운을 잘못 사용하면, 오히려 화가 된다.운이란 놈이기회란 이름으로 다가올 수도,사람이란 이름으로 다가올 수도,돈이란 이름으로 다가올 수도 있다.기회가 위기가 될 수 있고,사람이 조직을 무너뜨릴 수도 있고,돈이 정신을 홀릴 수도 있다.하늘의 별자리를 보고,카드의 그림을 보고 사업의 방향을 정하는 것!근거 있는 운이라고 보는가.아무 노력 없이 다가온 운에 노예가 되어다음번에도 그 운에 기대려고 하진 않는가.우리의 회사와우리의 동료와우리의 가족의 목숨 값이 그리 가벼운 건지진지하게 무게를 달아보아야 한다.아무 연관성 없는 점에 의존하거나,가당치 않은 운을 기다리며베팅하듯 사업하지 말자.임진왜란 당시이순신 장군님은 어떻게 23번이나 왜군에게 승리했던가.(물론, 보는 시각에 따라서 24전이라고 할 수 있지만... 그런 역사적인 논란은 제외하고)23번의 베팅이 아니라이길 수 있는 조건을 클리어한 싸움이었기 때문이다.거기에 조수의 간만, 유속의 변화폭, 전투시간의 타이밍 등의근거 있는 운이 반복되는 일상과 다름없이 다가와 주었다.그 지역을 잘 알아야 하고,공부해야 한다.직접 눈으로 봐야 하고,물길을 잘 아는 사람에게 자문을 구하기도 한다.동료들을 다독일 줄 알아야 하고,강한 제약을 걸 줄도 알아야 한다.적군이 언제, 얼마나 올지를 알아야 하고,우리 편의 장점이 무엇이고,약점이 무엇인지,적군을 효율적으로 이길 수 있는전략은 무엇이고 그러한 사례가 있었는지를 찾아야 한다.계획대로 안 되었을 때, 대안은 무엇이고,승리하더라도그다음에는 어떤 수를 두어야 할지계획을 세워야 한다.23번 중에 고비도 있었다.계획처럼 따라주지 않은 아군들도 있었고,달랑 12척이 남은 배와 패잔병들을 끌고 나가야 하기도 했다.남은 자산이 없고,시간도 얼마 없으며,사람도 없다.이런 절박함 속에서 단지 운에 맡기고, 굿이라도 벌이고싸우러 가는 것은 얼마나 무익하고 불합리한지....굳이 설명할 필요가 있을까?우리 스타트업들이 배워야 할표본이 되어주시는 이순신 장군님 짱짱짱!감사합니다.많은 분들이 스타트업을 하면서즐기라고 조언하신다.맞다.게임처럼 즐기면서 하면 이 기나긴 길을단축시킬 수 있고, 힘을 내서 갈 수 있다.한 가지 더 첨언하자면,게임이지만 절실함을 가져야 한다.절실해야 더 강해진다.절실해야 더 버틸 수 있다.절실해야 더 생존 가능하다.스타트업이 걸어야 하는 길은꽃길이 아니기에샬랄라~ 샤방샤방한 일보다어둡고, 칙칙하고, 살 떨리는 일이 더 많다.게임도 항상 즐거움만 있는 게 아니다.어느 순간에 습관적인 반복적인 플레이가 지속되고생각 없이 막일을 할 때도 있다.매번 공략을 실패하며,아이템도 떨구고,죽고 살고 가 반복된다.패배의 순간이 여러 날 지속되면서게임이 싫증 나기도 한다.같은 동료라고 생각했던 길드원(또는 파티원)과의 마찰,아무리 경험치를 올려도 머나먼 렙업의 시간들.단순하게 잠깐의 호기심이나 찰나의 즐거움으로게임을 지속하기는 어렵다.이 게임을 지속해야 할 절실함이 있어야 한다.이 게임을 즐기는 일반적인 플레이어가 아니라,이 게임을 즐기기에 생존이 돼버리는 프로 게이머가 되어야 한다.이기지 못하면,손가락을 빨 수밖에 없는 상황.다수가 불안정하다고, 위험하다고때로는 한심하게 바라보는 시선이 있을수록뚝심을 발휘해야 할이유는 단지 즐거움이 아니라즐거운 절실함이 되어야 한다.창업자에게는즐거움과 두려움이 항상 1 + 1이다.신중하자.긴장하자.그럼에도 웃자."가볍고 빠르게"가 스타트업의 전부가 아니다.때로는 무거울 때도,때로는 한 템포 돌아볼 때도 있다.우리는 스타트업을 하고 있는 것이 아니다.우리는 사업을 시작하고 있는 것이다.언제까지 스타트업이라고누구보다 빨리 전력 질주하는 게 아니다.길고 긴 레이스의 첫 구간을스타트업이라는 이름으로달리고 있을 뿐이고,그다음 구간에서는  미진했던 부분을 돌아보며,완성도를 높이는 사업이 되어야 하며,그다음 구간에서는페이스를 조절하며 다음 구간을 시뮬레이션하고,계속적으로 반복하는 마라톤이며,단지 첫 마일스톤 구간을 지나고 있는 것뿐이다.더 빨리 달리려고 무리수를 두지 말자.더 앞서기 위해 도박을 하지 말자.100 m 달리기와 마라톤.누구는 체조일 것이고,누구는 싱크로나이즈이고,누구는 축구일 것이다.빠름이 우선일 수도,완주가 우선일 수도,퍼포먼스가 우선일 수도,기술이 우선일 수도,조직이 우선일 수도 있다.존재는 하지만 기대는 하지 말 것!기도는 하지만 가만히 기다리지는 말 것!만나고 싶지만 사랑하지는 말 것!그것이 바로 스타트업(창업자)이 가져야 할"운"에 대한 태도이다.#클린그린 #창업자 #스타트업창업 #스타트업창업자 #인사이트 #조언
조회수 760

유통 공룡 아마존의 홀푸드 인수와 아마존고

책 장사로 시작해서 유통 공룡, 그리고 이제 클라우드 서비스로 발전한 아마존의 도약은 놀랍기만 합니다. 지난 2017년 6월에는 아마존이 유기농 식료품 체인 ‘홀푸드’를 인수해서 유통시장에 큰 파장을 가져왔는데요, 언론들은 아마존의 식품시장 진출로 인한 식품유통시장 변화와 막강 라이벌을 맞이할 월마트의 반응에 주목했습니다.아마존이 홀푸드를 인수한 후에 아마존의 주가는 급등했지만 경쟁사인 월마트, 코스트코 등은 일제히 하락을 했습니다. 그만큼 아마존의 식품시장 진출에 시장에서는 많은 기대를 한다는 반증이겠지요?아마존은 오프라인 매장에 ‘아마존 고’라는 무인시스템을 사용해서 인력을 줄이겠다는 전략이었지만 얼마 전 ‘아마존 고’ 매장을 현재로서는 더 늘릴 계획이 없다고 발표를 하였죠. 무인시스템 매장에 대한 고객들의 반응을 관찰해보는 기간이 필요한 것이 아닐까 추측해봅니다. 고객들도 적응하는 데는 시간이 필요하니까요.그동안 아마존이 괄목할만한 성장이 이루면서 핵심가치로 삼은 것은 ‘절약’과 ‘효율성’이기 때문에 직원의 행복과 만족을 중요시하는 홀푸드의 조직문화가 아마존의 문화와 조화를 이루기 위해 어떻게 변화되고 자리를 잡아나갈지 그 또한 관심을 가지고 지켜볼만한 점인 것 같습니다.더욱 재미있는 것은 한 때 아마존의 경쟁자들이었던 백화점 유통업체들이 아마존이 홀마트를 인수하는 것을 보면서 홀마트처럼 자신들도 아마존의 러브콜을 받아 부진을 극복해보기를 바라는 곳들도 생겨났다는 점입니다. 시장은 항상 변하기 마련이지만 '이윤창출' 보다는 '고객 편의와 확보를 통한 시장 확장'에 비중을 두는 아마존의 엄청난 성장은 어쩌면 당연한 것인지도 모르겠습니다.
조회수 10641

Next.js 튜토리얼 7편: 데이터 가져오기

* 이 글은 Next.js의 공식 튜토리얼을 번역한 글입니다.** 오역 및 오탈자가 있을 수 있습니다. 발견하시면 제보해주세요!목차1편: 시작하기 2편: 페이지 이동 3편: 공유 컴포넌트4편: 동적 페이지 5편: 라우트 마스킹6편: 서버 사이드 7편: 데이터 가져오기 - 현재 글8편: 컴포넌트 스타일링9편: 배포하기개요꽤 그럴듯한 Next.js 애플리케이션을 만드는 방법과 Next.js 라우팅 API의 모든 장점을 배웠습니다.대부분의 경우 데이터 소스에서  원격으로 데이터를 가져와야 합니다. Next.js는 페이지에 데이터를 가져오기 위한 표준 API를 제공합니다. getInitialProps라 불리는 비동기 함수를 사용하여 구현할 것입니다.주어진 페이지에 원격 데이터 소스를 통해 데이터를 가져오고 원하는 페이지에 props을 통해 전달할 수 있습니다. 서버와 클라이언트 둘 다 동작하도록 getInitialProps를 작성할 수 있습니다. 그래서 Next.js는 클라이언트와 서버에서 모두 사용할 수 있습니다. 이번 편에서는 getInitialProps를 사용하여 공개된 TVmaze API에서 가져온 데이터로 배트맨 TV 쇼에 대한 정보를 보여주는 애플리케이션을 구현할 예정입니다.설치이번 장에서는 간단한 Next.js 애플리케이션이 필요합니다. 다음의 샘플 애플리케이션을 다운받아주세요:아래의 명령어로 실행시킬 수 있습니다:이제 http://localhost:3000로 이동하여 애플리케이션에 접근할 수 있습니다.배트맨 쇼 데이터 가져오기데모 애플리케이션 내의 home 페이지에 블로그 포스트 목록이 있습니다. 배트맨 TV 쇼 목록을 표시할 것입니다.쇼의 데이터들을 하드코딩하는 대신에 원격 서버에서 그 정보를 가져옵시다.여기서는 TV 쇼를 가져오기 위해 TVMaze API를 사용합니다.TV 쇼 정보를 검색하는 API 입니다.먼저 isomorphic-unfetch를 설치해야 합니다. 데이터를 가져올 때 사용할 라이브러리입니다. 브라우저 fetch API 구현을 간단히 할 수 있도록 만들어진 것이지만 클라이언트와 서버 환경에서 모두 동작합니다.npm install --save isomorphic-unfetchpages/index.js를 다음과 같이 변경해주세요:위의 페이지에 있는 모든 내용은 아래에 표시된 Index.getInitialProps를 제외하고는 익숙할 것입니다:애플리케이션의 어떤 페이지에든 추가할 수 있는 정적 비동기 함수입니다. 이것을 사용하여 데이터를 가져오고 가져온 데이터를 props를 통해 페이지로 보낼 수 있습니다.보다시피 배트맨 TV 쇼 데이터를 가져오고 'shows' props를 통해 페이지로 전달합니다.위에서 보았던 getInitialProps 함수에서 가져온 데이터 숫자를 콘솔에 출력합니다.이제 브라우저 콘솔과 서버 콘솔을 살펴봅시다. 그리고 페이지를 새로고침 해주세요.페이지를 새로고침 한 후 출력되는 메시지는 어디에서 보였나요?- 서버 콘솔- 브라우저 콘솔- 둘 다- 어떤 콘솔에도 출력되지 않았다서버에서만 출력됩니다이 경우 메시지는 서버에서만 출력됩니다.이는 서버에서 페이지가 랜더링되기 때문입니다.이미 데이터를 가지고 있어 클라이언트에서 다시 정보를 가져올 필요가 없습니다.post 페이지 구현하기TV 쇼에 대한 자세한 정보를 보여주는 "/post" 페이지를 구현해봅시다.먼저 server.js를 열고 /p/:id 라우트를 다음과 같이 바꿔주세요.위처럼 바꾼 코드를 적용하기 위해 애플리케이션을 재실행시켜주세요.이전에는 title 쿼리 파라미터를 페이지에 매핑했습니다. 이제 id로 이름을 바꿔야합니다.다음과 같은 내용으로 pages/post.js를 변경해주세요.페이지의 getInitialProps을 살펴봅시다:여기에서 함수의 첫 번째 파라미터는 context 객체입니다. 정보를 가져올 때 사용할 수 있는 쿼리 필드를 가지고 있습니다.예제에서 쿼리 파라미터로부터 보여지는 ID를 선택하고 TVMaze API로부터 데이터를 가져옵니다.이 getInitialProps 함수에서 표시할 제목을 출력하는 console.log를 추가했습니다. 이제 어디에서 출력되는지 볼 수 있습니다.서버와 클라이언트의 콘솔를 둘 다 열어주세요.그 다음 홈페이지 http://localhost:3000로 이동하여 배트맨 쇼 제목을 클릭하세요.위에서 애기했던 console.log 메시지가 보여지는 장소는 어디인가요?- 서버 콘솔- 브라우저 콘솔- 콘솔 둘 다- 아무 콘솔에서도 출력되지 않는다클라이언트 사이드에서 데이터 가져오기브라우저 콘솔에서 메시지를 볼 수 있습니다.클라이언트 사이드를 통해 포스트 페이지에 이동했기 때문입니다. 그런 다음 클라이언트 사이드로부터 데이터를 가져오는 것은 가장 좋은 방법입니다.예를 들어 http://localhost:3000/p/975에 직접 이동한다면 클라이언트가 아닌 서버에서 메시지가 출력되는 것을 볼 수 있습니다.마무리데이터를 가져오고 서버 사이드에서 렌더링하도록 만드는 Next.js의 가장 중요한 기능 중 하나를 배웠습니다.대부분의 유스 케이스에서 충분히 사용할 수 있는 getInitialProps의 기본을 배웠습니다. 더 많은 것을 배우고 싶다면 Next.js의 문서 중 data fetching 문서를 참고할 수 있습니다.#트레바리 #개발자 #안드로이드 #앱개발 #Next.js #백엔드 #인사이트 #경험공유
조회수 1547

Code without Limits

WWDC18 Review (1): Bring the Func! 보기 Introduction지난 글 Bring the Func! 에서 WWDC를 소개했습니다. Keynote와 Platforms State of the Union에서 인상 깊었던 경험도 소개했고요. WWDC 첫째 날은 애플에서 큰 이벤트를 진행했고, 둘째 날부터 마지막날까지는 세션과 랩스, 스페셜 이벤트를 진행했습니다. 이번엔 지난 글에서 미처 쓰지 못했던 것을 소개하겠습니다.SessionWWDC 하면 가장 먼저 떠오르는 건 대개 Keynote입니다. 하지만 다른 세션이나 랩스부터 생각나는 애플 개발자도 있을 겁니다. 저도 처음엔 Keynote만 기대했지만, 행사에 참여하면서 세션과 랩스의 매력(?)에 빠졌습니다.Apple Developer 웹사이트에서 수많은 기술 관련 영상을 볼 수 있다.애플 관련 애플리케이션 개발자는 문제에 부딪히면 Apple Developer 웹사이트에서 도움을 얻는데요. 특히 Development Videos 사이트에 들어가면 그해 발표한 WWDC 세션부터 시작해서 그 동안의 세션들을 모두 볼 수 있습니다. Topics에서는 주제별로 카테고리를 만들어, 해당 주제에 관한 동영상들을 모아서 볼 수 있고, Library에서는 찾고자 하는 내용에 대한 키워드를 검색해서 찾을 수 있습니다.Development Videos - Apple Developer 첫 화면Topics 에서는 주제별 동영상들을 볼 수 있다.Library 에서는 검색하는 키워드에 해당하는 동영상들을 볼 수 있다.WWDC 행사장은 Hall 1 ~ Hall 3, 그리고 Executive Ballroom까지 4개의 방으로 구성되어 있었습니다. 이곳에서 각각의 세션을 들을 수 있었는데요. 시간대별로 3~4개의 세션을 동시에 진행합니다. 듣고 싶은 세션은 해당하는 방에 들어가서 들으면 됩니다. 만약 같은 시간에 듣고 싶은 세션이 두 개 이상이라면 하나만 현장에서 듣고, 다른 세션은 developer 웹사이트 또는 WWDC 앱에서 업로드되길 기다려야겠죠. 물론 24시간이 지나면 세션 영상이 WWDC앱에 업로드됩니다. WWDC 앱에서 제공하는 행사장 지도세션이 진행되는 곳의 내부수많은 개발자의 똑똑한 머리와 지미집세션이 시작되자 개발자들은 무릎 위에 올려 놓은 맥북을 열심히 쳤습니다. 하나라도 놓치기 싫어서 열심히 타자를 치는 개발자들의 모습이 멋있었습니다. 마치 대학 영어 강의를 듣는 기분이었죠.아쉬운 점이 있다면, 에어컨을 너무 강하게 틀어 세션 행사장이 매우 추웠다는 겁니다. 며칠을 견디다 마지막 날엔 결국 행사장 밖에서 라이브로 시청했습니다. 그리고 세션을 진행하는 동안 빠르게 코딩을 하다 보니, 소스 코드를 다 작성하기도 전에 다음 장면으로 넘어가는 부분이 많았습니다. 실시간으로 같이 작업할 예제 소스 코드를 제공하거나 조금 더 효율적으로 세션을 들을 수 있게 해줬으면 좋겠다는 생각이 들었습니다.행사장에서 제공하는 아침 식사와 함께 맥북 프로에서 라이브로 세션 시청What’s new in ARTKit 2지금부터는 인상 깊었던 세션 세 가지를 소개하겠습니다. 첫 번째는 What’s new in ARTKit 2였습니다. 이 세션이 가장 인상 깊었던 이유는 애플이 AR에 중점을 두고 있다는 생각이 들었기 때문입니다. 실제로 Keynote 발표 중에 장난감용 블럭을 만드는 회사 관계자 두명이 AR을 활용한 앱을 실행해 노는 모습을 보여주기도 했습니다.Keynote 발표 중 한 장면. 크레이그 페더리기가 AR 파트에서 Shared experiences에 대해 발표하고 있다.가장 재미있었던 건 현실 공간을 저장해 다른 유저들과 공유할 수 있는 기능이었습니다. ARWorldMap Object를 이용해 사용자가 기기를 움직이면서 현실 공간의 모습을 저장합니다. 나중에 앱을 다시 실행하면 저장했던 현실 공간 맵이 그대로 유지되고, 이전의 모습도 나타나죠. 예를 들어, 노란 테이블 위에 가상의 물건을 올려 놓았다면, 나중에 테이블을 향해 기기를 움직였을 때, 그 자리에 놓여있던 가상의 물건이 다시 나타납니다. 또한, 저장한 맵을 근처의 다른 유저의 기기로 전송할 수 있습니다. 이렇게 하면 서로 다른 기기에서 같은 맵을 보면서, 같은 경험을 할 수 있게 됩니다. 개념을 확장하면 하나의 AR앱으로 다중 유저들이 게임을 함께 즐기거나 멀리 떨어져 있어도 같은 교육을 받을 수 있죠.SwiftShot AR게임을 즐기려고 기다리는 개발자들WWDC18 Keynote에서 잠깐 소개되었던 SwiftShot AR 게임이 이런 특징을 잘 나타난 앱입니다. 실제로 행사장 1층 안쪽에 이 게임을 즐길 수 있는 공간이 따로 마련되어 있었습니다. 개발자들이 직접 게임을 즐길 수 있었고, 마지막 날엔 개인전과 팀전을 진행해 1등에게 선물(AR뱃지)을 주었습니다. 옆에서 구경했는데 재밌었습니다. 아이패드가 있다면 여기를 클릭해 샘플 코드를 다운 받을 수 있습니다. 빌드해서 재미있는 AR 게임을 친구들과 함께 즐겨보세요. A Tour of UICollectionView브랜디 앱은 90% 이상 UICollectionView를 이용해 앱 화면을 만들었습니다. 많은 UICollectionViewCell을 다시 사용할 수 있고, 커스텀 레이아웃도 만들 수 있기 때문입니다. 이전에 포스팅한 ‘테이블이냐, 컬렉션이냐, 그것이 문제로다!’에서 UICollectionView를 공부했지만 더 배우고 싶어서 A Tour of UICollectionView를 들었습니다.이 세션은 UICollectionView에 대해 좀 더 깊은 내용을 다뤘습니다. UICollectionView와 UITableView의 가장 큰 차이점인 레이아웃에 초점을 두었는데요. 단순히 UICollectionView에서 선형 레이아웃 말고 그리드 형식의 레이아웃을 만들 수 있다는 것, 커스텀 레이아웃을 만들 때 고려할 것, 구현에 대한 가이드라인까지 제시했습니다. 애플에서 제공하는 레이아웃 중 하나는 UICollectionViewFlowLayout입니다. UICollectionViewFlowLayout은 line-based 레이아웃 시스템입니다. 일직선 상에서 최대한 많은 아이템들을 채운 후, 다음 행 또는 열로 넘어가 아이템을 채우는 형식으로 컨텐츠들을 배치합니다. 가장 흔한 레이아웃 모습이 바로 그리드 레이아웃입니다.그리드 레이아웃, 또는 UICollectionViewFlowLayout으로 구현할 수 있는 레이아웃Line-based 레이아웃이 아닌 다른 모습의 레이아웃이라면 어떤게 있을까요? 세션에서 예를 든 레이아웃이 바로 모자이크 레이아웃이였습니다. 브랜디 앱, 또는 다른 앱에서 볼 수 있는 모자이크 레이아웃은 일직선상에서 일렬로 정렬하지 않고, 그리드 레이아웃과 조금 다른 모습입니다. 아래의 스크린샷을 보면 어떤 레이아웃인지 감이 잡힐 겁니다.브랜디 앱, 인스타그램 앱, 세션 예제 앱의 모자이크 레이아웃모자이크 레이아웃은 line-based 레이아웃이 아니기 때문에 일반적인 UICollectionViewFlowLayout을 사용하지 않고, UICollectionViewLayout을 상속하여 커스텀합니다. 총 4개의 기본 메소드와 추가적으로 고려해야하는 메소드 하나를 이용하여 커스텀 UICollectionViewLayout을 만들 수 있습니다. 모든 컨텐츠를 담는 뷰의 크기, 레이아웃의 속성 2개, 그리고 레이아웃을 준비하는 기본 메소드들을 구현하고, 레이아웃이 변경해야하는 상황(기기를 가로로 눕히거나 레이아웃의 위치가 변경될 때 등)을 고려하여 메소드를 구현하면 됩니다.open var collectionViewContentSize: CGSize { get } func layoutAttributesForElements(in rect: CGRect) → [UICollectionViewLayoutAttributes]? func layoutAttributesForItem(at indexPath: IndexPath) → UICollectionViewLayoutAttributes? func prepare() func shouldInvalidateLayout(forBoundsChange newBounds: CGRect) → Bool 세션 강연자가 직접 소스를 작성하면서 메소드 구현과 퍼포먼스를 위한 팁을 설명했습니다. 이 세션을 통해서 UICollectionView의 핵심인 레이아웃에 대해 더 깊이 배울 수 있었죠. 레이아웃 말고도 멋진 애니메이션 효과 구현 방법을 설명해주었는데요, 여기를 클릭해 직접 동영상을 보는 걸 추천합니다! 영상을 보고 나면 분명 멋진 UICollectionView를 구현할 수 있을 겁니다.Build Faster in XcodeBuild Faster in Xcode 는 가장 인기 있었던 세션 중 하나였습니다. 한국 개발자들 사이에서도 추천할 세션 중 하나로 꼽혔죠. 물론 혁신적으로 빌드 타임을 줄일 수는 없지만, Xcode의 기능과 빌드 타임이 어떻게 연결되는지 알 수 있었습니다. 프로젝트 세팅과 가독성 있는 코드 작성, 이 두 가지가 빌드 타임과 관련되어 있었습니다. Xcode는 프로젝트를 구성(configure)할 때, 빌드할 targets(iOS App, Framework, Unit Tests 등)와 targets 사이의 종속 관계(dependency)를 따릅니다. Dependency에 따라서 target을 빌드하는 순서도 정해지는데, 순서대로 빌드하지 않고 최소한의 연결을 유지하면서 병렬적으로 빌드하게 됩니다.빌드 시간을 아름답게 줄일 수 있다.이것은 Xcode 10에서 Scheme Editor에서 설정할 수 있습니다. 프로젝트의 Target → Edit Scheme → Build → Build Options에서 Parallelize Build를 체크하면 됩니다.Xcode 10의 Parallelize Build또한 Xcode 10에는 빌드 타임을 계산하는 기능도 있습니다. 빌드할 때 어떤 부분에서 얼마나 걸렸는지 요약해서 보여주는 기능도 있습니다. Product → Perform Action → Build With Timing Summary를 선택하면 빌드 후 요약해서 Xcode에 나타납니다.Build With Timing Summary를 선택하여 빌드하면위 스크린샷처럼 요약해서 보여준다.Xcode 프로그램을 이용해서 빌드 타임을 관리하는 방법도 있고, Swift으로 작성한 소스 코드를 가독성 높은 코드로 바꾸는 방법도 알려줍니다. 또한 Bridging Header로 Objective-C와 Swift를 동시에 개발할 때 도움이 되는 방법도 설명해줍니다. 빌드 타임에 대해 관심을 가질 수 있는 계기가 될 겁니다. 한 번씩 영상을 보길 추천합니다!Labs세션을 듣고 궁금한 점이 생겼다면 Labs(랩스)에서 질문할 수 있습니다. 각 세부 분야별 애플 기술자들이 시간대별로 모여서 개발자의 질문을 받거나 문제점을 해결할 수 있도록 도움을 줍니다.Technology Labstechnology Labs 간판Labs 입구에 있는 부스별 주제짙은 남색 Engineer 티셔츠를 입은 애플 기술자들이 질문을 받고 있다.가장 인기가 많았던 랩스는 Auto Layout and Interface Builder, UIKit and Collection View, Building Your App with Xcode 10 등등이었습니다. 사람이 많아서 줄 서서 기다릴 정도였습니다. 내년에는 랩스 시간이 조금 더 길게 진행됐으면 좋겠다는 생각이 들었습니다.WWDC 기간 중에 랩스에서 시간 보낸 적이 있었습니다. iOS 프로그래밍을 시작한 지 1년도 되지 않아 궁금했던 것들과 새로운 Xcode 10에 대해서 질문했습니다. 아래는 질문했던 내용을 문답형식으로 작성했습니다.애플 기술자와의 문답문: iOS 프로그래밍을 개발한지 얼마 안 된 신입 개발자입니다. 어떻게 하면 프로그래밍 실력을 높일 수 있나요? 답: 앱 하나를 처음부터 끝까지 개발해보면 실력을 늘릴 수 있다. 또한, 애플에서 만든 스위프트 책 보는 걸 추천한다.문: WWDC 기간 동안에 테스팅(testing)에 관심을 가지게 되었습니다. 앞으로 상용하는 앱을 테스트하면서 개발하고 싶은데, 테스트는 어떻게 시작하면 좋을까요?답: 이것에 대한 세션 동영상 을 보는 걸 추천한다. 테스트는 중요한 것이기 때문에 이 동영상을 보면서 테스트에 대해 배우고 난 뒤, 직접 앱을 테스트해보길 권장한다.문: 새로운 Xcode 10에서 앱을 빌드해봤는데 에러가 났습니다. 이런 에러가 나타난 이유는 무엇인가요?답: Xcode 10에 있는 컴파일러 문제다. 소스를 수정하면 앱이 빌드될 것이다. 컴파일러에 대해서 Xcode 팀에게 전달하겠다. (Range 관련된 컴파일러 문제였습니다.)문: 빌드 시간을 줄일 수 있는 방법은 무엇인가요?답: 컴파일하는 소스 코드를 줄이거나 프레임워크를 만들어서 빌드할 때 마다 계속 빌드하지 않도록 하면 시간을 줄일 수 있다. 이와 관련된 세션을 들으면 조금 더 자세한 내용을 확인할 수 있다.Consultation Labs애플 기술자와 일대일 면담식으로 진행하는 랩스도 있었습니다. 예전에는 선착순으로 진행되었는데 올해는 신청을 받고 당첨된 개발자에게만 기회를 주었습니다. 당첨되면 30분 동안 신청한 분야(디자인, 앱 스토어, 마케팅 등)의 전문가와 질의응답을 할 수 있습니다. 가장 인기가 많았던 User Interface Design 랩스를 신청하고 당첨이 되었습니다. 디자인 전문가들과 시간을 보낼 수 있었는데요. 애플 디자이너들이 생각하는 최선의 디자인 가이드라인을 배울 수 있었고, 함께 앱을 관찰하면서 개선되었으면 하는 디자인 요소 등의 팁을 얻었습니다. 아쉽게도 촬영 및 녹음은 불가능했습니다. 시간도 짧게 느껴져서 아쉬웠습니다.Special EventsWWDC 기간 동안에는 세션과 랩스 위주로 진행되지만 중간에 가끔 스페셜 이벤트들도 진행합니다. 점심 시간에 유명 인사들을 초청해서 하는 짧은 강연, 아침 일찍부터 모여서 같이 달리면서 즐길 수 있는 이벤트(WWDC Run with Nike Run Club), 맥주와 함께 음악을 즐기는 이벤트 등 개발 외적인 이벤트들을 많이 진행했습니다. 저는 그 중에서 Bash 이벤트를 소개하고 싶군요.BashBash는 목요일에 진행한 뒤풀이 파티였습니다. WWDC 행사장 근처에 공원을 빌려서 맛있는 음식과 주류를 무료로 제공하고, 초청 가수의 공연도 볼 수 있었습니다. 초청 가수가 공연하기 전에 소개할 때 크레이그 페더리기가 무대에 나왔습니다. 개발로 지친 몸과 머리를 식히고 다른 개발자들과 어울려 놀 수 있는 공간이였습니다. 뒤풀이 파티가 끝나갈 때쯤 진짜로 WWDC가 끝나간다는 느낌이 들어서 괜히 아쉽기도 했었습니다.무대와, 맥주와, bash 입장권한국인 개발자들과 함께 즐긴 뒤풀이 파티초청 가수를 소개하러 무대에 올라온 크레이그 페더러기아름다운 노을!마치며이번 글에서는 WWDC의 세션, 랩스, 스페셜 이벤트를 설명했습니다. WWDC가 한 달 전에 끝났지만 지금 다시 생각하면 두근두근 설레고 또 가고 싶어집니다. 내년 WWDC에 또 갈 수 있을까요? 지금까지 애플 개발자들의 축제였던 WWDC의 Review를 마치겠습니다. 긴 글을 읽어주셔서 감사합니다!글김주희 사원 | R&D 개발1팀[email protected]브랜디, 오직 예쁜 옷만#브랜디 #개발문화 #개발팀 #업무환경 #인사이트 #경험공유 #이벤트참여 #이벤트후기 #미국
조회수 830

사랑받지 않아도 되는 자유

누가 이로부터 자유로울 수 있을까?인간은 사회에서 관계를 맺기 시작하는 그 순간부터 그 대상자에게 사랑받고 싶어한다.누군가로부터 사랑받고 인정 받음으로써 성취감과 존재감을 느끼는 것은 어쩌면 너무 당연한 것이다.하지만 누군가의 애정을 얻는 다는 것은 쉬운 일이 아니다.경쟁과 갈등은 그렇게 사랑을 쟁취하기 위해 시작된다.부모의 사랑을 차지하기 위한 형제 자매사이의 본능적인 몸부림부터, 선생님의 애정을 차지하기 위한 친구들과의 성적 쟁탈전, 이성으로 부터 애정받기 위한 남녀간의 매력 발산 경쟁, 그리고 상사에게 사랑받기 위한 조직내 성과 쟁탈전에 이르기까지 인생 전체가 사랑과 인정을 갈구하는 쟁탈전이다.문제는 소수만이 누릴 수 있다는 것이다.누구에겐가 사랑받기 위해 지나치게 에너지를 쏟는 이들에 비해 '자존감'으로 무장하고 타인의 시선보다도 자신만의 길을 가는 이들을 보면 참으로 평화로워 보인다. 스스로를 사랑하고 인정함으로써 누군가에 기대어야 하는 '애정받기'이서 자유로울 수 있는 것이다.말 잘듣고 사랑받는 강아지는 늘 주인의 행동과 표정에 눈치보기에 쉼이 없다. 주인의 요구에 더 빨리 움직일 수록 먹이와 칭찬에 길들여지기 때문이다.연말이다.학교에서는 시험과 성적, 직장에서는 평가와 고과가 애정과 인정의 잣대가 된다. 특히 직정에선 자칫 인간의 비열한 모습이 드러나는 시기이다. 직장인의 숙명이다.직장으로부터의 탈출을 꿈꾸는 많은 이들은 이 비열함과 동의할 수 없는 사랑받기 게임에서 자유롭고 싶기 때문이다.사랑받지 않아도 되는 자유.타인의  평가로부터 자유로울 수 있는 용기.스스로 당당해지자

기업문화 엿볼 때, 더팀스

로그인

/