유니코드에 있어 한글 오토마타는 쉬운편이다.
아무튼 초성/중성/종성 을 수식대로 입력을 하면 딱! 하고 코드값이 나오는 형식이다.
제한적이지만 어느정도 한글창제 원리에 맞추어 "조합형" 식으로 나열을 했기 때문이다.

한글 조합하기
한글글자 = 초성 * 21 * 28 + (중성 - 19) * 28 + (종성 - 40) + BASE_CODE(한글코드 테이블의 첫번째 문자코드)

예) 강 = ㄱ + ㅏ + ㅇ 
         = 0 * 21 * 28 + (19 - 19) * 28 + (61 - 40) + 0xAC00 = 0xAC00(44032) + 21
         = 44053
         = 0xAC15

[링크 : http://codepedia.tistory.com/42]

한글 분해하기
Jong = UniValue % 28;
Jung = ( ( UniValue - Jong ) / 28 ) % 21;
Cho = parseInt (( ( UniValue - Jong ) / 28 ) / 21);

[링크 : http://zextor.tistory.com/2669852]

한글 갯수
초성은 19개
중성은 21개
종성은 28개

정렬 순서
첫소리 ㄱ ㄲ ㄴ ㄷ ㄸ ㄹ ㅁ ㅂ ㅃ ㅅ ㅆ ㅇ ㅈ ㅉ ㅊ ㅋ ㅌ ㅍ ㅎ
가운뎃소리 ㅏ ㅐ ㅑ ㅒ ㅓ ㅔ ㅕ ㅖ ㅗ ㅘ ㅙ ㅚ ㅛ ㅜ ㅝ ㅞ ㅟ ㅠ ㅡ ㅢ ㅣ
끝소리 ( ) ㄱ ㄲ ㄳ ㄴ ㄵ ㄶ ㄷ ㄹ ㄺ ㄻ ㄼ ㄽ ㄾ ㄿ ㅀ ㅁ ㅂ ㅄ ㅅ ㅆ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ

[링크 : http://kudak.egloos.com/740202]
[링크 : http://www.w3c.or.kr/i18n/hangul-i18n/ko-code.html]
[링크 : http://ko.wikipedia.org/wiki/한글]

초성

r

R

s

e

E

f

a

q

Q

t

T

d

w

W

c

z

x

v

g

중성

k

o

I

O

j

p

u

P

h

hk

ho

hl

y

n

nj

np

nl

b

m

ml

l

종성

r

R

rt

s

sw

sg

e

f

fr

fa

fq

ft

fx

fv

fg

a

q

qt

t

T

d

w

c

z

x

v

g


---
2014.03.26  추가

[링크 : http://blog.naver.com/netcrazy0/110066486580] 코드
[링크 : http://www.typographyseoul.com/181344]
Posted by 구차니
회사에서 이야기 하는 BOM과는 다르다!(Bill of Material)
아무튼 이 BOM이라는 녀석은
일종의 헤더로서

텍스트 파일의 인코딩을 알려주는 역활을 한다.
예를 들어 UTF-8, ANSI 이런 구분을 하는 것도 이 BOM이 존재하기 때문에 가능한 것이다.


Bytes Encoding Form
00 00 FE FF UTF-32, big-endian
FF FE 00 00 UTF-32, little-endian
FE FF UTF-16, big-endian
FF FE UTF-16, little-endian
EF BB BF UTF-8
[링크 : http://www.unicode.org/faq/utf_bom.html]

[링크 : http://mwultong.blogspot.com/2006/05/qna-unicode-bom-byte-order-mark.html]
[링크 : http://devhome.tistory.com/11]
[링크 : http://en.wikipedia.org/wiki/Byte_order_mark]
Posted by 구차니
회사일2010. 3. 4. 17:28
은행 인증서
C:\Program Files\NPKI

사회보험EDI 인증서(c:\ktedi 에는 없음)
C:\windows\pkiclient\cn=id(6xxxxxxx)

[링크 : http://blog.naver.com/search9/60098723745]

'회사일' 카테고리의 다른 글

oscam - open source CAM  (4) 2010.04.06
VLC 1.0.5 반전!  (2) 2010.03.11
H.26x MPEG2, MPEG4  (6) 2010.01.19
ERP, SCM, CRM, EIS, MIS, DSS  (0) 2009.12.17
MP@ML MP@HL  (0) 2009.09.29
Posted by 구차니
컴파일 속도를 올리는 법을 찾다보니
distcc라는 녀석이 나온다.
원래 samba에서 관리하던 녀석인가?

60-second instructions:

  1. For each machine, download distcc unpack, and do
    ./configure && make && sudo make install
  2. On each of the servers, run distccd --daemon, with --allow options to restrict access.
  3. Put the names of the servers in your environment:
    export DISTCC_HOSTS='localhost red green blue'
  4. Build!
    cd ~/work/myproject; make -j8 CC=distcc

아무튼 CC를 distcc 로 해서 사용하고
distcc / distccd 조합으로 네트워크를 통해서 병행처리 하는 것으로 보인다.

[링크 : http://mechta.kr/51]
[링크 : http://distcc.samba.org/]
[링크 : http://distcc.org -> http://code.google.com/p/distcc/]



2010.07.08 추가

심볼릭 링크를 변경함으로서 distcc를 cross-compile에도 사용가능 하도록 해준다.
(해보진 않았으나 이런 문서만 발견 -0-)
[링크 : http://www.gentoo.org/doc/en/cross-compiling-distcc.xml]


+
2014.09.30 추가
[링크 : http://whatwant.tistory.com/423

'프로그램 사용 > distcc & ccache' 카테고리의 다른 글

distcc 크로스 컴파일/커널 빌드 관련  (0) 2016.09.13
distcc 로 valgrind-3.6.1 컴파일 실패?  (0) 2014.12.12
distcc 작동모드  (0) 2014.12.09
ccache & distcc  (0) 2014.12.08
distcc on ubuntu  (0) 2014.12.08
Posted by 구차니
Linux/Ubuntu2010. 3. 4. 11:32
Debian 계열은 rpm 대신 deb 을 이용하고 이것을
지능적으로 관리하는게 apt 매니저이다. rpm은 yum이 해주지만 아무튼
상대적으로 apt에 비하면 많이 부족한 느낌이 든다.

아무튼, 간단하게 요약을 하자면
# sudo apt-get update                   로 repository 정보를 갱신하고(서버에서 새로운 버전정보들을 가져온다.)
# sudo apt-cache search 키워드  로 원하는 패키지가 있는지 검색을 한다.
# sudo apt-cache show 패키지     로 패키지의 내용을 확인하고
# sudo apt-get install 패키지         로 패키지를 설치한다.

그리고 패치등으로 인해 업데이트(일반용어로 사용)를 해야할 프로그램이 있다면
#sudo apt-get upgrade              로 패치된 프로그램을 설치/적용한다.

[링크 : https://help.ubuntu.com/6.10/ubuntu/serverguide/ko/apt-get.html]
2009/09/01 - [Linux/Ubuntu] - apt-cache 패키지 검색 하기

Posted by 구차니
프로그램 사용/gcc2010. 3. 4. 11:23

학교에서 컴파일러 배운지도 오래되서 기억도 가물가물하는데,
아무튼 컴파일이라는 과정은 생각보다 여러단계를 거친다.

1단계는 #define 이나 #include 등의 매크로프로세서를 처리하는 과정
2단계는 매크로 처리된 C언어를 컴파일하는 과정(문법 확인)
3단계를 컴파일 된 결과물인 어셈블리 코드를 오브젝트로 변환하는 과정
4단계는 오브젝트들을 서로 묶어주는 과정
5단계는 이런 묶인 녀석들을 메모리에서 돌아가도록 하는 로더라는 녀석을 붙이는 과정을 거친다.

이렇게 단계가 나누어져 있다 보니,
gcc에서는 단계별 결과를 추출해 낼수 있다.

예를들어, 매크로가 복잡해서 소스 추적이 힘들경우
매크로 프로세서를 거친 결과만을 뽑아내고 싶다고 한다면
gcc -E 옵션을 사용하면 매크로가 제외된(처리된) 결과가 stdout으로 나온다.
gcc -E 소스파일 > 저장할 파일
이런식으로 한단계만 거쳐 디버깅에 사용할 수도 있다.

추가적으로, Makefile 에서
CPP 는 C++이 아니라 C PreProcessor = 매크로 프로세서 이고
CC 는 C Compiler
AS 는 Assembler
LD 는 Loader (링커) 를 의미한다.

2010/03/02 - [프로그램 사용/gcc] - gcc의 linker 옵션
2010/01/27 - [프로그램 사용/gcc] - gcc 매크로만 확장하기 (preprocessor/전처리기)
Posted by 구차니
Linux2010. 3. 4. 10:54
로그인 쉘을 위해 실행되는
시스템 전역 초기화 파일인 /etc/profile을 수정하면 모든 사용자에게 적용이 될것으로 예상된다.

debian 도움말에는
/etc/bash.bashrc가 존재하고 이녀석은 login shell
/etc/profile은 interactive shell에 적용된다고 되어있다.

그런데 login shell과 per-interative-shell의 차이가 멀까?

$ man bash
OPTIONS
       In  addition to the single-character shell options documented in the description of the set builtin command, bash
       interprets the following options when it is invoked:

       -c string If the -c option is present, then commands are read from string.  If  there  are  arguments  after  the
                 string, they are assigned to the positional parameters, starting with $0.
       -i        If the -i option is present, the shell is interactive.
       -l        Make bash act as if it had been invoked as a login shell (see INVOCATION below).


INVOCATION
       A login shell is one whose first character of argument zero is a -, or one started with the --login option.

       An interactive shell is one started without non-option arguments and without the -c option whose  standard  input
       and  error  are both connected to terminals (as determined by isatty(3)), or one started with the -i option.  PS1
       is set and $- includes i if bash is interactive, allowing a shell script or a startup file to test this state.


FILES
       /bin/bash
              The bash executable
       /etc/profile
              The systemwide initialization file, executed for login shells
       ~/.bash_profile
              The personal initialization file, executed for login shells
       ~/.bashrc
              The individual per-interactive-shell startup file
       ~/.bash_logout
              The individual login shell cleanup file, executed when a login shell exits
       ~/.inputrc
              Individual readline initialization file

[링크 : http://linux.die.net/man/1/bash]
[링크 : http://www.lq.org/questions/linux-general-1/difference-between-normal-shell-and-login-shell-14983/]

FC6에서 내용확인
$ cat /etc/bashrc
 # /etc/bashrc

 # System wide functions and aliases
 # Environment stuff goes in /etc/profile

 # By default, we want this to get set.
 # Even for non-interactive, non-login shells.

$ cat /etc/profile
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

아무튼, interactive shell은 stdin와 stderr(잉? 왜 stdout이 아니지?)이 둘다 연결된 셸로
우리가 일반적으로 사용하는 녀석으로 생각된다.
결론은 login shell보다는 interactive shell용 환경변수 파일에 alias 등을 지정하는게 좋을듯 하다.
Posted by 구차니
이번에 컴퓨터 박살나서 새로 구매했다가 설정한다고 똥줄좀 탔는데.
아무튼, 센트리노 1.7GHz 노트북에서 하다가, 듀얼 코어로 넘어왔는데.
우리 개발하는건 규모가 작은 편이라 티가 별로 안난다.

1분 컴파일 하던게 40초로 줄어봤자... 티가 나야 말이지 ㄱ-

아무튼!
커널 컴파일 하신다고 소장님 전에 알려드린 make -j 옵션을 확인하시고
make clean
make
실행!


예전 같으면 한 30분 걸리던 녀석..
3분만에 끝났나? ㄱ-



소장님 : "헉? 벌써 끝난거야? 이상한데.. 아닌거 같은데 먼가 찜찜해"
구차니 : 저도 그렇게 생각합니다만.. 빠른게 좋은거죠 ^^;



사족 : 한페이지 넘는 cc 들에 입이 쩍!
        (cc는 c compiler로 make 시에 컴파일을 위해 호출된다. 다르게 말하자면 동시에 20~30개가 넘는 녀석이 컴파일 중)
        bogomips 로만은 1200(1.7Ghz) 5400x2(E5400) 일단 기본 스펙만으로는 9배 차이난다.

'개소리 왈왈 > 직딩의 비애' 카테고리의 다른 글

직업병 - 안구인식  (0) 2010.03.17
오늘 일이 안되는건  (2) 2010.03.10
일하기 싫어서 미친짓!  (0) 2010.02.24
회사에 나갔다.  (8) 2010.02.21
아프다고 쉬어놓고 왜 일을 안해?!  (6) 2010.02.19
Posted by 구차니
기자야.. 제발 이미지 정도는 넣어주는 센스.. 안되겠니?

딱보니
Linux + KDE + Firefox + OpenOffice 조합인데
한글화가 잘되어 있고, 기본 로케일은 ko로 되어있는듯 하다.
(메뉴가 구버전의 Gnome 같았는데, KDE 제어판을 띄우는것 봐서는 Gnome 보다는 KDE로 생각된다.)

URL에 ko로 되어있다.
그리고 하단에 외형은 KDE 기반인것으로 생각이 된다.
특이한건 "주체" 라는 년단위. 역시 북한?!

아무리 봐도.. OpenOffice다. 몇가지 아이콘은 바뀌었지만, 글씨색 아이콘이 너무 닮았다.


근데.. 기자야.. 너무 하잖냐~
예전부터 리눅스가 windows 와 최대한 닮아가고 있다고 리눅스 사용자들이
침이 닳도록 이야기 했는데 콧방귀도 안뀌더니
"북한"에서 만든 사용환경은 윈도와 매우 유사하다니.. 에효..

[링크 : http://media.daum.net/digital/view.html?cateid=1048&newsid=20100303140424156&p=ned]
[링크 : http://ashen-rus.livejournal.com/4300.html]


사족 : windows 는 Microsoft 사의 Trademark 이고
         window는 아닌걸로 아는데.. 리플을 보고 있으니 답답.. 에효~
         (찾아보니 국내에서 window는 양지사에 상표로 등록되어 있다고 한다.)
Posted by 구차니
부제 : /sbin/ldconfig 와 /etc/ld.so.conf 그리고 LD_LIBRARY_PATH

python을 하는데 so 파일을 쓰도록 했음에도 불구하고
제대로 설치되지 않는 문제가 있었다.
일단 실행을 하려니 libpython2.6.so 을 찾을수 없다는 건데

./configure --enable-shared
make
make install
로 했음에도 불구하고 안된다.

# vi Makefile
 745 # Install everything
 746 install:         altinstall bininstall maninstall
 747
 748 # Install almost everything without disturbing previous versions
 749 altinstall:      altbininstall libinstall inclinstall libainstall \
 750                 sharedinstall oldsharedinstall

위에 내용으로 봐서는, make install 하면은 알아서 sharedinstall 까지 하므로 이상은 없다.

하지만
/sbin/ldconfig -p | grep python
으로 하면
구버전인 2.4만 나온다.

# /sbin/ldconfig -p | grep python
        libpython2.4.so.1.0 (libc6) => /usr/lib/libpython2.4.so.1.0
        libpython2.4.so (libc6) => /usr/lib/libpython2.4.so
        libboost_python.so.2 (libc6) => /usr/lib/libboost_python.so.2
        libboost_python.so (libc6) => /usr/lib/libboost_python.so

파일을 검색해보니
# find /usr -name "libpython*"
/usr/lib/libpython2.4.so
/usr/lib/python2.4/config/libpython2.4.a
/usr/lib/libpython2.4.so.1.0
/usr/lib/gnome-vfs-2.0/modules/libpythonmethod.so
/usr/local/lib/python2.6/config/libpython2.6.a
/usr/local/lib/libpython2.6.so.1.0
/usr/local/lib/libpython2.6.a
/usr/local/lib/libpython2.6.so

/usr/lib에 복사하지 않고
/usr/local/lib 에 복사가 된다.

그런 이유로, 강제로 /usr/local/lib를 참조하도록 해주어야 하는데
LD_LIBRARY_PATH 를 해주어도 반응이 없었다.(뭥미?!)

/etc/ld.so.config 파일을 열어보면(FC6 기준)
# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
이런 내용 뿐인데

마지막 줄에
/usr/local/lib/
를 추가해준다.

그리고
/sbin/ldconfig 를 해주고 나서, 다시
/sbin/ldconfig  -p | grep python
를 해주면

# /sbin/ldconfig -p | grep python
        libpython2.6.so.1.0 (libc6) => /usr/local/lib/libpython2.6.so.1.0
        libpython2.6.so (libc6) => /usr/local/lib/libpython2.6.so
        libpython2.4.so.1.0 (libc6) => /usr/lib/libpython2.4.so.1.0
        libpython2.4.so (libc6) => /usr/lib/libpython2.4.so
        libboost_python.so.2 (libc6) => /usr/lib/libboost_python.so.2
        libboost_python.so (libc6) => /usr/lib/libboost_python.so

추가가 된다.
그럼 all right~!


[링크 : http://linux.die.net/man/8/ldconfig]
[링크 : http://seungyeop.kr/blog/textyle/809]
Posted by 구차니