오래된 노트북에 리눅스 설치..

몇달전 도메인을 구입해놓고 텅텅 놀리고 있는지라, 타개할만한 그 무언가가 필요했다..

그러다 집에 처박혀 나뒹굴고 있는 센스 630을 발견..

일단 부팅을 해보았다..

오오.. 부팅이 된다!!

꽤나 오랫동안 써왔을터이지만.., 정말 이상하게 무언가 적응안되는 Windows 98 화면..

사양을 볼까..

 

CPU : Celeron 400MHz

GPU : OnBoard 4MB

RAM : 64MB(-GPU 4MB)

HDD : 5GB

CDROM : x

 

USB를 꽂아봤는데, 인식조차 안되는……….

바이오스는 아예 USB가 뭔지도 모르는 눈치였고..

뭐 일단 구형 노트북이라 할지라도, 개인용 홈페이지 서버로는 안성맞춤 아닌가!

 

그런데 설치하려고 보니 넘어야 할 산이 몇개 있었다..

일단 내 데탑엔 CDRW는 고사하고 FDD나 ODD는 전혀 없다는것..

그리고 윈98용 USB스틱 드라이버는 멸종되었다는것..

SanDisk에서 공급하는게 있긴 했으나, 구형모델에만 적용이 되는지 내껀 안되더라..

그리고.. PCMCIA 10Base NIC 드라이버가 윈98용까지밖에 지원이 안된다는것..

어찌되었건, 내 경우는, Win2k부터 설치하기로 했다..

사실 윈98에서 바로 USB 인식이 가능하면 Win2k는 뛰어넘는것이 더 좋것다..

네트워크로 윈2000 ISO 이미지를 풀어서 FTP를 이용해 옮겼당..

여기서 사용한 어플리케이션은 Quick’n Easy FTP Server(http://www.pablosoftwaresolutions.com/html/quick__n_easy_ftp_server.html)

내 데스크탑은 윈7이고, 웬지 뭔가 깔고싶진 않아서 포터블 프로그램을 찾다보니 저게 있더라..

파일질라서버 기반의 오픈소스 블라블라..

어쨌거나 잠깐 FTP 서버 열긴 좋더라..

그렇게 Win2k 설치가 끝나고..

오.. 드디어 USB가 잡힌다.. 훗..

 

NT기반 윈도우가 나오니 저절로 한숨이 쉬어진다.. 머.. 그만큼 익숙하다는 얘기겠지..

이제 우분투를 어떻게 설치하는가가.. 관건인데..

일단 설치용 EXE 파일은 없다..

검색을 해봤더니 Wubi에 관한 이야기만 잔뜩 나오더라..

역시 한국사람들은 컴터가 오래되면 걍 버리나 보다.. –_;

어쨌거나 난 이 SENS 630을 어떻게든 이용해 먹어야 겠다는 생각이 들어서..

고급검색 스킬까지 동원하여 결국엔 찾아냈다..

사실 XNOTE 사용자 까페에서 처음 봤지만 글이 비공개더라..

어쨌건 힌트는 얻었으니 찾아보았당..

GRUB에서는 아무래도 바이오스가 USB를 인식해줘야 로딩이 가능하더라..

그래서 다른 어플리케이션을 찾아 삼만리..

결국 찾아냈다.. PLoP Boot Loader(http://www.plop.at/en/bootmanager.html#wininst)

그냥 루트로 파일 3개 뽑고 plpgenbtldr 실행하면 plpbtldr.bin 파일이 생긴다..

자.. 이걸 또 어떻게 해야하나??

boot.ini 파일에서 마지막줄에 추가한다..

C:\plpbtldr.bin = PLoP Boot Loader

재부팅하니 부트로더가 생겼다..

USB부팅이 된다 이제..

남은건 USB에서 부팅하는 부팅USB를 만드는것..

ㅋ 이건 쉽지..

예전에 설치한적이 있었다.. pendrive라는 어플이 있다.. NSIS 스크립트로 만들어진 포터블 리눅스 설치기(http://www.pendrivelinux.com/put-ubuntu-10-04-on-flash-drive-using-windows/)

자.. 이제 설치하면 된다..

구형이다보니 설치에 3시간 이상이 걸리는듯..

근데 개인 홈페이지 구동엔 그다지 큰 불편은 없는듯하다..

 

아마 저건 겜기로도 쓰기 힘들거야..

침대밑에 들어가서 내 개인 홈페이지 서버나 되어라..

Linux에 게시됨. 2개의 댓글 »

나만의 Windows XP 무인설치 CD만들기

최종수정일 : 2004년 7월 28일

글쓴이 : http://icc.skku.ac.kr 재진( SEC TN #45)

E-mail : blue2face@naver.com

Windows 2000의 나만의 부팅CD 강좌(Windows 2000 Tech&Tip 참조)를 만든 후에 XP도 질문하시는 분들이 많아서 이렇게 만들어 보았습니다. 강좌 대상은 초급자를 대상으로 하였습니다.

그림을 보면서 그대로 따라하면 큰 문제 없이 만들 수 있습니다.

자! 이제 시작합니다.


무인설치란 무엇인가?

- 윈도우를 설치하다보면 컴퓨터 앞에 앉아서 설치가 끝날 때까지 기다려야 했습니다. 그러나 무인설치를 이용 하게 되면 우리가 미리 만들어 놓은 대본대로 컴퓨터가 설치하기 때문에…

CD 넣고 파티션만 설정해주는 작업만 해주면 컴퓨터가 알아서 윈도우 설치를 끝내기 때문에 정말 편하겠죠???

그리고 무인설치를 하면 포맷과정이 없다고 호소하시는 분들이 가끔 있는데…

포맷과정이 없는게 아니라 있습니다. 윈도우 새로 설치하려면 기존에 설치되어 있는 윈도우를 지워야 하는 것은 당연한건데… 지우지 않고 그냥 파티션만 선택만 해주면 포맷하는 줄 알고 넘어가다가 윈도우가 2개가 되는 황당한 경우를 겪게 됩니다. 파티션과 포맷에 대한 확실한 지식이 없으신 분들이 자주 겪는 현상입니다. CD넣으면 파티션 선택화면에서 기존의 윈도우가 설치되어 있는 파티션만 지울 수 있도록 아래 메뉴가 있습니다. 그 해당 파티션을 지워야먄 포맷 메뉴가 나오는거죠… 나중에 포맷과정이 없다고 이메일 보내시지 마세요… 절대 답변 안합니다.

제가 이미 테스트를 마친 것이고… 모든 과정이 확인 되었습니다.

본 강좌대로 따라하시면아무 문제 없으니 잘 보고 따라하세요^^

본 강좌가 안된다느니 이게 뭐냐 이런 말들은 본인이 잘 해보시고 정 안될 때 말씀해

주세요…그리고 본 강좌는 여러번 테스트를 거쳤으니 잘만 따라하시면 아무 문제 없습니다. 잘 해보지도 않고 본인의 실수를 제 탓으로 돌리지 말아주셨으면 합니다.

많이 요청하시는 분들 때문에 다시 올립니다.

####################################################################

1. C:\WXP\SUPPORT\TOOLS 폴더를 여시기 바랍니다. 아래와 같은 창이 뜨겠죠?

여기서 DEPLOY.CAB 이라는 파일을 작업하기 좋은 곳으로 복사 합니다. 꼭 복사 하세요

바탕화면에서 작업합니다.

clip_image001

2. DEPLOY.CAB 압축을 풀면다음과 같은 파일이 나타납니다. 여기서 setupmgr.exe 파일을

실행 합니다. 이 파일이 바로 무인설치 응답파일을 만들어주는 프로그램입니다.

clip_image002

3. 설치관리자 마법사 시작… 다음 누르세요!

clip_image003

4. 새 응답 파일 만들기 선택 하고 다음 을 누릅니다.

clip_image004

5. Windows 무인 설치 선택 하고 다음 을 누릅니다.

clip_image005

6. 자신이 보유한 CD종류에 따라 선택합니다. 저는 Windows XP Porfessional을 사용중입니다.

Windows XP Porfessional을 선택했습니다. 다음 을 누르세요…

clip_image006

7. 무인 설치를 할 것이기 때문에 "전체 자동화"를 선택하고 다음 을 누릅니다.

clip_image007

8. 무인설치 응답파일을 CD에서 사용할 것이기 때문에 아래와 같이 선택 하고 다음 을 누릅니다.

clip_image008

9. 이제 본격적으로 무인 응답파일을 만듭니다. 아래와 "동의함 "을 체크하고 다음을 누릅니다.

clip_image009

10. 본인의 이름과 조직을 입력하세요… 다음을 누르세요

clip_image010

11. 디스플레이 설정을 완벽히 안다면 모를까.. 그 외에는 절대 손대지 말고 다음을 누르세요.

나중에 설정이 안 맞아서 설치가 취소되는 황당한 경우가 발생합니다.

그냥 기본값 으로 놔두고 다음 을 누르세요.

clip_image011

12. (GMT+09:00) 서울 선택 다음 을 누르세요

clip_image012

13. 라이센스 키 미리 입력합니다.

Windows 2000에서는 CD키를 생략할 수 있었지만 XP에서는 생략할 수 없습니다.

보유하신 라이센스 키를 입력하세요…

clip_image013

14. 아래와 같이 저처럼 컴퓨터 이름에 영문으로 원하시는 이름 써 넣고 추가 를 누르세요.

그리고 나서 다음 을 누르세요.

clip_image014

15. 계정 비번넣으시려면 넣으시고 안하고 싶으시면 안해도 됩니다. 저는 계정비번 넣었습니다.

비번 넣으시려면 비번만 넣으시고 그 아래는 손대지 마세요. 다음을 누릅니다.

clip_image015

16. 고급 사용자 아니라면 일반설정 을 누르고 다음 을 누릅니다.

clip_image016

17. 일반 개인 사용자는 그냥 다음 을 누릅니다.

clip_image017

18. 그냥 다음 을 누릅니다.

clip_image018

19 .그냥 다음 을 누릅니다.

clip_image019

20. 그냥 다음 을 누릅니다.

clip_image020

21. 그냥 다음 을 누릅니다.

clip_image021

22. 그냥 다음 을 누릅니다.

clip_image022

23. 그냥다음 을 누릅니다.

clip_image023

24. 그냥 다음 을 누릅니다.

clip_image024

25. 마침 을 누릅니다.

clip_image025

26. 마침을 누르면 다음과 같은 화면이 뜨게 됩니다.

그냥 확인 을 누릅니다.이제 무인응답 파일이 다 만들어졌습니다.

clip_image026

27. 이제 무인응답 파일의 완료화면입니다.

clip_image027

28. 이제 바탕화면에서 압축을 풀고 작업을 했던 DEPLOY 폴더를 보면 다음 두 개의 파일

생겼음을 알 수 있습니다. unattend.bat unattend.txt 이 보이시죠???

여기서 우리가 손을 좀 봐야할 파일이 unattend.txt 파일입니다.

clip_image028

29. unattend.txt파일을 실행합니다. 그리고 아래와 같이AutoPartition을 값을 1에서 0으로

변경 하여주세요. 가장 중요한 부분입니다. 그냥 넘어가게 되면… 컴퓨터가 마음대로 파티션을

잡아버리게 됩니다.

<변경전>

clip_image029

<변경후>

clip_image030

30. 이 파일을 저장 을 해야 합니다. 그대로 저장하는게 다른 이름으로 저장합니다.

clip_image031

31. 파일이름 "WINNT.SIF "(파일이름이 WINNT 확장자 SIF)은 파일형식은 "모든 파일" 인코딩은 "ANSI "

clip_image032

32. DEPLOY폴더를 보면 아래와 같이WINNT.SIF 파일이 생겼음을 알 수 있습니다.

바로 이 파일이 무인설치의 응답파일이 됩니다.

clip_image033

33. 이 응답 파일 WINNT.SIF C:\WXP\I386 폴더에 복사합니다.

이제 무인설치 CD가 완성되었습니다. 아주 간단하죠???

clip_image034

Win32에 게시됨. 댓글 달기 »

델파이의 연산자

Source : http://wwwi.tistory.com/136

프로그램 중에 연산자를 사용해서 데이터를 조작할 수 있다.
연산자에는 아래와 같은 연산자들이 있다.

■ 대입 연산자

대입은 = 가 아니라 := 이다.
=앞에 반드시 콜론을 붙인다.
= 는 비교연산자로 쓰인다.

사용예
X := 99;

산술 연산자

산술연산자는 수치 연산을 위한 연산자이다.

기호 의미
+ 더하기 Y := X + 1;
- 빼기 Y := X – 1;
* 곱하기 Y := 3.14 * X;
/ 실수 나누기 Y := X / 3.14;
div 정수 나누기 K := N div 2;
mod 나머지 N := M mod 2;

■ 비트 연산자

비트 연사자는 정수형의 변수의 비트를 조작할 때 사용한다.

기호 의미
or 논리합 M := N or $8000;
and 논리곱 M := N and $FF;
xor 배타적 논리합 M := N xor $FFFF;
shr 오른쪽 쉬프트 M := N shr 1;
shl 왼쪽 쉬프트 M := N shl 1;
not 부정 M := not N;

■ 관계 연산자

관계연산자는 비교를 할때 사용한다.
보통 if문과 함께 사용한다.
C에서는 같은지르 비교할때는 == 을 사용하지만 델파이에서는 = 을 사용한다.

사용예

if nDat > 0 then
begin
nDat := nDat * 20;
nRet := funA(nDat);
end;

■ 논리 연산자

논리 연산자는 Boolean형의 변수에 대해 사용한다.

기호 의미
or 논리합 F := F1 or  F2;
and 논리곱 F := F1 and F2;
xor 배타적 논리합 F := F xor True;
not 부정 F := not F1;

■ 어드레스 연산자

어드레스 연산자는 @를 사용하면 변수나 프로시져, 펑션, 메소드의 어드레스를 얻을 수있다.
결국 이런 것들에 @를 붙이면 이것들에 포인터가 된다.

사용예

var
nDat: Integer;
pnDat: ^Integer;

begin

pnDat := @nDat;

end;

■ 집합 연산자

집합 연산자 in 은 어떤 값이 집합의 멤버인지 아닌지를 판달할 때 사용한다.

사용예

if ItemA in SetA then
begin

end;

또는 <=, =>, = 는 집합의 비교에 사용한다.
예를 들면 A가 B에 포함되는지 아닌지를 판단할때는 A <= B로 쓴다.

■ 문자열 연산자

문자열을 붙여 쓸때 + 를 사용한다.

사용예

Str := Str1 + ‘ # ‘ + Str2;

비교연산자 <, >, <=, =>, =, <> 는 문자 코드 순에 따라서 문자열을 비교한다.
문자열 주작은 이밖에도 많은 문자열 조작 함수를 사용한다.

◆ 연산자 우선순위

연산자의 우선순위는 아래와 같다.

연산자 우선순위
@,not,^,- 1(높음)
*,/,div,mod,and,shl,shr 2
+,-,or,xor 3
=,<>,<,>,<=,>=,in 4(낮음)
Delphi에 게시됨. 댓글 달기 »

LCID List

Source : http://msdn.microsoft.com/en-us/goglobal/bb964664.aspx

Language – Country/Region LCID Hex LCID Dec
Afrikaans – South Africa 0436 1078
Albanian – Albania 041c 1052
Amharic – Ethiopia 045e 1118
Arabic – Saudi Arabia 0401 1025
Arabic – Algeria 1401 5121
Arabic – Bahrain 3c01 15361
Arabic – Egypt 0c01 3073
Arabic – Iraq 0801 2049
Arabic – Jordan 2c01 11265
Arabic – Kuwait 3401 13313
Arabic – Lebanon 3001 12289
Arabic – Libya 1001 4097
Arabic – Morocco 1801 6145
Arabic – Oman 2001 8193
Arabic – Qatar 4001 16385
Arabic – Syria 2801 10241
Arabic – Tunisia 1c01 7169
Arabic – U.A.E. 3801 14337
Arabic – Yemen 2401 9217
Armenian – Armenia 042b 1067
Assamese 044d 1101
Azeri (Cyrillic) 082c 2092
Azeri (Latin) 042c 1068
Basque 042d 1069
Belarusian 0423 1059
Bengali (India) 0445 1093
Bengali (Bangladesh) 0845 2117
Bosnian (Bosnia/Herzegovina) 141A 5146
Bulgarian 0402 1026
Burmese 0455 1109
Catalan 0403 1027
Cherokee – United States 045c 1116
Chinese – People’s Republic of China 0804 2052
Chinese – Singapore 1004 4100
Chinese – Taiwan 0404 1028
Chinese – Hong Kong SAR 0c04 3076
Chinese – Macao SAR 1404 5124
Croatian 041a 1050
Croatian (Bosnia/Herzegovina) 101a 4122
Czech 0405 1029
Danish 0406 1030
Divehi 0465 1125
Dutch – Netherlands 0413 1043
Dutch – Belgium 0813 2067
Edo 0466 1126
English – United States 0409 1033
English – United Kingdom 0809 2057
English – Australia 0c09 3081
English – Belize 2809 10249
English – Canada 1009 4105
English – Caribbean 2409 9225
English – Hong Kong SAR 3c09 15369
English – India 4009 16393
English – Indonesia 3809 14345
English – Ireland 1809 6153
English – Jamaica 2009 8201
English – Malaysia 4409 17417
English – New Zealand 1409 5129
English – Philippines 3409 13321
English – Singapore 4809 18441
English – South Africa 1c09 7177
English – Trinidad 2c09 11273
English – Zimbabwe 3009 12297
Estonian 0425 1061
Faroese 0438 1080
Farsi 0429 1065
Filipino 0464 1124
Finnish 040b 1035
French – France 040c 1036
French – Belgium 080c 2060
French – Cameroon 2c0c 11276
French – Canada 0c0c 3084
French – Democratic Rep. of Congo 240c 9228
French – Cote d’Ivoire 300c 12300
French – Haiti 3c0c 15372
French – Luxembourg 140c 5132
French – Mali 340c 13324
French – Monaco 180c 6156
French – Morocco 380c 14348
French – North Africa e40c 58380
French – Reunion 200c 8204
French – Senegal 280c 10252
French – Switzerland 100c 4108
French – West Indies 1c0c 7180
Frisian – Netherlands 0462 1122
Fulfulde – Nigeria 0467 1127
FYRO Macedonian 042f 1071
Gaelic (Ireland) 083c 2108
Gaelic (Scotland) 043c 1084
Galician 0456 1110
Georgian 0437 1079
German – Germany 0407 1031
German – Austria 0c07 3079
German – Liechtenstein 1407 5127
German – Luxembourg 1007 4103
German – Switzerland 0807 2055
Greek 0408 1032
Guarani – Paraguay 0474 1140
Gujarati 0447 1095
Hausa – Nigeria 0468 1128
Hawaiian – United States 0475 1141
Hebrew 040d 1037
Hindi 0439 1081
Hungarian 040e 1038
Ibibio – Nigeria 0469 1129
Icelandic 040f 1039
Igbo – Nigeria 0470 1136
Indonesian 0421 1057
Inuktitut 045d 1117
Italian – Italy 0410 1040
Italian – Switzerland 0810 2064
Japanese 0411 1041
Kannada 044b 1099
Kanuri – Nigeria 0471 1137
Kashmiri 0860 2144
Kashmiri (Arabic) 0460 1120
Kazakh 043f 1087
Khmer 0453 1107
Konkani 0457 1111
Korean 0412 1042
Kyrgyz (Cyrillic) 0440 1088
Lao 0454 1108
Latin 0476 1142
Latvian 0426 1062
Lithuanian 0427 1063
Malay – Malaysia 043e 1086
Malay – Brunei Darussalam 083e 2110
Malayalam 044c 1100
Maltese 043a 1082
Manipuri 0458 1112
Maori – New Zealand 0481 1153
Marathi 044e 1102
Mongolian (Cyrillic) 0450 1104
Mongolian (Mongolian) 0850 2128
Nepali 0461 1121
Nepali – India 0861 2145
Norwegian (Bokmål) 0414 1044
Norwegian (Nynorsk) 0814 2068
Oriya 0448 1096
Oromo 0472 1138
Papiamentu 0479 1145
Pashto 0463 1123
Polish 0415 1045
Portuguese – Brazil 0416 1046
Portuguese – Portugal 0816 2070
Punjabi 0446 1094
Punjabi (Pakistan) 0846 2118
Quecha – Bolivia 046B 1131
Quecha – Ecuador 086B 2155
Quecha – Peru 0C6B 3179
Rhaeto-Romanic 0417 1047
Romanian 0418 1048
Romanian – Moldava 0818 2072
Russian 0419 1049
Russian – Moldava 0819 2073
Sami (Lappish) 043b 1083
Sanskrit 044f 1103
Sepedi 046c 1132
Serbian (Cyrillic) 0c1a 3098
Serbian (Latin) 081a 2074
Sindhi – India 0459 1113
Sindhi – Pakistan 0859 2137
Sinhalese – Sri Lanka 045b 1115
Slovak 041b 1051
Slovenian 0424 1060
Somali 0477 1143
Sorbian 042e 1070
Spanish – Spain (Modern Sort) 0c0a 3082
Spanish – Spain (Traditional Sort) 040a 1034
Spanish – Argentina 2c0a 11274
Spanish – Bolivia 400a 16394
Spanish – Chile 340a 13322
Spanish – Colombia 240a 9226
Spanish – Costa Rica 140a 5130
Spanish – Dominican Republic 1c0a 7178
Spanish – Ecuador 300a 12298
Spanish – El Salvador 440a 17418
Spanish – Guatemala 100a 4106
Spanish – Honduras 480a 18442
Spanish – Latin America 580a 58378
Spanish – Mexico 080a 2058
Spanish – Nicaragua 4c0a 19466
Spanish – Panama 180a 6154
Spanish – Paraguay 3c0a 15370
Spanish – Peru 280a 10250
Spanish – Puerto Rico 500a 20490
Spanish – United States 540a 21514
Spanish – Uruguay 380a 14346
Spanish – Venezuela 200a 8202
Sutu 0430 1072
Swahili 0441 1089
Swedish 041d 1053
Swedish – Finland 081d 2077
Syriac 045a 1114
Tajik 0428 1064
Tamazight (Arabic) 045f 1119
Tamazight (Latin) 085f 2143
Tamil 0449 1097
Tatar 0444 1092
Telugu 044a 1098
Thai 041e 1054
Tibetan – Bhutan 0851 2129
Tibetan – People’s Republic of China 0451 1105
Tigrigna – Eritrea 0873 2163
Tigrigna – Ethiopia 0473 1139
Tsonga 0431 1073
Tswana 0432 1074
Turkish 041f 1055
Turkmen 0442 1090
Uighur – China 0480 1152
Ukrainian 0422 1058
Urdu 0420 1056
Urdu – India 0820 2080
Uzbek (Cyrillic) 0843 2115
Uzbek (Latin) 0443 1091
Venda 0433 1075
Vietnamese 042a 1066
Welsh 0452 1106
Xhosa 0434 1076
Yi 0478 1144
Yiddish 043d 1085
Yoruba 046a 1130
Zulu 0435 1077
HID (Human Interface Device) 04ff 1279

현재 내가 개발중인 대부분의 어플리케이션의 경우 요 언어번호를 응용해서 작성하고 있다.

L18N은 어떤것을 참조하는지 알아보려고 하지도 않-_-았다..

요즘 추세에 어플리케이션 개발부분 레퍼런스는 볼랜드나 기타그룹보다는 MS가 가장 쓸만하니..

리눅스 개발자분들은 존경하지만 난 소켓서버+DB접근 이외의 용도를 위해 리눅스 개발을 하진 않으련다(하긴 이것들도 요샌 인디라던가 컴포넌트들이 잘 나와서 그걸로 그냥 대체해서 쓴다)..

IOCP가 퍼포먼스가 좋다던가 하는 그런 이유가 아니라 단지 삽질이 싫어서다..

까놓고 요샌 웬만한 언어들 최적화 잘 되어있어서(인기있는 제품일수록 더더욱) 만드는거나 컴포넌트 갖다 쓰는거나 퍼포먼스는 거기서 거기다..

퍼포먼스 최악이라고들 얘기하는 자바나 c#으로도 웬만한거 돌리는데는 무리없더라..

리눅스 문서가 잘되어 있다고들은 하는데, 아무래도 MSDN을 따라가긴 힘들지..

요즘 트렌드는 웹개발이지만, 그래도 난 내공이 좀 필-_-요하다..

실제로 웹프로그래머라고 자칭하는분들이라면 최소 List, View, Modify, Write 정도는 직접 만들줄 알아야 할텐데.. 그게 아닌거 같기도 하고..

제로보드같은 빌더로 페이지 만드는것만으로 ‘나는 웹개발자다’라고 말하기엔 무리가 있는건 아닌지..

어쨌건 MS가 직접 표준을 제창하는건 아니지만 그 기반을 만드는게 아닌가 하는 생각이 든다.

이 문서는 아무리 찾아봐도 Standard는 아니지만, 이것 이외에 쓸만한 Standard가 있다면 좀 알려주시라.

나도 표준에 부합하는 뭔가를 만들고 싶은데.. 정해진게 없으니 원..

덧> 웹표준이 만능인지 아는 사람들이 간혹 있는데.. 특히 오픈웹 관련자들..

오픈웹 관련자들에게 웹에서 실제 가동하는 프로그레스바를 당신네들이 말하는 표준만으로 만들수 있겠냐 했다.

난 표준지지가 아님에도 불구하고 ajax로 만들수 있는데, 입만 열면 표준타령하는 사람들은 그거 하나도 제대로 못하더라.

물론 오픈웹에서도 실력있는 사람이 있다고 생각은 한다만, 최소한 나한테 견발자라면서(난 지금 직업이 개발자도 아닌데 말이지) 모든 책임을 뒤집어 씌우는 사람들에게서 얻은건 알량한 우월감 뿐이다..

주장을 하려면 근거제시가 되어야 한다.

기본적으로 어떻게 설계하는지 정도는 알아야 한다는 얘기.

사용자 입장에서는 몰라도 되는 이야기지만, 논쟁을 하기 위해서는 최소한의 개발경험은 있어야 한다고 보는데..

유니코드는 무엇인가, 왜 필요한가, 델파이에서는 어떻게 사용하는가?

Source : http://edn.embarcadero.com/article/38454

 

유니코드는 무엇인가, 왜 필요한가, 델파이에서는 어떻게 사용하는가?

By: Beomyong Park

Abstract: 이 아티클은 유니코드 (Unicode)에 대해 논합니다, 델파이 개발자들이 유니코드를 사용함으로써 어떻게 장점을 취할 수 있는가 그리고 유니코드는 델파이 2009에서 어떻게 구현되는가에 대한 내용입니다

도입

인터넷은 지리적인 장벽을 허물고 소프트웨어의 범세계적인 보급을 가능하게 하였습니다. 그 결과 어플리케이션은 더 이상 순수 ANSI 기반 환경에만 머물 수 없게 되었습니다. 세상은 텍스트와 데이터 전달을 위한 표준 수단으로 유니코드를 받아들였습니다. 유니코드가 사실상 모든 기록 시스템에 지원을 제공한 이후, 유니코드는 이제 글로벌 기술 생태계 전반에 걸친 표준이 되었습니다.

유니코드(Unicode) 란?

유니코드 는 문자 인코딩 방법으로서 사실상 모든 문자가 단일 문자셋으로 인코딩될 수 있도록 합니다. 유니코드는 컴퓨터로 하여금 세상의 기록 시스템 대부분에서 텍스트를 관리하고 표시할 수 있도록 해줍니다. 유니코드는 유니코드 컨소시엄 이 관리하며 표준으로 성문화 되어 있습니다. 쉽게 말하자면, 유니코드는 모든 사람들이 서로의 문자를 사용할 수 있도록 하기 위한 시스템입니다. 이런, 심지어 클링온을 위한 유니코드 버전 까지 있습니다.

이 아티클 시리즈는 여러분에게 유니코드가 정확히 무엇이고 어떻게 작동하는 가에 대해 전체적으로 파고드는 내용을 전달하기 위함이 아니라 여러분이 델파이 2009 안에서 유니코드를 사용할 수 있도록 안내하고자 작성되었습니다. 만약 유니코드에 대한 좋은 오버뷰를 원하신다면, 조엘 스폴스키(Joel Spolsky)의 훌륭한 아티클인 “The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)”를 읽어 보실 것을 강력히 권장합니다. 조엘이 분명히 지적한 바와 같이 “이것은 그다지 어렵지 않습니다” 이 아티클은 전 3편 중 첫번째이며 유니코드가 왜 중요하고 델파이에서 새로운 유니코드스트링 타입을 어떻게 구현할 것인가에 대해 서술합니다.

왜 유니코드 인가?

델파이 2009의 많은 새로운 기능은 제품 전반에 걸친 유니코드에 있습니다. 델파이의 디펄트 스트링은 이제 유니코드 기반 스트링입니다. 델파이가 주로 델파이로 구축 되었기 때문에 델파이 IDE, 델파이 컴파일러, RTL, VCL는 이제 모두가 완전히 유니코드를 지원합니다.

델파이가 유니코드로 옮겨가는 것은 자연스러운 결과 입니다. 윈도우 자체가 완전히 유니코드를 인식하므로 유니코드를 디펄트 스트링으로 사용하는 것이 가장 자연스러운 것입니다. 그리고 델파이 개발자들에게 이 장점은 단순히 윈도우와 같은 스트링 타입을 사용할 수 있다는 것에서 멈추지 않습니다.

유니코드 지원은 델파이 개발자들에게 커다란 기회를 제공합니다. 델파이 개발자들은 이제 유니코드 데이터를 읽고 쓰고 받아들이고 생산하고 표시하고 다룰 수 있습니다. – 그리고 이것은 모두 제품으로 구축됩니다. 아주 조금만, 일부의 경우 코드를 전혀 변경하지 않아도 여러분의 어플리케이션은 여러분과 여러분의 고객 또는 최종 사용자가 던질 수 있는 모든 종류의 데이터를 인식할 수 있게 됩니다.

예전에는 ANSI 로 인코딩된 데이터에만 제한 되었던 어플리케이션이 이제는 세상의 거의 모든 문자셋을 다룰 수 있도록 쉽게 변화될 수 있습니다.

델파이 개발자들은 이제 자신들의 어플리케이션을 글로벌 마켓에 제공할 수 있습니다 – 비록 개발자들이 자신들의 어플리케이션을 지역화하거나 국제화 하기 위한 특별한 작업을 하지 않아도 그렇습니다. 윈도우 자체는 많은 서로 다른 지역화된 버전을 지원합니다, 그리고 델파이 어플리케이션은 일본어, 중국어 그리스어, 러이사어 버전의 윈도우와 같이 많은 로케일의 윈도우 상에서 작동하는 컴퓨터에서 적합하게 작동될 필요가 있습니다. 여러분의 소프트웨어를 사용하는 사용자는 여러분의 어플리케이션에 ANSI가 아닌 텍스트를 입력하거나 또는 ANSI가 아닌 경로명을 사용할 수 있습니다. ANSI 기반의 어플리케이션은 이러한 시나리오 상에서는 항상 의도된 대로 동작하지 않습니다. 완전히 유니코드를 지원하는 델파이에서 구축된 윈도우 어플리케이션은 이러한 상황을 잘 다루고 작동합니다. 비록 여러분이 여러분의 어플리케이션을 다른 나라 언어로 번역할 필요가 없더라도 여러분의 어플리케이션은 항상 올바르게 동작할 수 있어야 합니다. – 최종 사용자의 로케일이 무엇이든지 상관없이 그래야 합니다.

현재의 ANSI 기반 델파이 어플리케이션은 이제 어플리케이션 지역화의 기회와 유니코드 기반 시장으로 가는 잠재력은 매우 큽니다. 그리고 만약 여러분이 여러분의 어플리케이션을 지역화 하기를 원하는 경우 델파이는 매우 쉽게 특히 디자인 타임에 매우 쉽습니다. ITE (Integrated Translation Environment)를 통해 여러분은 바로 IDE 안에서 번역하고 컴파일하고 배포할 수 있습니다. 만약 외부 번역 서비스가 필요하다면 IDE는 여러분의 프로젝트를 익스포트하여 번역자들이 사용할 수 있는 형태로 배포할 수 있는 ETM(External Translation Manger)과 관련하여 사용할 수 있습니다. 이 툴들은 델파이 IDE와 함께 작동하며 델파이와 C++빌더가 여러분의 어플리케이션을 지역화 하는 것을 부드럽고 쉽게 진행하게 합니다.

세상은 유니코드 기반입니다. 이제 델파이 개발자들은 본질적이고 유기적인 방식으로 이 세상의 일부가 될 수 있습니다. 따라서 여러분이 유니코드 데이터를 다루고 싶거나 여러분의 어플리케이션을 떠오르는 글로벌 시작에 판매하고자 한다면 델파이 2009를 가지고 할 수 있게 됩니다

용어에 대한 한마디

유니코드는 몇 개의 새로운 용어의 사용을 촉진합니다 예를 들어 “문자(character)”의 개념은 유니코드의 세상에서는 여러분이 사용하던 것보다 다소 부정확합니다. 유니코드에서 보다 정교한 용어는 “코드포인트(code point)”입니다. 델파이 2009에서 SizeOf(Char)는 2입니다. 하지만 이것이 전체 이야기를 말하지는 않습니다. 인코딩에 따라 주어진 문자가 2 바이트 이상을 차지할 수도 있습니다. 이러한 시퀀스를 “써로게이트 페어(Surrogate Pairs)”라고 합니다. 따라서 코드 포인트는 Unicode.org에서 정의한 고유한 코드 요소 입니다. 대부분 주로 “문자(character)이지만 항상 그렇지는 않습니다.

유니코드와 관련하여 여러분이 보게 될 또 다른 용어는 “BOM(Bype Order Mark)”입니다. 이것은 텍스트 파일의 인코딩에 사용된 타입을 가리키기 위해 텍스트 파일 앞부분에 위치한 매우 짧은 접두어 입니다. MSDN에 BOM 무엇인가에 대한 멋진 아티클 이 있습니다. 새로운 TEncoding 클래스 (2편에 거론 될 것입니다) 는 GetPreamble이라고 하는 클래스를 가지고 있어서 주어진 인코딩에 대한 BOM을 리턴합니다.

이제 모든 것이 설명되었으므로, 우리는 델파이 2009가 어떻게 유니코드 기반 스트링을 구현하는 지를 살펴볼 것입니다..

새로운 유니코드스트링 타입

델파이 2009의 디펄트 스트링은 새로운 UnicodeString 타입 입니다. 디펄트로, UnicodeString 타입은 윈도우에서 사용되는 것과 동일한 인코딩인 UTF-16과 밀접한 관계를 갖습니다. 이것이 디펄트 타입이 AnsiString 이었던 이전 버전과 달라진 점입니다. 과거 델파이 RTL은 유니코드 데이터를 다루기 위해 WideString 타입을 포함하고 있었습니다. 하지만 이 타입은 AnsiString 타입 일 때 고려되지 않습니다. 따라서 이제는 델파이 개발자들이 기대하는 디펄트 스트링으로 기대하는 만큼 완전하지 않습니다.

델파이 2009에서 새로운 UnicodString 타입이 새로 고안되었으며 AnsiString과 WideString 타입 모두를 관장합니다. UnicodeString은 유니코드 사이즈 문자 뿐만 아니라 ANSI 바이트 사이즈의 문자 모두를 담을 수 있습니다. (AnsiString과 WideString 모두 여전히 남아 있다는 것을 알아 두세요) Char과 PChar 타입은 각각 WideChar와 PWideChar에 대응될 것입니다. 또한 어떠한 string 타입도 사라지지 않는다는 점에 유의하세요. 개발자들이 지금껏 사용한 모든 타입이 여전히 존재하고 예전과 동일하게 동작합니다.

하지만, 델파이 2009에서 디펄트 스트링 타입은 UnicodeString과 동일 할 것입니다. 게다가 디펄트 Char 타입은 WideChar이고 디펄트 PChar 타입은 PWideChar 입니다.

즉, 다음의 코드가 컴파일러에 의해 선언됩니다:

type
  string = UnicodeString;
  Char = WideChar;
  PChar = PWideChar;

UnicodeString 은 모든 다른 스트링 타입들과 할당 호환됩니다; 하지만, AnsiString과 UnicodeString 사이의 할당은 적절한 타입 컨버전이 이루어 집니다. 따라서 UnicodeString 타입을 AnsiString 타입에 할당하는 것은 데이터 손실을 유발할 수 있습니다. 즉, 만약 UnicodeSting이 고순위 바이트 데이터를 포함하고 있다면 해당 스트링을 AnsiString으로 컨버전 하는 것은 고순위 바이트 데이터의 손실을 유발할 것입니다.

여기에서 유념해야 할 중요한 점은 새로운 UnicodeString은 스트링이 항상 가졌던 것과 거의 같이 동작한다는 것입니다. (물론 유니코드 데이터를 수용할 수 있다는 커다란 차이가 있습니다만). 여러분은 여전히 어떠한 스트링 데이터도 추가할 수 있습니다. 인덱스를 할 수 있고 ‘+’ 를 이용하여 스트링을 합칠 수도 있습니다.

예를 들어 UnicodeString의 인스턴스는 여전히 문자를 인덱스 할 수 있습니다. 다음의 코드를 보세요:

 var
   MyChar: Char;
   MyString: string;
 begin
   MyString := ‘This is a string’;
   MyChar := MyString[1];
 end;

변수 MyChar는 여전히 첫번째 인덱스에 있는 문자를 잡습니다. 즉 ‘T’입니다. 이러한 코드의 기능은 전혀 변경되지 않았습니다. 유사하게 우리가 만약 유니코드 데이터를 다룬다면:

 var
   MyChar: Char;
   MyString: string;
 begin
   MyString := ‘世界您好‘;
   MyChar := MyString[1];
 end;

변수 MyChar는 여전히 첫번째 인덱스에 있는 문자를 잡습니다. 즉 ‘世 입니다.

RTL은 핼퍼 함수를 제공하여 사용자들이 코드페이지 사이에서 명시적인 컨버전과 엘리먼트 사이즈 컨버전을 허용합니다. 만약 사용자가 문자 배열에서 Move 함수를 사용한다면, 엘리먼트 사이즈에 대해 가정을 할 수 없습니다.

여러분이 상상할 수 있듯이 이 새로운 스트링 타입은 기존 코드에 파생 효과가 있습니다. 유니코드에서 하나의 Char가 1 바이트라는 것은 더 이상 참(true)이 아닙니다. 사실, 하나의 Char 가 2 바이트와 같다는 것도 항상 참일 수는 없습니다! 그 결과 여러분은 여러분의 코드에 몇가지 보정을 해야할 수도 있습니다. 하지만, 우리는 이러한 전이가 부드럽게 되도록 많이 노력하였습니다, 그 결과 여러분이 완전하게 그리고 빠르게 구동할 수 있을 것이라고 확신합니다. 2편과 3편은 새 UnicodeString 타입에 대해 더 깊이 논할 것이며 유니코드를 지원하는 RTL의 새 기능에 대해 이야기 할 것입니다. 그리고 나서 여러분이 자신의 코드를 살펴 보기를 원할 특정 코딩 이디엄을 논할 것입니다. 이 시리즈는 여러분이 부드럽게 그리고 고통 없은 시도를 통해 유니코드로 전이하는 것을 도울 것입니다.

결론

유니코드를 디펄트 스트링으로 하는 것에 더불어, 델파이는 사실상 세상의 모든 문자와 코드 페이지를 수용하고, 처리하고 표시할 수 있습니다. 여러분이 델파이 2009로 구축한 어플리케이션은 유니코드 텍스트를 쉽게 받아들이고 표시하고 다룰 수 있을 것이며 거의 모든 윈도우 로케일에서 훨씬 잘 동작할 것입니다. 델파이 개발자들은 이제 자신의 어플리케이션을 쉽게 지역화하고 번역할 수 있게 되므로 예전에 진입하기 어려웠던 시장에 들어갈 수 있습니다. 이제는 유니코드의 세상입니다. 그리고 이제 여러분의 델파이 어플리케이션은 유니코드 세상에서 살 수 있게 됩니다.

2편에서는 여러분이 유니코드 스트링을 쉽게 작업할 수 있도록 델파이 런타임 라이브러리의 변화와 업데이트에 대해 논할 것입니다.

Delphi에 게시됨. 댓글 달기 »
팔로우

모든 새 글을 수신함으로 전달 받으세요.