컴퓨터 엑셀 워드 포토숍 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Monthly Archive
Thursday, August 31, 2006

윈도우(Windows)의 '디스크 조각 모음'을 영어로 해석하면? 영문판 윈도우에서는? [QnA]

디스크 조각 모음을 영어로 Disk Defragmentation 이라고 합니다.

Fragmentation(단편화)이라는 말에, 부정을 의미하는 접두사 "de-" 가 붙어서, 단편화를 제거한다는 의미가 된 것입니다.

파일의 "단편화"란 다음과 같습니다:
하드 디스크에, 파일들을 많이 기록하고 많이 지우면, 즉 많이 사용하면, 1개의 파일이 여러 조각으로 분산되어 저장됩니다. 이러면 그 파일에 접근하는 속도가 느려지고 하드 디스크의 헤드에도 무리가 갑니다. 그래서 파일을 하나로 매끈하게 이어주는 것을 "디스크 조각 모음"이라고 합니다.


영문 윈도우에서는

"Defragment Now (지금 조각 모음)"

"Disk Defragmenter (디스크 조각 모음)" 로 표기되어 있습니다.



☞ WINDOWS

VIM (GVim), UTF-8/한글완성형/일본어/영문 모드로 인코딩 전환하기

(윈도우용 GVim 6.4 를 기준으로 설명)

VI: 유니코드(UTF-8)로 인코딩 전환


VIM은, BOM(Byte Order Mark) 이 있는 UTF-8 파일은 자동으로 인식하지만, BOM이 없으면 인식하지 못하고 파일 속의 한글이 깨집니다. 이때는 다음과 같이 인코딩을 수동으로 전환해 주면 됩니다.

* 현재 편집중이라면 키보드의 Esc키를 누릅니다.
* 콜론(:) 키를 눌러, 명령어 모드로 들어갑니다.
* se enc=utf8 이라고 입력합니다. 그러면 UTF-8 파일의 한글이 정상적으로 보일 것입니다.



VI: 한글 완성형(euc-kr)으로 인코딩 전환


만약 Vim이 한글 완성형 파일을 인식하지 못하고, 한글이 깨진다면 다음과 같이 합니다.
se enc=cp949
또는
se enc=korea 라고 입력합니다.



VI: 영문 모드로 인코딩 전환


se enc=cp437 이라고 입력합니다. 그러면 텍스트의 한글들이 모두 그래픽 문자로 바뀝니다.



VI: 일본어 Shift-JIS 모드로 인코딩 전환


se enc=932
또는
se enc=japan
이라고 입력합니다.

그런데 위와 같이 해도, 한글 윈도우에서는 일본식 한자들이 보이지 않을 것입니다.

se guifont=MS\ Mincho:h12
이렇게 일본어 폰트도 지정해 주어야 합니다.

(진짜 일본어 텍스트 파일이어야 일본어 문자들이 보입니다.)


여기에 일본어 모드로 전환한 캡처 화면이 있습니다: ▶▶ VIM VI GVIM/빔 에디터, 일본어 지원, 일어 인코딩(Shift-JIS)/모드로 변경하는 방법; Japanese Encoding


▶▶ GVim, Vim, VI에디터] 중국어 간체 파일 읽기: GB2312 간체자 인코딩 텍스트 보기

☞ 텍스트 에디터

☞ 리눅스

[C언어] fopen() 함수의 mode 스트링: 옵션, 파라미터

FILE *fopen(const char *filename, const char *mode);

위와 같이 fopen() 함수의 2번째 파라미터가 mode 스트링입니다. 파일을 어떤 모드로 열지를 결정하는 곳입니다.



이것은 볼랜드C++의 레퍼런스에 있는, mode 스트링 설명을 번역한 것입니다.

r : Open for reading only. (읽기 전용으로 열기)

w : Create for writing. If a file by that name already exists, it will be overwritten.
    (쓰기용으로 파일 만들기. 같은 이름이 있다면 덮어쓰기)

a : Append; open for writing at end-of-file or create for writing if the file does not exist.
    (같은 이름의 파일이 이미 있다면, 그 파일 끝에 추가하여 쓰기,
    같은 이름의 파일이 없다면. 쓰기용으로 파일 만들기)

r+ : Open an existing file for update (reading and writing).
    (이미 있는 파일을, 읽기/쓰기용으로 열어 업데이트)

w+ : Create a new file for update (reading and writing). If a file by that name already exists, it will be overwritten.
    (읽기/쓰기용으로 파일 만들기. 같은 이름의 파일이 이미 있다면 덮어쓰기)

a+ : Open for append; open (or create if the file does not exist) for update at the end of the file.
    (파일을 열어서, 끝부분에 추가하기. 파일이 없다면 만들어서.)

t : Text Mode (텍스트 모드로 열기)

b : Binary Mode (이진 파일 모드로 열기)




위의 mode 스트링은 다음과 같이 조합할 수 있습니다:

rt : 이미 존재하는 텍스트 파일을 읽기 전용으로 열기

rb : 이미 존재하는 이진 파일을 읽기 전용으로 열기



실제 사용 예제는 ▶▶ [C언어 예제] 텍스트 파일 열기; 명령 프롬프트 화면에 파일 내용 출력; 도스 type 명령 에 있습니다.



▶▶ C언어] 이진파일 읽기; 바이너리 파일 읽기전용으로 열기; Open, Read Binary File

☞ C/C++

자바 5.0 (자바 1.5) 예약어 목록 - Java Reserved Words / Keywords

abstract
assert
boolean
break
byte
case
catch
char
class
continue
default
do
double
else
enum
extends
false
final
finally
float
for
if
implements
import
instanceof
int
interface
long
native
new
null
package
private
protected
public
return
short
static
strictfp
super
switch
synchronized
this
throw
throws
transient
true
try
void
volatile
while



Java 1.2 : "strictfp" 추가
Java 1.4 : "assert" 추가
Java 5.0 : "enum" 추가

참고로, "const"와 "goto" 라는 예약어도 자바에는 있지만 실제로는 사용되지 않음.

(Java 1.5가 Java 5.0 임)

☞ 자바

문제해결] Visual Studio Express 에서 컴파일이 안돼요 - Visual C++ 2005 Express

Visual Studio Express (비주얼 스튜디오 익스프레스)에는 Windows.h 등의 중요한 헤더 파일이 들어 있지 않기에, 윈도우 프로그램을 컴파일하면 에러가 나게 됩니다.

따라서 Microsoft Platform SDK 라는 것을 다운로드받아서 설치해 주어야 합니다. 이것 역시 무료로 다운로드받을 수 있습니다.


이 페이지에 설치법이 있습니다 (영문):
Using Visual C++ 2005 Express with the Microsoft Platform SDK

위의 주소에 있는 페이지를 간단히 번역하면 이렇습니다:


단계1: Visual C++ Express 를 설치

단계2: Microsoft Platform SDK 설치

단계3: 비주얼C++메뉴의 Options > Projects and Solutions 대화상자에서, 다음의 경로를 추가합니다
Executable files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin

Include files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include

Library files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib


단계4:
"C:\Program Files\Microsoft Visual Studio 8\VC\VCProjectDefaults" 폴더의 "corewin_express.vsprops"라는 파일을 다음과 같이 편집합니다.
AdditionalDependencies="kernel32.lib"

이것을

AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib"

이렇게 고칩니다.


단계5:
"C:\Program Files\Microsoft Visual Studio 8\VC\VCWizards\AppWiz\Generic\Application\html\1033\" 라는 폴더의

AppSettings.htm
이라는 파일을 편집합니다.

AppSettings.htm 이라는 파일에서
// WIN_APP.disabled = true;
// WIN_APP_LABEL.disabled = true;
// DLL_APP.disabled = true;
// DLL_APP_LABEL.disabled = true;

이런 부분 앞에, 위와 같이 // 주석 기호를 붙이고, 저장합니다.




▶▶ [희소식] 비주얼 스튜디오 무료화 / Visual C++ 2005 Express 등등

☞ C/C++

일본어 텍스트 편집기, 한글 윈도우에서 쓸 수 있는 일본어 에디터 - EmEditor

Q: 일본어 Text (.txt) 파일 편집 프로그램은?


일본어 텍스트 문서인 Shift-JIS 나 EUC-JP 파일을 편집하는 데에 가장 좋은 에디터는 EmEditor 입니다. 일본인이 개발한 에디터이기에 일본어 편집은 아주 확실하고 안정적입니다. EmEditor 는 일본어 외에도 중국어 간체자나 아랍어, 유럽어 등 전세계 모든 언어의 텍스트 파일을 편집할 수 있습니다. 물론 한국어도 편집할 수 있습니다. (▶▶ EmEditor(유니코드 에디터;이엠에디터) 다운로드 사이트, 설치법 참고)

EmEditor 는 무료 버전도 있지만, 쉐어웨어입니다. EmEditor 는 영문판과 일본어판이 있는데, 한글 윈도우에서는 영문판이 좋습니다.

한글 윈도우에서 EmEditor로 일본어 편집을 하기 위해서는, 윈도우에 "일본어 입력기"가 설치되어 있어야 합니다. 윈도우XP에는 기본적으로 설치되어 있을 것입니다. (▶▶ 울트라에디트(UltraEdit)에서 일본어 입력/편집하는 법 참고)


그런데 EmEditor 는 에디터일 뿐이지 워드프로세서는 아닙니다. 그래서 만약 일본어 입력에 대한 다양한 기능이 필요한 경우에는, "이치타로(일태랑)"라는 일본어 워드프로세서가 필요합니다. 한국의 아래아한글(HWP)과 비슷한 워드프로세서입니다. (▶▶ [007 잡담 면허] EmEditor + EmFTP + '이치타로(일태랑) 워드프로세서'에 대해 참고)


☞ 텍스트 에디터

Wednesday, August 30, 2006

[사블] 사운드폰트(SF2) 다운로드하는 외국의 무료 사이트들 - Sound Blaster SoundFont

사운드폰트 파일(.SF2)을 다운로드 받을 수 있는 국내 사이트들이 요즘에는 잘 보이지 않더군요.

다음의 링크들을 클릭하시면, 외국의 사운트폰트 사이트들이 나옵니다. 대부분 무료입니다.

<구글에서 soundfonts 로 검색>

<구글에서 soundfont 로 검색>

<구글에서 sf2 로 검색>

위의 사이트들은 주로, 악기별로 분리된 고음질 사운드폰트들입니다.


만약 크기가 작고 음질이 아기자기한 GM 사운트폰트가 필요하시다면 SynthFont 라는 프로그램 사이트에서 SYNTHGMS.SF2 라는 사운트 폰트를 무료로 다운받으시면 됩니다. 그 사이트 아래쪽에 "What can you do with a 1MB GM SoundFont like SynthGMS?" 라는 링크가 있습니다. (▶▶ [MIDI] SynthFont: 사블 없이 사운드폰트로 미디 연주 (프리웨어) 참고)

☞ 음악

C언어] 도스명령어/외부 실행 파일 호출하여 실행하는 함수 - system

C언어로 작성된 프로그램 안에서, 운영체제의 명령어나, 외부의 각종 실행파일을 실행시키기 위해서는 system() 함수를 사용합니다. stdlib.h 에 정의되어 있습니다.

system() 함수 기본 예제


윈도우의 dir 명령을 실행시킨 것입니다.
#include <stdio.h>
#include <stdlib.h>


int main() {

  system("dir");

  return 0;
}



실행이 성공적인지 테스트하기 위해서는 다음과 같이 if문으로 판단합니다.
#include <stdio.h>
#include <stdlib.h>


int main() {

  if (system("xcopy /?") == 1) fputs("!!!에러 발생!!!\n", stderr);

  return 0;
}

비주얼C의 system() 함수는, 외부 파일 실행이 실패했을 때는 1, 성공했을 때는 0을 반환합니다. 반환값은 C컴파일러 종류마다 차이가 있는 것 같더군요.


☞ C/C++

Vim / Gvim 에디터 다운로드, 설치법 - 윈도우(Windows)용

리눅스에는 Vim이 기본으로 설치되어 있습니다. 여기서는 윈도우에 Vim 에디터를 설치하는 법을 중점적으로 설명합니다. (참고로, Vim 은 무료이고 오픈소스입니다. 회사에서도 무료로 사용할 수 있습니다.)


Vim 다운로드


http://www.vim.org/download.php
에 가시면, 다음과 같이 여러 운영체제용의 vim 이 있습니다:
Unix
PC: MS-DOS and MS-Windows
Amiga
OS/2
Macintosh
Others


PC: MS-DOS and MS-Windows 라고 된 곳을 클릭하면, 윈도우용 vim 설치 파일 다운로드 페이지가 나옵니다.


윈도우에 자동으로 Vim 설치


이 글을 쓰고 있는 현재의 가장 최신 vim 버전은 7.0입니다. (그런데 7.0에 버그가 많아서 7.1 정도가 나온 후에야 제대로 사용이 가능할 듯합니다. ▶▶ Vim 7.0의 새로운 점, Vim / GVim 7.0 과 6.4 의 차이점 참고)

gvim70.exe


이렇게 gvim으로 시작하고 .exe라는 확장자를 가진 파일을 다운로드하여 실행하면, GVim 즉 그래픽 모드의 Vim 이 설치됩니다. 텍스트 모드용 Vim 도 같이 설치됩니다. 물론 16비트 MS-DOS용 Vim이 아닌, Win32 콘솔 모드용 Vim 입니다.


gvim70.exe 란 파일을 클릭하면 설치가 시작됩니다. 사용약관에서 "I Agree" 라는 버튼을 클릭하여 동의해 주어야 합니다.

설치 중, 도스창이 열리며 이런저런 메시지가 나오는데 Enter키를 쳐주면 됩니다.


설치가 끝나면 바탕화면에 "gVim 7.0"이라는 아이콘이 생길 것입니다. 그것을 클릭하면 Gvim이 실행됩니다.


또한, 윈도의 시작 메뉴에, 콘솔 모드용 즉 텍스트 모드용 Vim 아이콘이 등록되어 있습니다. (▶▶ Vim (VI; 빔) 과 GVim 소개 [리눅스와 윈도우용의 오픈소스/무료 텍스트 에디터] 참고)



☞ Vim

☞ 텍스트 에디터

☞ 리눅스

Vim 7.0의 새로운 점, Vim / GVim 7.0 과 6.4 의 차이점

vim 6.x 버전의 가장 마지막은 6.4입니다. 오랫동안 6.3이 쓰이다가 6.4가 나온 지 얼마 되지 않아서, 곧 7.0이 나왔습니다.

지금 이 글을 쓰고 있는 현재(2006-08-30) 가장 최신의 vim버전은 7.0입니다.



Vim 7의 새로운 기능들 (어설픈 번역임-_-;)


* Spell checking support for about 50 languages
스펠링 검사 기능이 추가. 각 50개 언어 별로, 그러나 한국어 등의 동아시아 언어는 포함되지 않을 것입니다.

* Intelligent completion for C, HTML, Ruby, Python, PHP, etc.
각종 프로그래밍 언어의 "자동 완성" 기능이 더욱 지능적으로 작동

* Tab pages, each containing multiple windows
탭 페이지에, 여러 개의 편집창을 포함시킬 수 있음. 울트라에디트의 탭 기능 같은 것인지 불분명함 -_-?

* Undo branches: never accidentally lose text again
취소(Undo) 기능이 향상. 6.x 이하 버전에서는 언두 버퍼가 단순했는데 이제는 언두 버퍼가 여러 갈래로 되어 좀더 지능적인 듯. 그래서 실수로 텍스트를 잃어버리는 일도 줄어들 듯하다고 함.

* Vim script supports Lists and Dictionaries (similar to Python)
스크립트 언어인 파이썬에 있는 일부 문법을 Vim스크립트에서 쓸 수 있음. 제가 파이썬 문법을 잘 모르지만, Dictionaries 라는 것은 펄의 해쉬에 해당하는 것 같습니다. 아무튼 Vim스크립트가 더 강력해졌다는 의미임.

* Vim script profiling
???

* Improved Unicode support
유니코드 지원이 강화됨. vim 6.x의 유니코드 지원은 좀 불완전했음.

* Highlighting of cursor line, cursor column and matching braces
현재 커서가 위치한 줄을 다른 색깔로 표현하여 강조하는 기능. 서로 짝이 맞는 {} 등의 괄호에 색깔을 표시하여 알아보기 쉽게 강조하는 기능.

* Translated manual pages support.
번역된 매뉴얼 지원

* Internal grep; works on all platforms, searches compressed files
원래 vim 에서 grep을 사용하려면 외부의 grep을 불러서 썼습니다. 윈도우에서는 grep이 없기 때문에 findstr 등으로 대체해야 했는데 그러면 호환성에 문제가 생겼습니다. 이제 vim7에는 grep이 내장되어 있기에, 어떤 운영체제에서나 동일하게 사용할 수 있습니다. 또한 압축된 파일 속의 문자열까지 찾을 수 있다고 합니다. (참고로, Cygwin(시그윈)을 설치하면 윈도우에서도 grep 등의 유닉스 명령어를 모두 쓸 수 있음)

* Browsing remote directories, zip and tar archives
네트워크 상의 다른 컴퓨터의 디렉토리와 압축 파일들 속에서, 원하는 파일을 살펴볼 수 있는 것 같습니다.

* Printing multi-byte text
한글이나 한자처럼 다중 바이트 문자를 프린터로 인쇄할 수 있음.




제가 아직 vim 7을 제대로 사용해 보지 못했습니다. Cygwin(시그윈)의 vim 7을 윈도우에 설치해 보았는데 너무 버그가 많아서 사용이 불가능했습니다. 그래서 지금도 Vim 6.4를 사용중입니다.

지금 vim 7을 다운로드받는 것은 비추입니다. 적어도 vim 7.1 쯤은 되어야 실용성이 있을 듯합니다. 사실 빔 6.3 이나 6.4 에도 이런저런 버그가 많더군요.




▶▶ Vim / Gvim 에디터 다운로드, 설치법 - 윈도우(Windows)용

☞ 텍스트 에디터

☞ 리눅스

울트라 에디트] 색깔로 문법 강조(구문 강조), 새 언어 추가 - UltraEdit, Syntax Highlighting 울트라 에디터

울트라에디트(UltraEdit)는 최대 20개의 언어를 문법 강조할 수 있습니다. 즉 키워드에 색깔을 입힐 수 있습니다. (▶▶ 문법 강조 (Syntax Highlighting) 란? - 색깔로 프로그래밍 언어의 키워드/문자열/숫자 구분 참고)

울트라에디트 버전12의 경우는 다음과 같은 11개의 언어를 기본적으로 지원합니다. 즉, 다음 언어의 소스를 불러오면 코드에 색깔이 입혀지며 자동으로 문법 강조가 됩니다.
C/C++
Visual Basic
HTML
Java
Perl
XML
C#
PHP
JavaScript
VBScript Active Server P
CSS


그렇지만 이 이외의 다른 언어를 문법강조하려면 다음과 같이 수동으로 지정해 주어야 합니다.



울트라에디터에 문법 강조 파일 추가


울트라에디트 wordfiles 사이트에서, 각 언어별로 문법 강조 파일 즉 wordfile 을 받습니다. wordfile 은, 조그만 텍스트 파일(*.txt)로 되어 있습니다.

여기서는 "리눅스 Bash 스크립트"용 문법 강조 파일을 추가하는 것을 예로 듭니다.

(1) 위의 주소에 Bash - 08/24/99 라는 항목이 있고, 그것을 마우스 우측 버튼으로 클릭하여 "다른 이름으로 대상 저장"을 선택하면 bash.txt 라는 파일이 다운로드됩니다. 그 파일을 울트라에디터로 열어서, Ctrl+A키로 "전부 선택"한 후, Ctrl+C키로 복사합니다. 즉, 파일 전체를 복사합니다.


(2) 울트라에디트 설치 폴더(예를 들어 "D:\Program Files\IDM Computer Solutions\UltraEdit")에 있는 wordfile.txt 라는 파일을 울트라에디트로 불러옵니다. wordfile.txt 파일의 맨 끝에, 방금 복사했던 bash.txt 의 내용을, Ctrl+V키로 모두 붙여 넣습니다. 그런 후, wordfile.txt 파일을 저장하고, 울트라에디터를 종료하고 다시 실행합니다. (윈도우를 리부팅할 필요는 없고, 울트라에디터만 다시 시작함.)

(3) 울트라에디터로, Bash 셀의 스크립트 파일을 아무거나 불러옵니다.
울트라에디터 메뉴에서
View > View As (Highlighting File Type) > Bash 를 선택합니다. 위의 작업이 정상적으로 이루어졌다면 Bash 라는 항목이 생겨 있을 것입니다. 이제 Bash 스크립트의 각 구문이 문법 강조되어 if나 for문의 색깔이 파랗게 되고, 숫자는 빨갛게 될 것입니다.



주의!
위의 경우는 Bash 스크립트를 "20번째 언어" 즉 "가장 마지막 언어"로 등록한 것입니다. bash.txt 라는 파일의 첫부분에 보면
/L20"Bash" Line Comment...

이렇게 /L20 이라고 되어 있습니다.

만약 이미 20번째 언어가 있다면, 충돌하게 됩니다. 이때는 bash.txt 파일의 /L20 이라는 부분을 /L19 등으로 고쳐주어야 합니다.





울트라에디트: Python(파이썬) 구문강조 파일은?


울트라에디트는 현재 v12.x 버전에서도 파이썬을 기본적으로 지원하지 않더군요.

울트라에디트 Wordfile 페이지의
Python 2.4 - 09/28/2005
라는 링크에서, "python24.txt" 라는 파일을 다운로드 받아서 위의 방법대로 설치해 주면, 문법 강조가 잘 됩니다.


python24.txt 파일의 첫부분이

/L10"Python"...

이렇게 되어 있는데

만약 10번째 언어가 이미 존재한다면

/L18"Python"...

이런 식으로 고쳐주어야 합니다.


Tuesday, August 29, 2006

문법 강조 (구문강조;Syntax Highlighting) 란? - 색깔로 프로그래밍 언어의 키워드/문자열/숫자 구분

문서편집기에서 "문법 강조(Syntax Highlighting)"라는 것은, 예약어/일반 문자열/주석/숫자 등을 서로 다른 색깔로 표현하여 읽기 좋게 만드는 것입니다.

저는 예전에 "볼랜드 C++ 3.1"에서 문법강조를 처음 접했습니다. 지금은 당연히 있어야 할 기능이지만, 그때는 아주 신선했습니다.

평범한 텍스트 문서의 편집에는 사용되지 않고, 프로그래밍 언어 같은 구조적인 문서에서만 사용이 가능합니다.


울트라에디트(UltraEdit)에서의, 문법 강조(Syntax Highlighting)

(옆으로 스크롤 가능)
울트라에디트(UltraEdit)에서의, 문법 강조(Syntax Highlighting)
좌측: 자바 소스
우측: HTML 소스


만약 위의 소스들이 그냥 메모장처럼 흑백으로 되어 있다면, 읽기가 힘들었을 것입니다.

특히 HTML/XML 같은 것은 코드가 무질서하게 뒤엉켜 있는 경우가 많습니다. 이때는 문법 강조 기능이 없으면 편집이 대단히 괴롭게 되고, 오타/에러도 많이 나게 됩니다.




▶▶ 울트라 에디트] 색깔로 문법 강조, 새 언어 추가 - UltraEdit, Syntax Highlighting 울트라 에디터

☞ 텍스트 에디터

[펄/Perl] split 연산자로, 문자열 (단어별로) 분리하여 배열에 저장 - split 함수 사용법

split은, 함수(Function)처럼 보이지만, 실은 함수가 아니라 연산자(Operator)입니다.

어떤 문자열을 "구분 기호"로써 분리하여, 배열 속에 차곡차곡 나누어 담는 기능을 가집니다.

사용법을 한글로 표현하자면 이렇습니다:
@배열 = split /분리자/, $문자열;




이렇게
@_ = split;

분리 기호 (분리자 Separator) 와, 분리할 문자열을 생략할 수 있습니다. 그러면, 디폴트 변수인 $_ 의 내용에서 공백을 기준으로 분리합니다.

다음의 3개는 동일한 역할을 합니다.
@_ = split;
@_ = split / /, $_;
@_ = split ' ', $_;
@_ = split /\s+/, $_;

또한 /\s+/ 이렇게 분리자를 정규식 / 정규표현식 (Regular Expressions; Regex) 으로 지정할 수도 있습니다.



다음의 예제를 보면 쉽게 알 수 있습니다. "둥글고 하얀 어떤 거대한..." 등의 문장을 공백을 기준으로 분리하면, 각 단어별로 분리되는데, 그 단어들을 배열 속에 집어 넣고, 그 배열의 내용을 DumpArray 서브루틴을 사용해 알아보기 쉽게 출력합니다.


split 연산자(x함수) 사용 예제


#!/usr/bin/perl
use strict; use warnings;


# 디폴트 변수인 $_ 의 내용을 분해하여, 디폴트 배열인 @_ 에 넣어 출력
$_ = "둥글고 하얀 어떤 거대한 무엇이 자꾸만 떠올랐는데 마치 이 세상의 것이 아닌 것처럼 여겨졌다.";
@_ = split;
&DumpArray(@_);



# 변수 $s 의 내용을 분해하여, 배열 @foo 에 넣어 출력
my $s = "무슨 기척을 느끼고 뒤돌아보았더니 아까 그 행인이 산모퉁이를 황급히 돌아가고 있었다.";
my @foo = split / /, $s;
&DumpArray(@foo);


# 쉼표로 분리된 변수 $s2 의 내용을 분해하여, 배열 @foo2 에 넣어 출력
my $s2 = "산모퉁이,너머의,먼,하늘에는,희미한,구름이,안개처럼,끼어,있었다.";
my @foo2 = split /,/, $s2;
&DumpArray(@foo2);



#################################################
# 배열 요소를 출력하는 서브루틴
sub DumpArray {
   printf "Array Total Elements: %d\n", $#_ + 1;
   for (my $i = 0; $i <= $#_; $i++) {
      printf "[%d] = \"$_[$i]\"\n", $i;
   }
}


"산모퉁이,너머의,먼,하늘에는,희미한..." 이 부분은 쉼표로 분리된 문자열을 분해하는 예제입니다.
split /,/, $s2;
이렇게 분리자로서 쉼표(,)을 넣어주면 됩니다.



위의 예제를 실행한 결과:
D:\Z>0.pl
Array Total Elements: 14
[0] = "둥글고"
[1] = "하얀"
[2] = "어떤"
[3] = "거대한"
[4] = "무엇이"
[5] = "자꾸만"
[6] = "떠올랐는데"
[7] = "마치"
[8] = "이"
[9] = "세상의"
[10] = "것이"
[11] = "아닌"
[12] = "것처럼"
[13] = "여겨졌다."
Array Total Elements: 11
[0] = "무슨"
[1] = "기척을"
[2] = "느끼고"
[3] = "뒤돌아보았더니"
[4] = "아까"
[5] = "그"
[6] = "행인이"
[7] = "산모퉁이를"
[8] = "황급히"
[9] = "돌아가고"
[10] = "있었다."
Array Total Elements: 9
[0] = "산모퉁이"
[1] = "너머의"
[2] = "먼"
[3] = "하늘에는"
[4] = "희미한"
[5] = "구름이"
[6] = "안개처럼"
[7] = "끼어"
[8] = "있었다."

D:\Z>


평범한 문장(문자열)이, 단어별로 분해된 것을 알 수 있습니다.


split 연산자의 정반대 역할을 하는 join 함수 사용법입니다: ▶▶ Perl/펄] join 함수 사용법 예제; join Function Example

▶▶ [Perl] 배열(Array) 덤프; 디버그용

☞ Perl

자바 버전 설명 - Java Version

지금까지 발표된 자바의 버전들


Java 1.0
1995년 (212 classes in 8 packages)
최초의 버전


Java 1.1
1997년 (504 classes in 23 packages)
Java VM 속도 향상


Java 1.2
1999년 (1520 classes in 59 packages)
Swing API
"Java 2 Platform" 또는 "Java 2" 로 불리는 버전. 여기서부터 자바 버전이 혼란스러워짐.


Java 1.3
2000년 (1842 classes in 76 packages)
"HotSpot" virtual machine
Java Sound API


Java 1.4
2002년 (2991 classes in 135 packages)
low-level I/O API
Regular Expressions (정규식)


Java 1.5
2004년 (3562 classes in 166 packages)
"Java 5.0"으로 불림


Java 1.6
"Java 6"으로 불릴 듯함. 현재(2006-08-29) Beta 2임.
코드네임은 "Mustang"
"ImageIO: GIF writer" : 이제 그림을 gif 포맷으로도 저장할 수 있는 듯. 물론 이 외에도 많은 신기능들이 있습니다.



참고로, 이것은 "자바"입니다. "자바스크립트"와는 이름만 비슷할 뿐 아무 상관이 없습니다.



☞ 자바

[펄/Perl] 실행시 옵션(인수; 아규먼트 Argument; 파라미터 Parameter) 얻기

가령 ls 명령에 --help 라는 옵션을 주어
ls --help

라고 실행시키면 ls에 대한 도움말이 나옵니다. "--help" 이런 것을 아규먼트(Argument)라고 하는데, 여기서는 "옵션"이라고 쉽게 지칭했습니다.

물론 펄 스크립트를 실행시킬 때도 옵션을 지정할 수 있습니다.

지정된 옵션을 펄 스크립트 내부에서, 인식하는 방법은 아래와 같습니다:


펄 스크립트명 뒤에 지정한 모든 옵션은 @ARGV 이런 배열 속에 자동으로 들어갑니다. @ARGV 라는 배열은 펄의 기본 배열이라서, 별도로 선언하거나 관리해 줄 필요는 없습니다. $ARGV[0] 이렇게 하면, @ARGV의 첫번째 요소 즉 첫번째 옵션을 뽑아낼 수 있습니다.

$#ARGV + 1은 배열 요소의 개수입니다. 여기서는 옵션의 개수입니다.




펄 실행시 옵션 해석 예제


#!/usr/bin/perl
use strict; use warnings;


printf "전체 옵션 개수: %d\n", $#ARGV + 1;

print "모든 옵션이 든 배열: [@ARGV]\n";

if ($#ARGV == -1) { die "옵션이 없군요.\n"; }


print "1번째 옵션: $ARGV[0]\n" if defined $ARGV[0];

print "2번째 옵션: $ARGV[1]\n" if defined $ARGV[1];

print "3번째 옵션: $ARGV[2]\n" if defined $ARGV[2];

위의 코드를 foo.pl 등의 이름으로 저장하고

foo.pl 자장면 짬뽕 탕수육
이렇게 실행하면, 다음과 같은 결과가 나옵니다:

D:\Z>foo.pl 자장면 짬뽕 탕수육
전체 옵션 개수: 3
모든 옵션이 든 배열: [자장면 짬뽕 탕수육]
1번째 옵션: 자장면
2번째 옵션: 짬뽕
3번째 옵션: 탕수육

D:\Z>



☞ Perl

Tab 문자의 아스키 코드 / 탭문자의 이스케이프 시퀀스(Escape Sequence)

키보드 좌측의 Tab키는 공백8개에 해당하는 공백입니다. (경우에 따라서 공백2~4개에 해당할 수도 있습니다.)

메모장에서 Tab키를 누르면 커서가 여러 칸 한꺼번에 이동하는 것을 알 수 있습니다.

Tab키는 "Tab 문자"라는 보이지 않는 문자를 만듭니다. Tab 문자의 아스키 코드 (ASCII Code)
십진수로 9
십육진수로 09

입니다.



C언어펄(Perl)에서는, 탭키를
\t
로 표현합니다. 즉, 백슬래시+소문자t 입니다. 이런 것을 "이스케이프 시퀀스(Escape Sequence)"라고 합니다.


예를 들어, 펄에서
#!/usr/bin/perl
use strict; use warnings;

print "\t안녕하세요.\n";

라고 하면

D:\Z>foo.pl
        안녕하세요.

D:\Z>

이렇게, "안녕하세요." 라는 문자옆 앞에 8개의 공백이 찍힙니다.

Monday, August 28, 2006

게임/Chess] 체스 묘수풀이 문제 많은 곳 - Chess Problem

체스 묘수풀이 문제 소프트웨어


Problemist 라는 프랑스제 쉐어웨어를 설치하시면, 수백만 개의 체스 묘수 풀이 문제들을 즐기실 수 있습니다: ▶▶ [Chess/체스] Problemist: 체스 묘수풀이 소프트웨어
정답을 자동으로 계산하여 푸는 기능까지 있습니다.



인터넷에서 무료로


구글에서
Chess Problems
이렇게 검색하시면, 체스 묘수풀이 문제가 평생 풀어도 다 못 풀 만큼 많습니다.



묘수풀이 규칙


바둑과 달리, 체스 묘수풀이는 무조건 백선입니다. 즉 백이 먼저 두고 백의 입장에서 문제를 풉니다. 결국 흑의 킹을 체크메이트시키는 것이 목표입니다.

각 문제 밑에는 이렇게 씌어 있는데
White to move and mate in 2
백선으로, 2수 안에 체크메이트하라

White to move and mate in 3
백선으로, 3수 안에 체크메이트하라

라는 의미입니다. "mate in 2"가 그나마 가장 쉽고, 3이상 되면 아주 어렵습니다.



▶▶ [Chess 룰 특집] 체스 두는 법 / 체스의 기초 규칙 총정리

☞ 체스

☞ 게임

[자바] javac (자바 컴파일러; javac.exe) 실행법; 패스 추가

자바를 설치한 후, 도스창(명령 프롬프트)에서 자바를 실행하면, 자바 컴파일러인 javac 가 실행되지 않습니다.

'javac'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
배치 파일이 아닙니다.

이렇게, 윈도우가 javac 를 찾지 못한다는 에러가 납니다.



javac.exe 는 이런 폴더에 있습니다: D:\Program Files\Java\jdk\bin
(위의 경로는 자바를 D:에 설치하고 jdk에서 버전 번호를 제거한 경우.
J2SE(TM) Development Kit 5.0 Update 8 의 기본 설치 폴더는
C:\Program Files\Java\jdk1.5.0_08이것임)

따라서
D:\Program Files\Java\jdk\bin
이 경로를, 윈도우의 패스에 지정해 주면 됩니다.
(또는 버전에 따라 C:\Program Files\Java\jdk1.5.0_08\)

▶▶ 윈도우XP] 기존의 패스(Path) 환경변수에, 새 경로(디렉토리; 폴더) 추가하는 법 참조.




저의 경우에는 패스 문자열이 이렇게 되었습니다.

추가 직전:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;D:\cygwin\bin;D:\WINDOWS_\Path;D:\Perl\bin


추가 직후:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;D:\cygwin\bin;D:\WINDOWS_\Path;D:\Perl\bin;D:\Program Files\Java\jdk\bin



패스를 수정하고 나서, 도스창(명령 프롬프트창)을 종료하고 다시 시작한 후,

이제 javac 라고 치면 다음과 같이 실행이 됩니다.
D:\Z>javac
Usage: javac <options> <source files>
where possible options include:
  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
  -nowarn                    Generate no warnings
  -verbose                   Output messages about what the compiler is doing
  -deprecation               Output source locations where deprecated APIs are u
sed
  -classpath <path>          Specify where to find user class files
  -cp <path>                 Specify where to find user class files
  -sourcepath <path>         Specify where to find input source files
  -bootclasspath <path>      Override location of bootstrap class files
  -extdirs <dirs>            Override location of installed extensions
  -endorseddirs <dirs>       Override location of endorsed standards path
  -d <directory>             Specify where to place generated class files
  -encoding <encoding>       Specify character encoding used by source files
  -source <release>          Provide source compatibility with specified release

  -target <release>          Generate class files for specific VM version
  -version                   Version information
  -help                      Print a synopsis of standard options
  -X                         Print a synopsis of nonstandard options
  -J<flag>                   Pass <flag> directly to the runtime system


D:\Z>





▶▶ [Java] 자바 런타임과 JDK(개발도구; 컴파일러) 파일 다운로드하는 곳은? / 자바의 종류는? [QnA]

☞ 자바

윈도우XP] 기존의 패스(Path) 환경변수에, 새 경로(디렉토리; 폴더) 추가하는 법

윈도우 시스템의 패스(Path) 환경변수에, 새로운 경로를 추가하는 방법입니다.
여기서는 D:\cygwin\bin 이라는 폴더를 추가하는 것을 예로 들었습니다.


* 윈도 "시작" 버튼을 눌러, "시작 메뉴"를 꺼냄.
* "내 컴퓨터" 라는 곳을, 마우스 우측 버튼으로 클릭한 후, "속성"이라는 메뉴 항목을 선택해, "등록 정보" 창을 엶.
* "고급" 탭을 누름.
* "환경변수" 버튼을 누름.
* "시스템 변수" 항목에서, Path 라는 것을 선택하고, "편집" 버튼을 누름.
* "변수 값"에

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem

등의 문자열이 있습니다. 키보드의 화살표키를 눌러, 선택 영역을 해제하고, 이 문자열 바로 끝에 세미콜론(;) 기호를 하나 찍고, 그 바로 뒤에 새 경로를 추가해 줌.

세미콜론이란
;
이런 기호입니다.


다음은 D:\cygwin\bin 이라는 경로를 추가해 준 경우:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;D:\cygwin\bin


(주의! 기존의 %SystemRoot%...\System32\Wbem; 이런 패스가 지워지면 절대 안됩니다!)



* "확인" 버튼을 누름. 계속 확인 버튼을 눌러, 지금까지 연 창들을 다 닫아줌.
* 열려 있는 도스창(명령 프롬프트)이 있다면 모두 닫고 다시 열어주고 나서, D:\cygwin\bin 에 들어 있을 각종 명령을 실행해 봄.

※ 윈도우를 리부팅할 필요는 없습니다.


☞ 윈도우(WINDOWS)

Perl기초/펄] 문자열에서 엔터(Enter)키 치기 / 다음줄로 행갈이 / 개행문자 입력

펄의 print 나 printf 함수는 다음줄로 자동으로 행갈이를 해주지 않습니다. 그래서 수동으로 행갈이 기호 즉 개행문자를 입력해야 합니다.

#!/usr/bin/perl
use strict; use warnings;

print "안녕하세요.";
print "안녕히 가세요.";

이렇게 print문을 2줄로 입력해도

결과:
안녕하세요.안녕히 가세요.
이렇게 1줄로 이어서 나오게 됩니다.


안녕하세요.
안녕히 가세요.


이렇게 나오게 하기 위해서는


#!/usr/bin/perl
use strict; use warnings;

print "안녕하세요.\n안녕히 가세요.\n";

이렇게 문장에서 엔터키를 쳐야 할 곳에
\n
이라는 Escape Sequence 를 넣어 주면 다음줄로 행갈이가 됩니다.

즉, 백슬래쉬+소문자n 입니다.

쉽게 말해서 \n 이, 키보드의 엔터키 기호입니다.




이것은 C언어에서도 마찬가지입니다.


☞ Perl

노턴 고스트 드라이브 이름, 1:1 1:2 라는 NTFS 파티션 - Norton Ghost

도스용 노턴 고스트 2003(ghost.exe)에서, 디스크 목록을 보면 NTFS 파티션이 1:1, 1:2 등으로 나오게 됩니다.

1:1 이라는 것은, 1번째 하드 디스크의 1번째 파티션이라는 뜻입니다.
1:2 라는 것은, 1번째 하드 디스크의 2번째 파티션이라는 뜻입니다.

또한 첫번째 FAT32 파티션이 C: 드라이브로 나타납니다.

고스트에서 보는 드라이브명과 윈도 탐색기 (Windows Explorer)에서 보는 드라이브명은 전혀 다릅니다.


저의 경우, 물리적 하드 디스크는 1개뿐이고, 이 하드를 다음과 같이 3개의 파티션으로 나누어서 사용하고 있습니다.
C: NTFS로 포맷
D: NTFS로 포맷
E: FAT32로 포맷


그런데 이것을 고스트에서 보면 다음과 같이 전혀 다르게 보입니다.
1:1 NTFS로 포맷
1:2 NTFS로 포맷
C: FAT32로 포맷

즉, C:가 1:1 로 보이고, E:가 C:로 보이는 것입니다.

그래서 고스트의
1:2\today.GHO
라는 파일은, 실제로는
D:\today.GHO
라는 파일을 가리킵니다.



고스트는 도스용 프로그램이고, 순수한 16비트 도스로 부팅된 상태에서 실행됩니다.

순수한 16비트 도스에서는 도스가 NTFS 파티션을 인식하지 못하기에, 가장 첫번째로 나오는 FAT32 파티션을 C: 드라이브로 인식하게 됩니다.



아무튼 고스트에서는 드라이브명들이 아주 혼란스럽게 나옵니다. 그래서 엉뚱한 드라이브를 잘못 선택할 가능성도 있습니다.
이때 고스트를 실행하기 전, 윈도우에서 각 드라이브 또는 파티션에 "볼륨 라벨(Volume Label)"을 붙여 두면, 고스트에서도 어떤 드라이브인지 쉽게 알 수 있습니다.

예제:
1:1 [MyBoot]
1:2 [MyData]
C: [MyDOS]


("[ ]" 이런 대괄호는 라벨을 둘러싼 기호일 뿐 라벨명의 일부는 아님)

드라이브에 라벨을 붙이는 방법은 여기에 있습니다: ▶▶ 디스크 라벨(볼륨 레이블) 변경하는 법 - LABEL - VOL

단, 라벨명은 MyBoot 처럼 영문과 숫자만으로 이루어져야 합니다. 한글이 섞이거나 특수문자가 들어가면 고스트에서 오작동하거나 FDISK 등에서 말썽이 생깁니다.


☞ 소프트웨어

☞ WINDOWS

Sunday, August 27, 2006

리눅스/유닉스에서의 foo 라는 문자열은 무엇입니까? - Linux / Unix QnA

foo 라는 것은, 불특정의 문자열(파일명/디렉토리명/함수명/변수명 포함)을 지칭할 때 사용하는 문자열입니다. 유닉스에서 관례로서 사용되어 왔습니다.

윈도우에서는 foo 라는 문자열 대신 example 등의 보다 상식적인 문자열을 쓰는 경우가 많더군요.

▶▶ 컴퓨터에서 foo 란, 홍길동 홍길순에 해당하는 말 참고





2007-02월 업데이트

foo 라는 말을 생소하게 여기는 분들이 많아서, 저도 지금은 임의의 문자열을 표현할 때에 example 이라는 단어를 쓰고 있습니다.

그렇지만 example 은 foo 보다 타이핑하기가 힘들더군요. 그래서 에디터에서 아예 example 을 "자동 완성"으로 만들어 두었습니다.

유닉스 프로그래머들이 foo 라는 말을 쓰는 것도 귀차니즘(?) 때문인 것 같습니다.



☞ 리눅스(Linux)/유닉스(Unix)/시그윈(Cygwin)

구글에 블로그 만들기 / 구글의 공식 블로그는? - Google Blog

구글의 무료 블로그 계정에, 나의 블로그 만들기


구글에서 제공하는 블로그 서비스는 블로거(Blogger) 입니다. www.blogger.com 에 가신 후

다음 세 단계를 통해 블로그를 만들어 보십시오.
계정 만들기
블로그의 이름을 정하기
템플릿 선택하기
지금 블로그 만들기

"지금 블로그 만들기"라는 버튼을 누르시면, 간단한 가입 양식이 나옵니다. (이메일 주소 외에는 어떤 개인 정보도 요구하지 않습니다.)


중요:
www.blogger.com 에 블로그를 만들면, blogspot.com 에 블로그가 만들어집니다.

저의 지금 이 블로그도 www.blogger.com에 가입된 것이지만, 주소는
http://mwultong.blogspot.com/
이렇게 되어 있습니다.

blogger.com 은 게시물을 관리하는 사령탑 같은 곳이고, blogspot.com 은 게시물 파일들이 실제로 호스팅되는 서버입니다.



그런데 구글에서 제공하는 블로그 서비스 즉

blogger.com + blogspot.com

은 사용법이 좀 어렵습니다. HTML/CSS 문법에 대한 기초도 조금 필요합니다. 그래서 초보자에게는 권하기 힘듭니다. 블로거(Blogger)에 꼭 블로그를 만드시려면, ☞ 블로거 (Blogger.com) 카테고리 여기에 각종 사용법과 경험담 등이 있습니다.





검색 엔진 구글의, 공식 블로그


Google 한국 블로그

Official Google Blog (미국 구글 본사의 블로그)

Google Japan Blog (일본 구글 블로그)

[한글 맞춤법] '굳이'와 '구지' 중 맞는 것은? - Spelling

O: 굳이



X: 구지     X: 궂이




'굳이'는 '굳이'라고 씁니다.

다만 읽을 때는 '구지'라고 발음합니다.


인터넷에 보면, '굳이'를 '구지'라고 쓰는 경우가 많이 있는데, 이것은 '굳이'를 소리나는 대로 적은 것입니다.




MS워드의 맞춤법 검사기에서도 구지가 틀리고 굳이가 맞다고 인식합니다.

워드의 맞춤법 검사기는 성능이 별로인데, 정확하게 나오는 걸 보면 그만큼 많이 틀린다는 얘기겠지요.


오히려 아래아 한글(HWP)2005에서

'나는 구지 가지 않겠다'

라는 문장을 검사해 보면, 구지를 굳이로 추천하지 않고, "구지가지"로 추천하는 문제가 있군요.

고대 가요 중에 '구지가'라는 것이 있는데 그것으로 오인하는 것 같습니다.


사실, 위의 '굳이'보다는 다음의 난/란 구분이 훨씬 더 어렵습니다:

▶▶ 한글 맞춤법] 난/란 구분: o글쓰기난 x글쓰기란 - Spelling of Hangul


☞ 학습

ZIP 과 RAR 압축의 유니코드 파일명 지원 여부 - Unicode Filename

ZIP 은 안타깝게도 유니코드 파일명을 아직 지원하지 못하는군요.
RAR 은 현재 유니코드 파일명이 잘 지원되고 있습니다. (초창기 RAR이 아닌 근래 버전의 RAR/WinRAR 은 유니코드가 잘 지원됩니다.)

ABCD.TXT
똠방각하.jpg

등의 파일명은 유니코드가 아닌 일반 ANSI파일명이기에, zip으로도 압축이 가능합니다. 좀더 정확히 말하자면 위의 파일명들은 한글 인코딩(cp949)으로 된 파일명입니다.


그런데 다음은 일본식 한자가 섞인 파일명의 파일입니다.
仲間由紀恵.jpg
이런 것은 zip으로 압축할 수 없습니다. 물론 WinRAR 로는 압축이 됩니다.
(물론 일본어 윈도우에서는 위의 파일이 zip으로도 압축이 됩니다.)

仲間由紀恵 에서,

仲間由紀 까지는 한글 인코딩으로도 표현할 수 있는 한자지만,

라는 글자는 일본식 한자이기에, 한국어 인코딩과 충돌합니다. 유니코드를 사용하면 충돌이 일어나지 않지만, zip은 파일명을 저장할 때 유니코드를 쓰지 않기에, 충돌이 일어나게 되어 다음과 같은 에러가 납니다.


---------------------------
WinZip
---------------------------
Error: No files were found for this operation - Nothing to do. (D:\Z\test.zip).
---------------------------
확인 도움말
---------------------------

Action: Add (and replace) files Include subfolders: yes Save full path: no
Include system and hidden files: yes
"D:\Z\仲間由紀?.jpg" is not a valid file name and was skipped
Warning: no files were found for this pattern that match your selection criteria: D:\Z\仲間由紀?.jpg
Error: No files were found for this operation - Nothing to do. (D:\Z\test.zip)

"파일을 찾을 수 없다"는 에러와, "파일명"이 바르지 않다는 에러가 동시에 나는군요. 일본식 한자가 물음표(?)로 변환되어 버립니다. 파일명에는 물음표가 들어갈 수 없으므로 또한 에러가 납니다.




그래서, zip 포맷으로는, 일본식 한자, 중국식 한자, 유럽어가 섞인 파일명은 압축할 수 없습니다.

이때는 WinRAR 을 사용하여 압축하면 됩니다.





또는 일본식 한자들을 한국식 한자로 치환해 주면 되겠지요: ▶▶ 일본식 한자 / 한국식 한자 대조표 : Japanese Kanji / Korean Hanja Convert Table


중국어 간체자라면 번체자로 변환해 주는 방법도 있습니다: ▶▶ [중국어] 간체자 번체자 한자 대조표/변환표 - Chinese Simplified : Traditional Convert Table

[QnA] 인코딩(Encoding) / 디코딩(Decoding) 의 의미는?

컴퓨터에서 인코딩(Encoding) 디코딩(Decoding)이란 말은 여러 가지 의미로서 사용됩니다.

그러나 어떤 경우든, 인코딩이란 정보를 부호화/암호화시킨다, 디코딩은 그 부호화/암호화를 해제한다는 뜻을 가집니다.


텍스트 인코딩


컴퓨터는 모든 글자에 하나씩 일련 번호를 매겨서 인식합니다. 이것을 인코딩(Character Encoding)이라고 합니다. 그런데 각 언어별로 번호 체계가 다릅니다. 가령 한글 윈도우의 메모장으로는 "한글 완성형 텍스트 파일"을 읽을 수 있습니다. 그러나 "일본어 Shift-JIS 텍스트"는 읽을 수가 없습니다. 메모장이 일본어 인코딩을 인식하지 못하기 때문입니다.



멀티미디어


가령 wav 또는 avi 파일을, 압축률이 높은 형식인 mp3 / mpg 등의 포맷으로 변환하는 작업을 인코딩이라고 합니다.



인터넷 주소 (URL) 등에서


만약 이렇게
http://www.foo.com/신작 소설^^;.html
한글/공백/특수기호가 들어가면 문제가 생깁니다. 그래서 위의 주소를 다음과 같이
http://www.foo.com/%EC%8B%A0%EC%9E%91%20%EC%86%8C%EC%84%A4%5E%5E;.html
이렇게 바꾸는 작업을 또한 인코딩이라고 합니다. (▶▶ JavaScript Tools: Decode/Encode URI Strings 참조)

Saturday, August 26, 2006

Cygwin(시그윈) - Bash Shell 의 창 타이틀(title;제목줄) 변경하기

Cygwin(시그윈) 설치 디렉토리(\cygwin)에 있는 cygwin.bat 을 직접 실행하면, 시그윈이 실행되는 도스창(명령 프롬프트)의 제목줄이 "C:\WINNT\system32\cmd.exe" 이렇게 엉뚱하게 나올 것입니다.


시그윈 창의 제목줄이 Cygwin Bash Shell 이런 식으로 제대로 나오게 하기 위해서는 다음 2가지 방법이 있습니다:


바로가기 아이콘으로 실행


윈도 시작 메뉴에 보면 시그윈의 바로가기 아이콘이 만들어져 있을 것입니다. 만약 없다면 다음의 방법으로 만들어줍니다.

cygwin.bat 이라는 배치 파일을 마우스 오른쪽 버튼으로 끌어다가 바로 옆에 놓으면 "여기에 바로가기 만들기" 라는 메뉴가 나오는데 그것을 선택하여 바로가기 아이콘을 만듭니다.

"cygwin.bat의 바로 가기" 라는 이름의 아이콘이 만들어졌을 것입니다. 키보드의 F2키를 눌러, Cygwin Bash Shell 등으로 변경한 후, 그 아이콘을 클릭하면 됩니다.


cygwin.bat 을 편집하여


(시그윈을 D:드라이브에 설치한 경우의 cygwin.bat 임)

title Cygwin Bash Shell 이라는 줄을 다음과 같이 추가하면 됩니다.
@echo off
title Cygwin Bash Shell

D:
chdir D:\cygwin\bin

bash --login -i




▶▶ 도스창(명령프롬프트창) 제목줄(타이틀) 변경하는 도스 명령 - TITLE

☞ 리눅스

도스창(명령프롬프트창) 제목줄(타이틀) 변경하는 도스 명령 - TITLE

현재 도스창(명령 프롬프트 창)의 상단 제목줄에 나타난 제목이 마음에 들지 않을 때가 있습니다. 이때는 title 명령으로 제목줄을 바꿀 수 있습니다.

가령
title Command Processor
라고 하면, 도스창의 상단 제목줄이 Command Processor 라고 변경됩니다.


이것은 특히 배치 파일 안에서 유용합니다. 시간이 걸리는 작업을 하기 직전에,

title This may take a while. Please wait...
또는
title 이 작업은 시간이 걸립니다. 잠시 기다려 주세요...

이런 줄을 배치 파일에 삽입하면, 도스창의 제목줄에 메시지가 표시되어 편리합니다.



그러나 title 명령은, 윈도우98이나 MS-DOS에서는 되지 않습니다. 윈도우2000/XP이상의 도스창에서만 됩니다.


☞ BATCH/VBScript

윈도우 계산기로, 16진수(Hex) 10진수(Dec) 8진수(Oct) 2진수(Bin) 변환

윈도우XP의 경우
"시작" 버튼 > 모든 프로그램 > 보조 프로그램 > 계산기

로 윈도우 계산기를 실행시킬 수 있습니다.

윈도 계산기의 메뉴에서,

보기 > 공학용

을 선택합니다.


십진수(Dec)를, 십육진수(Hex)로 변환


계산기에서, Dec 이라고 된 곳을 선택합니다. (이미 선택되어 있을 것임)

예를 들어, 255 라는 십진수를 입력한 후,

마우스로 Hex 라는 곳에 체크합니다. (점이 찍히면 체크된 것임)

그러면 십진수인 255가 십육진수인 FF 로 변환됩니다.

16진수를 10진수로 변환하는 것은, 위의 반대 방향으로 해주면 됩니다. 즉, Dec 에 체크해 주면 됩니다.



십진수(Dec)를, 팔진수(Oct)나 이진수(Bin)로 바꾸기


(키보드의 Esc 키를 한 번 눌러, 계산기를 초기화시킵니다. 위의 계산 결과를 지우기 위해.)

계산기의 Dec이라고 된 곳에 체크합니다.

예를 들어, 255 라고 입력한 후,

팔진수(Oct)를 선택하면, 십진수인 255가 팔진수로 변환되어 377로 나타납니다.
이진수(Bin)를 선택하면, 십진수인 255가 이진수로 변환되어 11111111로 나타납니다.




▶▶ 윈도 계산기/구글 계산기 활용. 수식 입력을 편하게


16진법 2진법 10진수 상호 변환기 (온라인 버전):
▶▶ 16진수 헥사, 2진수, 10진수, 8진법 변환 계산기; Hex Calc

[폰트] .HFT 글꼴과 .TTF 확장자의 글꼴의 차이점은?

.HFT 폰트 파일


.HFT 라는 확장자를 가진 글꼴 파일은, 아래아한글(HWP) 워드프로세서 전용의 글꼴입니다. HFT 는 "Hangul Font"의 약자가 아닌가 하고 추측됩니다. 아래아한글을 설치했을 때, "C:\HNC\Shared\Fonts" 폴더에 HFT 파일들이 들어 있습니다. HFT 는 한글의 특성에 잘 맞게 설계된 포맷이라고 생각되지만, HWP 이외의 다른 프로그램들에서는 .HFT 글꼴을 쓸 수 없는 단점이 있습니다.


.TTF / .TTC (트루타입) 폰트 파일


MS윈도우에서 표준으로 사용되는 글꼴 형식입니다. TTF 형식의 글꼴은 어느 프로그램에서나 자유롭게 사용할 수 있습니다. 요즘에는 아래아한글의 HFT 폰트들도, TTF (트루타입) 형식으로 변환해서 배포하더군요. 가령 ▶▶ 좋은/특이한 한글 폰트(글꼴)들 소개 이 게시물의 "양재와당체M" 같은 폰트들이 예전에는 HFT 형식이라서 아래아한글의 외부에서는 쓸 수가 없었습니다. 그런데 아래아한글2005버전부터는 "양재와당체M" 등의 폰트들을 TTF 형식으로도 배포하기 시작했습니다. 그래서 어떤 프로그램에서도 "양재와당체M"을 쓸 수 있게 되었습니다.


만약 똑같은 글꼴이 HFT 와 TTF 2가지 포맷으로 존재한다면, TTF 쪽을 선택하는 것이 좋습니다.

참고로, TTC는, 여러 개의 TTF 폰트들을 하나로 합친 것입니다.


▶▶ 윈도우 / 아래아한글(HWP) / 워드(MS Word)의, 글꼴(폰트) 폴더 위치

☞ 폰트

[폰트] 휴먼옛체 글꼴 다운로드하는 곳은? - HMFMOLD.TTF

휴먼옛체는, 아래아한글 2.0 설치 플로피 디스켓에 포함되어 함께 배포되던 아주 유서깊은(?) 글꼴입니다. 요즘에는 MS워드 안에도 포함되어 있습니다. (Word 2000의 경우는 잘 기억이 나지 않지만, Microsoft Word 2003 CD 안에는 분명히 포함되어 있습니다.)

아래아한글이나 MS워드 설치 CD는 다 가지고 계실 겁니다. 그 안에 보시면 HMFMOLD.TTF 라는 파일이 있는데 그것이 바로 "휴먼옛체" 글꼴입니다.

MS워드를 설치하면 기본적으로 휴먼옛체가 설치됩니다.



▶▶ [QnA] 다운받은 폰트(글꼴)를, 어디에다 어떻게 설치하나요?

☞ 폰트

Friday, August 25, 2006

Cygwin(시그윈)의 디렉토리 구조 - Directory

Cygwin(시그윈)의 디렉토리 구조는, 리눅스의 그것에 최대한 가깝게 만들어져 있습니다.

D:\cygwin>dir /a /ogn
 D 드라이브의 볼륨: Foo
 볼륨 일련 번호: F8A0:572A

 D:\cygwin 디렉터리

2006-08-24  04:55p      <DIR>          .
2006-08-24  04:55p      <DIR>          ..
2006-08-19  11:54a      <DIR>          bin
2006-07-10  04:25p      <DIR>          etc
2006-08-19  11:54a      <DIR>          lib
2006-08-21  03:22p      <DIR>          tmp
2006-08-19  11:54a      <DIR>          usr
2006-07-10  04:24p      <DIR>          var
2006-07-10  04:25p                  57 cygwin.bat
2006-08-19  11:54a               7,022 cygwin.ico
               2개 파일           7,079 바이트
               8 디렉터리  54,693,244,928 바이트 남음

D:\cygwin>


(시그윈을 D:드라이버에 설치했기에 시그윈의 현재 경로는 D:\cygwin 입니다)


가령 bin 디렉토리의 경우,

하드에 설치된 실제 폴더는
D:\cygwin\bin
이지만

시그윈 내부적으로는
/usr/bin
이렇게 인식됩니다.



☞ 리눅스

윈도우(도스)의 TREE 명령으로 디렉토리(폴더) 구조 보기 / 파일로 저장하기

복잡한 디렉토리 구조를 DOS명령 중의, tree 를 사용해 그래픽적으로 표현할 수 있습니다.

도스창(명령 프롬프트)을 열고, cd 명령으로 특정 디렉토리로 이동한 후, tree 라고 치면 됩니다.

"C:\Documents and Settings" 폴더에서, tree 명령을 실행한 결과 화면:

C:\Documents and Settings>tree
Foo 볼륨에 대한 폴더 경로의 목록입니다.
볼륨 일련 번호가 0006FE80 F8A0:572A입니다.
C:.
├─Administrator
│  ├─Favorites
│  │  ├─미디어
│  │  └─연결
│  ├─My Documents
│  │  └─My Pictures
│  ├─바탕 화면
│  └─시작 메뉴
│      └─프로그램
│          ├─보조프로그램
│          └─시작프로그램
└─All Users
    ├─Documents
    │  ├─DrWatson
    │  └─My Music
    │      ├─My Playlists
    │      └─Sample Playlists
    │          └─00038808
    ├─Favorites
    ├─바탕 화면
    └─시작 메뉴
        └─프로그램
            ├─관리 도구
            ├─보조프로그램
            │  ├─게임
            │  ├─내게 필요한 옵션
            │  ├─시스템 도구
            │  ├─엔터테인먼트
            │  └─통신
            ├─시작프로그램
            └─응용프로그램
                ├─Autodesk
                │  ├─Autodesk 3ds Max 8
                │  │  └─References
                │  └─Backburner
                ├─Cygwin
                ├─Microsoft Office
                │  └─Microsoft Office 도구
                └─기타 프로그램

C:\Documents and Settings>




tree 명령에는 다음과 같은 옵션들이 있습니다:

/F : 각 폴더에 있는 파일 이름을 화면에 표시합니다.
/A : 그래픽 문자대신 텍스트 문자를 사용합니다.


tree /a 라고 하면, 트리구조를 표현할 때, 그래픽 문자가 아닌, 키보드로 입력 가능한 일반 문자로 표현합니다.



그리고 트리 구조를
tree > out.txt
이렇게 재지향(Redirection)을 사용해 파일로 저장할 수 있습니다.



☞ WINDOWS

윈도우XP] 파일의 읽기전용 속성 해제 하는 법 - Remove Readonly Attribute

파일의 읽기전용 속성을 해제하는 법은 여기에 설명되어 있습니다: ▶▶ 파일의 읽기전용(Readonly Attribute), 숨김(Hidden Attribute) 속성을 해제/설정하는 법은?


Q: 읽기전용 속성이 없어지지 않아요


* CD-ROM 이나 DVD 에 있는 파일의 읽기전용 속성은 해제할 수 없습니다. 물론 CD의 파일을 하드로 카피해 온 후에는 변경할 수 있습니다.
* "쓰기 방지 탭"으로 기록을 금지한 플로피 디스켓의 파일은 속성을 변경할 수 없습니다. 물론 쓰기 방지 탭을 조정해 주면 다시 변경이 가능합니다. (3.5인치 플로피에서는 구멍이 보이지 않게끔 막아야 기록이 가능함)


* 아주 드문 경우지만, 만약 이런 에러가 난다면
특성 적용 오류
   파일에 특성을 적용하는 중 오류가 발생하였습니다:
   D:\Z\test.txt
   액세스가 거부되었습니다.
무시(I)  모두 무시(G)  다시 시도(R)  취소(C)


파일 속성을 변경할 권한이 없는 것입니다.
이때는 그 파일을 선택한 후 Alt+Enter키를 누르고, "보안" 탭을 누르고, "거부"라고 된 곳에 체크된 항목이 있다면, 그것을 클릭하여 체크를 해제해 줍니다. 그런 후 파일의 속성을 다시 변경해 봅니다.

또는 관리자(Administrator)로서 로그인해서 다시 변경해 봅니다.


☞ WINDOWS

[펄/Perl] if조건문 등에서, 참(TRUE)/거짓(FALSE) 판별

펄의 변수들은 ▶▶ [Perl/펄] 불린형 변수 사용은? bool / Boolean / false / true 여기서 설명한 대로, 불린값(Boolean Value)을 가질 수 있습니다. 이 불린값을 각종 조건문에서 조건으로 사용할 수 있습니다.

#!/usr/bin/perl
use strict; use warnings;


my $foo = 0;

  if ($foo) {
    print "참(TRUE)";
  } else {
    print "거짓(FALSE)";
  }

실행 결과:
거짓(FALSE)



숫자 0 은 논리적으로 거짓에 해당합니다. 따라서 if문 속에 0(제로)이 들어가면 그 if문이 실행되지 않거나 else문이 실행됩니다.

숫자 1 은 논리적으로 참에 해당합니다. 따라서 if문 속에 1이 들어가면 즉
my $foo = 1;
이었다면 if문이 실행됩니다. (물론 이때 else문은 실행되지 않습니다.)



☞ Perl

펄(Perl) 변수에, 정수형/실수형/문자형/문자열형/불린형 등이 있나요? - int float

펄의 변수에는 그런 구분이 전혀 없습니다. 하나의 변수에 어떤 종류의 데이터라도 자유롭게 대입할 수 있습니다.

예제


#!/usr/bin/perl
use strict; use warnings;

my $foo;

# 정수
$foo = 123;
print $foo, "\n";

# 실수
$foo = 1.15152;
print $foo, "\n";

# 문자
$foo = "A";
print $foo, "\n";

# 문자열
$foo = "안녕하세요~";
print $foo, "\n";

# 불린형(참/거짓)
$foo = 0;
print $foo, "\n";

위의 예제에서 $foo 라는 변수를 하나 선언해 놓고, 그 안에 온갖 종류의 데이터를 집어넣고 있습니다. 그래도 문제가 없습니다.


펄의 변수에는, 정수형 실수형 등의 구분이 없습니다. 다만, 펄 내부적으로, 모든 숫자는 "double형 실수"로서 처리됩니다. 그래서 펄을 다루다 보면, 정수로 나와야 할 텐테, 실수로 나오는 경우가 많습니다. 이때 정수로 변환하는 방법은 여기에 있습니다: ▶▶ [Perl/펄] 실수 반올림하여 정수 만들기; RoundToInt 함수


참고로, Perl 6 에서는 정수형 변수가 생긴다는 얘기를 들었습니다. 그러나 아무튼 현재 사용되는 Perl 5.x 에서는 그런 구분이 없습니다.



▶▶ [Perl/펄] 불린형 변수 사용은? bool / Boolean / false / true


☞ Perl

Thursday, August 24, 2006

[Perl/펄] 불린형 변수 사용은? bool / Boolean / false / true

펄에 불린 타입 (bool / Boolean)의 변수는 따로 없습니다. 그냥 일반 변수에 특정한 값을 지정하여 Boolean형 변수로 삼습니다.

* 숫자 0 은 거짓. 0이 아닌 다른 모든 수는 참. 예를 들어 1은 참.

* 빈 문자열 '' 또는 "" 는 거짓, 다른 모든 문자열은 참.

* undef 값은 거짓


$foo = 0; 이라고 했을 때, 지금 $foo 는 거짓입니다.
$foo = 1; 이라고 했을 때, 지금 $foo 는 참입니다.

$foo = ""; 라고 했을 때, 지금 $foo 는 거짓입니다.
$foo = "똠방각하"; 라고 했을 때, 지금 $foo 는 참입니다.

$foo = undef; 라고 했을 때, 지금 $foo 는 거짓입니다.



논리적인 거짓은 false
논리적 참은 true 입니다.

물론 여기서, 거짓은 악하고, 참은 선하고 그런 것이 아닙니다. 가령 전등을 예를 든다면, 전등의 전구가 꺼져(OFF) 있는 상태는 '거짓', 켜져(ON) 있는 상태는 '참'이라고 볼 수 있습니다.


if문 등에서 이런 불린형의 논리값을 사용하여 뭔가를 판단/제어할 수 있습니다. (▶▶ [펄/Perl] if조건문 등에서, 참(TRUE)/거짓(FALSE) 판별 참고)



☞ Perl

메일(Email)에서 사진/그림 올리기 (파일 첨부하는 법) - Daum한메일넷에서

사진이나 그림을 메일의 끝에 붙이기


받는이 칸에, 이메일을 받을 사람의 이메일 주소를 쓰고,
제목 과 편지 내용도 씁니다.


원래 한메일넷은 ActiveX(액티브 엑스)를 깔아야, 사진을 첨부할 수 있습니다. ActiveX(액티브 엑스)를 설치하는 것은 좋지 않으므로, 화면 아래에 있는

파일첨부가 안되세요? (Text모드로 전환)

이라는 곳을 클릭합니다. 그러면 ActiveX를 깔지 않아도 첨부할 수 있습니다.

그런 후 파일첨부라는 곳에서, "찾아보기" 버튼을 눌러, 올릴 사진 파일을 찾습니다.

만약 사진이나 그림 파일의 이름이 test.jpg 이고, 그 파일이 D:\Z 폴더에 있다면, D:\Z\test.jpg 이런 식의 경로가 찍힐 것입니다.


중요!
반드시 첨부라는, 별도의 버튼을 눌러야 합니다. 그러면
"--------- 첨부될 파일목록 (최대 10개) -----------"
이런 문자열 밑에 사진 파일이 들어갑니다.



이제 보내기 버튼을 누릅니다. 그러면 사진/그림이 첨부된 이메일이 상대방의 주소로 즉시 전송됩니다.



상대방의 편지함에 도착한 메일의 끝부분에

일반첨부 파일
test.jpg (69 KB)

이런 곳이 있고 그것을 클릭하면, 첨부한 사진이 나타납니다.




다른 이메일 서비스들도 비슷한 과정을 거칩니다.



▶▶ [QnA] 하드에 설치된, ActiveX (액티브 엑스) 를 지우는 방법은?

☞ Web

일본어/중국어 HTML, CSS 파일에서, 돋움/굴림 등 한글 폰트(글꼴) 지정하기 - Font

일본어나 중국어로 작성된 HTML, CSS 파일에서, 한글 폰트를 사용하려면, 한글 폰트명을 한글로 적지 않고 로마자 이름을 적어주면 됩니다.


<div style="font-family:'돋움'">어떤 한글/漢字 텍스트</div>
한글명 대신에


<div style="font-family:'Dotum'">어떤 한글/漢字 텍스트</div>
이렇게 영문 이름을 쓰면 됩니다.



그리고 그 HTML, CSS 파일이 되도록 유니코드(UTF-8)로 인코딩되어 있어야 합니다.


한글 폰트명의 영문 이름은 이 게시물에 있습니다: ▶▶ [HTML-CSS] 윈도우에 내장된 기본 한글 폰트들의 영문명; 로마자 이름



☞ HTML/CSS/JavaScript

[Perl/펄] $ $_ @ @_ % %_ <> # 등의 특수문자의 의미, 사용법

$ : 스칼라 변수를 의미합니다. 스칼라 변수라는 것은 그냥 일반 변수입니다. 펄의 변수는 앞에 $가 붙어야만 합니다. 예) $foo
$_ : 디폴트 변수를 의미합니다. 펄에서는 편의를 위해, 변수를 선언하거나 이름을 정해주지 않아도 기본적으로 항상 쓸 수 있는 변수가 있습니다. 그것이 $_ 입니다.

$기호는, 배열이나 해쉬의 구성요소 하나를 가리킬 때도 사용됩니다. 가령 $_[0] 은, 디폴트 배열 @_ 의 첫번째 요소입니다.

$_{"Key"} 는, 디폴트 해쉬인 %_ 에서, "Key"라는 이름의 키를 가진 값입니다.

아무튼 펄에서, $ 기호는 항상, 복수(Plural)가 아닌 단수(Singular)를 의미입니다.



@ : 배열입니다. 예) @foo
그러나 이것은 배열 전체를 가리킬 뿐, 배열의 요소를 하나씩 가리킬 때는 위에서 말한 대로, $foo[0] 이런 식으로 표현되어야 합니다. 그러나 $foo[0] 이라는 변수는 $foo 라는 변수와는 아무 상관이 없고 독립적입니다.

@_ : 디폴트 배열입니다.



% : 해쉬(Hash)입니다. 예) %foo
%_ : 디폴트 해쉬입니다.



<> : 일명 다이아몬드 연산자입니다. 명령행에서 옵션으로 지정해 준 파일의 모든 글자들이 통째로 <> 에 들어가 있습니다.



# : 펄의 주석 기호입니다. # 뒤에 있는 것은 실행에서 무시됩니다.


☞ Perl

윈도우XP에서, ping(핑) 실행하려면? ping 실행할 수 있는 프로그램은?

윈도우에는 ping.exe 라는 프로그램이 포함되어 있습니다.

그런데 ping.exe 를 실행시키려면, 도스창(명령 프롬프트)을 열어서 실행시켜야 합니다. 그래픽 유저 인터페이스 (GUI) 로 된 프로그램이 아니라, 콘솔 모드 즉, 글자로만 이루어진 프로그램이기 때문입니다.


다음은 미국 야후에 핑을 보낸 화면입니다:
D:\Z>ping www.yahoo.com

Pinging www.yahoo-ht2.akadns.net [209.131.36.158] with 32 bytes of data:

Reply from 209.131.36.158: bytes=32 time=168ms TTL=54
Reply from 209.131.36.158: bytes=32 time=161ms TTL=54
Reply from 209.131.36.158: bytes=32 time=162ms TTL=54
Reply from 209.131.36.158: bytes=32 time=165ms TTL=54

Ping statistics for 209.131.36.158:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 161ms, Maximum =  168ms, Average =  164ms

D:\Z>



☞ WINDOWS

Wednesday, August 23, 2006

[HTML] 페이지 다시 읽기 window.location.reload(true); 사용법과 의미 - 자바스크립트(JavaScript)

reload() 메소드(Method)는, 현재 웹페이지를 다시 불러오게 하는 것입니다. 키보드의 F5키를 눌러 브라우저를 "새로 고침"하는 것과 같습니다.

일반적인 다시 읽기


window.location.reload();
이렇게 하면 컴퓨터의 캐쉬에서 우선 파일을 찾아봅니다. 없으면 서버에서 받아옵니다.


강력하고 강제적인, 다시 읽기


window.location.reload(true);
true 라는 파라미터를 입력하면, 무조건 서버에서 직접 파일을 가져 오게 됩니다. 캐쉬는 완전히 무시됩니다.


부드럽고 소극적인, 다시 읽기


history.go(0);
이렇게 하면, 캐쉬에서 현재 페이지의 파일들을 항상 우선적으로 찾습니다.


사용 예제


<a href="javascript:window.location.reload(true);">페이지 다시 읽기</a>

<input type="button" value="Click" onclick="location.reload()" />





reload() 메소드는, 웹페이지를 다시 리로드할 때 사용한다기보다는, 양식(폼)을 리셋(초기화)할 때 더 많이 사용됩니다.

그런데 양식의 리셋에는
window.location.reload(true);
이런 강제적인 리셋이 가장 잘 작동했습니다.


window.location.reload(); 또는 history.go(0); 로는, 양식의 초기화가 잘 되지 않았습니다.


☞ HTML/CSS/JavaScript

배치파일에서, 문자열 비교 판단 / 문자열이 동일한지 다른지 - Compare Strings in Batch File

if "문자열1" == "문자열2" "조건이 참(TRUE)일 때 실행할 명령어"

이런 형식으로 배치 파일 안에서 특정 문자열들을 비교할 수 있습니다.

예제



@echo off

if "맹구" == "맹구" echo 같군요~

if not "맹구" == "복숭아학당" echo 다르군요!


:: 이번에는 변수를 만들어서 비교합니다

set MyTest1=하하하하
set MyTest2=(~_~)


if %MyTest1% == %MyTest2% echo 변수 사용: 같군요 (이 줄은 참이 아니기에 나오지 않습니다.)
if not %MyTest1% == %MyTest2% echo 변수 사용: 다르군요




:: 위에서 사용한 변수를 삭제
set MyTest1=
set MyTest2=






▶▶ 배치 파일의 옵션(인수; 파라미터; 매개변수) 해석하여 조건문 만들기 예제: 도움말(Help) 옵션 넣기

▶▶ 배치 파일에서의 변수 사용 [배치 파일 작성법] - DOS Batch Variable

☞ BATCH/VBScript

펄 에러 설명] Global symbol '$foo' requires explicit package name at bar.pl line n

#!/usr/bin/perl
use strict;

$foo = 123;

print $foo;


가령 위의 펄 스크립트를 실행시키면
Global symbol "$foo" requires explicit package name at D:\Z\0.pl line 4.
Global symbol "$foo" requires explicit package name at D:\Z\0.pl line 6.
Execution of D:\Z\0.pl aborted due to compilation errors.

이런 에러가 나게 됩니다.

쉽게 말해서, 변수를 선언하지 않고 사용했다는 에러입니다.


다음과 같이 변수 $foo 앞에 my 를 붙여서 선언을 하면
#!/usr/bin/perl
use strict;

my $foo = 123;

print $foo;


에러가 나지 않습니다.

또는 use strict; 라는 프라그마를 지우면 에러가 없어집니다. 그렇지만 use strict; 를 항상 사용하는 것이 좋습니다. use strict; 를 사용하지 않으면 나중에 디버깅할 때 고생하게 됩니다.



물론 더 정확하게 말하자면,
Global symbol "$foo" requires explicit package name at D:\Z\0.pl line 4.

라는 것은, "전역 변수 $foo가 속한 패키지 이름을 정확히 지정해 주지 않았다"는 뜻입니다.

만약 여기서 예로 든 변수 $foo 가, 여러분이 현재의 펄 스크립트 안에서 만든 변수가 아니라, 어떤 다른 패키지(모듈) 속에서 선언된 변수라면 그 패키지를 알려주어야 합니다.


가령 Wasabi 라는 외부 모듈 속의 $foo 라는 변수를 사용하려면
#!/usr/bin/perl
use strict;

$Wasabi::foo = "안녕하세요";

print $Wasabi::foo;

이렇게 합니다.




☞ Perl

VMware Tools 사용법 설명

VMware 안의 가상PC속에 VMware Tools 를 설치하면, 그 가상PC의 운영체제의 제어판에 VMware Tools 라는 항목이 생깁니다.

별로 고칠 것은 없지만, 다음과 같은 메뉴들이 있습니다.

Shrink


Shrink 라는 것이 VMware Tools 의 가장 중요한 기능일 것 같습니다. Shrink(쉬링크)라는 것은 가상 하드 디스크의 사이즈를 축소시키는 것입니다.

가량 8GB짜리 가상 하드를 만들어도, 처음에는, 그 하드를 이루는 vmdk 파일의 크기는 별로 크지 않습니다. 몇 메가 정도밖에는 되지 않을 것입니다. 가상 하드 속에 실제로 파일을 복사해 넣어야 가상 하드의 실제 크기도 늘어납니다.

8GB짜리 가상 하드에 8GB짜리 파일을 복사해 넣었다면, 가상 하드 파일의 실제 크기도 8GB가 됩니다.

그런데 가상 하드에서 파일을 모두 지웠다고 해도, 가상 하드 파일의 실제 크기는 줄어들지 않습니다.

VMware Tools 의 Shrink 를 이용해서, 수동으로 축소시켜 주어야 합니다.


그런데 이 Shrink 에는 제약이 아주 많습니다. 가상PC의 스냅샷(Snapshot)을 찍은 상태에서는 작동하지 않습니다. 스냅샷을 모두 지워야 합니다. 다른 사본(Clone)의 가상PC와 연결되어 있다든지 할 때도 사용이 불가능합니다.


실제PC의 실제 하드 용량이 충분하다면, 굳이 Shrink 를 해주지 않아도 괜찮습니다.




Options > Miscellaneous Options (기타 옵션)


* Time synchronization between the virtual machine and the host operating system. (가상OS와 실제OS의 시간을 동기화시키기: 기본값은 OFF)
가상PC와 실제PC의 시계의 시각은 처음에는 동일하지만, 가상PC의 시계의 시각을 변경했다면, 서로 독립적으로 움직입니다. 위의 옵션을 ON하면, 가상PC와 실제PC의 시계의 시간을 강제로 동일하게 만드는 것입니다.

* Show VMware Tools in the taskbar. (윈도 프로그램 표시줄에 VMware Tools 아이콘을 보여줄지 결정: 기본값은 ON)


Shared Folders (공유 폴더)


가상PC의 가상 하드와, 실제PC의 실제 하드에서, 공유하는 폴더를 만들어 두면 편리합니다. 그 공유 폴더 목록이 나옵니다.
단, 윈도우98(게스트)에서는 공유폴더 기능이 작동하지 않습니다.



플로피 디스크(디스켓)를 이미지 파일(.ima)로 만들기/저장 - Floppy Image

실제 플로피 디스켓을 이미지 파일로 저장하기


* 플로피 드라이버에 디스켓을 삽입

* 윈이미지(WinImage)를 실행시킴. (윈이미지는 윈도우에 내장되어 있지 않은 별도의 프로그램임.)

* 요즘 PC에는 플로피 드라이버가 1개뿐이기에, 플로피 드라이버는 A: 입니다. (두 번째 플로피 드라이버가 있다면 B: 도 생김.)
윈이미지 메뉴: Disk > Use floppy A: 를 선택합니다. 이미 기본값으로 선택되어 있을 것입니다.

* 윈이미지 메뉴: Disk > Read disk 를 선택하거나, 키보드의 Ctrl+R을 누르면, 플로피의 내용을 읽기 시작합니다. 이때 읽기 에러가 날 가능성이 높습니다. 만약 에러가 난다면, 플로피 드라이버의 작동이 중지된 후, 디스켓을 뽑았다가 다시 넣어준다든지 해봅니다.

* 이제 플로피에 든 파일들이 윈이미지에 나타날 것입니다.

* File > Save 를 선택하여, 방금 생성한 이미지를 파일로 저장합니다.
파일 이름에 적당한 이름을 지정합니다.
파일 형식은 *.ima 가 좋습니다. *.imz 는 압축된 이미지인데 호환성이 떨어집니다.

* 1.40MB (1,474,560 바이트) 크기의 플로피 이미지 파일이 하드에 만들어졌을 것입니다.




▶▶ ima (IMA) 확장자 파일은? / 플로피 이미지란? [QnA]

☞ 윈도우(WINDOWS)

Tuesday, August 22, 2006

C언어/C++에서, 기호 // 또는 /* */ 는 무엇입니까? C언어 주석 기호는?

/* */ 는 C언어와 C++의 주석 기호입니다. 즉 코멘트/설명문입니다.

/* 에서 */ 사이에 있는 모든 문장들은 컴파일에서 완전히 무시됩니다. 따라서 설명문 등을 적어 놓거나, 코드의 특정 구역을 무효화시킬 수 있습니다.



// 는 C++ 의 주석 기호입니다. // 기호 뒤쪽 부분의 행은 무조건 무시됩니다. C에서도 // 를 사용할 수 있지만 오래된 C컴파일러, 가령 터보C 2.0 같은 데서는, // 주석을 인식하지 못하고 에러를 냅니다. 그렇지만 요즘 컴파일러들은 C와 C++문법을 동시에 지원하기 때문에, C에서도 // 주석이 사용 가능합니다.


C언어 주석, 코멘트(Comment) 예제


#include <stdio.h>

int main() {

  /* 이것은 주석입니다. */

  /*
     이렇게 쓸 수도 있고
  */

  /****************************************
     이렇게 쓸 수도 있습니다.
  *****************************************/


   // C++ 스타일의 주석문입니다.

   puts("안녕하세요. 여기는 프로그램 본체입니다.");
   return 0; // 여기는 끝입니다.
}




단, 주석문 속에 또 주석이 2중으로 겹쳐 있으면 안됩니다.
  /*  /* 이렇게 쓸 수는 없습니다. */  */

비주얼C에서는 이런 경고와 에러가 나고
0.c(15) : warning C4138: '*/' found outside of comment
0.c(15) : error C2059: syntax error : '/'

gcc에서는 이런 에러가 나게 됩니다.
0.c: In function `main':
0.c:15: error: parse error before '/' token




어떤 언어이든지, 주석문의 중복은 대체로 허용하지 않습니다.

다만,
 /*
  // 이런 식으로 겹쳐지는 것은 괜찮습니다. // 이런 식으로 // 이런 식으로
 */




참고로, /* */ 와 // 는, 자바(Java)와 자바스크립트(JavaScript)에서도, 주석 기호로서 사용됩니다.



☞ C/C++

엑셀 Excel 실수를 반올림하여 정수로; 소수점 특정 자리에서 반올림하는 함수; ROUND

엑셀에서는 ROUND() 함수로, 반올림을 할 수 있습니다.
ROUND(숫자, 자릿수)

의 형식입니다.



실수를 반올림하여 정수로 만들기


=ROUND(10.5, 0)
자릿수를 0 으로 지정하면, 실수가 반올림된 후 정수화됩니다.
결과: 11



소수점 몇 째 자리에서 반올림


=ROUND(10.45, 1)
결과: 10.5
자릿수를 1로 지정하면, 소수점 첫째 자리까지 나오고, 그 밑에서 반올림됩니다.


=ROUND(10.4445, 3)
결과: 10.445



실제 사용 예제: ▶▶ 엑셀, 소수 자릿수 지정, 소수점 다루기 함수; Excel Decimal 자리수

함수 없이 셀서식으로 반올림하기: ▶▶ 엑셀 반올림 방법, 엑셀에서 숫자 반올림 셀서식: Excel Round Number


소수점 이하를 무조건 버리는 법: ▶▶ 엑셀/Excel] 엑셀 소수점 이하 버리기 함수, TRUNC(), INT() 차이, 차이점


엑셀 비베에서 반올림: ▶▶ Excel] 엑셀 VBA(비베) 반올림 함수; 정수로, 지정한 자릿수만큼; Round To Int

VMware(가상피씨)의 속도가 빠른가요? 속도가 너무 느릴 때 해결법은?

VMware는, CPU는 가상화하지 않고 물리적 CPU를 그대로 사용합니다. 그래서 속도가 아주 빠릅니다.

실제PC에서 사용하는 것과 큰 차이가 나지는 않습니다. 단, 진짜PC의 물리적 메모리가 1GB쯤은 있어야 빠르게 실행됩니다.

만약 진짜PC의 진짜메모리가 512메가 정도밖에 없다면, 호스트OS를 윈도2000으로 하면 빠릅니다. 즉 윈도2000에서 VMware를 실행하면 만족스러운 속도가 나옵니다.


물리적PC의 사양은 좋은데, VMware의 속도, 특히 화면 속도가 엄청나게 느리다면, VMware Tools 를 설치하지 않아서 그런 것입니다.

VMware Tools 는 가상PC용 하드웨어 드라이버입니다. VMware의 가상 비디오 카드를 위한 드라이버 등이 VMware Tools 에 포함되어 있습니다.


VMware 속의 가상OS를 시작한 후, VMware 메뉴의
VM > Install VMware Tools

를 선택하면 설치가 시작됩니다. 만약 설치가 되지 않으면, VMware 속의 가상CD-ROM에 보면, VMware Tools 설치 파일이 있습니다. 그것을 수동으로 클릭하면 설치가 됩니다.



결론


VMware의 속도는 아주 빠릅니다. 만약 속도가 느리다면 VMware Tools 등의 문제 때문입니다.


☞ 소프트웨어

Perl] 펄 함수의 $_[0], $_[1], shift @_ 의 의미는? 서브루틴 파라미터(인수)받기, Subroutine Parameter

펄 함수의 파라미터를 받아서 처리하는 부분입니다. 함수(서브루틴)에 인수(파라미터)를 주어 호출하면, 그 인수들이 든 배열이 그 함수 내의 @_ 여기에 자동으로 들어갑니다. @_ 여기에서 파라미터를 뽑아서 사용하면 됩니다.

함수에 주어진 첫번째 파라미터는 $_[0] 입니다. $_[1] 은 두 번째 파라미터입니다. $_[2] 는 세 번째이고...


#!/usr/bin/perl
use strict; use warnings;


&foo(123, "ABC");

&num_test(2, 3);

&bar(1.32, "똠방각하");




sub foo {
  print "첫 번째 파라미터: ", $_[0], "\n";
  print "두 번째 파라미터: ", $_[1], "\n";
}


sub num_test {
  print $_[0] + $_[1], "\n";
}


sub bar {
  $_ = shift @_;
  print "첫 번째 파라미터: ", $_, "\n";

  $_ = shift @_;
  print "두 번째 파라미터: ", $_, "\n";
}


위의 예제 설명


&foo(123, "ABC"); 라고 했을 때, 123 은 $_[0] 이 되고, ABC 는 $_[1] 이 됩니다.


num_test()라는 함수에 지금 2와 3 이라는 두 개의 파라미터가 주어져 있습니다. 함수의 본체는, 주어진 2개의 파라미터를 플러스하여 출력하는 것입니다. 2+3=5 이기에, 5를 출력합니다.


&bar(1.32, "똠방각하"); 라는 함수에서 볼 수 있듯이, 함수 파라미터를 @_ 에서 shift 로 하나씩 뽑아 $_ 에 저장할 수도 있습니다. 작대기에서 곶감을 하나씩 빼먹는 것과 비슷합니다.



☞ Perl

[Perl/펄] 배열(Array)에서, 최소값(Min) 최대값(Max) 구하기

List::Util 모듈을 사용하여, 최소값/최대값 구하기


펄의 기본 모듈 중의 하나인 List::Util 속의 min max 함수를 사용하는 것입니다.
min / max 함수 안에 배열을 집어넣으면, 최소값이나 최대값을 반환합니다.
아래 예제에서는 @foo 라는 배열을 만들어, 최소 최대값을 구했습니다.

#!/usr/bin/perl
use strict; use warnings;

use List::Util qw/ min max /;

my @foo = qw/ 12 91 1 -88 4 7 25 305 10 9934 6553 -35 0 10 /;

print "Min: ", min(@foo), "\n";
print "Max: ", max(@foo), "\n";


결과:
Min: -88
Max: 9934





sort 함수 사용하여


배열(@foo)을 순방향 역방향으로 소팅(정렬)시킨 후, 그 배열의 첫번째 요소 ($foo[0]) 만 취하여, 최소/최대값을 구하는 방법입니다.

#!/usr/bin/perl
use strict; use warnings;

my @foo = qw/ 12 91 1 -88 4 7 25 305 10 9934 6553 -35 0 10 /;


@foo = sort { $a <=> $b } @foo;
print "Min: $foo[0]\n";


@foo = reverse sort { $a <=> $b } @foo;
print "Max: $foo[0]\n";


결과:
Min: -88
Max: 9934


@foo 는 foo 라는 이름의 배열이고, $foo[0] 는 배열 @foo의 첫번째 요소입니다.
그러나 $foo[0] 와 $foo 는 전혀 다른 변수이고 아무 상관도 없습니다.
물론 위의 코드에 $foo 라는 변수는 없습니다.




아무튼 배열에서, 최소값 최대값을 구하는 것은 간단합니다.

해쉬(Hash)의 최소/최대값을 구하는 방법은 여기에 있습니다: ▶▶ [Perl] 해쉬: 최대값 최소값 가진 키 구하기



크기가 큰 배열에서는 소팅으로 값을 찾으면 너무 느리기에, for문으로 찾는 방법입니다.
▶▶ 펄.Perl] 숫자 배열에서, 최소값 최대값 찾기 - Find Min Max Value


최소값 최대값 찾기 계산기: ▶▶ 평균 계산기, 합계 구하기, 표준편차 계산기, 중앙값; Sum Average Stdev Median Calc

Monday, August 21, 2006

Cygwin(시그윈)에서, more 명령을 less 로 교체 - 앨리어스(alias)를 사용

Cygwin(시그윈)에는 more 명령이 없었습니다. obsolete 된 것 같더군요. 즉, more 명령이 너무 낡은 명령이라 더 이상 지원하지 않는 것 같습니다.

bash: more: command not found

이런 에러 메시지가 나옵니다. 물론 시그윈은 윈도우에서 돌아가는 것이기에, 윈도우 쪽의 more 명령이 대신 나와야겠지만, 윈도우의 more 명령은, 실행파일로 된 외부 명령어가 아니라, 윈도우의 cmd.exe 에 내장된 내부 명령어이기에, 시그윈이 more 를 호출할 수 없습니다.


less 가 있기에, more 를 쓸 필요도 없겠지요. 그런데 간혹 more 를 요구하는 프로그램이 있습니다.

이럴 경우에는 less 를 more 라고 앨리어스를 지정해 주면 됩니다.


시그윈의 .bashrc 파일의 맨 밑에 다음 줄을 추가하고

alias more='less'


시그윈을 종료하고 다시 시작하면

이제 more 라고 쳐도 less 가 대신 나옵니다.




☞ 리눅스

[Perl/펄] 소수점 몇 째 자리에서, 엑셀 스타일 반올림 함수 - RoundXL

실수의 소수점 특정 자리에서 반올림을 해야 할 때가 있습니다.

아래에 소개하는 RoundXL 함수는 MS오피스 엑셀(Microsoft Excel)의 =ROUND() 함수와 거의 비슷하게 작동합니다.


RoundXL 함수의
첫 번째 파라미터는 반올림 대상이 될 실수,
두 번째 파라미터는, 소수점 몇 째 자리까지 나타내며, 그 밑을 반올림할 것인지 선택하는 수입니다. 값이 0이면, 실수를 정수화시킵니다. 그러나 엑셀과 달리 마이너스 값을 지정할 수는 없습니다.


#!/usr/bin/perl
use strict; use warnings;


print &RoundXL(42.444999999999, 3);


sub RoundXL {
  sprintf("%.$_[1]f", $_[0]);
}


실행 결과:

42.445


위의 함수는, 실수를 반올림하여 실수를 얻는 것이 목적인데, 실수를 반올림하여 정수를 얻는 함수는 여기에 있습니다: ▶▶ [Perl/펄] 실수 반올림하여 정수 만들기; RoundToInt 함수


☞ Perl

C언어 기초] 소수점 반올림 함수; Round To Int, roundToInt()

C언어에는 반올림 함수가 내장되어 있지 않기에, 다음과 같이 직접 만들어서 써야 합니다. 실수를 반올림하여 정수로 만드는 것입니다. 즉 가장 가까운 정수 (Nearest Integer) 를 구하여 반환하는 함수입니다.


실수 소수점 이하 반올림 예제


#include <stdio.h>

int roundToInt(double x);


int main() {

  printf("%d\n", roundToInt(10.499999999999999));

  return 0;
}


int roundToInt(double x) {
  if (x >= 0) return (int) (x + 0.5);
  return (int) (x - 0.5);
}


위의 소스 코드 맨 아래쪽의 int roundToInt(double x) {... 라는 곳부터가 반올림 함수입니다.


위의 소스를 컴파일하면 10 이 나오지만, 10.499999999999999 끝에 9를 하나 더 추가하면 11 이 나오는군요.

10.499999999999999 : 10
10.4999999999999999 : 11

이렇게 미묘함이 있습니다.

비주얼C는 물론 gcc 에서도 같은 결과였습니다.



실수를, 지정한 자릿수에서 실수로 반올림 함수: ▶▶ C언어] 실수를 실수로 반올림 함수, 자릿수 지정; Round to Double Function

반올림 없이 무조건 소수점 이하 버리기: ▶▶ C언어] 소수점 이하 버리기, 실수를 정수로; float to int

구글 맵] 상세한 일본 전국/동경(도쿄)시내 상세 지도; 무료 지도; Google Maps Japan Tokyo

구글 맵(Google Maps)이라는 지도 서비스인데, 브라우저 상에서 마치 구글 어스처럼, 지도를 자유롭게 확대 축소할 수 있습니다.


일본 동경(도쿄) 시내 지도: Google Maps Japan Tokyo

일본 도쿄 아카사카 부근의 지도: 옆으로 스크롤 가능
색상도 차분하고 아름답습니다.


일본 동경(도쿄) 시내 위성사진 지도
일본 도쿄 아카사카 부근의 위성사진: 클릭하면 확대

サテライト 라는 하얀 버튼이 맨 우측에 있습니다. 그것을 클릭하면 이렇게 지도가 위성사진으로 변합니다. (サテライト: Satellite; 인공위성)

マップ 라는 버튼을 누르면, 다시 일반적인 "지도"로 돌아갑니다. (マップ: Map)

즉, 첫번째 스냅샷과 두 번째 스냅샷은 똑같은 구역을 다른 방식으로 표현한 것입니다.


http://www.google.co.jp/maps
일본 구글 맵의 주소는 이곳입니다. 마우스휠을 위아래로 돌리면 확대/축소되고, 마우스로 끌어당기면 다른 곳으로 이동됩니다.


엄청나게 상세한 지도입니다. 이 정도의 자세한 지도를 서점에서 구하려면 적어도 몇 만원은 줘야 합니다. 이것이 한국에서 서비스가 된다면 폭발적인 반응이 있을 것 같습니다.



그런데 지리 학습 등의 목적으로 좀더 단순한 일본 지도가 필요하다면, 야후의 지도 서비스가 적당할 것 같습니다: ▶▶ 일본 전국 지도 보기 - 야후 재팬: Map of Japan







▶▶ [구글맵] 미국 전국 지도 보기 - Google Maps USA




도스(DOS) 배치파일 명령어 목록

윈도우2000이나 윈도우XP에서도, 도스창(명령 프롬프트)을 열면, 도스(DOS) 명령어들을 사용할 수 있습니다.

그리고 실행시킨 도스창에서 help 라고 입력하고 Enter키를 치면, 현재 사용 가능한 모든 도스 명령어 목록들이 나옵니다. (그렇지만 윈도우98에는 help 명령이 안될 것입니다.)


도스 명령어들의 자세한 목록은 여기에 있습니다: ▶▶ 모든 '도스 명령' 목록 보기, 윈도우2000 윈도우XP 에서



참고로, 도스창을 만드는 cmd.exe 에 포함되어 있는 명령어를 "내부 명령어"라고 하고,

별도의 exe 파일, 즉 실행 파일로 이루어져 있는 명령어를 외부 명령어라고 합니다.

그냥 도스 명령어라고 하면, 내부 명령어와 외부 명령어를 함께 지칭하는 것입니다.


외부 명령어 파일들은, 윈도우가 설치된 폴더 밑의 system32 라는 하위 폴더 속에 들어 있습니다.


☞ BATCH(.BAT)/VBScript(.VBS)

Sunday, August 20, 2006

[Perl/펄] 출력을 파일로 저장하기 - Save to File

결과를 화면으로 바로 출력하지 않고, 파일로 저장하고 싶을 때에는 다음의 방법들이 있습니다.


재지향으로 간단히 저장


#!/usr/bin/perl
use strict; use warnings;


print "Goooooooooooooooooooogle\n";

이 스크립트를 0.pl 등의 이름으로 저장하고, 그냥 실행시키면 화면에 Goooooooooooooooooooogle 이라는 문자열을 출력합니다. 그렇지만

0.pl > out.txt

라고 실행시키면, 화면으로 출력되지 않고 out.txt 라는 파일로 저장됩니다. out.txt 라는 파일을 열어보면 그 안에 Goooooooooooooooooooogle 이라는 문자열이 저장되어 있습니다.

펄에서는 이렇게 재지향(Redirection)을 사용하여 간단히 저장하는 것이 보편적입니다.

즉, 펄 스크립트의 결과 자체는 화면으로 출력하게 하고, 재지향을 이용해, 그 화면 출력을 파일 쪽으로 빼돌리는 것입니다.




정식으로 저장하기


복잡한 작업을 할 때는 다음과 같이 정식으로 파일을 열어서 저장합니다.

#!/usr/bin/perl
use strict; use warnings;


open FH, ">", "out.txt" or die "$!\n";

print FH "Goooooooooooooooooooogle\n";

close FH;


open 으로, out.txt 라는 파일을 저장용으로 생성합니다.

print 함수로, "Goooooooooooooooooooogle\n" 이라는 문자열을, FH 라는 파일핸들에 저장합니다. 즉 out.txt 에 저장합니다.

파일 저장 작업이 다 끝났으면 close FH; 이렇게 파일 핸들을 닫아줍니다.

위의 스크립트를 실행시키면, out.txt 라는 파일이 하드 디스크의 현재 디렉토리에 생성되어 있고, 그 안에 Goooooooooooooooooooogle 이라는 문자열이 저장되어 있을 것입니다.



☞ Perl

구글어스4] 팩맨(PACMAN) 크롭서클(Crop Circle) 발견 - Google Earth

크롭서클(Crop Circle)/미스테리 서클(Mystery Circle;미스터리서클)이란?


주로 영국의 밀밭에 나타나는 정체불명의 대형 그림을 말합니다. 기하학적인 무늬, 그리고 근래에는 프랙탈(Fractal) 그래픽 스타일의 무늬가 자주 나타납니다.

외계인이 그린 그림이라거나 사람이 조작한 것이라는 주장도 있지만 진실은 아직 저 너머에 있습니다.


다음은, 팩맨(패크맨;PACMAN)이라는 고전 게임 캐릭터가 그려진 크롭서클입니다.


구글어스 Google Earth: 팩맨(PACMAN) 크롭서클(Crop Circle)
클릭하면 확대


외계인들도 가끔씩은 팩맨을 즐기는 걸까요? 가장 이해하기 힘든 크롭서클이더군요.



크롭서클 찾아가기


구글어스 버전 4이상에서,

좌측 사이드바의 Search > Fly To 라는 입력창에

51°24'1.10"N 0°59'7.33"W

위의 좌표를 복사하여 붙여 넣고 Enter키를 치면, 팩맨 크롭서클이 있는 곳의 상공으로 자동으로 이동합니다.

마우스 휠을 돌려서 조금 화면을 확대하면 위의 그림처럼 크롭서클이 크게 보입니다.





☞ 구글 어스

☞ 미스터리

[엑셀] 10진수/16진수 변환 함수, HEX2DEC / DEC2HEX - 십진수 십육진수 상호 변환 - Excel Hex Dec

엑셀에는 16진수를 다루는 함수가 기본으로 내장되어 있지 않았습니다. "추가 기능"으로서 설치해 주어야 했습니다.

엑셀을 실행시킨 후
엑셀 메뉴: 도구 > 추가 기능 > 분석 도구

에 체크하고 "확인" 버튼을 누르면, 16진수를 다루는 다음 2종류의 함수를 사용할 수 있습니다.

HEX2DEC() : 십육진수를 십진수로 변환하는 함수
DEC2HEX() : 위와는 반대로, 십진수를 십육진수로 변환하는 함수



예제


셀에
=HEX2DEC("FF")
이렇게 입력하면 255 라는 결과가 나옵니다. 16진수 FF가 십진수로는 255이기 때문.

주의: 16진수 특히 알파벳이 섞인 16진수는 큰따옴표로 묶어서 함수에 넣어야 합니다. 그렇지 않으면 #NAME? 이런 에러가 납니다.



10진수를 16진수로 바꾸는 함수는 다음과 같습니다.
=DEC2HEX(255)
결과: FF




업데이트:
추가 기능 없이도 사용할 수 있는 진수 변환 함수입니다: ▶▶ Excel/엑셀] 16진수 10진수 변환 VBA 함수로, 십육진수/십진수를 추가 기능 없이; hexToDec decToHex

▶▶ Excel/엑셀] 2진수 10진수 변환 함수; 이진수 십진수; DEC2BIN / BIN2DEC

[Perl/펄] 랜덤(난수;Random)/무작위한 숫자 출력 함수 - rand - srand

무작위로 정수 출력 예제


#!/usr/bin/perl
use strict; use warnings;


### 0~9까지의 랜덤한 정수를 출력

  print int(rand(10)), "\n";



rand(10) 으로는

9.4976806640625
6.02752685546875
0.0225830078125
5.47760009765625
9.89288330078125
1.61102294921875

이런 실수들을 반환하는데, int 함수를 사용해 실수부를 제거했습니다. 따라서 0~9까지의 정수가 얻어집니다.

int(rand(100))
으로는 0~99까지의 숫자가 무작위로 나옵니다.



10~20까지의 랜덤한 정수 출력하기


print int(rand(11)) + 10, "\n";




srand() 함수


버전 5.004 이전의 오래된 펄에서는, rand() 함수 앞에 이렇게
srand();
를 배치해야 합니다. 요즘의 펄에서는 자동으로 srand()가 호출되기에 적어주지 않아도 됩니다. 낡은 유닉스 머신에는 아직도 v5.0 정도의 펄이 설치되어 있을 것입니다.

srand()는, rand()함수를 위한 씨앗값을 만들어주는 것입니다.



지정한 범위 내에서만 난수 구하기: ▶▶ Perl/펄] 특정 범위의 숫자(정수) 랜덤 출력: Random Range Min Max (rand)


▶▶ Perl 펄] 32비트 16진수 헥사(Hex) 난수; 32bit 2진수 Random(랜덤) 발생 함수

사진 속의 눈이 빨갛게 나오는 적목(赤目)현상 - Red Eye

어두운 곳에서 플래시(스트로보)를 터뜨려 인물 사진을 찍으면, 멀쩡한 사람의 눈이 빨갛게 보이는 경우가 있습니다. 플래시의 빛이 망막에 반사되어서 붉게 보이는 것이고 눈 자체에 이상이 있는 것은 아닙니다.

어두운 곳에서는 눈의 동공이 확장되어서 아주 넓어집니다. 그래서 플래시의 빛이 동공을 통해 들어가 망막에 반사되어 다시 나올 가능성도 높아집니다. 이 경우 눈이 빨갛게 보입니다.

소형 카메라의 경우 플래시가 카메라 렌즈 바로 옆에 바싹 붙어 있는데, 이러면 플래시의 빛이 망막에 반사될 가능성이 더욱 증가합니다.



눈이 빨갛게 되는 사진을 방지하는 법


* 가급적 밝은 곳에서 찍습니다.

* 플래시를 사용하지 않고 되도록 자연스러운 빛을 사용합니다.

* 플래시를 카메라에서 분리할 수 있다면, 플래시를 약간 다른 위치로 이동시킨 후 터트립니다. 참고: ▶▶ SC-28 니콘 Nikon TTL 조광 코드 사진, SC28 싱크 코드 사용기

* 카메라 자체에 내장된, 적목 방지 플래시 (Red Eye Reduction Flash) 기능을 사용합니다. 이것은 플래시를 2번 연속으로 터뜨리는 것입니다. 사진을 찍기 바로 전에 우선 한 번 터뜨리는데 이러면 눈이 부셔서 동공이 축소됩니다. 이 상태에서 다시 한 번 더 플래시를 터뜨려 사진을 찍습니다. 동공을 축소시킨 상태이기에, 적목 현상이 나타날 가능성이 대폭 줄어듭니다.

* 적목 방지 기능이 없는 카메라라면, 사진을 찍기 몇 초 전에 플래시를 몇 번 강제로 터뜨려 주고 사진을 찍습니다.





참고로, 동물의 사진을 찍을 때는 눈이 빨갛게 되는 것이 아니라, 하얗게 번쩍거리는 경우가 많습니다. 동물의 망막은 사람과 달리 거울처럼 되어 있기 때문입니다.


▶▶ [포토샵] 사진 속의, 빨간 눈 지우는 방법. 적목 현상 제거: Fix Red Eyes



Saturday, August 19, 2006

EmEditor(유니코드 에디터;이엠에디터) 다운로드 사이트, 설치법

텍스트 에디터는 많지만, 유니코드를 위해 최적화된 에디터는 EmEditor(이엠에디터)가 거의 유일할 것입니다. 물론 유니코드뿐 아니라 일반 텍스트도 편집할 수 있습니다.


<EmEditor 다운로드 페이지>
에 보면

EmEditor Professional
은 쉐어웨어이고

EmEditor Free
는 무료입니다.



EmEditor Professional
* Windows Vista/2003/XP/2000 (32-bit, usually click here)
* Windows Vista x64/2003 x64/XP x64 Edition (64-bit)
이런 2종류가 있는데, 32비트 PC라면 32-bit라고 된 것을 클릭합니다.

그러면 www.download.com 이라는 페이지가 열리는데, Download Now 라는 버튼을 누르면, 이엠에디터 설치 파일의 다운로드가 시작됩니다.

EmEditor Professional v6.00.1 버전의 경우에는, emed6001epx.msi 라는 파일명입니다.

emed6001epx.msi 이 파일을 클릭하면 이엠에디터 설치가 시작됩니다.



이엠에디터 설치


"I Agree"라는 곳을 선택하여, 사용 약관에 동의하고, Next 버튼을 누릅니다.




* Add a tray icon to the task bar
(트레이 아이콘을 태스크바에 추가)

* Associate text files
(.txt 확장자의 파일을 클릭하면, 메모장 대신 EmEditor가 실행되게)

* View Source by EmEditor on Internet Explorer
(EmEditor를, 웹페이지 HTML소스 보기 프로그램으로)

* Add EmEditor to Internet Explorer HTML editor list
(웹페이지 편집기 목록에 EmEditor 추가)


이런 옵션들이 나오는데, 저의 경우에는 맨 마지막 옵션 즉 "Add EmEditor to Internet Explorer HTML editor list"만 체크했습니다.







Install plug-ins
에 체크해 줍니다. EmEditor Professional v6.00.1 버전부터는, Diff, Explorer, Open Documents, Outline, Search, Snippets, Web Preview, and Word Count 등의 플러그인이 기본으로 설치됩니다.




어느 폴더에 설치할지 정합니다. 기본값은
C:\Program Files\EmEditor여기인데, 저는
D:\Program Files\EmEditor이렇게 바꾸었습니다.


이 단계가 완료되면 이제 설치가 자동으로 시작됩니다.




▶▶ [중국어] 간체자 <――> 번체자 자동 변환법

☞ 텍스트 에디터

[Perl(펄) 강좌] next if문의 의미; if조건문을 짧게 축약하기

next 는 루프(Loop) 안에서, 현재 항목에 대한 작업을 생략하고 다음 항목으로 건너뛰게 하는 것입니다.

쉬운 예제


배열 속의 이름들을 하나씩 출력하는데, 만약 그 이름 속에 숫자가 섞여 있으면, 출력을 생략하고, 다음 이름을 계속 출력하는 예제입니다.

#!/usr/bin/perl
use strict; use warnings;

  my @foo = qw/ 맹구 마당쇠 BigShow WinXP 이소룡 Win98 똘똘이 북가좌3거리 /;

  # 변칙적(?)인 if문
  foreach (@foo) {
    next if $_ =~ /\d/;  # 숫자가 섞인 이름이면 아래 작업을 취소하고, 다음 요소로 계속
    print $_, "\n";
  }


  # 원칙적인 if문
  foreach (@foo) {
    if ($_ =~ /\d/) { next; }
    print $_, "\n";
  }


그런데 펄에서는 if문에 많은 타이핑이 필요합니다. C언어와 달리, {} 괄호를 생략할 수 없기 때문입니다. 그래서 짧게 쓰는 지름길을 제공합니다.

if ($_ =~ /\d/) { next; }

이것을

next if $_ =~ /\d/;

이렇게 순서를 바꾸어 쓰는 것입니다. 즉 if문의 조건에 일치할 때 실행할 문장을 if 앞에 배치하는 것입니다. 이러면 모든 괄호를 생략할 수 있어 더 빠르게 타이핑할 수 있습니다. 단, 복잡한 조건문일 때는 이런 식으로 하면 에러가 날 수 있습니다.




☞ Perl

마우스 없을 때 키보드로만 컴퓨터 사용하기 - No Mouse

마우스가 없거나, 갑자기 작동하지 않을 때가 있습니다. 윈도우는 마우스가 없어도 키보드로 대부분의 작업을 할 수 있습니다.


시작 메뉴 열기


키보드의 밑에 창문 모양의 그림이 그려진 키가 있는데 그것을 누르면, 윈도우의 시작 메뉴가 나옵니다. 상하좌우 화살표키로 각 아이콘들을 선택 가능.


다른 프로그램으로 전환


Alt+Tab. 즉 Alt키를 누른 상태에서, Tab키를 누르면, 다른 프로그램의 창으로 이동할 수 있음. Alt+Shift+Tab을 누르면 역방향으로 프로그램을 고를 수 있음.


프로그램의 풀다운 메뉴 펼치기


Alt+F키를 누르면, 풀다운 메뉴를 아래로 펼칠 수 있습니다. 좌우 화살표키로 메뉴의 항목들을 자유롭게 선택할 수 있습니다.


Tab / Shift+Tab


"파일 열기 대화상자" 등에서, 키보드의 Tab(탭)키를 누르면, 대화상자의 각 구성요소(버튼 등)로 초점을 옮길 수 있습니다. Shift+Tab은 역방향으로...


Alt+"스페이스바"


Alt키를 누른 채, 스페이스바를 누르면 현재의 윈도에서 작은 메뉴가 나옵니다.

이때 X를 누르면 윈도를 최대화, S를 누르면 윈도의 크기 조절을 할 수 있습니다.


컨텍스트 메뉴 열기


마우스 우측 버튼을 클릭하면, 컨텍스트 메뉴가 나옵니다. 키보드의 Shift+F10 키로도 이 메뉴를 열 수 있습니다.


프로그램창 종료


Alt+F4 를 누르면 현재 창이 사라집니다.



☞ WINDOWS

Cygwin(시그윈)에, Vim (vi) 에디터 설치법

Cygwin(시그윈)은 기본적으로 아무 에디터도 설치해 주지 않습니다. Vim (vi) 에디터를 사용하려면, 직접 설치를 지정해 주어야 합니다.


Cygwin에, Vim 추가 설치 순서


시그윈 셋업 파일인 setup.exe 를 실행합니다.

"다음" 버튼을 계속 누르면, "Select Packages (패키지 선택)"라는 메뉴가 나옵니다.

대화상자의 제목줄을 더블클릭해서 "전체 화면"으로 확대합니다. 이렇게 해야 쉽게 선택할 수 있습니다.



패키지 선택 메뉴의 목록에 Editors 라는 카테고리가 있는데, [+] 기호를 클릭해서 펼치면,

vim: Vi IMproved - enhanced vi editor

라는 항목이 나옵니다. 그 항목 바로 좌측의 Skip 이라고 되어 있는 부분을 클릭하면, 현재 Vim의 버전이 7.0.035-1 등으로 표시됩니다. 이러면 VIm이 설치에 포함된다는 의미입니다.


이 상태에서 "다음" 버튼을 누르면 vim이 인스톨됩니다.




현재 vim 7.0 이 인스톨되는데, 너무 불안정하여서 사실상 쓸 수가 없었습니다. 현재 가장 안정적인 빔 버전은 6.4입니다.

위의 설치 과정에서 gvim 에 체크하면, GUI버전의 vim이 설치되는데, 잘 작동하지 않았습니다.


Cygwin용 vim을 설치하는 것보다는, 순수한 Win32용의 빔을 설치하는 것이 좋았습니다. (▶▶ Vim (VI; 빔) 과 GVim 소개 [리눅스와 윈도우용의 오픈소스/무료 텍스트 에디터] 참고)




☞ 리눅스

UNIX(유닉스) / Vim 에디터 등에서 비프음(삑삑하는 소리) 안 나오게 하기 - Beep OFF

유닉스나 리눅스에서는, 키보드를 조금만 건드려도, PC스피커에서 삑삑거리는 소음이 발생해서 아주 괴롭습니다.

개별적인 프로그램마다 일일이 끄는 방법은 너무 힘들기에, 한꺼번에 모든 비프음이 안나오게 하는 방법이 여기에 있습니다: ▶▶ [리눅스/Linux] 레드햇 9.0에서, 삑삑거리는 비프음(Beep) 끄기

래드햇 리눅스에서는 위의 방법으로, bash쉘과 Vim 에디터 등을 비롯한 모든 프로그램의 비프음을 완벽히 제거할 수 있었습니다. 아마 유닉스에서도 될 것입니다.





2007-02월 업데이트

레드햇 9.0에서는 분명히 비프 소리가 났는데, 요즘 페도라에서는 전혀 비프가 나지 않더군요. 다만 우분투에서는 계속 났습니다.

배포본을 만들 때 비프를 기본적으로 꺼주었으면 좋겠습니다. 전혀 무의미한 기능입니다.



☞ 리눅스(Linux)/유닉스(Unix)/시그윈(Cygwin)

비베/VBScript] Chr() / Asc() 함수. MsgBox 에서, Chr(13) 함수의 의미 - VBS

Chr() 함수는, 지정한 아스키 코드 (ASCII Code) 숫자에 맞는 글자를 출력합니다. 가령 대문자 A 의 아스키 코드는 10진수로 65입니다. 그래서

Chr(65)

라고 하면, 대문자 A가 출력됩니다. 그렇지만 Chr() 함수는 키보드로 직접 입력하기 힘든 특수문자를 출력하는 데에 주로 사용됩니다.


Chr(13) 은 개행문자(행갈이문자)를 나타냅니다. 쉽게 말해서, Enter키입니다. 키보드의 Enter키도 아스키 코드 값을 가지는데 바로 13번입니다. 따라서 Chr(13) 이라고 하면, 문장이 다음줄로 자동으로 넘어갑니다. (13이나 65 등은, 16진수가 아니고 그냥 10진수임)



예제: MsgBox 에서, 다음줄로 행갈이


MsgBox "첫 번째 줄" & Chr(13) & "두 번째 줄"

MsgBox "다시, 첫 번째 줄" & vbCr & "다시, 두 번째 줄"

위의 예제를 0.vbs 등의 이름으로 저장하고 클릭하면, 메시지 박스 2개가 나옵니다. 처음의 박스는 Chr(13)으로 행갈이가 되어 있고, 두번째 박스는, vbCr 로 행갈이되어 있습니다,

vbCr 은 Chr(13)을 상수로 만든 것입니다. 즉 vbCr 은 Chr(13)과 같습니다.




Asc() 함수


Asc() 는 Chr()과 정반대입니다. 어떤 문자를 입력하면 그 문자의 아스키 코드를 반환합니다. 가령

Asc("A")

라고 하면, 반환값은 65 입니다.



☞ BATCH/VBScript

Friday, August 18, 2006

[엑셀] WinZip(윈집) 속의 엑셀 워크시트(.xls)파일 자동 변경 방지 - Excel

좀 설명하기 힘든 현상이지만 윈집(WinZip)에서,

zip파일 속의, 엑셀 문서 파일을 클릭하면, 엑셀이 실행되면서 그 문서가 엑셀에 나타납니다. 물론 여기까지는 정상적입니다.

그런데 그 문서를 아무 수정없이 닫은 후, WinZip으로 다시 돌아가면, WinZip은 그 문서가 변경되었다며 업데이트(압축 갱신)할 것인지 물어봅니다.

업데이트를 선택해도 괜찮지만, 아무 것도 수정하지 않았는데도 파일이 변경되었다고 하니 당혹스러운 일입니다.



엑셀XP 또는 엑셀2003부터 생긴 현상입니다. 엑셀이 사용자 몰래 어떤 정보(?)를 xls파일에 기록하더군요.

정보도 정보지만, WinZip 속의 엑셀 파일을 볼 때 귀찮아서, 이 '기능'을 끄는 방법을 연구해 보았습니다.



해결법


엑셀 메뉴: 도구 > 옵션 > 보안 > 개인 정보 옵션 > 저장 시 파일 속성의 개인 정보 제거
에 체크하고 "확인" 버튼을 누릅니다. (켜는 것입니다. ON입니다. 기본적으로는 OFF되어 있음.)

그런 후, Ctrl+S키로, 엑셀 문서를 한 번 저장해 줍니다. (위의 설정을 파일에 저장해야 하기에)

zip 파일 속의 엑셀 문서라면, zip 속의 그 xls문서 파일을 한번 업데이트해줍니다.

그러면 이제 더 이상 자동으로 뭔가가 저장되지 않습니다.



이 설정은, 문서 당 저장되는 것이기에, 모든 문서에 일일이 이렇게 해주어야 하더군요.



☞ 오피스

Perl/펄] 외부명령(dir 등) / 외부파일(.exe 등) 실행하는 함수; system, exec

system() 함수로, 외부 명령/파일 실행 예제


system 이라는 이름의 함수로, 펄 안에서, 외부 명령이나 외부 실행파일을 실행할 수 있습니다.

#!/usr/bin/perl
use strict; use warnings;


# dir 명령 실행
system 'dir';



# 윈도우의 메모장 실행
!system('notepad') or die "$!\n";

# 위의 경우, 만약 notepad.exe 를 실행시키지 못했을 때는
# 에러 메시지를 출력하고 종료.





exec() 함수로, 외부 명령/파일 실행


exec 함수는 system 함수와 달리, 실행시킨 외부 명령이 종료되기를 기다리지 않습니다. 외부 명령을 실행시키고 즉시 펄 프로그램 자체도 종료시켜 버립니다. 그래서 exec 함수 뒤에 있는 펄 코드들은 실행되지 않습니다.



보통의 경우에는 system 을 사용하고,

외부 프로그램을 실행하는 동시에, 펄을 종료해야 할 때는 exec 함수를 사용합니다.


#!/usr/bin/perl
use strict; use warnings;

exec('dir');





위의 예제들은 윈도우용 액티브펄(ActivePerl)로 만들었는데, 리눅스에서도 마찬가지입니다.




▶▶ 펄/Perl] 외부명령 실행 후, 화면 글자 캡처하여 배열에 저장 - 실행 연산자 Backquote

▶▶ Perl/펄] COMMAND, CMD 실행; 도스 셀(DOS Shell) 호출 예제

☞ Perl(펄)

[QnA] 귀마개 층간소음 차음 효과; 고음 저음 차단 잘하나요? - 이어 플러그 Ear Plugs

현재 시판되는 귀마개들은 주로 공업용 귀마개인 것 같았습니다. 고음역의 기계 소음 차단에 중점을 두고 있었습니다.

그렇지만 층간소음 등의 생활소음에도 귀마개가 도움이 될 것입니다.

소음을 100% 차단하는 귀마개는 없고, 70%~50% 정도 차단되는 것 같습니다.

일반적으로 판매되는 것은 스폰지형이 대부분이었습니다. 귀를 찌르는 고음 같은 것은 확실히 차음률이 높다고 여겨졌습니다.

그렇지만 중저음의 소음은 60~50% 정도의 차음밖에는 되지 않는다고 생각됩니다.


3M 귀마개 200개 대량 구입한 구입기 + 사진: ▶▶ 3M 귀마개 좋은 것 구매기, 실물 사진; 쓰리엠 3M 1100 Ear Plug 29dB

▶▶ 소음 차단용 3M 귀마개(이어 플러그; Ear Plugs) 사용기

▶▶ 2006년 매미(말매미) 울음소리 소음 해결법; 귀마개로 - Cicada


[Perl 정규식] 문자열 치환(바꾸기)/순서 변경/삭제 - s/// 치환 연산자(Substitution Operator)

펄(Perl)에서 문자열을 치환(Replace)할 때는 s/// 연산자를 사용합니다.

가령 디폴트 변수인 $_ 에, 다음과 같이
$_ = "안녕하세요, 맹구씨!";

라는 문자열이 대입되어 있을 때

s/맹구/대추/;

라고 하면

"맹구"가 "대추"로 치환됩니다.

그래서 $_ 의 값은, "안녕하세요, 대추씨!" 가 됩니다.



Perl(펄)에서, 문자열 치환(Replace)하는 각종 예제


(아래 코드 박스를 한 번 클릭한 후, 좌우 화살표키를 누르면 좌우로 스크롤. 빠져나오려면, 코드 박스의 바깥을 클릭.)
#!/usr/bin/perl
use strict; use warnings;


### 가장 간단한 문자열 치환 ###

  $_ = "안녕하세요, 맹구씨!";
  s/맹구/대추/;

  print "$_\n";
# 결과: 안녕하세요, 대추씨!




### 디폴트 변수($_)가 아닌 일반 변수에 든 문자열 치환 ###

  my $temp = "안녕하세요, 맹구씨!";
  $temp =~ s/하세요/히 가세요/;

  print "$temp\n";
# 결과: 안녕히 가세요, 맹구씨!
# "=~" 를 사용해 특정 변수를 Binding 해주지 않으면, 디폴트 변수인 $_ 의 내용을 치환



### 문자열 추가/삽입 ###

  $_ = "안녕하세요, 맹구씨!";
  s/(맹구)/$1씨와 대추/;

  print "$_\n";
# 결과: 안녕하세요, 맹구씨와 대추씨!




### 순서 바꾸기 묘기(?)###

  $_ = "안녕하세요, 맹구씨!";
  s/(안녕하세요).*(맹구씨)/$2, $1/;

  print "$_\n";
# 결과: 맹구씨, 안녕하세요!
# $1 은, 첫번째 소괄호 "()" 속의 정규식에 매치되는 부분을 메모리에 저장하는 변수.
# $2 는 두번째 소괄호에서 매치되는 부분
# 복잡한 치환 작업을 할 때 사용하는 것입니다.
# 위의 경우, $1 은 (안녕하세요) 이고, $2 는 (맹구씨) 입니다.




### 문자열 일부분만 삭제 ###

  $_ = "안녕하세요, 맹구씨!";
  s/맹구//;

  print "$_\n";
# 결과: 안녕하세요, 씨!




### 전역 문자열 치환 ###

  $_ = "안녕하세요, 맹구씨! 맹구씨! 맹구씨! 맹구씨!";
  s/맹구/대추/g;

  print "$_\n";
# 결과: 안녕하세요, 대추씨! 대추씨! 대추씨! 대추씨!
# / 뒤에 g 를 붙이지 않으면, 맨 처음의 "맹구"만 "대추"로 치환되어
# 안녕하세요, 대추씨! 맹구씨! 맹구씨! 맹구씨!
# 이렇게 됨.



▶▶ Perl 펄] 정규식 옵션 m s 의미 사용법, Regex 문자열 검색 치환



Thursday, August 17, 2006

[Java/자바] JDK 와 JRE 의 차이점, 차이 - Java Development Kit / Java Runtime Environment

JDK : Java Development Kit


자바 개발도구입니다. 자바 프로그래밍을 할 때 필요한 컴파일러 등이 들어 있습니다. 자바 프로그래머가 아닌 일반인은 다운로드받을 필요가 없습니다.
JDK 를 설치했다면 아래의 JRE도 같이 설치됩니다.


JRE : Java Runtime Environment


컴파일된 자바 프로그램을 실행시킬 수 있는 자바 환경을 만드는 것입니다.

자바 프로그램을 실행시키려면 JRE 를 반드시 설치해야 합니다.

JRE 안에 자바 프로그래밍 도구는 없습니다. 자바 프로그래밍을 하기 위해서는 위의 JDK를 받아야 합니다. 둘 다 무료입니다.





▶▶ [Java] 자바 런타임과 JDK(개발도구; 컴파일러) 파일 다운로드하는 곳은? / 자바의 종류는? [QnA]

▶▶ [Java] 자바 매뉴얼(J2SE 5.0 Documentation) 다운로드, 'HTML Help 파일 (.chm)'로 하나로 합쳐진 것


<< Home

Categories
Some Recent Posts
Monthly Archives
Top