2017년 6월 8일 목요일

[python] runserver 실행 시 UnicodeDecodeError 오류 발생 조치

회사PC에 파이썬 + django 를 설치할 일이 설치하려고 하는데 아래와 같은 문제가 발생했다.
해결하긴 했는데, 아 해결해보면 사소한 문제 때문에 몇 시간을 소비한것이 너무 어이없다.
다음에 똑같은 실수를 하지 않기위해서, 다른사람들이 이 글을 검색해서 조금이나마 문제해결 시간을 줄기를 바라며 이 글을 적는다.

현상


(myenv) E:\workspace\mysite> python manage.py runserver

실행 시 아래와 같은 메시지 발생

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb9 in position 0: 
invalid start byte


설치환경

  • python 3.6.1
  • django 1.10
  • virtualenv 에서 실행


조치사항

  1. python 3.6.1 삭제 후 python-3.5.3 으로 재설치 -> 정상동작 함. (본인 실행)
  2. window hostname이 한글이라서 그렇다는 인터넷 자료도 있었음.
cmd창 관리자 권한으로 실행해서
wmic ComputerSystem Where Name="%COMPUTERNAME%" Call Rename Name="원하시는 호스트명 영어"
입력 후 재부팅.

2017년 6월 5일 월요일

[review] 히든피겨스(Hidden Figures)

몇 일전 히든피겨스(Hidden Figures) 영화를 IP TV로 보았다.
1960년대 NASA 에서 일어난 흑인여자 3명에 대한 실화를 바탕으로 제작한 영화다. 이 영화를 보면서 삶의 태도에 대해 몇 가지 느낀바가 있어서 기록해 놓고자 이 글을 적는다.


# 영화정보

  • 줄거리 : 천부적인 수학 능력의 흑인 여성 캐서린 존슨 NASA 흑인 여성들의 리더이자 프로그래머 도로시 본 흑인 여성 최초의 NASA 엔지니어를 꿈 꾸는 메리 잭슨 미국과 러시아의 치열한 우주 개발 경쟁으로 보이지 않는 전쟁이 벌어지고 있던 시절, 천부적인 두뇌와 재능을 가진 그녀들이 NASA 최초의 우주궤도 비행 프로젝트에 선발된다. 하지만, 흑인이라는 이유로 800m 떨어진 유색인종 전용 화장실을 사용해야 하고, 여자라는 이유로 중요한 회의에 참석할 수 없으며, 공용 커피포트 조차 용납되지 않는 따가운 시선에 점점 지쳐 간다. 한편, 우주궤도 비행 프로젝트는 난항을 겪게 되고, 해결방법은 오직 하나, 비전을 제시할 수 있는 새로운 수학 공식을 찾아내는 것뿐인데…. 천재성에는 인종이 없고, 강인함에는 남녀가 없으며, 용기에는 한계가 없다! 세계를 놀라게 한 그녀들의 이야기가 시작된다.
  • 감독 : 데오도르 멜피
  • 등장인물 : 티라지 헨슨, 옥타비아 스펜서, 자넬모네
[구글 검색 발췌 : https://g.co/kgs/Xaxj5h]



# 리뷰


능력있는 그녀들

  영화 속 백인으로만 구성되어 있는 NASA의 우주궤도 비행 프로젝트 팀에 그녀들이 참여할 수 있었던 것은 그녀들이 흑인이지만 능력이 있었기 때문이었기 때문이라고 생각한다. 능력이 없었다면 임시직으로라도 그 팀에 참여 할 수 있었을까? 첫단추 조차도 끼우지 못했을 것이다.

변화를 주도하는 리더

  영화를 보는 중에 소름이 돋은 장면이 있다. 캐서린 존슨이 화장실 때문에 하루에 800m 를 오고 가야 한다는 이야기를 듣고 바로 알 해리슨(케빈 코스트너)이 유색인종 화장실 이라는 팻말을 부수는 장면이다.

유색인종 화장실 팻말을 부수는 알 해리슨

알 해리슨(케빈 코스트너) 이 우주궤도 팀의 보스인데 정확한 궤도 예측이라는 목표를 이루기 위해 과감하게 유색인종 차별이라는 문화를 깨고, 그 목표를 이룰 수 있는 케서린에게 기회를 준다. 그리고, 케서린은 그 기회에 보답한다.
  조직의 관습, 문화보다 목표를 이루기 위해 변화해야할 것들이 있다면 과감하게 변화를 주도하는 리더가 진짜가 아닐까 라는 생각이 든다.


포기하지 않고, 도전하는 그녀들

  그녀들은 인종차별이라는 엄청난 압박 속에서도 포기하지 않고 도전했다.
  도로시 본은 IBM 컴퓨터가 NASA 에 들어오자 더 이상 계산하는 전산원은 필요없을 것을 예상하고 도서관에서 포트란 책을 가지고 포트란을 배우고 팀원들에게 가르친다. 덕분에 IBM 컴퓨터를 잘 다룰 줄 아는 사람이 없던 NASA 는 도로시에게 전산 주임이라는 자리를 주고 전산팀을 꾸리게 한다.

IBM 이 있는 백인 전산실을 점령(?)하러 가는 전산원들

또, 메리 잭슨은 여성 엔지니어가 되기 위해 백인 남자들만 들을 수 있는 고등학교 과정을 듣기 위해 재판을 하고 승소해서 백인 남자들만 들을 수 있는 고등학교 과정을 듣는 최초의 여성이 된다.

백인 남자 수업을 듣는 메리잭슨

  인종차별이라는 문화와 백인의 무시, 압박 속에서도 꿈을 잃지 않고 도전하고 앞서나가는 그녀들의 모습이 NASA를 변화시킨 것이 아닌가 라는 생각이 든다.

2017년 6월 2일 금요일

Datepicker (spinner type)


회사에서 모바일 웹페이지를 만들 일이 생겼는데, 사용하는 Visual Studio 버전 탓인지
ASP .net 에서  <input> 태그에 type="date" 이 안되고, 원하는 형태(간단한 DATE 선택만 요구) 의 Datepicker 가 없어서
그냥 javascript, jQuery 를 이용해 spinner 타입의 Datepicker 를 만들었다.

1. 필요 라이브러리 : jquery, jquery mobile
2. Date Type :  YYYYMMDD 형태
3. 시연 화면 :


4. 소스코드 : https://github.com/JunpilPark/Datepicker

5. 기타사항 :
  Datepicker 에서 월(Month)의 마지막일을 선택하고, 월(Month)이나 년(Year)이 변경되면 윤년의 여부, 월(Month) 에 따라 마지막 일자가 변경된다. 이 부분은 변경되는 마지막 월(Month)가 선택되도록 프로그램 하였다.

예) 2017-05-31 에서 2017-06 월로 변경되면 선택된 일자가 30일로 변경된다.
     2017-06-30 에서 2017-05 월로 변경되면 선택된 일자가 31일로 변경된다.








2017년 5월 27일 토요일

'소프트웨어에 물들다' 강연 진행자 봉사 후기

  2017년 5월 27일 대구 시립 두류도서관에서 '소프트웨어에 물들다.' 라는 재능기부 강연이 있었다. 그 소프트웨어 강연에 진행자로 봉사 신청해서 참여하게 되었다.
이 재능 기부 강연에 대해 소개하면 지역 초등학교 어린이들의 소프트웨어에 대해 앞으로 시대에서 중요성을 알리고, 소프트웨어 접근에 흥미를 느껴 꿈을 펼칠 수 있도록 지원하는 도서관 참여 사업이다.

  이번 '소프트웨어에 물들다.' 에는 한동대학교의 이강 교수님과 김헌주 교수님이 강연자로 참석해주셨다. 두 강연하신 분의 강연내용을 요약해서 소개한다.

  이강 교수님은 '소프트웨어가 없으면 컴퓨터, 로봇은 깡통이다' 라는 제목으로 강연을 해주셨다.
  교수님이 소프트웨어 공학에 대해서 공부하게 되었던 이유는 어릴 때 로봇만화를 좋아했었는데 만화처럼 로봇을 만들고 싶었고, 고등학교 때 접했던 엘빈토플러의 제3의 물결로 이야기 되었던 정보가 가장 중요한 정보화 사회가 올 것이라고 믿었기 때문이라고 한다. 실제로 지금 소프트웨어와 정보가 가장 중요한 시대에서 살고 있다며 앞으로 더 소프트웨어가 중요해 질 것이라 설명하셨고, 어린 시절 가장 좋아하던 만화의 로봇을 만드는 일들을 하신다며 로봇이 스스로 생각하고, 움직이게 만드는 것은 소프트웨어라며 소프트웨어는 꿈을 펼칠 수 있는 멋진 도구라고 설명하셨다. 

  라인 트레이서와 직접 개발하신 칠교 프로그램을 시연하여 아이들이 참여하였는데, 아이들이 완전 좋아했다.

직접 개발하신 칠교 프로그램을 시연하시는 이강 교수님


김헌주 교수님은 '소프트웨어야 놀자' 라는 주제로 강연을 해주셨다.

앞으로 사라질 직업 예상 과 앞으로 각광받을 직업 들을 이야기 하시며 4차 산업혁명이 무엇인지 어떤 변화들이 생길 지에 대해서 아이들 눈높이로 잘 설명해주셨다.
그리고, 이 변화의 중심에는 소프트웨어가 있음을 강조하셨다. 그리고, 아이들이 접할 수 있는 프로그램 랭귀지 스크래치, 엔트리, 프로세싱 등을 소개해주셨다.
  그리고, 프로세싱을 이용해 고등학생들이 만든 간단한 '틀린 그림찾기', '벽돌깨기 게임' 들을 시연했다. 강연을 마치고 몇몇 아이들이 게임을 해보겠다고 교수님의 노트북을 붙잡고 있기도 했다.

앞에서 강의하고 계신 김헌주 교수님

  두 교수님의 멋진 강의를 너무 잘들었고, 유익한 시간이었다. 
아이들에게도 그런 시간이 되었으리라 믿는다. 교수님 감사합니다. (- -) (_ _) 꾸벅~
또, '소프트웨어에 물들다' 주최 측에도 감사합니다.

그리고, 아이들과 함께 강의를 듣는 부모님들도 많으셨다. 부모님은 아이들 교육에 관심이 많은 법!! 교수님들께 소프트웨어가 중요해지는 이 시대에 어떻게 교육을 시켜야 하는 지 질문하셨다. 교수님들의 대답을 요약정리해 보았다. 

1. 요즘 다들 이슈로 부상하는 코딩교육을 한다고 코딩학원도 보내는데, 코딩학원까지 보낼 필요는 없다. 방과 후 활동으로 하는 스크래치 정도로도 충분하다.

2. 중요한 건 코딩 자체이기 보다는 아이디어이고, 문제해결을 할 수 있는 논리력이다.
코딩은 아이디어를 구현해내고 논리력을 키우고, 문제해결을 돕는 도구이다.

3. 수학이 중요하다. 답을 맞추는 수학이 아니라 설명할 수 있는 수학이 중요하다 하셨다.
설명이 애매해서 과정을 설명할 수 있는 수학만 생각할 수 있었는데, 나는 두가지 측면을 말씀하실려고 하셨던것으로 이해하고 정리했다.
  첫째는 과정을 설명할 수 있는 수학이 중요하다. 정답이 아니라 그 정답이 왜 나오게 되었는지 과정도 설명할 수 있어야한다는 말이다.
  두번째는 현실세계를 설명할 수 있는 수학이 중요하다고 말씀하시려고 했던거 같다.
그래서 집합, 논리(이산수학 인것 같다) 를 말씀하신 것 같다. 
프로그램에서는 현실세계를 수로 표현하고 논리로 문제를 풀어내기 때문에 이 말씀을 하신 것 같다. 그리고 사견으로 빅데이터, 딥러닝 등 인공지능 분야가 이슈가 되기 때문에 앞으로는 통계도 중요할 것 같다. 

4. 인공지능을 예로 드시면서 철학, 심리학 등을 포함한 인문학, 수학, 공학 등 앞으로는 모든 학문들이 융합되기 때문에 총체적인 지식과 사고능력이 필요하다. 이를 키울 수 있는 가장 큰 방법은 독서!

5. 스크래치, 엔트리, 프로세싱 등 자신이 할 수 있는 컴퓨터 언어로 원하는 것들을 만들어 보라고 하셨다. 

  개인적으로 4, 5번이 제일 중요한 것 같다. 
  4번이 중요하다고 생각하는 첫번째 이유는 앞으로는 아이디어를 구현해 낼 방법은 진짜 많고 진입장벽도 낮아지기 때문에 아이디어가 자체가 중요하다고 생각한다. 따라서 총체적인 지식이 있어야 좋은 아이디어가 나온다고 믿기이다. 
  두번째는 앞으로 펼쳐질 인공지능 시대에는 인간다움을 끊임없이 고민해야 방향을 잃지 않을 것 같다. 더 인간을 닮은 인공지능을 만들려는 공학자들도 인간이 무엇인지 알아야 그렇게 만들 수 있을 것이라 믿기 때문에 인문학이 소외되서는 안된다고 생각하기 때문이다.
  5번은 하면서 결과물이 나오고 성취감도 맛보고 흥미가 생겨야 코딩이 이 분야가 재미있어 지기 때문이다. 그렇게 해야 아이디어 -> 코딩 / 구현 -> 성취감 -> 아이디어 ->코딩 / 구현 -> 성취감 으로 이어지는 선순환 고리가 이어진다고 생각한다. 


# 덧붙이는 사견

  이 강연에 참여한 아이들의 수준에 놀랐다. 방과 후 프로그램을 통해 스크래치를 다루어 본 아이들도 있었고, IT 분야의 뉴스, 단어 등을 잘알 고 있는 아이도 있었다.
부모나 아이 중에 IT 분야에 흥미가 있기 때문에 이런 강연에 찾아왔을 것이기에 이정도 수준은 당연하다는 생각이 들기도 한다. 
  하지만, 분명한건 생각보다 아이들이 빠르게 소프트웨어에 대해 접하고 있고, 점점 더 우리가 상상하는 시대는 더 빨리 올 것이라는 생각이 들었다. 게다가 내년에 초중등 교육에 프로그램 교육이 의무화되고 고등학교는 선택과목이 된다고 한다. 

  이렇게 되면 한 팟케스트에서 이두희씨가 이야기 한 것처럼 정보 소외 계층들은 또 다른 폭력이 되는 결과가 되지 않을까 라는 생각이든다.
그래서 이런 교육들이 가난한 지역, 도서산간 지역 어린이/청소년들에게도 활발하게 이루어져서 정보 소외 격차가 줄어들 수 있는 많은 기회가 주어졌으면 좋겠다.
  

2017년 5월 22일 월요일

'소프트웨어에 물들다 ' 강연 소개

"소프트웨어에 물들다" 라는 강연입니다.
소프트웨어 교육에 관심있는 대구 지역 분들은 참석하시면 좋을 것 같습니다.
저도 진행자로 봉사합니다. ^^


http://www.duryu-lib.daegu.kr/duryu_main/board.php?wd=1&bb_code=22431&view=read

2017년 5월 16일 화요일

워너크라이(WannaCry) 랜섬웨어 예방 방법

  5월 14일 워너크립터(WannaCryptor) 라는 랜섬웨어 공격이 이슈가 되고 있다.
전산실에 근무하는 나는 이전에 서버의 익명FTP 계정을 공격하여 랜섬웨어에 감염되어 오라클과 관련된 모든 파일이 암호화되어 낭패를 본적이 있어서 관련 기사를 보고 주말내내 긴장을 늦출 수가 없었다.
다행히 서버 및 사용자 PC도 감염된 사례가 없이 넘어갔다. 하지만, 월요일 출근하자마자 혹시 모를 감염에 대비하여 점검 및 예방책 메뉴얼을 만들어 배포한다고 정신이 없었다.

  이번 랜섬웨어에 대해서 조사하고, 예방 메뉴얼을 만들면서 내용들을 정리하여 포스트 하니, 많은 분들에게 예방하는 데 도움이 되었으면 좋겠다.

1. 랜섬웨어란?

  몸 값을 뜻하는 Ransom 과 제품을 뜻하는 Ware의 합성어이며, 사용자의 동의 없이 컴퓨터에 불법으로 설치되어 사용자의 파일을 암호화하여 금전을 요구하는 프로그램을 말함.

2. 이번 랜섬웨어의 특징은 ??

  이번 랜섬웨어는 워너크립터(WannaCryptor)/워너크라이(WannaCry) 라고 불리는데, 2017년 2월에 처음 발견되었고, Windows SMB(Server Message Block) 취약점을 악용하여 공격한다. SMB는 윈도우 운영체제에서 폴더, 프린터 등을 공유하기 위해 사용되는 프로토콜이다. 이번 워너크립터/워너크라이 랜섬웨어는 웜(Worm)의 특성도 가지고 있어 네트워크를 타고 전파가 되기 때문에 같은 네트워크에 SMB 취약점이 있다면 모두 감염될 가능성이 있으니 특별히 주의해야한다.
  일단 감염되면 PC내 문서파일, 압축파일, DB파일, 가상머신 파일 등을 암호화하여 확장자를 .WNCRY 으로 변경하고, 복호화 명목으로 300달러 이상 가치의 비트코인을 요구한다.
이번 워너크라이 랜섬웨어에 감염된 경우에 나타나는 창

3. 랜섬웨어에 걸렸다면??

  일단 다른 PC들의 감염을 막기 위해 랜섬웨어에 걸린 PC를 네트워크에서 분리해야한다. 그리고, 백신으로 같은 네트워크에 있던 PC들을 체크한다.
  그리고, 랜섬웨어에 걸린 PC는 포맷하는 것이 가장 최선의 방법이다. 인터넷에서 찾아보면 잘 알려진 랜섬웨어의 확장자의 경우에는 복호화하는 서비스를 제공하는 백신업체들이 있으나, 랜섬웨어의 변종이 워낙 많고 암호화 기법도 다양해서 복호화 할 수없는 것이 대부분이다.  따라서, 가슴 아프지만 깔끔하게 포맷하는 것이 가장 좋은 방법이다.

4. 이번 워너크라이 랜섬웨어를 예방하기 위해서는??

1) MS17-010 보안업데이트 진행

   이번 워너크라이/워너크립트 랜섬웨어도 3월 MS 에서 윈도우 자동업데이트를 통해 업데이트를 진행하였다. 따라서, 윈도우 자동업데이트 또는 아래 링크를 통해 MS17-010 보안 업데이트를 적용한다.

*. 공지 MS17-010 – 긴급 Microsoft Windows SMB 서버용 보안 업데이트(4013389)
https://technet.microsoft.com/ko-kr/library/security/ms17-010.aspx


*. MS17-010 취약점 패치 중 MS에서 지원중단한 OS에 대해서 별도로 제공한 패치

[Windows Server 2003 SP2 x64]
https://www.microsoft.com/ko-KR/download/confirmation.aspx?id=55244

[Windows Server 2003 SP2 x86]
https://www.microsoft.com/ko-KR/download/confirmation.aspx?id=55248

[Windows XP SP2 x64]
https://www.microsoft.com/en-us/download/confirmation.aspx?id=55250

[Windows XP SP3 x86]
http://download.windowsupdate.com/d/csa/csa/secu/2017/02/windowsxp-kb4012598-x86-custom-kor_b2a6516e2fd541c75ebb4bcaeb15e91846ac90c5.exe

[Windows XP Embedded SP3 x86]
https://www.microsoft.com/ko-KR/download/confirmation.aspx?id=55247

[Windows 8 x86]
https://www.microsoft.com/ko-KR/download/confirmation.aspx?id=55246

[Windows 8 x64]
https://www.microsoft.com/ko-KR/download/confirmation.aspx?id=55249


2) 위 MS17-010 업데이트를 할 수없다면, ‘Microsoft SMBv1 사용 안함' 으로 설정하거나 네트워크 방화벽 및 Windows 방화벽을 이용하여 SMB 관련 포트를 차단.


*. SMBv1 사용 안 함

[Windows Vista 이상]
Microsoft 기술 자료 문서 2696547을 참조하십시오.

[Windows 8.1 또는 Windows Server 2012 R2 이상]
-. 클라이언트 운영 체제:
1. 제어판을 열고 프로그램을 클릭한 후 Windows 기능 사용/사용 안 함을 클릭.
2. Windows 기능 창에서 SMB1.0/CIFS 파일 공유 지원 확인란의 선택을 해제하고 확인을 클릭해 창을 닫음.
3. 시스템을 다시 시작합니다.

-. 서버 운영 체제:
1. 서버 관리자를 열고 관리 메뉴를 클릭한 후 역할 및 기능 제거를 선택합니다.
2. 기능 창에서 SMB1.0/CIFS 파일 공유 지원 확인란의 선택을 해제하고 확인을 클릭해 창을 닫습니다.
3. 시스템을 다시 시작합니다.

*. 네트워크 방화벽 및 Windows 방화벽을 이용하여 SMB 관련 포트를 차단

KISA 보호나라의 랜섬웨어 예방요령 참조 :
https://www.boho.or.kr/data/secNoticeView.do?bulletin_writing_sequence=25723

3) 최신 윈도우 업데이트를 유지하기 위해서 업데이트 설정을 자동으로 설정

  랜섬웨어를 예방하기 위해서는 OS 취약점에 대한 업데이트를 지속적으로 최신으로 하는 것이 중요하다. 따라서 업데이트 설정을 자동으로 설정해두어 최신 업데이트가 빠르게 되도록 해야한다.

*. 윈도우 7



*. 윈도우 10



4) 백신 설치

  알약, V3, 카스퍼스키 등 백신을 설치하여 지속적인 시스템 감시를 하고, 주기적인 검사를 통해 랜섬웨어를 조기 예방 할 수 있다. 또한 이러한 백신 프로그램들을 통해 보안뉴스나 정보들을 볼 수도 있어 꼭 PC에 백신을 설치하는 것이 좋다.

5) 보안에 도움이 되는 사이트

-. 알약공식블로그 : http://blog.alyac.co.kr/1093
-. KISA 보호나라 : https://www.boho.or.kr/main.do




2017년 5월 12일 금요일

Toy Project 의 변경 - 가제 : 'GOOD APP'

  지난 번에 두번재 Toy Project(다음 Toy Pjrocet는???) 와 같이 삼행시 대결 서비스 같은 것을 만들려고 했는데, 마음이 바뀌어 다른 서비스를 진행하려고 한다.

  가제 : 착한 어플리케이션이다. 

힘들거나 고민, 이루고 싶은 것들을 글로 적거나 사진으로 남기면 '좋아요' 누르듯이 응원 관련된 이모티콘만 누를 수 있도록 해서 나를 모르는 사람들이 나에게 응원, 위로 등을 해주고 그 위로를 통해 힘을 얻는 착한 서비스다.

처음 생각한 삼행시 대결 서비스 보다 난이도가 낮기도 하고, SNS 를 보면 너무 각박하다는 생각이 많이 들어서 한번 기획해보았다.

상세 요구조건을 생각나는대로 적어보면 아래와 같다.

1. 이메일 외 개인 식별자는 없다. 익명의 닉네임으로 운영됨.
2. 타임라인에 위로할 글이 보일 때 공감할 수 있는 글들이 나오기 위해서 선택적으로 성별, 나이, 결혼유무, 사는지역, 종교를 입력받음. 사용자들에게는 비공개.
선택적인 정보가 입력되지 않을 경우는 랜덤하게 글이 보임.
3. 댓글은 적을 수 없다. 오로지 응원으로 관련된 이모티콘을 클릭으로 운영됨.
4. 응원, 위로 등을 받은 것을 보여줌.

일단 생각나는 건 이 정도다 Python + django 로 구현을 단계별로 해갈텐데 구현할 때마다 블로그에 적도록 하겠다. 그리고, 이번 글은 생각나는대로 막 적었는데 다음에 올릴 때는 조금 더 체계적으로 다듬어서 올리도록 하겠다.

추천합니다. 에어비앤비!

  5월 1일 근로자의 날에 에버랜드에 가족들과 가기로 했다.
경북 경산에 사는 나는 도저히 새벽 일찍 운전할 자신이 없어 전날 에버랜드 근처에서 가족들과 일박을 하기로 했다.  그런데 바쁜 일정으로 미리 숙박예약을 하지못해 이틀전이 되어서 숙박 사이트를 뒤지기 시작했다.  황금연휴의 시작이고, 숙박일이 촉박해서 그런지 숙박할 곳이 없었다. 그렇게 하루종일 숙박 검색 사이트를 뒤지고 있는데 지인이 에어비엔비를 소개 시켜줬다.
  결국, 에어비앤비에서 괜찮은 곳을 찾아서 호스트와 계약을 하고 아주 만족스럽게 1박을 했다.

에어비엔비 인터넷 접속 화면

  에어비엔비는 알고 있었다. TV 광고에서도 보이고, 각종 강연을 통해 우버와 함께 에어비엔비의 성공사례는 많이 들었기 때문이다. 다만, 공유경제는 해외의 이야기라고만 생각하고 해외여행 갈 때만 쓸 수 있는 서비스라고 생각했다. 그런데 실제로 이번에 써 본 결과 국내에서도 충분히 경쟁력이 있고 많이 사용되고 있음을 알 수 있었다. (나만 몰랐다 ㅠㅠ)

내가 이번에 사용하면서 장점 3가지를 뽑아 보았다. (국내 기준)

1. 성수기에도 숙소를 구할 수 있었다.
  덕분에 이번 황금연휴 이틀전 좋은 위치의 방을 구했다.

2. 다양한 숙소를 볼 수 있다.
  이번에 묵었던 방은 아이들과 함께 온 가족을 타겟으로 꾸며놓은 숙소를 예약했었는데, 아이들 장난감, 아이들 목욕을 위한 물건 등이 모두 구비되어 있어 너무 편리했다. 개인의 집을 공유하는 것이 모티브라 그런지 이처럼 모텔과 호텔과 다른 특색있는 숙소가 많았다.

3. 믿을 만한 리뷰
  후기 작성 자체가 숙소를 예약하고 머물렀던 사람들이 작성하는 것이라 그런지 광고가 아니다 라고 생각되는 리뷰가 많다.


  위 장점들을 참고해서 여행가시는 분들은 에어비앤비를 이용해서 숙소를 정하는 것도 괜찮은 것 같다.

2017년 4월 28일 금요일

다음 Toy Project 는???

  라즈베리파이 탱크 제작이라는 첫 Toy Project 를 끝내고, 아이디어를 모아 놓은 에버노트의 노트를 뒤적거리며 몇일 간 고민하다가 일단 두번째 Toy Project 의 컨셉을 정했다.

  이번엔 웹 서비스!!! 를 하나 만들어 보려고 한다. 
한마디로 이야기하면 '삼행시 대결' 서비스? 커뮤니티? 라 할까? 
매일 랜덤하게 삼행시 주제가 선정되어 유저에게 노출되고 유저는 삼행시를 지어 서로 평가하고 짱 뽑고 이런 커뮤니티를 만들어 보려고 한다.

아무튼 이번 프로젝트는 웹서비스를 만드는 거라 아주 느리게 진행될 것 같다.
웹에 관련된 내 실력도 형편없을 뿐더러 디자인, 기획 모두 나 혼자 해야되기 때문이다. OTL

첫 삽은 인프런, 책등으로 파이썬을 배우며 백엔드를 구성하는 것으로 떴다.
빨리 빨리 페이지를 만들고 진행해야하는 나에게는 Python + Django 조합이 생산성이 좋다는 이야기가 플러스 요인이 되었고, 요즘 빅데이터, 코딩교육 열풍으로 인기가 엄청 좋길래 한번 직접 써보자라는 마음으로 선택했다.

  아직 Django 의 기본 중에 기본을 배우며 머릿속으로 기획을 하고 있는데, 프로젝트의 밑그림이라도 그려지면 글로 진행사항을 알리겠다. 





 

2017년 4월 25일 화요일

파워빌더 DB Profile 설정 시 오류 발생 조치 방법

파워빌더에서 DB profile 을 만들다보면 아래와 같은 메시지가 발생하는 경우가 있다.

Please connect as the PowerBuilder Catalog Owner. This is necessary for the initial connection to Oracle to GRANT privileges on the repository. 오류 발생


이 때 해결책은 아래와 같다.


Database profile 에 DB 연결하는 곳에 System 이라는 tab 을 선택.
catalog owner 가 default 값인 system 으로 되어 있을 것이다.
이 system 을 접속하려고하는 user로 변경하면된다.

파워빌더가 갑자기 다운될 때 조치방법

  회사에서 파워빌더로 프로그래밍을 하다보면 파워빌더를 실행해서 특정 오브젝트나 윈도우를 열면 아무런 이유없이 응답없음으로 변경되다가 다운될 때가 있다.

이 때 열려고 하는 오브젝트나 워크스페이스에 문제가 있는 것으로 아래와 같이 조치를 해주면 된다.


1. DataWindow 및 특정 오브젝트를 열면 다운됨.


  '실행' 에서  regedit 입력하여 레지스트리 편집기 실행
HKEY_CURRENT_USER - Software -Sysbase - PowerBuilder - Layout -Default - 열리지 않는 오브젝트 삭제


2. 파워빌더를 실행함과 동시에 다운됨.


  '실행' 에서  regedit 입력하여 레지스트리 편집기 실행
HKEY_CURRENT_USER - Software -Sysbase - PowerBuilder - Workspace - 다운되는 workspace 를 삭제

파워빌더를 실행해서 workspace를 다시 열면 됨.


원격에서 조정하는 라즈베리파이 탱크 만들기

  드디어 첫 Toy Project의 완성이다.
첫 Toy Project는 '와이파이로 원격에서 조정하는 장난감'을 만들어 귀여운 딸내미 앞에서 시연을 보이는 게 목표였다.
  그런데, 매번 퇴근시간은 늦고, 퇴근해서도 딸과 놀고 가족들과 함께하다보니 만들 시간이 없어 진도를 나가지 못했는데, 다행히 어제 오늘 와이프와 딸이 여행을 가게되어 이틀동안 그 동안 나가지 못했던 진도를 쭈욱 뽑아 진행했다.

  제작 기간에서 알 수 있듯이 프로그래밍 입문자도 만들 수 있는 수준이고, 조금만 아래글을 참조하고, 관련 지식을 인터넷으로 검색한다면 금방 만들 수 있을 것이다.



1. 시연동영상



추가 영상 : https://drive.google.com/file/d/0B3JOIwcH2MyHdTRwT0JFSV9OSTg/view?usp=sharing


2. 구성


1) 원격제어 기기

  휴대폰이나 노트북 중 하나 선정.  PC에서 테스트 용으로 자바용 프로그램을 만들었는데, 다시 안드로이드로 프로그램하기가 번거로와 노트북으로 진행하기로 결정.

2) 라즈베리파이2 

  라즈베리파이에서 코딩하기는 어렵고, PC에서 코딩 후 실행 하기로 함.  익숙한 JAVA 로 코딩하고 시리얼 통신은 JAVA RxTx 라이브러리 이용.

3) 아두이노 

 아두이노 IDE 로 프로그래밍.

라즈베리파이 탱크의 블록 다이어그램

4) 부품 결합 사진



3 소요부품 리스트


부품명 가격 구입 사이트
 테이터탱크모바일 플렛폼 (DC모터2개 포함)  95,400  http://eleparts.co.kr/EPXF79ND
 ipTIME N100mini-AP  7,130  http://eleparts.co.kr/EPXDUA43
 Arduino Leonardo  30,000  http://eleparts.co.kr/EPXCKAWT
 Motor Control Shield for Arduino  10,000  http://eleparts.co.kr/EPXDPVTN

  위 부품 말고 그외 라즈베리파이2, 외장베터리, 건전지 등이 필요한데 이 것들은 새로구입하지 않고, 가지고 있던 부품이라 따로 가격과 구입처를 표기하지 않았다.
  참고로, 예전에 위 부품들은 구입했는데 내가 자동차 프레임을 알아볼 때는 좀 괜찮다고 생각되는 프레임이 탱크모바일 플랫폼 밖에 없었는데, 최근에는 싸고 다양한 프레임이 많으니 굳이 위 프레임을 선택하지 않아도 된다. 위 '데이터탱크모바일 플렛폼' 프레임은 가격이 비싼 편이다.



4. 소스코드


1) 패킷설계

  https://docs.google.com/spreadsheets/d/1ndbYWWHjeeoWnz1pjjBvyKgjJ1QvRIFSr7w-CcjtMFY/edit?usp=sharing

2) 클라이어트 (노트북 - JAVA)

  https://github.com/JunpilPark/TANK_CLIENT_RASPBERRY

3) 서버 (라즈베리파이-JAVA), 아두이노 IDE (아두이노)

  https://github.com/JunpilPark/TANK_SERVER



5. 이슈리스트


1) 라즈베리안(리눅스) 환경에서 구동되는 RxTx 라이브러리 검색 및 설정

  라즈베리파이에서 동작할 JAVA 프로그램을 윈도우PC에서 프로그래밍한 뒤에 테스트를 하고, 라즈베리안 환경에서 다시 컴파일해서 동작시킬려고 진행했다.
개발PC의 윈도우 환경에서는 '클라이언트 - 라즈베리파이 - 아두이노 ' 모두 정상적으로 동작하였다. 그래서 라즈베리안 환경에서 컴파일하고 실행했는데, 아두이노와 시리얼 통신하기위해 Serial port 연결하는 부분에서 계속오류가 발생했다.
  확인해보니 윈도우 환경은 i386 CPU 환경이고, 라즈베리 환경은 ARM CORE 라서 오류가 발생하는 것이었다.

-. 해결책

아래 주소에서 JMRI 라이브러리를 다운받는다.
http://jmri.sourceforge.net/
리눅스용을 다운받아 파일을 보면 lib\linux\armv6l\ 폴더내 librxtxSerial.so 파일이 있다.
이 라이브러리 적용은 아래와 같이 입력하면 된다.

mv librxtxSerial.so librxtxSerial.so.jmri
 -> 파일 이름의 변경
cp /usr/lib/jni/librxtxSerial.so.jmri
 -> 이름을 변경한 파일을 jni 폴더에복사
ln -s /usr/lib/jni/librxtxSerial.so.jmri /usr/lib/jni/librxtxSerial.so
 ->librxtxSerial.so 로 심볼릭링크 생성

2) 콘솔 환경에서 JAVA 컴파일 기초지식 부족

  평소에 주로 IDE 환경에서 개발하고 컴파일, 실행을 하다보니 콘솔에서 명령어로 컴파일을 하려하니 JAVA 파일을 컴파일하고 실행하는 방법이 기억나지 않아 헤매는 일이 발생했다.
생각해보니 대학교 학부 JAVA 과정 이 후로 콘솔작업은 처음인 것 같았다.
다음에 또 콘솔환경을 만났을 때 헤매는 시간을 줄이고, 다른 분들도 참조할 수 있도록 기록해둔다.

  사전에 라즈베리파이에 JDK가 설치되어 있어야한다.
그리고, 아래와 같이 입력하여 자바파일을 컴파일 한다. 입력 시에 Main.java 파일이 있는 위치에서 입력해야한다.

root@raspberrypi::~/Downloads/src/com/toyproject/tankjavac -cp /root/Downloads/lib/RXTXcomm.jar -d /root/Downloads/classes/ *.java ./server/*.java

-cp : 빌드시 사용할 라이브러리 class path 를 지정한다.
-d : class 파일들이 생성될 경로를 지정한다.

입력 후 컴파일이 완료되면 /root/Downloads/classes 경로에 패키지 경로대로 class 파일이 생성된 것을 볼 수 있을 것이다.

실행은 class가 생성된 경로(/root/Downloads/classes)에서 아래와 같이 입력하면된다.
단, /dev/ttyACM0 는 시리얼 포트로 시스템마다 다를 수 있으니 직접시스템에서 확인하고 입력하는 것이 좋다.

root@raspberrypi::~/Downloads/classesjava -Djava.library.path=/usr/lib/jni -cp /root/Downloads/lib/RXTXcomm.jar:. com.toyproject.tank.Main "/dev/ttyACM0"  com.toyproject.tank.server 

-Djava.library.path : JNI 네이티브 라이브러리를 사용할 수 있도록 JVM 에 알려주는 옵션
-cp : 빌드시 사용할 라이브러리 class path 를 지정한다.

  위와 같이 입력했는데 시리얼 포트를 못찾는다고 에러메시지 가 뜨면
아래와 같이 심볼릭 링크를 만든 후 /dev/ttyACM0 대신에 심볼릭링크명을 넣으면 정상적으로 된다.

ln -s /dev/ttyACM[x] /dev/ttyS8[x]

([x] 는 시스템에서 나오는 숫자를 입력하면된다. /dev/ttyACM[x]의 심볼릭 링크를  /dev/ttyS8[x]로 만들겠다는 뜻이다.)


6. 향후 개선사항


향후 여유가 생긴다면 아래 내용들을 추가 개선하고 싶다.

1) 모바일에서의 동작 

  안드로이드로 클라이언트를 만들어서 게임패드처럼 조정하고 싶다.

2) 정밀한 모터 컨트롤 

  좌회전, 우회전을 할 때 지금은  한쪽모터만 돌게해서 좌/우로 움직이고 있다.
이러다 보니 약간은 어색하게 좌/우회전을 하게 된다. 좌/우 회전 할 때 한쪽 모터만 아닌 두 모터다 컨트롤을 잘해서 좌/우회전을 자연스럽게 하도록 구현하고 싶다.

3) 모터의 파워 조절 

  DC모터는 강약조절이 안된다고 생각했는데,  모터드라이버 메뉴얼을 보니 PWM 이라는 개념이 있더라 이걸 이용하면 DC 모터도 강약조절이 가능한 것으로 보인다. 그러면 원격제어 탱크에 속도 변화를 줄 수 있어 더 재미있을 것 같다.


7. 참조사이트

라즈베리파이에 자바 RXTX 이용
http://blog.naver.com/sky200go/220596887650

라즈베리파이에 자바 설치
http://makeshare.org/bbs/board.php?bo_table=raspberrypi&wr_id=21

시리얼통신으로 자바와 아두이노 연동하기 (윈도우 환경에서 RxTx 설정법)
https://www.kocoafab.cc/tutorial/view/596
http://blog.naver.com/sky200go/220595712108

자바 컴파일 및 실행관련 참조
http://jryupw.blogspot.kr/2015/11/blog-post_25.html
http://egloos.zum.com/penta82/v/4098935

라즈베리파이 시리얼포트 확인
http://creamp.tistory.com/3


2017년 4월 24일 월요일

GIT의 기초

회사스터디에서 간략하게 GIT에 대해 발표한 자료 입니다.


Windows Server 비밀번호 변경 후 확인 사항

  몇 일전 회사 내 보안 강화를 위해서 모든 서버의 비밀번호를 주기적으로 변경하기로 결정하고 비밀번호를 변경했다. 비밀번호를 변경하자 사용하고 있는 몇몇 윈도우 서버에 몇 가지 오류가 나타났다.
  구글링과 협력업체 문의를 통해 해결을 한 내용을 공유하니 혹 윈도우 서버의 비밀번호를 변경했는데 같은 증상이 나타나는 분들께 도움이 되었으면 한다.


1.  연결 된 네트워크 드라이브의 단절


  패스워드를 변경한 서버쪽으로 타부서가 네트워크 드라이브를 연결하여 파일을 복사, 수정하고 쓰고 있었는데 패스워드 변경으로 연결된 네트워크 드라이브가 모두 끊어지는 현상이 발생했다.
  이 문제는 네트워크 드라이브를 연결한 클라이언트 쪽에서 윈도우 탐색기에서 네트워크 드라이브(Z: 따위) 를 더블클릭하면 사용자이름과 패스워드를 입력하는 팝업이 뜨는데 변경된 패스워드를 입력해서 다시 연결해주면 해결된다.


2.  윈도우 작업스케쥴러(예약된 작업) 의 실행 실패


  윈도우 서버의 작업스케쥴러를 이용하여 매일 소스파일 및 DB의 덤프파일을 다른드라이브에 백업을 하는데 이 작업이 패스워드 변경때문에 실패가 되었다.

작업 스케쥴러를 들어가면 아래 [그림1] 과 같이 설정된 스케쥴 내용을 볼 수 있다. 이 스케쥴을 '더블클릭'하면 [그림2] 와 같이 스케쥴에 대한 속성창이 뜬다.

[그림1] 작업스케쥴러의 작업내용

아래 [그림2] 속성 창에서 그냥 확인 버튼을 누르면 사용자이름과 암호를 묻는 팝업이 뜨고 변경된 패스워드를 입력하면 설정이 끝이 난다.

[그림2] 작업스케쥴의 속성


3. IIS 가 실행되는 웹서버 중 가상디렉토리가 있는 웹페이지의 접속 실패


  회사 내에 사용하고 있는 웹 서비스 중 이지젠(Ezgen) 을 사용하는 웹페이지가 접속이 안되는 현상이 발생했다. 처음에는 이지젠(Ezgen) 서버의 문제인 줄 알았으나 확인결과 IIS 에 가상디렉토리 부분에 administrator 계정으로 인증 하는 부분이 있었다.  만약 이지젠(Ezgen) 서버가 아닌 다른 서버에서도 가상디렉토리를 이용하고 있었다면 웹페이지 접속이 안되는 현상이 발생했을 것이다.

아래 [그림3]과 같이 IIS 관리자를 실행시켜 '사이트'에서 '가상디렉토리'를 찾아 오른쪽 마우스 클릭을 하면 메뉴가 나온다. 그 메뉴에서 '가상디텍터리 관리 > 고급설정'을 선택한다.

[그림3] IIS 관리자 화면

  가상디텍터리관리의 '고급설정'에 들어가면 아래 [그림4]와 같이 나온다. 그림에서도 확인 할 수 있듯이 자격증명이 administrator 계정으로 되어 있음을 확인 할 수 있다. '설정' 버튼을 눌러 변경된 패스워드로 암호를 변경해준다.

[그림4] 가상디텍터리 관리의 고급설정




2017년 4월 23일 일요일

네이버의 웨일 브라우저 사용기

  몇 일전 오랜만에 출근 길에 '나는 프로그래머다' 팟캐스트를 들었다. 게스트로 네이버 웨일브라우저 팀의 김효 님이 나왔다. 방송으로 웨일이 만들어진 과정과 이런저런 개발 에피소드를 들으니 예전에 베타테스터를 신청 해두고, 사용해보지도 못한 웨일이 몹시 사용해보고 싶었다.

  -- 카스퍼스키(회사에서 사용하는 백신)에서 설치못하도록 하는 바람에 사용하지 못하고 설치파일만 다운받아 두었었다.  아마, 베타테스트 버전엔 원격으로 시스템 정보나 피드백등을 모으는 로직이 들어가 있지 않았나 생각된다. --

  아무튼,  또 설치 못하게 카스퍼스키에서 막으면 보안담당자에게 이야기해서 설치하리라 라는 굳은 의지를 가지고 회사에 출근하자 마자 웨일 브라우저를 다운받고 써보았다. 다행히 이번엔 한번에 설치가 되더라.

설치 후 사용해본 결론부터 이야기하면 "네이버에서 괜찮은 브라우저를 만들었다." 라고 이야기 할 수 있다.

1. Chrome 보다 빠른 속도

  몇일 동안 써보니  구글의 Chrome 보다 웹페이지의 로딩속도가 빠르게 느껴진다. 
아~ 이 것만으로도 칭찬한다. 

2. Chrome 의 확장성을 수용

  팟캐스트 방송 중에 Chrome 의 확장프로그램 생태계 때문에 고민을 많이 했다라는 내용이 나오는데 방송의 말씀이 이런 것들을 수용하기 위함이구나라는 것이 느껴진다. 내가 사용하는 Chrome과 동일하게 Chrome 확장프로그램을 설치 해놓았다. 다만,  난 거의 에버노트클리핑 만 써서 설치된 확장프로그램 중 에버노트의 클리핑만 써보았는데, 현재까지는 사용하는데 오류나는 부분은 없었다.
  Chrome 의 확장프로그램이 호환되어 사용가능하니 Chrome 사용자의 유입이 많지 않을까 추측해본다.

3. 편리한 기타 기능들

  뭐 많은 기능들이 있지만 개인적으로 대박인데 라는 기능이 두가지 있다.
하나는 '사이드바'이고, 하나는 '스페이스 열기' 이다.
사이드바는 웹이 출력되는 본화면 오른쪽에 작은 사이드바가 생기는데 여기서 네이버나 다른 사이트를 열고 본 화면과 독립적으로 웹서핑을 할 수 있다.
       
  이 기능은 회사에서 몰래 페이스북 하기에 너무 좋다. ^_________^
   
  내 뒷자리 오른쪽에 문이 있어서 화면전체에 페이스북을 열면 다 보여서 눈치보이는데, 네이버에서 이 문제를 해결해주었다. ㅋㅋ  페이스북으로 딴짓 뿐만 아니라 사전이나 참고문헌 보는데도 꽤나 융용하다.

  그리고 또하나는 스페이스열기 기능인데 이건 웹을 목차 형태로 만드는 기능이라고 해야할까 왼쪽창에서 선택한 링크가 오른쪽에 보인다. 팟캐스트에서도 쇼핑할 때 완전편하다라는 이야기를 하시는데, 실제로 진짜 괜찮다. 웹사이트를 목차형태로 볼 수 있어서 쇼핑할 때 물건을 클릭해서 보고 다시 Back 키 누르는 등의 번거러운 행동을 안해도 된다.

 

  이 정도가 내가 괜찮은 브라우저라고 칭한 이유들이다. 다만, 웨일 연구소(?) 인가 웨일 프로젝트 팀에서 운영하는 블로그 같은 것들이 있던데 거기서 보니 아직 국내 은행과 공공사이트를 접속할 때는 아직 몇몇 오류들이 발생하는 것으로 보인다. 저처럼 우리나라 공공사이트, 금융사이트는 익스플로러, 나머지는 웨일을 사용하는 유저들이라면 다들 꽤 만족할 것 같다라는 생각이 든다.

 *. 참고로 네이버에서 금품이나 이익 눈꼽만큼도 받은 거 없이 순수의견으로 작성했습니다.