안녕하세요. "생각의 웹"입니다.




python 2.7.x 버전으로 twitter open API로 가져온 data를 자연어 처리 (Natural Language Processing - 이하 NLP)로 가공해 보여주는 프로젝트 수행 중 

제 windows 8.1 64bit 버전에서 관련 라이브러리 설치 중 발생한 문제로 

골머리 앓았던 사례와 그 해결 방법을 공유하고자 이렇게 글을 적습니다.


먼저 환결 설정에 필요한 도구들과 라이브러리는 다음과 같습니다.


python-2.7.msi (32 bit)

numpy-1.9.2-win32-superpack-python2.7.exe

nltk-3.0.1.win32.exe

PyYAML-3.11.win32-py2.7.exe

ez_setup.py

pycharm-community-4.0.5.exe


(주의!) NLTK 의 호환성 문제로 인해 64bit OS라도 32bit 버전을 설치해야만 합니다.


설치 순서는 다음과 같습니다.

1) python-2.7.msi 설치

2) ez_setup.py 파일을 python 설치 경로(e.g. C:\Python27)에 복사 후 terminal (cmd.exe)에서 'python ez_setup.py' 수행

3) Scripts 폴더로 이동해 'easy_install pip' 수행

4) 관리자 권한으로 numpy-1.9.2-win32-superpack-python2.7.exe 설치

5) 관리자 권한으로 nltk-3.0.1.win32.exe 설치

6) 관리자 권한으로 PyYAML-3.11.win32-py2.7.exe 설치


설치가 모두 정상 완료된 후 pip를 통해 python 모듈을 설치할 때 발생하며 다음과 같은 인코딩 에러가 출력됩니다.


UnicodeEncodeError: 'charmap' codec can't encode characters ...   


안타깝게도 이 메세지를 기반으로 다양한 검색을 통해 해결방법을 모색했지만 결국 해결책을 찾을 수 없었습니다.


그러던 중 지인 중 하나가 python IDE로 pycharm를 추천하길래 혹시나 하는 마음에 pycharm IDE을 설치하게 되었고 

이 도구 안에서도 모듈 설치 기능을 제공함을 알게 되었습니다.


7) pycharm-community-4.0.5.exe 설치


pycharm 설치가 완료되고 수행하면 설치된 python 버전과 python 프로젝트를 만들 수 있는 시작화면이 나옵니다.

임의의 프로젝트를 생성하여 작업환경으로 진입합니다.


pycharm은 Intellij IDE 기반으로 만들어진 IDE라 eclipse IDE와는 메뉴 구성이 달라 어색할 수도 있습니다.

모듈을 추가하기 위해서는 File > Settings 메뉴로 진입합니다.



좌측 메뉴 항목에서 Project: ... / Project Interpreter 를 선택하면 설치된 패키지들이 나열됩니다.

우측 + - 버튼을 통해 패키지를 추가, 삭제 할 수 있는데 이렇게 설치하게 되면 terminal에서 발생하는 에러 없이 패키지 설치가 가능합니다.




사족으로 pip 설치 시 발생하는 원인은 모듈이 설치되는 경로에 한글 경로가 포함되기 때문인 것으로 보입니다.

혹시나 이런 문제로 인해 저와 같은 삽질하시는 분들께 도움이 되길 바라는 마음으로 공유합니다.


감사합니다.



안녕하세요. "생각의 웹"입니다.


2월 9일(월) 15:00~18:00 강남역 근처 강남토즈 타워점에서 개최한 제 34차 W3C 대한민국 관심 그룹 회의 참석 후기를 공유하고자 이렇게 포스팅합니다.

http://onoffmix.com/event/41031 


이번 회의에서는 KIG를 이끌고 있는 이원석 박사님의 주관으로 W3C 표준화가 한창인 service worker, ETRI의 hybrid web platform인 HyWAI 소개 및 이를 이용한 web bluetooth app 개발 사례에 대해 다뤘습니다. 계획 상으로는 W3C CEO인 Jeff Jaffe가 참석할 예정이었으나 급작스런 부친 상으로 모든 일정을 취소하고 귀국한 관계로 대면할 기회를 갖지 못해 아쉬웠습니다. 각 세션에 앞서 이원석 박사님은 올 해 KIG 정기 회의를 통해 HTML5 최신 기술 동향 및 hybrid app 개발 사례에 포커스할 예정이며 공개로 진행되는 만큼 많은 참석과 의견 교류를 바란다고 말씀하셨습니다.



첫 번째 세션으로 service worker spec의 editor이자 삼성전자 책임 연구원인 송정기 님이 발표한 사례를 들어 알기 쉽게 정리한 service worker 입니다. 
발표자에 따르면 service worker API를 통해 개발 가능한 기능은 크게 오프라인 우선 지원(offline first)백그라운드 수행(background processing)을 통한 푸시 알림(push notification) 두 가지 입니다.
오프라인 우선 지원의 경우, service worker의 API와 개발자의 필요에 따라 캐쉬(cache)를 생성할 수 있는 전역 cache API 및 WHATWG에서 표준화 중인 fetch event를 처리하는 API를 통해 HTTP 요청(request)의 프록시(proxy) 역할을 수행하는 service worker를 구현할 수 있습니다. 이는 URL을 입력하거나 링크를 클릭하는 요청(client request)이나 AJAX 요청 혹은 내부 리소스 요청(resource request) 등을 대신하는 proxy를 service worker로 등록함으로써 offline 환경에서 캐쉬 데이터로 브라우징이 가능하도록 한 것으로 이에 대한 자세한 API 사용 사례(usage)는 spec. editor의 한 명이자 구글의 엔지니어인 jake의 블로그를 읽어 보기를 바랍니다. HTML5Rocks에 도창욱 님이 번역한 글도 참고하면 좋습니다.현재 구현이 상당 부분 진행되어 Chrome 40 버전 이상 혹은 Firefox의 nightly version에서 약간의 환경 설정을 통해 테스트 가능합니다. 마지막으로 service worker에 대한 spec 진행 사항에 대한 알고 싶은 분들은 트위터에서 @jungkee 를 follow 하고 spec 자체를 github를 통해 작성하고 있으니 자유롭게 의견을 개진할 수 있습니다.
시간 관계 상 백그라운드 수행을 통한 푸시 알림 기능은 다루지 못한 관계로 추후 KIG에서 이 부분에 대해 다룰 예정이라고 합니다.

두 번째 세션은 Hybrid Web Application Interface를 줄인 HyWAI (하이웨이)에 대해 ETRI 전종홍 책임 연구원 님이 발표했습니다. 이 프로젝트는 PhoneGap 이 발표된 시점인 2009년 1.0을 시작으로 현재 3.5 버전에 이르렀으며 3.5 버전의 경우 re-engineering를 통한 구조 개선 및 BT/BLE를 포괄하는 Web Bluetooth API가 주안점이라고 합니다. 
ETRI 정책 상 open source로 진행할 수 없어 간략한 sample app을 mobile2.tistory.com/8 에 공개했으니 다운로드 받아 써 볼 수 있습니다.


세 번째 세션은 HyWAI 프로젝트를 수행한 엠트리 소프트의 신현진 이사님의 HyWAI를 통한 Web Bluetooth app 개발 사례 소개입니다. hybrid app 개발 사례 소개에 앞서 hybrid app 개발 시 경험한 이슈 사항들을 공유해 주셨는데 그중 cross platform 지원 시 web view 호환성 및 파편화 문제(fragmentation issue)가 심도 있게 다뤄졌습니다. 특히   Crosswalk, wkwebview (iOS) 프로젝트는 지켜 볼만한 오픈소스 프로젝트라고 합니다. 데모 앱으로 구글이 주창한 BLE 기반의 physical web 사용 사례 (use case)를 hybrid app으로 구현해 bluetooth로 전송한 URL를 실행하는 과정을 코드와 함께 시연했습니다.


이상입니다.

이후 소개된 발표 자료가 공유되면 업데이트하도록 하겠습니다.



감사합니다.


 

생각의 웹입니다.


벌써 한 해의 마지막 날이 되었습니다. 

마지막이라는 생각이 드니 미뤄두었던 일들을 서둘러 마무리해야 한다는 생각이 들어 

최근 알게 된 웹 API 시작부터 끝까지 라는 주제의 읽어 볼만한 좋은 포스팅을 공유합니다.


 그 시작으로

Matt McLarty의 비즈니스 관점에서의 웹 API

라는 포스팅을 간략하게 한글로 요약합니다. 



  • 내부 데이터의 가용성 수준 평가 척도
    1. 데이터 적용 가능성
      • 이 데이터가 핵심 비즈니스 목표를 추구하는데 도움이 될 것인가?
      • 이 데이터가 비즈니스를 차별화 해주는가?
      • 이 데이터를 공개해서 상품화할 예정인가?
    2. 데이터 정확성
      • 이 데이터는 현재 어떻게 제공되고 있는가?
      • 이 데이터가 권위있는 출처에서 오는 것인가?
      • 올바른 목적으로 올바른 사용자가 사용하는 데이터인가?
    3. 데이터 접근성
      • 프로그래밍하기 위해 어떤 데이터가 적합한가?
      • 이 데이터를 사용하기 위한 다른 방법은 무엇인가?
      • 개발자들이 이 데이터를 이용하는 앱들을 만들기에 얼마나 쉬운가?
      • 많은 클라이언트의 요청을 수용할 만큼 데이터 처리 용량을 늘릴 수 있는가?
  • 평가 결과에 따라 두 종류의 API가 존재
    1. 유용한 API
      • 정확하고 응용할 수 있는 데이터를 제공
        • “medium is the message” thinking fails - APIs and Open Data만으로는 충분치 않다.
        • right data through right APIs - brings desired revenue and innovation benefits
        • 사례
          • Google Maps
          • SNS (Twitter, Facebook, ...) API - 선거 유세에도 영향을 미칠 정도로 영향력이 커짐
          • 아마존 사례
            1. 제품과 솔루션 공급을 API를 통해 할 수 있게 함
            2. 가치있는 데이터를 수집, 분석, 개선, 배포하는 API 기반 접근을 수행함
              • CEO 제프 베조스 曰 우리는 물건을 팔 때 돈을 버는 것이 아니라 고객들로 하여금 구매를 결정할 수 있게해서 돈을 법니다. (“We don’t make money when we sell things. We make money when we help customers make purchase decisions.” - Jeff Bezos )
              • Envision -> Focus -> Disrupt -> Iterate -> Persist -> Broaden -> Envision -> ...
            3. 전략적인 포지셔닝과 전술적인 공급 간의 균형을 유지하는 단련된 방식이 존재
          1. 지속적으로 응용 가능한 데이터를 수집
          2. API를 데이터에 대한 보편적 접근 법으로 이용
          3. 단기적으로 필요한 것 뿐 아니라 장기적으로 명확히 필요한 것을 제공
          4. 강점(position of strength)에서 부터 확장하라
    2. 가용한 데이터
      • 사용할 수 있는 데이터를 제공
      • 엔터프라이즈 앱 개발의 패러다임 변화
        • n-tiered web model to API centered topology
        • Java EE to JavaScript
      • Twilio 사례
        • 임의의 통신사의 SMS 이나 VOIP를 사용할 수 있는 API를 개발자에게 제공하여 수익 창출
      • Ingenie 사례
        • 16~25세의 고객이 보유한 스마트폰을 통해 수집한 운전 데이터로 자동차 보험 요금을 줄여주는 서비스 제공
      • API 설계의 중요성이 부각
        • 새로운 개발자들에게 API 사용성 증대를 통해 API 사용을 촉진할 필요성 대두
  • 요약
    1. 비즈니스 전략에 맞춰 API를 정비하라
    2. API를 통해 접근 가능하고 정확하고 응용가능한 데이터를 제공하라
    3. API가 유용하고 사용할 수 있도록 만들라
    4. 아마존처럼 데이터를 통해 가능한 분열(Data-Enabled Disruption)이 반복되는 문화를 수립하라
    5. Twilio 처럼 비즈니스를 다른 대형 경쟁사들과 차별화하는 API 개발자 경험을 만들라



모든 것이 연결되는 초연결 사회로 향해 가는 시점에서 

웹 API를 통한 메시업(mesh-up)를 비즈니스 시작부터 염두해 두지 않고는 더 이상 지속적으로 경쟁력 있는 서비스를 

도출할 수 없는 시대가 되고 있습니다.


올바른 이해를 기반한 전략 수립과 기민한 실천으로 미래 사회의 개척자가 되길 희망합니다.

감사합니다.   




+ Recent posts