2017년 11월 17일 금요일

브런치에서 이동

이동 순서는 간단 - 발행 취소글, 서랍에 저장된 글, 매거진 선택해서 하나씩...

매일 많은 글이 올라올 예정.

-----------------------------------

알고리즘의 카테고리는 2가지가 있다. 교육용과 상업용.

교육용

Online judge 사이트(topcoder 等)에서 정형화된 문제를 푸는 것이다.

문제의 발견 → 문제의 정의 → 수식으로 변환 → 코드로 변환

문제는 알고리즘 사이트에 있고, 정의도 알고리즘 사이트에 있다. 수식은 공개되어 있어서 외우고 해당 코드로 만드는 법도 외우면 된다.


    엘리베이터 사고  

는 해결하지 못한다. 

상업용

알고리즘은 상품을 만드는 것이 대표적인 예이다.

목표 설정 → 정보수집 → 대안 설정 → 수식으로 변환 → 코드로 구현 → 성능 테스트 → 최적안 선정

여러 대안이 있을 수 있고, 교육용에서 하는 것처럼 시/공간 복잡도를 평가할 수도 있겠지만 고려할 사항은 매우 많다. TRIZ와 비슷하다.

Teoriya(이론) Resheniya(해결책) Izobretatelskikh(발명의) Zatach(작업의)
    TRIZ는 구 소련 겐리히 알츠슐러(Genrich Altshuller)에 의해 제창된 창의문제 해결을 위한 체계적 방법론   
    명백, 개선, 혁신, 발명, 발견 과정에서 고려해야할 해법 수는 10가지에서 1,000,000(백만)가지로 늘어남.  

아무리 잘 만들어도 선점형 운영체제가 아닌 경우 문제가 될 수 있다. RTOS를 쓴다고 해도 Cortex-R과 같이 해당 운영체제를 지원하는 프로세서 라야 문제를 일으키지 않을 수도 있다.

디자인 패턴

교육용 알고리즘과 디자인 패턴은 같은 의미로 보면 된다. 둘 다 상업용 알고리즘을 만들기 위한 [기초]가 된다. 디자인 패턴 안에는 우리가 일반적으로 아는 [자료구조], [알고리즘]이 들어간다. 알고리즘은 수학과 결합되어 있고, 나에게 대표적으로 중요한 과목을 꼽으라면 고등학교 수학, 공업수학, 선형대수 정도이다.

수학, 물리학과, 산업공학과가 알고리즘을 잘 짜는 이유

On-Line Encyclopedia of Integer Sequences

여기 들어가면 정수열이 많다.

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169

이 숫자에서


Fibonacci numbers: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1

이 수식을 뽑을 수 있다면,


#include <iostream>
using namespace std;
int fibonacci(int number) {
    if (number <= 1) {   return number;
    } else {   return fibonacci(number - 1) + fibonacci(number - 2);
    }  }
int main() {
    int fib_number = fibonacci(8);
    cout << "The 8th Fibonacci number is: " << fib_number << endl;
    return 0;
}

C/C++이던


public class Fibonacci {
    public static void main(String[] args) {
        int fibNumber = fibonacci(8);
        System.out.println("The 8th Fibonacci number is: " + fibNumber);
    }
    public static int fibonacci(int number) {
        if (number <= 1) {
            return number;
        } else {
            return fibonacci(number - 1) + fibonacci(number - 2);
   }   }  }

JAVA 던


function fibonacci(number) {
    if (number <= 1) {
        return number;
    } else {
        return fibonacci(number - 1) + fibonacci(number - 2);
    }  }
var fibNumber = fibonacci(8);
console.log("The 8th Fibonacci number is: " + fibNumber);

JAVA SCRIPT 던


func fibonacci(number: Int) -> (Int) {
    if number <= 1 {
        return number
    } else {
        return fibonacci(number - 1) + fibonacci(number - 2)
    }
}
var fibNumber = fibonacci(8)
println("The 8th Fibonacci number is: \(fibNumber)")

SWIFT 던


#!/usr/bin/env ruby
def fibonacci(number)
    if number <= 1
        return number
    else
        return fibonacci(number - 1) + fibonacci(number - 2)
    end
end
fib_number = fibonacci(8)
puts "The 8th Fibonacci number is: #{fib_number}"

RUBY 던


def fibonacci(number):
    if number <= 1:
        return number
    else:
        return fibonacci(number - 1) + fibonacci(number - 2)
if __name__ == "__main__":
    fib_number = fibonacci(8)
    print 'The 8th Fibonacci number is:', fib_number


PYTHON이던


중요하지 않다.(중요하지만 이 글에서는 중요하지 않다로 하겠다.)


수학, 물리학과 학생들이 수식을 잘 뽑아 낸다. 이들을 프로그래머로 만들려면 코드로 변환하는 것만 가르쳐 주면 된다. 내가 산공출신이라(시스템경영으로 바뀌었지만) 억지로 산업공학과도 넣었다. 사실, 따지고 보면 통계, 기계 等 수식을 배우는 모든 학과가 해당된다.


기초 알고리즘만 예를 들었을 때

if문 for문, 배열, 링크드 리스트, 큐, 트리, 문자 처리, 함수 쓰는 방법, 소트, 최단거리 알고리즘, 그리디 알고리즘 정도의 키워드를 알면 뽑아낸 수식에서 코드로 변환하기 위한 공부들을 인터넷을 통해 찾을 수 있다. if/for, 배열, 함수 쓰는 방법은 해당 키워드가 전부이지만 나머지는 응용한 것들이 많고 또 응용한 것이 새로운 학문이 되기도 한다.

고급으로 넘어가면 논문을 검색하는 영역으로 들어가는데 논문은 전체를 이해하기에는 시간이 너무 걸린다. 보통 해당 수식을 단순히 코드로만 구현해서 상품을 만든다. 상품이 성공하면 해당 부분에 대해서 깊게 공부하는 것이 상업용 알고리즘의 사이클이다. 결국 상업적으로 성공해야 깊게 팔 수 있다는 뜻이다. 

경험적이고 현실적으로 말해 보았다.

대학생의 경우 원하는 기업 입사를 위해서 교육용 알고리즘 공부만 하는 것이 최근 기조이다. 전체적인 흐름은 알고 공부를 하면 왜 공부해야 하는지 알기에 좀 더 고무적이게 된다.

이렇게 생각한다.

P.S

끝으로 여담을 하나 말해 봅니다. IT 비전공자를 가르칠 기회가 많아서 기업은 왜 다들 알고리즘 시험을 보는가? 에 대한 답을 자주 하게 됩니다. 프로그래밍은 문제를 푸는 것이고 알고리즘이라는 단어 자체가 문제가 있고, 그것을 해결해 가는 과정의 뜻을 내포하고 있습니다. 그래서 데이터 구조도 그 안에 있는 것입니다. 객체는 상태와 행동인데 상태를 효율적으로 표현하기 위해 데이터 구조가 있고, 행동을 효율적으로 표현하기 위해 알고리즘이 있습니다. 데이터 구조가 알고리즘에 포함되어 있기 때문에 알고리즘이 중요한 것입니다. 물론, 교과 과목은 따로 되어 있지만요 ^^

알고리즘이 어렵다는 사람은 
카테고리를 잘 알고 자주 쓰는 알고리즘을 공부하면 됩니다. 현재 진행하고 있는 교육 운영 프로그램 운영하는 자산이라 제가 정리한 목록 공개는 어렵지만 관련 책이 많으니 참고하시기 바랍니다.

저의 경우 구종만씨 책과 다음 책을 샀습니다. 사실 구종만씨 책은 선물용으로 계속사서 주고 있습니다.
저의 경우 실무에서 가장 많이 쓰이는 것은 array, list, hashtable, map, heap 으로 보입니다. heap 을 알려면 tree를 알아야 합니다. 소팅을 하다보면 heap 정렬도 있고, list search를 하다보면 quick sort(binary)랑 array(linear)를 씁니다. 그래프 서치에 tree가 또 들어갑니다.

전, 여러 교육 알고리즘 문제를 잘 풀지 못합니다. 다만 저명 인사를 만나보니 리누스 토발즈나 존 카멕도 구글 코드 잼에서 예선 탈락 할 수 있다는 것을 알지요. 게다가 항공기에도 쓸 수 있는 RTOS 소프트웨어의 스케쥴러도 간단한 array 와 sort, search 등을 기반하여 짜여 진다는 것도 알고 있습니다.

간단한 OLPP를 실생활에 완벽하게 적용하여 생각 회로를 바꾸고 싶다면, 모든 자잘한 것 세부적인 것들도 알고 있는 상태여야 합니다. 제 이야기도 해 드렸으니 기본 공부는 얼핏이라고 해서 언제든 찾을 수 있는 keyword를 머릿속에 넣었으면 합니다.

코드 관심도가 더 올라간다.

한동안 신경 안 쓰고 있었는데, 알고리즘 풀이 게시글로 애드센스 2만원 벌었다.
(구글에서 잘 책정해줬을 때는 20~30만원도 찾고 그랬는데...)


책에 넣느라 지웠는데 생각보다 많은 사람들이 찾는 다는 것을 알게 되었다.

코딩 교과목이 기본 교육이 되어 가고 있어서 그런지 코드 검색 관심도가

많이 올라간다는 것을 알 수 있었다.

어제는 제자가 검색하다보니 내 블로그로 오게 되어 생각났다고 연락도 오고...

회사 광고 한다고 게시글 도배할 수는 없어서,

기존 게시글 300여개를 회사 광고용으로 바꾸어 버렸는데
(오래된 자료기도 하고...)

지금 사실 많이 후회가 된다. 광고에 비용을 쓰기 힘든 상황에서 이래저래

기획하고 도전해 보는 것도 좋은 경험이긴 한데... 개인 공간은 개인 공간으로

남겨두는 것이 좋겠다는 것이 고착화된 생각이다.

상품화 단 서비스 개발의 경우 핵심 알고리즘 짤 일이 거의 없다.

잘 동작하는 단위 모듈을 많이 짜고 재사용성을 늘이는 것은 하겠지만,

요즘 서비스는 워낙 다양한 플랫폼과 오픈소스, 라이브러리 등 방대하기에

whitebox 테스팅은 unit 테스트 뿐이고, 그게 아니면 블랙박스 테스팅(유저 테스트)

가 대세다. 모든 유기적 결함까지 테스트할 수는 없기에

회사가 커지면 삼성에서 썼던 coverity를 쓰고 싶다.

에트리 강의하면서 국내 솔루션을 접해볼 기회가 있었는데

커버리티가 내가 아는 중에서는 정적 분석 최고의 솔루션으로 보인다.

GEO CODE 2/2

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Morpheus MAP</title>
 
</head>
<body>
<!-- 지도를 표시할 div 입니다 -->
<div id="map" style="width:100%;height:600px;"></div>

<script type="text/javascript" src="https://dapi.kakao.com/v2/maps/sdk.js?appKey=4d6f072271738cdd95b843dd68392c3d"></script>
<script>
var mapContainer = document.getElementById('map'), // 지도를 표시할 div
    mapOption = {
        center: new daum.maps.LatLng(37.378853, 127.100844), // 지도의 중심좌표
        level: 3 // 지도의 확대 레벨
    };

// 지도를 표시할 div와  지도 옵션으로  지도를 생성합니다
var map = new daum.maps.Map(mapContainer, mapOption);
var geocoder = new daum.maps.services.Geocoder();
</script>

</body>
</html>

다음 지도도 API 호출만 해주면 잘 된다. 그러면 생각해보자, 지도 표시 방법에는

WGS84 GRS80


도 있지만 (http://linuxism.tistory.com/833) 그 외에도 몇가지 된다.

중요한 것은 위도 경도 표시 방식이 최신이고 그 방식을 썼을 때 네이버, 다음, 구글의 GEO CODE를 이용하지 않고도 얼마든지 표시할 수 있다는 것이다.

가령

<!DOCTYPE html>
<html> 
<head> 
  <title>Morpheus MAP</title> 
  <script src="http://maps.google.com/maps/api/js?sensor=false" 
          type="text/javascript"></script>
          
              <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="UTF-8">
    <style>
      /* Always set the map height explicitly to define the size of the div
       * element that contains the map. */
      #map {
        height: 100%;
      }
      /* Optional: Makes the sample page fill the window. */
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }

      #floating-panel {
        position: absolute;
        top: 10px;
        left: 25%;
        z-index: 5;
        background-color: #fff;
        padding: 5px;
        border: 1px solid #999;
        text-align: center;
        font-family: 'Roboto','sans-serif';
        line-height: 30px;
        padding-left: 10px;
      }

      textarea { width:300px;
        top: 10px;
        left: 25%;
        z-index: 5;
        background-color: #fff;
        padding: 0px;
        border: 1px solid #999;
        text-align: center;
        font-family: 'Roboto','sans-serif';
        padding-left: 10px;
               }

    </style>
          
</head> 
<body>
  <div id="map" ></div>
  <script type="text/javascript">
    var locations = [
      ['디자인스타치과의원',37.5430607,126.95101729999999],
      ['중앙대학교병원 피부과',37.506792, 126.96080600000005],
      ['고운선형한의원(구,고운선형코앤비한의원)',35.126206, 129.10969599999999],
      ['목동경희한의원',37.5264266, 126.86312079999993],
      ['삼성서울치과의원',37.3281893, 127.91944850000004],
      ['오장균치과',37.4849065, 126.78352139999993],
      ['화이트드림치과(수원)',37.2632338, 127.03162109999994],
      ['H성형외과',37.5076053, 127.02247729999999],
      ['고대구로병원 성형외과',37.4922173, 126.88494779999996],
      ['오라클피부과',37.5258525, 127.02948100000003],
      ['화이트e치과 센텀',35.1681108, 129.1313169],
      ['서울류준하치과교정과치과의원',37.3185883, 126.83649130000003],
      ['케이스타(에버라인)성형외과',37.4977108, 127.0284388],
      ['편백미즈한의원',35.1589595, 129.11366610000005],
      ['Dental Bauhinia',22.5370746, 114.05026079999993],
      ['굿스마일치과(광명)',37.478831, 126.85447529999999],
      ['김명윤치과',37.431626, 127.12959219999993],
      ['서울바른이치과',37.5050014, 126.76469569999995],
      ['수성라임치과',35.8202485, 128.64165159999993],
      ['스마일민치과교정과',37.3895011, 126.95220259999996],
      ['차세대융합기술연구원',37.2981742, 127.04605889999993],
      ['청인한의원',37.2981742, 127.04605889999993],
      ['123교정치과',37.5130605, 127.10349500000007],
      ['노벨의원(인천주안점)',37.5130605, 127.10349500000007],
      ['더가지런한교정치과',37.612334, 127.030395],
      ['리본성형외과',37.51624049999999, 127.02100610000002],
      ['서울아산병원',37.526922, 127.10838100000001],
      ['서울웃는아이소아치과의원(구,서울보스톤고른이치과)',37.5143492, 127.11751300000003],
      ['서울유엔치과',37.5342451, 127.01008179999997],
      ['여건봉치과',37.5202063, 126.92944779999993],
      ['퍼스트치과',37.4986952, 127.02662940000005],
      ['그랑교정치과',37.5706648, 126.98168869999995],
      ['당신e빛나는치과',35.1933028, 129.06736419999993],
      ['더원치과',35.81404759999999, 128.5214459],
      ['맑은숲자향한의원',34.8942203, 128.69104859999993],
      ['메디스치과(서면)',35.1568741, 129.0581012],
      ['미올한의원',37.4966163, 127.02861889999997],
      ['서울클리어치과',37.6521458, 127.04645860000005],
      ['아성치과',35.2449383, 129.21423789999994],
      ['아이라인성형외과',37.5166254, 127.04054819999999],
      ['연세에스치과(구.에스치과의원)',37.3544519, 127.10562970000001],
      ['올곧은치과의원',37.6376074, 126.91755660000001],
      ['이끌림치과',36.6415416, 127.42807730000004],
      ['이바른치과교정과',37.367931, 127.106312],
      ['체리스마일치과',37.4804338, 126.95400210000003],
      ['홍성준치과',35.8268205, 127.14464939999993],
      ['후한의원(포바즈부산)',35.8268205, 127.14464939999993],
      ['we병원',33.2862403, 126.44410199999993],
      ['가지런한교정과치과(군산)',35.9660654, 126.71613200000002],
      ['경희대한방 사상체질',37.5534841, 127.15764680000007],
      ['고운치과(원주)',37.3299551, 127.94998759999999],
      ['그라벤의원',37.4986077, 127.02851620000001],
      ['김담희한의원',37.5071531, 127.02762499999994],
      ['뉴욕바른라인치과',37.5533809, 127.00937829999998],
      ['닥터스치과',35.9636378, 126.71515360000001],
      ['매직키스치과의원',37.5262971, 127.02745349999998],
      ['모두가원하는치과',37.00496800000001, 127.103926],
      ['미소모아치과',35.834164, 127.12047499999994],
      ['바른이치과의원(구미)',35.834164, 127.12047499999994],
      ['서울바른치과(동탄)',37.5166254, 127.04054819999999],
      ['서울바른치과교정과(청주)',36.6260303, 127.43339880000008],
      ['서울브라운치과',36.351559, 127.3883184],
      ['서울센트럴치과',37.5032606, 127.02377939999997],
      ['서울B&B치과',37.66635309999999, 127.05696030000001],
      ['센트럴연세치과',37.5034292, 127.00530980000008],
      ['슈바이처치과',37.5608307, 126.81174880000003],
      ['스마일가인치과',37.2658503, 127.03300039999999],
      ['어우름한의원',37.5042292, 126.75234669999998],
      ['얼굴에미소치과',37.7319629, 127.19419370000003],
      ['연세대보철과',37.565784, 126.93857200000002],
      ['움찬모발이식센터',37.524048, 127.028008],
      ['원데이치과',37.50166249999999, 127.02636280000002],
      ['원한의원',35.1900818, 128.11725009999998],
      ['임재범치과',37.268158, 127.00008400000002],
      ['정우선치과교정과',37.4935825, 127.06037409999999],
      ['톡스앤필(대구) ',35.8677672, 128.5939234],
      ['투명치과의원(울산)',35.5375769, 129.3307588],
      ['투명플러스치과',37.4914868, 126.722578],
      ['홍성치과의원',35.1431026, 129.10843180000006],
      ['화이트e치과 덕천',35.2107033, 129.00613829999998],
      ['81도치과교정과치과의원',37.4931369, 127.01301409999996]                          
    ];
    var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 7,
      center: new google.maps.LatLng(36.4835543, 127.71697710000001),
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });
    var infowindow = new google.maps.InfoWindow();
    var marker, i;
    for (i = 0; i < locations.length; i++) {  
      marker = new google.maps.Marker({
        position: new google.maps.LatLng(locations[i][1], locations[i][2]),
        map: map
      });
      google.maps.event.addListener(marker, 'click', (function(marker, i) {
        return function() {
          infowindow.setContent(locations[i][0]);
          infowindow.open(map, marker);
        }
      })(marker, i));
    }
  </script>
</body>
</html>


요렇게 말이다.

문제는 변환이 노가다 ㅡㅡ;

그래서 주소 치고 바로 지오 코드 나오면, 클릭했을 때 위도 경도를 바로 선택하는 유틸리티 페이지를 만들었다. 코드에 IP도 나와 있지만 도메인도 연결했다.

http://morpheus3d.net/mapi/addr2geo.html

소스는 F12로 봐도 되겠지만 편하게...

<!DOCTYPE html>
<html>
  <head>
    <title>Geocoding service</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <style>
      /* Always set the map height explicitly to define the size of the div
       * element that contains the map. */
      #map {
        height: 100%;
      }
      /* Optional: Makes the sample page fill the window. */
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }

      #floating-panel {
        position: absolute;
        top: 10px;
        left: 25%;
        z-index: 5;
        background-color: #fff;
        padding: 5px;
        border: 1px solid #999;
        text-align: center;
        font-family: 'Roboto','sans-serif';
        line-height: 30px;
        padding-left: 10px;
      }

      textarea { width:300px;
        top: 10px;
        left: 25%;
        z-index: 5;
        background-color: #fff;
        padding: 0px;
        border: 1px solid #999;
        text-align: center;
        font-family: 'Roboto','sans-serif';
        padding-left: 10px;
               }

    </style>
  </head>
  <body>
    <div id="floating-panel">
      <input id="address" type="textbox" value="모르페우스">
      <input id="submit" type="button" value="Pin it!">
      <input type="button" value="GeoLocation" onclick="GeoLocation()">
      <textarea id="geoltxt" rows="1" cols="50" onclick="this.focus();this.select()" readonly="readonly"></textarea>
      <input type="button" value="Del" onclick="DelGeoLocation()">
    </div>
    <div id="map"></div>
    <script>
var geolocation = "";
function GeoLocation() {
document.getElementById("geoltxt").value = geolocation;
}

function DelGeoLocation() {
document.getElementById("geoltxt").value = "";
}

      function initMap() {
        var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 15,
          center: {lat: 37.378853, lng: 127.100844}
        });
        var geocoder = new google.maps.Geocoder();

        document.getElementById('submit').addEventListener('click', function() {
          geocodeAddress(geocoder, map);
        });

      }

      function geocodeAddress(geocoder, resultsMap) {
        var address = document.getElementById('address').value;

        geocoder.geocode({'address': address}, function(results, status) {
          if (status === 'OK') {
            resultsMap.setCenter(results[0].geometry.location);
            var marker = new google.maps.Marker({
              map: resultsMap,
              position: results[0].geometry.location
            });
//            alert(address + '  ' + results[0].geometry.location);

    geolocation = results[0].geometry.location;

          } else {
            alert('Geocode was not successful for the following reason: ' + status);
          }
        });
      }
    </script>
    <script async defer
    src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBCcqpE94y1kvJd6jxJoqkoVSqpLNCLzog&callback=initMap">
    </script>
  </body>
</html>


암호화만 적용하면 되는데 난독화 -> 그래봤자 파싱 잘하면 됨.
단방향 암호화 -> 어차피 키는 들어감. 개인키 넣어두고 배꼈는지 안 배꼈는지 알아보는 방법도 괜찮겠지만 -> 데이터 뽑아서 자기껄로 만들면 끝.
암호화의 끝판왕은 키를 만들고 그 키를 BGA타입 칩에 집어 넣는건데(서버팀 회의 때 내가 설파한 5단계 암호화) 거기 까지 고려할 필요도 없다.

가장 좋은 것은 회사에게 필요한 자료만 가공해서 다른 데서 가져가도 쓸모없게 만드는 것이다. 더 좋은 방법은 쓸 때마다 우리 회사에 도움되게 만드는 것. 즉, 모든 병원 지도를 만들 필요 없다는 뜻.

도움 되길.

GEO CODE 1/2


병원 위치를 지도에 표시하는 geo coding 중인데...

아래 1의 경우 성공하고 아래 2의 경우 실패한다.

구글에서도 주소를 변환하는 geo code 방식은 정확하지 않다고 나와 있다.

아래와 같이 API 서버에서 내가 임의로 가공한 csv를 읽어 가져와서 파싱하고

geo code로 변환하는 것을 만들어 보려고 했다. 이 코드를 로컬에서 실행하려면

크롬 마켓에서 CROS 플러그인을 설치해야 한다. - 아래 0 -

OVER_QUERY_LIMIT이 난다. 생각해 보니 데이터 베이스에서 데이터를 가져와서

파싱하고 해당 위치를 찍어 주는 것은 맞는 코딩 방식이고, 변하는 데이터를

실시간으로 추적할 수 있기는 하나, 주소의 geodata가 변경되거나 병원 이전 등

변할 수 있는 여지도 크지 않고, 주소가 그리 많지도 않다.

게다가 geo code api를 실행시마다 주소 개수 만큼 호출해야 하므로, 무료 API 사용에도

문제가 된다. 그래서 다른 방법으로 구현하기로 했다.


병원 주소야 인터넷에 치면 나오는 데다가 공개되어 있고, API 키야 바꾸면 되는...


- 아래 0 -

<!DOCTYPE html>
<html>
  <head>
    <style>
      #map {
        height: 700px;
        width: 100%;
       }
    </style>
  </head>
  <body>

<script src="http://211.57.201.145/mapi/jquery.min.js"> </script>
    <h3>My Google Maps Demo</h3>
    <div id="map"></div>
<script>
$(document).ready(function() {
$.ajax({
type: "GET",
url: "http://211.57.201.145/mapi/hos_addr_utf8.csv",
datatype: "text",
success: function(data) {processData(data); 
}
});
});

      function initMap() {
        var uluru = {lat: 37.378853, lng: 127.100844};
        var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 17,
          center: uluru
        });
        var marker = new google.maps.Marker({
          position: uluru,
          map: map
        });
      }

function processData(allText) {
var allTextLines = allText.split(/\r\n|\n/);
var hos_name = [];
var hos_addr = [];
        var geocoder = new google.maps.Geocoder();
for (var i=0 ; i<allTextLines.length; i++) {
// for (var i=0 ; i<3; i++) {
var data = allTextLines[i].split(',');
hos_name.push(data[0]);
hos_addr.push(data[1]);

var address = data[1];
           
        geocoder.geocode( { 'address': address}, function(results, status) {
  if (status == 'OK') {
        map.setCenter(results[0].geometry.location);
        var marker = new google.maps.Marker({
            map: map,
            position: results[0].geometry.location
        });
        marker.setMap(map);
        } else {
            alert('Geocode was not successful for the following reason: ' + status);
        }
        });
}

alert(hos_name);
alert(hos_addr);
}

</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBCcqpE94y1kvJd6jxJoqkoVSqpLNCLzog&callback=initMap">
</script>

</body>
</html>


- 아래 1 -


순번|우편번호|원본우편번호|주소1|주소2|수취인|전화1|전화2
1|05321||서울 강동구 천호동 303-8 왼쪽 은색문 쭉들어와서 계단위 1층 102호||||
2|08646||서울특별시 금천구 금하로 796 (시흥제2동, 604호, 벽산6단지아파트) 604동 1106호||||
3|21685||인천광역시 남동구 논고개로 17 (한화에코메트로 11단지) 1111동 904호||||
4|03482||서울특별시 은평구 가좌로7라길 38 () 102호 지층 왼쪽||||
5|04426||서울특별시 용산구 이촌로84길 9-12 (이촌제1동, 중앙하이츠빌라) 중앙하이츠 B동 501호||||
8|31003||충청남도 천안시 서북구 성환읍 안궁1길 2 101동 1003호(한미래아파트)||||
9|55062||전라북도 전주시 완산구 호암로 87 (효자4동, 효자휴먼시아5단지아파트) 502동 1303호||||
11|07576||서울 강서구 등촌3동 주공아파트 702동 1003호||||
12|51777||경상남도 창원시 마산합포구 덕동길 109 (현동, 덕동식당, 덕동동 940-1) 642-1번지 덕동식당 안집||||
13|08792||서울특별시 관악구 남부순환로240길 42 (낙성대동, 성문아카데미텔, 봉천동 207-31) 507호||||
14|42270||대구 수성구 사월동 시지2차사월보성타운 102동 1808호||||
15|03192||서울특별시 종로구 수표로18길 9 (종로1.2.3.4가동, 관일빌딩) 501호||||
16|10407||경기 고양시 일산동구 마두동 844-4||||
17|26488||강원도 원주시 늘품로 38 () 현진에버빌 2차 204동 302호||||
18|06971||서울특별시 동작구 상도로47나길 49 (상도제1동, 현대빌라) B01||||
19|04753||서울특별시 성동구 마장로39길 43 (신성미소지움아파트) 102동 604호||||
20|48262||부산광역시 수영구 광안동 379-12 성우스카이뷰 301호||||
21|61934||광주광역시 서구 죽봉대로22번길 19 (농성1동) 2층||||
22|51462||경상남도 창원시 성산구 대암로 82 (사파동, 성원3차아파트, 대방동 355-1) 304동 406호||||
23|05033||서울특별시 광진구 광나루로44길 13 (구의제3동) 302호||||
24|03784||서울특별시 서대문구 창천동 476 605호||||
25|44629||울산광역시 남구 북부순환도로 35 (삼호동, 무거동 223, 246-3) 무거위브자이 110동 1103호||||
26|11138||경기도 포천시 신북면 신평로 176 대경파크빌 4층 401호||||
27|08589||서울특별시 금천구 가산디지털2로 62 3층 모아통신||||
28|17841||경기 평택시 동삭동 삼익사이버아파트 109동 1004호||||
29|42658||대구광역시 달서구 장기로 160 (성당코오롱하늘채아파트) 103동 2002호||||
30|46281||부산 금정구 장전동 128-14 헤렌하우스 403호||||
32|13332||경기도 성남시 수정구 탄리로 19 (수진1동, 수진1동주민센터) 수진1동 주민센터 무인택배보관함||||
33|06633||서울특별시 서초구 서초대로58길 10 (서초1동) 서초대우아이빌 101동 802호||||
34|18114||경기도 오산시 오산대역로 232 (신장동, 삼미마을19단지아파트) 1907동 2103호||||
35|38011||경북 경주시 안강읍 산대1리 2388-9번지 퍼펙트학원3층||||
36|21412||인천광역시 부평구 백운로60번길 16 (부평3동) 1층||||
37|22678||인천광역시 서구 청마로 170 (검단4동) 푸르지오아파트 304동 1004호||||
38|22189||인천광역시 남구 낙섬중로 18 (용현5동) 대림아파트 3동 106호||||
39|04043||서울 마포구 서교동 395-129 403호||||
40|01741||서울 노원구 중계1동 주공10단지아파트 1002동 405호||||
41|51162||경상남도 창원시 의창구 하남천동길44번길 5-3 (명곡동) 360-3 금강초원빌라 501호||||
42|51499||경상남도 창원시 성산구 원이대로 774 511동102호||||
43|51606||경상남도 창원시 진해구 안청북로 42 (웅동2동, 녹산현대아파트) 104동 1006호||||
44|24367||강원도 춘천시 효자로 7-1 () 한국노총빌딩 2층 사회적협동조합 희망리본||||
45|31436||충청남도 아산시 인주면 아산만로 1674-10 () 103동 104호(인주휴먼시아)||||
46|16499||경기 수원시 영통구 원천동 아주대학교 광교관 6326호||||
47|13928||경기도 안양시 동안구 관양동 1672 동편마을 아파트 105동1407호||||
48|10881||경기도 파주시 회동길 230 (교하동, (주)한국학술정보) 1층 출력실||||
49|03955||서울특별시 마포구 방울내로9안길 81 목련센터빌 2동 502호||||
50|04618||서울특별시 중구 동호로25가길 7-1 (장충동) 미네르바빌라 102호||||
51|13578||경기도 성남시 분당구 불정로420번길 26 (서현2동) 302호||||
52|13814||경기 과천시 뒷골2로 21, 302호||||
53|10102||경기도 김포시 중봉로58번길 46 (김포1동, 부대시설, 쌍용아파트) 108동 1004호||||
54|54000||전라북도 군산시 옥도면 어청도길 113-14 해군아파트 C동 302호||||
55|16273||경기도 수원시 장안구 장안로42번길 23-3 () 406-30번지 1층||||
56|51126||경상남도 창원시 의창구 대산면 진남로75번길 20 () .||||
57|63513||제주 서귀포시 대정읍 상모리 4138-5||||
58|05658||서울특별시 송파구 오금로35길 17 (유치원, 지하상가, 오금동 44) 35-301||||
59|05256||서울특별시 강동구 고덕로 130 (암사제1동, 경비실1, 경비실2, 프라이어팰리스) 프라이어팰리스107동2003호||||
60|13147||경기도 성남시 수정구 산성대로405번길 3 () 2층||||
61|06966||서울특별시 동작구 장승배기로4길 9 포스코 더샵 아파트 109동 802호||||
62|06940||서울특별시 동작구 등용로 127 현대아파트 101-2105||||
63|08355||서울특별시 구로구 개봉로1길 170 (개봉제3동, 경비실, 관리및노인정) 대상아파트 102-602||||
64|01135||서울특별시 강북구 덕릉로40나길 48 (번제2동, 삼성아트빌) 삼성아트빌 101호||||
65|13936||경기 안양시 동안구 관양1동 1378-19 3층||||
66|55104||전라북도 전주시 완산구 안행4길 5-4 (삼천1동) 752-6번지||||
67|01604||서울특별시 노원구 상계동 1256 은빛2단지 아파트 201동 1402호||||
68|13557||경기도 성남시 분당구 정자일로 177 (정자1동, 인텔리지Ⅱ) a동 1901호||||
69|22239||인천광역시 남구 경원대로 742 (주안8동) 지하1층||||
70|18449||경기도 화성시 삼성1로5길 37 (동탄1동) 두산중공업||||
71|07728||서울특별시 강서구 강서로 130-8 (화곡본동, 성진빌라, 화곡동 105-497) 성진빌라 302호||||
72|10493||경기 고양시 덕양구 행신동 918-7 401호||||
73|03924||서울특별시 마포구 월드컵북로54길 17 (사보이시티 DMC) 821호||||
74|08780||서울특별시 관악구 남부순환로200나길 13-4 (서원동) 101호||||
76|49256||부산 서구 남부민2동 673-51번지||||
77|21122||인천광역시 계양구 아나지로 332 (작전1동, 작전동 392-12) 우림카이저팰리스 101동 307호||||
78|31518||충청남도 아산시 문화로 257-17 (온양3동, 권곡청솔아파트(상가), 권곡동 206-3, 206-4, 208-1, 478-10, 478-12) 권곡청솔아파트 103동 203호||||
79|41568||대구광역시 북구 대현로9길 20 (대현동 171-3) 대현빌 202호||||
80|10360||경기도 고양시 일산서구 강선로 116 (주엽1동, 강선마을2단지아파트) 202동 1201호||||
81|01721||서울특별시 노원구 중계로16나길 11 (중계본동, 동진경로당) 동진아파트 2동 305호||||
82|33123||충남 부여군 규암면 충절로2316번길 34 3층학예연구실||||
83|57930||전라남도 순천시 왕지3길 60 (왕조1동, 관리실경로당, 롯데캐슬아파트) 111동 1101호||||
84|04093||서울특별시 마포구 토정로14길 38 (신수동, 서강GS아파트, 신정동 30-3, 30-5, 30-7, 구수동 104) 서강GS아파트103동2301호||||
85|02020||서울특별시 중랑구 공릉로18길 59 (묵제1동, 브라운스톤태릉아파트) 104동 202호||||
86|13830||경기 과천시 부림동 18-2 B02||||
88|04618||서울특별시 중구 장충동2가 193-245 비에이치빌라 지하1층 B01호||||
89|38430||경상북도 경산시 하양읍 문화로 3 () 103동 201호||||
90|06708||서울특별시 서초구 효령로 208 (서초3동, 메타빌드) 메타빌드 빌딩 3층||||
91|13595||경기도 성남시 분당구 황새울로258번길 37 (수내1동, 흥국생명빌딩) 9층||||
92|34140||대전광역시 유성구 어은로 57 (온천2동) 101동 1304호||||
93|03747||서울특별시 서대문구 북아현로22마길 16 (충현동, 청나빌리지) 1-499번지 청나빌리지 402호||||
94|34091||대전광역시 유성구 노은동로87번길 89 (노은1동, 노은1동주민센터) 무인택배함||||
95|48077||부산광역시 해운대구 세실로 138 (좌제1동, 롯데3차아파트) 301동 1501호||||
96|16871||경기도 용인시 수지구 대지로15번길 60 (죽전1동, 대지마을현대홈타운3차2단지아파트, 이화k화Kids어린이집) 508동 1201호||||
97|17003||경기도 용인시 기흥구 동백8로 126 (백현마을모아미래도아파트) 2504동 803호||||
98|16336||경기도 수원시 장안구 이목로 24 (정자1동, 수원에스케이스카이뷰아파트) 118동 3005호||||
99|42643||대구광역시 달서구 감삼남1길 70 () 정원하이츠 401호||||
100|14241||경기도 광명시 디지털로24 철산푸르지오하늘채아파트 102동 1604호||||
101|44922||울산광역시 울주군 범서읍 구영리 406-3 201호||||
102|01669||서울특별시 노원구 동일로228길 23 (상계9동, 상계동 626-1, 627) 주공아파트 1415동 203호||||
103|41425||대구광역시 북구 구암로 65길 9, 305동 303호(구암동, 화성그랜드파크)||||
104|06779||서울특별시 서초구 동산로 23 (양재2동, 베델회관) 601호||||
105|35265||대전광역시 서구 대덕대로 150 큰마을아파트 127동 1103호||||
106|02767||서울특별시 성북구 장위로35길 14 (장위제2동) 238-26 1층||||
107|28146||충청북도 청주시 청원구 내수읍 학평풍정길 13 (학평리 47-2, 68, 72, 76) (주)에버코스||||
108|11684||경기도 의정부시 평화로 735 (의정부1동, 일심상사) 301호||||
109|12965||경기도 하남시 신평로 36-2 (덕풍1동, 벽산블루밍아파트) 106동 1801호||||
110|11159||경기도 포천시 호국로 1007 (대진대학교, 자작동 575, 587, 588-3, 산32-3, 산72-1, 산72-5, 선단동 251-8, 252, 298-1) B9-408호 컴퓨터공학과사무실||||
111|11493||경기도 양주시 고읍북로 120 (양주2동, 은빛마을휴먼시아8단지아파트) 휴먼시아 아파트 805-102||||
113|04104||서울특별시 마포구 신촌로 160 (대흥동 12-42, 12-43, 12-44, 12-45, 12-46, 12-48, 12-50, 12-51, 12-52, 12-53, 12-54) 이대역 서희스타힐스 1702호||||
114|42802||대구광역시 달서구 송현로7길 10 (상인1동, 1221동(상가), 상인화성파크드림1단지아파트) 1101동 702호||||
115|48059||부산광역시 해운대구 센텀북대로 60 센텀IS타워 701호 라온엑스 솔루션즈||||
116|34048||대전광역시 유성구 엑스포로 501 (청구나래아파트) 109동 1506호||||
117|62019||광주광역시 서구 화개1로 33 (금호2동, 호반리젠시빌2차아파트) 203동 802호||||
118|24267||강원도 춘천시 모수물길 60 (소양로2가, 소양로현대아파트) 104동 403호||||
119|62044||광주광역시 서구 월드컵4강로28번길 60 (화정2동, 화정동 1034, 1052, 1053) 신동아 아파트 102동 612호||||
120|07253||서울특별시 영등포구 국회대로54길 65 (영등포동) 이지리움S 301호||||
121|11915||경기도 구리시 동구릉로148번길 15 (동구동, 경비실, 관리사무실, 자건거보관대, 자전거보관대) 원일가대라곡 아파트 201-701||||
122|15255||경기도 안산시 단원구 선부로 290 (한미종합정비코너) (와동 98-9번지) 4층||||
123|05314||서울특별시 강동구 상암로 168 (천호제1동, 강동구민회관) 여성안심택배보관함(01064865039)||||
124|02504||서울 동대문구 전농동 서울시립대학교 생활관||||
125|06117||서울특별시 강남구 논현로119길 51 () 보람빌라 201호||||
126|31053||충청남도 천안시 서북구 성거읍 망향로 343 육영아파트 103동 121호||||
127|08219||서울특별시 구로구 경인로47길 122 (고척제1동, 고척동 46-56) 소문난 식당||||
128|15325||경기도 안산시 상록구 웃말2안길 6 () 303호||||
129|08392||서울특별시 구로구 시흥대로161가길 10 (구로제3동) 청우빌 208호||||
130|16918||경기도 용인시 기흥구 구성로 99 (구성동, 하마비마을동부센트레빌아파트) 107동 1102호||||
131|05686||서울특별시 송파구 백제고분로40길 13-19 2층||||
132|16478||경기도 수원시 팔달구 세지로155번길 33 202호||||
133|37748||경상북도 포항시 북구 중흥로255번길 10 (죽도동 208-5) 라동 205호||||
134|17931||경기도 평택시 안중읍 현화중앙길 103, 102동 804호 (현대3차아파트)||||
135|41122||대구광역시 동구 율하동로15길 60-1 (안심1동) 하늘채 303호||||
136|10381||경기도 고양시 일산서구 중앙로 1563 (영림브레아) 영림브레아 804호||||
138|34049||대전광역시 유성구 엑스포로 448 엑스포아파트 106동 103호||||
139|03075||서울특별시 종로구 창경궁로 265 (혜화동, 경로당관리사무실, 명륜2가 8-31) 명륜아남아파트 102동 206호||||
140|02867||서울특별시 성북구 삼선교로10라길 4-12 (삼선동) 1층||||
141|13581||경기도 성남시 분당구 수내로 181 (샛별마을우방아파트) 307동 1505호||||
142|05043||서울시 광진구 자양로 116 구의역KCC웰츠타워 407호||||
143|31567||충남 아산시 시민로 277-3 (용화동, 주공2차아파트) 107동 402호 우편번호 31567 한예인 앞||||
145|61227||광주광역시 북구 서암대로 274번길 9-17||||
147|57987||전라남도 순천시 기적의도서관2길 51 (덕연동, 중흥5차아파트) 503동 402호||||
148|14259||경기도 광명시 안재로 14번길 4-1 103호||||
149|17079||경기도 용인시 기흥구 사은로126번길 10 119동 304호||||
150|61941||광주광역시 서구 상일로 53, 303동 501호||||
151|50934||경상남도 김해시 삼정동 589-10번지 수복빌라 302호||||
153|04765||서울시 성동구 왕십리로 241 서울숲더샵 103동 1104호||||
154|12502||경기도 양평군 서종면 문호길 74 집||||
155|08805||서울시 관악구 남부순환로 262길 25 다솜빌 202호||||
156|08704||서울특별시 관악구 조원로 165 (신사동, 엘리시안빌) 470-18 엘리시안 빌라 502호||||
157|14057||경기도 안양시 동안구 시민대로 361 에이스평촌타워, 13층 1307호||||
159|03631||서울특별시 서대문구 홍제2동 홍제원현대아파트 106동 602호||||
160|01727||서울특별시 노원구 중계로8길29(한화꿈에그린아파트) 106동 702호||||
161|21948||인천광역시 연수구 옥련로99번길, 44, 아주아파트 101동 1502호||||
162|16688||경기도 수원시 영통구 태장로 45 (태장동, 망포동 684-1) 202동 305호||||
163|04199||서울시 마포구 환일길 27-1 102호 04199||||
164|06591||서울 서초구 반포대로 222 가톨릭대학교성의교정 의생명산업연구원 3층 3001호||||
165|42171||대구광역시 수성구 동대구로 59 (대우트럼프월드수성아파트) B동 4002호||||
166|42988||대구광역시 달성군 현풍면 상리 50-1 비슬빌리지 H202동 1011호||||


- 아래 2 -

순번|우편번호|원본우편번호|주소1|주소2|수취인|전화1|전화2|오류유형
6|||서울 동대문구 청량리동 고등과학원 8211호|||||유형5
7|||경기도 안산시 단원구 원곡동 경남아너스빌 104동 305호|||||유형5
10|||경기 시흥시 신천동 현진2차아파트 202동 401호|||||유형5
31|||부산 사상구 주례3동 현대무지개아파트 106동 208호|||||유형5
75|||경기도 부천시 소사구 소사동로19번길 19 () 아람빌라A동 202호|||||유형2
87|||서울 광진구 중곡4동 영동빌라 201호|||||유형5
112|||인천 연수구 송도동 해송로 30번길 19, 305동 1803호|||||유형2
137|||서울 구로구 신도림동 e편한세상대림1차아파트 504동1901호|||||유형5
144|||경기도 부천시 원미구 원미로57번길 29 (심곡2동, 일해늘푸른아파트) 903호|||||유형2
146|||100-192 서울시 중구 을지로100 파인애비뉴 B동 13F|||||유형1
152|||28769 충북 청주시 상당구 원봉로 41, 201동 1205호 (용암1동, 용암현대2차아파트)|||||유형1
158|||광주광역시 남구 주월동 호반베르디움 2차 202동 1602호|||||유형5


2017년 11월 16일 목요일

ㅋㅋㅋㅋ

좆같은 IT 스타트업 쓰고 나서 어머니께 연락이 왔다.

또 술에 취하신...

사실 좋다.

설계대로 되니까.

생각대로 배신해 주고,

생각대로 다른 프로젝트 하라고 하고,

생각대로 술자리 마련해서 이야기 끌어내고,

생각대로 돈을 주고,

생각대로 앞에서 말을 하고,

생각대로 뒷다마 까주고,

생각대로 연락이 안된다.

그리고 주변 상황도 생각대로 돌아간다.

상대방도 안 좋은 상황이면, 죽음의 두려움을 가지지 못한다.

한 사람은 계속 잘못되고

한 사람은 적당히 잘되어야 한다.

그리고 잘못되는 사람에게 변명거리나 이유를 줘야 한다.

끝까지 잘못되었을 때 손에 칼이 없으면 안된다.

누군가 그랬다.

못사는 사람들의 봉기는 한번도 성공한 적이 없다고.

어찌보면 내가 사람을 테스트 해 보는 것일수도 있겠다.

이미 죽어버린 심장과 희망을 가지고 말이다.

좆같은 IT 스타트업

누구든 자기 방어를 위해 서론을 길게 쓴다.
난 짧게 쓴다.

이 글이 앞으로 어떤 결과를 가져올지 너무도 잘 알고 있으니까 닥쳤으면 좋겠다. 우선,

-

요지는 이렇다. 대기업에 못 들어간 애들이. 아예 원서를 안 넣었다면 (정말 대단한 친구다.)
대기업을 이야기 하고.

열심히 살고 있는 사람들에게 도전을 이야기 하면서 정말 중요한 것은 숨기면서, 자기 배를 불리고.

그렇게 불린 배로 나눠주는 것보다 영움담을 만드는.

지 배 고프니까 원천 기술은 가져다 써도 당연한거고
대기업이 배끼면 내가 배 골골하면서 만들었는데 죽는 소리 하는.

IT 스타트업은 그런 존재들이다.

다른 스타트업처럼 돈이 들지도 않는다. 투잡하면서 만들면 된다.
잃을 것은 시간 밖에 없다.

경험해 봐서 잘 안다.

경험했다고 하면 스타트업 운영해 봤냐고? 그래 ㅅㅂ 사업은 어릴적에도 해봤다.
망해도 손해보면서 망했다.

그러면 손해보는건 아름다운 것인가? 희생이라는 단어를 모르고,
남들만 희생시키면서 마치 자기 희생인양 미화하는 그런 미디어들이
대학생을 기만하는 것은
정말 도를 아십니까, 사이비 종교 보다 더한 사기다.
그래서 스타트업은 연봉 정보가 없다. 전에 받던 것만 맞춰주고
돈 많이 벌면 적당히 맞춰주면 군말 없고,
사람을 마치 개 부리듯 한다.

-

난 내가 욕되게 보이고 손해를 봐도,
진실을 이야기 해 줬다.

열심히 살었던 내가 순간 내가 잘 나가는 줄 알고 연락한 대기업 지인들에게.

심각하게 이야기 해 줬따. 그들은 내 말을 듣고 잘 산다.

오전에 가족들과 가까운 교외로 여행갔다가 출근하고,
집에가면 올리겠지만 매년 천만원씩 연봉올려서
와이프 일하게 만들거나 와이프 다리에 하지 정맥 오게 하지는 않고,
부모님께도 용돈 드리면서도 치열하게 삶에 고민하고.
1년 휴직계 내고 나름 생각도 하고 그런다.

모두 스타트업에 좆같은 것은 아니겠지만,
대기업에서 나올 때 내 정도 경력이면 5천 1억은 받고 나오는데,
회사 망했는데 급여 한번 챙겨줬다고 미디어에 내보내는 짓거리는 안한다.

대기업이 작은 기업 아이디어 흡수하고 따라하고 기업 판다고?
맞는 말이다. 그런데 투자받거나 파는 스타트업이 더 웃기다.

스타트업도 용어를 나누어야 할 것이다.

-

라고 말하고 싶지만.

그들의 도전을 응원한다. 이게 스타트업에서 배운 전부다. 그리고 나중에 스타트업 찬양하게 되면 그것도 스타트업에서 배운 것이다.

우린 언제든 바뀔 수 있다.

앞에서 잘한다고 하고 떠나면 개욕하는 정치판. 최소한 대기업에서는 그러지 않는다. 욕하는 것은 좋은 일이다. 적어도 처단하지는 않았으니. 혹시 아나? 화가 좀 풀릴지. 만 2년 즈음 되니 그럴 일이 없긴 하지만.

주변에 IT 스타트업 하시는 분이 많다. 동료 강사들만 해도 그렇다.
이렇게 말하는 이유는 잘 알 것이다.

대기업이던 중소기업이던 소기업이던 스타트업이던.

그게 중요한게 아니라는 것이다.

살인자가 대기업 출신이면, 사람들은 모두 살인자 인가?

공정위가 이제 실무자도 응징한다고 했다. 내가 그렇게 만들었다.

그렇다. 이름 뒤에 숨지도 말고, 그룹 이름 하나 만들었다고 대단하게 생각하지도

않아야 하는 새로운 세상이 온다.

송곳.

학벌 사회가 된 이유

1
우리 모두는 잘 산다. 얼어 죽거나 굵어 죽는 사람이 주변에 거의 없다.

과학과 농업, 건축의 발전으로
사실 10명 중 1명만 제대로 일해도
먹고, 입고, 자는데 문제 없다.

그런데 못먹는 기아 문제, 집 없는 경제문제, 제대로 잘 수도 없는 전쟁 문제가 끊임없다.

왜 그럴까?

동네에서 굳은 일 하면 대단 하다고 칭찬을 해 줘야 한다.

누군가는 똥을 치워야 하는데 우리 모두 하기 싫어한다. 그래서 구분한다. 
1번째 구분이 바로 학교다. 

청소부는 청소만 잘하면 될텐데 서울대 출신이면 청소도 왠지 더 잘할 것 같다.

2
나는 서울대가 좋다. 서울대 출신은 아니지만 서울대 출신 형이나 동생들 보면
너무 열심히 산다. 치열하고 열심히 살면서 인간미도 있다. 가장 좋은 점은
그러면서도 마음이 편한 사람이 많다.

몇몇은 아닌대도 멋진 사람 봤었다. 그런 사람들이 주변에 있는데 다들 치열하게 살면서도
그렇게 돈을 많이 번 것도 아니지만 소소하게 행복을 찾고, 또 학창시절 하고 싶은 것 하느라
서울대를 못 간 사람들이었다.

3
그러나 깨닫는다. 우리나라에는 그 반대의 사람이 20%다. 그런데 그런 사람들이 무슨
자기가 합리적인양 목소리를 내느라 한 90% 정도 되어 보인다.
정말 아무런 걱정없이 공부에만 전념해서
미친듯이 노력했는데, 안되었던 사람.
어차피 안될거 포기하고 다른 길을 모색했던 사람들이 모두 학벌 컴플렉스가 있었다.

더 웃긴건 돈벌고 나서 그런 컴플렉스가 사라지던 사람들이었다.

정말 순수하게 학문의 재미를 추구하는 사람들이 있다는 것도 믿지 않는다.

그래서 가난한 사람들이 싫다. 학벌이 안되는 사람들이 싫다.

만나는 돈얘기 밖에 안한다.
만나면 좋은 이야기가 없다.

4
그래서 대부분의 사람들은 좋은 이야기만 한다.
이런 프로젝트를 해도, 
좋게 좋게 걍 넘어가면 되잖아.라고 한다.

전에 밝혔지만 그랬었다. 현묵이랑 통화하고 잘 풀었다.
그런테 텀블벅 글은 지워지지 않고 현묵이가 이 시대에 강약약강(강한자에게 약하고...)의 대표
표상으로 보이니 프로젝트를 시작한 것이다.

어떤 사명감이란게 있다.

5
아무것도 모르는 후진들에게 가르쳐 줄 것은 빨리 가르쳐 주고 싶다.
물론, 그들이 듣는 것은 자유다.

목표

어떤 프로젝트가 "시행"되면,
어떤 결과가 나올 것이다.

사건이란 사회적으로 문제가 되거나 관심을 끌만한 일일 것이다.
다음이나 네이버가 개인 정보를 정보에 파는 행위(협조라도고 한다)가 별 대단한 사건은 아니듯.
우리 주변에 늘 광고가 있는 것도 별 대단한 사건도 아니다.

문제는 이런게 사건인데 사건이라 인식 못하는 사회 기조에서 비롯된다.

한번 타협하기는 정말 쉽다.
미드 24에 나오는 대사다.

그러나 그렇게 말한 주인공은 수십/수백명은 죽이고 거짓말을 일삼는다.

그것을 보는 관객도 마지막까지 상황을 모를 때가 있는데...

내가 쓴 1권의 내용처럼(하성이가 말해준 장자의 수레바퀴 깍는 노인)
뭔가를 알리기는 너무 힘들다.

2권 내용을 리딩하고,
이건 나무위키에나 나오는 내용이라고 폄하한 사람이 있었다.

송파구 세 모녀를 구글에서 치면
나무위키에 나온다.

단언컨데,
폄하한 사람 구글은 폄하 못한다.

구글이 잘못한게 있으면 지적질 할 수 있는 문화,
그런 문화가 있었는데 사라져 간다.

나무위키에 있으면 지식 아닌가?
위키피디아도 기여해보고,
나무위키도 기여해봤는데
사용법만 알고 토론을 통해 의견 교환이 가능한 사람이라면,
누구나 고칠 수 있었다.

그러나 우리나라가 출신이나 백그라운드 따지는 이유는 너무나 잘 알고 있다.

다음 화에서 밝힌다.

노이해

1권을 읽지 않아서 이해를 해 줄 수도 있을 것이다.

그러나 1권을 읽은 사람은 이해를 못할리가 없다고 생각한다.

내부 고발의 경우 순간적 감정으로 시행할 수 있는 것이 아니다.

물론, 내부 고발자란 타이틀로 나갈지는 상상도 못했지만.

게다가 우발적 내부 고발을 한다고 해서 매스컴을 탈 수도 있는 것도 아니다.

상당한 고민의 시간이 필요하고, 용기도 필요하고 

살아 왔던 세월의 경험도 필요하다.

내 목소리가 떨린다거나 내가 땀흘리며 어쩔 줄 몰라한다거나 한다면 모르겠지만,

난 다른 사람을 위해 내 몸을 상해하는 것도 하는 사람이다.(언젠가 썰을 풀겠다,

소화가 되지 않을 때 자기 손가락을 딸 수 있는 사람은 몇 없다는 것도 안다.)

1권을 읽은 사람이 나에게 손가락질 할 수는 없는 것이다.

그러나 내 대응책에 대한 언급은 전혀 다른 문제라는 것이 포인트다.

거기에 대해서는 욕을 할 수 있다.

그럼 왜 이런 글을 쓰는 걸까? 왜 카페로 쓰게 했을까?

10개가 넘는 카페와 커뮤니티를 만들었다. 순식간에 주목을 받은 것도 있었고 오랜기간 주목받지 못한 것도 있었다.

그래서 대중을 조금은 안다고 할 수 있다.

이제 현묵군도 알았으면 좋겠다.

이 게시판은 주목받지 못한다는 것을.

그가 쓴 글 역시 말이다.

그러나 언젠가 나의 발목을 잡게 될 것이라고 분명 생각하고 글을 썼다고 단언한다.

왜냐면 대기업에서 잠깐 본사 스탭을 했을 때 알게 되었다.

대기업은 대응하지 않으며 대응하지 않을 때 어떤 일들을 하는지.

그와 똑같이 하고 있다. 그래서 알 수 있다.

난 꼬인 세상을 바라볼 수 있는 눈을 주려고 하고 있다.

물론, 내 일도 한다.

그러지 않으면 증명할 수 없으니 자 자신을 계속 한계 상태에 있게 만들고 있다.

그렇게 살 수 밖에 없는 인생만이 다수를 이해할 수 있기 때문이다.

대한민국 최고의 구인 구직 사이트

경력직 기준으로 보면

사람인 이다.


처음에는 취업뽀개기나 리크루트를 이용했었는데 사람인의 경우

헤드헌터에서 연락오는 횟수 자체가 다르기 때문에 더욱 다양한 구인 정보를

접할 수 있다. 기업 인사 담당자로도 무료 서비스를 이용해 보았는데

확실히 좋았다.



앞으로 커리어 관리는 사람인으로 하려고 한다.


끝으로 마케팅은 리크루트가 더 잘하는 것 같다.

최근 윤종신, 곽진언, 김필이 부른 노래가 나오는 CF 너무나 좋다.


자주 애용하는 사이트인 꿀위키는 잘못된 정보들이 있더라.

맞는 부분도 많다는 이야기.

다 참고할만한 정보들이 된다만 직접 발로 뛰어봤을 때 얻어지는

정보들이랑은 많이 다른 것 같다.

용어 정리

abend abnormal ending
The termination of processing due to a program or system fault.
abort
To terminate a process before completion. Generally used in reference to mainframe program, especially one that has gone awry. In the world of PC's, we are more inclined to exit a program or command with the Escape key.
ABS ABSolute value of n
A programming labguage term used by many spreadsheet and database applications to return the absolute value of a number.
absolute value
The value of a number without regard to its sign; most often used in a spreadsheet or database formula when the result of a calculation that may be positive or negative needs to be converted to a positive number for additional clculation.
abstract
To briefly summarize or compile; the summary or compilation so created
ACC
See accumulator, accuracy control characters
accelerator chip
The main driver of a video card, a chip that speeds the processing of graphics data
access
To call up or activate for use. A computer system may contain a variety of programs and data files, but none are active or ready for use until called up by the operator or a program routine. In addition, the computer may require drivers or system files to access a peripheral, such as a printer or scanner.
access code
The user name or security code required to use a computer, a particular progra, or certain files. Computer files protected by an access code require that the user type in his or her code before the protected fils can be made available.
access time
The interval between a request for data from storage by the computer and the moment when it is available to the user.
accounting check
A routine to acssure that data has been entered and processed accurately.
accumulator, accumlator register
The computer register which sotres the intermediate results of arithmetical and logical operations.
accuracy control chracter
A special character used to siganl that transmitted data is faulty or unsuited to a particular device
acoustic coupler
A device for connecting the computer to a telephone hand set to allow transmission of computer data over the telephone lines when a more direct connection is not available
acronym
A word formed from the first letter or combination of letters of a compound name. For example, COBOL, a programming language, is derived from COmmon Business Oriented Language. See also, BASIC
active document
A document that is currently available to manipulation by the user
activie file
A computer file available to the user or the computer for processing
active matrix
A type of LCD computer screen display that is constantly refreshed by means of trasistors embedded in the screen. Characterized by high contrst and a brilliant image, its weight and heavy power requirements make it less than ideal for portables. see also, passive
active window
In a system that aloows viewing of multiple documents or programs on the screen, the document or window that is currently selected and available to the user
ACU See automatic calling unit
adapter
Any hardware device or software routine that makes disparate hardware or software elements compatible.
adaptive system
A computer program that "learns" by maintaining a record of its activity and revising subsequent actions. An OCR or optical chracter recognition program, for example, may consistently fail to correctly recognize a certain character, once corrections are fed into the program, an adaptive system will adjust its matrix to properly read the character in the future.
ADC See analog to digital converter
add-on
A hardware or software supplement that serves to enhance performance of an existing program or device
add-on card
A removable computer circuit board used to control a peripheral device such as a parallel or serial port, a game port, a scanner, or accelerated video.
address
(1) A number used to identify a specific location in computer storage, also called an absolute address. When data is saved, the address of its location is recorded in the file allocation table so that it can be quickly found when next called up
(2) See relative address.
(3) To call up data from a program or application.
addressing
A program instruction for assigning a memory location to a command or data
addressing capacity
A reference to the memory available for running programs, accessing data, and performing other functions.
ADP See automatic data processing
advanced power management
A feature designed to save power in many newer computers that powers down the screen and, in some cases, the hard drive when input has been suspended for a set interval, such as ten minutes.
Advanced SCSI Programming Interface
A software standard that allows a SCSI controller to communicate with other software.

{00000008} L모 씨 파트 제외하고 다시 포스팅.

세가지를 말하려고 한다. 

1.
영화 뷰티풀 마인드를 보면 내시 이론이 나온다.
{"sentences":[{"trans":"디시너지(desynergy)를","orig":"디시너지(desynergy)를","backend":0}],"src":"ko","confidence":1,"ld_result":{"srclangs":["ko"],"srclangs_confidences":[1],"extended_srclangs":["ko"]}}

그 이론의 유명한 예로 죄수의 딜레마가 있다.

죄를 지은 두 사람이 용의자로 구속되었을 때 검사는 두 용의자가 공범자일거라 추측한다.
이미 둘은 각각 1년형이 예상된다.
형사처벌에서는 미리 계획된 범죄이거나 공범일 경우 죄질이 무거워진다.

두명의 용의자를 서로 소통을 할 수 없다.

이 상황에서 조건을 건다.

둘이 동시에 자백하면 둘 다 3년형.
한 사람이 공범임을 자백하고 다른 사람이 자백하지 않으면,
자백한 사람은 무죄로 풀려난다. 다른 사람은 10년형을 받는다.

최선의 결정은 두 사람 모두 자백하지 않는 것이다.(1년형)
그러나 상대방의 패를 모르기 때문에 둘 다 자백하게 된다.
이것이 내시 균형이며, 언제나 서로에게 최선의 결과는 아님을 알 수 있다.

2.
시너지란 용어는 벅민스터 퓰러가 만들기 전까지는 그 누구도 쓰지 않았다.
용어가 없기 때문에 그에 대한 생각도 정의할 수 없었다.
정의는 되지 않지만 뭔가 해결 되지 않은 찜찜함이 남아 논리를 방해하고,
이것은 모두 스트레스로 다가오게 된다. 
주변에서 IT 서적을 내어 보라고 해서 유명한 곳 2군데서 기획 출판을 제의 받았었다.
주변에 IT 서적 저자가 돈이 되지 않는다고 해서 안하려고 했고 대표들께도 그렇게 전달했었다.
그러나 내가 초고만 쓰고 다른 일반인들이 다듬는다면 어떨까라는 시도를 해보기로 했다.

문제는 정치에 있었다. 8살때부터 컴퓨터를 하다보니 기술만 봐왔는데,
인생을 돌아보니 정치에 이용 당한게 대부분 이었다는 것이다.
그래도 기술만 보면 별 문제는 아니겠지만.

나야 먹고 사는데 지장 없겠지만, 후진들이 정치를 볼 줄 모르면 결국 이용당하다가
이 필드에서 살아남지도 못할거라는 걱정에
큰 폭탄 수준의 정치 이야기를 담고자 했고, 일단 1권을 내면 추가적으로 비화를 계속해서
다룰 플랫폼이 되겠거니 했다. 

정치는 사실 이해관계를 조정, 통제해서 목적을 달성케하는 좋은 용어다.
그러나 왜 정치라는 용어를 많이 쓰게 되었을까?
시너지와 같이 대체 용어가 없기 때문이다.

그래서 시너지의 반대말인 디시너지(desynergy)를 정의한다.

정치란 한 사람에게 정의되는 것은 아니다. 자아를 나누어서 생각하는 모형에서는 가능하다(가끔 하기도 한다)
일반적으로 두 사람 이상이 모였을 때 발생하는 것이고.
사람이 모여 1+1 = 3이 되는 시너지가 아닌 1+1 = -1~무한 이 되는 상태를 디시너지로 용어를 정의한다.

3.
나비효과는 워낙 유명하고 영화로도 나와 있어서 굳이 설명 안해도 되겠다.
하준호+somebody = -1
디 시너지. 작은 정의며 시작이지만 나비의 날개짓이 태풍을 만들수도 있다는 것을 보여 주고자 한다.

오스트리아의 심리학자 알프레드 아들러의 말을 빌리자면,
모든 고민은 인간관계에서 나온다고 한다.

결론적으로 이 프로젝트를 시작하는 이유는 이렇다.
실무 프로그래밍 책과 함께 IT 필드에 뛰어든 사람들에게
개발자 비화가 전해준 정치력을 바탕으로 스트레스를 덜 받게 하기 위함이다.
이 프로젝트는 개발자 비화의 특별판으로 봐도 되겠다.

기존 생각하던 수많은 추측들이 현실적으로 어떻게 적용되는지에 대한 실험하고,
그것을 공유함으로서 이런 생각을 가지게 하는 것이다.

"별거 아니네? 사람 위에 사람 없고 사람 아래 사람 없네?"

이 글의 제목은 미필적 고의.

글을 보면 그 글을 내포하고 있는 진심이란게 있고 그것은 몇 단계까지 꼬아질 수도 있다.
가령 내가 이런 개인적인 이야기를 한다고 하자.

요즘 자꾸 205란 숫자가 좋아진다. 실제로 그렇다.

그런데 아래쪽에 뭔가 주소를 말하고, 숫자를 가렸는데 다른 문자로 숫자를 유추할 수 있고
내가 좋아하는 숫자가 연관이 있을수도 있진 않을까?

그렇다고 해서 명확하게 이것은 뭐라고 말하지 않는 것.

내가 마음에 있는 사람들과는 싸워도 육탄전을 하지 더럽게 뒤에서 욕하지는 않는 이유다.
미필적 고의를 누구보다 잘 할 수 있겠지만 육탄전이 아름답기 때문이다.

그러나 이 프로젝트 전반에는 미필적 고의가 흐른다.
그것이 대기업과, 중소기업 스타트업에서 돈에 눈 먼 인간들 + 유명인들이
애용하는 방식이고 당신이 성공하기 위한 길이기 때문이다.

오늘은 이것으로 마친다. 책의 글과는 달리 단 한번의 퇴고 과정이 없기 때문에 매끄럽지 않을 수도 있다.


온라인 상이니 마음이 맞는 사람에게 의견 전달이 잘 된다면 충분하다고 생각한다.

트위터 전체 삭제 완료

정확히 말하면,
트위터의 트윗 전체 삭제 지만, 구글링 잘 되시라고 제목을 저렇게 지었다.

https://www.tweetdelete.net/

정말 좋다. 한방에 정리해 준다.

정리하고 나면 자신의 트윗 계정 링크를 하나 남기는데 사용자 삭제된 것을 보니
트위터가 싫어하나보다.

페이스북은 저런 기능이 없다. 아마 열심히 막고 있겠지.

큰 서비스도 사용자가 빠져나갈 충분한 이유가 되면 빠져나간다.


UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...