2018의 게시물 표시

[책] 소프트웨어 세계화

이미지
소프트웨어 세계화 박미라 저 에어비앤비, 페이스북, 트위터는 해외에서 50% 이상의 수익을 번다. 그런데 우리나라에는 왜 그러한 소프트웨어가 없을까? 문제는 세계화다. 마이크로소프트, 구글, 에어비앤비, 페이스북, 트위터, 넷플릭스, 링크트인, 인튜이트는 기획 단계부터 세계화를 고려한다. 일단 국내에서 통하고 보자고? 그럼 영원히 해외로 나갈 수 없게 될 것이다. 이 책은 MS 미국 본사 국제화 부서에서 10년 이상 근무한 저자가 세계화를 체계적으로 정리한 국내 최초의 소프트웨어 세계화 지침서다. 세계화, 국제화, 현지화의 개념을 잡는 것... 소프트웨어의 세계화, 국제화, 현지화에 대한 책. 책의 전체적인 내용은 단순히 코딩에 대한 내용은 아니고, 소프트웨어 개발 전반에 걸쳐(기획부터 품질관리까지) 세계화를 어떻게 할 것인가에 대해서 설명하고 있다. 회사에서 세계화 담당팀이 별도로 없고, 자신이 담당하고 있는 소프트웨어 프로덕트가 세계화를 해야할 필요가 있다면 읽어보면 좋을 듯. 개인적으로 나는 이러한 내용들을, 검증으로부터 문제를 전달 받으면서 주먹구구식으로 익힌 느낌인데, 이런 책이 있으면 좀 더 개념잡기에 좋을 것 같다. 전 세계에 배포하는 소프트웨어를 담당하는 팀이라면 신입사원들에게도 한 번 읽어보도록 하면 좋을 것 같다.

[TensorFlow] 대항해시대 온라인 시세 공유 도우미 (2)

이 글에서는 학습된 데이터를 어떻게 저장하고 어떻게 읽어와서 사용할 지에 중점을 두고 설명하겠습니다. 지난 번 글에서 언급한 도시이름, 시세, 화살표의 Learing Model 코드는 이곳 에서 확인하실 수 있습니다. 이 코드는 교역품의 러닝 모델과 거의 비슷하기에 뒤에 학습된 모델을 읽어오기 위해 필요한 부분만 설명하겠습니다. 텐서플로우 공식 사이트에는 Save and Restore 항목이 있고, 여기에 보면 tf.saved_model.simple_save 를 이용하면 제일 쉽다고 되어 있습니다. 그래서 저는 이 함수를 사용하기로 결정하였습니다. 처음에는 단순히 아래와 같이 simple_save 코드를 이용하였습니다. ---------- simple_save(session, export_dir) ---------- 그리고 저장된 모델은 아래와 같이 로드하였습니다. ---------- def estimate(model_dir, raw_bytes):     tf.reset_default_graph()     graph = tf.Graph()     with graph.as_default():         with tf.Session(graph=graph) as sess:             tf.saved_model.loader.load(sess, [tag_constants.SERVING], model_dir, )             x_data = [[float(x) for x in raw_bytes]]             logits = tf.argmax(model, 1)         return sess.run(logits, feed_dict={X: x_data, keep_prob: 1.0})[0] ---------- 이러면 에러가 발생합니다. X, keep_prob, model 이라는 것이 무엇인지 모르기 때문이지요. 그렇다고 로드하는 곳에서 다시 X, keep_prob, model 을 정의한다고 이용할 수 있는 것은 아닙니다. 새로 정

[파이썬] 패키지 재사용을 위한 패키징과 배포

너무나 사심이 가득하고 개인적인 대항해시대 온라인 시세 공유 프로젝트를 진행하면서 파이썬에 대해서도 많이 공부하게 되는 것 같습니다. 단순 언어도 공부가 되었지만, 실제 deploy 하는 측면에서도 고민을 하고 해결 방법을 찾아보곤 합니다. 대항해시대 시세 공유 도우미 프로그램는 크게 2개의 프로젝트로 구성되어 있습니다. 그리고 이 두개의 프로젝트는 물리적으로 분리된 프로젝트로 만들려고 합니다.   - Machine Learning 을 수행하는 부분   - GUI 클라이언트 부분   이 두개의 프로젝트는 공통으로 사용하는 utils 패키지가 있는데, 이 코드를 두 프로젝트에서 소스로 가지고 있으면 관리의 어려움이 있기에 utils 패키지를 패키징해서 pip install 을 이용해 사용하는 방법을 알아보았습니다. 구글에서 검색한 내용을 참고로 저는 아래와 같이 프로젝트 디렉토리를 구성하였습니다 --------------------------------------------- uwo_ps_utils/     LICENSE     MANIFEST.in     README.md     setup.py     .gitignore     docs/     uwo_ps_utils/         __init__.py         market_rates_cropper.py ---------------------------------------------         (docs 디렉토리에는 어떤 포맷으로 작성해야 하는 지 몰라서, 제가 마음대로 작성한 텍스트 파일이 하나 들어있습니다) MANIFEST.in 이나 setup.py 작성 방법에 대해서는 제일 아래에 있는 사이트를 참고하세요. .gitignore 나 LICENSE 부분은 github 에서 기본으로 제공하는 파일을 이용했습니다. 이 프로젝트를 빌드하기 위해서는 setuptools와 wheel이 필요하기 때문에, pip install setuptools wheel 명령으로

[TensorFlow] 대항해시대 온라인 시세 공유 도우미 (1)

이미지
국내에서 서비스하는 대항해시대 온라인의 최악의 시스템은 랜덤 그레이드 옵션이 아닐까 생각합니다. 그런데 어쩌다 보니 글로벌판에서 경험치,스킬숙련도,명성 최대 4배 이벤트를 하는 것을 보고, 글로벌판으로 갈아탔지요. 그리고 foxytrixy 를 이용해 오픈 채팅방에서 시세 공유하는 것을 보고 스크린샷에서 바로 정보를 가져올 수 있으면 좋겠다는 생각에 시작했습니다. 때마침 머신러닝 교육을 갔다와서 어디 적용할 만한 것이 없을까 고민하고 있었고요. 처음에는 게임의 해상도마다 이미지 크기가 조금씩 다를테니 이걸 같은 크기로 리사이즈 하고 이런 데이터들을 모아서 학습을 시키면 모든 해상도에서 정보를 인식할 수 있을꺼라 생각했습니다. 그런데 이 옛날 게임은 해상도가 달라도 "Market Rates" 보는 창의 크기는 동일한 사이즈였습니다. 머신러닝을 적용하는 것이 큰 의미가 없어지긴 했지만, 그래도 반투명한 부분 때문에 충분히 도움이 되지 않을까 생각하면서 진행해 봤습니다. 여기서는 Python + Tensorflow 를 이용해서 제가 데이터를 모으고, 신경망을 구성한 것을 보여드리고자 합니다. 일단 대항해시대 온라인의 Market Rates 화면입니다. 창의 왼쪽에는 교역품 시세, 오른쪽에는 인근 도시의 시세입니다. 일단 왼쪽 교역품 항목에 집중해 봅시다. 화면에서 교역품 정보를 알기 위해서는 그림을 보거나 이름을 보거나 둘 중 하나가 될 텐데요, 저는 이미지를 택했습니다. 웬지 이름 보다는 더 식별을 잘 할 것 같아서 말이죠. 스크린샷에서 교역품 이미지를 확인해 보니, 이 이미지는 배경화면의 영향을 받지 않습니다. 그래도 머신러닝 시작한 김에 계속 진행합니다. 대항해시대 온라인의 교역품 종류는 https://ssjoy.org/ 사이트 기준으로 대략 600 가지가 넘는 것으로 보입니다. 처음에는 이 모든 교역품의 이미지를 스크린샷으로 부터 가져와서 데이터를 만들기는 어려워 사람들이 시세를 많이 확인하는 품목 몇 종류만
이미지
정의란 무엇인가 마이클 샌델 저/ 김선욱 감수/ 김명철 역 한국에 ‘정의’ 열풍을 불러일으킨 마이클 샌델은 구제 금융, 대리 출산, 동성 결혼, 과거사 공개 사과 등 현대 사회에서 우리가 흔히 부딪히는 문제를 통해 ‘무엇이 정의로운가’에 대한 해답을 탐구했다. 이 책은 탁월한 정치 철학자들이 남긴 시대를 초월한 철학적인 질문을 알기 쉽게 소개한다. 이를 통해 옳고 그름, 정의와 부당함, 평등과 불평등, 개인의 권리와 공동선을 둘러싼 주장들이 경쟁하는 공적 담론과 토론의 장에서 정의에 관한 자신만의 견해를 정립하고 논리 기반을 굳건하게 다지는 토대를 제공한다. 이 책은 현대 사회의 문제를... (책을 사고 나서 너무 늦게 읽었나 보다. 내 책은 저 표지가 아닌데...) 너무 어려운 주제라는 생각에 손을 대지 않고 있다가, 몇 일 여유가 생겨서 완독하였다. 제러미 벤담, 존 스튜어드 밀, 이마누엘 칸트, 존 롤스, 아리스토텔레스 등, 정의에 대한 철학자들의 생각을 실제 사건과 연관지어 설명하고 있어 생각보다 이해하기 쉽고 재미있었다. 마이클 샌델 교수의 "정의로운 사회는 단순히 공리를  극대화 하거나 선택의 자유를 확보하는 것만으로는 만들 수 없다. 공정한 사회를 달성하기 위해서 우리는 좋은 삶의 의미를 함께 고민하고, 의례 생기게 마련인 이견을 받아들이는 문화를 가꾸어야 한다" 라는 말에 깊이 공감한다. 정의(Justice)를 정의(Declaration)할 수 있는 단 하나의 원칙이 있을 수 있을까? 그런 것이 있을 리가 없다. 그래서 무엇이 공정한 것인지 판단하기는 참 어려운 것 같다. P.S 뜬금없지만 친구가 이야기 하던 건담의 대사 "네가 정의냐"가 생각나서 찾아 봤는데, 이걸 누가 말한 것인지도 잘 모르겠다. 비슷한 대사로는 건담 시드에 나오는 것이 있는 듯한데... 친구에게 들었던 시점에는 건담 시드 방영을 안 했던거 같은데...?

[윈도우] 실행 중인 프로그램의 타이틀을 변경하는 유틸리티

실행 중인 프로그램의 타이틀을 변경하는 유틸리티 일단, 나의 주 목적은 대항해시대 온라인을 PC방에서 투 클로 실행하기 위해서... 프로그램 실행 시에 보여주는 블로그 주소에서는 해당 유틸리티를 더 이상 배포하진 않는다. (잠깐 블로그를 방문해서 방명록 같은 것을 봤을 때, 마크 쪽 스크립트 배포하다가 저작권 문제 때문에 여러가지 배포하던 카테고리 자체를 싹 없애 버린게 아닐지...) 어쨌든, 다른 블로그에서 프로그램을 다운로드 받을 수 있으며, http://gleak.blog.me/220368297273 친절하게 바이러스 검사 결과까지 첨부해 주셨다. 물론 나는 그냥 첨부해 두기... 다운로드

Synergy 1.10 릴리즈 - 라즈비안 패키지 추가

Synergy 한글키 패치 적용을 하고 나서부터는 Synergy 약간의 애착이 생긴터라 메일이 오면 그냥 넘기지 않고 다 읽어 보는 편입니다. 오늘 1.10 버전이 릴리즈 되었다고 메일이 왔길래 릴리즈 노트 를 한번 읽어 봤습니다. 살펴보니 이번 버전 부터는 Raspbian 패키지도 배포를 하는 군요. '간만에 업데이트 해볼까' 하면서 우분투 버전을 받았으나... dpkg: dependency problems prevent configuration of synergy:  synergy depends on libqt5core5a (>= 5.7.0); however:   Version of libqt5core5a:amd64 on system is 5.2.1+dfsg-1ubuntu14.3.  synergy depends on libssl1.1 (>= 1.1.0); however:   Package libssl1.1 is not installed.  synergy depends on libstdc++6 (>= 5.2); however:   Version of libstdc++6:amd64 on system is 4.8.4-2ubuntu1~14.04.4. 이런 에러와 함께 설치 실패... 우분투 14.04 버전은 라이브러리 버전이 낮아서 안되는 군요. 삽질을 하면서 설치를 해 볼 수는 있겠으나, 우분투 설치된 PC는 개발용이라 함부로 설치된 라이브러리 버전은 변경하지 않는걸로... 결국 윈도우 버전만 업데이트 하고 말았네요.

[책] 오만과 편견

이미지
오만과 편견 제인 오스틴 저 영국 BBC의 '지난 천년간 최고의 문학가' 조사에서 셰익스피어에 이어 2위를 차지할 만큼 영국인의 큰 사랑을 받고 있는 여류작가, 제인 오스틴. 이번에 출간된 『오만과 편견』은 두 영문학자들이 10년 동안 꼼꼼한 원문 대조 과정과 교차 검토 과정을 거쳐 탄생한 번역본이다. 오역이나 부정확한 번역을 없앴음은 물론, 오스틴 문체의 특징으로 잘 알려져있는 '묘출화법'이나 반어와 풍자, 그리고 당시 시대상에 맞는 적절한 단어 표현과 선택에 신경써서 번역했다. 오래 전에 출판된 책이 오랫동안 많은 사람에게 읽혀지는 이유는, 다른 이유가 있을리 없습니다.  재미있기 때문이지요. 그것이면 충분하지 않을까요? 책을 배 송받았을 때, 생각보다 두꺼워 좀 놀랐지만... (그래도 바로 앞의 책꽂이에 있는 Design Pattern 책에 비하면 읽기도 쉽고 페이지도 적으니...) 금방 책을 다 읽어 버렸습니다. 쾌활하고 생기넘치는 엘리자베스의 변화를 지켜보는 것은, 책을 읽는 내내 즐거웠습니다. (처음 엘리자베스=일라이저=리지 라는 걸 몰랐을 땐 좀 당황스러웠지만...) 그리고 가끔씩 던지는 베넷 씨의 농담도 재미있었고요. 사실 이런 책은 10대나 20대에 읽었어야 할 것 같지만, 그때는 만화책, 무협지, 게임에 빠져 있어서..... (그렇다고 내가 그 시절을 후회하는 건 아니고요... 그 땐 그대로 즐겁게 살았으니깐.)

[책] Effective Java

이미지
이펙티브 자바 조슈아 블로크 저 / 이병준 역 『Effective Java 2판』은 졸트(Jolt) 상을 수상하며 고전의 반열에 오른 초판을 전면적으로 개정한 것으로, Java SE 5와 Java SE 6에 새롭게 도입된 기능들을 반영하였다. 저자는 새로운 디자인 패턴과 숙어들을 탐구하면서 제네릭, enum, 어노테이션, 자동 객체화 등의 새로운 기능들을 최대한 활용할 방법을 제시한다. 이 책의 각 장은 짤막한 독립 에세이 형식으로 기술된 “규칙” 들의 묶음이다. 각각의 에세이에는 자바 플랫폼을 다룰 때 알아야 할 미묘한 사항들에 대한 통찰과 조언이, 그리... 말이 필요있을까요? Java 언어를 배우고 있다면, Java 입문서 다음에 필독하여야 할 책. Java 언어를 사용한다면, 옆에 두고 언제든 참고할 만한 책. 당장 자세한 내용을 이해 못하더라도, 각 챕터의 큰 줄기는 기억해두고 실제 코드를 작성할 때 한 번씩 참고한다면 큰 도움이 될 것입니다.