Serach

2013년 11월 11일 월요일

C++ [Windows] 실행 파일이 위치한 경로.. 얻는 방법..

가장 쉽게 이용하는 방법은
GetCurrentDirectory 함수를 사용하면 된다.
하지만 GetCurrentDirectory 의 경우
윈도우 서비스로 어플리케이션을 실행시...
C:\windows\system32\
폴더로 지정되게 된다..

다소 귀찮더라도
아래 코드처럼 하면 어디서 실행되더라도 모듈이 위치한 경로를 정확하게 
얻을 수 있다..

HMODULE hModule = GetModuleHandleW(NULL);
WCHAR path[MAX_PATH];
GetModuleFileNameW(hModule, path, MAX_PATH);
PathRemoveFileSpec(dest);

2013년 11월 8일 금요일

포트를 열고 있는 프로그램 찾기




Linux


$ lsof -i TCP:<portNumber>
netstat의 -p 옵션을 사용해도 되지만 -p 옵션을 지원하지 않는 경우도 많다








Windows


windows XP 이상에서 특정 포트 사용 프로세스 확인
 
사용 포트 PID 확인
C:\>netstat -ano | find "1234"

 TCP 0.0.0:1234 0.0.0.0:0 LISTENING 567
 
PID 프로세스명 확인
C:\>tasklist /FI "PID eq 567"
이미지 이름 PID 세션 이름 세션# 메모리 사용
process.exe 567 Console  0 4,700 K


2013년 11월 4일 월요일

Unicode ,UTF, Encoding의 개념

유니코드란

요약하면 컴퓨터에서 세계 각국의 언어를 통일된 방법으로 표현할 수 있게 제안된 국제적인 문자 코드 규약이다.


흔히 유니코드를 UTF-16LE로 착각하는데


유니코드는 컴퓨터에서 사용할 수 있게 표현된 것이 아니라 보다 추상적인 개념이다.


실제 이 유니코드를 컴퓨터에 사용하기 위해 변환 하는 것을 엔코딩(encoding)이라고 하며


이때 사용하는것이 우리가 흔히 말하는 UTF(Unicode Transformation Format)이다.


UTF는 8, 16, 32등 다양한 포멧이 존재하며 이 숫자는 각 포멧 내에서 


문자열을 표현하는 비트를 나타낸다.





하나씩 자세히 살펴보면



UTF-8

UTF-8은 하나의 문자를  위해 1, 2, 3, 4바이트로 인코딩을 수행하는 가변 길이 문자 인코딩 방식이다.

ASCII 문자(첫128문자)들은 1바이트만으로 표시된다. 

다음 1920문자(발음 구별 기호가 붙은 라틴,그리스,키릴,콥트 등의 문자 등)는 2바이트

나머지  문자들 중 BMP(Basic multilingual plane)안에 있는것은 3바이트, 아닌것은 4바이트로 표현된다.

4바이트로 표현되는 문자는 모두 기본 다국어 평면(BMP) 바깥의 유니코드 문자이며, 거의 사용되지 않는다. 

UTF 8과16중 어느 인코딩이 더 적은 바이트를 사용하는지는 문자열에서 사용된 코드 포인트에 따라 달라진다.

이러한 방법은 영어에 있어 최상의 방법이다. 

UTF-8은 매우 일반적인 인코딩 방식이지만 BMP를 벗어나는 문자를 많이 사용할 경우 비효율적이다.




UTF-16

기본 다국어 평면 (Basic multilingual plane)에 속하는 문자들은 그대로 16비트 값으로 인코딩이 되고,

그 이상의 문자는 특별히 정해진 방식으로 32비트로 인코딩이된다.

ISO 표준은 UCS-2 인코딩도 정의하며 여기선 BMP의 16비트 표현만을 다룬다. 

기본 다국어 평면의 문자들은 곧바로 16비트 값으로 대응되어 인코딩되며, 

이 경우에는 인코딩된 바이트 스트링의 엔디언만 주의하면 된다.

UTF-16LE, BE는 각각 Little-endian, Big-endian을 나타낸다.

전세계의 대부분의 언어가 16비트로 표현이 가능하기 때문에 윈도우는 UTF-16LE을 사용한다.

또한 이러한 장점으로 인해 프로그램 내에서 사용하는 문자열을 보다 쉽게 다른 언어로 변경할 수 있다.

UTF-16은 공간 절약과 코딩의 편의성 사이의 적절한 절충안이라 할 수 있다. 





UTF-32

UTF-32는 모든 문자를 4바이트로 인코딩한다. 

이러한 인코딩 방식은 문자변환 알고리즘을 간단히 구성하려 할 때나 

가변 길이의 인코딩 방식을 사용하고 싶지 않은 경우에 유용하다. 

예를 들어 UTF-32를 사용하면 모든 문자가 4바이트이므로 다른 대안에 대해 고려할 필요가 없다. 

UTF-32는 메모리 사용에 있어 매우 비효율적인 인코딩 방식이기 때문에 

파일 저장 방식이나 네트워크를 통한 전송 방식으로는 거의 사용되지 않는다.

이러한 인코딩 방식은 프로그램 내부에서만 사용되는 것이 일반적이다.




[출처] UTF-8, UTF-16, UTF-32 문자 인코딩|작성자 욱쓰

2013년 11월 1일 금요일

Gerrit 세팅

설치

게릿을 사용하기 위해서는 jdk의 설치가 필요합니다.
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

다음은 DBMS가 필요합니다. H2, MySQL, PostgreSQL를 지원합니다. 

데이터 베이스 세팅은

PostgreSQL
createuser --username=postgres -RDIElPS gerrit2
createdb --username=postgres -E UTF-8 -O gerrit2 reviewdb
mysql
CREATE USER 'gerrit2'@'localhost' IDENTIFIED BY 'secret';
CREATE DATABASE reviewdb;
ALTER DATABASE reviewdb charset=latin1;
GRANT ALL ON reviewdb.* TO 'gerrit2'@'localhost';
FLUSH PRIVILEGES;

참고로 gerrit2 라고 되있는건. 게릿 2.0 버전 이상이 등장하면서
통상적으로 gerrit2 라고 부릅니다.


아래 링크에서  Gerrit을 다운받습니다.
http://gerrit-releases.storage.googleapis.com/index.html


Gerrit을 설치합니다.
java -jar gerrit.war init -d 설치경로

잘 설치되면 아래 같은 메시지가 나타납니다.
Initialized /home/gerrit

실행을 시켜봅니다.
/home/gerrit/bin/gerrit.sh start

설정 파일은 gerrit/etc/gerrit.config 에 설정있습니다.

다시 게릿을 종료하고

http 인증 방식을 설정합니다..

gerrit/etc/gerrit.config에

[gerrit]
    canonicalWebUrl = http://127.0.0.1:8081/
[auth]
    type = HTTP
[httpd]
    listenUrl = proxy-http://127.0.0.1:8081

위처럼 선그어진 설정을 제거합니다. 그리고 내용을 변경합니다.

다음으로는 http인증에 사용할 아이디,비밀번호를 관리하는 파일을 만듭니다.

# htpasswd -c [FileName] [ID]

이제 마지막으로 아파치에 다음 설정을 추가합니다

Listen 8080
NameVirtualHost *:8080

<VirtualHost *:8080>
        ServerName localhost

        ProxyRequests Off
        ProxyVia Off
        ProxyPreserveHost On

        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>

        <Location />
                AuthType Basic
                AuthName "Gerrit Code Review"
                require valid-user
                AuthUserFile <firlePath>
        </Location>

        ProxyPass / http://127.0.0.1:8081/
</VirtualHost>


아파치와 게릿을 다시 시작합니다 !

끝 !