집에 가는 길에 만난 오리온자리

집에 가는 길에 하늘을 보니 오리온 자리가 눈에 들어오더군요..ㅎㅎ

오리온자리는 늦가을에 나타나기 시작해서 겨울을 지나 초봄까지 볼 수 있는 별자리로, 가운데에 연속적으로 위치한 3개의 별이 있어 비교적 눈에 잘 띄고, 잘 알려진 별자리이기도 합니다.

매년 이 별자리를 보게되면, 벌써 1년이 흘렀구나.. 라는 생각과 함께,, 시간이 참 빠르다는걸 느끼게 됩니다.

이번 한 해도 좋은일이 가득하기를 바라겠습니다.

아래는 사진을 찍었던 시간의 별 지도를 찾아보았습니다. 사진 위쪽이 약간 밝게 나왔는데, 별 지도에서 보시다시피 바로 위에 달이 있었습니다.

워드프레스 모바일 로그인 오류 해결방법

워드프레스 모바일 로그인시에 간혹 아래와 같은 오류를 표출하며 로그인이 불가능할 때가 있다.

워드프레스 (wordpress.com)의 블로그는 서버 설정이 되어있기에 문제가 없는데, 개인서버 (self-hosted website)는 서버 설정에 따라 위의 오류가 발생하는 경우가 종종 있다. 원인이 다양한데, 본 글에서는 PHP 버전에 따른 xml과 xmlrpc 모듈이 설치되지 않아 발생하는 원인에 대한 해결책을 소개한다.

원인 파악

아래는 WordPress for Android에서 출력한 application log 중 일부이다.

01 - WordPress.onCreate
02 - App comes from background
03 - ConnectionChangeReceiver.setEnabled true
04 - Connection status changed, isConnected=true
...
13 - No documented SNI support on Android <4.2, trying with reflection
14 - Established TLSv1.2 connection with www.cheonghyun.com using TLS_RSA_WITH_AES_128_CBC_SHA
15 - No HTTP error document document from the server
16 - system.listMethods failed on: https://www.cheonghyun.com/xmlrpc.php - exception: HTTP status code: 500 was returned. Internal Server Error
17 - StackTrace: org.xmlrpc.android.XMLRPCException: HTTP status code: 500 was returned. Internal Server Error
	at org.xmlrpc.android.XMLRPCClient$Caller.callXMLRPC(XMLRPCClient.java:547)
	at org.xmlrpc.android.XMLRPCClient$Caller.access$000(XMLRPCClient.java:430)
	at org.xmlrpc.android.XMLRPCClient.call(XMLRPCClient.java:231)
	at org.xmlrpc.android.XMLRPCClient.call(XMLRPCClient.java:226)
	at org.xmlrpc.android.XMLRPCUtils.doSystemListMethodsXMLRPC(XMLRPCUtils.java:96)
	at org.xmlrpc.android.XMLRPCUtils.checkXMLRPCEndpointValidity(XMLRPCUtils.java:203)
	at org.xmlrpc.android.XMLRPCUtils.verifyXmlrpcUrl(XMLRPCUtils.java:291)
	at org.xmlrpc.android.XMLRPCUtils.verifyOrDiscoverXmlRpcUrl(XMLRPCUtils.java:250)
	at org.wordpress.android.ui.accounts.helpers.FetchBlogListWPOrg$FetchBlogListTask.doInBackground(FetchBlogListWPOrg.java:55)
	at org.wordpress.android.ui.accounts.helpers.FetchBlogListWPOrg$FetchBlogListTask.doInBackground(FetchBlogListWPOrg.java:35)
	at android.os.AsyncTask$2.call(AsyncTask.java:287)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
	at java.util.concurrent.FutureTask.run(FutureTask.java:137)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
	at java.lang.Thread.run(Thread.java:856)
...
26 - The XML-RPC endpoint was not found by using our 'smart' cleaning approach. Time to start the Endpoint discovery process
27 - The app will call the RSD discovery process on the following URLs: [https://www.cheonghyun.com]
28 - Downloading the HTML content at the following URL: https://www.cheonghyun.com
29 - RSD endpoint found at the following address: https://www.cheonghyun.com/xmlrpc.php?rsd
30 - Downloading the RSD document...
31 - Extracting the XML-RPC Endpoint address from the RSD document
32 - Found the XML-RPC endpoint in the HTML document!!!
33 - Trying system.listMethods on the following URL: https://www.cheonghyun.com/xmlrpc.php
34 - No documented SNI support on Android <4.2, trying with reflection
35 - Established TLSv1.2 connection with www.cheonghyun.com using TLS_RSA_WITH_AES_128_CBC_SHA
36 - No HTTP error document document from the server
37 - system.listMethods failed on: https://www.cheonghyun.com/xmlrpc.php - exception: HTTP status code: 500 was returned. Internal Server Error
38 - StackTrace: org.xmlrpc.android.XMLRPCException: HTTP status code: 500 was returned. Internal Server Error
	at org.xmlrpc.android.XMLRPCClient$Caller.callXMLRPC(XMLRPCClient.java:547)
	at org.xmlrpc.android.XMLRPCClient$Caller.access$000(XMLRPCClient.java:430)
	at org.xmlrpc.android.XMLRPCClient.call(XMLRPCClient.java:231)
	at org.xmlrpc.android.XMLRPCClient.call(XMLRPCClient.java:226)
	at org.xmlrpc.android.XMLRPCUtils.doSystemListMethodsXMLRPC(XMLRPCUtils.java:96)
	at org.xmlrpc.android.XMLRPCUtils.checkXMLRPCEndpointValidity(XMLRPCUtils.java:203)
	at org.xmlrpc.android.XMLRPCUtils.discoverSelfHostedXmlrpcUrl(XMLRPCUtils.java:393)
	at org.xmlrpc.android.XMLRPCUtils.verifyOrDiscoverXmlRpcUrl(XMLRPCUtils.java:257)
	at org.wordpress.android.ui.accounts.helpers.FetchBlogListWPOrg$FetchBlogListTask.doInBackground(FetchBlogListWPOrg.java:55)
	at org.wordpress.android.ui.accounts.helpers.FetchBlogListWPOrg$FetchBlogListTask.doInBackground(FetchBlogListWPOrg.java:35)
	at android.os.AsyncTask$2.call(AsyncTask.java:287)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
	at java.util.concurrent.FutureTask.run(FutureTask.java:137)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
	at java.lang.Thread.run(Thread.java:856)
...

위 로그의 16번째줄, 26번째 줄을 확인해 보면, xmlrpc쪽에서 오류가 발생하는 것을 알 수 있다. 더 자세히 원인을 파악하기 위해, Apache Engine에서 출력한 error.log를 확인해 보았다. error.log는 우분투 기준 /var/log/apache2/error.log에서 확인할 수 있다.

[Sun Oct 16 23:29:00.403764 2016] [:error] [pid 2200] [client CLIENT_IP:PORT] PHP Fatal error:  Call to undefined function xml_parser_create() in /var/www/html_main/wp-includes/class-IXR.php on line 264
[Sun Oct 16 23:29:00.403882 2016] [:error] [pid 2200] [client CLIENT_IP:PORT] PHP Stack trace:
[Sun Oct 16 23:29:00.403896 2016] [:error] [pid 2200] [client CLIENT_IP:PORT] PHP   1. {main}() /var/www/html_main/xmlrpc.php:0
[Sun Oct 16 23:29:00.403913 2016] [:error] [pid 2200] [client CLIENT_IP:PORT] PHP   2. wp_xmlrpc_server->serve_request() /var/www/xmlrpc.php:84
[Sun Oct 16 23:29:00.403922 2016] [:error] [pid 2200] [client CLIENT_IP:PORT] PHP   3. IXR_Server->IXR_Server() /var/www/wp-includes/class-wp-xmlrpc-server.php:197
[Sun Oct 16 23:29:00.403930 2016] [:error] [pid 2200] [client CLIENT_IP:PORT] PHP   4. IXR_Server->__construct() /var/www/wp-includes/class-IXR.php:440
[Sun Oct 16 23:29:00.403938 2016] [:error] [pid 2200] [client CLIENT_IP:PORT] PHP   5. IXR_Server->serve() /var/www/wp-includes/class-IXR.php:432
[Sun Oct 16 23:29:00.403945 2016] [:error] [pid 2200] [client CLIENT_IP:PORT] PHP   6. IXR_Message->parse() /var/www/wp-includes/class-IXR.php:464

error.log 파일의 stack trace 를 보면, xmlrpc.php 에서 내부적으로 호출하는 함수에서 오류가 발생하는 것을 알 수 있다.

해결책

버전에 맞는 xml, xmlpc 모듈 설치

결론부터 말하자면, 필자는 버전에 맞는 php의 xml과 xmlrpc 모듈을 설치하여 해결하였다. 명령어는 아래와 같다.

sudo apt-get install php5.6-xml
sudo apt-get install php5.6-xmlrpc
sudo service apache2 restart

위 해결책은 현재 서버에서 사용하고 있는 php 버전과 .htaccess 설정에 따라 다르다. 이를 확인하기 위해서는, 현재 워드프레스가 설치되어 있는 디렉토리에 아래와 같은 코드를 적은 파일을 php 파일로 저장한 후 웹 서버에서 실행하면 된다.

<?php echo phpversion(); ?>

php 버전에 5.6이라면, 앞서 언급한 명령어를 사용하서 해결해 보길 바란다. (php -v 명령어를 통해서도 php 버전을 확인할 수 있으나, .htaccess 설정에 따라 실제 사용하는 엔진의 버전이 다를 수 있기에, php 파일을 간단하게 생성하여 확인하는 방법이 더 정확할 수 있다.)

xml, xmlrpc 재설치

이 항목부터는 다른 유저들이 해결책으로 제시한 것들을 정리하였다. 한 유저는 xml과 xmlrpc를 재설치하여 해결하였다고 한다 [1, 2]. 현재 php에서 사용중인 모듈을 php -m 명령어를 통해 확인한다.

[PHP Modules]
calendar
Core
ctype
date
...
tokenizer
wddx
xdebug
xml
xmlreader
xmlrpc
xmlwriter
zlib

xml과 xmlrpc 엔진이 목록에 없다면 설치되지 않은 것이니 아래 명령어로 설치한다.

sudo apt-get install php-xml
sudo apt-get install php-xmlrpc

혹시 이미 설치가 되어있는데도 문제가 발생하는 것이라면, 앞서 언급하였듯이 버전에 맞는 모듈을 설치하거나, 아래와 같이 삭제 후 재설치를 권장한다.

sudo apt-get purge php-xml
sudo apt-get purge php-xmlrpc

.htaccess 권한 및 엔진 버전 확인

간혹 .htaccess 에서 xmlrpc.php 파일에 직접 권한을 줘야 하는 경우가 있다 [3]. 본 글하고는 거리가 조금 있는 해결책인데, 해당 원인의 경우는 애초에 403 Forbidden 오류가 발생하였을 것이고, 오류 로그 자체도 다르게 출력되었을 것이다. .htaccess 파일에 아래와 같이 수정해 본다.

<Files xmlrpc.php>
    Order allow,deny
    Allow from all
</Files>

간혹 버전 문제인 경우도 있는데, 해당 폴더에 사용하는 php 버전 수정은 아래 명령어를 .htaccess 에 삽입하면 된다. (php 5.6 기준)

# Use PHP5.6 as default
AddHandler application/x-httpd-php56 .php

References

[1] Alexander, "Fixing Errors «Jetpack: site_inaccessible,» zakharovlx.com, 08-Apr-2016. [Online]. Available: https://zakharovlx.com/category/dev/wordpress/.
[2] http://tecfused.com/, "PHP Fatal error: Uncaught Error: Call to undefined function xml_parser_create()," tecfused.com, 08-Sep-2016. [Online]. Available: http://www.tecfused.com/2016/09/php-fatal-error-uncaught-error-call-undefined-function-xml_parser_create/.
[3] JigmeDatse, "[Resolved] The Jetpack server was unable to communicate with your site [HTTP 500]," WordPress.org, 22-Sep-2016. [Online]. Available: https://wordpress.org/support/topic/the-jetpack-server-was-unable-to-communicate-with-your-site-http-500/.

파이썬 기초 01: 입문

1장에서는 파이썬의 기본적인 특징과 파이썬을 배우는데 필요한 기본적은 내용들을 간단히 다룬다.

학습목표

  • 파이썬의 특징을 알아본다.
  • 파이썬의 기능 및 용도에 대해 알아본다.

파이썬이란?

파이썬은 네덜란드 출신의 개발자인 귀도 반 로섬(Guido van Rossum)에 의해 1989년에 개발을 시작하여, 1991년 2월에 출시한(v0.9.0) 프로그래밍 언어이다 [1].

파이썬의 특징

고수준 언어이다.

파이썬은 자연어에 가까워 인간이 이해하기 쉬운 고수준 언어이다. 저수준 언어는 기계어에 가까워 이해가 쉽지 않고 기계적인 처리와 관련한 개발에 많은 시간 투자를 해야 하는데 반해, 고수준 언어인 파이썬은 다른 부분에 많은 에너지를 들이지 않고 문제를 해결하는 것에 집중할 수 있다.

배우기 쉽다.

누구나 쉽게 프로그램을 작성할 수 있도록 만들어져 있어 프로그램 개발 경험이 없는 초보자들도 비교적 어렵지 않게 익힐 수 있는 스크립트 언어이다.

생산성이 높다.

개발에 필요한 다양한 라이브러리가 존재하고, 원하는 프로그램을 단시간에 빠르게 개발할 수 있다.

재미있다.

귀도는 파이썬을 개발한 목적 중 하나로 사용하기 재밌는 언어를 만들이 위함이라고 하였고, 파이썬이라는 이름도 이러한 배경으로 몬티 파이썬의 날아다니는 서커스(Monty Python’s Flying Circus) 에서 따왔다고 한다 [2].

파이썬의 용도

위의 특징 및 장점을 배경으로 하여, 파이썬은 웹 개발, 과학 및 수학적 목적, 교육 등 다양한 분야에서 널리 쓰이고 있다 [3]. 쓰이는 용도에 대한 예시를 간단하게 나열해 보았다.

프로토타이핑 및 간단한 도구 제작

개인이 간단하게 몇 줄짜리 스크립트를 만들어 사용하기 편리하다. 예를 들어, 웹 주소로부터 html 소스를 받아오는 간단한 툴을 제작한다고 한다면, 다른 언어들은 웹 클라이언트를 직접 제작하거나, 해당 OS에서 제공하는 라이브러리로 직접 구현해야 한다. 이에 반해, 파이썬은 내장되어 있는 라이브러리를 사용하거나 3자에서 개발한 다양한 패키지(라이브러리)를 사용하여 간단한 코드 몇줄을 작성하여 제작할 수 있다. 이러한 편리함은 프로토타입 제작에도 많은 장점으로 작용한다.

웹 개발

파이썬에 내장되어있는 표준 라이브러리는 웹 프레임워크, HTML, JSON 등 다양한 마크업 언어와 HTTP, FTP, IMAP 등 다양한 인터넷 프로토콜을 편리하게 사용할 수 있도록 하여 다양한 웹 개발에 편리하도록 하였다.

공학 및 과학 계산

SciPy는 수학, 과학 및 공학 계산에 필요한 기능들을 모아놓은 패키지이다. 이러한 패키지의 제공으로 복잡한 계산에 용이하도록 하였다.

GUI 개발

파이썬의 표준 패키지로 포함되어 있는 Tk를 활용하여 GUI 개발은 손쉽게 할 수 있다.

다른 언어로의 확장

파이썬은 플랫폼에 구애받지 않고, 확장성이 용이하다. 쉽고 간단한 문법의 장점으로, C언어로의 확장을 위한 Cython, .NET을 기반으로 한 IronPython 등 표준 Python 이외에도 다양한 버전의 인터프리터가 존재하여, 필요한 상황에 맞게 사용할 수 있다.

References

[1] Python Foundation, "Python source distribution."
[2] Python Software Foundation, "General Python FAQ – Why is it called Python?," Python 2.7.12 Documentation, 2016. [Online]. Available: https://docs.python.org/2/faq/general.html#why-is-it-called-python.
[3] Python Software Foundation, "Applications for Python," Python.org, 2016. [Online]. Available: https://www.python.org/about/apps/.

윈도우 업데이트가 현저하게 오래걸리는 문제에 대한 해결책

윈도우 재설치를 해보았다면, 윈도우 업데이트 확인중이라는 문구에서 현저하게 오래걸리는 걸리는 현상을 자주 접할 수 있다. 감사하게도 이를 해결해 주는 hotfix가 있으며, 아래 링크에서 받을 수 있다.

한글:
https://support.microsoft.com/ko-kr/kb/3102810

영문:
https://support.microsoft.com/en-us/kb/3102810

위 기술문서에 의하면, 이는 svchost가 CPU 점유율을 100% 차지하는 문제 (멀티코어의 경우 쓰레드가 사용중인 코어에 대한 100%)도 해결해 준다고 언급되어 있다.

참고

http://superuser.com/questions/951960/windows-7-sp1-windows-update-stuck-checking-for-updates

Bluesoleil 설치 후 발생하는 문제점 정리

컴퓨터(Windows PC) 에서 블루투스 이어폰을 사용할 때 Bluesoleil (블루소레일) 만큼 편리한 소프트웨어를 찾기 어렵다. 여러 장점이 있지만, 윈도우 7에서 설치할 시에 다양한 문제점을 발생시키는데, 해결책을 아래와 같이 정리하였다.

1. 네트워크 연결 아이콘 표시 문제

인터넷은 제대로 작동하는데, 위와 같이 네트워크가 연결되지 않았다고 나타나는 경우가 있다. Bluesoleil이 설치 도중 기존에 설치된 다른 네트워크 드라이버에 영향을 주는 것 같다. Bluesoleil을 설치한 후, 블루투스 네트워크 연결을 제외한 모든 네트워크 드라이버를 완전히 삭제한 후 다시 설치하여 문제를 해결할 수 있다.

2. 부팅 딜레이 현상

Windows 7 x64에서 발생한 문제이다. Bluesoleil을 설치한 후 눈에 띄게 부팅 속도가 늦어졌다면 (특히 윈도우 로그온 화면이 뜨기까지 시간이 현저하게 느려진 경우), Bluesoleil 설치 폴더에서 setup.ini 파일을 수정 후 재설치를 시도해 볼 수 있다.

setup.ini에서 IsSupportBLEFunction의 설정값을 0로 변경 후 재설치 한다.

제작사의 기술문서에 의하면, ISSupportBLEFunction의 BLE는 Bluetooth Low Energy device를 의미하는 것이라고 하며, 포도당, 혈압, 심박수 등을 측정하는 장치에 대한 지원 여부를 설정하는 것이라고 한다. 일반적인 사용자들은 이 기능을 사용하지 않으니, 해제하고 설치하면 되겠다.

참고

http://www.bluesoleil.com/life/208.html

[Software] 다음 꼬마사전 중국어, 일본어 툴팁해석 설정법

다음 꼬마사전 DB파일 사용법입니다.

꼬마사전 설치파일 및 DB파일 다운로드는 아래 URL에서 하시면 됩니다.

https://www.cheonghyun.com/ko/daum-minidic-download-installation-db-file/

다운로드 받은 DicDB.rar 파일을 압축 해제하신 후에, 아래 그림과 같이 Daum 꼬마사전이 설치된 폴더에 db3 파일을 복사, 붙여넣기 합니다. 중국어 사전은 dicCnKo.db3 를, 일본어는 dicJpKo.db3 만을 복사하시면 됩니다.

복사 후 다음 꼬마사전을 재실행 하시면, 아래와 같이 일본어 및 중국어 단어 해석 설정이 가능해집니다.

[Network] netsh 를 이용하여 포트포워딩하기

netsh interface portproxy 명령어로 다른 컴퓨터의 포트를 로컬 컴퓨터의 포트로부터 접속할 수 있게 할 수 있다. 제목에 포트포워딩이라고 했지만, 더 정확한 명칭은 포트프록시 이다. 이 방법은 한 컴퓨터만 외부에서 접속할 수 있는 상황에서, 해당 컴퓨터에서만 접속할 수 있는 컴퓨터의 서비스를 접속 가능한 컴퓨터로 포워딩하기 할 때 유용하다.

netsh interface portproxy add v4tov4 listenport=[로컬 포트] connectport=[연결할 포트] connectaddress=[연결할 주소]

netsh interface portproxy 명령어:

The following commands are available:

Commands in this context:
?              – Displays a list of commands.
add            – Adds a configuration entry to a table.
delete         – Deletes a configuration entry from a table.
dump           – Displays a configuration script.
help           – Displays a list of commands.
reset          – Resets portproxy configuration state.
set            – Sets configuration information.
show           – Displays information.

To view help for a command, type the command, followed by a space, and then
 type ?.

netsh interface portproxy add v4tov4 명령어:

One or more essential parameters were not entered.
Verify the required parameters, and reenter them.
The syntax supplied for this command is not valid. Check help for the correct syntax.

Usage: add v4tov4 [listenport=]<integer>|<servicename>
             [connectaddress=]<IPv4 address>|<hostname>
            [[connectport=]<integer>|<servicename>]
            [[listenaddress=]<IPv4 address>|<hostname>]
            [[protocol=]tcp]

Parameters:

       Tag              Value
       listenport     – IPv4 port on which to listen.
       connectaddress – IPv4 address to which to connect.
       connectport    – IPv4 port to which to connect.
       listenaddress  – IPv4 address on which to listen.
       protocol       – Protocol to use.  Currently only TCP is supported.

Remarks: Adds an entry to listen on for IPv4 and proxy connect to via IPv4.

예시) 192.168.1.150의 웹서버(80번 포트)를 192.168.1.100의 8080번으로 접속할 수 있게 설정

netsh interface portproxy add v4tov4 listenport=8080 connectport=80 connectaddress=192.168.1.150

위와 같이 설정하여 http://192.168.1.100:8080 주소로 http://192.168.1.150을 접속할 수 있다. 또한, netsh interface portproxy show v4tov4로 설정이 잘 되었는지 아래와 같이 확인할 수 있다.

설정은 재부팅 후에도 적용되며, 설정을 삭제할 때는 아래의 명령어를 입력하여 삭제할 수 있다.

netsh interface portproxy delete v4tov4 listenport=8080

[Utility] DirectDraw Compatibility Tool – 고전 게임 색상 문제 해결

스타크래프트와 같은 고전 게임을 Windows 7 이후 버전에서 작동하게 되면, 색깔이 깨지는 문제를 경험하게 된다. 이는 운영체제가 버전업 되면서 호환성에 문제가 발생하는 것인데, DirectDraw Compatibility Tool을 사용하여 색상 문제를 해결할 수 있다.

해결법은 간단하다. DirectDraw_Compatibility_Tool.exe 를 실행한 후, … 를 클릭, 게임 실행 파일을 선택한 후 “Apply”를 클릭하면 된다.

스타크래프트의 경우, 위의 방법은 DirectDraw 호환성 문제 해결을 위해 레지스트리를 추가하는 것이고, 다른 해결책으로는 프로세스 목록에서 explorer.exe 를 강제 종료하면 색상 문제를 일시적으로 해결 할 수 있는 것으로 알려져 있다.

또 다른 방법으로는, Windows 7 호환성 문제가 해결된 ddraw.dll 파일로 교체하는 방법이 있는데, 이는 시스템 dll 파일을 교체하는 것이므로 위험 부담이 있긴 하다. (교체하지 않고 해당 게임만 수정된 dll을 사용하게 하는 방법이 있을 듯 한데, 시간나면 한번 해보고 다시 포스트 하겠습니다.)

※ ddraw.dll 교체하는 방법은 제가 직접 해본 방법이 아니라, 위험 부담이 있을 수 있고, 어떻게 자세히 말씀 드리기는 어렵습니다. 시스템 파일 ddraw.dll의 위치는 C:\Windows\System32 입니다.

DirectDraw Compatibility Tool 다운로드
DirectDraw_Compatibility_Tool_1.01.rar

수정된 ddraw.dll 다운로드
ddhack10.rar

[Utility] 다음 꼬마사전 다운로드 (설치파일 + DB 파일)

다음 꼬마사전 서비스가 종료되면서, 다운로드 페이지가 막혔네요. 유용하게 잘 사용했는데..

서비스를 완전 종료하는것이 아닌 잠시 중단한다고 하는것을 보면, 다시 재개할 가능성도 있는 것 같긴 합니다.

서비스 종료로 인해 크롬 브라우저는 툴팁 해석을 사용할 수 없는 것 같습니다. 확인 결과 크롬 extension 설치파일을 삭제하였더군요. Firefox는 add-on 설치파일(.xpi)이 로컬에 저장 되어 있어서 그대로 설치하여 사용 가능하구요.

서비스는 종료되었어도, 위 그림과 같이 아직 툴팁 사전 및 단어 검색은 잘 작동하기에, 컴퓨터에 저장된 사전 설치파일과 툴팁번역 (영어숙어, 일본어, 중국어 사전)에 필요한 DB파일을 업로드 했습니다. 필요하신 분들은 받아가세요.

다운로드: https://download.cheonghyun.com/daum_minidic/DaumMiniDic.exe
DB파일: https://download.cheonghyun.com/daum_minidic/DicDB.rar

웹호스팅 서버에 올려놨는데.. 요즘들어 업다운속도가 안나오더군요.. 플래시겟 써서 받으시는게 좋을것 같습니다.

추가: URL을 개인 서버로 리디렉션 하는 기능을 추가하여, 속도가 괜찮게 나오실 것이라 예상합니다. 약 1~2MB/s 정도 나오실 겁니다.

추가 (2016/01/04): Service Unavailable 오류가 발생하면 다운로드 사용자가 많아서 그런거니, 추후 다시 접속해 주세요. 트래픽이 많이 걸리면 문제가 발생하여 제한을 걸어두었습니다. 장시간 다운로드가 되지 않으면 댓글 남겨주세요.

[용어] Precision vs Recall (정밀도 vs 재현율)

Precision vs Recall

 

Observation (actual class)

Condition positive

Condition negative

Test outcome positive

TP (True Positive)
Correct hit

FP (False Positive)
False alarm (Type I error)

Test outcome negative

FN (False Negative)
Missing result (Type II error)

TN (True Negative)
Correct rejection

Precision 과 recall [recall ratio]의 사전적인 의미는 정밀도와 재현율 이다. 전산처리된 결과를 실제 대상과 비교하여, 해당 전산 처리 방식이 얼마나 신뢰할 수 있는지를 파악하기 위해 사용한다. 예를 들면, 백신 소프트웨어의 실제 바이러스 잡는 방식을 얼마나 신뢰할 수 있는지를 증명할 때 사용할 수 있다.
Precision과 recall을 이해하기 위해서는, 우선 위의 표를 이해하여야 한다. 위의 표는 전산 처리 결과와 실제 값이 일치하는 지 여부에 따라 분류한 것이다. 위의 백신에 비유하여 다시 나타내자면 아래와 같다.

 

실제 바이러스 여부

바이러스

바이러스 아님

바이러스로 진단

TP (True Positive)
제대로 잡은 바이러스

FP (False Positive)
오진 (바이러스로 잡은 정상 파일)

바이러스로 진단하지 않음

FN (False Negative)
Missing result (Type II error)
미탐 (잡지 못한 바이러스)

TN (True Negative)
Correct rejection
실제 정상 파일

이제, precision 과 recall을 설명하기 위해, 위의 개념을 집합으로 표현하였다.

위의 다이어그램을 기초로 precision 과 recall은 다음과 같다.

결론적으로, precision 을 탐지한 바이러스 중 실제로 바이러스인 개수에 대한 비율이고, recall은 실제 바이러스 중에 백신이 실제로 탐지한 바이러스 개수에 대한 비율이다.

References

[1] jzcafe, “Full of aroma and bouquet..: Precision and Recall (정확도와 재현율),” 15 February 2011. [Online]. Available: http://jzcafe.blogspot.kr/2011/02/precision-and-recall.html.
[2] Wikipedia, “Precision and recall – Wikipedia, the free encyclopedia,” [Online]. Available: http://en.wikipedia.org/wiki/Precision_and_recall. [Accessed 31 January 2015].
[3] Cardia, “Cardia’s Law :: [IR] Precision and Recall,” 03 September 2013. [Online]. Available: http://cardia.tistory.com/59.
[4] 월간전자기술 편집위원회, “정밀도 [precision],” in 전자용어사전, 성안당, 1995.
[5] 전산용어사전 편찬위원회, “재현율 [recall factor, recall ratio],” in 컴퓨터인터넷IT용어대사전, 일진사, 2011.