일본 모리사와(Morisawa)직원이 작성한 "문자 코드는 무엇인가?"[ 文字コード is なに? What is a character code? ] 슬라이드

디지털오션(Digital Ocean)에서 주최한 2019년 핵토버페스트(Hacktoberfest, 10월동안 Github에서 4개 이상의 PR를 올리면 티셔츠와 스티커를 증정하는 행사)에 참여해보았습니다.

여태동안, 이 행사가 존재함은 알고 있었으나 바쁘다는 핑계로 참여를 안했습니다. 그러나, 2019년, 리브레오피스 회원자격(LibreOffice Membership)이 있고, 리브레오피스 우리말 모듬(LibreOffice Korean Team)에 활동하게 되니, 자유 공개 원천 소프트웨어(자유 오픈소스 소프트웨어, FLOSS)활동을 열심히 해야겠다는 의지로 2019년도 핵토버페스트(Hacktoberfest)에 참여하였습니다.


참여가 끝난후, 행사 주최하는 곳에서 Github에 올라온 PR(풀-리퀘스트, Pull-Request)를 심사하였습니다. 심사 완료후, 티셔츠를 받을 주소를 달라고 해서 집 주소를 입력하였습니다.

2019년 연말에 그동안 바빠서 정신이 없어서 티셔츠 생각을 미쳐 못하다, 2020년 1월 6일에 드디어 티셔츠가 담긴 소포를 받았습니다.

저는 2019년 핵토버페스트(Hacktoberfest) 참여하여, 해가 지난 1월초에 드디어 티셔츠와 스티커를 받았습니다.

미국에서 출발, 독일 경유로 한국에 온 Hacktoberfest 티셔츠 소포
소포안에는 티셔츠와 스티커가 동봉되었음.



올해인 2020년 핵토버페스트(Hacktoberfest)에서는 저뿐만 아니라 커뮤니티에 관심많은 꿈나무들에게 오픈소스 활동 어떻게 할 지 알려주고 싶네요.

오랜만에, Mac 업그레이드 후에 처음으로 MacOSX 10.15 Catalina 에서 LibreOffice(리브레오피스) 빌드를 진행하였습니다.

LibreOffice(리브레오피스) 빌드는 문서 재단의 위키 링크 Building LibreOffice on macOS를 보며 따라하였습니다.

빌드를 진행하다 보니, 아래의 오류로 빌드 진행이 안되는 것을 확인하였습니다.

In file included from /Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/Headers/Python.h:139:
/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/Headers/pythonrun.h:142:5: error: 'TAPI' is not defined, evaluates to 0 [-Werror,-Wundef]
#if TAPI
    ^
[AIN] ooo_images
1 error generated.
/Users/****/dev/lode/dev/core/solenv/gbuild/LinkTarget.mk:239: recipe for target '/Users/****/dev/lode/dev/core/workdir/CObject/pyuno/source/module/pyuno_dlopenwrapper.o' failed
make[1]: *** [/Users/****/dev/lode/dev/core/workdir/CObject/pyuno/source/module/pyuno_dlopenwrapper.o] Error 1
make[1]: *** Waiting for unfinished jobs....
Makefile:282: recipe for target 'build' failed
make: *** [build] Error 2

해당 내용에서는 C언어 매크로 TAPI가 정의 안되어서 빌드 에러가 난다는 이야기가 나왔습니다.

해당 내용에 대하여 IRC의 #libreoffice-dev채널에 문의를 하였습니다.

9:28 PM I have a question about build on MacOSX (Catalina 10.15.2)
9:28 PM I get a LibreOffice source from git repository. and try to build, then failed.
9:29 PM message is In file included from ***/dev/core/pyuno/source/module/pyuno_dlopenwrapper.c:22:
9:29 PM In file included from /Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/Headers/Python.h:139:
9:29 PM /Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/Headers/pythonrun.h:142:5: error: 'TAPI' is not defined, evaluates to 0 [-Werror,-Wundef]
9:30 PM What is "#if TAPI" ? 
9:41 PM <mikekaganski> dhsung_: a coincidence: https://ask.libreoffice.org/en/question/223751
9:44 PM <ycao> https://ask.libreoffice.org/en/question/223751/error-tapi-is-not-defined-evaluates-to-0-werror-wundef-while-building-on-macos/
9:44 PM Any tips?
9:44 PM <_rene_>  yes, the obvious one
9:44 PM (don't build with -Werror)
9:45 PM and this undefined macro is inside python itself which is clear from the error message... (just that LO bundles python if you let it..)
9:45 PM <mikekaganski>  _rene_: the problem is that this looks like our default in LODE
9:46 PM <ycao>  How can I build without `-Werror`
9:46 PM Using `lode`
9:46 PM <_rene_> mikekaganski: yes, it's a problem. anywhere :)
9:46 PM $ ./configure --help | grep -i werror --enable-werror         Turn warnings to errors. (Has no effect in modules
9:47 PM so --disable-werror, of course ;)
9:48 PM <ycao>  So run `./configure --disable-werror` is ok?
9:48 PM <mikekaganski> ycao: essentially, add --disable-werror which _rene_ mentioned to autogen.input in your core directory

문의 결과

./configure --help | grep -i werror --enable-werror         Turn warnings to errors. 

빌드 '에러 error'를 에러 대신 '경고 warning'로 바꾸어서 빌드하라고 하더군요.

이유는 TAPI라는 정의되지 않은 매크로는 파이썬 자체에 있고, 이 매크로를 무시해도 빌드 후에 실행은 되니 '에러 error'로 빌드 안되는 것에 대하여 '에러 error'레벨을 '경고 warning'으로 바꾸어서 빌드 하면 된다고 하군요.

그래서, 저는 아래의 명령어로 빌드 진행을 하였습니다.

이후, 빌드 후 확인

****@**** core % ./autogen.sh --with-locales="ko"  --with-vendor="DaeHyun Sung, TDF Member"  --disable-werror           
********************************************************************
*
*   Using commandline arguments and ignoring autogen.input!
*
********************************************************************
Running ./configure with '--with-locales=ko --with-vendor=DaeHyun Sung, TDF Member --disable-werror --srcdir=/Users/sungdaehyun/dev/lode/dev/core --enable-option-checking=fatal'
********************************************************************
*
*   Running LibreOffice build configuration.
*
********************************************************************
To build, run:
/Users/****/lode/opt/bin/make

To view some help, run:
/Users/****/lode/opt/bin/make help

After the build of LibreOffice has finished successfully, you can immediately run LibreOffice using the command:
open instdir/LibreOfficeDev.app

If you want to run the smoketest, run:
/Users/****/lode/opt/bin/make check

****@**** core % make build-nocheck
make -j 4  -rs -f /Users/****/lode/dev/core/Makefile.gbuild  build  
[PAT] boost
[DEP] LNK:Library/libuno_salhelpergcc3.dylib.3
[LNK] Library/libuno_salhelpergcc3.dylib.3
[UPK] libgpg-error-1.27.tar.bz2
[PAT] icu
[PAT] nss
[PAT] liblangtag
[DEP] LNK:Executable/bestreversemap
[LNK] Executable/bestreversemap
[PAT] libjpeg-turbo
[PAT] lcms2

(생략)


[BIN] extras
[MOD] extras
[MOD] libreoffice
[BIN] top level modules: libreoffice
[ALL] top level modules: build-non-l10n-only build-l10n-only

빌드 완료 후 실행

****@**** core % open instdir/LibreOfficeDev.app

실행 후 화면

GNOME 프로젝트의 어떤 파일 빌드 중

/home/dhsung/Projects/gnome-hello/configure: line 11964: syntax error near unexpected token `maximum'
/home/dhsung/Projects/gnome-hello/configure: line 11964: `GNOME_COMPILE_WARNINGS(maximum)'

위의 메세지를 띄우며 빌드가 안될때 해결책.
'gnome-common'라이브러리( Common Files to Build GNOME )이 없어서 나오는 문제.

그래서 아래와 같이 'gnome-common'라이브러리를 설치해면 해결됨.

openSUESE에서
sudo zypper install gnome-common

Ubuntu에서
sudo apt install gnome-common

위의 패키지 설치가 끝나면 해결됨.

출처: GNOME_COMPILE_WARNINGS(maximum) – Syntax Error in configure

2019년 7월 27일 토요일 밤.

2014년도 초반에 구입한 맥북프로(MacBook Pro) 2013 late의 배터리 교체를 진행하였습니다.

저의 맥북프로 배터리 교체는 Youtube에 공개된 영상을 참고로 교체를 진행하였습니다.

쇼핑몰 사이트에서 맥북프로 13맥북프로(MacBookPro) 13인치(2013 late)를 구매하였습니다

구매한 MacBookPro 13인치 2013 late모델의 배터리

 

구매한 배터리를 사용하는 맥북프로(MacBookPro) 13인치 2013 late모델에 교체를 할수 있게 뒤의 기판을 열어봅니다.

 

맥북프로 하단 기판을 열어보니, 어머나, 배터리가 엄청 많이 부풀어올랐군요. 생각보다 많이 부풀어 올라서 계속 나두었으면 큰일날뻔 한 생각이 들었습니다.

5년이상 사용하여 부풀어 오른 맥북프로의 배터리 

Youtube동영상에 나온대로, 맥북프로에 붙어 있는 부풀어오른 배터리의 접착된 부분을 끌을 이용하여 떼어냅니다.

다만, 중간 부분은 터치패드 회로가 있는 부분이기 때문에 아주 조심히 떼어내야합니다.

 

배터리를 떼어내었으면, 새로운 배터리를 부착합니다.

맥북프로에 부풀어오른 배터리를 떼어낸후, 새로운 배터리로 교체한 모습
부풀어올라 떼어난 배터리와 맥북프로에 새로 교체하여 탑재된 배터리의 비교 

배터리를 교체한후, 혹시나 배터리가 이상이 있을지 모르니 켜봅니다. 정상적으로 켜졌으면 문제 없이 배터리가 교체된것입니다.

맥북프로를 켜고 난 후에 이상없는지 확인하면, 기판을 덮어 원상 복구를 합니다.

 

 

2014년초에 구입한 저의 맥북프로는 이번 2019년 7월 27일 토요일에 배터리를 교체하여 새로이 생명연장을 하였습니다.

2019년 7월 29일 토요일 밤의 맥북프로 배터리 교체기였습니다.

 

ps. 다음에는 2013년도에 출시되었고, 2014년 8월 일본 도쿄(동경,東京, Tokyo) 긴자(은좌, 銀座)에 위치한 애플스토어(Apple Store)에서 구매한 iPad mini2 의 배터리 교체기를 올리겠습니다.

 

https://button.like.co/studioego

 

Like DaeHyun Sung's work

Reward Creativity, powered by LikeCoin

button.like.co

 

요즘, LibreOffice를 맥북(MacBook Pro)에서 빌드를 계속 하게 됨,

그런데, 디스플레이를 끈 상태에서도 빌드를 계속 해야하는 상황이다. (자기 전에 디스플레이를 꺼야 잠을 잘수 있음.)

디스플레이를 끈다고 해도, 집에 부재한 상태에서 누구든 덮개를 닫는 상황이 있을 수 있음.

디스플레이 덮개를 닫게되면 LibreOffice 빌드중에 중단될 가능성이 높으므로 어쩌지 하다 답을 찾았음.

잠자기 방지 활성 (전원 연결에만 적용됨, 덮개 닫아도 잠자기 방지됨)
sudo pmset -c disablesleep 1

잠자기 방지 비활성 (전원 연결에만 적용됨)
sudo pmset -c disablesleep 0

https://button.like.co/studioego

 

Like DaeHyun Sung's work

Reward Creativity, powered by LikeCoin

button.like.co

 

MacOSX mojave(10.14)에서 어플리케이션 빌드를 하기 위해 설정을 해야했음.

checking what macOS SDK to use... configure: error: Could not find an appropriate macOS SDK

Mac위의 메세지가 뜨면서 빌드 설정이 실패시 아래의 명령어를 입력하여 macOS SDK를 설치하면 된다.

이번에 나온 MacOSX mojave(10.14) 부터 헤더파일(headers)이 `/usr/include/`에 기본적으로 설치되지 않습니다.

그래서 헤더파일(header)파일을 설치하려면 아래의 명령어를 입력하여

$ open /Library/Developer/CommandLineTools/Packages/macOS\_SDK\_headers\_for\_macOS\_10.14.pkg

를 실행합니다.

실행이 완료되면 아래의 설치화면이 뜹니다.

설치가 완료되면 어플리케이션 빌드가 가능합니다.

Requirements for East Asian Languages[Chinese, Japanese, Korean] Text Layout


1. Korean(한국어)

Requirements for Hangul Text Layout and Typography 

한국어 텍스트 레이아웃 및 타이포그래피를 위한 요구사항

https://www.w3.org/TR/klreq/


2. Chinese(中文,중국어,한어)

Requirements for Chinese Text Layout 中文排版需求 

https://www.w3.org/TR/clreq/


3. Japanese(日本語,일본어)

Requirements for Japanese Text Layout

https://www.w3.org/TR/jlreq/


참고

Requirements for Latin Text Layout and Pagination

https://www.w3.org/TR/dpub-latinreq/ 

  1. 황시우 2018.01.26 15:39

    Oh thxs!
    Btw,
    Canu give me an invitation card
    " okran6977@naver.com"to this email?
    Thank u

2017년 중국 인터넷 리포트(China Internet Report 2017) by Edith Yeung

Link: https://www.slideshare.net/EdithYeung/china-internet-report-2017-by-edith-yeung


Think Perl 6 PDF파일 및 LaTex파일 공개

출처: https://twitter.com/nogoodnickleft/status/868197580337020928



안녕하세요, 저는 동아시아 문자 처리에 관심이 많아 2012년도경에 한자정보를 담은 Unihan Database를 찾아보았습니다. 

이때 일본인 Dan Kogai(小飼弾, Japanese open-source developer, former CTO of Livedoor) 씨의 Unihan Perl라이브러리( https://metacpan.org/pod/Unicode::Unihan ) Perl자료를 보았습니다.

이후, 오드리 탕(唐鳳, Audrey Tang)씨가 개발한 萌典(Moedict)의 한자정보에 대하여 관심이 많아 연구하다 Perl에 입문하게 된 사람입니다.


이번에 O'Reilly에서 새로운 Perl6책 "Think Perl 6 - How to Think Like a Computer Scientist"가 나왔습니다.

이 책이 종이책으로 판매가 되었는데, 저자인 Laurent Rosenfeld씨께서 오픈소스로 온라인으로 전자책 형식인 LaTex파일, PDF파일도 공개를 하였습니다.


책 소개를 보면, Think Perl 6는 아무런 경험이 없는 사람에게 컴퓨터과학의 소개 및 프로그래밍에 대한 소개를 하는 책이라고 하군요.

이 책은 주로 Perl6를 가르치는 것이 아니라 "Perl 6"를 이용하여 프로그래밍 기술을 알려주는 것이라고 하군요. 이 책을 다 읽으면 Perl6라는 언어로 컴퓨터 과학, 소프트웨어 프로그래밍 및 문제 해결을 가르치는 것이라고 하군요.

Think Perl 6 is an introduction to computer science and programming intended for people with little or no experience.


This aim of this book is not primarily to teach Perl 6, but instead to teach the art of programming, using the Perl 6 language. After having  completed this book, you should hopefully be able  to write programs to solve relatively difficult problems in Perl 6, but my main aim is to teach computer science, software programming, and problem solving rather than solely to teach the Perl 6 language itself. 



Perl6에 대해 관심 많으신 분이나 프로그래밍 초심자가 "Think Perl6"로 Perl6를 입문하면 괜찮을 듯 합니다.

O'reilly Book Link: http://shop.oreilly.com/product/0636920065883.do

Book : http://greenteapress.com/wp/think-perl-6/

Free PDF Link: http://greenteapress.com/thinkperl6/thinkperl6.pdf

Latex Source[Github]: https://github.com/LaurentRosenfeld/thinkperl6/

  1. 2017.06.07 17:11

    비밀댓글입니다

 g0v — Fork the Government (오드리탕[唐鳳, Audrey Tang]씨의 2015년 g0v발표 슬라이드 및 동영상

g0v — Fork the Government

First presented in SEAIP 2015. Video: 

https://www.youtube.com/watch?v=459NIqDPnTE&list=PLdwQWxpS513DB98lg8kgEVG66dierWOio


Fork the Government (1/3)
Part 1: Introduction to the g0v community


Fork the Government (2/3)
Part 2: MoeDict and vTaiwan


Fork the Government (3/3)
Part 3: Uber and Airbnb deliberation


구문과 의미론(Syntax & semantics) 슬라이드 정리자료


JDK9의 55가지 새로운 기능(55 New Features in JDK 9)


(English follow Korean. 영어는 한국어 뒤에 나옵니다.)

GNOME - GNU Network Object Model Environment

한국어 소개: 그놈(GNOME) 프로젝트는 사용자를 위한 완전히 자유롭고 사용하기 쉬운 데스크탑 환경과 동시에 소프트웨어 개발자를 위한 강력한 어플리케이션 프레임워크를 만들고 있습니다.그놈은 GNU 프로젝트의 일부이며, 자유 소프트웨어입니다(흔히, 오픈 소스 소프트웨어라고 불립니다). 그놈은 많은 BSD와 GNU/리눅스에 포함되어 배포되고 있으며, 다른 여러 UNIX 시스템에서도 작동합니다.

GNOME Homepage - https://www.gnome.org/

GNOME Korea Homepage - http://www.gnome.or.kr/

GNOME Korea Blog - http://gnome-kr.blogspot.kr/

gucharmap - the GNOME Character Map, based on the Unicode Character Database.

gucharmap Homepage - https://wiki.gnome.org/Gucharmap

gucharmap GitHub - https://github.com/GNOME/gucharmap


GNOME gucharmap (그놈 문자표)

GNOME 문자표(gucharmap)  ScreenshotGNOME 문자표(gucharmap)


시작하며

저는 한자(漢字/汉字)에 관심이 많은 개발자이며, 취미로 중국어(中國語,漢語,汉语, Chinese)와 일본어(日本語, Japanese)를 배우고 있습니다.

저는 어릴때 중국어에서 사용하는 한자(漢字·汉字,hànzì,ㄏㄢˋㄗˋ)와, 일본어에서 사용하는 한자(漢字・かんじ, kanji), 그리고 한국어에서 사용하는 한자(漢字, hanja)가 다르다는 것을 깨닫고, 어릴때부터 한자에 대하여 관심을 갖게 되었습니다.


어릴때 집에서 구독하는 조선일보 기사를 보면 나라 국(國)에 대한 한자를 国로 사용하고, 더불, 줄 여(與)에 대한 한자 与를 쓰는 경우를 보았습니다.

조선일보에서 한자를 표준에 안맞게 쓸까 궁금했습니다. 여기에 대하여 아버지에게 여쭤보면 "조선일보가 일본의 기계로 찍어내서 약자를 쓴다"라고 하시며 "한자 쓸때에는 약자를 쓰면 안된다"라면서 정자체[正字體,일본에서는 구자체(舊字體,旧字体),중국에서는 번자체(繁字體)로 부름]를 배워야 한다고 강조한 적이 있습니다.

조선일보(朝鮮日報,The Chosun Ilbo) 1986년 12월 10일 3면 - 小康정국…与・野의 「対話異夢」(소강정국…여・야의 「대화이몽」, 小康정국…與・野의 「對話異夢」)

동아일보(東亞日報,The Dong-a Ilbo) 1986년 12월 9일 1면 - 與野 代表회담 적극추진(여야 대표회담 적극추진, 與野 代表會談 積極推進)

위의 조선일보에서 여(與)를 "与"로 표기를 하였고, 동아일보에서 여(與)를 "與"를 표기하였습니다.


이후,  고등학교때에 제2외국어로 중국어를 배우고, 대학교때에도 중국어 수업을 들었습니다. 중국 대륙에는 한자를 간체자(簡體字,简体字)로 바꿔서 일상생활에 사용한다 것을 알게 되곤, 한자의 모양이 다양해지고 파편화되고 있구나를 깨달았습니다.


예를 들어 차례, 버금 차(次)에 대한 한자 표기는 각 나라마다 다릅니다.

次차례, 버금 차(次)에 대한 다양한 표기 - 중국, 홍콩, 대만, 일본, 한국, 베트남 순으로 표기가 각기 다르다는 걸 확인할 수 있습니다. 次 - Variant Glyphs in China(Mainland), Hong Kong, Taiwan, Japan, Korea, Vietnam.


Table 3-99 that was excerpted from page 174 of CJKV Information Processing (Second Edition) that provides examples of CJK Unified Ideographs whose shapes may be different depending on the locale or region. Reference: Genuine Han Unification https://blogs.adobe.com/CCJKType/2012/01/genuine-han-unification.html

순서대로 일(一), 여(与,與), 판(判), 기(器), 자(字), 해(海), 일(逸), 골(骨)로 읽습니다.

(각 나라의 한자 모양을 보면, 현재의 Android OS탑재 단말기들이 제조사마다 다르게 구현되어 파편화 되고 있다는 것과 비슷한 느낌으로 받아들이면 될것 같습니다.)


그놈(GNOME)을 처음 접할때...

대학교 입학때, 리눅스 데스크탑을 접하게 되면서 문자표(GNOME gucharmap, KDE kcharselect)를 접하게 되었습니다.

위의 문자표에서 여러가지 한자가 나오면서, 한자에 대한 한국어 표기가 나옵니다만, 영어로 나와서 실망했고, 로마자표기법이 현재 대한민국에서 사용하고 있는 로마자 표기법이 아닌 것이 나와 당황한 기억이 납니다.


시간이 지나며, 중국어 수업을 들으며 간체(简体字)와 번체(繁体字)의 차이에 대하여 관심을 많이 가지게 되었지만, 컴퓨터로 어떻게 처리할지는 그 당시에 생각을 하지 않았습니다.


이후 대학원 다닐때, 저는 CJKV Information Processing이란 책을 알게 되었습니다.

이 CJKV책은 Perl 사용자 모임의 yongbin님께서 주신 책입니다.

저는 이 책을 쭉 훑어보다 머릿속에 충격을 받는 다는 표현이 어떤 것인지에 대하여 알게 되었습니다.

앞부분에는 동아시아 국가에서 사용하는 언어에 대한 인문환경, 표준에 대한 내용이기때문에 기본적인 한자, 중국어와 일본어를 알고 있어서 읽는 것에 그렇게 큰 어려움이 없었습니다.

컴퓨터로 일본어, 중국어, 한국어를 어떻게 처리할지에 대하여 정리한 책인데, 책의 저자가 미국인이라는 것에 놀라도, 한국에서 한국어로 이런 책이 나온 적이 없는데, 미국인이 작성했다는걸 보고 충격을 아주 쎄게 받았습니다.

이 책을 보면서, 미국인이 동아시아문자처리에 대한 정리를 너무 잘했다는 생각이 들면서, 한국어에 대한 처리에 대한 책을 쓰고 싶단 생각을 예전부터 하였습니다.


이후 2012년도 한국 펄 워크샵(Korea Perl Workshop)에서 운이 좋게 "동아시아 문자 처리"라는 주제로 발표를 하게 되었습니다.

(2012년도에는 얼떨결에 한국 펄 워크샵에서 발표를 하면서, 2012년 펄 크리스마스 달력에 글 "열네번째 날: 동아시아 언어의 로마자 변환에 도전해보자!"를 작성하게 되었습니다)


Perl워크샵에서 발표를 하게되면서 Unicode Consortium에서 정리한 한자에 대한 사전을 만들어 볼까하는 생각을 했습니다.


이후 시간이 지나, 대만(臺灣,Taiwan)의 해커집단G0V에서 나온 Moedict(萌典)을 보고는 충격을 많이 받았지요.

 

어튼, 서론(序論)이 길었습니다.


한자 관련 정보는 어디서?

저는 웹상에서 한자(漢字)에 대한 정보에 대한 웹사이트 만들어야겠다는 생각을 했습니다.

그런데 한자 정보에 대한 사이트를 어떻게 만들어야 할까? 이런 고민을 쭉 하게 되었지요.


유니코드 컨소시엄(Unicode Consortium)에서 공개한 유니한 데이터베이스(Unihan database, 한자정보가 정리된 데이터베이스) 정보를 조사해봤습니다.

The Unicode® Standard Version 9.0 – Core Specification http://www.unicode.org/versions/Unicode9.0.0/UnicodeStandard-9.0.pdf

The Unicode Standard, Version 9.0 - Code Charts - http://www.unicode.org/Public/UCD/latest/charts/CodeCharts.pdf

UAX #38: Unicode Han Database (Unihan) - http://unicode.org/reports/tr38/

UAX #44: Unicode Character Database - http://www.unicode.org/reports/tr44/

Unicode® Standard Annex #41 COMMON REFERENCES FOR UNICODE STANDARD ANNEXES -  http://unicode.org/reports/tr41/tr41-19.html 

CJK Unified Ideographs -  http://www.unicode.org/charts/PDF/U4E00.pdf

Unicode 최신 정보 FTP - http://www.unicode.org/Public/UCD/latest/

[Wikipedia] CJK Unified Ideographs - https://en.wikipedia.org/wiki/CJK_Unified_Ideographs


Python의 유니코드(Unicode) 관련 자료도 참조하게 되었습니다.

http://farmdev.com/talks/unicode/

Pragmatic Unicode http://nedbatchelder.com/text/unipain.html


유니코드 컨소시엄에서 정의된 파일과 가이드를 봐도 어떻게 만들지 감이 잡히지 않았습니다.


일단, 자유 소프트웨어(Free Software)로 구현된 GNOME gucharmap, KDE kcharselect가 후보군으로 떠오르군요.

위의 구현물의 소스코드를 보고 어떻게 한자 정보에 대한 사이트를 만들어볼까 고민을 해보게 됩니다.

KDE 문자표 kCharSelect - a tool to select special characters from all installed fonts and copy them into the clipboard on KDE 

https://utils.kde.org/projects/kcharselect/



GNOME 문자표 gucharmap - the GNOME Character Map, based on the Unicode Character Database. https://wiki.gnome.org/action/show/Apps/Gucharmap



오픈소스 프로젝트에 소스코드 분석해볼까?

저는 자유 소프트웨어인 KDE kcharselect, GNOME gucharmap의 git mirror를 forked했습니다.

GNOME gucharmap git mirror - https://github.com/GNOME/gucharmap

KDE kcharselect git mirror - https://github.com/KDE/kcharselect

이후 KDE kcharselect의 소스코드와 GNOME gucharmap의 소스코드를 일단 확인했습니다.


KDE kcharselect의 소스코드는 C++(QT Library), Python 스크립트로 구성되어 있습니다.

Python 스크립트로 Unicode 관련 txt파일[UnicodeData.txt, NamesList.txt, Blocks.txt, Unihan_Readings.txt (you need to uncompress it from Unihan.zip)]을 읽고, 자체적으로 사용하는 구조체를 이용하여 데이터베이스 파일 생성하는걸 확인하였습니다.


GNOME gucharmap의 소스코드는 C(GTK+ Library), Perl 스크립트로 구성되어 있습니다.

gucharmap에서는 Unicode Consortium에서 정의한 파일 Blocks.txt, NamesList.txt, Scripts.txt, UnicodeData.txt, Unihan.zip 파일을 이용한다고 나와 있습니다.

Perl 스크립트로 Unicode 관련 txt파일을 읽어 들인후  여러 C언어 파일을 생성하는 것이 인상적이였습니다.


 Unicode Consortium에서 제공하는 파일중 어떤 파일을 사용하는가? 

 GNOME gucharmap  

 KDE kcharselect

 UnicodeData.txt

 NamesList.txt 

 Blocks.txt

 Scripts.txt

 Unihan.zip  

 UnicodeData.txt

 NamesList.txt

 Blocks.txt

 Unihan_Readings.txt 


GNOME gucharmap, KDE kcharselect에서는 한자(漢字/汉字, CJK Unified Ideographs)에 대한 내용은 Unihan.zip파일 내부의 Unihan_Readings.txt의 내용을 참조하는 것을 확인 하였습니다.


저는 유니코드 컨소시엄에서 정의한 Unihan.zip 내부의 한자를 읽는 방법을 정의한 Unihan_Readings.txt파일을 읽고, 내부구조를 확인해보았습니다.


내부 구조를 확인해보니 한자에 대하여 여러가지 읽는 방법에 대한 정의가 나와 있습니다.

kCantonese, kDefinition, kHangul, kHanyuPinlu, kHanyuPinyin, kJapaneseKun, kJapaneseOn, kKorean, kMandarin, kTang, kVietnamese, kXHC1983

위의 정의 중에 한자에 대한 한글 표기(kHangul) 및 베트남어 발음표기(kVietnamese)가 존재함을 확인하였습니다. 


예제) 사람 인(人)에 대한 유니코드 컨소시엄(Unicode Consortium)의 읽는 방법 정의 



그런데 GNOME gucharmap, KDE kcharselect에서는 한국어의 로마자 표기가 지금은 주로 사용하지않은 방식인 예일대 표기법을 사용하고 있었으며, 베트남어의 발음표기가 추가 되지 않은 것을 확인하였습니다.


오픈소스 프로젝트에 소스코드 추가해보자!


저는 GNOME gucharmap, KDE kcharselect 2개의 프로젝트에서 Unihan_Readings.txt파일을 읽어들이는 소스코드를 분석후, 한글과 베트남어 발음 표기를 추가하게 되었습니다.


GNOME gucharmap에서는 Unihan_Readings.txt파일을 읽어들이는 C, Perl코드를 수정하였습니다.

버그질라 보고: https://bugzilla.gnome.org/show_bug.cgi?id=773380

추가한 소스코드: https://github.com/GNOME/gucharmap/commit/b3614d114bc2158f8e5c4b98797019f3a71d0ba7 


KDE kcharselect에서는 Unihan_Readings.txt파일을 읽어들이는 python코드를 수정하였습니다

수정한 소스코드

1) kcharselect - https://github.com/studioego/kcharselect/commit/470b8ac5ad2bdf646a64abdfd4297ad2fd9148e0

2) kwidgetsaddon -  https://github.com/studioego/kwidgetsaddons/commit/0ff990d063d8ba1f6d4a15c1144e0064fd844f9c


오픈소스 프로젝트에 소스코드 제출해보기 

저는 KDE kcharselect, GNOME gucharmap 소스코드를 github에 커밋하였고, 이후 KDE 개발자와 GNOME 번역자(GNOME Korean Translator)에게 소스코드 커밋 요청을 했습니다.


Pull Request요청한 GNOME gucharmap github 소스코드 https://github.com/studioego/gucharmap 

Pull Request요청한 KDE kcharselect github 소스코드 https://github.com/studioego/kcharselect


KDE쪽에서는 코드 충돌의 우려 및 기존 데이터파일의 배포 중단을 이유로 커밋이 거절되었습니다.


그러나 GNOME쪽에서는 GNOME Asia에서 활동하는 한국인 번역가 조성호(Seong-ho Cho)님의 도움으로 운이 좋게 커밋 성공하였습니다.

Reference: http://osdir.com/ml/commits.gnome/2016-11/msg01983.html

Subject: [gucharmap] Created tag 9.0.2 

The unsigned tag '9.0.2' was created.

Tagger: Christian Persch <chpe@xxxxxxxxxxxxx>
Date: Mon Nov 7 19:20:01 2016 +0100

Version 9.0.2

Git-EVTag-v0-SHA512: 
d889842de54cd9e5bbf253a098c13a7da91257c945b010b2d21d3f3607487d8ab47b4ba91548f9f65bf4cf70f14bece37e24907639428e6bba5b940acacfdc1e

Changes since the last tag '9.0.1':

Christian Persch (2):
Post release version bump
build: Pass --with-unicode-data down to distcheck configure

DaeHyun Sung (1):
charmap: Add korean hangul and vietnamese pronunciations

Marek Černocký (1):
Updated Czech translation

Piotr Drąg (1):
Update Polish translation

Sveinn í Felli (1):
Update Icelandic translation
_______________________________________________
commits-list mailing list (read only)
https://mail.gnome.org/mailman/listinfo/commits-list


드디어 저는 오픈소스 개발자가 되었으며 GNOME Contributor가 되었습니다.


원래는 웹상에서 한자에 대한 정보 보여주는 개발을 시작하려고 했고, 개발 시작전에 KDE kcharmap, GNOME gucharmap에 대한 소스 분석으로 하다보니, GNOME 개발에 기여를 하게 되었습니다. 운좋게 자유소프트웨어 개발자로 얻어걸린 격입니다.

 

GNOME 문자표(GNOME gucharmap)에 한자(漢字)의 한글 표기 및 베트남어 표기를 진행하다보니, 웹 상에서 한자 정보를 보여주는 서비스 구현에 대한 많은 성찰을 하게 되었습니다.


올해 안에 한자(漢字, Chinese Character)에 대한 정보 보여주는 서비스를 만든다고 도메인을 구입 및 배포하려던 계획들이 이번 GNOME gucharmap의 한글 및 베트남어 지원를 계기로, 내년에 한자 정보 서비스 사이트를 개발하기로 하였습니다.


계획은 미뤄졌지만, 리눅스 생태계의 자유 소프트웨어에 기여를 하였다는 것에 큰 의의를 둡니다.


이전에도 오픈소스(gwibber - https://code.launchpad.net/~sungdh86/gwibber/urlshorter-durl )에 기여를 한 적이 있었으나, 리눅스 배포판 설치할때마다 들어가는 문자표에 제 이름을 남기고 기여하기는 처음입니다.


아래는 GNOME gucharmap에 제가 작성한 소스가 포함된 부분에 대한 정보화면입니다.

Unihan_Readings.txt에 있는 한국어 발음, 베트남어 발음 추가

Copyright ⓒ 2016 DaeHyun Sung


"Copyright ⓒ 2016 DaeHyun Sung"이 추가되니 정말 기쁩니다.


정리하며

"소 뒷걸음질 하다 쥐잡은 격"과 같이 우연히 C, C++, Perl, Python코드를 확인하다보니 오픈소스 프로젝트인 GNOME gucharmap에 한글 표기와 베트남어발음표기를 추가하게 되었습니다.

GNOME gucharmap, KDE kcharselect소스코드를 분석하다보니, 제가 원래 목표로 한 Python, Perl용 한중일월(中日韓越, Chinese-Japanese-Korean-Vietnamese) 라이브러리를 개발을 하는데 많은 도움이 되었습니다.

내년도에 더욱 더 성장을 하여 제가 목표로 하는 한자 정보 라이브러리(Python, Perl, Java, Ruby, etc) 개발 및 한자관련 홈페이지가 나올수 있도록 노력을 하겠습니다.


추가내용(2016.12.18)

GNOME한국(GNOME Korea)에서 번역가로 활동하시는 조성호(Seong-ho Cho)  한국 그놈 커뮤니티 블로그에 제가 GNOME gucharmap의 기능추가 (한글 및 베트남어 발음 지원)에 대한 내용(새로운 그놈 커미터 환영)을 작성하셨습니다. 


앞으로 GNOME Korea의 발전에 많은 노력을 하겠습니다.


ps. 저에 많은 영향을 주신 한국 펄 커뮤니티(#perl-kr)에 감사함을 전합니다. 펄 커뮤니티 덕에 유니코드와 한자처리에 지속적인 관심을 가지게 되었습니다.

ps2. 2010년도쯤? 모 회사에서 CJKV Information Processing책을 보여주셨던 GNOME contributor 차영호(가나초코,ganachoco)님께 감사함을 전합니다. 

ps3. CJKV Information Processing 책을 주신 @y0ngbin 님께도 감사함을 전합니다

ps4. 2013년도에 일찍 하늘나라로 간 Perl Contributor @am0c군께 부채의식을 항상 느끼고 있습니다. (Obituary of Perl release note 5.18.0-RC4)

@am0c군이 펄 크리스마스 달력 2012년 12월 14일자 에  "열네번째 날: 동아시아 언어의 로마자 변환에 도전해보자!"를 편집을 했었습니다.

이후 잠수를 타다 2016년 펄 크리스마스 달력에 2개의 글을 기고 했습니다.

ps5. 박현우 @lqez님께서 한국 파이썬 사용자 모임 2014년 12월 세미나에서 발표한 'Dive into OpenSource'  발표 슬라이드를 보면 정말 공감할 내용이 많이 있어요!

ps6. 오픈소스 프로젝트를 통해 어쩌면 더 나은 개발자가 되고, 더 많은 사람을 만나, 더 나은 인격체가 될지도 모른다고 하던데, 노력을 해야겠죠?

이희승(Trustin Lee, Author of Netty) - 새 오픈 소스 프로젝트 시작하기


----

English post. 


I add GNOME gucharmap's new features.

1. add Korean Alphabet(Hangul, Hangeul, 한글)

2. add Vietnamese Pronunciation


gucharmap based on UNICODE Consortium's specification.

I read Unicode Consortium's Unihan Databases file. (Unihan_readings.txt)

Unihan_readings.txt file includes CJK Ideography's english meanings and pronunciations (such as Chinese, Japanese, Korean, Vietnamese, etc.  East Asian cultural sphere's languages)

 I found lack of Korean Hangul and Vietnamese pronunciation at GNOME gucharmap.

so, I add Korean Hangul, Vietnamese pronunciation in GNOME gucharmap.


Unihan_Readings.txt에 있는 한국어 발음, 베트남어 발음 추가

Copyright ⓒ 2016 DaeHyun Sung


It's amazing. I add my name "Copyright ⓒ 2016 DaeHyun Sung" in GNOME gucharmap.


I'm Open Source Developer and gucharmap contributor! Also GNOME Developer!


The following is My Gucharmap source code commit log.

Unihan_Readings.txt included in Unihan.zip defines the notation and pronunciation of East Asian languages such as Chinese, Japanese, Korean, Vietnamese.
Unihan_Readings.txt’ has some properties.
Such as
kCantonese, kDefinition, kHangul, kHanyuPinlu, kHanyuPinyin, kJapaneseKun, kJapaneseOn, kKorean, kMandarin, kTang, kVietnamese, kXHC1983.

I add Unihan_Readings.txt defined kVietnamese property and kHangul property in this program.

Unihan_Readings.txt’s property kVietnamese describe Vietnamese character(Quốc ngữ) pronunciation. this property defined Unihan version 3.1.1. Now Unihan database version is 9.0.0.
Unihan_Readings.txt’s property kHangul describe Korean character(한글,Hangul) describe Korean pronunciation for this character in hangul.(Hangul is Korean Alphabet) this property defined Unihan version 5.0. Now Unihan database version is 9.0.0.

  1. Why do I add kHangul(Korean Alphabet[Hangul]) property?
    Because, Unicode Consortium presented kHangul property on Unihan version 5.
    Unicode Unihan database document ( http://www.unicode.org/reports/tr38/ ) describe “kKorean” property.
    “kKorean property’s description”
    The Korean pronunciation(s) of this character, using the Yale romanization system. (See http://en.wikipedia.org/wiki/Korean_romanization for a discussion of the various Korean romanization systems.)
    Use of the kKorean field is not recommended. The kHangul field, which is aligned to the KS X 1001 and KS X 1002 standards, is recommended to be used instead.

Now, Revised Romanization of Korean (RR, also called South Korean or Ministry of Culture (MC) 2000) is the most commonly used and widely accepted system of romanization for Korean instead of "Yale romanization system"[kKorean property] in Unihan database.

So, I add kHangul property and add “Korean Alphabet(Hangul)” notation.

  1. Why do i add kVietnamese(Vietnamese pronunciation[Quốc ngữ]) property?
    “Unicode Consortium’s version9 guide chapter18. East Asia shows these paragraph.
    In Vietnam, a set of native ideographs was created for Vietnamese based on the same principles used to create new ideographs for Chinese. These Vietnamese ideographs were used through the beginning of the 20th century and are occasionally used in more recent signage and other limited contexts.

Although the term “CJK”—Chinese, Japanese, and Korean—is used throughout this text to describe the languages that currently use Han ideographic characters, it should be noted that earlier Vietnamese writing systems were based on Han ideographs. Consequently, the term “CJKV” would be more accurate in a historical sense. Han ideographs are still used for historical, religious, and pedagogical purposes in Vietnam. “

So I read Unihan documentation specification, then support Vietnamese language.



Subject: [gucharmap] Created tag 9.0.2 

http://osdir.com/ml/commits.gnome/2016-11/msg01983.html



ps1. Now, I summited KDE kCharSelect's new features. but rejected.

because, kCharselect Committer says "this will break distributions that update the data file separately from the library code." 

Maybe KDE kCharSelect will change some features. 

KDE Committer says "If you have additional ideas which other k* fields from Unihan.txt for CJK languages are useful to be included in KCharSelect, your input is welcome either on kde-utils-devel list, or on kde-frameworks list." to me.

If KDE kCharSelect's new version released, I'll share some East-Asian(CJKV) information processing for committers.






https://jdk9.java.net/download/ 에서 Early Access Release 를 다운로드 받음.


Java9 early Access Releases - https://jdk9.java.net/download/Java9 early Access Releases


Java9 의 Jigsaw project


Prepare for JDK 9  - Java9에 대한 소개 

Alan BatemanJava Platform Group, Oracle September 2016


2016년 9월 15일 한국, 일본, 대만(타이완), 홍콩, 베트남의 구글 두들(Google Doodle)

2016年 9月 15日 韓国、日本、台湾と香港、ベトナムのグーグルロゴ(Google Doodle)

2016-09-15 Google Doodles in Korea, Japan, Taiwan/Hongkong, Vietnam.



대한민국(大韓民國, Republic of Korea, 🇰🇷)


Google 기념일 로고 - 2016 추석

http://www.google.com/doodles/chuseok-2016


일본(日本, Japan, 🇯🇵)

Google 기념일 로고 - Mid Autumn Festival 2016 (Japan), 中秋の名月 2016 

http://www.google.com/doodles/mid-autumn-festival-2016-japan


홍콩(香港, Hong Kong, 🇭🇰) 과 대만(臺灣, Taiwan, 🇹🇼)

Google 기념일 로고 - 2016 중추절(타이완, 홍콩), 中秋節快樂!

http://www.google.com/doodles/mid-autumn-festival-2016-taiwan-hong-kong


베트남(越南, Vietnam, 🇻🇳)

Google 기념일 로고 - Mid Autumn Festival 2016 (Vietnam), Vui Tết Trung Thu 2016

http://www.google.com/doodles/mid-autumn-festival-2016-vietnam




2016년 6월 1일, KPCB(Kleiner Perkins Caufield & Byers)의 매리 미커님께서 2016년 인터넷 트랜드 보고서(2016 Internet Trends Report)를 발표하였습니다.

Mary Meeker씨의 인터넷 트랜드 보고서를 예전부터 지켜보고 있다만, 올해는 거시경제부분까지 들어갔으니 장표가 더욱더 늘어났음. 양이 너무 많다보니 6월 5일 일요일 오후에 몰아서 보았음.


올해 2016년도의 인터넷 트랜드(2016 Internet Trends Report)에서는 거시 경제 트랜드에 대하여 소개를 하였습니다. 

글로벌 경제 성장 둔화, 인구 성장 둔화, 그리고 중국, 인도 시장에 대한 이야기가 나왔음. 장표들을 홅어보면 2000년대 후반 2010년초반대의 인터넷 시장의 호시절이 끝나감을 느껴짐 

세계 경제 성장이 둔화되고 있으며 스마트폰에 익숙한 밀레니얼세대의 대두와 공유경제형 온디맨드플랫폼의 등장으로 이제 일하는 방법이 달라지고 있다 등등의 여러 시대의 흐름의 변화에 대하여 소개하고 있습니다.


중국과 인도 시장에 대하여 상세하게 설명하고 있으며, 메신저 플랫폼, 드론에 대하여 심도있게 적은 것이 인상적입니다.


이 슬라이드를 읽으면, 앞으로 한국이 뭘 먹고 살아야 할지, 규제가 무조건 옳은 것인지 등등 여러가지 생각할 거리를 많이 주더군요. 그리고 장표가 많아서 제대로 훑어보고 내 것으로 만들기 위해선 오랜 시간 읽고 정리를 해야겠단 생각을 했습니다.


아래는 매리 미커(Mary Meeker)씨의 2016년도의 인터넷 트랜드(2016 Internet Trends Report)에 대한 국내 언론이 정리한 기사입니다.


아래는 스타트업 얼라이언스의 임정욱님이 2016년 인터넷 트랜드(2016 Internet Trends Report)에 대하여 정리한 내용

https://www.facebook.com/jungwook/posts/10153416642927125


아래는 RECODE에서 녹화 및 정리한 "Internet trends report | Mary Meeker, KPCB | Code Conference 2016" 입니다.


  1. 2016.06.07 17:52

    비밀댓글입니다

OWASP(The Open Web Application Security Project) 문서 참조

https://www.owasp.org/index.php/Java_gotchas#Immutable_Objects_.2F_Wrapper_Class_Caching 


위의 링크에서 동등성 비교에 대하여 좋은 내용이 들어감.


가끔가다, 나도 값을 비교할 때와 객체 동등성을 확인할 때,  '=='을 사용해야 할지 equals를 사용해야 할지 정말 헷갈릴 때가 있음.


"==" - 항상 객체 동등성 비교할 때 사용

equals - 항상 객체 안의 값을 비교할 때 사용.

2016년 5월 21일

일본 Java 유저 그룹 2016년 정기총회 (JJUG, 日本Javaユーザーグループ 2016年度定期総会) 의 발표 자료 및 블로그 링크 정리한 링크 공유합니다.


JJUG CCC 2016 Springの発表資料,ブログ記事まとめ

JJUG CCC 2016 Spring의 발표자료, 블로그 기사 정리

 https://github.com/jjug-ccc/slides-articles-2016spring


일본 Mozilla 재단(Mozilla Japan)의 에반젤리스트(Evangelist)인 Tomoya Asai(Dynamis)님이 발표한 "Progressive Mobile Web Apps" 슬라이드 입니다.



Progressive Mobile Web Apps


피보탈(Pivotal) 엔지니어이면서, 스프링부트 책을 작성한 마키 토시아키(槇俊明, Toshiaki Maki)씨가 발표한 스프링 프레이워크와 스프링 부트 슬라이드 입니다.


#jjug_ccc #ccc_gh5 What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's Cloud Native Approach


아래는 "What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's Cloud Native Approach" 슬라이드를 공개한 트윗 링크입니다.



마키 토시아키(槇俊明, Toshiaki Maki)씨가 작성한 스프링부트 책의 한국어 번역판 소개

가장 빨리 만나는 스프링부트
국내도서
저자 : 마키 토시아키 / 김범준역
출판 : 길벗 2015.07.02
상세보기


위의 "가장 빨리 만나는 스프링부트"책의 원본 표지입니다.



ps. 마키 토시아키(槇俊明, Toshiaki Maki)씨의 트윗을 보니 조만간에 위의 책의 개정판을 Spring Boot 1.4 기준으로 내놓는다는군요


MySQL, MariaDB AES 암복호화 함수 호출

오랜만에 작성하는 SQL 관련 포스트

 

"INPUT_DATA"는 입력 데이터

"ENCRYPT_KEY", "DECRYPT_KEY"는 AES 암복호화할때 사용하는 암호키(SECRYPT_KEY)

암호화 함수 호출

HEX(AES_ENCRYPT("INPUT_DATA", "ENCRYPT_KEY");

 

복호화 함수 호출

AES_DECRYPT(UNHEX("TABLE's COLUMN name"), "DECRYPT_KEY")

 

 

2016년 2월 12일 금요일 및 2016년 2월 13일 토요일 작업내용 정리




1. cjkv.io 도메인을 구입

2. 클라우드 서비스인 conoha  설정

일본 GMO사에서 운영하는 클라우드 서비스인 conoha를 사용하게되었습니다.

採用目的 by GMOペパボ

(日本GMO는 네트워크 회사이면서, YAPC::Asia Tokyo 2015에 갔을때 위의 광고를 통해 알게 된 회사입니다. 이 회사가 conoha 클라우드를 운영하고 있는 회사입니다)


일본에서 시작한 클라우드 플랫폼 "ConoHa" (日本発のクラウドプラットフォーム「ConoHa」)

트래픽 무제한 (일본 VPN을 사용하려고, 추가로 일본쪽 서비스를 결제, 이용하려니 conoha에서 VPN을 사용해야겠다는 생각을 했음), 한국어 대응에도 마음에 들고, 국내 클라우드 서비스보단 속도가 느리지만 외국의 여러 클라우드서비스보다 속도도 빠른편


3. conoha에서 서버 설정

nginx설치, java, python2, python3 설치

VPN설정 그리고 개인 블로그를 설치형으로 설정하고, conoha로 이전할 예정. (conoha가 트래픽 무제한이기 때문에 개인 블로그 운영을 서비스형의 티스토리[Tistory]에서 conoha에서 설치하여 운영하는 설치형 블로그로 떠나갈까 고민됨.)


4. 일본 GMO에서 운영하는 conoha는 아래의 귀여운 캐릭터 美雲このは와 美雲あんず 2개의 캐릭터를 이용하여 클라우드 서비스 홍보를 하니 참 재미있는 회사 같다는 생각을 함.

ConoHa by GMO CM


Ubuntu 14.04에서 Oracle Java JDK 설치 

Ubuntu에서 Java를 설치하려면 Open JDK가 기본 선택을 설치됨. 그러나 Oracle JDK를 설치하려면 아래의 명령어(command)를 입력하여 설치해야함.

sudo apt-get update
sudo apt-get -y install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get -y install oracle-java8-installer
sudo update-java-alternatives -s java-8-oracle
sudo apt-get install oracle-java8-set-default


The Guts of Unicode in Python 

- PyCon 2013 talk by Benjamin Peterson


Summary

This talk will examine how Python's internal Unicode representation has changed from its introduction through the latest major changes in Python 3.3. I'll present properties of the current Unicode implementation like algorithmic complexity and standard compliance. The talk will also compare Unicode in Python with some other languages. Finally, I'll look into the future of Python's Unicode.


Python의 CJK(Chinese-Japanese-Korean,동아시아문자처리) 라이브러리 정리


1. Cjklib 0.3.2 

Homepage: http://cjklib.org/0.3/

Python Package Index: https://pypi.python.org/pypi/cjklib/0.3.2


2. cjktools 1.6.0

Homepage: https://pypi.python.org/pypi/cjktools

Github: https://github.com/larsyencken/cjktools/


위의 2개의 CJK라이브러리를 조사해본 결과, Python2기반으로 작성되었으나, Python3로 변환되지 않았음.

cjklib의 경우는 중국어 중에서 만다린(보통화, 북경어), 상하이어, 광동어(홍콩어), 일본어, 한국어에 대한 지원이 있음을 확인했으나, 라이브러리 사용이 어렵게 느껴짐을 확인.


cjktools의 경우는 중국어와 일본어만 다루기 때문에 CJK(Chinese-Japanese-Korean)의 Korean이 없다는 것을 확인.


위의 라이브러리가 Python3로 변환되지 않은 것을 보고, 이번에 Python3를 공부할겸, Python3의 문자열 처리 및 Unicode Consortium의 unihan database 내용을 확인해보겠습니다.


CJK(Chinese-Japanese-Korean)의 개발에 대한 내용은 Adobe에서 활동하는 Ken Lunde의 책 "CJKV Information Processing"을 참조하여, 사용하기 편한 Python3 라이브러리를 만들어볼 계획입니다.

 

아래는 Python CJK라이브러리 조사전에 CJK에 관심을 가지게 된 트윗글



“Genuine Han Unification is not outside the realm of extreme possibilities.”— Fox William Mulder, FBI Special Agent

슬라이드의 마지막장에 있는 의미심장한 문구




2016년 1월 7일, Amazon에서 AWS Seoul Region(서울 리젼) 설립을 발표하였습니다.




위의 발표공지를 보고나서, AWS Seoul Region의 Latency와 AWS Tokyo Region의 Latency를 측정해보았습니다.

측정은 Apache ab와 nginx를 이용하여 다음의 링크를 사용하여 측정했습니다.



AWS Tokyo Region 

 # ab -n 10 -c 1 http://**.**.**.**/index.html

This is ApacheBench, Version 2.3 <$Revision: 1706008 $>

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/


Benchmarking **.**.**.** (be patient).....done



Server Software:        nginx/1.9.9

Server Hostname:        **.**.**.**

Server Port:            80


Document Path:          /index.html

Document Length:        612 bytes


Concurrency Level:      1

Time taken for tests:   0.848 seconds

Complete requests:      10

Failed requests:        0

Total transferred:      8440 bytes

HTML transferred:       6120 bytes

Requests per second:    11.79 [#/sec] (mean)

Time per request:       84.805 [ms] (mean)

Time per request:       84.805 [ms] (mean, across all concurrent requests)

Transfer rate:          9.72 [Kbytes/sec] received


Connection Times (ms)

              min  mean[+/-sd] median   max

Connect:       40   42   1.3     42      45

Processing:    41   43   1.2     43      45

Waiting:       41   42   1.2     42      45

Total:         82   85   1.8     84      88


Percentage of the requests served within a certain time (ms)

  50%     84

  66%     85

  75%     85

  80%     87

  90%     88

  95%     88

  98%     88

  99%     88

 100%     88 (longest request)

AWS Seoul Region

 # ab -n 10 -c 1 http://**.**.**.**/index.html

This is ApacheBench, Version 2.3 <$Revision: 1706008 $>

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/


Benchmarking **.**.**.** (be patient).....done



Server Software:        nginx/1.9.9

Server Hostname:        **.**.**.**

Server Port:            80


Document Path:          /index.html

Document Length:        612 bytes


Concurrency Level:      1

Time taken for tests:   0.172 seconds

Complete requests:      10

Failed requests:        0

Total transferred:      8440 bytes

HTML transferred:       6120 bytes

Requests per second:    58.14 [#/sec] (mean)

Time per request:       17.201 [ms] (mean)

Time per request:       17.201 [ms] (mean, across all concurrent requests)

Transfer rate:          47.92 [Kbytes/sec] received


Connection Times (ms)

              min  mean[+/-sd] median   max

Connect:        7    9   1.3      9      11

Processing:     6    8   2.2      8      14

Waiting:        6    8   2.2      8      14

Total:         14   17   2.4     17      22


Percentage of the requests served within a certain time (ms)

  50%     17

  66%     18

  75%     18

  80%     19

  90%     22

  95%     22

  98%     22

  99%     22

 100%     22 (longest request)



AWS Tokyo Region Avg. Latency

 87.11111111(ms)

AWS Seoul Region Avg. Latency

 20.22222222(ms)


AWS Seoul Region 의 Latency와 AWS Tokyo Region의 Latency를 비교하니 AWS Seoul Region이 훨씬 빠르다는걸 체감하였습니다.

이후 다운로드 전송량 측정을 해보아도 AWs Seoul Region이 빠르다는 것도 확인하였습니다.


AWS Tokyo Transfer Rate

 9.72 [Kbytes/sec] 

AWS Seoul Transfer Rate

 47.92 [Kbytes/sec]


측정결과 AWS Tokyo와 AWS Seoul간의 엄청난 속도차이를 경험하였고, AWS Tokyo Region의 사용료보다 AWS Seoul Region의 사용료가 조금 더 저렴하다는 걸 보고 깜짝 놀랐습니다.


Tokyo 보다 접근 속도가 빠르면서, Tokyo보다 저렴한 Seoul을 사용해야겠다는 결론을 내렸습니다.


기존에 AWS Tokyo Region에서 생성한 인스턴스(Instance)를 AWS Seoul Region으로 옮기는 작업을 진행하였습니다.


AWS Tokyo Region(도쿄/東京 리젼)의 인스턴스를 AWS Seoul Region(서울 리젼)으로 옮기는 방법

이 방법은 

위의 링크를 참조하였습니다. 위의 링크에 있는대로 따라하니 문제 없이 Tokyo Region의 Instance가 그대로 Seoul Region의 Instance로 옮겨지고, 정상작동함을 확인함.


1. AWS Tokyo Region EC2 Instances 메뉴 

옮길려는 인스턴스의 속성 메뉴에서 Create image(EBS AMI)함.

2. AMIs 메뉴 - 새로 만든 AMI 이미지로 Launch Instance 하고 기존에 생성한 Instance와 같은 사양의 Instance를 만든다.

3. Instances 메뉴 - 새로운 Instance가 Running 되면 Instance의 속성 메뉴에서 Stop 한다.

4. Volumes 메뉴 - Instance에 연결된 볼륨의 속성 메뉴에서 Create Snapshot 한다.

5. Snapshots 메뉴 - 새로 만든 스냅샵의 속성 메뉴에서 Copy Snapshot 한다. 

6. 팝업창에서 Destination region 항목에 Seoul Region을 선택한다.


7. AWS Seoul Region EC2Snapshots 메뉴 - Tokyo Region 에서 복사 된 스냅샷의 속성 메뉴에서 Create Volume from Snapshot 한다.

8. Volumes 메뉴 - 스냅샷으로 만든 볼륨의 Volume ID를 확인 한다.

9. Instances 메뉴 - Tokyo Region Instance 와 같은 사양의 Instance를 Launch Instance로 생성하고 Instance가 Running 되면 속성 메뉴에서 Stop 한다.

10. Volumes 메뉴 - Instance에 연결(sda1)된 볼륨의 속성 메뉴에서 Detach Volume 하고 Instance에서 볼륨을 때어낸다. Tokyo Region의 스냅샷으로 만든 볼륨을 속성 메뉴에서 Attach Volume 한다. 

팝업창에서 Instance 항목에 해당 Instance를 선택하고, Device 항목에  "/dev/sda1"으로 수정한 다음 Yes, Attach 해서 볼륨을 붙인다.

12. Instance 메뉴 - Stop 되어 있는 Instance를 Start 한다. Instance가 Running 되면 접속해서 확인한다.


이제 AWS Seoul Region이 생겼으니 Seoul Region을 애용해야겠습니다 ~_~

이번 SpringOne2GX 2015에 발표된 내용. 기존 Java코드(Legacy code)를 Java8으로 바꾸는 방법


Transforming Code to Java 8

Recorded at SpringOne2GX 2015. 

Speaker: Dr. Venkat Subramaniam 

The new facilities in Java 8 is about the change the way we write code. Our code will become more expressive and concise. But, exactly how?




이제 슬슬 Java8에 대하여 대응을 해야겠음. 그래서 Java8책을 정독하고 문서도 계속 읽어봐야겠음.


Spring Framework도 Java8을 사용할수 있다고 하니 미리미리 대응을 해야 겠음.

Spring Framework on Java 8


Speakers:Juergen Hoeller 

Core Spring Track

Spring has a track record of providing dedicated support for new Java generations in a timely fashion, and now it’s right about time to go Java 8: With Spring Framework 4.0, we're providing in-depth support for all relevant OpenJDK 8 features, including lambda expressions, JSR-310 Date and Time, parameter name discovery, and java.util.concurrent enhancements. This talk will illustrate basic Spring Framework 4.0 concepts, and selected Java 8 features within Spring's programming model, exploring the impact on application architectures.


슬라이드(Slide)




Facebook에서 돌아다니고 있는 2015년도에 정리한 무료로 읽을 수 있는 기술관련 전자책 링크가 화제입니다.




일본어 포스팅을 쭉 보다 보니, 영어로 된 좋은 전자책들이 무료로 풀린걸 대부분 정리한 것 같군요. 

일본어로 된 블로그 포스팅에 올라온 몇몇 전자책 다운로드 링크를 보고 다운로드 받아서 보고 있는데, 상당히 좋은 영어 원서 책들 링크를 잘 정리한 것 같더군요.

2016년도에는 영어 공부 하면서 기술 공부도 틈틈히 할 계획입니다.


추가로, 필요한 영역에 대한 전자책이 부족하다 생각하면 GitHub의 Awesome List 를 참조하면 됩니다. 

Github의 Awesome List는 다양한 분야에 대하여 정리된 자료들의 모음입니다. Github사이트에서 여러 사람들이 작성된 컨텐츠를 모으고 정리한 걸 공개하는게 유행이더군요.

저는 가끔씩 개발하다 막히는 부분이 있으면 GitHub의 Awesome list를 검색해서 개발 관련 정리된 글목록들을 보고 있습니다.

(대부분이 영어 컨텐츠, 한국어로 된 컨텐츠는 xguru님이 정리한 "대학생을 위한 웹 개발 공부용 체크리스트"목록을 참조하면 되지만 컨텐츠가 부족하다고 느낄수 있을 것입니다.)

jnv/lists  - https://github.com/jnv/lists 

The definitive list of lists (of lists) curated on GitHub

아래는 Github에 올라온 Awesome에 대한 정리를 한 목록입니다.

awesome-* - https://github.com/jnv/lists#awesome-

Xguru님께서 정리한 "대학생을 위한 웹 개발 공부용 체크리스트"

https://github.com/xguru/WebDevTutorial 


아래는 제가 예전에 블로그에 정리한 무료 전자책 링크입니다


+ Recent posts