RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'분류 전체보기'에 해당되는 글 379
HTML  2006/11/02 14:19
다른 domain 간의 페이지(origin check)


두 개 이상의 프레임을 가진 페이지 간에 참조를 할 수 없는 경우가 있는데, 세가지 이유가 있습니다.
1. domain, 2. protocol, 3. port 이 다를 때, 서로 참조할 수 없습니다.


http://company.com/dir/page.html에서 아래의 URL을 참조 했을때의 결과입니다.

URL 결과이 유
http://company.com/dir2/other.html가능
http://company.com/dir/inner/another.html가능
http://www.company.com/dir/other.html불가능다른 domain
file://D|/myPage.htm불가능다른 protocol
http://company.com:80/dir/etc.html불가능다른 port

위의 경우 중에서 참조할 수 있는 한 가지 예외가 있습니다. domain입니다.
http://www.company.com/dir/other.html 에서 document.domain = "company.com";로 지정하면 서로 참조할 수 있습니다. 이것의 실행 후에 http://company.com/dir/page.html 페이지를 참조할 수 있습니다.



참조 가능할 때 사용할 수 있는 Properties
ObjectProperties
Imagessrc, lowsrc
Layersrc
Locationx, y 외에 모두
Windowfind
DocumentFor both read and write: anchors, applets, cookie, domain, elements, embeds, forms, lastModified, length, links, referrer, title, URL, formName (for each named form), reflectedJavaClass (for each Java class reflected into JavaScript using LiveConnect)

For write only: all other properties


NN3와 NN4에서 달라진 Origin Check(domain, protocol, port가 다른 페이지간의 참조시 일어남.)
1. form

이름이 있는 form은 NN4에서 origin check에 걸립니다. 이것을 피하기 위해서 폼 이름을 외부변수로 저장하여 window object의 property로 만들면 이 때부터 그 외부변수는 지정받은 폼이 됩니다. 이 외부변수로 참조할 form을 사용하면 됩니다.

2. file:URL

NN3에서는 <script SRC="...">로 아무런 protocol(file:, http:)도 사용할 수 있었지만, NN4에서는 한가지 제한 사항이 새로이 생겼습니다. 그것은 <script SRC="...">의 ...에 file: 외의 protocol을 가진 화일을 열었을 때, 열린 화일에서는 <script SRC="file:...">을 사용할 수 없습니다. file:을 사용할려면 한가지를 Netscape 사용자 폴더의 prefs.js화일에 넣어 줘야 하는데, 그것은 아래입니다.

user_pref("javascript.allow.file_src_from_non_file", true);

이것은 주의해서 사용해야 합니다. 보안상 문제가 있을 수 있습니다.

3. Layer

Layer에서 origin check는 다른 origins의 layer에서 일어납니다.
어떤 페이지가 하나 이상의 layer를 가지고 있을 때, 페이지 간의 layer를 먼저 사용하기 전에 origin check를 먼저 합니다.

4. Java Applet에서 Origin Check가 일어나는 때.

Applet가 JavaScript를 사용할 수 있게 하는 MYSCRIPT attribute를 가지고 있는 Applet가 JavaScript를 호출할 때 일어납니다. 여기서 applet의 origin은 applet 택을 가지고 있는 페이지의 URL입니다.



이 페이지 Origin Check는 확인 해보지 못했습니다.
Netscape 사의 설명을 번역한 것입니다.

IE에서는 다를 수 있습니다.



--
ie4에서 프레임에서 두 페이지가 같은 domain 이라도 host가 다를때 서로 페이지를 참조할 수 없습니다. ie4에서 다른 zone(지역도메인) 의 페이지를 참조하기 위해서는 두 페이지에 모두에
<script>	document.domain = "mySite.com"</script>
으로 같은 도메인을 지정하여야 하면 다른 호스트의 페이지를 참조할 수 있습니다. 위의 설정을 host1.mySite.com 과 host2.mySite.com 에 있는 두 페이지에서 지정을 해야합니다. 이것은 ie3.x대 에서는 없고 ie4에 추가된 cross-frame security 입니다.
2006/11/02 14:19 2006/11/02 14:19
이 글에는 트랙백을 보낼 수 없습니다
게임  2006/11/01 19:20


서부의 총잡이 죽이는구먼 헐헐..

님들은 몇점 ?
2006/11/01 19:20 2006/11/01 19:20
이 글에는 트랙백을 보낼 수 없습니다
Smarty에 내장된 캐시 내용들을 다양한 저장장치에 담을 수 있고, 사이트 내의 컨텐츠들이 업데이트될 때 손쉽게 캐시를 갱신할 수 있다. 이번 호에는 각 상황에 맞는 캐시 사용 방법과 Smarty의 보안 설정 방법에 대해 알아보도록 하겠다.
조한석 |마소 Jr.에 PHP를 연재하던 필자는 최근 Smarty에 흠뻑 빠져 살고 있다. 많은 PHP 프로그래머들과 Smarty를 함께 공유하고 싶은 마음이 간절하며, 지금도 틈틈이 Smarty 매뉴얼을 번역중이고, 최근 들어 학교 프로젝트를 수행하기 위해 파이썬을 공부하는 중이다.

지금까지 템플릿 파일들은 $template_dir에만 위치해 있었고, 이것을 읽어 들이는 방법은 다음과 같았다.

// PHP Script에서
$smarty->display(‘index.tpl’);
{* 템플릿에서 *}
{include file=’home/index.tpl’}

만일 $template_dir에 없는 템플릿들을 불러오기 위해서는 다음과 같이 절대경로를 이용해 템플릿을 가져오면 된다.

// PHP Script에서(Unix)
$smarty->display(‘/home/sizer/template/index.tpl’);
{* 템플릿에서(Windows) *}
{include file=’C:/My Website/template/index.tpl’}

앞의 표현들은 사실 웹 브라우저에서 ‘http://’를 생략하고 URL을 입력하는 것처럼 완전한 것은 아니다. 웹 브라우저들이 프로토콜 타입인 ‘http://’가 생략된 URL에 대해 기본적으로 ‘http://’라고 가정하는 것처럼, Smarty 엔진은 앞에서 생략된 리소스 타입으로 로컬 머신의 파일 시스템에 있는 파일들을 가리키는 리소스 타입인 ‘file’을 가정하고 있다. 그리고 앞의 표현들은 다음과 같이 좀더 길게 타이핑해줄 수도 있다.

$smarty->display(‘file:index.tpl’);
{include file=’file:home/index.tpl’}
$smarty->display(‘file:/home/sizer/template/index.tpl’);
{include file=’file:C:/My Website/template/index.tpl’}

리소스 플러그인 작성하기
Smarty를 사용하는 프로그래머는 파일 시스템이 아닌 데이터베이스나 LDAP, 혹은 공유 메모리 같은 저장장치에 저장할 수 있도록 별도의 리소스 플러그인을 작성하는 것이 가능하다. 그러나 다른 저장장치를 템플릿의 저장소로 사용하는 것은 아주 규모가 큰 카페와 같은 기능을 구현할 때나 고려해 볼 만한 것이고, 일반적인 성격의 웹 사이트에서는 거의 쓰일 일이 없다고 생각된다. 그런 이유로 데이터베이스에서 템플릿을 읽는 리소스 플러그인은 이 글을 다 읽고나서 독자 여러분들이 스스로 해보기를 바라며(Smarty 매뉴얼에 그렇게 실전적이지는 않은 예제가 있으니 참조하기 바란다), 이번 호에는 스킨 기능을 이용하는 웹 애플리케이션에서 필요한 템플릿들을 좀더 편리하게 지정할 수 있도록 리소스 플러그인을 추가하는 예제를 알아보도록 하겠다. <리스트 1>에 나와 있듯이 리소스 플러그인에 필요한 함수는 다른 플러그인과는 달리 4개가 필요하다.

◆ smarty_[resource_name]_template($tpl_name, &$tpl_source, &$smarty) : 템플릿 내용을 &$tpl_source를 통해 반환하는 함수, 지정한 템플릿을 찾는 데 성공하면 true를, 실패하면 false를 반환한다.
◆ smarty_[resource_name]_timestamp($tpl_name, &$tpl_source, &$smarty) : 템플릿이 만들어진 시간을 &$tpl_timestamp를 통해 반환하는 함수, 지정한 템플릿을 찾는 데 성공하면 true를, 실패하면 false를 반환한다.
◆ smarty_[resource_name]_secure($tpl_name, &$smarty) : 해당 리소스 타입이 안전한 것인지를 체크하는 함수(뒤에 나오는 보안과 관련된 함수)
◆ smarty_[resource_name]_trusted($tpl_name, &$smarty) : 해당 리소스 타입이 신뢰할 수 있는 것인지를 체크하는 함수(뒤에 나오는 보안과 관련된 함수)

<리스트 1>은 이와 같은 형식으로 작성된 리소스 플러그인을 plugins 디렉토리에서 자동으로 읽어 들이게 하는 방식이 아니라, 수동으로 register_resource() 함수로 등록시켰는데(이런 경우 플러그인 함수 이름 앞에 ‘smarty_’ 접두어를 붙일 필요가 없다), 일부 특정한 Smarty 자식 클래스에서만 사용하는 플러그인의 경우 이런 식으로 플러그인을 등록하는 방법이 종종 이용되므로 참조하기 바란다. 그리고 스킨을 순수한 템플릿만으로 만드는 것이 아니라 설정파일도 같이 사용하고 싶다면, 스킨 디렉토리의 설정파일을 로드할 수 있는 {skin_config_load} 같은 함수도 만들어 등록해줘야 할 것이다.

기본적인 캐시 사용법
사실 템플릿 리소스들은 컴파일된 이후에는 사용되지 않으므로 아무리 빠른 저장장치(예를 들어, 공유 메모리와 같은)에 저장한다고 해도 웹 사이트에서 얻는 성능상의 이익은 거의 없다고 봐야한다. 실제로 Smarty로 된 웹 애플리케이션의 성능을 개선하기 위해서는 지난 호에 배운 필터와 이번 호의 캐시 기능을 잘 활용해야 한다. 간단하게 Smarty에서 캐시를 활성화시키기 위해서는 다음과 같이 $cache_dir에 웹 서버가 읽기/쓰기가 가능하게 디렉토리의 퍼미션을 줄 필요가 있다.
// ‘/any_cache_path’는 읽기 쓰기가 가능해야 한다.
$smarty->cache_dir = ‘/any_cache_path’;

$smarty->caching을 1이나 2로 설정해주면 된다.

// 캐시가 종료되는 시간을 $cache_lifetime에 설정된 값으로 결정
$smarty->caching = 1;
// 캐시가 종료되는 시간을 캐시가 생성될 때 기록된 cache_lifetime에 의해 결정
$smarty->caching = 2;

또한 $cache_lifetime은 기본적으로 3600초(1시간)로 설정되어 있으며, 0일 경우 항상 캐시를 다시 만들어내고 -1일 경우 명시적으로 캐시를 지우지 않는 이상 영속적으로 사용된다.

$smarty->cache_lifetime = 60; // 캐시 종료시한을 1분으로 결정
$smarty->cache_lifetime = -1; // 캐시 만료시한을 두지 않는다.
$smarty->cache_lifetime = 0; // 캐시를 항상 다시 만들어낸다(테스트할 때 유용).

Smarty는 캐시를 활성화시킨 뒤 템플릿이나 설정파일에 변화가 있을 때마다 새롭게 캐시를 생성하게 되는데 $compile_check를 false로 설정하면 템플릿이나 설정파일이 바뀌어도 이전의 캐시를 그대로 사용하게 되며, 이것은 실제 사이트를 운영할 때 약간의 성능 개선 효과를 준다.

// 템플릿, 설정파일이 바뀌어도 캐시가 갱신되지 않는다.
$smarty->compile_check = false;

그럼 여기서 캐시의 종료시한을 15분으로 설정하고 템플릿과 설정파일의 변화유무를 감지할 수 있도록 설정한 <리스트 2>를 살펴보도록 하자. 얼핏 보면 <리스트 2>에는 별 문제가 없어 보인다. 하지만 이 스크립트는 성능상으로 그다지 캐시의 효과를 얻을 수 없고 사이트의 갱신된 내용을 효과적으로 반영하지도 못하는데, 그 이유는 다음과 같다.

짾 첫째, 만약 $mode가 ‘list’인 상태라면 캐시가 되었든 안되었든 항상 데이터베이스에 접속해서 결과를 가져오는 루틴이 필요하다. 데이터베이스에 저장된 내용의 변화가 없는 상태라면 이런 동작은 할 이유가 전혀 없고, 귀중한 데이터베이스 서버의 리소스만 낭비할 뿐이다.
짿 둘째, 템플릿이나 설정파일의 변화는 캐시에 반영되지만 PHP 스크립트의 변화는 캐시에 반영되지 않으므로 막상 데이터베이스에 변화가 있다고 하더라도 사이트 방문자는 왜 새로운 글이 올라가지 않는지 화를 낼 것이다(운 나쁘면 15분 정도 기다려야 새로운 글이 게시판에 확인할 수 있을 것이다).
스크립트 내에서 캐시 행동 제어하기
먼저 필요 없는 데이터베이스 연결 루틴 부문을 캐시 유무에 따라 수행여부를 결정할 수 있도록 개선해 보자. 특정한 템플릿이 캐시가 되었는지 안되었는지는 is_cached($tpl_name) 메쏘드를 통해 알아낼 수 있다. 다음과 같이 하면 캐시가 된 상태에서는 쓸데없이 데이터베이스에 접속하지 않게 될 것이다.

if (!$smarty->is_cached(‘list.tpl’)) {
// 데이터베이스에 접속해 결과를 가져온다.
}
$smarty->display(‘list.tpl’);

그 다음에 clear_cache() 메쏘드를 이용하면 해당 템플릿의 캐시된 결과를 명시적으로 지울 수 있다. <리스트 3>은 이 두 개의 메쏘드를 이용해서 기존의 캐시를 사용할지 아니면 데이터베이스에 업데이트된 내용을 반영해서 새롭게 캐시를 만들어내야 할지 처리하는 스크립트이다.

템플릿마다 별도의 캐시를 만들어내고 제어하기
<리스트 3>을 보면 $mode가 ‘list’인 경우 리스트가 길어도 그냥 한 페이지에 다 출력한다. 그러나 게시판과 같은 기능을 구현할 때는 리스트를 일정한 길이로 잘라 페이지별로 보여줄 필요가 있다. 이런 경우 $page_num과 같은 별도의 변수에 따라 출력을 달리해서 출력해야 한다.

$smarty->display(‘list.tpl’);

같은 식으로 템플릿을 출력한다면 ‘list.tpl’에 대해 오직 하나의 캐시만을 가지기 때문에 제대로 된 페이지 네비게이션을 구현할 수 없게 된다. 마찬가지로 게시판에서 특정한 글을 읽는 동작 역시 다음과 같이 하면 ‘view.tpl’에 대해 오직 하나의 캐시만을 가지므로 게시판에 접속하는 사용자들은 언제나 같은 글만을 읽게 될 것이다.

$smarty->display(‘view.tpl’);

이것을 해결하는 가장 간단한 방법은 특정한 매개변수에 따라 변동이 심한 페이지 영역에 대해서 캐시 기능을 끄는 것일 테지만, 게시판과 같은 웹 애플리케이션에서 리스트를 보여주는 부분과 글을 읽은 부분에서 캐시 기능을 끄는 것은 사실상 캐시 기능을 사용하지 않겠다는 소리나 마찬가지이다. 지금까지 $smarty->display($tpl_ name)과 같은 형식으로만 템플릿을 읽어 들여 출력했지만, 사실 display() 메쏘드의 완전한 형식은 다음과 같다.

display($tpl_name, $cache_id, $compile_id);

여기서 $cache_id 매개변수를 달리 설정하면 같은 템플릿에 대해 별도의 캐시를 만들어줄 수 있다. ? 과 같은 코드는 같은 ‘list.tpl’에 대해 각각 다른 캐시를 만들어 내는데, ? 와 같이 하면 $page_num에 따라 별도의 캐시들이 생성하게 된다.

$smarty->display(‘list.tpl’, ‘1’); → ?
$smarty->display(‘list.tpl’, ‘2’); → ?
$smarty->display(‘list.tpl’, $page_num); → ?

이렇게 생성된 별도의 캐시들을 지우기 위해서는 clear_cache()를 display()와 같은 형식으로 호출하면 된다.

$smarty->clear_cache(‘list.tpl’, $page_num);

그러나 아쉽게도 이런 방법으로 진행해도 문제는 발생한다. 만약 게시판에 새로운 글이 올라온다면, 리스트와 관련된 모든 캐시를 지워줘야 하는데, 앞과 같이 캐시를 생성했다면 다음과 같은 코드로 캐시를 하나하나 지워줘야 할 것이다.

for ($i=0; $i < $page_total; $i++) {
$smarty->clear_cache(‘list.tpl’, $i);
}

이런 식으로 하면 캐시 제어가 너무 복잡해질 가능성이 있다. 하지만 관련된 페이지들을 묶어서 $cache_id로 표현할 수 있으므로 걱정하지 말기 바란다. 게시판의 예를 계속해서 들어보면, 게시판의 리스트나 글 조회로 인해 생성되는 캐시들은 ‘|’를 이용해서 다음과 같이 그룹핑해주는 것이 가능하다(‘|’로 그룹핑하는 깊이에는 한계가 없다).

$smarty->display(‘list.tpl’, “board|list|$page_num”);
$smarty->display(‘view.tpl’, “board|view|$id”);

만일 특정한 글이 수정되었다면 리스트에는 변동이 없을 테니, “board|view|$id”에 해당하는 캐시만 새롭게 생성해 주면 될 것이다.

$smarty->clear_cache(‘view.tpl’, “board|view|$id”);

그러나 새로운 글이 올라왔다면 리스트 전체에 해당하는 캐시를 갱신해 줄 필요가 있는데, 다음과 같이 “board|list|$page_num”에서 $page_num을 생략한 채 캐시를 clear_cache()를 호출해 주면 자동으로 ‘board|list’에 속하는 모든 캐시들이 만료된다.

$smarty->clear_cache(‘list.tpl’, ‘board|list’);
또한 게시판 전체의 모든 캐시를 깨끗이 지우고 싶다면 clear_all_cache()를 사용해도 어느 정도 비슷한 효과를 낼 수 있겠지만, 그것보다는 다음처럼 $tpl_name을 null로 지정한 채 clear_cache()를 호출하면 list.tpl과 view.tpl과 상관없이 ‘board’에 속하는 모든 하위 캐시들을 만료시키게 된다.

$smarty->clear_cache(null, ‘borad’);

캐시 핸들러 제작과 등록하기
앞에서 리소스들은 아무리 빠른 장치에 저장하더라도 그로부터 발생하는 성능상의 이득은 그렇게 크지 않다고 했다. 하지만 캐시의 경우는 저장하고자 하는 장치가 빠르면 빠를수록 좋다. 여건만 된다면 모든 캐시된 내용들을 메모리에 저장해 보는 것도 생각할 수 있다. 로컬 파일 시스템이 아닌 다른 저장소를 캐시로 이용하기 위해서는 $cache_handler_func에 적당한 캐시 핸들러 함수를 만들어 등록시키면 된다.

$smarty->cache_handler_func = ‘database_cache_handler’;

등록할 캐시 핸들러 함수의 레이아웃은 다음과 비슷한 모습으로 작성하게 된다.

function any_cache_handler($action, &$smarty, &$cache_content,
$tpl_file = null,
$cache_id = null,
$compile_id = null) {
switch ($action) {
case ‘read’: // 캐시로부터 캐시된 내용을 읽는 루틴
case ‘write’: // 캐시에 새로운 캐시 내용을 쓰는 루틴
case ‘clear’: // 캐시 내용을 삭제하는 루틴
default: // ‘read’, ‘write’, ‘clear’이외의 행동은 에러이다.
}
}

<리스트 5>는 Smarty 메뉴얼에 있는 MySQL용 캐시 핸들러 예제인데, 이것은 앞에서 소개한 캐시 그룹핑 기능을 지원하지 못한다. 따라서 앞에서 언급한 대로 캐시들을 하나하나 제거하는 루틴을 구현해 주거나 좀더 기능을 추가할 필요가 있다. $CacheId 이외에 $tpl_file, $cache_id, $compile_id를 나타내는 컬럼을 테이블에 추가한 뒤 그에 맞는 쿼리문을 수행하는 루틴을 핸들러에 삽입하면 될 텐데, 이것은 다음 시간까지 독자 여러분들의 숙제로 남기도록 하겠다(기본 캐시 핸들러의 알고리즘을 살펴보려면 ‘Smarty.class.php’를 참조하면 된다).

Smarty를 안전하게 실행시키기
Smarty는 템플릿 안에 {php}..{/php}나 {include_php}..{/include_ php}를 통해 PHP 코드들이 삽입돼 실행될 수 있다. 그리고 말한 적은 없지만 {if}..{/if} 동적 블럭문이나 변수 변환자에서 일반 PHP 함수를 사용할 수도 있다.
{if count($array) > 1}
..
{/if}
즉, 템플릿 내에서 이와 같은 문장을 사용할 수 있다는 의미인데, 여기서 물론 count는 템플릿 함수가 아닌 PHP 함수 count를 가리킨다. 이런 특징들은 잘만 사용되면 나름대로 편리함을 줄 수도 있겠지만, 편리함을 위해 여러분의 웹 사이트의 안전을 포기할 수는 없는 법이다. Smarty는 보안에 민감한 영향을 줄 수 있는 특징들을 템플릿에서 사용할 수 없도록 하거나, 또 신뢰할 수 있는 위치에 있는 템플릿만을 처리할 수 있도록 멤버 변수들을 설정해 줄 수 있다. 먼저 가장 기본적인 보안 관련 멤버 변수에는 $security가 있는데, 이것을 true로 하면 기본적으로 Smarty 템플릿 엔진은 다음과 같이 행동하게 된다(다음에 나오는 행동들은 $security_setting에 의해 조정될 수 있다).

◆ $secure_dir에 설정된 디렉토리들 밑에 있는 템플릿들만을 사용할 수 있다. (display(), fetch() 메소드와 {include} 템플릿 함수 등에서 이 값을 체크한다)
◆ 만일 $php_handling가 SMARTY_PHP_ALLOW로 설정되어 있으면, 이 값은 묵시적으로 SMARTY_PATH_PATHTHRU로 교체된다.
◆ {php}..{/php} 템플릿 함수는 허용되지 않는다.
◆ {if}..{/if} 동적 블럭문에서 $security_setting에서 허용하는 함수를 제외한 일반 PHP 함수를 사용할 수 없다.
◆ 변수 변환자에서 $security_setting에서 허용하는 함수를 제외한 일반 PHP 함수를 사용할 수 없다.

앞에 나오는 멤버 변수들을 하나하나 살펴보도록 하자. 우선 $secure_dir의 값은 허용할 템플릿 디렉토리를 다음과 같이 설정하면 되는데, 허용할 템플릿 디렉토리가 많다면 배열로 설정해주면 된다.

$smarty->template_dir = ‘/home/sizer/public_html/source/template’;
$smarty->compile_dir = ‘/tmp/site/localhost/compile’;
$smarty->security = true;
$smarty->secure_dir = ‘/home/sizer/public_html/source/template’;
$smarty->display(‘/home/sizer/public_html/source/not_allowed_template/index.tpl’);
$smarty->display(‘/home/sizer/public_html/source/template/index.tpl’);

허용되지 않는 템플릿을 포함하는 부분에서 다음과 같은 메시지를 볼 수 있다.

◆ PHP Warning: Smarty error : (secure mode) accessing “/home/sizer/ public_html/source/not_allowed_template/index.tpl” is not allowed in /usr/local/share/php/smarty/Smarty.class.php on line 595

두 번째로 $php_handling 멤버변수는 템플릿 내에 삽입된 {php}..{/php} 문장을 어떻게 처리할지 결정하는 함수로서 다음과 같이 네 가지 동작을 따른다.

짾 SMARTY_PHP_PASSTHRU : 해당 태그 내용을 있는 그대로 출력한다.
짿 SMARTY_PHP_QUOTE : 해당 태그 내용을 HTML 태그로 감싸 출력한다.
쨁 SMARTY_PHP_REMOVE : 해당 태그 내용을 삭제한다.
쨂 SMARTY_PHP_ALLOW : 태그 안에 있는 PHP 코드를 실행한다.

다음으로 $security_setting 멤버변수는 $security가 true로 설정된 상태에서 보안 수준을 결정할 수 있는 배열로서 다음과 같은 요소들을 가지고 있다.

◆ INCLUDE_ANY : true로 설정하면 $secure_dir에 있는 값을 무시한다. 기본 값은 false이다.
◆ PHP_TAGS : true로 설정하면 템플릿 내에서 {php}..{/php}를 사용할 수 있다. 기본 값은 false이다.
◆ PHP_HANDLING : true로 설정하면 $php_handling에 있는 값을 체크하지 않고 PHP 코드를 항상 실행한다.
◆ IF_FUNCS : {if}..{/if} 문에서 사용할 수 있는 함수들을 설정하며, 기본적으로 허용되는 함수로는 ‘array’, ‘list’, ‘isset’, ‘empty’, ‘count’, ‘sizeof’, ‘in_array’, ‘is_array’가 있다.
◆ MODIFIER_FUNCS : 변수 변환자에서 사용할 수 있는 함수들을 설정하며, 기본적으로 허용되는 함수는 ‘count’이다.

그리고 $trusted_dir이라는 멤버변수가 있는데, 이 변수로 설정한 디렉토리 밑에 있는 템플릿들은 {include_php}를 통해 PHP 코드를 실행할 수 있게 되는데, $secure_dir과 $trusted_dir에 같은 디렉토리가 중복되어 있다면 $secure_dir이 우선권을 가진다.

다음에는 스킨 메모장 제작
이번 호에는 리소스 플러그인과 캐시 제어법, 그리고 보안과 관련된 멤버변수들에 대해 알아보았다. 여러분들은 이제 Smarty 템플릿 엔진에 대해 대부분의 이론적인 지식을 쌓은 셈인데, 막상 Smarty를 이용해서 웹 사이트를 어떻게 구축할 것인가에 대해 고민이 될 것이다. 사실 필자도 아직까지 짙은 안개 속에서 방황하는 감이 없지 않았는데, 아무래도 Smarty를 이용한 실전 코드들이 아직 그렇게 많이 살펴보지 않은 탓이라고 생각한다(Smarty를 이용한 사이트나 웹 애플리케이션은 아직까지 그렇게 많지 않은 편이기도 하다). 약속한 커리큘럼을 따르려면 다음 호에는 Smarty를 이용해서 간단한 스킨 메모장을 만들어 봐야겠지만, 사정이 된다면 PEAR와 Smarty를 이용한 좀 더 큰 규모의 웹 사이트 구축 방법을 소개할지도 모르겠다.

2006/11/01 18:43 2006/11/01 18:43
이 글에는 트랙백을 보낼 수 없습니다

Hey, I didn't know you could do that

여러분이 개발자이고 나와 같은 길을 걸어 왔다면, 웹페이지에서 많은 Javascript 조각들을 사용해 왔을 것이다. 마치 UI 딱풀 마냥..

최근까지 나는 Javascript 내가 취업 했을 때보다 객체지향(OO_ 능력을 가졌다고는 하지만 별로 그것을 사용해야하는 느낌은 받지 못했다. 브라우져들이 Javascript DOM 좀더 표준화된 형상을 지원하기 시작함에 따라, client 상에서 구동하기 위한 복잡하고 기능적인 코드를 작성하 것이 가능해졌다. 그것은 AJAX 사상(事象) 탄생하도록 도왔다.

우리 모두가 AJAX 애플리케이션을 만들기위해 코드를 작성하는 것을 것을 배울 즈음해서, 우리가 알고있었던 Javascript 정말 빙산의 일각에 불과했다. , 이제 우리는 입력값 검사와 하찮은 업무들과 같은 간단한 UI 허드렛일들을 넘어서 사용되고 있는 Javascript 살펴 것이다. 요즘, client 상의 코드는 점점 진보적이고 계층화되며, 많이 실제 데스크탑 애플리케이션 또는 c/s환경의 무거운 client 처럼 되어 가고 있다. 우리는 class library, object model, hierarchy, pattern 그리고 단지 우리의 server 코드에서 눈에 익었던 다른 많은 것들을 알아 것이다.

여러가지면에서 우리는 갑작스레 화면의 bar 전보다 훨씬 높게 놓는것에 대해 얘기 할수 있다. 새로운 WEB 위해 애플리케이션들을 작성하기 위해서는 훨씬 강도높은 기술의 숙달을 필요로 한다. 그리고 우리는 목적을 이루기 위해서 우리 자신의 Javascript 기술들을 향상시켜야만 한다. 만일 외부에 존재하는 많은 javascript library 사용하기를 시도한다면, Prototype.js, Scriptaculous, moo.fx, Behaviour, YUI, 등등 처럼, 여러분은 결국 JS code 여러분 스스로 판독해서 알아야 할것이다. 아마 여러분은 라이브러리들이 그것을 구현하는 방법을 배우기 원하거나 알기 원하거나 해서, 또는 라이브러리가 사용법을 이해하기 위한 유일한 방법이거나 해서, 문서가 대부분의 라이브러리들과 관련되어 있어 보이지 않거나 해서..( Maybe because you want to learn how they do it, or because you're curious, or more often because that's the only way to figure out how to use it, since documentation does not seem to be highly regarded with most of these libraries. 아마도 이유인즉 그것들이 어떻게 동작하지 배우고 싶기 때문이거나, 호기심 때문이거나, 종종 라이브러리들의 대부분이 문서화가 되어있기 때문에, 사용법을 알기 위한 유일한 방법이 그것밖에 없기 때문일 것이다. ) 밖에 무엇이든지 경우에 있어서, 전에 그것과 같은 어떠한 것들을 본적이 없다면 여러분은 낯설고 두려운 상황에 직면하게 것이다.

글의 목적은 아직 익숙하지 않은 생성자들의 타입들을 꼼꼼히 설명함에 있다.

Related article

Prototype.js documentation

JSON

JavaScript Object Notation (JSON,) AJAX 테마와 관련하여 갑자기 새로운 기술 용어 하나이다. JSON javascript에서 선언적 object 하나의 방식이다. 이제 바로 예제를 보고 어떻게 처리하는지 보도록 하자.

var myPet = { color: 'black', leg_count: 4, communicate: function(repeatCount){

for(i=0;i<repeatCount;i++) alert('Woof!');} };

                

, 소스 포맷을 약간 추가 해서 알아 보기 쉽게 보도록 하자:

var myPet = {

     color: 'black',

     legCount: 4,

     communicate: function(repeatCount){

           for(i=0;i<repeatCount;i++)

                 alert('Woof!');

     }

};

                

여기서 우리는 두개의 속성들(color legCount) 메서드(communicate) 이용하여 object 참조를 만들었다. 콤마로 구분된 리스트로서 object 속성들과 메소드들을 정의되어있는것을 이해하는것은 어렵지 않은 일이다. 구성들을 name으로 정의되어 보여지며 colon(:) 따라오서 다음으로 정의부 이다. 속성의 경우에서는 단지 값으로 정의부를 채운다. 익명 함수(anonymous function) 할당으로 메소드들을 만든다. 이는 다음 아래 줄에서 자세히 설명할 것이다. object 만든 후에 myPet 변수에 할당하며, 우리는 다음과 같이 변수를 사용 할수 있다:

alert('my pet is ' + myPet.color);

alert('my pet has ' + myPet.legCount + ' legs');

//if you are a dog, bark three times:

myPet.communicate(3);

                

여러분은 요즘 JS에서 도처에 사용되어진 JSON 것이다. 함수들에 인수, 리턴 값들, 서버의 응답들(string 에서) etc.

What do you mean? A function is an object too?

이는 질문에 대해 생각해 본적 없는 개발자들에게는 생소 것이지만 JS에서 함수(function) 또한 object이다. 예를 들어, string 처리하는 다른 함수에 인자로서 함수를 처리 있다. 이는 광범위하게 사용되어지고 매우 유용하다.

예제를 보도록 하자. 우리는 다른 함수(annoyThePet) 함수들(myDog.bark, myCat.meow) 인자로 주어 것이다. annoyThePet function에서 인자로 주어진 function 사용 것이다.

var myDog = {

     bark: function(){

           alert('Woof!');

     }

};

var myCat = {

     meow: function(){

           alert('I am a lazy cat. I will not meow for you.');

     }

};

function annoyThePet(petFunction){

     //let's see what the pet can do

     petFunction();

}

//annoy the dog:

annoyThePet(myDog.bark);

//annoy the cat:

annoyThePet(myCat.meow);

                

우리가 myDog.bark myCat.meow 추가도니 괄호 "()" 없이 인자로 사용한 것에 대하여 주목 해야 한다. 만일 우리가 인수로 넘긴 function 존재 하지 않거나 method 호출하고 return value 인수로 넘긴다면, 경우에 대해 undefined 보일 것이다.

여러분이 나의 게으른 고양이가 처럼 짖게 만들기 원한다면, 여러분은 이처럼 쉽게 있다:

myCat.meow = myDog.bark;

myCat.meow(); //alerts 'Woof!'

                

Arrays, items, and object members

다음 JS안에 줄은 같은 일을 한다.

var a = new Array();

var b = [];

                

나는 여러분이 이미 알고 있는 대로, 여러분은 사각 괄호를 사용하여 array안의 각각의 아이템들을 접근 있다:

var a = ['first', 'second', 'third'];

var v1 = a[0];

var v2 = a[1];

var v3 = a[2];

                

하지만 여러분들을 숫자 색인으로만 접근 제한하지 않는다. 여러분은 string으로 멤버의 이름을 사용하여 JS object 멤버들을 접근 있다. 다음 예제는 object 만들고 name으로서 어떤 멤버들을 추가한다.

var obj = {}; //new, empty object

obj['member_1'] = 'this is the member value';

obj['flag_2'] = false;

obj['some_function'] = function(){ /* do something */};

                

위의 코드는 아래와 같이 동일한 효과를 가진다:

var obj = {

     member_1:'this is the member value',

     flag_2: false,

     some_function: function(){ /* do something */}

};

                

다양한 방법으로, JS에서 object들의 사상과 연관 arraray(hashes)들은 구별 하지 않는다. 다음 역시 같은 일을 한다.

obj.some_function();

obj['some_function']();

                

Enough about objects, may I have a class now?

OOP 프로그래밍 언어들의 강력한 힘은 class들의 사용에서 나온다. JS에서 나는 어떻게 class들을 정의하는지 나의 이전 경험으로 비춰볼때 짐작초차 하기 어렵다. 직접 판단하시오.

//defining a new class called Pet

var Pet = function(petName, age){

     this.name = petName;

     this.age = age;

};

//let's create an object of the Pet class

var famousDog = new Pet('Santa\'s Little Helper', 15);

alert('This pet is called ' + famousDog.name);

                

우리의 Pet class method 추가 하는 방법을 보도록 하자. 우리는 모든 class들이 가지고 있는 prototype property 사용하게 것이다. prototype property class 어떠한 object 가지고 있을 모든 멤버들을 포함하는 object이다. String, Number, and Date 같은 default JS class 조차도 prototype object 가지고 있다. 우리는 method들과 property들을 prototype object 추가 있다. class 어떠한 object 새로운 멤버를 자동으로 얻는다.

Pet.prototype.communicate = function(){

     alert('I do not know what I should say, but my name is ' + this.name);

};

                

prototype.js 같은 라이브러리는 여러모로 편리할 때가 있다. 만일 우리가 prototype.js 사용한다면, 우리의 코드를 깔끔하게 있다.(적어도 견해로는..)

var Pet = Class.create();

Pet.prototype = {

     //our 'constructor'

     initialize: function(petName, age){

           this.name = petName;

           this.age = age;

     },

    

     communicate: function(){

           alert('I do not know what I should say, but my name is ' + this.name);

     }

};   

                

Functions as arguments, an interesting pattern

만일 여러분이 클로져(절차를 오브젝트로서 취급하는 기능. 오브젝트화 절차를 클로져라함) 지원하는 언어들 - Ruby 또는 C#2.0- 이용하여 작업한 적이 없다면 여러분은 다음 이디엄이 매우 생소하다는것을 느낄 것이다.

var myArray = ['first', 'second', 'third'];

myArray.each( function(item, index){

     alert('The item in the position #' + index + ' is:' + item);

});

                

~! 내가 너무 앞어서 여러분이 이것보다 좋은 기사를 찾아 보기 전에 여기 무슨 일이 생겼는지 설명한다.

무엇보다 먼저, 예제에서 우리는 prototype.js library 사용하고 있다. 이것은 Array class each function 추가한다. each function function object 하나의 인자를 받는다. 차례로, array에서 item 대해 function 한번씩 호출 것이며, 호출될때 두개의 인자를 전달한다. 현재 item 대한 item index 이다. 우리의 iterator function 호출 해보자. 또한 우리는 이것과 같은 작성된 코드를 작성할 있다.

function myIterator(item, index){

     alert('The item in the position #' + index + ' is:' + item);

}

var myArray = ['first', 'second', 'third'];

myArray.each( myIterator );

                

비록, 마지막 포맷이 이해하기에 편하지만 myIterator function 찾는 코드에서 주변으로 튀어 버리는 현상을 야기한다. myIterator 호출하는 같은 장소에서 iterator function 로직을 가지는것이 좋다. 또한, 이경우에, 우리의 코드에서 어디 다른 곳에 iterator function 필요로 하지 않을 것이며, 그래서 우리는 문제없이 myIterator function anonymous function 있다.

원래의 예제를 분명하게 하기 위해서 어떤 하이라이팅 효과를 이용해서 다시 보자.

                      

var myArray = ['first', 'second', 'third'];

myArray.each( function(item, index){

     alert('The item in the position #' + index + ' is:' + item);

} );

                

This is this but sometimes this is also that

우리가 가지고 있는 가장 일반적인 문제들 가운데 하나는 JS 이용함에 있어서 this 키워드의 사용을 우리의 코드에 작성하기 시작할 이다. 그것은 실제 올가미가 될수 있다.

우리가 전에 언급한 처럼, 함수 또한 JS에서 object이고 때때로 우리는 function 전달한 것을 알아 채지 못한다.

예제로 코드 조각으로 다뤄 보자.

function buttonClicked(){

     alert('button ' + this.id + ' was clicked');

}

var myButton = document.getElementById('someButtonID');

var myButton2 = document.getElementById('someOtherButtonID');

myButton.onclick = buttonClicked;

myButton2.onclick = buttonClicked;

                

buttonClicked function 어떠한 object 외부에서 정의 하였기 때문에 우리는 this 키워드가 window 또는 document object 참조를 포함 것이라고 생각하는 경향이 있을 것이다.(이코드 브라우저에서 보여지는 HTML 페이지의 중앙에 있다고 가정 하자.)

그러나 우리가 코드를 실행시켜 보면 그것이 클릭된 버튼의 id 가리키거나 보여지는 것으로 작동되어 보여진다. 버튼의 onclick method buttonClicked object 참조를 포함하게 되며, 이전의 거기에 무엇이 있던간에 교체되어 진다. 버튼을 클릭할때 마다, 브라우저는 다음 줄과 같은 어떤 일을 수행할 것이다.

myButton.onclick();

                

결국 그렇게 혼란스러운것은 아니다. 그렇죠? 그러나 여러분이 다뤄야할 다른 object 갖기 시작했고 버튼의 click 같은 이벤트에서 이러한 object 반응시키기 원한다.

var myHelper = {

    

     formFields: [ ],

    

     emptyAllFields: function(){

           for(i=0; i<this.formFields.length; i++){

                 var elementID = this.formFields[i];

                 var field = document.getElementById(elementID);

                 field.value = '';

           }

     }

};

//tell which form fields we want to work with

myHelper.formFields.push('txtName');

myHelper.formFields.push('txtEmail');

myHelper.formFields.push('txtAddress');

//clearing the text boxes:

myHelper.emptyAllFields();

var clearButton = document.getElementById('btnClear');

clearButton.onclick = myHelper.emptyAllFields;

                

나의 페이지에서 Clear button 클릭 할수 있고 3개의 text 박스들을 모두 비울 것이다. 다음에 여러분은 runtime error 얻기 위해 단지 버튼 클릭만 시도하면 된다. 에러는 this 키워드와 관련 있을 것이다(추측 컨데..). 문제는 this 버튼에 참조를 포함한다면 this.formFields 정의 되지 않는다 것이다. 이것은 정확하게 무슨 일이 발생 하겠는가 이다. 한가지 빠른 해결책은 우리의 코드 마지막 줄을 작성하는 것이 것이다.

clearButton.onclick = function(){ myHelper.emptyAllFields(); };

                

그것은 우리가 helper object 컨텍스트 안에 우리의 helper method 호출하는 특정의 타입의 새로운 function 만드는 방법이다.

2006/10/28 20:06 2006/10/28 20:06
이 글에는 트랙백을 보낼 수 없습니다

작성일 ::

v2, 오후 6:45 2005-09-27

v1, 오전 11:26 2005-08-31

[지원스팩 APP]
# BVRDE - 문번호 미지원, 블럭폴딩 미지원
# 에디트플러스, 2.20, http://www.editplus.com/kr/, 블럭폴딩 미지원
# Relo,1.1, http://www.fifsoft.com/relo/
           http://sourceforge.net/projects/fidel/ 윈도우용
# Wide Studio, http://sourceforge.net/projects/widestudio/
# Visual-Mingw

+ 진행상황 : 개발중단

+ 사이트 : http://visual-mingw.sourceforge.net/
+ 스크린샷  http://visual-mingw.sourceforge.net/shots.htm
# Mingw Studio,

+ 사이트   : http://www.parinya.ca/ (<---폐쇄됨)
+ 스크린샷  http://www.parinya.ca/mds_win_scn_tn.html
            http://www.parinya.ca/mds_linux_scn_tn.html
# Rhide, http://www.rhide.com/(예전 터보씨처럼 생겼음)
# Anjuta C/C++ IDE,  https://sourceforge.net/projects/anjuta/
# The V C++ GUI Framework, http://sourceforge.net/projects/vgui/ 
RSXIDE
Quincy 2005
VIDE

TC비슷

$ DAC, http://www.ristancase.com/dac/v40/index.php
+ 스크린샷  http://www.ristancase.com/dac/v40/images/DACV40big.gif

$ Edituer, http://www.studioware.com/index.htm


[IDE 표준 스팩]

[1.에디터]
-라인넘버(문번호)
-블럭폴딩,Code Folding
+ http://www.ristancase.com/dac/v40/images/DACV40big.gif

-신텍스하이라이트(문법강조,Syntax Highlight )
-프로젝트관리자(워크스페이스메니져, 단위파일관리자)
-찾기
-인쇄미리보기

; 여백편집가능


-헥스에디터
+ http://www.gridinsoft.com/notepad/screenshot08.php
+ http://www.utopia-planitia.de/us/screenshot5.html

-템플릿지원
-다이어그램 표현

; UML같은것 표현가능


-섹션브라우져,Classviewer
+ http://www.utopia-planitia.de/us/screenshot4.html

-컴파일 디버깅
+ http://www.slickedit.com/images/stories/screenshots/vs10_java_debug_latest.jpg

-Output Window
-Build Project 
Resource Editor 
CVS Support
Project Converter 
Code Style

-자동 맞춤법검사

-코드 인사이트(하위구성요소 접근메뉴)


  Templates  Macros
Function List 
Column Editing
FTP/SFTP 
Run DOS Cmd 
Projects/Solutions


HTML Preview
Proj Templates 
Batch Builder
  IntelliTips  

[2.디버거]

- 디버깅 툴


[3.컴파일러]

- 기본환경을 제공

[4.문서화도구]

- 문서화 툴

[5.비교도구]

- 비교도구(Diff Tool) 

[6. 사용자정의 도구]

-사용자 정의 도구(User Tools)

[메인스크린]
http://www.activestate.com/Products/Download/featuretour.plex?id=Komodo&pageid=GraphicalDebugger
http://www.utopia-planitia.de/us/screenshot1.html





[개발미러사이트]
Insight 디버그툴 : http://sources.redhat.com/insight/

레드햇 커뮤니티 프로젝트 : http://sources.redhat.com/mirrors.html

[JAVA사이트]
이클립스 관련 : http://www.jlab.net/

http://www.javanuri.com/board/mainDownload.jsp

http://www.javaforum.co.kr/javaforum/qna/List.faces


[기타 개발도구 및 참고 site]

컴파일러 목록 : http://www.devzoo.com/index.php?tooltype=WindowsEditor

mingw studio (X) : http://www.parinyasoft.com/

OpenWatcom : http://www.openwatcom.org/



pcGRASP 만들고자했던것
jgrasp183 자바 1.3 이상 필요

# VC++ ADD-IN
wntabs         : http://www.wndtabs.com/
Visual Assist : http://www.wholetomato.com

#doxbar 0.38
http://blog.naver.com/thexder.do?Redirect=Log&logNo=8280195
http://doxbar.sourceforge.net/index.html
http://www.graphviz.org/

------------------------------------------------------------------------------------


# C++ FAQ
http://www.parashift.com/c++-faq-lite/virtual-functions.html#faq-20.5


-------------------------------------------

# 문서화 도구

순서도 작성프로그램
codevisual to flowchart


2006/10/22 02:15 2006/10/22 02:15
이 글에는 트랙백을 보낼 수 없습니다
// 제작자 : 정 헌 학
// 연락처 : hunhak94@yahoo.co.kr
// 저작권 : GPL ( Gnu Public License )

// HUP, fork 를 이용한 daemon 만들기.
#include "sysconfig.h"
#include "Server.h"
#include "MailFilterServer.h"
#include "FileCtrl.h"
// for read config file #
include <signal.h>
// for signal 'HUP' char **argv;
// 시그널 핸들링 함수 .
void sig_hangup(int signum) {
cout << "Restarting...." << '\n'; execv(argv[0], argv); cout << "Could not restart" << '\n'; abort();
} void daemon() {
pid_t pid = fork();
switch (pid) {
case 0: close(0);
// 모든 출력을 닫읍시다. close(1); close(2); pid = setsid(); break; case -1: f
printf(stderr, "fail to launch daemon process\n"); exit(1); break; default: exit(0); break; } } int main(int argc, char** strings) { daemon(); // 만약 이게 없으면 부모 ps 는 좀비가 된다. // for HUP signal. struct sigaction act; bzero(&act, sizeof(act)); act.sa_handler = sig_hangup; act.sa_flags = SA_RESTART | SA_NOMASK; // if receive killall -HUP signal if(sigaction(SIGHUP, &act, 0) != 0) perror("Can't capture SIGHUP"); // 이 부분은 데몬에 따라 달라짐 .... try { Server* server = new MailFilterServer (SMTPPORT, 2, mailserver); server->MainLoop(); delete server; return 1; } catch(Exception& exp) { cerr << exp.GetMsg() << endl; return 0; } }
2006/10/22 02:13 2006/10/22 02:13
이 글에는 트랙백을 보낼 수 없습니다

WIN32 API 이용하는 법. (WIN32 UniCode는 UTF-16LE), 단, Win9x/WinMe에서는 안됩니다.


A) ANSI 를 UniCode (UTF-8) 로 변환


1) ANSI -> UniCode (UTF-16LE)

   ::MultiByteToWideChar(CP_ACP, ...);

2) UniCode (UTF-16LE) -> UniCode (UTF-8)

   ::WideCharToMultiByte(CP_UTF8, ...);



B) UniCode (UTF-16LE) 를 ANSI 로 변환


1) ::WideCharToMultiByte(CP_ACP, ...);



C) UniCode (UTF-8) 를 ANSI 로 변환


1) UniCode(UTF-8) -> UniCode (UTF-16LE)

   ::MultiByteToWideChar(CP_UTF8, ...);

2) UniCode (UTF-16LE) -> ANSI

   ::WideCharToMultiByte(CP_ACP, ...);


UTF-8 관련 정보 사이트

http://www.unicode.org

http://www.cl.cam.ac.uk/~mgk25/unicode.html

UniCode 컨버터

http://www.unicode.org/Public/PROGRAMS/CVTUTF/

UTF-8 인코딩 디코딩 관련 소스

http://www.codeproject.com/file/textfiledocument.asp

http://www.codeproject.com/string/UTF8.asp

2006/10/22 02:11 2006/10/22 02:11
이 글에는 트랙백을 보낼 수 없습니다
게임  2006/10/21 15:52


쩝 ... 여자날리기는 없나 ??
2006/10/21 15:52 2006/10/21 15:52
이 글에는 트랙백을 보낼 수 없습니다

Learning to Use Regular Expressions by Example
(예제로 배우는 정규표현식)

현재 제가 작업하고 있는 사이트는 폼을 통한 유저입력에 많은 의존을 하고 있고 모든 데이터는 데이터베이스로 보내기 전에 검사해야합니다. 처음에는 PHP3의 정규 표현식 함수를 사용하면 된다는 건 알고 있었지만 어떻게 정규표현식을 작성해야 할지 몰랐습니다. 제가 필요로 했던 것은 뭔가 예제가 될만한 것이었죠. (물론 처음으로 본 것은 PHP3 매뉴얼과 POSIX 1002.3 스펙이었죠 하지만 예제가 없어서 별 도움이 되질 못했습니다) 덧 붙여 말하자면 정규표현식에 대한 좋은 글을 웹에서 찾기란 정말 어려웠습니다. 전 경험과 시행착오로 점점 그것에 대해 알게 되었고 별거 아님을 깨달았습니다. 그래서 이 글에서 문법에 대한 직접적인 설명을 하고 금액 입력과 email 주소 문자열을 을 검사하는 정규표현식을 작성하는 단계를 설명하려합니다.

- Basic Syntax of Regular Expressions (정규표현식의 기본 문법)

먼저 특수문자 '^'와 '$'를 살펴봅시다. 이 문자의 역할은 문자열의 시작과 끝을 의미합니다. 다음과 같은 해당 예를 들 수 있습니다.

"^The": "The"로 시작하는 문자열
"of despair$": "of despair"로 끝나는 문자열
"^abc$": "abc"로 시작하고 "abc"로 끝나는 문자열 ("abc" 라는 문자열도 해당됨)
"notice": "notice"가 들어 있는 문자열

마지막 예제에서 보듯이 이 두 개의 특수문자가 없는 패턴은 검사대상이 되는 문자열에 어떤 위치에서든지 들어 있음 의미합니다.

특수문자로는 '*', '+', '?'도 있습니다. 이 문자들은 어떤 문자의 반복에 관한 지정을 해주는 문자입니다. 각각 '0또는 그 이상', '1또는 그 이상', '0또는 1'을 의미합니다. 여기에 몇 가지 예제가 있습니다.

"ab*": a뒤에 0 이상의 b가 있는 문자열 ("a", "ab", "abbb", 등);
"ab+": 위와 동일 하지만 최소한 하나 이상의 b가 있어야 함 ("ab", "abbb", 등);
"ab?": b가 하나 있을 수도 있고 없을 수도 있음 (ab 또는 a)
"a?b+$": a가 있을 수도 있고 없을 수도 있으며 그뒤에 하나 이상의 b로 끝나는 문자열

{ }를 사용하면 반복되는 수를 영역으로 지정할 수 있습니다.

"ab{2}": a뒤에 2개의 b가 있는 문자열 ("abb");
"ab{2,}": a뒤에 최소한 2개 이상의 b가 있는 문자열 ("abb", "abbbb", 등.);
"ab{3,5}": a뒤에 3개에서 5개 사이의 b가 있는 문자열 ("abbb", "abbbb", 또는 "abbbbb").

{ }를 사용할 대는 반드시 첫 번째 숫자는 적어야 됨을 유의합니다. ((O) "{0,2}", (X) "{,2}"). 또한 '*', '+', '?'는 각각 "{0,}", "{1,}", "{0,1}"와 같습니다.

이제 ()를 사용해서 하나의 문자가 아닌 여러 문자를 지정하는 방법을 알아봅니다.

"a(bc)*": a 뒤에 "bc"가 0또는 그이상의 수만큼 있는 문자열
"a(bc){1,5}": a 뒤에 "bc."가 1에서 5번 들어 있는 문자열

또 다른 특수문자로는 OR 연산을 하는 '|'를 들 수 있습니다.

"hi|hello": "hi"나 "hello"가 들어 있는 문자열
"(b|cd)ef": "bef" 또는 "cdef"
"(a|b)*c": a와 b가 섞여서 여러번 나타나고 그뒤에 c가 붙어있는 패턴

'.' (period)는 어떤 한 문자를 의미합니다.

"a.[0-9]": a뒤에 한 문자와 숫자가 붙어 있는 패턴
"^.{3}$": 3문자로만 되어 있는 문자열

[]표현은 문자열의 해당 위치에 사용될 수 있는 문자를 표현하는데 사용합니다.

"[ab]": a또는 b ("a|b"와 동일한 표현);
"[a-d]": 소문자 'a'에서 'd'까지 ("a|b|c|d"또는 "[abcd]"와 동일);
"^[a-zA-Z]": 영문자로 시작하는 문자열
"[0-9]%": % 문자 앞에 하나의 문자가 붙어 있는 패턴
",[a-zA-Z0-9]$": 영문자, 숫자로 끝나는 문자열 패턴

[]에서 '^'를 표현의 가장 처음에 사용하면 나타나서는 안 되는 문자를 지정할 수 있습니다. (예> "%[^a-zA-Z]%" 두 % 사이에 영문자가 없는 패턴)

"^.[$()|*+?{"같은 특수 문자는 백슬레쉬('')를 사용해서 escape될 수 있습니다( 역자 주 : escape 이란 다른 말로 literal로 탈출한다라고 할 수 있습니다 즉 특수문자로 인식되지 않고 일반 문자로 인식되게 합니다). 사용하는 관점에서 보면 백슬레쉬도 PHP3의 문자열에서 escape되어야 하기 때문에 예를 들어 "($|?[0-9]+"같은 정규표현식은 ereg("(\$|?[0-9]+", $str) 와 같이 사용됩니다 (이 표현식은 무얼 검사하는 걸까요? ^^;(이건 역자가 한 말이 아닙니다))

하지만 []안에서는 특수문자가 모두 효력을 읽게 되기 때문에 이 법칙을 벗어남을 기억하세요 []안에서는 백슬레쉬를 포함한 모든 특수문자들이 그 힘을 읽습니다 (예> "[*+?{}.]"는 말그대로 '*', '', '+', '?', '{', '}', '.' 문자를 의미합니다. 그리고 regex man 페이지에 나오듯이 ']'문자 자체를 포함하려면 문자들 리스트의 첫 번째에 위치시킵니다('^'가 있으면 '^'뒤에). '-'를 포함하려면 첫 번째 또는 마지막 문자로 지정하고 '-'문자가 영역의 경계 (예> a에서 -까지)일 경우 영역지정 문자의 두 번째 경계로 지정([a--])합니다.

완벽한 설명을 하려면 대조 순서(collating sequences), 문자 클래스(character classes), 동일 클래스(equivalence classes)에 대해서도 다루어야 하지만 이 글에서는 별 상관관계가 없기 때문에 regex man 페이지를 참고하도록 합니다.

-Validating Money Strings (금액 문자열 검사하기)

ok 이제 우리는 여기서 배운 것을 뭔가 실질적인 것에 적용 시켜봅시다. 사용자가 입력한 금액을 검사하는 정규표현식에 대해 알아봅니다. 금액은 "10000.00" 와 "10,000.00", 와, 센트 없이, "10000" 와 "10,000" 이렇게 4가지 방법으로 사용됩니다. (역자주 : 달러와 센트 군요 蝁,.蝁)

다음 정규표현식을 기초로 시작해 봅시다.

^[1-9][0-9]*$

이 정규표현식은 0으로 시작하지 않는 어떠한 수인지를 검사합니다. 하지만 "0"도 통과되지 못합니다. 그래서 다음과 같이 수정합니다.

^(0|[1-9][0-9]*)$

말로 표현하면 "0 이거나 0으로 시작하지 않는 수"입니다. 이제 수 앞에 -부호도 사용할 수 있게 수정해 봅니다.

^(0|-?[1-9][0-9]*)$

이 뜻은 "0 이거나 -이 있을 수 있는 수이고 이 수는 0으로 시작하지 않는다"입니다. 이제 좀 느슨하게 하고 유저가 0으로 시작하는 수도 입력할 수 있도록 해봅니다. 금액에 필요없는 -부호도 없애버립니다. 그리고 선택사항인 소수점 부분 패턴도 넣어서 다음 정규표현식이 나옵니다.

^[0-9]+(.[0-9]+)?$

하이라이트된 부분은 소수점(.)이 항상 최소한 하나이상의 수와 붙어 있어야 함을 의미합니다. 그러므로 예를 들면 "10."은 통과되지 못하고 "10" 과 "10.2"는 통과합니다.

^[0-9]+(.[0-9]{2})?$

이제 소수점 뒤에 반드시 2개의 수가 붙어 있어야 합니다. 이게 너무 심하다 싶으면 다음과 같이 해서

^[0-9]+(.[0-9]{1,2})?$

소수점 뒤에 하나의 숫자만 올 수도 있게 합니다. 이제 1000단위를 구분하는 ','를 표현해 봅니다.

^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$

"1~3개의 숫자와 그 뒤에 ','와 3개의 숫자로 이루어진 부분이 0개 또는 그 이상이 붙어 있는 패턴". 쉽죠? 이제 ','도 선택사항(옵션:option)으로 만들어 봅니다.

^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$

이게 전부입니다. 여기서 '+'를 '*'로 바꾸면 빈 문자열도 통과되는 패턴이 됩니다. 함수호출할 때 백슬래쉬 문자 escape하는 것 (역자 : /를 //로) 잊지 마세요. 일단 문자열이 검사되어 지면 str_replace("," , "" , $money) 함수로 ','를 없애버리고 double로 형 변환을 해서 산술연산에도 사용할 수 있게 합니다.

- Validating E-mail Addresses (E-mail 주소 검사하기)

이제 e-mail 주소를 살펴봅시다. e-mail주소는 3부분으로 구성됩니다. : user 명(@왼쪽편에 있는 모든 것), '@', 그리고 서버명(나머지 부분들) user명은 대문자 또는 소문자와 숫자, '.' '-', '_'로 구성됩니다. '_'를 제외하면 서버명도 마찬가지입니다. user 명은 .으로 시작하거나 끝나지 않습니다. domain명도 마찬가지입니다. 또한 .이 연속으로 있을 수도 없고 . 사이에는 최소한 하나 이상의 문자가 있어야 합니다. 이제 user명 부분을 검사하는 정규표현식을 만들어 봅시다.

^[_a-zA-Z0-9-]+$

이 정규표현식은 아직 .을 지원하지 않습니다. 다음과 같이 수정합니다.

^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*$

말로 하면 "최소한 하나의 유효한 문자(valid character)와 그 뒤에 .과 유효문자들로 구성된 부분이 0또는 그 이상이 있는 패턴"입니다.

좀 간단하게 하기 위해 이 정규표현식을 ereg()대신에 eregi()함수에 사용합니다. eregi()함수는 대소문자를 구분하지 않기 때문에 "a-z"와 "A-Z"같이 두 개의 영역을 지정하지 않아도 되는 이점이 있습니다.(둘 중 어떤 것이라도 상관없음)

^[_a-z0-9-]+(.[_a-z0-9-]+)*$

서버명의 경우 '_'만 제외하고는 동일합니다.
^[a-z0-9-]+(.[a-z0-9-]+)*$

이제 '@'를 중심으로 서로 붙여서 다음과 같이 만들어 냅니다.

^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$

- 기타 사용

Extracting Parts of a String (문자열의 일부분 잘라내기)

ereg()와 eregi()함수는 문자열에서 패턴에 해당되는 부분을 잘라내는 기능이 있습니다. (메뉴얼 참고) 예를 들면 path/URL 문자열에서 파일명을 잘라내고 싶은 경우 다음과 같은 코드가 필요할 것입니다.

ereg("([^\/]*)$", $pathOrUrl, $regs);
echo $regs[1];

Advanced Replacing (치환의 발전된 형태)

ereg_replace() 와 eregi_replace()는 아주 유용한 함수입니다. 문자열에 있는 모든 문자를 ','로 구분한다고 가정해 봅시다. 다음과 같이 할 수 있습니다. (역자 : trim()함수는 문자열의 앞과 뒤에 있는 공백문자를 모두 제거하는 함수)

ereg_replace("[     ]+", ",", trim($str));

- Some exercises (연습문제)

여기 당신을 좀 바쁘게 할 만한 것들이 있습니다 (^^;)

1. 여기 나온 email 검사 정규표현식의 서버 부분을 최소한 두 개의 이름으로 구성되어야 하게 수정하시오 (hint : 단 하나의 문자만 변경하면 됨)
2. trim()기능을 하는 ereg_replace()함수호출을 하시오
3. '#', '@', '&', '%'를 '~'로 수정하는 ereg_replace()함수호출을 하시오

Have fun!

출처 : www,phpbuilder.com
원문 : Dario F. Gomes (dario@who.net) 1999/06/16
번역 : 허련호 (rhheo@hanmail.net) 2001/01/30

2006/10/14 14:48 2006/10/14 14:48
이 글에는 트랙백을 보낼 수 없습니다

집필자 : infowww  (2006-09-25 05:33) 신고하기 | 이의제기
노하우사전 분류 :  IT

(최강XP를 위한 팁&테크 내용 목록)

www.infowww.info

1. DOS모드에서 XP설치하는 방법
2. 메뉴팝업속도를 빠르게 하기
3. CD-ROM 자동인식 비활성화
4. 인터넷익스플로러 로딩속도 향상법
5. 시스템복원 해제 자동업데이트 해제 오류보고 해제 - 57, 58 참고
6. 입력도구모음 없애기 - 작업표시줄딜레이해결
7. <시작>에서 문서메뉴 삭제하기
8. 폴더창 속도향상하기
9. 임시인터넷 파일크기 최대한 줄이기
10. 다운로드 갯수 변경하는 방법
11. <시작>에서 도움말메뉴 삭제하기
12. 윈도우 창이 뜨는 속도 높이기
13. 내컴퓨터등 기본아이콘 보이게하기
14. 폴더를 열었을때 화일아이콘의 화면출력(Refrash rate)속도 향상
15. 실시간 동영상을 끊김없이 감상하기
16. 아이콘에 오른쪽 클릭해서 [보내기 메뉴]에 메모장등을 추가하는 방법
17. L2캐쉬 지정으로 속도향상 시키기
18. 캐쉬메모리 최적화로 속도 높이기
19. 커널스왑으로 인한 딜레이 줄이기
20. 내컴퓨터의 [공유문서] 제거방법
21. Windows Messenger 삭제하는 방법
22. 무응답 응용프로그램 타임아웃 시간줄이기
23. 시스템종료 로그오프창 고전적인 형태로 변경하기
24. 윈도우 시작시 자동로그온방법
25. msconfig에서 필요없는 서비스항목 해지하여 부팅속도 올리기
26. 바탕화면 단축아이콘에서 화살표 없애기
27. 바탕화면 아이콘 폰트 투명하게 하기
28. 저사양 컴터에서 잘 돌아가게 하는방법
29. 프로그램오류시 시스템 재부팅 방지
30. NumberLock설정방법
31. MSN Explorer제거방법
32. 빠른 웹서핑을 위한 인터넷 익스플로러 최적셋팅법
33. 시작메뉴의 로그오프 없애기
34. 회사이름과 사용자 이름 바꾸기
35. 인터넷 익스플로러 로고 바꾸기
36. 시스템 등록 정보에 로고 추가하기
37. 로그온 때 메시지 띄우기
38. DirectX 버전 확인방법
39. 자신의 윈도XP 정품 인증 확인방법
40. 그룹정책(GPEdit)실행으로 시스템 설정하기
41. 익스플로러 시작시 풀스크린으로 항상 시작
42. DMA 설정을 반드시 해야 하는 이유/조건
43. 방화벽설정/제거방법
44. 종료로고만 나오고 전원안꺼질때
45. 지워도 보이는 프로그램목록지우기
46. 휴지통이름 변경방법
47. 파일시스템 FAT/NTFS장단점
48. 비디오카드 지원 모든 해상도 보는방법과 사용법
49. 실행에서 바로 실행할 수 있는 명령어 + ipconfig 옵션
50. Shift키의 10가지 기능
51. 베드섹터 검사및 베드섹터 복구하는 방법
52. 부팅후 및 탐색기실행시 A드라이브 안 읽게 하기
53. 하드가 이유없이 계속 읽기를 반복할때
54. BootVis 를 이용한 부팅 최적화
55. XP시작할때 새로운 시작 화면 안뜨게 하기
56. 윈도우 탐색기를 좀 더 빠르게 할 수 있는 방법
57. xp shutdown(윈도우종료) 빠르게하기
58. 시스템 복원 및 자동 업데이트 해제
59. 오류보고 사용 안함
60. 시각 효과 설정 과 가상 메모리 설정
61. 최대 절전 모드 끄기
62. 인터넷 옵션-이미지 도구 및 자동크기조정
63. 대체구성을 이용한 편리한 TCP/IP셋팅방법
64. 검색 도우미 캐릭터 바꾸기
65. 잡음제거
66. 드라이브 문자명 변경하기
67. 미리보기 썸네일 크기 변경하기
68. 자연스럽고 또렷한 글자 보기
69. 한영키가 안될때 고치는 방법
70. 작은 이미지 깨지지 않고 크게 만들기..
71. Fdisk 올가이드
72. HDD 파티션 및 프로그램 설치 최적화
73. Windows XP에서 avi화일의 이동/복사 문제 해결


*********************************************************************************


[XP팁1] DOS모드에서 XP설치하는 방법www.infowww.info


XP cd의 i386아래에 있는 winnt.exe가 dos모드에서 XP를 설치하는 프로그램이다.
도스모드 부팅시 smartdrv.exe 프로그램을 실행후 XP를 설치하면 더 빠른 속도로 진행된다.

도스모드 XP인스톨방법에 질문이 많아서 쉽게 정리해본다.


1.도스부팅티스켓(Win98/me부팅디스켓,XP에서 포맷시 만들수있는MS-Dos부팅디스켓)으로
부팅한다.
2.smartdrv.exe를 실행한다.
3.윈도우XP CD의 winnt.exe가 있는 위치를 지정한다.
4.실행한다.





[XP팁2] 메뉴팝업속도를 빠르게 하기


메뉴창이 열리는 속도가 느린것을 감지할수 있는데 빠르게 하는 방법이다.
시작 -> 실행창에서 regedit를 입력하여 레지스트리 편집창을 뛰운후
HKEY_CURRENT_USER\ControlPanel\desktop에서 MenuShowDelay항목의 값이 기본 400으로
셋팅되어 있는데 이 값을 0 에서 400 사이에서 바꾼다.(0의 값이 최고 빠르다)





[XP팁3] CD-ROM 자동인식 비활성화


윈도우에서 새로운 CD를 삽입하였을때 autorun.inf를 인식하여 자동으로 실행하는 기능을
Off 하려면 regedit를 실행하여 다음 값을 변경한다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet001\Services\Cdrom
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CDRom
에서 Autorun 값을 0으로 하면 기능 정지, 값을 1로 하면 기능 사용입니다





[XP팁4] 인터넷익스플로러 로딩속도 향샹법


00) 화면 이동을 부드럽게
익스플로러에서 화면이동할때 마우스의 휠기능을 사용하는데 좀 무겁게 느껴진다거나 끊기는 느낌이 있을때 유용한것 같네요.특히 저사양 컴퓨터에서..익스플로러 -> 도구 -> 인터넷옵션 -> 고급 -> 부드러운 화면이동 체크를 해제.

0) 윈도탐색기 -> 도구 -> 폴더옵션을 선택하신 후
[보기]탭에 보시면 [네트워크 폴더 및 프린터 자동검색]이라는 항목이 있는데
이 항목의 선택을 지운다.
프린터 자동검색을 해제하시면 웹페이지가 단번에 뜹니다.

1) DNS캐쉬수정으로 브라우저속도 높이기
HKEY_LOCAL_MACHINE\System\CurrentControlset\Services\Dnscache\Parameters에서
다음항목의 값을 입력한다(없으면 새로 오른쪽 마우스 클릭하여 새로만들기->
DWORD값-10진수로 만든다)
※반드시 10진수 확인하시기 바랍니다.
CachehHashTableBucketSize---->1
CachehHashTableSize---------->384
MaxCacheEntryTtlLimit-------->64000
MaxSOACacheEntryTtlLimit----->301
시작-실행-msconfig -서비스 에서 DNS Client 서비스가 작동중인지 확인하시고 체크아웃되어 있으면 체크해줍니다.

2)HKEY_USER\.Default\Software\Microsoft\Windows\CurrentVersion\InterSettings에서
새로만들기
-->DWORD값을 다음과 같이 만든다(값은 10진수로 선택한다)
MaxConnectionsPerSever------>20
MaxConnectionsPer1_0Sever--->20

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\InterSettings에서도
위와 같이 DWORD값을 만든다 -> 다운로드 갯수 변경
MaxConnectionsPerSever------>20
MaxConnectionsPer1_0Sever--->20

3) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer
\NameSpace에서 {D6277990-4C6A-11CF-8D87-00AA0060F5BF} 폴더 자체를 삭제





[XP팁5] 시스템복원 해제 자동업데이트 해제 오류보고 해제 - 57, 58 참고


1) 시작->제어판->성능 및 유지 관리->시스템
2) 시스템 등록정보창이 나타나면 [고급]탭에서 가장 아래에 있는 오류보고 버튼을
클릭한다.
3) 오류보고 대화상자에서 `오류 보고 사용 안 함`을 선택하고 확인버튼을 누른다.
4) 시스템복원 , 자동업데이트 도 찾아서 해제. -> 57, 58 참고





[XP팁6] 입력도구모음 없애기 - 작업표시줄딜레이해결


[제어판-국가및언어옵션-언어-자세히...-설치된서비스]에서 [한글입력기(IME2002)]만
있으면 [추가]를 눌러서 [영어]를 추가해준다.
[한글입력기(IME2002)]를 선택하고 [기본설정-입력도구모음]에서 모든 체크를 없애면
입력도구모음이 없어진다.(추가한 영어는 제거한다)
한자를 쓸때 입력도구모음이 필요하면 [작업표시줄-오른클릭-도구모음-입력도구모음]에
체크하면 다시 나타난다.

작업표시줄에서 입력도구모음 완전히 없애기
이게 의외로 걸리적 거린다.-_-a
또한 마소(?)에서도 이 입력도구모음에 항목이 많으면 익스플로러에 일시적 멈춤현상이 생길수도 있다고 한다. 그런데 의외로 없어지지 않는다. 작업표시줄에 오른쪽키를 눌러서 없앨수도 있지만 리붓하면 다시 나타나더군요-_-;;
먼저 시작 - 설정 - 제어판 - 국가 및 언어옵션을 누릅니다.
언어탭에서 자세히를 누릅니다.
그런데 입력도구모음 설정이 활성화 되어있지 안네요.
먼저 추가를 눌러서 아무 입력언어나 추가하시면 활성화가 됩니다.
입력도구모음이 활성화 되었죠.-_-)b 이제 입력도구모음을 누릅니다
체크를 모조리 없앱니다. 필요한건 그냥 두셔도 됩니다. 한국어만 사용하지 않고 다른 국가를 사용하시면 몇몇 필요한게 있지만;; 한국어만 사용하실거면 별로 필요없을듯 하네요. 언체크가 완료되면 확인을 클릭합니다.
저는 우크라이나어를 추가했어요-_-v 확인을 누릅니다.
다시 이 그림으로 돌아오죠. 여기서 우크라이나어를 선택하고 제거를 눌러서 없애버립니다. 이제 모든것이 끝났으니 확인을 누르시면 됩니다.

입력 도구 모음 없애기
XP 설치 직후 입력 도구 모음이 화면 밖으로 나와 있어서 상당히 불편함을 느꼈을 것입니다. 이것을 없애는 방법은 두 가지가 있는데 작업표시 줄에 오른쪽 마우스를 클릭해서 도구 모음 항목의입력 도구 모음의 체크를 없애주면 되기도 하는데 시스템에 따라서는 재부팅 후에도 다시 도구 모음 이 나타나는 현상이 생길 수 있습니다. 아마도 작업 표시 줄의 버그라고 생각할 수 있는데 아래의 방법은 이런 문제가 없는 방법입니다.
제어판으로 들어가서 날짜 시간 언어 및 국가별 옵션으로 이동하면 “다른 언어 추가” 항목이 있습니다. 클릭하면 위의 그림 왼쪽편의 국가 및 언어 옵션창이 나타나게 됩니다.
여기서 “자세히”를 클릭 하시면 설정 창이 나타나는데 위의 오른쪽 그림이 바로 그것입니다. 설치된 서비스 항목을 보시면 “추가” 단추가 있는데 이곳을 클릭해서 아무런 언어를 하나 추가 시켜 줍니다. 그러면 오른쪽 그림에서 보다시피 맨 아래의 “입력 도구 모음” 이라는 단추가 활성화 되는데 이곳을 클릭하면 위의 맨 아래 그림과 같은 설정창이 나타납니다.
이 창에서 맨 위의 “바탕 화면에 입력 도구 모음 표시” 라는 항목의 체크를 없애 주시면 됩니다.
그리고 좀 전에 추가시킨 입력기를 클릭하시고 “제거” 단추를 눌러 제거해 주시면 모든 설정이끝납니다.

입력도구모음 없애기
제어판-국가 및 언어 옵션
[제어판-국가및언어옵션-언어-자세히...-설치된서비스]에서 [한글입력기(IME2002)]만 있으면 [추가]를 눌러서 [영어]를 추가해준다.
[한글입력기(IME2002)]를 선택하고 [기본설정-입력도구모음]에서 모든 체크를 없애면 입력도구모음이 없어진다.(추가한 영어는 제거한다)
한자를 쓸때 입력도구모음이 필요하면 [작업표시줄-오른클릭-도구모음-입력도구모음]에 체크하면 다시 나타난다.

윈도우 XP 작업표시줄 딜레이 완전 해결
핫픽스로도 해결안되던 메신저 등의 창을 닫을 때 작업표시줄 딜레이되는 문제
오른쪽밑에 나타나는 '입력도구모음'을 없애면 됩니다.
제어판 -> 국가 및 언어 옵션 -> 언어 -> 자세히 -> 추가 -> 한국어, 한국어 상태에서 확인 -> 한국어 클릭하고 밑에 입력 도구 모음 클릭 -> 체크 되어 있는 2개의 항목을 언체크
-> 확인
그후 추가하신 '한국어'라는 항목을 다시 제거하시면 됩니다.





[XP팁7] <시작>에서 문서메뉴 삭제하기


HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
오른쪽에 등록→DWORD값에서 NoRecentDocsMenu입력하고 값을 1로 입력




[XP팁8] 폴더창 속도향상하기


제어판에서 ``폴더옵션``을 실행한 다음, ``보기`` 메뉴탭을 선택하고 ``고급설정`` 부분
에서 ``폴더 및 바탕화면 항목에 팝업 설명 표시``와 ``압축된 파일과 폴더를 다른 색으로
표시`` 그리고 ``독립된 프로세스로 폴더창 실행``의 체크를 해제하여 속도 향상




[XP팁9] 임시인터넷 파일크기 최대한 줄이기


임시인터넷파일 보관폴더의 적정크기는 100MB~200MB정도가 가장 이상적이라고 한다.





[XP팁10] 다운로드 갯수 변경하는 방법


1. [시작]→[실행]에서 ``regedit``를 입력하고 레지스트리 편집기를 실행한 후,
다음 키 값을 찾는다.
2.HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings
3. 이 키 또는 오른쪽 창의 빈 공간을 마우스 오른쪽 버튼으로 클릭하고
[등록]→[DWORD 값]을 선택한다.
4. 새 DWORD 값의 이름에 ``MaxConnectionsPerServer``라고 입력한다.
5. 이 값을 더블클릭하고 값의 데이터 란에 원하는 다운로드 갯수(10진수)를 입력한다.




[XP팁11] <시작>에서 도움말메뉴 삭제하기

도움말 항목을 안보이게하기 위해서는 아래와 같은 단계를 거친다
1.시작-실행-REGEDIT
2다음 경로를 찾아간다
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer]
이 경로에서 [새로만들기]에서 [DWORD값]을 하나 만들고
이름을 [NoSMHelp]으로 한다
3.더블 클릭해서 데이터 값을 1로 지정한다
4.재부팅하거나 로그오프하면 설정이 적용된다
5.복원하시려면 값을 0으로 한다




[XP팁12] 윈도우 창이 뜨는 속도 높이기

윈도우즈의 속도를 조금이라도 높이고 싶은 사람들에게는 창의 최대화 , 최소화에 따른
애니메이션 효과도 속도를 저하 시키는 원인이 될 것이다.여기서는 그 속도를 높여주는
방법을 소개한다.
*레지스트리 편집기를 실행한다.
변경 할 사항: HKEY_CURRENT_USER\Control Panel\desktop\windowmetrics로이동
우측 화면에서 마우스 오른쪽 버튼을 누른후 ``문자열 값``을 선택하고
MinAnimate라고 입력한다.그다음 이 값을 더블클릭하여 값을 ``0``으로 설정
한다. 이것으로 창이 열리거나 닫힐때 최대화 , 최소화 애니메이션 표시가
되지 않아 창의 표시속도가 눈에 띄게 빨라진다.




[XP팁13] 내컴퓨터등 기본아이콘 보이게하기

XP를 설치하고나면 바탕화면에 휴지통만 보인다. XP의 시작그룹속에 모투 내장되었기 때문인데 이전처럼
바탕화면에 기본아이콘이 보이게 할려면 바탕화면에서 오른쪽마우스클릭-->속성-->바탕화면-->바탕화면사용자지정
-->내바탕화면아이콘에서 필요 항목 체크인하면 된다.




[XP팁14] 폴더를 열었을때 화일아이콘의 화면출력(Refrash rate) 속도 향상

* 레지스트리 편집기를 실행한다.
변경 할 사항: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Update 로 이동.
오른쪽 창의 ``UpdateMode`` 에서 오른쪽 마우스 버튼을 클릭하고 수정을
선택,value를 1에서 0으로 바꾼다.





[XP팁15] 실시간 동영상을 끊김없이 감상하기

미디어 플레이어를 이용하면 인터넷으로 동영상을 감상할수 있다. 하지만 용량이 큰 동영상을
실시간으로 감상하다 보면 연결이 끊기거나 잠깐 멈췄다가 다시 재생되는 등 여러 가지 접속
에러가 자주 생긴다. 이럴 때는 미디어 플레이어의 버퍼를 늘리는 방법으로 어느 정도 문제를 해결할
수 있다. 미디어 플레이어를 수행하고 [도구]→[옵션] 메뉴를 누른다. `옵션` 대화 상자가 나타나면
[성능] 탭을 고른다. `내 연결 속도` 옵션을 고르고 목록 버튼을 눌러 `T1(1.5Mbps)`를 선택한다.
`네트워크 버퍼링` 항목에서는 버퍼를 10초로 지정한다. 다시 [네트워크] 탭을 누르고 `UDP` 항목의
체크 표시를 없앤다. `프록시 설정` 항목에서 HTTP를 마우스로 두 번 누른다. `프로토콜 구성` 대화
상자가 나타나면 `프록시 서버 이용 안함` 옵션을 선택한다.





[XP팁16] 아이콘에 오른쪽 클릭해서 [보내기 메뉴]에 메모장등을 추가하는 방법

`C:\Documents and Settings\****\SendTo`라는 폴더가 있는데, 이곳에 메모장 아이콘을 복사해
넣기만 하면 된다. `SendTo` 폴더는 숨겨져 있으므로 보이지 않는다면 탐색기의 [도구]→[폴더옵션]
메뉴를 고르고 창이 뜨면 [보기] 탭으로 이동한 뒤 `숨김 파일 및 폴더 표시` 항목에 체크 표시하면
된다. 이미지 프로그램이나 동영상, 사운드 재생 프로그램 등도 등록해두면 요긴하게 쓸 수 있다.





[XP팁17] L2캐쉬 지정으로 속도향상 시키기

Secondlevel Datacache(L2Cache) 는 CPU의 작업속도에 매우 중요한 기능을 담당한다.
펜3코퍼마인에 내장된 CPU와 같은 속도로 동작하는 이 빠른 L2캐쉬에 데이타를 일정량
올려놓을 수 있기때문에 상대적으로 엄청 느린 메모리로만 데이터를 처리할때보다
작업효율이 더욱 뛰어날수밖에 없다.
일반적으로 xp가 cpu와 L2Cache의 값을 자동으로 인지하게 된다. 그러나, 종종 xp가
이것을 할 수 없을 경우가 발생한다. 그래서 cpu의 작업속도를 향샹시키기 위해서는
레지스트리 값을 조작해줘야 한다.

1.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory
Management에서 오른쪽에 SecondLevelDataCache항목을 고른다
2.자신의 cpu의 L2캐쉬 양에 맞는 10진수 값을 다음과 같이 수정한다.

셀러론 코퍼마인 -> 128입력
셀러론 튜알라틴 -> 256입력
펜티엄3 코퍼마인 -> 256입력
펜티엄3 카트마이 -> 512입력
펜티엄4 윌라멧 -> 256입력
펜티엄4 노스우드 -> 512입력


3. 재시작한다.



www.infowww.info


[XP팁18] 캐쉬메모리 체적화로 속도 높이기

디스크캐시는 윈xp에서 매우 중요한 역할을 담당한다. 그렇지만, xp의 기본 입출력 페이지
파일 셋팅은 매우 민감해서 xp의 작업속도를 제한하게 된다. 다음은 램의 크기에 따른 몇
가지 값들이다. 램의 크기에 맞게 다음을 수정하시면, xp의 작업속도를 가속시킬 수 있다.

1.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\
에서 마우스 오른쪽 버튼 클릭하여 새로만들기->DWORD값을 선택한다. 새값에 IoPageLockLimit 라고
입력한다(대소문자 주의). IoPageLockLimit를 더블클릭하여 아래 보기의 값을 입력한다.
2. 자신의 램 사이즈에 맞는 16진수(hex)값을 다음과 같이 수정한다.
64M: 1000;
128M: 4000;
256M: 10000;
384M: 22000;
512M or more: 40000.
3. 재시작한다.





[XP팁19] 커널스왑으로 인한 딜레이 줄이기
256MB 이상의 램에서 효과
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory
Management -> DisablePagingExecutive 를 찾아 설정값을 1로 변경





[XP팁20] 내컴퓨터의 [공유문서] 제거방법

컴퓨터에 보면 여러사용자가 공유할 수 있는 공유문서가 있다.
공유문서에는 공유그림 공유음악등이 있는데 필요하지 않는 경우 삭제할 수 있다.
1.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\DelegateFolders
2.59031a47-3f72-44a7-89c5-5595fe6b30ee 를 찾아서 삭제한다.
(완전히 없어진건 아니고 보이지만 않을뿐이다)





[XP팁21] Windows Messenger 삭제하는 방법

Windows Messenger 이외의 다른 메신저 프로그램을 사용하는 사람에게는 불필요한 프로그램이다.
이 프로그램을 삭제하는 옵션을 윈도우에서는 기본적으로 제공하지 않는다. 하지만 약간의 inf
파일 수정을 통해서 삭제할 수 있다.
1.windows/inf/sysoc.inf 폴더를 메모장으로 연다.
2.msmsgs=msgrocm.dll,OcEntry,msmsgs.inf,hide,7-->이 라인을 찾아서 아래와 같이 변경하고
msmsgs=msgrocm.dll,OcEntry,msmsgs.inf,7-->hide,만 제거한후 저장한다.
3.위와 같이 변경하고 시작->제어판->프로그램 추가/제거->windows 구성요소 추가/제거에 Windows
Messenger체크 옵션이 나타난다. 여기에 체크를 아웃하면 삭제된다.
추가적으로 msn익스플러도 삭제할 수 있다.





[XP팁22] 무응답 응용프로그램 타임아웃 시간줄이기

윈도우 XP는 해당 응용프로그램이 정지하면 해당 프로그램이 응답이 기다리는 시간이
설정되어 응답이 없으면 해당프로그램을 정지시킨다 이 타임아웃시간을 조절해서 윈도우 XP
정지시간을 줄일 수 있다
[HKEY_CURRENT_USER\Control Panel\Desktop]
HungAppTimeout
다음 값이 기본적으로 5000(5초)으로 설정되어있을 것이다.
이 값을 더블 클릭해서 1000 (1000 = 1초)로 설정해준다.





[XP팁23]시스템종료 로그오프창 고전적인 형태로 변경하기

시작->제어판->사용자 계정->사용자 로그온 또는 로그오프 방법변경을 클릭한다
여기서 시작 화면 사용을 체크아웃하고 옵션적용을 크릭하면 고전적인 시스템종료창이 나타난다





[XP팁24] 윈도우 시작시 자동로그온방법

regedit-->HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon항목에서
오른쪽마우스 클릭하여 새문자열값으로 다음값을 등록한다
이름 값
AutoAdminLogon ---> 1
DefaultUserName ---> 유저명(사용하시는 유저명) : 이 항목은 보통 만들어져 있다
DefaultPassword --->패스워드(유저의 패스워드) : 지정없이 사용할때는 값을 공란으로 둔다





[XP팁25] msconfig에서 필요없는 서비스항목 해지www.infowww.info

(그만큼 윈도우시작시 불필요한 인식을 안해서 좋으나, 신중히 고려해보고
해제하는 것이 좋을 듯)

(1) MSCONFIG로 서비스 항목을 보시면 워크스테이션 항목과 서버 항목이 있습니다.
(제어판의 관리도구->서비스 사용하셔도 무방)
요넘을 사용안함 해버리니까 다시 날라댕기네요.
왜 그랬는지는 아직 못 밝혔는게 아쉽지만 저와 같은 현상 있으신분 참고
했으면 좋겠습니다.
(참고로 전 서비스 항목에서 서버, 워크스테이션, 인덱스, 오토업데이트는
필히 끄고 사용합니다. 간혹가다 쓸때도 있지만 훨 안정적이고 높은 퍼포먼스
를 보입니다. 딴건 건들여 봐도 거기서 거기니깐, 함부로 건들지 않으심이... )
P.S. 이러니까 네트워크공유가 안되더군요. 헐- 이런 오점이...
그래서 시험삼아 다시 워크스테이션 서비스를 시작해 봤는데요.
역시 딜레이 장난 아니게 걸리네요. IP 설정해주면 그나마 나아짐...
네트워크 공유 안하시는 분들한테만 권해야 겠군요. 확실히 이거 문제당... <해제>

(2).Automatic Updates(자동업데이트 기능)
=>해제하시면 수동으로만 업데이트 됩니다. <해제>
(3).Help and Support (도움말 및 지원센터)
=>윈도우 도움말이 불필요하다고 여겨지면 해제. <유지>
(4).NetMeeting Remote Desktop Sharing
=>인터넷외의 인트라넷, 원격제어등을 사용하지 않는다면 해제 <유지>
(5).Performance Logs and Alerts(원격제어시 원격 컴퓨터의 정보등을 수집하는 서비스) => 원 격제어 사용하지 않는다면 해제 <유지>
(6).Portable Media Serial Number
=>컴퓨터에 연결된 휴대용 음악장치의 시리얼넘버검색을 사용하지 않으면 해제 <유지>
(7). Secondary Logon
=>다른 계정을 사용하지 않는다면(단독으로 사용하는 컴퓨터라면) 해제. <유지>
(8).Smart Card Helper
=>플러그 앤 플레이를 지원하지 않는 레거시 스마트 카드를
지원하도록 설정.
=>레거시 스마트 카드를 사용하지 않는다면 당근 해제. <해제>
(9). System Restore Service
=> 시스템 복원 서비스... 시스템 복원 사용하지 않는다면 해제. <해제>
(10).Telnet
=>원격 사용자가 이 컴퓨터에 로그온하여 프로그램을 실행하고 UNIX 및 Windows 기반 컴퓨 터를 포함한 다양한 TCP/IP 텔넷 클라이언트를 지원. 말그대로... 이런 기능을 사용하지 않으려면 해제. <유지>





[XP팁26] 바탕화면 단축아이콘에서 화살표 없애기

regedit
HKEY_CLASSES_ROOT\lnkfile 선택
오른쪽 창의-->isshortcut 선택
마우스 오른쪽 버튼클릭 isshortcut항목 삭제





[XP팁27] 바탕화면 아이콘 폰트 투명하게 하기

바탕화면의 아이콘 글씨 박스가 배경화면을 가리게 될때 투명하게 하는 방법
*내컴퓨터 -> 속성 -> 고급 -> (시각효과,프로세서일정,메모리사용및가상메모리)설정 -> 시각효과
에서 "바탕화면의 아아콘 레이블에 그림자사용"항목을 체크 표시함





[XP팁28] 저사양 컴터에서 XP 잘 돌아가게 하는방법

XP를 저사양 컴터에서 벅벅대지 않고 잘돌아가게 하려면 다음을 설정한다
1.제목표시줄 오른쪽마우스 클릭 -> 속성 -> 시작메뉴 -> 이전시작메뉴 : 윈도우 예전 메뉴로 설정됨
2.내컴퓨터 -> 속성 -> 고급 -> (시각효과,프로세서일정,메모리사용및가상메모리)설정 -> 시각효과에서
사용자지정으로 한후 모든 콤보박스 체크해제(단,"바탕화면의 아아콘 레이블에 그림자사용"항목만 설정
하여 방탕화면 아이콘을 투명화 조치한다.
(참고)일반 컴에서도 화려한 XP창이 필요치 않을시 이 방식 적용하면 속도 향상효과를 보게 됨





[XP팁29] 프로그램오류시 시스템재부팅 방지

간단한 오류에도 XP가 저절로 부팅되어 버리는 난감함을 볼수 있는데 방지하는 방법이다.
내컴퓨터 -> 속성 -> 고급 -> 시작및복구 -> 설정 에서 "시스템오류"항목의 "자동으로 다시시작"을
체크해제하면 됨





[XP팁30] 부팅후 NumberLock설정방법

부팅후 넘버록이 설정되질 않는 경우 Regedit에서 설정하는 방법입니다
HKEY_CURRENT_USER\ControlPanel\Keyboard에서 InitialKeyboardIndicators항목의 키값을 2로 고침





[XP팁31] MSN Explorer제거방법

1. [시작]-[모든 프로그램(P)]를 선택하고 MSN Explorer 아이콘 위에 커서를 갖다 댄다.
2. 오른쪽 마우스 버튼을 클릭한 후 [속성(R)]을 선택
3. "MSN Explorer 등록정보" 창이 뜨면 아랫부분에 있는 [대상 찾기(F)]를 선택
4. 지금까지의 과정을 밟아 왔다면 MSN Explorer의 폴더로 이동을 해 있을 겁니당. 거기에 폴더가
두 개가 있는데, Setup이란 폴더를 열어 보면 msnunin이란 프로그램이 있는데, 이게 MSN Explorer의
"제거 프로그램"입니다. 클릭하면 시작 메뉴에 있는 "바로 가기"를 비롯해서 모든 게 제거됩니다.





[XP팁32] 빠른 웹서핑을 위한 인터넷 익스플로러 최적셋팅법

도구 - 인터넷 옵션 - 고급에서 다음과 같이 해 보세요.
탐색에서 "예약시 동기화할 오프라인 항목 표시" 해제 (선택하지않음)
특정파일이(이름이 한글로 된 파일) 안열린경우 " URL을 항상 UTF-8로 보냄" 해제 (선택하지않음)
탐색에서 "프록시 연결을 통해 HTTP 1.1 사용" 해제 (선택하지않음)
연결항목 랜설정항목에서... 자동구성과 프록시 서버를 모두 해제 (선택하지않음)





[XP팁33] 시작메뉴의 로그오프 없애기

시작->실행->gpedit.msc->관리 템플릿->작업표시줄 및 시작메뉴->우측창에서 "시작메뉴에
있는 로그오프 사용안함"에서 우측클릭->속성->"사용"에 첵크->리부팅





[XP팁34] 회사이름과 사용자 이름 바꾸기

[시작]-[실행]-[regedit 입력]-[엔터]-[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\
CurrentVersion]해서 들어가 보면 RegisteredOrganization과 RegisteredOwner라는 값이 있을
겁니다. 이 값의 RegisteredOrganization은 회사 이름이고 RegisteredOwner는 사용자 이름
입니다. 이 두 값의 데이터를 수정해 준 후, 로그오프나 시스템 다시 시작을 하면 변경 사항
이 적용 됩니다.





[XP팁35] 인터넷 익스플로러 로고 바꾸기

간단한 방법으로 인터넷 익스플로러의 로고를 바꿀 수 있다.
먼저 로고로 쓸 이미지를 준비한다(이때 그림 파일은 22×22픽셀의 bmp 형식이어야 한다).
`실행` 창에 `regedit`를 입력하여 레지스트리 편집기를 수행한 다음 [HKEY_CURRENT_USER]→
[Software]→[Microsoft]→[Internet Explorer]→[Toolbar]로 이동한다. 오른쪽 창에서 마우스
오른쪽 버튼을 눌러 [새로 만들기]→[문자열 값] 메뉴를 고른다. 새로운 문자열의 이름을
`SmBrandBitmap`로 바꾸고 `값 데이터`란에 앞에서 준비한 그림 파일의 경로와 이름을 적어준다
(여기서는 c:\main.bmp). [F5] 키를 누르고 인터넷 익스플로러를 수행하면 화면 오른쪽 위의
로고가 바뀐 것을 확인할 수 있다.





[XP팁36] 시스템 등록 정보에 로고 추가하기 www.infowww.info

(XP의 경우 관련파일이 없을시 메모장으로 만들어서 입력해주면 됨)
제어판의 [시스템] 애플릿을 실행하여 "일반"탭을 보면 시스템 사용자 정보가 나오고 아래쪽은
빈 공간으로 남아있다. 그런데, 특정 회사에서 생산한 PC의 경우 제조 및 기술 지원 업체라는
항목이 있으며 이곳에 제작사 로고와 각종 정보가 들어 있는 것을 본 적이 있을 것이다. 각자
자신의 로고와 등록정보를 입력해 보자.
1. 우선 로고 이미지를 만들어야 한다. 그래픽 편집 도구를 사용하여 200x120픽셀의 BMP파일을
하나 만들어야 한다. 파일의 색상은 아무래도 상관없다. 이 파일을 C:\WINNT\system32 폴더에
oemlogo.bmp라는 이름으로 저장한다.
2. C:\WINNT\system32폴더에서 oeminfo.ini 파일을 찾아서(또는 생성) 텍스트 편집기로 부른후
다음과 같이 정보를 입력한뒤 저장한다.
[general]
Manufacturer=예)JAVA World
Model=예)MS Windows 2000
[Support Information]
Line1= .... 내용들 ...
Line2= .........
Line3= .
Line4=
Line5=
Line6=
Line7=
Line8=
Line9=
Line10=





[XP팁37] 로그온 때 메시지 띄우기

네트워크에 연결된 PC를 켜면 맨 처음 로그온 화면이 뜬다. 이때 깜찍한 메시지를 넣어준다면 하루의
시작이 조금은 상쾌해지지 않을까?
① [시작] 메뉴에서 [수행]을 선택한다. ② [수행] 대화 상자가 표시되면 `regedit`라고 적고 [확인]
버튼을 누른다.
③ `레지스트리 편집기` 창이 화면에 표시되면 `HKEY_LOCAL_MACHINE\Software\Microsoft\Windows
\CurrentVersion\Winlogon`으로 이동한다.
④ 오른쪽 창에서 마우스 오른쪽 버튼을 누르면 나타나는 [새로 만들기] 메뉴에서 [문자열 값]을
선택한다.
⑤ 문자열의 이름을 `LegalNoticeText`라고 써 넣고 [Enter] 키를 누른다.
⑥ 앞에서 만들어 놓은 문자열을 마우스로 두 번 누르면 [문자열 편집] 대화 상자가 나타난다.
[값 데이터] 입력상자에 화면에 표시할 내용을 써 넣고 [확인] 버튼을 누른다.
⑦ 같은 방법으로 `LegalNoticeCaption`이라는 문자열 값을 만들고 [값 데이터]에 메시지 상자의
제목을 적는다. [확인] 버튼을 누른다. ⑧ PC를 껐다 켜면 설정한 내용에 따른 메시지 상자가 표시된다.





[XP팁38] DirectX 버전 확인방법

시작 - 실행에서 dxdiag 라고 쳐넣코 엔터 ..
(dxdiag : DirectX 진단도구 실행 명령어)





[XP팁39] 자신의 윈도 엑피가 정품 인증 확인방법

시작 -> 실행->oobe/msoobe /a (슬래시 a 앞에 한칸을 띄우는것을 주의..)





[XP팁40] 그룹정책(GPEdit)실행으로 시스템 설정하기

시작 -> 실행 -> gpedit.msc
윈도우의 여러 세세한 부분을 직접 수정해줄수 있다.
추가하고 제거하는 식의 불안한 regedit와는 달리 gpedit.msc는 기능을 켜고
끄는 식이라 안전하기도 하고 정말 많은 부분에 손을 댈수 있다.
단적인 예로, 프로그램 추가/제거에서 프로그램변경/제거 항목을 숨길수도
있다.각 항목 클릭시마다 설명도 자세히 나와있으니 참고.





[XP팁41] 익스플로러 시작시 풀스크린으로 항상 시작

1.HKEY_CURRENT_USER > Software > Microsoft >Internet Explorer > Main
2. Main 항목 오른쪽 창에서 FullScreen 항목을 찾으세요.
3. 이젠 FullScreen 를 더블 클릭해서 no를 yes 바꿉니다.
4. 레지스트리 프로그램을 종료 후 재부팅 하시면 됩니다.





[XP팁42] DMA 설정을 반드시 해야 하는 이유/조건

하드디스크와 시디드라이브를 DMA 모드로 설정하는건 기본이다.
E-IDE 드라이브의 인터페이스 컨트롤러에는 PIO 모드와 멀티워드
DMA(Direct Memory Access)라는 두가지 전송방식이 있다.
기존의 PIO모드에서는 데이터가 메모리에서 CPU를 거쳐 드라이브로
전송되지만 DMA모드에서는 데이터가 DMA 채널을 통해 CPU를 거치지
않고 곧바로 드라이브로 전송되기 때문에 전송속도가 높아지며 CPU
점유율 또한 현저히 낮아진다. 입출력을 위한 인터럽트의 횟수가
줄어 들어 멀티태스킹과 고속작업이 유리하다.

DMA 모드를 이용하기 위해선 다음과 같은 조건이 필요하다. (Ultra DMA 포함)

1.메인보드 지원여부 (칩셋과 바이오스에 따라 최대 지원여부가 달라짐)
2.운영체제 지원여부 (드라이버를 통해 업데이트 가능)
3.드라이브(저장매체) 지원여부 (하드웨어 자체 최대지원여부는 제품에 따라 다름)

메인보드 바이오스 상에서 DMA 설정을 확인한후 사용하는 메인보드 칩셋에 따라
운영체제용 드라이버를 설치한다. 예를 들어 인텔사의 칩셋을 사용하는 메인
보드는 Intel Application Accelerator 프로그램을, VIA 칩셋을 사용하는 메인
보드는 VIA 4-in-1을 사용하셔야 한다.





[XP팁43] 방화벽설정/제거방법
▶윈도우 XP는 인터넷 연결방화벽 설정 부분이 있어서 다른 컴퓨터가
내 컴퓨터를 엑세스하는 것을 막을 수 있다. 하지만 나누미나
P2P프로그램을 사용하는 경우 사용자가 컴퓨터에 접근할 수 없게 된다
이럴경우 방화벽을 제거해주어야 한다
▶바탕화면의 네트워크환경의 등록정보를 연다-자신의 네트워큰연결항목을 선택하고
마우스우측버튼을 클릭해서 등록정보를 열면 아래와 같은 창이 나오는데
고급-인테넷 연결방화벽을 체크하던지 체크아웃한다.





[XP팁44] 종료로고만 나오고 전원안꺼질때
(조치1)▶제어판(control panel)-전원 옵션(power options)-APM탭-하단의
[Enable Power Management support](최대 절전모드사용)를 체크합니다.APM지원을 체크한다.

(조치2)CMOS에서 전원관리 부분에 가서 "PM Control by AP" 여기를 YES라고 변경한다.

(조치3)[시작-제어판-새 하드웨어 추가]를 클릭한다.
[하드웨어 추가 마법사] ---> [다음]을 눌러 윈도우 XP가 새로 설치된
장치를 찾으면 [하드웨어가 연결되어 있습니까?]하고 물어 보는데
[예, 하드웨어를 연결했습니다] 라는 단추를 선택하고 [다음]을 누릅니다.
[설치된 하드웨어] ---> [새 하드웨어 장치 추가] 를 선택하고 [다음]을 누른다.
[원하는 작업을 선택하십시오]라고 나오면 [목록에서 직접
선택한 하드웨어 설치(고급)]을 선택하고, [다음]을 클릭.
[일반 하드웨어 종류]에서 [ NT APM/레거시 지원 ] 을 선택하고 [다음]을
누르고, 하드웨어 추가 마법사를 계속 따라 하시면 무사히 설치 된다.





[XP팁45] 지워도 보이는 프로그램목록지우기

프로그램 추가 에서 지우지 않고 그냥 프로그램의 언인스톨러를 제거했을때
프로그램추가 에서 목록이 그대로 남아있을 때가 있다. 그럴때는 지우지도 못하고
어쩔때는 설치가 잘 안될수도 있다. 지금부터 목록 지우는법을 알아보도록하곘다.
시작-실행-regedit 입력후 [확인]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
에서 프로그램 추가에 있는 목록이 보일것이다. 그중에서 제거할 목록을 선택하고
삭제 하면 된다.





[XP팁46] 휴지통이름 변경방법

HKEY_CLASSES_ROOT\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\ShellFolder의 오른쪽 창에
있는 attributes 키를 마우스 오른쪽 버튼으로 누른 뒤 `수정`클릭. `바이너리 값 편집` 창이
열리면 `값의 데이터` 칸에서 40 01 00 20 대신 70 01 00 20을 집어넣는다.
[WindowsMe는 여기까지]

3.XP는 추가적으로 "CallForAttributes"=dword:00000040 값을 삭제해주어야 한다.

4.위 작업을 하고 로그오프나 재부팅하고 휴지통위에서 마우스 오른쪽 버튼을 클릭하면
[삭제][이름바꾸기]명령이 추가된 것을 볼수있다.여기서 이름을 마음대로 바꾸면 된다.





[XP팁47] 파일시스템 FAT32/NTFS의 장단점www.infowww.info

WindowsXP에서는 NT커널과 기존Windows시리즈(95,98,me)에서 사용하던 FAT32방식을 모두 지원
하기 때문에 어떤 방식으로 사용하는것이 나을까 궁금할것이다.이 2가지 방식을 간단히 설명해
보기로 한다.
NTFS(New Technology, NT File System)
이것은 윈도우 NT3.1/3.5/3.51/4.0/2000/XP에서 지원하는것으로 한결같이 똑같은 것은 아니고
조금씩 수정되어왔다. NTFS의 클러스터 크기는 512바이트, 1킬로,2킬로, 4킬로바이트까지
사용자 지정이 가능하다. 파일크기및 볼륨은 이론상으로 최대 16EB(ExaByte=10의 18승바이트)
이나 실질적으로는 2테라바이트가 한계입니다.
이 파일시스템은 안정성, 자세한 사용자 제한, 보안성등이 FAT32보다는 나은것이다.

NTFS와 FAT16/32 파일시스템의 속도는 불륨이 상당히 크지 않으면 일반적으로
FAT가 빠르다. 그 이유는 먼저 FAT구조가 단순하고 같은 파일이 들어있는경우 폴더크기
자체도 NTFS보다 작다. 그리고 FAT는 사용자의 액세스 권한등을 살필 필요도 없고
NTFS는 이 불륨이 FAT인지 아닌지도 살펴보아야 하기 때문이다.
NTFS가 게임이나 일부 프로그램에서 호환성 문제를 일으킬수 있다고 하니 꼭 호환성을
중시하는 프로그램이 있다면 FAT32로 그 파티션은 유지하는것이 좋다.

(결론)NTFS방식은 FAT32방식에 비해 안정성,보안성,디스크단편화등이 우수하게 나타나지만
프로그램 액세스 속도면에선 FAT32방식보다 느리다.
데스크탑등 서버용이 아닌 일반사용면에선 FAT32방식이 유리함을 알수있다.

FAT32에서 NTFS로의 변환은 데이터를 그대로 유지한채 변환가능하지만 NTFS에서 FAT32로의
변환은 반드시 포맷하여야 함으로 변환을 결정할시 주의를 요한다.

일부 질문난에 보니 NTFS에서 FAT32로 포맷이 잘안된다고 하는데 FDISK실행후 비도스영역 파티션을
삭제한후 파티션 설정을 하면 가능하다.





[XP팁48]비디오카드 지원 모든 해상도 보는방법과 사용법

제어판-디스플레이등록정보-설정-고급-어댑터를 선택하고[ 모든 모드 표시를 클릭]하며 해당
비디오카드 어댑터가 지원하는 해상도가 색상을 보실 수 있습니다





[XP팁49]실행에서 바로 실행할 수 있는 명령어 + ipconfig 옵션

장치관리자등이나 서비스를 통제하는데 특히 편리하다.
compmgmt.msc : 컴퓨터 관리 devmgmt.msc : 장치관리자
diskmgmt.msc : 디스크 관리 dfrg.msc : 디스크 조각모음
eventvwr.msc : 이벤트 뷰어 fsmgmt.msc : 공유폴더
gpedit.msc : 로컬 컴퓨터 정책 lusrmgr.msc : 로컬 사용자 및 그룹
perfmon.msc : 성능모니터뷰 rsop.msc : 정책의 결과와 집합
secpol.msc : 로컬 보안설정 services.msc : 서비스

ipconfig 옵션

형식 : ipconfig /(옵션)

/? : 도움말
/all : 모든 설정 사항 표시
/release : 네트워크 어덥터의 ip주소 제거
/renew : ip 주소 갱신
/flushdns : DNS Resolver의 캐쉬 제거
/regisrerdns : 모든 임대된 DHCP를 갱신하고 DNS의 이름을 다시 정의
/displaydns : DNS Resolver의 캐쉬 목록 표시
/showclassid : 허가된 네트워크 어덥터의 모든 DHCP class 표시
/setclassid : dhcp class의 id를 만듬





[XP팁50]Shift키의 10가지 기능

1.윈도우즈 시작을 빠르게
윈도우즈가 시작될 때 키를 계속 누르고 있으면 시작 메뉴에 등록했던 여러 가지 응용
프로그램들은 전혀 실행되지 않고 윈도우즈만 바로 시작합니다. 시작 메뉴에 프로그램
을 많이 등록해서 사용하는 사람들은 급할 때 이 방법을 사용하면 편리합니다.

2. 휴지통 거치지 않고 곧바로 파일 삭제하기
키를 누른 채로 <삭제> 키를 눌러 파일을 지우면 파일은 온데간데 없이 사라져 버립니다.

3. 창 한꺼번에 닫기
여러 폴더를 열어 놓았다면 키를 누른 상태로 현재 폴더를 닫으면 지금까지 열어 놓은
상위 폴더까지 한꺼번에 닫힙니다.

4. 파일을 이동시키자
키를 누른 채로 파일을 잡아 끌면 해당 파일을 이동할 수 있습니다.

5. 연속된 파일 선택을 쉽고 빠르게

6. 탐색기를 어디서든 불러낸다
키를 누른 채로 '내 컴퓨터'를 선택하면 탐색기가 곧바로 실행됩니다. 뿐만 아니라 폴더
에서도 키를 누른 채로 마우스로 클릭하면 해당 폴더를 기준으로 하는 탐색기가 실행됩니다.

7. 연결 프로그램 변경하기
키를 누른 상태에서 파일을 마우스 오른쪽 버튼으로 누르면 단축 메뉴에 '연결 프로그램'
이라는 항목이 나타납니다. 여기서 다시 원하는 응용 프로그램을 선택하고 '이런 현식의
파일을 열 때 항상 이 프로그램을 사용' 을 선택해 주면 연결 프로그램이 바뀝니다.

8. 음악 CD 자동 실행 중지
음악 CD 를 넣으면서 키를 누르고 있으면 자동 실행되지 않습니다. 이 기능은 데이커 CD
에도 사용할 수 있습니다.

9. 시스템 재시작을 빠르게
키를 누른채 재시작 메뉴의 '예(Y)'를 선택하면 윈도우즈가 빠르게 재시작됩니다.

10. 단축 메뉴 불러내기
바탕화면의 단축 아이콘 또는 폴더를 선택한뒤 키를 누른 채로 을 누르면
각 프로그램에 해당하는 바로가기 메뉴가 뜹니다. 마우스 오른쪽 버튼을 이용하면 바로가기
메뉴를 쉽게 불러낼 수 있지만 키보드를 이용하여 작업하는 도중이거나 마우스에 이상이
생긴 경우 유용합니다





[XP팁51] 베드섹터 검사및 베드섹터 복구하는 방법

내컴퓨터-검사를 원하는 하드디스크를 선택하고 마우스 오른쪽 버튼을 클릭해서 -속성-도구
로이동-디스크검사 옵션 항목에서 [불량섹터 검사 및 복구 시도]를 체크하고 시작을 클릭해
주시면됩니다





[XP팁52] 부팅후 및 탐색기실행시 A드라이브 안 읽게 하기

부팅직후나 탐색기를 실행할때 이상하게 A드라이브를 이유없이 읽는 경우가 있을수 있다.
갑자기 이런증상이 나타날때는 이렇게 해보면 된다.
제어판->관리도구->서비스->shell hardware detection항목을 아 자동으로 설정->재부팅





[XP팁53] 하드가 이유없이 계속 읽기를 반복할때

아무 작업도 하지 않는데 하드디스크드라이브 표시등이 계속 켜지면서 하드가 작동을 한다면
다음 설정을 해제한다.
제어판->관리도구->서비스->Indexing Service->속성->사용안함





[XP팁54] BootVis 를 이용한 부팅 최적화

BootVis는 MS에서 제공하는 부팅최적화프로그램이다. 자료실에서 다운로드하여 BootVis.exe를 실행한다.

1. Trace - Next Boot + Driver Delays를 선택합니다.
2. OK 버튼을 누르면 자동으로 재부팅이 이루어 집니다. (재부팅후 기다리시면 BootVis 가 자동으로 실행됨)
그래프를 통해 부팅소요시간에 대한 자세한 설명이 나옵니다. 그냥 참고 하시면 됩니다.
3. 이번엔 최적화를 위해서 Optimize System을 선택합니다. 지시에 따라 하시고 재부팅후 BootVis 최적화를
마칠 때 까지 기다리셔야 합니다. 시스템에 따라서 반응 및 작업시간이 길어 질 수 있습니다.





[XP팁55] XP시작할때 새로운 시작 화면 안뜨게 하기

XP시작할때 새로운 시작 하면서 화면이 뜹니다.
제거할려면 먼저 제어판 => 사용자 계정에 가시면 사용자 계정 창이 뜹니다.
거기서 [사용자 로그온 또는 로그오프 방법 변경]에 가시면 [새로운 시작 화면 사 용]이 있습니다.
새로운 시작이 뜨면 새로운 시작 화면 사용에 체크가 되어 있겠죠 그 체크 표시를 안하면 이제 부터 새로운 시작화면 이 안뜹니다.





[XP팁56] 윈도우 탐색기를 좀 더 빠르게 할 수 있는 방법

일단 시작버튼-> 실행을 선택한 후 -> regedit 를 입력하고 엔터를 눌러서 레지스 트리 편집기를 엽니다.

HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/
여기에 update 로 가서 오른쪽에 보면 updatemode라고 있을겁니다.
updatemode에서 오른쪽 버튼 눌러서 수정해주면..값이 나오는데.
0000 01 이라고 아마 나올겁니다..거기서 01을 00으로 고쳐주면 됩니다..
아마 0만 치면..자동으로 00 이 될겁니다..
이렇게 하시고 윈탐색기를 실행시켜서..폴더를 돌아다니다보면..좀 빨라졌다는걸 느끼실겁니다..





[XP팁57] xp shutdown(윈도우종료) 빠르게하기

시작 -> 실행 -> regedit를 실행하고 다음 경로를 찾아갑니다. HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control

Control를 선택한 다음 오른쪽 목록에서 WaitToKillServiceTimeout을 더블 클릭합 니다.

그리고 20000 으로 설정된 값을 100 으로 수정하시면 됩니다...끝.





[XP팁58] 시스템 복원 및 자동 업데이트 해제

시스템 복원 기능은 윈도우에 문제 발생시에 미리 정해놓은 복원시점으로 되돌아 갈수 있도록 하는 기능으로 편리한 기능 이지만 많은 하드 디스크의 공간을 사용하는 단점이 있습니다.

자동 업데이트 기능은 윈도우 사용 중에 업데이트할 내용이 있으면 자동으로 사용자에게 알리고 업데이트를 해주는 기능으로 크게 간혹 윈도우 사용상에 불편함을 받을 수 있습니다. 이 두 가지 모두 사용빈도는 낮은데 비해 항상 시스템에 상주되어서 윈도우의 리소스를 사용하게 되기 때문에 필요 없는 사용자에겐 꺼주는 것이 유리하게 됩니다.

바탕화면에서 내 컴퓨터 아이콘을 오른쪽으로 클릭해서 속성을 선택하면 그림과 같은 시스템 등록 정보가 나타나게 됩니다.여기서 시스템 복원 탭으로 이동 후 그림처럼 “모든 드라이브에 시스템 복원 사용 안함” 항목에 체크 해주면 시스템 복원기능을 사용하지 않게 됩니다.

그리고 자동 업데이트 탭으로 이동해서 “자동 업데이트를 사용하지 않고 컴퓨터를 수동으로 업데이트 합니다“ 라는 항목을 클릭 하면 자동 업데이트 기능을 사용하지 않게 됩니다.





[XP팁59] 오류보고 사용 안함www.infowww.info

오류보고 라는 기능은 프로그램 사용 중에 에러가 발생하면 이런 에러에 관한 정보를 마이크로 소프트로 보낼지 물어보는 창이 뜨게 하는데 이 역시 사용상에 별 쓸모가 없는 기능입니다.

오류보고 기능을 중지 시키려면 시스템 등록 정보창의 고급 탭에서 맨 아래의 “오류 보고” 라는 단추를 눌러 주시면 위의 그림처럼 오류보고 설정창이 나타납니다. 여기서 “오류 보고 사용 안 함” 이라는 항목을 클릭 하시고 그 바로 아래에 있는 “치명적인 오류가 발생하면 알림” 이라는 항목에 체크표시를 반드시 해주시고 확인을 눌러주면 됩니다.





[XP팁60] 시각 효과 설정 과 가상 메모리 설정

시각 효과는 XP 곳곳에 사용되고 있는 여러 가지 효과들을 설정하는 곳으로 이곳을어떻게 설정하느냐에 따라서 약간의 버벅이는 문제를 해결 가능한 부분으로 자신의시스템에 맞게 각자가 설정을 하는 게 좋습니다.

그리고 가상 메모리 설정은 하드 디스크에 가상 메모리 파일인 페이징 파일에 관련된 설정입니다. 이것은 시스템의 안정성과 직결되는 중요한 부분 입니다.

시스템 등록 정보의 고급 탭에서 성능 항목의 설정을 클릭하면 위의 그림에서처럼 성능 옵션창이나타납니다.

여기서 시각 효과 탭에서 사용자 지정을 클릭하시고 여러 가지 항목들을 자신의 시스템에 맞게설정해 주시면 됩니다.

이곳에서 XP의 각종 시각 효과를 수정할 수 있으며 몇몇은 시스템의 속도에 영향을주는 효과도 있으니 자신의 시스템에 맞게 직접 수정해 보시기 바랍니다. 네모 상자의 체크를 없애면 해당 효과를 없애버리게 됩니다.

그리고 시각 효과 옆의 고급 탭으로 이동하시면 맨 아래에 가상 메모리 설정에 관한항목을 볼 수 있습니다.

가상 메모리는 시스템의 안정성과도 직결되는 설정으로 주의를 요하는 부분입니다.가상 메모리는 하드 디스크에 페이징 파일로 공간을 차지하게 되는데 일부 유저는 이런 파일의공간을 없애고 하드 디스크의 공간을 늘리려 하는데 이것은 아주 큰 실수를 하는 것입니다.

XP에서 이런 가상 메모리를 없애 버리면 치명적인 에러중 하나인 메모리 덤프 현상이 계속적으로 발생하게 되며 이 때문에 시스템의 안정성이 크게 떨어지게 됩니다.

따라서 이를 설정할 때는 최소한 처음 크기는 실제 메모리 크기와 같아야 하며 최대크기는 실제 메모리 크기의 2배 ~ 2.5배 정도로 설정해 주셔야 합니다.

그리고 이곳에서 맨 위의 드라이브 선택 항목에서 이런 페이징 파일이 위치할 드라이브를 설정 할 수도 있는데 여러 사람들이 윈도우가 설치된 드라이브 이외의 드라이브에 페이징 파일을 위치시키면 좀더 시스템의 성능을 향상 시킬 수 있다고 하네요.

여기서 페이징 파일의 모든 설정이 끝나면 반드시 오른쪽의 “설정” 단추를 눌러주셔야 해당 설정이 저장되게 됩니다.





[XP팁61] 최대 절전 모드 끄기

최대 절전 모드는 미리 설정해둔 일정시간이 지나면 메모리 상의 모든 내용을 하드 디스크로 저장 시킨 후 시스템에 최소한의 전력만 유지하고 모든 장치의 전원을 차단해 버리는 절전 모드로 항상 시템의 메모리용량만큼 하드 디스크 여유 공간을 확보하게 됩니다. 따라서 이 기능을 끄면 하드 디스크 공간을 얻게 됩니다.

바탕 화면에서 오른쪽 마우스 버튼을 누르고 속성을 클릭 하시면 디스플레이 등록정보 창이 나타나게 됩니다. 여기서 화면 보호기 탭으로 이동 하셔서 맨 아래의 “전원” 단추를 클릭하시면 전원 옵션 등록정보 설정 창이 나타납니다.

이 창에서 위의 그림처럼 최대 절전 모드 탭으로 이동하셔서 “최대 절전 모드 사용”항목의 체크를 없애 주시면 최대 절전 모드를 사용하지 않게 되며 시템의 메모리만큼의 하드 디스크 공간을 얻게 됩니다.





[XP팁62] 인터넷 옵션-이미지 도구 및 자동크기조정

이 기능은 익스 6.0에 새로 생긴 기능이다.
어떻게 보면 편할수도 있다.
그러나 원래크기로 보려면 마우스를 그림위에 올려놓고
원래크기를 선택할수 있는 아이콘이 나타나기를 기다려야 한다.
디폴트는 자동크기조정에 이미지 도구모음 표시이다.
고급탭을 선택한다.
멀티미디어 항목에서 이미지 도구 모음 사용과 이미지 크기 자동 조정 가능을
해제하면 모든것이 끝난다.





[XP팁63] 대체구성을 이용한 편리한 TCP/IP셋팅방법

윈XP기능중 대체구성 이라는것이 있습니다. 이 기능을 잘 활용하시면, 노트북 사용하실때.. 편리하게 사용하실수 있습니다.
대부분, 노트북을 사용하시는분들이 회사와 집에서 사용을 하실겁니다
회사에서는 고정IP, 집에서는 모뎀을 이용한 유동IP를 사용하실텐데.. 회사에서 고정IP를 셋팅하고,
집에서 사용하실려면.. TCP/IP셋팅을 자동으로 맞추어서 사용을 해야 합니다.
그리고, 회사와서 사용할려면.. 기존에 셋팅을 했던 IP가 사라지는데..
이거 계속 셋팅할려면 참 귀찮죠.. 아래 그림처럼, 일단 TCP/IP 셋팅을 자동으로 맞추시면,
바로 옆에 대체구성이라는 메뉴가 나옵니다. 여기에다 회사나 학교의 고정IP를 셋팅해 놓으면,
한번만 구성을 하면.. 부팅할때 자동으로 환경을 파악하여 IP 구성을 맞춥니다.
그럼.. 즐넷하십시요..





[XP팁64] 검색 도우미 캐릭터 바꾸기

윈도우 XP에서는 아주 재미있는 검색도우미 캐릭터를 보여준다. 아직 4가지 종류의 캐릭터만 있지만 앞으로 더 추가 되지 않을까 싶다

먼저 변경하는 방법에 대해알아보자

시작-검색을 실행한다 하단의 기본설정 변경을 클릭한다

다른 캐릭터 사용을 클릭해서 원하는 캐릭터를 선택하고적용하면 됩니다





[XP팁65] 잡음제거

안쓰는 라인인 등등 음소거하기.

제어판→사운드, 음성 및 오디오 장치→사운드 및 오디오 장치 등록정보에 볼륨 탭에서

장치 볼륨에 고급 버튼을 클릭 합니다. 그런 다음 CD Player 를 음소거. CD로 음악 들을때는 해제해야함.

그러므로 이 팁 쓰지말것.

(CD Player 항목이 나오지 않으면 옵션→속성에서 재생에 CD Player 를 체크)





[XP팁66] 드라이브 문자명 변경하기

윈도우 XP는 드라이브명을 변경하는 방법이 윈미와 조금 다르다 좀 번거로운 단계를 거쳐야하는 불편함이 있다 다음 순서데로 변경한다

1.시작-제어판-관리도구-컴퓨터관리를 실행합니다

2.컴퓨터관리-저장소-디스크관리를 클릭합니다

그러면 씨디롬을 포함해서 해당디스크가 나타나는데 변경을 원하는 디스크에서 마우스 우측버튼을 눌러 [드라이브 문자 및 경로 변경]를 클릭합니다

3.변경창이 나타나면 변경을 클릭하고 원하는 드라이브 문자를 선택해서 변경하면됩니다

하지만 시스템 이나 부팅 볼륨의 드라이브는 문자를 변경할 수 없습니다





[XP팁67] 미리보기 썸네일 크기 변경하기 www.infowww.info

탐색기나 내그림등에서 미리보기했을 경우 나타나는 썸네일크기를 변경하는 방법

1.시작-실행-regedit 를 실행합니다

2.레지스트리의 다음 경로를 찾아갑니다
HKEY_CURRENT_USER (자기계정에서 적용하려면) 또는 HKEY_LOCAL_MACHINE (모든 컴퓨터 사용자에전용하려면) - Software ? Microsoft ? Windows ? CurrentVersion ? Explorer

3.우측창에서 마우스 오른쪽 단추를 눌러 새로만들기- dword값을 만들어줍니다 존재하면 값만 변경합니다

ThumbnailSize ---->썸네일의 크기 결정입니다 더블클릭해서 값을 32~256 사이값으로 해줍니다 50에서 80사이가 적당하더군요

ThumbnailQuality --->썬네일을 해상도결정입니다 50~100사이로 해줍니다. 디볼트 해상도를 사용할려면 위에 사이즈값만 만들어주면됩니다

4.탐색기를 열어 미리보기를 해보세요 ^^*





[XP팁68] 자연스럽고 또렷한 글자 보기

디스플레이 등록정보에서 화면배색.... 효과를 누릅니다 화면글꼴의 가장자리를 다듬는데....... 칸의 표준 밑에 cleartype누르고 확인 끝
이기능이 XP에 새로이 탑재된 것이지만, 처음 설치했을 때, 글이 뿌옇지가 않는다면 굳이 이렇게 할 필요는 없습니다. 그리고, XP 에서는 기본적으로 전 버젼에서보다 글자가 더 선명해요 Clear Type 설정하시기 전에 신중(?)하게 생각해보시기 바랍니다 님들 ...





[XP팁69] 한영키가 안될때 고치는 방법


(익스플로러 한글입력 오류
마이크로소프트(MS) 인터넷 익스플로러로 웹서핑을 즐기다 보면 가끔 한글 입력이 되지 않고 영어만 입력되는 경우가 있다. 이때는 ‘한/영’ 전환키도 작동하지 않는다. 한글을 쓰기 위해 익스플로러를 끄거나 컴퓨터를 다시 부팅해보기도 하지만 껐다 켜도 한글이 입력되지 않는 경우가 많다.
이같은 현상이 나타나는 원인은 익스플로러 5.0 이상에서 발생하는 ‘버그’ 때문이다. 버그란 컴퓨터 프로그램을 만들 때 발생하는 오류를 뜻한다. 윈도나 익스플로러 같은 프로그램은 수만개의 명령문이 조합된 대형 프로그램이기 때문에 제작자가 수정하지 못한 버그가 발생할 수 있다. 익스플로러 6.0에서도 여전히 위력을 발휘하고 있는 이 버그를 극복할 수 있는 방법은 5가지로 요약된다. 버그의 변형이 많아 5가지 중 해당 해법을 찾아내면 된다.

①익스플로러를 실행시키고 한글 입력이 안되면 ‘F6’키를 2번 누르거나 마우스를 익스플로러의 주소입력창에 가져간 다음 더블 클릭 한다. 5.0
②마우스를 주소입력창으로 가져간 뒤 ‘한/영’ 변환키를 누른다.
③아래아한글 등 다른 프로그램에서 한글을 써서 복사한 다음 익스플로러에 붙여 쓴다.
④‘Ctrl’와 ‘N’을 눌러 새창으로 띄워 한/영 전환을 시킨다. 6.0 ⑤‘Tab’키를 여러차레 눌러본다.
)


한영키가 않되서 너무나 고생한 사람입니다..
껏다가 키거나 인터넷익스플로러를 닫았다가 켜도 안됄때 사용하세요..
(현상)
윈도우 즉 txt등에서 한영키가 안됄때 인터넷(html)상에서도 안됄때...
윈도우에서는 돼지만 인터넷상에서 안됄때
(해결방법)
1번째방법
시작->제어판->국가및언어옵션->언어->자세히->기본입력언어

중요한것은 기본입력언어에 반드시 한구어 입력기(ime2000,ime2002)가 되어있어야됩니다.
안되어있으시면 즉시 바꾸어주세요
바꾸는 방법은 옆의 화살표를 클릭하여서 2002,2000을 선택하시면됍니다.
바꾸어도 바로 적용이 안되기때문에 로그오프나 시스템 제시작해야됩니다.

아마 영어나 한국어로 되어있을겁니다.
한국어로 되어있으면 윈도우에선 돼지만 인터넷에서는 돼지 않을겁니다.
->시간이 짧게 걸리는 방법입니다.

2번째방법
만약 이것으로 고쳐진다면 잘되신거고
아니면 두번째 방법으로 고쳐야 됩니다.
(현상)
xp에서는 계정이 있습니다.
자기 계정에서는 안되고 다른 계정에서는 됄겁니다.
셋팅이 다르기때문이죠..
아마 될겁니다. 만약이런현상이 나타나면
(방법)
다른 계정으로가서
자기의 계정을 삭제 그리고 다시 만듭니다.
아마 자기의 중요한
파일은 백업하라고 나올겁니다.
계정을 삭제한다고 자료가 다날라가는것은 아닙니다.
자기의 문서와 인터넷 즐겨찾기 그리고 temp정도 없어집니다.
그리고 셋팅도요 프로그램을 다시 설치 해줘야겠죠..

세번째방법
(현상)
전체계정에서 그런현상이 일어날떄
(방법)
윈도우 복구
윈도우를 설치하면
재설치가 됩니다.
죽 나두다가 도스화면에서 시스템 복구를 누르시지 마시고
재설치 -> 그리고 복구를 누르십시오..

그러면 잘될겁니다..
아 그리고 복구를 하면 다시 프로그램을 깔아줄필요도 없읍니다.
다 잘되더라고요..
재가 고생해서 알아낸방법입니다..
제가 잘되었으니 여러분도 도움이 되시길...
여기에서 찾아봤지만 껏다가 켜라 그리고 재설치 해라는것만 나와있어서....





[XP팁70] 작은 이미지 깨지지 않고 크게 만들기..

하두리로 찍으면 크기가 얼만한지 아실겁니다...저만큼 확대해도 깨지지 않네여..
참고로 위 사진은 1152*864 픽셀입니다..용량도 적게 먹어여..^^ 제가 우연히 발견한건데요...
우선 조그마한 사진을 하나 `내그림`에 저장합니다
그리고 디스플레이 화면보호기로가서 화면보호기 설정을 `내 그림 슬라이드 쇼`로 설정합니다.
옆에 `설정`버튼을 누르면 옵션창이 뜨겠죠?.. 그리고 체크합니다..`작은 사진 늘이기`라고 있죠?
...그거 체크확인하시고 됐으면 확인 버튼 누르시고 `미리보기`합니다...
아까 저장한 `작은사진` 크게 나오죠?.. 그리고 스샷찍을 때 누르는 키...`PrintScreen Sys Rq` 누르시고
그림판에 붙여넣기 하시고 단축키 ctrl+v 아시죠?..(*저장하실때 jpg파일로 하시는게 나을듯)
이미지 안깨지죠?... ^^ 도움이 되셨으면 하네요 좋은하루 되세요..





[XP팁71] Fdisk 올가이드www.infowww.info


Fdisk를 이용한 하드디스크 파티션 나누기
하드 디스크를 이용하게 되는 과정은 대개 다음과 같다.
공장 출하(Low Lebel Format) → 시스템화(FDISK) → 활성화(Format) → 운영체제 설치..
하드 디스크 초기 출하시에는 Low lebel Format 을 한 상태와 마찬가지의 상태로 있게되고, 이걸 사용하기
위해서는 다시 시스템 설계를 해줘야 하는데 이 때 이용하는 방법이 바로 Dos 의 FDISK 명령이다.
요즘은 대개 소매상에서 미리 셋팅과 포맷을 해서 소비자에게 주는데.. 소비자 입장에서는 대용량의 하드
디스크라면 이걸 다시 두세개 정도의 파티션으로 나눠서 사용하면 유용한 점이 많다. 파티션을 나눌 경우
하드의 공간 낭비가 생기기는 하지만, 낭비되는것 보다도 더 큰 효용이 있기 때문에 파티션을 나누게 된다.
그 방법으로 가장 보편적이고 표준적인 방법이 바로 Dos 의 FDISK를 이용하는 방법입니다.
여기서 간단히 FDISK 사용법에 대해 설명합니다..

(주의: FDISK를 할때에는 미리 하드디스크에 있는 모든 자료를 반드시 백업해 두어야 한다)
Ⅰ. FDISK 실행
- 먼저 부팅 디스켓을 (A:)드라이브에 넣고 컴퓨터를 켭니다.
- A:> 가 나오면 fdisk를 입력하고 엔터를 칩니다. 그러면 영어로 고용량 하드 디스크를 쓰고 있다면 당신의
하드를 FAT32구조로 만들 겠습니까< Y/N>?를 물어보는데 여기서 무조건 "Y"를 누릅니다.
- Yes 를 누르면 Choose one of the following: 이라는 말 다음에 fdisk 기본 메뉴가 나옵니다.

[기본 메뉴]
1. Create DOS Partition or Logical DOS Drive
2. Set Active Partition
3. Delete partition or logical dos dirve
4. Display partition information
5. Change current fixed disk drive

[한글화 메뉴]
1. 분할 영역 또는 논리dos 드라이브 지정
2. 실행 영역 지정
3. 분할 영역 또는 논리 DOS 드라이브 삭제
4. 분할 영역 정보 표시
5. 현재 하드 디스크 바꾸기 (- 하드가 2개 이상일때 표시됨)

Ⅱ. 파티션 지우기

- 하드를 새로 구입하신 분은 아래의 "파티션 만들기"를 보시고...
이미 하드를 쓰시고 계셨던 분은 3번 메뉴를 선택해서 기존에 있던 파티션을 지우셔야 합니다.
3번 메뉴를 선택하게 되면 다음과 같은 4 개의 하위 메뉴가 나옵니다.

[③ - 하위 메뉴]
1) Delete Primary DOS Partition
2) Delete Extended DOS Partition
3) Delete Logical Drive(s) in the Extended DOS Partition
4) Delete Non-Dos Partition

(한글화 메뉴)
1) 기본 도스 분할 영역삭제
2) 확장 도스 분할 영역삭제
3) 확장 도스 분할 영역에서 논리 도스 드라이브 삭제
4) 비 도스 분할 영역 삭제

(설명)
1)은 기본 영역을 지우는 메뉴로, 기존의 하드를 분할했을 경우 확장 영역을 지우기 전까지는 지워지지
않습니다. 만약 그 전에 분할 하지 않고 하드를 하나로 썼다면 여기서 기본 영역을 지우세요.
2)은 처음에 하드를 2부분으로 분할 해서 사용 했을 경우 확장 영역을 지우는 곳입니다. 여기서 확장
역영을 지우고 나머지 기본 영역은 1)에서 지우시기 바랍니다.
3)은 하드를 2부분 이상으로 분할 해서 사용 했을 경우 논리드라이브를 지우는 메뉴입니다.
만약 하드를 3부분으로 나누어서 썼다면 논리드라이브를 여기서 지우시고 다음 확장드라이브는 2)
에서 다음 기본 영역은 1) 순으로 지우시기 바랍니다.
4)은 도스외에 다른 운영체제를 지우는 메뉴입니다. (예: NTFS..)

Ⅲ. 파티션 만들기

기존의 하드 영역을 모두 지웠으니까 새로 다시 영역을 정해줘야합니다. 다시 처음 fdisk 기본메뉴로
돌아가서("ESC" 키를 누르면 돌아간다.) 1번 메뉴를 선택합니다. 그러면 다음과 같은 3개의 하위 메뉴가
나오게 됩니다.

[① - 하위 메뉴]
1) Create Primary DOS Partition
2) Create Extended DOS Partition
3) Create Logical Drive(s) in the Extended DOS Partition

(한글화 메뉴)
1) 기본 도스 분할 영역 지정
2) 확장 도스 분할 영역 지정
3) 확장 도스 분할 영역에 논리 도스드라이브 지정

(설명)
1)은 기본영역을 지정해주는 곳으로 나중에 C 드라이브가 됩니다.
2)은 확장 영역을 설정하는 곳입니다.
3)은 하드를 3이상으로 분할할 때 사용하는 메뉴입니다.


A. 하드디스크가 하나 일때

a. 파티션을 하나로 만들기
하드디스크를 하나의 드라이브로 하고 싶으시면 다음과 같이 하시면 됩니다. fdisk기본 메뉴에서 파티션을
만들기 위해 1번을 선택하고 , 그러면 위와 같이 세 개의 하위 메뉴가 나타난다. 여기서, 다시 1번을 선택을
하면 파티션을 하나로 쓸것이냐 아니냐 하는 [Y/N]의 선택 항목이 나오게 되는데 이때에 "Y"를 선택을 하시면
됩니다.이렇게 "Y"를 선택을 하게 되면 다시 부팅을 한다는 메시지가 나오게 되는데 부팅 후 Format을 하면
모든 작업이 끝나게 됩니다.

b. 파티션을 두개나 세개 이상으로 만들기
30GB의 하드디스크를 우리는 5GB, 5GB,20GB이렇게 3 개로 분할할 경우..
먼저 파티션을 하나로 나눌 때처럼 일단은 [Y/N]가 나오는 항목까지 가서
이번에는 "Y"가 아니라 "N"를 치면
커서가 밑으로 가면서 30000 라는 숫자와 함께 깜박거리게 됩니다.
이때에 5000 이라고 치고 엔터를 치면 기본 메뉴화면으로 돌아 가게 되는데 다시 1번을 누른 다음에 이번에는
2 번을 누르고 들어가면 남아 있는 용량인25000 이라는 숫자와 함께 커서가 깜박 거리게 됩니다. 이 숫자가
나오면 그냥 엔터를 치게 되면 어떤 메시지와 함께 다시 25000 이라는 숫자가 나오게 되는데 이때에 주의를
하셔야 합니다. 만일 하드디스크를 두개로 나누어서 사용을 하고 싶다면 이곳에서 그냥 엔터를 치면 되고
그렇지 않고 3개로 나누어서 사용을 하고 싶다면 이곳에서 다시 5000 이라는 숫자를 입력하게 되면 다시
20000 (30000 - 5000+5000 ) 이라는 숫자가 나오게 됩니다.
하드디스크를 더 분할을 하고 싶다면 다시 20000 보다 적은 숫자를 넣어 주면 되고 끝내고 싶다면 그냥
엔터를 치면 됩니다.

B. 하드디스크가 두 개(여러 개)일 때

하드디스크가 2개나 여러 개일 때도 파티션을 나누는 방법은 같습니다. 다만 주의할 것은 자신이 파티션을
나누고자 하는 하드디스크를 정확하게 선택을 해주어야 합니다. (기본 메뉴의 5번 메뉴 이용) 그리고, 덧붙
여서 설치하는 하드 디스크를 파티션 나눌때 용도를 생각해서 기본 도스영역을 만들것인지 아니면 모두 확장
도스영역으로 만들것인지 선택을 하셔야 합니다. 자료 백업용으로만 쓸거라면 모두 확장 도스 영역으로 만들
어도 되지만.. 나중 운영체제도 설치할 계획인 경우에는 기본 도스 영역을 지정한 후 확장 도스 영역을 만드
셔야 다시 파티션 나누는 번거로움을 피할 수 잇습니다.
그 후에는 하드디스크 하나일 때와 방법은 동일합니다.

Ⅳ. 드라이브 활성화 (Format)

* 파티션 나누는 작업이 다 끝났으면..나눈 파티션을 활성화시켜 줘야 합니다.
- fdisk 기본메뉴로 돌아 오셔서 2) - Set Active Patition 메뉴를 선택합니다.
이 메뉴는 부팅 영역을 활성화 해주는 곳으로 항상 C 드라이브만을 선택해야 합니다.
(다른 곳을 선택하면 부팅이 안됩니다. 이런걸 흔히 "텃세 부린다"고 하죠^^)
- "dos 실행 영역으로 지정하려는 분할 영역의 번호를 입력하시오 ---[ ]" 에 "1" 을 입력하고 엔터..

- 이제 모든 작업이 끝났습니다.
만약 하드가 분할된 정보를 보고 싶으시면 fdisk 기본 메뉴에서 4) 를 선택합니다. 다 보셨으면 Esc 키를 눌러
fdisk를 빠져 나갑니다.

- 그런 다음 컴퓨터를 재부팅합니다.
(A드라이브에 부팅디스켓이 삽입된 상태에서..)

- A:> 화면이 나오면 가장 끝 부분 드라이브부터 Format을 합니다.
예를 들어 하드를 C, D, E로 나누었다면 다음과 같은 순서로 하세요.
A:>format e:
A:>format d:
A:>format c:
라고 치고 Enter를 치세요.






[XP팁72] HDD 파티션 및 프로그램 설치 최적화 www.infowww.info


파티션 및 프로그램 설치와 최적화가 무슨 상관이 있을까? 하고 의아하게 여기는 사람들이 있을 것이다. 그러나 HDD의 구조에 대하여 이해한다면 궁금증이 풀릴 것이다. HDD는 디스크 바깥쪽 전송률이 안쪽보다 대략 30-40% (IBM DJNA 15GB 기준) 정도 더 빠르다.

여기서 반드시 파티션을 나눠야 된다는 것을 알 수 있다.

프로그램을 설치하는 위치를 사용자가 임의로 조절할 수 있는 방법은 없다. 그러나 어느 드라이브에 어떤 순서로 설치할 것인지는 결정할 수가 있다. 그러므로 사용 빈도가 높은 프로그램이 가급적 HDD 외측에 설치되도록 설치 순서를 정하고 적절한 드라이브를 선택하면 된다. 파티션을 하는 목적은 여러 가지이지만 HDD 전송률을 최대한 높이기 위한 방법(최적화)도 그 중 하나이다. HDD를 파티션하면 C:, D:, E: 등의 순서로 HDD가 나뉜다. C:는 디스크의 가장 바깥쪽에, 마지막 드라이브는 가장 안쪽에 자리 잡는다.

15GB 용량의 HDD를 3 등분하여 5GB씩 파티션하고 3 개의 드라이브 C:, D:, E:로 사용할 경우를 예로 들어보자;

드라이브 C:의 속도가 가장 빠르므로 이곳에는 OS, 인터넷 탐색기, 워드프로세서, 유틸리티 등을 필수 프로그램들을 사용 빈도가 높은 순서로 설치하고 D: 드라이브에는 이따금 즐기는 게임이나 CD 레코딩을 위한 임시 작업장으로 사용하며 E: 드라이브는 그래픽 드라이버를 포함한 각종 update용 드라이버 보관 및 장기 보관 data backup용으로 사용하면 좋을 것이다.

실제로 위 말이 사실인지 테스트 해보자.
테스트 프로그램은 자료실에 하드속도 테스트란 제목으로 등록되어있다.
자신의 디스크가 어느부분에서 제일 빠른지 그 부분을 제일 빠른 순으로
C: D: E: ...영역으로 설정하면 C: 시스템파일들을 설치하고 기본적인 응용프로그램들을 설치한다면 빠른 시스템을 느낄것이다.

중요>>>하드의 제일 빠른 부분을 찾아야 되기 때문에 파티션 용량 계산 잘 하시길...필자는 현재 3개 로 나눠서 사용중이다.
C:는 17G
D:는 11G
E:는 12G 로 사용중이다.
실제로 테스트 해 본 결과 C: 와 E: 의 읽기 속도와 쓰기 속도는 거의 2배 가까이 차이가 났다. 물론 그래프 상이지만...
40기가중 17G 이 영역이 가장 빠르게 나타나서 이 부분을 현재 C: 로 쓰고 있다.
OS를 가장 빠른 하드에 설치해서 부팅속도 및 엑세스 속도를 조금이나마 당겨보시길..보편적인 벤치마킹 프로그램인 산드라로 테스트해보면 금방 알수 있음.


[XP팁73] Windows XP에서 avi화일의 이동/복사 문제 해결


시작버튼->실행->REGEDIT

다음의 키값을 찾아갑니다
HKEY_LOCAL_MACHINE
\ SOFTWARE
\ Classes
\ CLSID
\ {87D62D94-71B3-4b9a-9489-5FE6850DC73E
\ InProcServer32

여기서 InProcServer32 라는 키 값(폴더자체)을 삭제해주시면..
즉시 이동/삭제가 가능합니다.

2006/10/12 14:37 2006/10/12 14:37
이 글에는 트랙백을 보낼 수 없습니다
웅쓰:웅자의 상상플러스
웅자의 상상플러스
전체 (379)
게임 (5)
영화 (2)
기타 (23)
맛집 (5)
영어 (2)
대수학 (3)
형태소 (5)
Hacking (9)
Linux (112)
HTML (48)
Application_developing (48)
Web_developing (102)
Window (11)
«   2024/11   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
  1. 2016/01 (1)
  2. 2015/12 (3)
  3. 2015/10 (3)
  4. 2015/03 (2)
  5. 2015/01 (4)