Ringster's Techblog

Tech, Mobile, Internet

Archive for 1월 2015

MAC OS의 Vim에서 Syntax highlight 사용하기

leave a comment »

Mac에서 터미널을 진입하여 Vim을 사용하려고 보면 Syntax highlight가 되지 않고 아래와 같이 출력된다.

하이라이트가 되지 않아 구분이 힘든 Default vim.

하이라이트가 되지 않아 코드 식별이 힘든 Mac의 Default vim..

colorscheme delek등을 수행해봐도 아무런 색상 적용이 되지 않는데, /usr/share/vim/vim73/colors 하위를 확인해보면 아래와 같이 colorscheme 들은 포함되어 있다.

 이때는 /usr/share/vim/vimrc 파일을 수정하여 syntax on 이라는 문장을 추가해주면 된다.
전체 유저에게 적용할 default theme를 적용하려면 colo desert와 같이 한 줄을 더 추가한다.

after syntax

보는바와 같이 desert 테마가 적용되었다.
custom scheme를 추가하기 위해서는 root 계정이 필요한대 Mac OS에서는 기본적으로 비활성화 되어있으므로 여기를 참조하여 root 계정을 활성화 하고 /usr/share/vim/vim73/colors/ 하위에 custom scheme을 복사해 넣고 동일한 방법으로 적용하면 된다.

Written by Ringster

2015/01/23 at 5:24 오전

Mac에 게시됨

Tagged with , ,

Technology Entrepreneurship (Lecture 3: Framework, Business, Models and Team Building)

leave a comment »

Lecture 3. Framework, Business, Models and Team Building

1) Business Model Testing
– Entrepreneurship : experimentation & search Process
스타트업은 Repeatable, Scalable 비즈니스 모델을 찾아야 함. Biz model 에 대한 Evidence를 찾아가는 과정

– Biz model을 이루는 가정정에 대한 Experimentation Progress를 계속 반복하고 Documentation 하는 과정이 중요
https://www.leanlaunchlab.com 와 같은 사이트에서 9-Block biz model에 대한 버전관리를 제공함 (30 Day Trial)

Lean launch lab

Lean launch lab

– 모든 모델의 Segment에는 가정이 필요하다.
Smartphone App의 Customer segment가 30~50대의 스마트폰 유저라고 가정했다면, 왜 30~50대인가, 왜 그보다 더 어리거나 늙은 사람은 대상이 될 수 없는가, 30~50대의 Single인가 married인가 등에 대해 확실하고 구체적인 가정을 세우고, 그 가정에 대해 검증을 실시해야 한다.

– 타겟 그룹에 대하여 여러 채널을 통해 정말 구매 의사가 있는가 확인할 것 (실제 User들을 만나라.)

– Web Startup Building에 대한 Steve Blank의 글 (원문 링크)

  1. Set up the logistics to manage your team
    – Biz model의 변화를 기록하고, 팀원간의 소통을 위한 채널 만들기
  2. Craft company hypotheses
    – 9블록 모델 생성
    – Key Feature를 정의하고, 이를 제공할 MVP(Minimum viable product) 정의
    Google Trends, FaceBook Ads 등을 통해 시장크기 파악(시장 세분화), crunchbase (스타트업 투자 정보) 사이트를 통해 경쟁자 파악
    시장 타입 파악 (
    existing, new, resegmented) : 새로운 타입의 서비스와 기존 시장에 침투하는 서비스의 경우 서로 다른 Sales/Marketing 전략을 수립해야 함
  3. Write a value proposition statement that other people understand
    – “We help X do Y by doing Z”와 같은 형식으로 정의, 이후 여러 사람에게 의견을 물을 것. 사람들이 이해하지 못할 경우 설명해주고, 그 설명에 대한 요약을 요청해볼 것
  4. Set up the Website Logistics
    – 웹사이트 운영에 관련된 도메인, 이메일 등등 기반 갖추기 
  5. Build a “low-fidelity” web site
    – Splash 페이지에 서비스 설명이나, 설문조사, Pre-order form을 갖춤
  6. Get customers to the site
    – 잠재 사용자에게 사이트 노출, Customer segment와 Value proposition 테스팅
    – 광고, 지인 등을 여러 채널 통해 홍보
    – MVP나 Website에 대한 feedback을 받을 것
  7. Add the backend code to make the site work
    – 웹사이트 상세 구현
  8. Test the “problem” with customer data
    – Analytics tool (Google Analytics 등)의 여러 통계 툴을 이용해 고객 데이터 분석
    – User satisfaction을 측정하고, feedback이나 기능 제안등을 수집
    – Is there anything preventing you from signing up?, What else would you need to know to consider this solution? 등 일반적인 질문보다는 구체적 질문을 포함할 것
    –  in-depth conversation이 가능한 채널 확보할 수 있으면 확보
  9. Test the “solution” by building the “high-fidelity” website
    – 5~8을 통해 얻은 정보로 서비스 업데이트트
    – High-Fidelity가 Complete product를 말하는 것이 아님, 계속 검증하며 전체 서비스의 질을 높임 (Be professional and credible!)
    – 고객정보는 계속 Tracking하고 분석
  10. Ask for money
    – 완벽한 제품 런칭 전 “Pre-order” 페이지 준비
    – Paying solution 고려할 것

이러한 과정에 대한 대략적인 예 How to Create a Million-Dollar Business This Weekend (Examples: AppSumo, Mint, Chihuahuas)

2) 9 Frameworks for Entrepreneurship
Entrepreneurial process를 설명하는 9개의 Framework

 key framework 1

– Market과 Product/Service 간의 Missing link를 찾는 Opportunity Recognition과 Pursuit of Opportunity의 Phase로 구분
New Technology부터 이것이 Market에서 어떻게 사용될 것인지를 찾거나, 반대로 Market의 Needs 충족시킬 수 있는 Technology를 찾아내고, 이를 구현할 팀과 조직을 형성하고, 자원을 조달함

key framework 2

– 어떤 Business인가, 무엇을 이룰 것인가에 대한 비전 정의, 이후 비전을 수행할 전략을 세워 실행

key framework 3

– People, Deal, Resources, Opportunity의 4요소가 모여 비즈니스 모델을 이룸

key framework 4

– VC들이 고려하는 Entrepreneur

key framework 5

– Startup에 존재하는 Risk의 분류와 어떻게 Risk를 줄여가느냐에 대한 Framework

key framework 6

– 사람들의 성향을 Innovators/Early Adopters/Early, Late Majority/Laggards 로 분류, Startup은 Early Adopter가 움직인 이후 Chasm(협곡, Bowling alley)를 넘겨야 성장

key framework 7

– 고객을 어떻게 정의하고, 점검하느냐에 대한 프로세스

key framework 8

– Startup이 설립되고, 성장하여 Exit에 이르는 결과에 대한 Framework

key framework 9

– Framework 2의 역 접근법으로 지금 가진 것으로 할 수있는 것에서부터 시작해 전략과 비전으로 이동한다.


우리는 창업가나 기업가와 같은 단어들을 떠올릴 때, 자신만의 insight와 확실한 vision을 통해 스타트업을 이끌어 가는 사람들을 생각한다. 이번 강의는 스타트업의 운영이 실험/검증에 대한 프로세스를 통해서도 올바른 방향으로 나아갈 수 있다는 것을 시사한다. 여러가지 Framework를 통해 가능한 많은 분야를 고려하고, Risk를 줄이며 발전해 나가는 것이 모두가 Steve jobs와 같은 visionary가 될 수 없는 상황에서는 더욱 현실적일 것이다.

P.S
점점 강의에서 요구하는 것이 많아지고 있다.
10 Best, 5 Worst 스타트업 아이디어를 제출하는 과제부터 시작해, 다른 사람들의 스타트업 아이디어를 평가하고, 이번주에는 다른 사람들과 팀을 이루어 주었다.
내가 있는 팀은 브라질 사람들이 주가 된 9명으로 된 다국적 팀이며, 이중 한명은 이미 2개의 사업을 가지고 있는 사람이다.
계속 짬을 내 강의를 보고 과제를 제출하고 결과를 정리하는 것이 쉽지만은 않지만, 스타트업에 관심있는 세계 각국의 사람들의 의견을 듣고, 내 의견에 대한 솔직한 피드백을 들을 수 있다는 점은 즐거운 일이다.

Written by Ringster

2015/01/22 at 7:07 오후

강의에 게시됨

Tagged with , ,

Mac 안드로이드 스튜디오 단축키

leave a comment »

Android Studio의 정식버전이 릴리즈 된 이후로 간간히 Android Studio에 익숙해지려고 노력중이다.
Eclipse가 익숙하기도 하고, 형상관리 연동 설정 등이 모두 되있는터라 작업의 효율을 핑계로 계속해서 프로젝트를 Android Studio로 옮기는 것을 주저하고 있었는데 슬슬 더 이상 미룰 수 없는 시기가 다가오고 있는 것 같다.

새로운 툴을 사용하다보면 가장 먼저 부딫치는 것이 생소한 핫키들인데, Eclipse에서 편리했던 기능들에 대한 핫키들에 대해 정리해 보았다. 전체 설정된 핫키는 Android Studio -> Preference -> IDE Settings : Keymap 에서 찾을 수 있으며, 이 중 개인적으로 많이 쓰는 핫키들을 정리한 것임을 참고하길 바란다.

Option + Enter : 빠른 수정 (이클립스 코드에 빨간줄 생길 때 수정 항목 추천과 같은 기능)
Control + Space : 기본 코드 자동 완성
Control + O : Override / Implement methods
Control + Option + O : Optimize imports
Command + N : Generate code( Getters, Setters, Constructors, hashCode/equals, toString )
Control + Shift + Space : 스마트 코드 완성(예상되는 타입의 메소드또는 변수명 )
Command + Option + L : Reformat code

Command + Option + T : Surround with… (if..else, try..catch, for, synchronized, etc.)
Command + / : 한줄주석
Control + Shift + / : 블럭주석
Control + W : 연속적인 코드블럭 선택
Command + Shift + V : 클립보드 히스토리
Control + mouse over code : 간단한 설명
Shift + mouse over code : 약간 더 자세한 설명 (API version, superclass, interface)


며칠전 IR transmitter 관련 앱을 Android Studio로 작성해 보았는데, 라이브러리 추가나 핫키 등이 익숙하지 않아 애를 먹었다.
사실 Keymap 옵션을 보면 Eclipse 핫키에 맞추어 Android Studio 핫키를 변경시켜주는 옵션이 있는데, 일부러 해당 옵션을 사용하고 있지 않다.
사소한 것이지만 하나의 툴이나 하나의 언어에 익숙해지는 것보다, 새로운 것들에  계속 적응하고 익숙한 분야를 넓혀가는 것이 중요하다고 생각하기 때문이다.

P.S

– 아직은 Android Studio 자체에 자잘한 버그가 많은것 같기는 하다. IR transmitter를 사용하기 위해서

ConsumerIrManager irManager = (ConsumerIrManager)getSystemService(Context.CONSUMER_IR_SERVICE);

위 코드를 추가했는데, 계속 Context.CONSUMER_IR_SERVICE 부분에 구문 오류가 표시되어 뭐가 잘못되었는지 한참을 찾았는데, 그냥 컴파일을 수행하니 문제없이 컴파일이 수행되었다. (동일한 코드를 이클립스에서 사용 시에는 구문 오류가 출력되지 않는다.)
계속해서 개선되다보면 이런 버그들은 언젠가는 처리되겠지만, 사실 이런 사소한 문제들에 시간을 뺏길때마다 여러 사람들에 의해 검증된 이후 사용하고 싶기는 하다…

P.S 2
– 조만간 https://developer.android.com/tools/studio/index.html 에 대해서도 한번 훑어봐야겠다.

Written by Ringster

2015/01/22 at 4:23 오후

Webhacking.kr – Problem 6, Problem 26

leave a comment »

첫번째 문제를 풀고 두번째 문제를 풀려고 보니 난이도가 넘사벽이다.
대충 감으로는 SQL Injection을 해야할 것 같은데.. 어디서부터 어떻게 시작해야 할지 모르겠다.
나의 능력이 두번째 문제 풀만큼도 안되는가 하고 좌절하고 있다가 순서대로 문제를 안풀어도 된다는 사실을 발견했다…
게다가 두번째 문제가 배점도 높은 난이도 있는 문제였다니..

 

가장 배점이 낮은 문제인 100점짜리 6번 문제로 넘어가니 문제는 아래와 같다.

problem 6

이젠 서술하나 없이 덜렁 페이지 하나 나오는 문제들에 익숙해진다..

index.phps 를 눌러보면 다음과 같은 코드가 출력된다.

<?php
if(!$_COOKIE[user])
{
    $val_id="guest";
    $val_pw="123qwe"; 

    for($i=0;$i<20;$i++)
    {
        $val_id=base64_encode($val_id);
        $val_pw=base64_encode($val_pw); 

    } 

    $val_id=str_replace("1","!",$val_id);
    $val_id=str_replace("2","@",$val_id);
    $val_id=str_replace("3","$",$val_id);
    $val_id=str_replace("4","^",$val_id);
    $val_id=str_replace("5","&",$val_id);
    $val_id=str_replace("6","*",$val_id);
    $val_id=str_replace("7","(",$val_id);
    $val_id=str_replace("8",")",$val_id); 

    $val_pw=str_replace("1","!",$val_pw);
    $val_pw=str_replace("2","@",$val_pw);
    $val_pw=str_replace("3","$",$val_pw);
    $val_pw=str_replace("4","^",$val_pw);
    $val_pw=str_replace("5","&",$val_pw);
    $val_pw=str_replace("6","*",$val_pw);
    $val_pw=str_replace("7","(",$val_pw);
    $val_pw=str_replace("8",")",$val_pw); 

    Setcookie("user",$val_id);
    Setcookie("password",$val_pw); 

    echo("<meta http-equiv=refresh content=0>");
}
?> 

<html>
<head>
<title>Challenge 6</title>
<style type="text/css">
body { background:black; color:white; font-size:10pt; }
</style>
</head>
<body> 

<? 

$decode_id=$_COOKIE[user];
$decode_pw=$_COOKIE[password]; 

$decode_id=str_replace("!","1",$decode_id);
$decode_id=str_replace("@","2",$decode_id);
$decode_id=str_replace("$","3",$decode_id);
$decode_id=str_replace("^","4",$decode_id);
$decode_id=str_replace("&","5",$decode_id);
$decode_id=str_replace("*","6",$decode_id);
$decode_id=str_replace("(","7",$decode_id);
$decode_id=str_replace(")","8",$decode_id); 

$decode_pw=str_replace("!","1",$decode_pw);
$decode_pw=str_replace("@","2",$decode_pw);
$decode_pw=str_replace("$","3",$decode_pw);
$decode_pw=str_replace("^","4",$decode_pw);
$decode_pw=str_replace("&","5",$decode_pw);
$decode_pw=str_replace("*","6",$decode_pw);
$decode_pw=str_replace("(","7",$decode_pw);
$decode_pw=str_replace(")","8",$decode_pw); 

for($i=0;$i<20;$i++)
{
    $decode_id=base64_decode($decode_id);
    $decode_pw=base64_decode($decode_pw);
} 

echo("<font style=background:silver;color:black>&nbsp;&nbsp;HINT : base64&nbsp;&nbsp;</font><hr><a href=index.phps style=color:yellow;>index.phps</a><br><br>");
echo("ID : $decode_id<br>PW : $decode_pw<hr>"); 

if($decode_id=="admin" && $decode_pw=="admin")
{
    @solve(6,100);
} 

?> 

</body>
</html>

코드를 해석해보면 guest와 123qwe를 id/pw로 받아서 base64 인코딩을 20번 반복한 후 각각 쿠키에 저장하고 있다.
인증 방식은 base64 디코딩을 20번 반복 후 admin/admin이면 인증되는 형식.
https://www.base64encode.org/와 같은 base64 문자열 변환 사이트에 admin을 넣고, 20번 반복 변환한 후 이를 쿠키값으로 대체해주면 인증에 통과하게 된다.
problem6_solved

 

문제 26번은 index.phps가 주어지며 해당 페이지는 다음과 같다.

<html>
<head>
<title>Challenge 26</title>
<style type="text/css">
body { background:black; color:white; font-size:10pt; }
a { color:lightgreen; }
</style>
</head>
<body> 

<? 

if(eregi("admin",$_GET[id])) { echo("<p>no!"); exit(); } 

$_GET[id]=urldecode($_GET[id]); 

if($_GET[id]=="admin")
{
@solve(26,100);
} 

?> 

<br><br>
<a href=index.phps>index.phps</a>
</body>
</html>

get 방식으로 id 값을 가져오는데 id의 값이 admin과 동일하면 exit()이 호출되고, urldecode를 수행 시에 admin이 출력되어야 한다.
php의 함수 레퍼런스를 보면
urldecode
과 같이 주의문의 나와있는데, get을 통할때 한번 decode되고 urldecode가 수행될 때 한번 더 decode 되야한다는 것을 알 수 있다.
한마디로 admin이라는 문자를 url로 두번 encoding해야 하는데, 알파벳 상태로 percent encoding을 하면 당연 다시 알파벳이 나온다. 이에 따라 admin을 ascii로 변환해야 하는데 ASCII표를 참조해서 변환해보면 61 64 6D 69 6E가 된다.
여기에 다시 percent encoding을 적용하여 %61%64%6D%69%6E로 바꾸고, 한번 더 url encoding을 적용하면 %2561%2564%256D%2569%256E 가 된다. (http://www.url-encode-decode.com 와 같이 인코딩을 적용해주는 사이트들을 사용하면 편리하다)
마지막으로  http://webhacking.kr/challenge/web/web-11/index.php?id=%2561%2564%256D%2569%256E과 같이 페이지 url에 추가하여 get 방식으로 넘겨주면 해당 인증을 통과하게 된다.

ASCII를 통해서도 URL을 접근할 수 있다는 것과 이러한 방법으로 인해 보안상 헛점이 생길 수 있다는 것은 놀라웠다.
브라우저의 주소창에도 이런 형태의 url을 잘 넘겨줄 수 있다.

%6e%61%76%65%72.com 을 주소창에 붙여 넣고 어디로 연결되는지 확인해보자.

Written by Ringster

2015/01/16 at 12:22 오후

웹 보안에 게시됨

Tagged with , , ,

Webhacking.kr – 가입 및 Problem 1

leave a comment »

AWS에 올려놓은 앱 DB용 테스트 서버의 접속 로그를 확인해보니 brute force 시도가 확인되었다.
SMTP 로그인 시도인 것을 보니 초창기에 이것저것 설정하면서 설치했던 메일서버를 악용하려는 스패머들인것 같은데,
Web 쪽이나 서버 운영에 대한 지식이 부족하다 보니 이런 시도가 계속되고 있었다는 것도 한창이 지나서야 알게 됐다.

계기가 생긴 차에 웹 보안이나 해킹 관련 정보를 공부해봐야 겠다는 생각이 들었다.
깊이 파고들 필요는 없겠지만 일반적인 공격 방법에 대해 알아야 좀 더 안전한 서비스/서버를 만들 수 있을테니까.
정보를 얻을 수 있는 사이트들을 검색하다보니 http://webhacking.krhttp://hack-me.org와 같은 Quiz풀이 형태의 사이트들을 발견했다. (아주 오래전에 비슷한 형태로 운영되던 hackerslab이라는 사이트가 있었는데, 지금 다시 찾아보니 200x년대 이후 방치되고 있는듯 하다.)

webhacking.kr에 가입하려고 보니, 가입부터 간단치 않다.
Decode me라는 문자열을 디코딩해야 가입이 가능한데, 문자열 형식에 디코딩 방식에 대한 힌트가 숨어있다. Site admin이 가입에 대한 방법 설명은 자제해줄 것을 공지로 요청한터라 (아무나 유입 되는 것을 막기 위한 것 같다.) 따로 언급하지 않겠다.

문제는 Challenges – Auth 메뉴를 통해 접근 가능하며, 문제 1은 다음과 같다.
webhacking_lv1

문제에 주어진 힌트대로 현재의 문제 경로에 index.phps를 추가하면 php 소스코드를 볼수있다.

<?
if(!$_COOKIE[user_lv])
{
SetCookie("user_lv","1");
echo("<meta http-equiv=refresh content=0>");
}
?>
<html>
<head>
<title>Challenge 1</title>
</head>
<body bgcolor=black>
<center>
<br><br><br><br><br>
<font color=white>
---------------------<br>
<?

$password="????";

if(eregi("[^0-9,.]",$_COOKIE[user_lv])) $_COOKIE[user_lv]=1;

if($_COOKIE[user_lv]>=6) $_COOKIE[user_lv]=1;

if($_COOKIE[user_lv]>5) @solve();

echo("<br>level : $_COOKIE[user_lv]");

?>
<br>
<pre>
<a onclick=location.href='index.phps'>----- index.phps -----</a>
</body>
</html>

코드를 살펴보면 eregi 함수를 통해 쿠키의 user_lv값이 0-9,.를 포함하고 있지 않으면 1로 설정해주고, 쿠키의 값이 6 이상일 경우 1로 설정해줌을 알 수 있다.

쿠키의 user_lv값이 5 이상 6이하가 됐을 때 @solve(); 호출을 통해 인증되는 형태이므로, 쿠키 값을 5~6 사이의 적당한 값으로 수정하면 된다. 쿠키 수정을 하기 위한 툴을 검색해본 결과, 크롬 플러그인 형태인 EditThisCookie(Chrome 링크)가 있어 설치하고, webhacking.kr로부터 받은 쿠키의 user_lv값을 5.5로 수정하자 해당 문제의 풀이가 완료되었다.

쿠키에 중요한 정보를 저장하지 않아야 한다는 것은 상식이지만, 생각보다 많은 사이트들이 중요한 정보를 쿠키를 통해 클라이언트에 전달하고 있다. 이러한 쿠키가 얼마나 쉽게 위변조 될 수 있는지에 대해 실질적으로 알 수 있게 해주는 문제라 하겠다.

Written by Ringster

2015/01/16 at 5:58 오전

Technology Entrepreneurship (Lecture 2: Creativity and Improvisation)

leave a comment »

Lecture 2. Creativity and Improvisation

1) Creativity and Improvisation
– Idea Source : Creative visionaries, Lead users, talking to customers often
– Group을 조직하는 방법에 따라 group의 창의성을 높일 수 있다.

– Successful entrepreneurship = invention + inspired execution :  창의성은 새로운 제품이나 서비스에 대한 아이디어를 생성하는데 필요하고 (invention side),  세일즈나 마케팅, 펀드레이징등의 측면에 있어서도 필요하다. (Inspired execution side)

– 아이디어는 어디서부터 오는가?

idea source

MIT와 Chingwa 졸업생 대상 기업가 설문 : 초기 벤처 아이디어를 어디서 얻었는가?

– 업무에 종사하거나, Social/Professional 컨퍼런스에서 Other sources (Customer)로부터 얻는 비율이 절대적으로 크다.
(노란색으로 표시된 부분의 미국과 중국의 차이는 중국 기업가들의 나이가 좀더 젊은 편이라 회사업무 경험이 부족해서 나오는 차이)

– 70년대 캘리포니아의 대가뭄 : 잔디에 물주기가 금지되고 레스토랑에서는 물도 서빙하지 않음, 개인 수영장들도 모두 텅 빔.
LA의 부유한 주택가 (비버리 힐즈) 등을 돌아다니며, 하나의 스케이터 크루가 빈 수영장에서 스케이팅을 하기 시작함.
이들은 워터 펌프와 삽을 휴대하며 수영장의 진흙과 물을 퍼내가며 스케이팅을 하고, 경찰에 쫓기기도 함.

tumblr_mocm9gRjtL1rfe7dzo1_500

Half pipe의 기원은 빈 수영장에서의 스케이팅이었다.

– Lead user들이 새로운 영역을 발견하고, 퍼지는 과정에 대한 예 : Lead user는 Creativity의 Source가 될 수 있다.

내부 브레인스토밍 프로덕트와 Lead User

내부 브레인스토밍 프로덕트와 Lead User 프로덕트의 비교 : 3M 대상, MIT research.

– Lead User에게 나온 프로덕트가 전체적으로 뛰어난 모습을 보여주고, Operating profit 또한 큰 차이가 없다.

2) BrainStorming
– Brainstorming hack process

real_nominal

Real vs Nominal (seperated room) group

– 실제 모여있는 사람들보다 분리된 방에 있는 사람들이 더 좋은 아이디어를 내고 더 많이 낸다.
또한 그룹보다 개개인의 아이디어를 제시하는 것이 더욱 많은 아이디어를 낸다.
(다른 사람들에 의한 평가와 다른 사람들의 의견에 신경쓰기 때문)

low_high evaluation

Low, High evaluation comparison

– 그룹의 경우에는 별 차이를 받지 않으나, 개개인의 경우 타인에 의해 평가받을때 아이디어의 갯수가 급격히 감소한다.

means

Brainstorming 수단에 따른 결과

– email이나 instant messenger를 이용한 brainstorming은 큰 그룹일수록 더 효과적이다.

Idea generation phase와 evaluation phase를 확실하게 구분하라.


그룹의 창의성이 서로의 눈치를 보느라 훼손된다는 사실은 예전부터 많이 접했던 이야기이다. 브레인 스토밍 자체에 대한 관심은 별로 없는 편이지만, 사람들의 미묘한 심리가 서로에게 미치는 영향은 관심있는 주제 중 하나이라 연구결과는 흥미로웠다.

창업가들의 아이디어가 외부의 고객들이나 다양한 배경의 사람들과 접하면서 더욱 많이 발생한다는 점은 시사하는바가 크다.
스타트업을 하는 사람들 중에는 유독 ego가 높은 사람들이 많은데, 이는 새로운 도전을 받아들이고 나아가는데는 도움이 되겠지만, 자신만의 생각에 사로잡혀 남들의 의견을 경시하기도 쉽다. 자신의 비전을 가지고 사람들을 한계까지 몰아붙이는 스티브 잡스도 좋지만 그 스티브 잡스조차도 여러 사람들의 말을 귀담아 들었다는 사실을 간과해서는 안된다.

샤오미 창업자인 레이준의 유명한 말이 있다.
“돼지도 태풍의 길목에 있다면 하늘에 날 수 있다.”라는 말인데 거대한 기류에 편승하면 힘들게 노력하지 않아도 비상할 수 있다는 것이다.

캘리포니아 해변에 있다보면 서퍼들이 서핑보드 위에 앉아서 파도를 기다리는 모습을 쉽게 볼 수 있다. 작은 파도를 탈 때는 Paddling (팔을 저어 가속하는 행동)을 통해 속도를 내고 파도 위에 올라타야 한다. 초보 서퍼들은 패들링을 해도 파도위에 올라탈 속도를 만들어 내지 못해 파도를 넘겨 버리거나, 작은 파도들을 올라타려고 애쓰느라 정작 큰 파도들이 올때는 파도를 탈 수 없는 해변 가까이에 밀려나 있다. 하지만 능숙한 서퍼들은 큰 파도를 기다린다. 세계 정상급 서퍼들은 하루종일 한두개의 파도를 기다리느라 하루를 다 보내기도 한다고 한다. 큰 파도를 탈 때는 패들링도 필요 없다. 적당한 밸런스와 타이밍이 있다면 파도를 따라 해변까지 나아가는 것은 어렵지 않다.

전혀 다른 분야인 레이준과 서퍼의 경우를 들어 얘기했지만 시대의 흐름을 타려고 할 때 중요한 것은 흐름을 파악하는 관찰력이다. 이러한 관찰력을 잃지 않기 위해 유명한 기업가들이 고객을 관찰하고, 동료들의 말을 귀담아 듣고, 소통을 강조하며 건물 내부까지 변경하는 여러 노력을 아끼지 않는 것이다.

Written by Ringster

2015/01/07 at 3:40 오후

Technology Entrepreneurship (Lecture 1: Introduction and Overview)

leave a comment »

새해를 맞이하며 Stanford online에 작년에 신청해 둔 Technology Entrepreneurship (스타트업 기업가 정신에 대한 강의 :링크) 코스가 시작되었다.

관심사가 이것저것 많은 편이라 관심 있는 코스가 있으면 일단 신청해 두고 보는 편인데, 작년에는 신청만 하고 끝까지 완료하지 못한 코스들이 많았다. 봐야지 봐야지 하고 미뤄두다 잊어버리곤 했는데 Coursera에 수강해두고 완료하지 못했던 Startup engineering (Startup을 프로토 타이핑하는 기술들에 대한 설명 및 실습 강의 : 링크)도 다시 찾아서 훑어볼 생각이다.
Startup engineering 코스가 Unix와 웹, 모바일 기술에 대해 전반적으로 다뤘던 것과 달리 Technology Entrepreneurship 코스는 기업가 정신과 Business mode을 발굴, 운영하는 법에 대해 중점을 둔 강의이며 포스팅은 코스가 종료될때까지 배운 점과 느낀점을 정리하는 차원에서 계속 진행할 예정이다.

코스 목표는 다음과 같다.
1. 기술 아이디어를 찾아내는 프로세스를 명확히 하고 가능성 높은 상업적 기회를 찾아내는 것
2. 기술이나 자금과 같은 리소스를 모으는 계획을 수립하고 검증하는 것
3. 아이디어를 시장에 내놓고 어떻게 팔 것인지에 대한 비즈니스 모델을 수립하고 검증하는 것
4. 이러한 프로세스를 일반화해 기업가 정신을 바탕으로 큰 회사나 다른 곳에서 사용하는 것

Lecture 1. Introduction and Overview

1) Introduction and Overview
– 교수 소개 및 코스 소개
Charles (Chuck) Eesley : 프로필 링크
 1st half에서는 opportunity recognition (Product인가 Service인가, Market인가), 2nd half에서는 pursuit of opportunity (People and organization, Resources and capital)에 대해 다룸

– 다른 Entrepreneurship class와 차이점 :  엔지니어링적 접근을 통해 스타트업을 분석, 성공한 기업가의 war story가 아닌 research를 바탕으로 무엇이 성공한 스타트업을 만들었는가에 대해 class를 전개

– Entrepreneurship이란?
정의 : Entrepreneurship is a management and leadership style that involves pursuing opportunity without regard to the resources currently controlled – Greg Dees (시장에서나 기술에서 기회를 발견했을 때 그 기회를 잡기위해 모든 자원을 컨트롤 할 수 없어도 기회를 추구하는 것)

 효과 : Global economic growth의 key driver, 미국내에서 3백만 개의 새로운 일자리 창출, 기술 진보 (혁명적 진보 : brave new world를 가져오는 진보, 진화/점진적 진보 : 더 빠르거나, 더 낫거나, 더 싸게 만드는 진보)를 가져옴

2) Business Models

– Business model canvas (9 Block)
Business-Model-Canvas

Key Activities: 비즈니스 모델을 실행하기 위한 핵심 행동
Key Resources: 고객에게 가치 제공을 위해 필요한 자원
Key Partners: 비즈니스의 레버리지가 될 파트너들
Value Proposition: 고객에게 제공하는 가치가 될 제품이나 서비스
Customer Segments: 제품이나 서비스를 이용하는 타겟 고객
Channels: 고객에게 제품이나 서비스를 전달하는 수단
Customer Relationship: 고객과 회사를 연결하는 링크
Cost Structure: 비즈니스 모델을 유지하는데 드는 비용구조
Revenue Streams: 회사가 돈을 버는 방법

– Great product가 Great company가 되는 것이 아니다.
Great Company는 Great product + Great Biz model

3) Silicon Valley

– 실리콘밸리의 배경과 기업가 정신에 대한 관련 설명 (인재풀, 실패용인 문화, 문화적 다양성 등등.. 많이 듣던 얘기들이라 생략)


스타트업 업계에 있는 사람들의 블로그를 많이 Follow하고 글을 읽는 편인데, 한 블로그에서 개발자를 사냥꾼 (저격수)에 비유하며 “기술같은 건 중요하지 않다”라고 말한 사람들을 비난한 글을 읽은 적이 있다. 개발자가 저격수처럼 전문화되어야 한다는 글의 주 논지에는 백분 공감하지만 “기술적으로 뒤지고 있다면 시도할 수 있는 건 서비스 벤처 뿐일 텐데, 여기서도 기술적 우위가 없으면 도대체 뭘로 우위를 차지할 수 있다는 것인지 알 수가 없다.” 라고 말하는 글에서 느껴지는 “기술 우위” 마인드는 Product = Company라는 엔지니어의 인식을 대변하고 있는 것 같았고, 비즈니스 모델만으로도 성공 가능하다라는 인식이나, 인문학적인 통섭이 기술력보다 중요하다라는 인식처럼 한쪽으로 치우쳐 있는 느낌을 지울 수가 없었다.

사실 나는 이에 반론하기 위한 예로 페이스북을 들고 싶다.  지금의 페이스북이야 뛰어난 기술력을 가지고 있지만 (이는 성공의 요인이 아니라 성공함에 따라 부차적으로 뛰어난 엔지니어들을 끌어온 “결과”이다.) 초창기의 페이스북은 그다지 기술력이 좋은 사이트가 아니었다.
이는 사실 널리 알려진 편에 속하는데.. Quora에 올라온 How did Mark Zuckerberg train himself to be a programming prodigy?에 달린 답변들에도 재미있는 답변이 많다.
주커버그는 하버드에서 심리학 전공을 했으며, 어려서부터 프로그래밍을 하긴 했지만 페이스북 자체가 높은 기술력으로 만들어진 것은 아니며, TopCoder라는 프로그래밍 알고리즘 사이트에서 페이스북을 만들 당시의 레벨이 3 (레벨1의 문제도 겨우 50%의 성공률이다.. 주커버그의 TopCoder 프로필 링크) 밖에 되지 않았다는 사실도 그 당시 페이스북의 기술력 수준을 짐작할 수 있게 해준다.

이러한 페이스북의 성공에서 주목해야 할 점은 Great technology가 Great product는 아니라는 것이다. Great product에는 많은 것들이 들어간다. 디자인, 사용자 편의성, 기술력 등등.. 이 중 어느 하나가 엄청나게 뛰어나다고 해서 우리는 좋은 제품이라고 말하지 않는다. Technology나 Design, UX 등등은 결국 하나의 도구에 불과하고 이를 이용해서 얼마나 사용자에게 필요한 제품을 만드느냐가 Great Product를 정의하는 것이고 Business Plan이 여러 블록의 모음으로 이루어졌듯이 Technology 또한 Great product를 위한 하나의 블록일 뿐이다.

강의를 듣고 느낀점에 대해 정리하다보니 평소 담아두고 있던 말들이 쏟아져 나왔다.
Lecture 1과 2가 동시에 올라와서 전부 수강하기는 했는데 정리에 시간이 생각보다 소요되어 Lecture 2는 다음 포스팅으로..!

Written by Ringster

2015/01/07 at 4:05 오전

Yurim Jin, Programmer&Designer

Fork my brain because I'm ready to commit

jamesjungkuelee's biotech story

Biotech, entrepreneur, life

Communications as Ikor

기업 위기관리의 모든 것

Charles Pyo Ventures

시도와 실패, 성장의 기록. 2막에서도 계속되는 모험들.

techNeedle 테크니들

글로벌 테크 소식을 인사이트와 함께 전달합니다

Open API, Cloud, DevOps 와 eBook

Open API, eBook, Cloud, DevOps

Economics of almost everything

Tech, Mobile, Internet

cylee

Tech, Mobile, Internet

gorekun.log

고어쿤로그

Google Developers Korea Blog

Tech, Mobile, Internet

Android Developers Blog

Tech, Mobile, Internet

최피디의 앱스 개발기

기술, 앱스, SNS, 창업

D2 Blog

Tech, Mobile, Internet

All of Software

Tech, Mobile, Internet

'Startup's Story Platform’

'Startup's Story Platform’