Search Results for '프로그래밍/프로그램 팁 관련'


255 posts related to '프로그래밍/프로그램 팁 관련'

  1. 2012/07/17 네이버 광고차단 및 광고내용 원하는 내용으로 바꾸기 !!
  2. 2012/05/05 DNS 미리 뚫고 페이지 속도 빠르게 하기.
  3. 2012/05/05 사이트에 구글번역 붙이기.
  4. 2012/05/05 http 스트리밍 관련 모듈
  5. 2012/05/05 웹 동영상 인코딩 ffmpeg for iis 설치 후기
  6. 2012/01/31 네이버 원격블로깅입니다.
  7. 2012/01/28 web page performance test (WPT) tool - 사이트 속도 테스트
  8. 2012/01/16 SNS Share API - shareaholic
  9. 2012/01/16 Google Webfont API
  10. 2012/01/14 하이브리드 앱 개발툴 - 앱셀레이터 티타늄(Appcelerator Titanium)
  11. 2012/01/10 쉘상태에서 웹서버 접속자수 알아내기[2차 수정] 1
  12. 2012/01/02 브라우저가 최신기술 지원하는지 체크하는 방법
  13. 2012/01/02 웹뷰에서 폭 스크롤 때문에 잘리는 문제 해결 2
  14. 2012/01/02 php.ini 설정 권한이 없는 웹호스팅에서 register_globals = ON 설정 하기
  15. 2012/01/02 아이폰에서 프레임 적용시 100% 적용하기
  16. 2011/12/10 웹표준 진단 프로그램(정식버전) - eGovFrame
  17. 2011/12/10 웹 접근성을 고려한 콘텐츠 제작 기법 2.0(2011.11)
  18. 2011/11/23 Windows 2000 커맨드 명령어
  19. 2011/11/23 MS-WORD문서를 읽어 들이려면
  20. 2011/11/19 마우스로 개체 이동 및 크기 변화, 자동 크기변화
  21. 2011/11/19 group by와 distinct를 같이 쓸 때 속도 향상법
  22. 2011/11/19 table 구조에서 열(column) 단위로 숨기기
  23. 2011/11/19 우편번호 검색 API 사용예
  24. 2011/11/14 리눅스 상에서 오라클 설치
  25. 2011/11/14 Windows 개인사용자를 위한 MS Security Essentials
  26. 2011/11/14 Windows Server 2008 R2로 업그레이드해야 하는 10가지 이유
  27. 2011/11/03 웹표준에 관한 타입 선언
  28. 2011/10/31 엑셀 다운시 스타일,함수 적용하는 방법
  29. 2011/10/27 블로그 상위노출 기준과 블로그 상위노출 방법
  30. 2011/10/23 khtml 이용하여 URL 로 부터 스크린샷 얻어 저장하기
웹 서핑을 하다보면 불필요한 광고 때문에 컴퓨터가 버벅되는 경우가 있는데, 간단하게 hosts 파일을 수정해서 IE, FireFox, Chrome 등 어떤 브라우저를 사용하더라도 광고를 보이지 않도록 할수 있습니다. 그리고 그 광고를 원하는 내용으로 바꿀수 있습니다.

- hosts 파일 위치(윈도우즈 버전 마다 다를 수 있음)
C:\Windows\System32\drivers\etc


호스트 파일을 찾았으면 아래와 같이 추가해보자. 필요에 따라 더 추가해도 된다.

# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host

127.0.0.1 localhost

# Naver AD
115.94.198.5 nv1.ad.naver.com
내용을 대충 설명하면 해당 도메인으로(nv1.ad.naver.com) 접속을 시도 하면 115.94.198.5 IP 로 인식 하는 것이다.
(IP를 115.94.198.5  대신 127.0.0.1 을 쓰면 해당 도메인으로 접속을 시도 하면 127.0.0.1 즉 내 컴퓨터로 loopback이 되서 도메인 접속이 차단되는 것이다.


호스트 파일 저장후 아래와 같이 광고가 표시 되지 않음을 확인할 수 있다.
사용자 삽입 이미지



지금부터 광고 부분을 수정해보자 . 필자는 115.94.198.5 개인 리눅스 서버를 가지고 있다.

통상 도메인을 호출하면 VHOST 에서 익식하여 /HOME/사용자 형식으로 인식하지만 IP 주소를 호출 하면

/usr/local/apache/htdocs 아래 폴더를 호출한다 htdocs  폴더를 보면 .htaccess 파일이 있다 없을경우 vi .htaccess

로 파을을 생성한다 . 파일 내용에 이렇게 넣어보자 .

Options +FollowSymLinks
RewriteEngine on
ErrorDocument 404 /youngsam.php

내용을 대충 설명하면 404 오류(not found) 파일이 없을경우 /usr/local/apache/htdocs 폴더에 /youngsam.php

파일을 실행 시키는 것이다 .

사용자 삽입 이미지

위 광고 부분 소스를 보면
<iframe id="f595100" name="f595100" src="http://nv1.ad.naver.com/adshow?unit=002AG"
 title="광고" width="595" ..생략

형식으로  http://nv1.ad.naver.com/adshow?unit=002AG 광고 도메인을 불러온다 이럴경우

http://115.94.198.5/adshow?unit=002AG 도메인으로 인식하게된다.
2012/07/17 10:57 2012/07/17 10:57
HTML Head의 meta 태그 바로 아래에 브라우저에서 request하게 되는 외부 도메인에 대해서 다음과 같이 미리 DNS Handshake 해 놓으면 페이지 퍼포먼스가 향상됩니다.

<link rel="dns-prefetch" href="//example.com">
<link rel="dns-prefetch" href="//ajax.googleapis.com">
...
쓰는 만큼 적어 두세요. 물론 너무 많은 외부 도메인을 쓰시는 것은 퍼포먼스를 나쁘게 하겠죠.
이렇게 정의해 놓으면 실제 요청이 들어갈때 DNS 시간이 확 줍니다. 파폭이나 크럼에서 테스트 해 보시길.    
2012/05/05 09:21 2012/05/05 09:21
<div id="google_translate_element"></div>
<script>
function googleTranslateElementInit() {
new google.translate.TranslateElement({
pageLanguage: 'en'
}, 'google_translate_element');
}
</script>
<script src="http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>

붙여주시면 구글툴바없이도 구글 번역기를 이용하실수 있습니다.
2012/05/05 09:18 2012/05/05 09:18
오랬동안 http스트리밍 하는 방법을 찾아 다녔습니다.
그래서 찾은게 JWPLAYER를 찾게 되었습니다.
(jwplayer5부터는 html5를 지원해서 모바일에서 지원되었습니다.)
http://www.longtailvideo.com/players/


하지만 문제 생겼습니다.
JWPLAYER에서 스트리밍을 하지않고 전부 다운로드 한 후에 재생하는것이었습니다.
그래서 api페이지 보니깐 http 스트리밍 모듈이 서버에 깔아야 한다더군요
http://www.longtailvideo.com/support/jw-player/jw-player-for-flash-v5/12534/video-delivery-http-pseudo-streaming

저는 아파치2를 쓰기 때문에 아파치2용 모듈을 설치 하였습니다.
http://h264.code-shop.com/trac/wiki/Mod-H264-Streaming-Apache-Version2

아파치 뿐만 아니라 다른 웹서버도 되더군요
Apache, Lighttpd, Nginx, IIS, AOLserver

깔고 다시 확인 해보니 스트리밍 되는것을 확인 되었습니다.

모듈을 깔고 나니
start,end 파라미터를 붙여서 원하는 부분만 재생할수 있다는것을 확인했습니다.
ex> video.mp4?start=10&end=30

아래는 참고로 작성된 소스를 넣었습니다.

jwplayer 작성 소스
<video id="video" src="movie.mp4"></video>


공통 js
jwplayer("video").setup({
flashplayer: "/jwplayer/player.swf",
provider : 'http',
controlbar : 'over'
});    
2012/05/05 09:17 2012/05/05 09:17
ffmpeg를 이용하면 게시판에 동영상을 업로드 즉시 플래시영상인 flv로 인코딩 하실 수 있습니다.

윈도우서버+php에 설치하다 하도 삽질을 해서 팁을 남겨 놓습니다.

환경은 iis6 + php 였구요,

http://ffmpeg.zeranoe.com/builds/

여기서 다운을 받습니다.

32-bit Builds (Static) 에서 가장 위에것을 받으면 됩니다.

압축을 풀면 여러 파일이 나오는데 우선 ffmpeg.exe 파일이 필요합니다.

웹서버 적당한곳에 ftp로 업로드 하신후, php를 통해 프로그램을 작성합니다.

shell_exec("E:/wwwhome/test/ffmpeg.exe -v 0 -i E:/wwwhome/test/test3.mp4 -ar 11025 E:/wwwhome/test/test3.flv 2>&1");

위처럼 실행하면 test3.flv 가 튀어나와야 하는데 그전에 서버 셋팅을 해야됩니다.

c:\windows\system32\cmd.exe 의 파일보안에 인터넷 게스트 계정 (컴퓨터이름\IUSER_컴퓨터이름) 을 추가해주시고,

c:\widnwos\php.ini 의 safe_mode = off 해줍니다.

그래도 인코딩이 안된다면, 실행파일의 경로
E:/wwwhome/test/ 의 폴더의 보안에 USERS 를 넣어야 파일을 읽고, Authenticated Users 를 추가해줘야 flv 파일이 저장됩니다. 이 두가지가 빠져있는지 확인해보세요.

안되는건 대부분 보안관련 문제더라구요.

모든게 완료된다면 윈도우서버에 유튜브를 차리실수 있습니다.    
2012/05/05 09:15 2012/05/05 09:15
include_once "xmlrpc.inc";

function newPost($title, $description, $category) {
$g_blog_url = "https://api.blog.naver.com/xmlrpc";
$user_id = "네이버 아이디";
$blogid = "블로그 아이디 = 네이버 아이디와 동일";
$password = "글쓰기 API 암호";
$publish = true;
$client = new xmlrpc_client($g_blog_url);

$client->setSSLVerifyPeer(false);
$GLOBALS['xmlrpc_internalencoding']='UTF-8';

$struct = array(
'title' => new xmlrpcval($title, "string"),
'description' => new xmlrpcval($description, "string"),
'categories' => new xmlrpcval($category, "string")
);

$f = new xmlrpcmsg("metaWeblog.newPost",
array(
new xmlrpcval($blogid, "string"),
new xmlrpcval($user_id, "string"),
new xmlrpcval($password, "string"),
new xmlrpcval($struct , "struct"),
new xmlrpcval($publish, "boolean")
)
);

$f->request_charset_encoding = 'UTF-8';

return $response = $client->send($f);
}

$return = newPost("블로그 제목", "블로그 내용", "블로그 카테고리명");

print_r($return);
?>

xmlrpc.inc 다운로드
http://sourceforge.net/projects/phpxmlrpc/files/phpxmlrpc/2.2.2/

네이버 글쓰기 API를 활성화 시키시고 작업하시면 됩니다.

많은 내용들이 구글에 올라와 있습니다만 내용이 너무 복잡하더군요

그래서 필요한 부분만 올려봅니다.

수정 및 삭제는 따로 찾아보시면 될듯합니다.

http://dev.naver.com/projects/naverblogerapi/issue/6856


자세한 내용은 위의 문서를 참고하시면 될듯합니다.

2012/01/31 11:03 2012/01/31 11:03

http://www.webpagetest.org/


현재 운영하고 계신 사이트가 얼마나 빠른지 한번 보시겠어요? 6대주의 도시를 찍고 돌려볼 브라우저를 선택한 다음 테스트 가능합니다.

예제) 네이버를 독일 프랑크푸르트에서 IE8로 접속할때의 graph,
http://www.webpagetest.org/result/120207_23_34YZS/
2012/01/28 01:11 2012/01/28 01:11
http://www.shareaholic.com/
지원되는 SNS 종류가 엄청납니다.
twitter, facebook 은 당연 기본이고,
wordpress 로 퍼가는 것도 되네요.

api 는 소스코드가 아니니까 그냥 쓰면 되는거고,

공유버튼에 쓰라고 만든 아이콘셋은 Creative Commons Attribution-Share Alike 3.0 Unported License 입니다.
http://www.shareaholic.com/openshareicon

공짜인 것 같아요.

구글툴바의 공유버튼이 이걸로 되어 있어서 알았네요.                                       
2012/01/16 17:47 2012/01/16 17:47
http://www.google.com/webfonts
https://developers.google.com/webfonts/

영어뿐인게 아쉽네요.

License: Google APIs Terms of Service https://developers.google.com/terms/

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

한글웹폰트 그냥 여기가셈 (나눔시리즈 등 무료웹폰트 서비스)

http://api.mobilis.co.kr/webfonts/

서버는 한국서버가 甲
2012/01/16 17:47 2012/01/16 17:47

직접 사용은 안해봤지만 추후에 사용할 것 같아서 대충 알아본 내용들을 토대로 올려봅니다.

하이브리드 앱 개발툴 : 웹 소스를 통해서 어떠한 플랫폼에 상관없이 연동되는 UI를 가지며 각 플랫폼 별로 지원이 필요한 기능(GPS,카메라, 등)은 각 플랫폼 내부의 API를 이용하여 개발을 도와주는 툴.

심비안, 블랙베리, 윈도우, 리눅스, 안드로이드, 아이폰, 바다 등등의 각종 플랫폼에서 구동되는 프로그램을 개발할려면 각 플랫폼별 언어 이해와 여러가지 UI 시도 등을 해야되는데 하이브리드 앱 개발툴을 이용하면 그것이 필요없다고 합니다. (위에서 말한 내용과 같은 내용이지만 조금 더 강조를 하기 위해서 추가하였습니다.)

앱셀레이터 티타늄 : http://www.appcelerator.com/

앱셀레이터 티타늄 스튜디오(개발툴) : http://titanium-studio.s3.amazonaws.com/latest/Titanium%20Studio.exe

2012/01/14 00:19 2012/01/14 00:19
netstat -n|grep -F :80|egrep '(ESTAB|SYN)'|awk '{print $5}'|sed 's/:[0-9]*//'|sort -u|wc -l

쉘상태에서 위와 같이 치시면 됩니다.

=2차 수정=
생각해보니
netstat -n|grep -F :80|egrep '(ESTAB|SYN)'|awk '{print $5}'|sed 's/:[0-9]*//'|sort -u|wc -l

보다는(레드햇 8.0 <- 이외에는 테스트 안해봄~)
netstat -np|grep -F httpd|awk '{print $5}'|sed 's/:[0-9]*//'|sort -u|wc -l
으로 좀더 정확한 수치를 뽑아낼 수 있습니다.

이제야 "웹서버와 통신하고있는 클라이언트 수 알아내기"가 완벽히 완성되었습니다.
=2차 수정 끝=
=수정 시작=
제가 생각을 해보니 명령어의 설명이 하나도 안들어갔군요.
netstat 은 네트워크의 상황을 나타내주는 유틸리티입니다.
옵션 -n은 재분석을 하지 않는옵션으로 빠른 결과출력 속도를 가져오죠.

grep는 정규표현식시 일치하는 줄만을 출력하는 쉘입니다.
-F옵션은 정규표현식을 사용하지 않겠다는 옵션이고.. ":80"은 netstat에서 ":80"을 포함한 줄만을 출력한다는 것이죠.. 즉. http프로토콜만을 출력하겠다는 것입니다.

egrep는 grep -E 와 같은 것으로 좀더 많은 정규표현식을 사용할 수 있습니다. 옵션은 '(ESTAB|SYN)' 으로 주었는데 이는 정규표현식으죠.. 정규표현식을 알고싶으시면 아래의 URL으로..
http://kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/x10468.html 을 참조하세요.

awk 는 각 줄에서 공백을 기준으로 필드로 나누며 '{print $5}'는 5번째 필드만을 출력하겠다는 것입니다.

sed 는 비대화형 줄단위 편집기입니다. 정규표현식을 사용하며 's/:[0-9]*//'옵션을 분리하면 s/// 안에 :[0-9]가 들어가있는 것으로 "s/이것//" 는 각 줄에서 "이것"이라는 글자만 지운다는 것으로 정규표현식 :[0-9] 을 나눠보면 ":" 으로 시작하는 모든 숫자를 나타냅니다.
([0-9]는 모든 숫자를 가리킴)

sort는 참 유용한 쉘입니다. 말 그대로 정렬한다는 것인데
printf "1\n5\n3\n"|sort 라고 쉘에서 처보면 순서대로 1,3,5로 출력되는것을 확인할 수 있습니다.
여기서. 옵션 -u는 출력 내용이 같은 것은 한번만 출력하는것입니다.

wc 이것 또한 참 유용한 쉘이죠 ~ 단어의 수를 알아내는 것으로 한줄에 한해서만 단어의 수를 샙니다. 이를 이용해서 몇줄이 나왔는지를 알수있는데 -ㅣ 옵션을 주면 몇줄이 출력되었는지만을 나타냅니다.

전체적으로 분석을 하면
netstat -n|grep -F :80|egrep '(ESTAB|SYN)'|awk '{print $5}'|sed 's/:[0-9]*//'|sort -u|wc -l
명령은 netstat유틸을 이용해서 네트워크의 상황을 출력하고 이 중에 grep 를 이용해 :80 문자만을 나타내고있는 줄만 출력하며 egrep를 이용해 ESTAB이나 SYN이있는 줄만 출력하며 awk를 이용해 접속하고있는 클라이언트만을 표시하며 sed를 이용해 클라이언트의 포트를 제거하고 sort를 이용해서 중복된 IP를 제거하고 마지막으로 숫자만을 출력하기위해 wc를 이용한것입니다
2012/01/10 19:38 2012/01/10 19:38

사용하려는 웹 기술이 브라우저에서 지원을 하는지 체크하고 싶으신가요?

Modernizr를 사용해보세요. 코드부터 보시겠습니다.

<!doctype html>

<html lang="ko">

<head>

<meta charset="UTF-8">

<title>Canvas</title>

<script src="modernizr/modernizr-2.0.6.js"></script>

<script>

window.addEventListener("load", eventWindowLoaded, false);

function eventWindowLoaded() {

alert(Modernizr.canvas);

}

</script>

</head>

<body>

</body>

</html>

modernizr 라이브러리 포함 후 Modernizr.canvas를 호출하면 canvas 지원여부가 true로

표현됩니다.

공식사이트의 문서 중 http://www.modernizr.com/docs/#s2 이 문서를 읽으시면

다른 기능들의 지원여부를 확인할 때 어떤 것을 체크하면 되는지 찾으실 수 있습니다.

다른 예)

Modernizr.fontface

Modernizr.cssanimations

Modernizr.audio

Modernizr.indexeddb

Modernizr.websockets

Modernizr.svg

2012/01/02 13:25 2012/01/02 13:25
요즘 웹앱 종종 작업하게 되는데요.
즉, 앱 안에 웹뷰로 모바일 웹을 띄우는 작업을 진행시 간혹 스크롤 때문에 웹표준과 충돌나서 흰여백이 생기는 경우가 있습니다.
한동안 스타일 문제로 알고 자료 계속 찾다가 알고 보니 웹뷰에서 스크롤만 false 처리하면 끝이더군요.
그렇다고 스크롤이 기능이 안되는건 아니구요 스크롤만 숨겨서 웹에서 폭이 모두 나오게끔 하는 겁니다.
Hide the scrollbar in Android
In Eclipse open DroidGap.java. Find the function public void onCreate(Bundle savedInstanceState). Look for the line that created the Android WebView:
appView = (WebView) findViewById(R.id.appView);
Beneath that, add these two lines:
appView.setVerticalScrollBarEnabled(false);
appView.setHorizontalScrollBarEnabled(false);
The scroll bars will no longer appear.
Since Phonegap v0.9.2 there is no need to change core DroidGap.java files.
Just change you main activity class ( the one that extends DroidGap):
public class MyApp extends DroidGap {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.init();
// Disable scrollbars
super.appView.setVerticalScrollBarEnabled(false);
super.appView.setHorizontalScrollBarEnabled(false);
super.loadUrl("file:///android_asset/www/index.html");
}
}
2012/01/02 02:14 2012/01/02 02:14
웹호스팅 이용시 php.ini 설정을 제어하기가 어럽다.

예를들어 register_globals = OFF 값을 ON 으로 또는 OFF 로 설정하고 싶을 경우 호스팅 업체에 요청하면 들어주지 않는데, 이유는 설정을 변경시 모든 호스팅 이용자들에게 적용되어 버리기 때문에 얘기치 않은 장애가 발생하게 된다.

하지만, 홈페이지 root 경로에 보면 .htaccess 파일이 있을것이다.
없으면 추가해주면 된다.
수정은 그냥 메모장으로 하면된다.

파일에 다음과 같이 추가하면된다.

php_flag register_globals on

mysql utf8로 접근하고 싶을땐
PHP_VALUE mysql.default_charset UTF8

라고 추가해 주면 된다.
2012/01/02 02:12 2012/01/02 02:12
frameset 적용시 100% 되지 않는 문제는 meta 태그 한줄로 해결 됩니다.

<meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, width=device-width" />
<frameset rows="*,49" frameborder="no" border="0" framespacing="0" style="border:0; width:320px;">
<frame src="/m/store/main.php" name="mainFrame" id="mainFrame" title="mainFrame" />
<frame src="/m/store/menu.php" name="bottomFrame" scrolling="No" noresize="noresize" id="bottomFrame" title="bottomFrame" />
</frameset>

<meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, width=device-width" />

이부분을 추가 해주시면 됩니다.
2012/01/02 02:09 2012/01/02 02:09
개요

eGovFrame에서는 한국정보화진흥원(NIA)에서 제공하는 웹표준 진단 프로그램을 사용 할 수 있는 방법을 제공한다.

설명
웹표준 진단 프로그램은 웹사이트의 웹표준(HTML, CSS)준수 여부를 진단하고 웹표준 문법 오류를 유형별로 구분하여 웹개발자 및 콘텐츠 제작사가 웹사이트를 지속적으로 관리하고 개선 할 수 있도록 도와주는 프로그램이다.
웹표준 진단 프로그램의 상세한 기능 및 사용 방법 및 설치 방법 및 이슈사항은 한국정보화진흥원(http://www.nia.or.kr) 홈페이지 또는 한국정보화진흥원에서 제공하는 웹표준 진단 프로그램 가이드를 참고한다.



2011/12/10 08:59 2011/12/10 08:59
한국형 웹 콘텐츠 접근성 지침 2.0(KICS.OT-10.0003/R1, 2010년 12월 31일 제정)을 기준으로 작성한 웹 접근성을 고려한 콘텐츠 제작 기법 2.0 입니다.


[목 차]

Ⅰ. 웹 접근성의 이해 | 11

Ⅱ. 웹 접근성을 고려한 콘텐츠 제작기법 | 29
원칙 1. 인식의 용이성(Perceivable): 모든 콘텐츠는 사용자가 인식할 수 있어야 한다. | 29
검사항목 1.1.1 (적절한 대체 텍스트 제공) 텍스트 아닌 콘텐츠는 그 의미나 용도를 이해할 수 있도록 대체 텍스트를 제공해야 한다. | 31
검사항목 1.2.1 (자막 제공) 멀티미디어 콘텐츠에는 자막, 원고 또는 수화를 제공해야 한다. | 55
검사항목 1.3.1 (색에 무관한 콘텐츠 인식) 콘텐츠는 색에 관계없이 인식될 수 있어야 한다. | 62
검사항목 1.3.2 (명확한 지시사항 제공) 지시사항은 모양, 크기, 위치, 방향, 색, 소리 등에 관계없이 인식될 수 있어야 한다. | 70
검사항목 1.3.3 (텍스트 콘텐츠의 명도 대비) 텍스트 콘텐츠와 배경 간의 명도 대비는 4.5대 1 이상이어야 한다. | 77
검사항목 1.3.4 (배경음 사용 금지) 자동으로 재생되는 배경음을 사용하지 않아야 한다. | 83
원칙 2. 운용의 용이성(Operable): 사용자 인터페이스 구성요소는 조작 가능하고 내비게이션 할 수 있어야 한다. | 93
검사항목 2.1.1 (키보드 사용 보장) 모든 기능은 키보드만으로도 사용할 수 있어야 한다. | 106
검사항목 2.1.2 (초점 이동) 키보드에 의한 초점은 논리적으로 이동해야 하며 시각적으로 구별할 수 있어야 한다. | 115
검사항목 2.2.1 (응답시간 조절) 시간제한이 있는 콘텐츠는 응답시간을 조절할 수 있어야 한다. | 115
검사항목 2.2.2 (정지 기능 제공) 자동으로 변경되는 콘텐츠는 움직임을 제어할 수 있어야 한다. | 119
검사항목 2.3.1 (깜빡임과 번쩍임 사용 제한) 초당 3~50회 주기로 깜빡이거나 번쩍이는 콘텐츠를 제공하지 않아야 한다. | 123
검사항목 2.4.1 (반복 영역 건너뛰기) 콘텐츠의 반복되는 영역은 건너뛸 수 있어야 한다. | 128
검사항목 2.4.2 (제목 제공) 페이지, 프레임, 콘텐츠 블록에는 적절한 제목을 제공해야 한다. | 133
검사항목 2.4.3 (적절한 링크 텍스트) 링크 텍스트는 용도나 목적을 이해할 수 있도록 제공해야 한다. | 137
원칙 3. 이해의 용이성(Understandable): 콘텐츠는 이해할 수 있어야 한다. | 140
검사항목 3.1.1 (기본 언어 표시) 주로 사용하는 언어를 명시해야 한다. | 142
검사항목 3.2.1 (사용자 요구에 따른 실행) 사용자가 의도하지 않은 기능(새 창, 초점 변화 등)은 실행되지 않아야 한다. | 145
검사항목 3.3.1 (콘텐츠의 선형화) 콘텐츠는 논리적인 순서로 제공해야 한다. | 154
검사항목 3.3.2 (표의 구성) 표는 이해하기 쉽게 구성해야 한다. | 165
검사항목 3.4.1 (레이블 제공) 입력 서식에는 대응하는 레이블을 제공해야 한다. | 174
검사항목 3.4.2 (오류 정정) 입력 오류를 정정할 수 있는 방법을 제공해야 한다. | 183
원칙 4. 견고성(Robust): 웹 콘텐츠는 미래의 기술로도 접근할 수 있도록 견고하게 만들어야 한다. | 201
검사항목 4.1.1 (마크업 오류 방지) 마크업 언어의 요소는 열고 닫음, 중첩 관계 및 속성 선언에 오류가 없어야 한다. | 202
검사항목 4.2.1 (웹 애플리케이션 접근성 준수) 콘텐츠에 포함된 웹 애플리케이션은 접근성이 있어야 한다. | 209


[적용 기술 목차]

적용 기술 1) 이미지 등에 대한 대체 텍스트 제공 | 31
적용 기술 2) 버튼 이미지에 대한 대체 텍스트 제공 | 32
적용 기술 3) Java 애플릿 등에 대한 대체 텍스트 제공 | 32
적용 기술 4) 이미지 맵에 대한 대체 텍스트 제공 | 35
적용 기술 5) 텍스트 이미지, 그래픽 문자 등에 대한 대체 텍스트 제공 | 35
적용 기술 6) 플래시 콘텐츠의 대체 텍스트 제공 | 37
적용 기술 7) 실버라이트 콘텐츠의 대체 텍스트 제공 | 38
적용 기술 8) 그래프 등에 대한 설명문 제공 | 39
적용 기술 9) 생방송 콘텐츠에 대한 대체 텍스트 제공 | 40
적용 기술 10) CAPTCHA에 대한 대체 텍스트 제공 | 41
적용 기술 11) 온라인 시험 등에 대한 대체 텍스트 제공 | 42
적용 기술 12) 대체 텍스트를 빈 공간(alt="")이나 생략해서 제공해야 하는 경우 · 42
적용 기술 13) 열린 자막 제공 | 55
적용 기술 14) 닫힌 자막 제공 | 56
적용 기술 15) 대본 또는 원고 제공 | 56
적용 기술 16) 수화 제공 | 57
적용 기술 17) 음성이 없는 동영상의 대체 수단 제공 | 57
적용 기술 18) 색을 보완하는 텍스트 제공 | 62
적용 기술 19) 색을 보완하기 위하여 글자모양을 이용하는 방법 | 63
적용 기술 20) 색을 보완하기 위하여 무늬 또는 모양을 이용하는 방법 | 64
적용 기술 21) 시각 정보를 이용한 지시문의 보완 | 70
적용 기술 22) 청각 정보를 이용한 지시문의 보완 | 71
적용 기술 23) 배경과 텍스트 콘텐츠의 색 지정 방법 | 77
적용 기술 24) 배경과 텍스트 콘텐츠 색을 기본 값으로 지정하는 방법 | 78
적용 기술 25) 배경과 텍스트 콘텐츠 색을 변경하는 컨트롤의 제공 | 78
적용 기술 26) 재생 시간이 3초 미만인 배경음의 사용 | 83
적용 기술 27) 배경음을 정지 상태로 제공하는 방법 | 84
적용 기술 28) 플래시 콘텐츠의 배경음 자동 실행 방지 | 84
적용 기술 29) 실버라이트 콘텐츠의 배경음 자동 실행 방지 | 89
적용 기술 30) 키보드와 마우스 이벤트 핸들러 제공 | 95
적용 기술 31) 마우스 드래그와 드롭 기능에서의 키보드 이용 보장 | 97
적용 기술 32) 웹 애플리케이션 제공 시 키보드 이용 보장 | 98
적용 기술 33) 실버라이트 플러그인의 키보드 접근 제공 | 101
적용 기술 34) 콘텐츠 화면 순서와 동일한 키보드 내비게이션 순서 제공 | 106
적용 기술 35) 시각적으로 표시 가능한 초점 표시 방법 | 107
적용 기술 36) 플래시에서 키보드 내비게이션 순서 제공 방법 | 110
적용 기술 37) 실버라이트에서 키보드 내비게이션 순서 제공 방법 | 111
적용 기술 38) 제한 시간 연장 방법 제공 | 115
적용 기술 39) 메타 태그를 이용한 페이지 재 이동 방법 제공 | 116
적용 기술 40) 변화하는 콘텐츠를 일시정지 시키고, 일시정지 된 곳으로부터 다시 시작할 수 있도록 제공 | 119
적용 기술 41) 전체 배너를 보여줄 수 있는 방법 제공 | 120
적용 기술 42) 전체 배너의 리스트 제공 | 120
적용 기술 43) 사용자 요구에 의한 업데이트 방법 제공 | 120
적용 기술 44) 깜빡이는 시간이 3초 이내인 콘텐츠만 제공 | 124
적용 기술 45) 경고 페이지 제공 | 125
적용 기술 46) 반복적인 콘텐츠 영역의 시작 부분에 건너뛰기 링크 제공 | 128
적용 기술 47) 건너뛰기 링크의 화면 표시 | 129
적용 기술 48) 웹 페이지의 제목 제공 | 133
적용 기술 49) 콘텐츠 블록의 제목 제공 | 134
적용 기술 50) 프레임 제목 제공 | 134
적용 기술 51) 링크의 목적을 설명하는 링크 텍스트 제공 | 137
적용 기술 52) <html> 태그에 주 사용 언어 지정 | 142
적용 기술 53) 초점 변화에 의해 맥락을 변화시키지 말고, 해당 인터페이스가 활성화(activate)되었을 때 기능을 실행 | 145
적용 기술 54) 명확한 서식 제출(submit) 버튼 제공 | 146
적용 기술 55) 새 창 열림을 사전에 알림 | 146
적용 기술 56) 콘텐츠를 의미 있는 순서로 배열 | 154
적용 기술 57) 스타일을 이용한 글자 간격 조절 | 157
적용 기술 58) 동적으로 생성된 요소는 그것을 유발시킨 요소 바로 뒤에 위치 | 158
적용 기술 59) 표 제목을 <caption>으로 제공 | 165
적용 기술 60) 표의 구조 또는 내용에 대한 요약을 summary로 제공 | 166
적용 기술 61) 표의 헤더 셀과 데이터 셀의 관계 정의 | 167
적용 기술 62) 입력 서식과 <label>의 명시적 관계 제공 | 174
적용 기술 63) <label>을 제공할 수 없는 입력 서식에 title 제공 | 176
적용 기술 64) 여러 개의 유사한 입력 서식 묶기 | 178
적용 기술 65) 입력 값 또는 형식에 대한 예시 제공 | 183
적용 기술 66) 서버측 오류 검사 | 184
적용 기술 67) 클라이언트측 적합성 검사와 본문에 오류 메시지 표시 | 185
적용 기술 68) 오류 메시지를 스크립트 경고창으로 제공 | 194
적용 기술 69) 중요한 서식 제출 시 재확인 절차 제공 | 197
적용 기술 70) 여는 태그와 닫는 태그의 정확한 사용 | 202
적용 기술 71) 속성 이름과 속성 값의 정확한 사용 | 203
적용 기술 72) 태그의 정확한 중첩관계 | 204
적용 기술 73) 표준에 부합하는 태그와 속성 이름, 값 사용 | 205
적용 기술 74) 플러그인 플랫폼이 제공하는 접근성 API 활용 | 209
적용 기술 75) 웹 애플리케이션의 대체 콘텐츠 제공 | 210
적용 기술 76) 용도, 목적지, 종류, 사용법에 맞는 사용자 인터페이스 요소 사용 · 212


[잘못된 사례 목차]

잘못된 사례 1) 의미나 기능이 있는 텍스트 아닌 콘텐츠에 빈 문자열을 대체 텍스트로 제공 | 45
잘못된 사례 2) 복잡한 정보를 하나의 이미지로 표현하고 간단한 대체 텍스트로만 제공 | 47
잘못된 사례 3) 주기적으로 변하는 콘텐츠의 대체 텍스트를 변경하지 않는 경우 | 48
잘못된 사례 4) 의미 있는 정보를 배경 이미지로 제공 | 48
잘못된 사례 5) 빈칸 이미지의 대체 텍스트가 콘텐츠의 인식을 방해하는 경우 | 50
잘못된 사례 6) 도와 같은 텍스트 아닌 콘텐츠에 대한 설명이 불충분한 경우 | 51
잘못된 사례 7) 중요한 정보를 색으로만 제공하는 경우 | 51
잘못된 사례 8) alt 속성이 아닌 title 속성을 이용하여 대체 텍스트 제공 | 52
잘못된 사례 9) QR 코드에서 URL을 대체 텍스트로 알려주지 않는 경우 | 53
잘못된 사례 10) 자막, 원고, 수화 중 어느 한 가지도 제공하지 않는 경우 | 58
잘못된 사례 11) 동영상의 내용을 요약하여 제공하는 자막 또는 원고의 경우 | 59
잘못된 사례 12) 대체 수단에 대한 또 다른 대체 수단임을 알려주지 않는 경우 | 60
잘못된 사례 13) 열린 자막이 수화를 가리는 동영상 | 61
잘못된 사례 14) 동영상의 해상도가 낮아 수화를 볼 수 없는 경우 | 61
잘못된 사례 15) CSS로 인하여 링크임이 구분되지 않는 경우 | 65
잘못된 사례 16) 색으로만 필수 입력 항목을 표시한 경우 | 66
잘못된 사례 17) 오류 메시지를 색으로만 구분하도록 한 경우 | 67
잘못된 사례 18) 그래프를 색으로만 인식하도록 하는 경우 | 68
잘못된 사례 19) 일정 구분을 색으로만 구분하도록 한 경우 | 69
잘못된 사례 20) 방향, 위치 정보만을 이용하여 사용법을 알려주도록 구현한 경우 | 72
잘못된 사례 21) 화면 위치만을 이용하여 객체를 지정한 경우 | 74
잘못된 사례 22) 버튼 모양만을 이용하여 사용법을 알려준 경우 | 74
잘못된 사례 23) 특수 기호만을 이용하여 사용법을 알려준 경우 | 76
잘못된 사례 24) 전경색은 기본 값으로 두고 배경색만을 지정한 경우 | 79
잘못된 사례 25) 배경색은 기본 값으로 두고 전경색만을 지정하는 경우 | 80
잘못된 사례 26) 배경음이 3초 이상 지속되도록 구현한 경우 | 91
잘못된 사례 27) 마우스 오버 또는 키보드 초점을 받으면 자동적으로 배경음이 실행되는 경우 | 92
잘못된 사례 28) 마우스로만 접근 가능한 이미지 버튼을 제공하는 경우 | 101
잘못된 사례 29) 키보드로 접근할 수 없는 플래시 메뉴 | 102
잘못된 사례 30) 마우스로만 접근할 수 있는 링크를 제공한 경우 | 103
잘못된 사례 31) 키보드만으로 이전 입력 서식 이동이 불가능한 경우 | 105
잘못된 사례 32) 초점을 일부러 보이지 않도록 한 경우 | 112
잘못된 사례 33) 키보드 이동순서가 비논리적인 경우 | 113
잘못된 사례 34) 페이지 재 이동 시 회피 수단을 제공하지 않는 경우 | 116
잘못된 사례 35) 마우스로만 정지할 수 있는 콘텐츠를 제공한 경우 | 121
잘못된 사례 36) 자동으로 변하는 배너 | 122
잘못된 사례 37) 깜빡이는 콘텐츠가 많은 경우 | 125
잘못된 사례 38) 발작 가능성이 있는 동영상을 제공한 경우 | 126
잘못된 사례 39) 번쩍임이 지속되는 영상을 제공한 경우 | 127
잘못된 사례 40) 건너뛰기 링크를 제공하지 않은 경우 | 130
잘못된 사례 41) 건너뛰기 링크를 과도하게 제공한 경우 | 131
잘못된 사례 42) 콘텐츠가 다른 페이지에 동일한 제목을 제공한 경우 | 135
잘못된 사례 43) 프레임 제목이 누락된 경우 | 135
잘못된 사례 44) 특수문자(▩▩▩▩)기호를 제공한 경우 | 136
잘못된 사례 45) 목적이나 용도를 알기 어려운 링크 텍스트 | 138
잘못된 사례 46) 목록 선택 상자에서 초점 변경만으로 새 창이 열리는 경우 | 148
잘못된 사례 47) 체크 상자의 선택만으로 페이지가 다시 로드되는 경우 | 150
잘못된 사례 48) 텍스트 입력 서식에 값을 넣으면 자동으로 제출되는 경우 | 151
잘못된 사례 49) 페이지가 로드될 때 자동으로 팝업 창이 열리도록 한 경우 | 152
잘못된 사례 50) 상위 메뉴와 하위 메뉴의 읽는 순서가 잘못된 경우 | 160
잘못된 사례 51) 배치용 표를 잘못 사용한 경우 | 162
잘못된 사례 52) 표를 이미지로 표현하고, 표 제목을 제공하지 않은 경우 | 170
잘못된 사례 53) 이메일 입력 서식의 레이블을 잘못 제공한 경우 | 180
잘못된 사례 54) 오류 정보를 확인한 후 오류 발생 페이지로 돌아가지 못하는 경우 · 199
잘못된 사례 55) 아이디를 중복 선언한 경우 | 206
잘못된 사례 56) 태그의 중첩관계에 오류가 있는 경우 | 207
잘못된 사례 57) 이미지 링크를 자바스크립트로 잘못 구현한 경우 | 214
잘못된 사례 58) 잘못된 이미지 버튼 구현 사례 | 214


출처 : 한국정보화진흥원 | 원문자료

2011/12/10 08:50 2011/12/10 08:50
Windows 2000 커맨드 명령어의 모든것

Windows 2000의 커멘드 명령어는 MS-DOS의 대부분의 기능을 유지시키거나 발전시켰다.
아래의 표의 내용은 MS-DOS에 없는 새로운 Windows 2000 명령, MS-DOS에서 변경된 명령, 사용할 수 없는 MS-DOS 명령들을 나타낸다.

Windows 2000의 새로운 명령

이 표는 MS-DOS에 없는 Windows 2000만의 시스템 명령을 나타낸다.

명령 기능
at 지정된 시간과 날짜에 컴퓨터에서 명령과 프로그램을 실행하도록 예약한다.
cacls 파일의 액세스 컨트롤 목록(ACL)을 표시하거나 수정한다.
convert 파일 시스템을 FAT나 FAT32에서 NTFS로 변환한다.
dosonly Command.com 프롬프트에서 MS-DOS 기반이 아닌 응용 프로그램을 시작할 수 없게 한다.
echoconfig MS-DOS 하위 시스템 Config.nt 파일을 읽을 때 메시지를 표시한다.
endlocal 환경 변수의 지역화를 끝낸다.
findstr 정규식을 사용하여 파일에서 텍스트를 검색한다.
ntcmdprompt TSR을 실행한 후나 MS-DOS 응용 프로그램 내에서 명령 프롬프트를 시작한 후에 Command.com 대신 Windows 2000 명령 인터프리터인 Cmd.exe를 실행한다.
popd 가장 최근의 pushd 명령으로 설정된 디렉터리로 변경한다.
pushd popd 명령에 사용할 수 있도록 현재 디렉터리를 저장한 다음 지정된 디렉터리로 변경한다.
setlocal 환경 변수의 지역화를 시작한다.
start 보조 창과 보조 창 고유의 메모리 공간에 지정된 프로그램이나 명령을 실행한다.
Title 명령 프롬프트 창의 제목을 설정한다.
&& 이 기호 뒤의 명령은 기호 앞의 명령이 성공한 경우에만 실행된다.
|| 이 기호 뒤의 명령은 기호 앞의 명령이 실패한 경우에만 실행된다.
& 명령줄의 여러 명령을 구분한다.
( ) 명령들을 그룹화한다.
^ 제어 문자. 명령 기호를 텍스트로 입력할 수 있도록 한다.
; 또는 , 매개 변수를 구분한다.

MS-DOS 명령 변경 사항

이 표는 변경되거나 성능이 향상된 MS-DOS 명령 목록이다.

명령 변경된 기능
chcp 전화면 모드 전용 코드 페이지를 변경한다.
cmd Cmd.exe는 Command.com을 대신한다.
del 새 스위치들이 더 많은 기능을 제공한다.
dir 새 스위치들이 더 많은 기능을 제공한다.
diskcomp /1/8 스위치를 지원하지 않는다.
diskcopy /1 스위치를 지원하지 않는다.
doskey 버퍼 입력을 받아들이는 모든 문자 기반 프로그램에서 사용할 수 있습니다. doskey는 여러 기능들이 향상되었습니다.
format 20.8MB 광드라이브를 지원한다. /b, /s/u 스위치를 지원하지 않는다.
label 볼륨 레이블에 ^ 및 & 기호를 사용할 수 있습니다.
mode 많은 변경 사항이 있습니다.
more 새 스위치들이 더 많은 기능을 제공한다.
path 명령 프롬프트에서 %PATH% 환경 변수는 현재 경로를 새 설정에 추가한다.
print /b, /c, /m, /p, /q, /s, /t/u 스위치를 지원하지 않는다.
prompt 앰퍼샌드($a), 괄호($c 및 $f)와 공백($s)을 프롬프트에 추가할 수 있도록 새 문자 조합을 허용한다.
recover 파일만 복구한다.
rmdir 새로운 /s 스위치는 파일과 하위 디렉터리를 포함하고 있는 디렉터리를 삭제한다.
sort TEMP 환경 변수가 필요하지 않는다. 파일 크기에 제한이 없다.
xcopy 새 스위치들이 더 많은 기능을 제공한다.

사용할 수 없는 MS-DOS 명령

명령 프롬프트에서 다음 MS-DOS 명령들은 사용할 수 없다.

명령 새로운 절차 또는 사용하지 않는 이유
assign Windows 2000에서는 지원되지 않는다.
backup 현재 지원되지 않는다.
choice 현재 지원되지 않는다.
ctty 현재 지원되지 않는다.
dblspace 지원되지 않는다.
defrag Windows 2000은 자동으로 디스크 사용을 최적화한다. 수동으로 디스크를 최적화하려면 내 컴퓨터에서 디스크를 마우스 오른쪽 단추로 눌러 등록 정보를 클릭한 다음 도구 탭에서 지금 조각 모음을 클릭한다.
deltree rmdir /s 명령으로 파일과 하위 디렉터리를 포함하고 있는 디렉터리를 삭제한다.
diskperf 현재 지원되지 않는다.
dosshell Windows 2000에서는 필요 없다.
drvspace Drvspace 프로그램은 현재 지원되지 않는다.
emm386 Windows 2000에서는 필요 없다.
fasthelp 이 MS-DOS 6.0 명령은 Windows 2000의 help 명령과 동일한다. Windows 2000은 온라인 명령 목록도 제공한다.
fdisk 디스크 관리로 Windows 2000에서 하드 디스크를 사용할 수 있도록 준비한다.
include MS-DOS 하위 시스템의 다중 구성은 지원되지 않는다.
interlnk Interlnk 프로그램은 지원되지 않는다.
intersrv Intersrv 프로그램은 지원되지 않는다.
join 증가된 파티션 크기와 향상된 파일 시스템으로 드라이브를 조인할 필요가 없다.
memmaker Windows 2000은 자동으로 MS-DOS 하위 시스템의 메모리 사용을 최적화한다.
menucolor MS-DOS 하위 시스템의 다중 구성은 지원되지 않는다.
menudefault MS-DOS 하위 시스템의 다중 구성은 지원되지 않는다.
menuitem MS-DOS 하위 시스템의 다중 구성은 지원되지 않는다.
mirror Windows 2000에서는 지원되지 않는다.
msav Msav 프로그램은 지원되지 않는다.
msbackup Windows 2000은 테이프 드라이브가 있는 컴퓨터를 위해(제어판의 관리 도구에서) 백업 유틸리티를 제공하며 테이프 드라이브가 없는 컴퓨터를 위해 xcopy 명령을 제공한다.
mscdex CD-ROM 드라이브를 사용하기 위해 MS-DOS 하위 시스템을 구성할 필요가 없다. Windows 2000은 MS-DOS 하위 시스템에 CD-ROM 드라이브 액세스를 제공한다.
msd 시스템 정보 스냅인을 사용한다. 시스템 정보를 시작하려면 시작, 실행을 클릭한 다음 msinfo32를 입력한다.
numlock 현재 지원되지 않는다.
power Power 유틸리티는 지원되지 않는다.
restore 현재 지원되지 않는다.
scandisk Scandisk 유틸리티는 지원되지 않는다.
smartdrv Windows 2000은 자동으로 MS-DOS 하위 시스템에 캐시 기능을 제공한다.
submenu MS-DOS 하위 시스템의 다중 구성은 지원되지 않는다.
sys Windows 2000은 표준 1.2MB나 1.44MB 플로피 디스크에 적당하지 않는다.
undelete Windows 2000에서는 지원되지 않는다.
unformat Windows 2000에서는 지원되지 않는다.
vsafe Vsafe 프로그램은 지원되지 않는다.
2011/11/23 18:47 2011/11/23 18:47
OLE Automation을 이용

보통 컴포넌트를 이용하는 방법, Type Library를 사용하는 Early binding, IDispatch인터폐이스를

이용하는 late binding이 있습니다.

온라인상이라 다 설명하기는 빌더 Server탭에 있는 컴포넌트에 대해서만 설명드리겠습니다.

Server탭에 WordApplication 컴포넌트를 폼에 떨어드리시고 다음과 같이 코딩하세요

void __fastcall TForm1::OpenWordClick(TObject *Sender)
{
WordApplication1->Connect(); //워드개체와 연결
WordApplication1->Visible = true; //화면에 보이게
WordApplication1->Documents->Open(&TVariant("C:\\QFD.doc")); //파일불러오기
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CloseWordClick(TObject *Sender)
{
WordApplication1->Disconnect(); //워드개체 닫기
}
//---------------------------------------------------------------------------
2011/11/23 18:46 2011/11/23 18:46

마우스로 개체 이동 및 가로 크기 변화(좌우 개체)에다가

지정된 크기까지 줄여주는 함수를 추가했다.

사용법은 아래와 같다.

e_resize('rightview','leftview','right',400)

function e_resize(leftobjid,rightobjid,direction,limit)

수정 : 가속도 추가 및 함수 간결화

가속도 추가 - 처음엔 빠르다가 나중엔 느림

함수 간결화 - 입력 값을 6개에서 4개로 줄임

입력 값 감소로 인한 오류 발생 -> clreaTimeout 추가

var move=false

var x=0,y=0

function movespan(e){

if(move && movingspanobj!=null){

if(e){

//불여우용

x=e.pageX

y=e.pageY

}

else{

//ie용

x=window.event.clientX

y=window.event.clientY

}

try{

document.selection.empty()

}

catch(e){

window.getSelection().removeAllRanges();

}

//세로 이동

movingspanobj.style.top=y-distance_y

//movingspanobj.style.top=y-20

//가로 이동

movingspanobj.style.left=x-distance_x

//movingspanobj.style.left=((x-movingspanobj.offsetWidth/2)-150)

}

}

function e_resizespan(e){

if(move && movingspanobj!=null){

if(e){

//불여우용

x=e.pageX

}

else{

//ie용

x=window.event.clientX

}

try{

document.selection.empty()

}

catch(e){

window.getSelection().removeAllRanges();

}

//가로 이동

movingspanobj.style.left=x-distance_x

//movingspanobj.style.left=((x-movingspanobj.offsetWidth/2)-150)

var templeftwidth=leftspanwidth-(first_x-x)

var temprightwidth=rightspanwidth+(first_x-x)

//너비 변화

leftspanobj.style.width=templeftwidth

rightspanobj.style.width=temprightwidth

//내부 span 크기 조절

var objs=leftspanobj.getElementsByTagName('span')

for(var i=objs.length;i--;){

objs[i].style.width=templeftwidth

}

objs=rightspanobj.getElementsByTagName('span')

for(var i=objs.length;i--;){

objs[i].style.width=temprightwidth

}

//내부 img 크기 조절

objs=leftspanobj.getElementsByTagName('img')

for(var i=objs.length;i--;){

objs[i].style.width=templeftwidth

}

objs=rightspanobj.getElementsByTagName('img')

for(var i=objs.length;i--;){

objs[i].style.width=temprightwidth

}

}

}

var distance_x,distance_y,movingspanobj,leftspanobj,rightspanobj,leftspanwidth,rightspanwidth,first_x

var e_resize_timeout

document.onmousedown=new Function('move=true')

document.onmouseup=new Function('move=false;movingspanobj=null')

function movethis(spanobj){

if(window.event){

//ie용

x=window.event.clientX

y=window.event.clientY

}

else{

//불여우용

x=e.pageX

y=e.pageY

}

movingspanobj=spanobj

distance_x=x-movingspanobj.offsetLeft

distance_y=y-movingspanobj.offsetTop

movingspanobj.onmousemove=movespan

}

function e_resizethis(spanobj,leftobjid,rightobjid){

if(window.event){

//ie용

x=window.event.clientX

}

else{

//불여우용

x=e.pageX

}

first_x=x

movingspanobj=spanobj

leftspanobj=document.getElementById(leftobjid)

rightspanobj=document.getElementById(rightobjid)

distance_x=x-movingspanobj.offsetLeft

leftspanwidth=leftspanobj.offsetWidth

rightspanwidth=rightspanobj.offsetWidth

movingspanobj.onmousemove=e_resizespan

}

function e_resize(leftobjid,rightobjid,direction,limit){

clearTimeout(e_resize_timeout)

var movesize=0

leftspanobj=document.getElementById(leftobjid)

rightspanobj=document.getElementById(rightobjid)

if((leftspanobj.offsetWidth>limit && direction=='left') || (rightspanobj.offsetWidth>limit && direction=='right')){

if(direction=='left'){

movesize=Math.ceil(Math.abs(leftspanobj.offsetWidth-limit)/20)

leftspanobj.style.width=leftspanobj.offsetWidth-movesize

rightspanobj.style.width=rightspanobj.offsetWidth+movesize

}

else{

movesize=Math.ceil(Math.abs(rightspanobj.offsetWidth-limit)/20)

leftspanobj.style.width=leftspanobj.offsetWidth+movesize

rightspanobj.style.width=rightspanobj.offsetWidth-movesize

}

e_resize_timeout=setTimeout('e_resize("'+leftobjid+'","'+rightobjid+'","'+direction+'",'+limit+')',10)

}

}

2011/11/19 11:41 2011/11/19 11:41

select

name,

count(distinct ip) visitcount

from member

group by name

위와 같은 query에서 group by와 distinct가 동시에 일어난다.

이렇게 썼을 때 32초 걸리던 query가 27초 걸리도록 줄일 수 있었다.

(DB에서 1초를 넘어 섰다는 건 이미 문제가 있는 거지만 통계 페이지라 일단 통과)

select

name,

count(*) visitcount

from (

select distinct

name,

ip

from member

) a

group by name

distinct를 먼저 한 후에 group by를 했을 때 약간 더 빨랐다.

15~6% 정도...

mssql에서 index 다 태운 상황이었다. (최소한 분석기에서 index 없다는 얘기는 없을 정도)

2011/11/19 11:39 2011/11/19 11:39

display:none;visibility:collapse

ie 기준으로 일부에서는 display:none만 되고 일부에서는 visibility:collapse만 된다.

그래서 두 개 다 쓰니 원하는 대로 된다.

colgroup이나 col tag에 쓰면 된다.

-- 수정 --

실제로 동시에 사용하게 되면 ie8에서는 안 먹는다.

ie8에서 display:none이 안 먹어서 찾은 건데...

none인데 보여주는 건 뭐냐고.

visibility 단독으로 사용하면 된다.

그래서 이렇게 했다.

.hidecol1{display:none}

.hidecol2{visibility:collapse}

function showgroup(id){

if(document.all && (navigator.appVersion.indexOf("MSIE 6.0")>=0 || navigator.appVersion.indexOf("MSIE 7.0")>=0)){

$('colgroup[id!=basic]').addClass('hidecol1')

$('#'+id).removeClass('hidecol1')

}

else{

$('colgroup[id!=basic]').addClass('hidecol2')

$('#'+id).removeClass('hidecol2')

}

}

-- 수정 2 --

위 수정 방식으로 하면 작동은 하는데 7 이하에서 잔상이 남는 현상이 생긴다.

왜 생기는지도 모르겠고 어떻게 없애야 하는지도 모르겠어서

전체 td에 class를 지정해고 class로 선택해서 숨기도록 했다.

위 방법과 비교해도 속도가 상당히 느리다.

var currentclass='player'

function showgroup(targetclass){

$('.'+currentclass).hide()

$('.'+targetclass).show()

currentclass=targetclass

}

2011/11/19 11:38 2011/11/19 11:38

우편번호를 찾을 읍/면/동을 입력하세요.

<form method=post action=http://biz.epost.go.kr/KpostPortal/openapi target=postframe>

<input type=hidden name=regkey value=신청하면발급해주는문자열>

<input type=hidden name=target value=post>

<input type=text name=query>

<input type=submit value=검색>

</form>

<iframe name=postframe id=postframe width=600 height=300 frameborder=0 scrolling=yes></iframe>

2011/11/19 11:37 2011/11/19 11:37

리눅스 상에서 오라클 설치

# centOS 설치

- centOS 설치시에 xwindow 설치

# 패키지 설치

# yum -y install binutils compat-db control-center gcc gcc-c++ \
glibc glibc-common gnome-libs libstdc++ libstdc++-devel make \
pdksh sysstat xscreensaver compat-libstdc++-33 libaio-devel \
unixODBC unixODBC-devel

# 오라클 계정 설정

# groupadd dba

# useradd -d /oracle -g dba oracle

# passwd oracle

# chmod 755 -R /oracle

# chown -R oracle.dba /oracle

# /etc/sysctl.conf 파일 수정 및 적용

# vi /etc/sysctl.conf

-> 아래 내용 추가

### oracle ###
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.wmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576

# /sbin/sysctl -p

-> 위 명령어로 /etc/sysctl.conf 파일에서 추가한 내용 적용

# /etc/security/limits.conf 파일에서 실행되는 프로세스 수 제한

# vi /etc/security/limits.conf

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

# /etc/pam.d/login 파일에 /lib/security/pam_limits.so 관련 내용 추가

# vi /etc/pam.d/login

-> 맨 아래 줄에 아래 내용 추가

session required /lib/security/pam_limits.so

# oracle 계정의 .bash_profile에서 환경 변수 수정

# vi /oracle/.bash_profile

export ORACLE_BASE=/oracle
export ORACLE_SID=ORCL
export ORACLE_HOME=$ORACLE_BASE/product
export PATH=$PATH:$ORACLE_HOME/bin
export DISPLAY=:0.

# 오라클 계정으로 su 후 파일 압축풀기

# su oracle

# unzip linux_11gR2_database_1of2.zip

# unzip linux_11gR2_database_2of2.zip

# chown -R oracle.dba database

# 압축을 풀면 database라는 디렉토리가 생성되고 runInstaller를 실행한다

- database 디렉토리는 ORACLE_HOME에 있어야 한다

# startx

- Xwindows로 부팅이 되면 터미널에서 runInstaller 파일을 실행

# ./runInstaller

# 오라클 자동 시작 설정

- /etc/oratab 파일에서 맨 아래 내용의 N을 Y로 변경

orcl:/oracle/11g:Y

# 리스너 파일 링크

# ln -s /oracle/product/bin/lsnrctl /usr/bin/lsnrctl

# 오라클 자동실행 스크립트

#!/bin/bash
ORA_HOME="/oracle/product"
ORA_OWNER="oracle"

if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ]
then
echo "Oracle Startup: failed"
exit 1
fi

case "$1" in
start)
echo -n "Oracle Start: "
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
su - $ORA_OWNER -c $ORA_HOME/bin/dbstart
touch /var/lock/subsys/oracle
echo "OK"
;;
stop)
echo -n "ORACLE Shutdown: "
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
su - $ORA_OWNER -c $ORA_HOME/bin/dbshut
rm -f /var/lock/subsys/oracle
echo "OK"
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 start|stop|restart"
exit 1
esac
exit 0

2011/11/14 16:25 2011/11/14 16:25
Windows OS 를 사용하면서 바이러스에 고생을 하는것은 누구나 한두번을 경험하게 된다.
그래서 백신을 찾게 되는데, 가격에 부담이 되고 무료백신을 사용하자니 믿음이 가지 않고 고민이 된다.

이럴때 Microsoft 사에서 제공하는 MS Security Essentials 를 사용해 보는것도 좋은 대안이다.
일단 Windows 정품사용자에게 제공되고 OS 제작사에서 제공해서 믿을만 하고
결정적으로 무료 제공이다.

아래는 MSSE(Microsoft Security Essentials) 홈페이지에서 제공하는 내용이다.

=========================================================================================================

Microsoft Security Essentials 정보

Microsoft Security Essentials는 바이러스, 스파이웨어 및 기타 악성 소프트웨어로부터 PC를 안전하게 지키는 실시간 보호를 제공합니다.

Microsoft Security Essentials는 설치가 간단하고, 사용하기 편리하며, 최신 기술로 PC 보호를 유지하는 Microsoft의 무료* 소프트웨어입니다. 녹색으로 표시되는 한 PC는 안전합니다.

Microsoft Security Essentials는 백그라운드에서 조용히 효율적으로 실행되므로 중단이나 긴 대기 시간 없이 Windows 기반 PC를 사용할 수 있습니다.

Microsoft 맬웨어 보호 센터에서 자세한 내용 보기

Microsoft Security Essentials가 보호할 수 있는 모든 신종 위협 요소에 대한 정보, 정의 및 분석을 Microsoft 맬웨어 보호 센터 (영어로만 제공)에서 확인하세요.

기업에 보안이 필요하신가요?
Microsoft Forefront Client Security로 컴퓨터 보호

*Microsoft Security Essentials를 설치하려면 PC가 Windows 정품을 실행하고 있어야 합니다. 정품에 대한 자세한 내용
===========================================================================================================

개인적으로 사용하고 있는데 업데이트도 방법도 윈도우 업데이트 방법과 유사해서 사용도 편리하다.
그리고 보안 룰에 대한 제공도 꾸준히 업데이트되는데 지금까지 보안때문에 문제된적이 없었다.

Windows 를 사용하고 기존백신에 불신을 가지신 분들은 한번 사용해 볼만하다.

홈페이지 링크
http://www.microsoft.com/security_essentials/default.aspx

2011/11/14 16:23 2011/11/14 16:23

Windows Server 2008 R2로 업그레이드해야 하는 10가지 이유

기업이 운영 비용을 줄이고 업무 효율성을 높일 수 있도록 개발된Windows Server 2008 R2는 기업 전반의
다양한 자원들에 대해 보다 강화된 관리 능력을 제공할 것입니다. 또한 전력 소비를 줄이고 경비를 절감함으로
써 보다 높은 에너지 효율과 성능을 제공하도록 설계되었습니다. 더불어 향상된 지점 기능과 새로운 원격 액세
스 능력, 유연한 서버 관리 기능을 제공하며, 클라이언트와 서버 컴퓨터에 대한 마이크로소프트의 가상화 전략
을 확대합니다.

1. 강력한 하드웨어와 확장 기능들
Windows Server 2008 R2는Windows Server 2008과 동일한 하드웨어 기반에서 보다 잘 운영되도록 설계되었
고, R2는 64비트 아키텍처로 완벽하게 이동할 수 있는 최초의Windows Server 운영 체제입니다
먼저 CPU 지원 능력을 확대하여 고객이 논리 프로세서를 최대 256개까지 운영할 수 있게 해 줍니다.
또한 SLAT(Second Level Translation)을 지원하기 때문에 R2는 최신AMD CPU에서 발견할 수 있는
Enhanced Page Tables 기능과Intel의 최신 프로세스에서 제공되는 유사한Nested Page Tables
기능도 사용할 수 있습니다.
R2 서버가 훨씬 강화된 메모리 관리 능력을 제공.
Windows Server 2008 R2의 Hyper-V는 호스트 컴퓨터에서 최대 64개까지 논리 CPU에 액세스할 수
있습니다.
이러한 능력은 새로운 멀티코어 시스템의 이점을 활용할 수 있게 해 주며, 이는 동시에 각 호스트당
가상 컴퓨터 통합 비율이 보다 향상되었음을 의미하기도 합니다.
2. 전력 소비 감소
서버 상에 있는 프로세서들의 사용 수준을 모니터링하고 그 결과에 맞춰 작업에 필요한 수준으로 전력을 제
한하도록 프로세서의 성능 상태를 수시로 조정하였습니다. Windows Server 2008 R2는 서버와 서버 CPU
전력 소비량을 관리하고 모니터링하는 보다 정밀한 기능을 추가하고 이런 기능을 새로운 전원 기반 그룹
정책 설정을 통해 데스크톱에까지 확장함으로써 절전 기능을 더욱 향상시켰습니다.

3. Windows Server 2008 R2의Hyper-V™

Windows Server 2008 R2는 마이크로소프트의 가상화 기술인 Hyper-V™에 대한 예상 업데이트도 감안하였
습니다.
새로운 Hyper-V™는 기존의 가상 컴퓨터 관리 능력을 증진시키고 특히 서버 마이그레이션과 관련해 구체적
인 IT 문제들을 해결할 수 있도록 설계되었습니다.
Hyper-V™는 Windows Server 2008 R2의 Live Migration을 위해 활성화된 기능입니다. Hyper-V version 1.0
을 통해 Windows Server 2008은Quick Migration이 가능했고, 이는 몇 초가 안 되는 중단 시간 동안 실제 호
스트들 간에 신속하게 가상 컴퓨터들을 이동할 있게 해 주었습니다. 그러나 이러한 수 초의 시간에도 특정한
상황에서는 충분히 문제가 발생할 수 있습니다. 가상 컴퓨터를 호스트하는 서버로 클라이언트를 연결하는
상황이 그러한 예입니다. 그러나 Live Migration 기능을 활용하면 실제 대상 간의 이동이 수 밀리초 안에 이루
어집니다. 이는 마이그레이션 작업이 접속 중인 사용자들에게는 느껴지지 않게 되었다는 것을 의미합니다.
Hyper-V를 위해 System Center Virtual Machine Manager를 설치한 고객은 새로운 VM 기반 성능 및 자원
최적화 기능과 장애 조치 클러스터를 위해 업데이트된 지원 기능들을 비롯해, 추가적인 관리 및 오케스트레이
션 기능을 활용할 수 있을 것입니다.
새로운 Hyper-V™는 또한 중요한 성능 개선 내용들도 선보입니다. 앞서 언급한대로 최대 64개까지 논리 프로
세서를 활용할 수 있으며 SLAT(Second Level Translation)을 위한 호스트 지원 기능을 통해 해당 CPU 성능
을 보강할 수 있습니다. 더불어 VM이 재부팅 이나 VHD로부터의 부팅 없이 바로 저장소를 추가, 제거할 수 있
게 되었습니다.

4. VDI를 통한 데스크톱 비용 절감

Windows Server 2008 R2는 향상된 VDI(Virtual Desktop Integration) 기능을 제공하여 터미널 서비스 기능을
확장함으로써 특정 비즈니스 프로그램을 직원들의 원격지 데스크톱으로 전달할 수 있게 해 줍니다. VDI를 사
용하면 원격 데스크톱 서비스가 컴퓨터에 전송하는 프로그램들을 로컬 컴퓨터의 시작 메뉴에서 해당 기기에
설치되어 있는 프로그램과 함께 언제든 바로 사용할 수 있습니다. 이는 데스크톱 가상화 능력을 향상시키고
보다 뛰어난 응용 프로그램 가상화 기능을 제공합니다.
데스크톱 가상화는 강화된 개별 관리 기능, Windows 7의 가상화 데스크톱과 응용 프로그램의 거의 보이지
않는 통합 능력, 보다 나은 오디오 및 그래픽 성능, 뛰어난 웹 액세스 업데이트 기능 등을 비롯해 다양한 기능
들을 활용할 수 있게 해 줄 것입니다.
VDI는 가상화된 자원들을 보다 효율적으로 사용할 수 있게 해 주고 새롭고 강력한 가상화 관리 기능들은 물론
로컬에 있는 주변 하드웨어 장치들과의 보다 나은 통합 능력을 제공합니다.

5. 보다 효율적이면서도 더욱 쉬워진 서버 관리 기능

• 향상된 데이터센터 전력 소비 및 관리 능력
• 원격으로 설치 가능한 Server Manager(서버 관리자)를 비롯한 향상된 원격 관리 기능
• 업데이트되고 보다 간편해진 Active Directory Domain Services 및 Active Directory Federated Services
를 통한 향상된 ID 관리 기능

6. 어디서든 가능한 원격 액세스

Windows Server 2008 R2는DirectAccess라고 불리는 새로운 유형의 연결 기능을 소개하고 있습니다. 이는
원격 사용자들이 일반적 인 VPN 연결과 클라이언트 소프트웨어를 요구하지 않고 유연하게 기업 리소스에
액세스할 수 있게 해 주는 강력한 기능입니다.
Windows Server 2008에 포함된 기술들을 사용하여 마이크로소프트는 관리자들이 기본적인 DirectAccess
연결이 가능하도록 Windows 7 클라이언트와 R2 모두에 SSTP와 IPv6를 구성하고, 관리 정책 및 NAP을 비롯
한 추가 R2 관리 및 보안 도구들을 활용해 해당 연결을 확장할 수 있는 간편한 관리 마법사를 추가하였습니
다.

7. 향상된 지점 성능 및 관리 기능

많은 지점 IT 아키텍처가 상대적으로 낮은 대역폭을 가지고 있습니다. 느린 WAN 연결은 본사 콘텐츠에 액세
스하기 위해 대기해야 하는 지점 직원들의 업무 생산성에 영향을 미치고, 지점 대역폭 할당을 위한 비용은 전
체 기업 IT 비용의 33%나 되는 많은 부분을 차지하기도 합니다. 이러한 문제를 해결하기 위해Windows
Server 2008 R2는BranchCache™라고 불리는 기능을 도입하였는데, 이는 WAN 사용률을 줄이고 네트워크 응
용 프로그램의 응답 능력을 향상시킵니다.
BranchCache™로 인해, 이제 기업 네트워크 상에 존재하는 데이터에 대한 액세스를 요청한 클라이언트는 만
약 해당 파일이 전에 요청된 적이 있었을 경우 로컬(지점) 네트워크 상에 존재하는 해당 파일로 연결됩니다.
파일이 로컬에 저장되어 있다면 이제 클라이언트는 바로 고속 액세스가 가능해진 것입니다. 그리고 그러한 파
일들은 보다 큰 지점을 위한BranchCache™ 서버나 로컬 Windows 7 PC 상에 저장 가능합니다.

8. SMB에 대한 간편한 관리

Windows Server 2008 R2에서 마이크로소프트는 SMB와 미드마켓(mid-marke) 고객에 보다 집중하고 있습
니다. 이러한 관심은 해당 고객들에게 Small Business Server에서 Windows Essential Business Server 및
현재의 Windows Server 2008 Standard에 이르기까지 마이크로소프트 제품에 대한 다양한 선택 기회를 제공
합니다. 모든 SKU는 새로운 관리 도구들을 갖추게 되어 SMB IT 전문가들이 보다 쉽게 IT 환경을 운영해 갈
수 있게 해 줍니다.
Active Directory의 새 Active Directory Administration Center가 그러한 예입니다. 모든 이종의 관리 GUI들이
이제 하나의 인터페이스 안에서 호스트되고, 모두PowerShell을 기반으로 합니다. 또한Best Practice
Analyzers도 빼놓을 수 없는데, 마이크로소프트는 이를 모든 서버 역할에 확장하여 모든 서버 구성이 최신 기
술 정보에 부합하게 그 구성을 유지할 수 있도록 하였습니다.
끝으로 매우 중요한 새Windows Server Backup 유틸리티 기능이 있습니다. 이 업데이트된 백업 응용 프로그
램은 시스템 상태 운영 지원 등을 비롯해 백업 작업을 설계하는 데 필요한 보다 세분화된 지원 기능들을 포함
하도록 업그레이드 되었습니다. 또한 보다 빠른 운영 속도와 보다 적은 디스크 공간 활용을 위해 최적화되었
습니다.

9. 가장 강력한 웹 및 응용 프로그램 서버

Windows Server 2008 R2에는 이를 최고의 Windows Server 응용 프로그램 플랫폼으로 만들 다양한 업데이
트들이 포함되어 있습니다
이 가운데서 가장 중요한 것 중 하나가 새로운 Internet Information Services 7.5 (IIS 7.5)입니다.
업데이트된 웹 서버에는 확장된 IIS Manager를 통해 관리 작업을 간소화하는 기능들이 포함되어 있으며, 이
는 IIS PowerShell Provider를 구현하고 Server Core에서 .NET을 활용할 수 있게 해 줍니다. IIS 7.5는 또한
구성 로깅 및 전용 Best Practice Analyzer등을 비롯한 새로운 지원 및 문제 해결 기능들을 통합합니다. 끝으
로 마이크로소프트는 URLScan 3.0 (현재 Request Filter Module로 알려져 있음)을 비롯해 Windows Server
2008과 관련해 자주 사용되는 몇 개의 선택적인 확장 기능들을 통합하였 습니다.

10. 저장소가 아닌 데이터 관리

저장소 관리는 단순한 디스크 관리가 아닙니다. IDC*에 따르면 저장소 볼륨은 2008년에서 2012년 사이에 연
성장률 51%를 기록하며 갈수록 늘어날 것입니다. 경쟁력을 유지하기 위해 기업은 디스크 관리가 아닌 데이터
관리를 시작해야 합니다. Windows Server 2008 R2는 IT 관리자들에게 새로운 FCI (File Classification
Infrastructure)와 함께 이러한 이니셔티브를 위한 도구들을 제공합 니다. 이 새로운 기능은 기존의 공유 파일
아키텍처에 확장 가능한 자동 분류 메커니즘을 구현합니다. 이로 인해 IT 관리자들은 전체적인 사용자 지정
분류 내용을 기준으로 특정 파일로 특정 작업을 연결할 수 있습니다. FCI는 또한 파트너에게도 확장 가능한
데 이는 Windows Server 2008 R2 사용자들이 머지 않아 ISV들이 제공할 FCI에서도 추가적인 기능들을 기대
할 수 있다는 뜻입니다.

2011/11/14 16:20 2011/11/14 16:20

DOCTYPE은 현재 웹 문서가 어떤 HTML 버전에 맞게 작성되었는지를 알려주는 부분입니다. 문서가 HTML 표준안을 따르는지, XHTML 표준안을 따르는지, 그리고 표준안 중에서도 권장 표준안(strict)을 지키는지, 완화된 표준안(Traditional)을 지키는지에 따라 특정 태그를 사용할 수 없기도 하고, 처음 예상했던 것과 다른 결과가 나타나기도 합니다.

DOCTYPE을 따로 선언하지 않으면 브라우저에서 HTML 문서로 인식하기 때문에 사용하지 않는 경우도 많지만, XHTML 언어를 사용할 경우에는 반드시 선언해 주어야 의도한대로 웹 문서를 표시할 수 있습니다.

:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

가장 기본적인 문서 타입 선언은 다음과 같습니다.

● HTML 4.01 호환 모드 : 가장 최근의 CSS 규격을 따르며 자유롭게 요소들을 배치할 수 있습니다. 프레임은 사용할 수 없습니다. 따로 지정하지 않을 경우 브라우저에서는 이 형식으로 인식합니다.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/html4/loose.dtd">

● HTML 4.01 엄격 모드 : 권장하지 않는 요소들은 전혀 사용할 수 없고 요소를 배치할 때 규칙을 지켜야 합니다. HTML 문법에 맞는 가장 이상적인 문서를 만들 수 있습니다.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

● XHTML 1.0 호환 모드 : 프레임셋을 사용할 수 있지만 파이어폭스에서는 프레임을 사용할 수 없음

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

2011/11/03 04:40 2011/11/03 04:40
틀고정 및 숫자 콤마적용,합계처리를 하는 방법입니다.
--------------------------------------------------------------------------------------------

<html xmlns:x='urn:schemas-microsoft-com:office:excel'>
<meta http-equiv="Content-Type" content="application/vnd.ms-excel;charset=euc-kr">
<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='pragma' content='no-cache'>
<meta name=Generator content="Microsoft Excel 9">


<style>
td{font-size:9pt; font-family:굴림}
br{mso-data-placement:same-cell;}
BR{mso-data-placement:same-cell;}
.title{font-size:12pt;font-weight: bold}
.title2{font-size:8pt;font-weight: normal}
.title3{font-weight: normal;mso-text-control:shrinktofit;white-space:nowrap;}
.font{font-size:9pt}
.int{mso-number-format:"0_ ";mso-text-control:shrinktofit;white-space:nowrap;}/*숫자타입*/
.decimal2{mso-number-format:"\#\,\#\#0\.00_ \;\[Red\]\\-\#\,\#\#0\.00\\ ";mso-text-control:shrinktofit;white-space:nowrap;}/*숫자타입(콤마표시,소수점2자리)*/
.percent{mso-style-parent:style0;mso-number-format:Percent;} /*백분율(소수2자리)*/
.other{mso-number-format:"\@";mso-text-control:shrinktofit;white-space:nowrap;}/*문자타입*/
.text{mso-number-format:"\@";mso-text-control:shrinktofit;white-space:nowrap;}/*문자타입*/
</style>
<!--[if gte mso 9]><xml>
<x:ExcelWorkbook>
<x:ExcelWorksheets>

<x:ExcelWorksheet>
<x:Name><?=$Excel_Title?></x:Name>
<x:WorksheetOptions>
<x:DefaultRowHeight>270</x:DefaultRowHeight>
<x:Print>
<x:ValidPrinterInfo/>
<x:PaperSizeIndex>9</x:PaperSizeIndex>
<x:HorizontalResolution>600</x:HorizontalResolution>
<x:VerticalResolution>600</x:VerticalResolution>
</x:Print>
<x:Selected/>

<?if($_POST[Excel_SplitHorizontal] || $_POST[Excel_SplitVertical]){//틀고정시 적용?>
<x:FreezePanes/>
<x:FrozenNoSplit/>
<x:SplitHorizontal><?=$_POST[Excel_SplitHorizontal]?></x:SplitHorizontal>
<x:TopRowBottomPane><?=$_POST[Excel_SplitHorizontal]?></x:TopRowBottomPane>
<x:SplitVertical><?=$_POST[Excel_SplitVertical]?></x:SplitVertical>
<x:LeftColumnRightPane><?=$_POST[Excel_SplitVertical]?></x:LeftColumnRightPane>
<x:ActivePane>0</x:ActivePane>
<?}?>

<x:Panes>
<x:Pane>
<x:Number>3</x:Number>
<x:ActiveRow>0</x:ActiveRow>
<x:ActiveCol>0</x:ActiveCol>
<x:RangeSelection>$G$19:$G$20</x:RangeSelection>
</x:Pane>
</x:Panes>
<x:ProtectContents>False</x:ProtectContents>
<x:ProtectObjects>False</x:ProtectObjects>
<x:ProtectScenarios>False</x:ProtectScenarios>
</x:WorksheetOptions>
</x:ExcelWorksheet>
</x:ExcelWorksheets>
<x:WindowHeight>11475</x:WindowHeight>
<x:WindowWidth>17745</x:WindowWidth>
<x:WindowTopX>120</x:WindowTopX>
<x:WindowTopY>90</x:WindowTopY>
<x:ProtectStructure>False</x:ProtectStructure>
<x:ProtectWindows>False</x:ProtectWindows>
</x:ExcelWorkbook>
</xml><![endif]-->

<table border=1>
<tr><td class=int x:num=1000>1000</td></tr>
<tr><td class=int x:num=1000>1000</td></tr>
<tr><td class=int x:num=1000>1000</td></tr>
<tr><td class=int x:fmla='=sum(A1:A3)'></td></tr>
</table>                                       
2011/10/31 18:29 2011/10/31 18:29

제가 왜 '블로그 상위노출 기준과 방법'이라고 작성하지 않고 '블로그 상위노출 기준과 블로그 상위노출 방법'이라하고 빨강색과 크기를 크게 했을까요? N검색 사이트의 검색로봇의 상위 노출에 유리하게 판단할 수 있도록 하기 위함입니다.


검색포털의 검색로봇이 수집한 정보는 단어별로 색인되어 DB에 보관한 후 검색자의 검색어와 일치되는 단어를 검색하여 검색 결과에 노출합니다.


이 과정에서 동일한 단어의 검색어들이 노출되게 되는데, 어떤 정보를 상위에 노출시켜야 할 지 사전에 어떠한 기준이 있어야 합니다.


그 기준은 통합 검색의 검색 탭(블로그, 카페, 이미지, 동영상, 지식iN, 지식쇼핑, 뉴스 등)별로 다르지만 검색 상위 노출의 일정한 규칙을 가지고 있습니다.


검색로봇이 판단하는 검색 상위 노출의 기본적인 요인은 정확도, 인기도, 등록일이며, 정확도에는 블로그 포스트의 제목에서 검색어의 위치와 반복 횟수, 본문에서 대표 검색어의 반복 회수, 본문 글자의 크기와 색상, 포스트의 전체 크기를 의미합니다.


블로그 상위 노출 기준과 블로그 상위 노출 방법을 터특하기 전에 우선 선행되어야 할 항목이

검색 포털의 검색로봇과 검색엔진의 동작원리와 노출 원리와 규칙을 이해한 후 그에 맞는 포스트를 작성하고 블로그를 관리해야 합니다.

 

 

1.키워드를 잘 선택한다

2.키워드가 검색 카테고리에 적당하게 등록이 되어야한다

3.제목에 키워드가 들어가야하고 내용 앞부분에 키워드를 2~3번 넣어주면 좋다

4.블로그지수가 높아야한다

5.남의 글을 복사한 것이 아닌 자신의 창작글이어야한다

6.내용 속에 이미지,사진,동영상이 있으면 확률이 더 높다

7.제목(주제)과 내용이 연관성이 있어야한다.

 

블로그를 운영하시는 분 입장에서는 나의 글이 무조건 상위에 노출이 되었으면 하는 바람을 지니고 있겠지만 검색엔진에서는 검색 사용자가 원하는 결과를 보여줘야 한다는 과제를 안고 있습니다.


때문에 블로그 상위노출을 위한 첫 걸음은 검색엔진의 입장이 되어 보는 것입니다.


1. 검색 사용자가 입력한 검색어와의 관련성을 높여라.


이 부분에 대한 과제 때문에 검색 사용자가 입력한 검색어가 블로그의 포스트 내에 적절히 포함되어 있어야 합니다.

가장 중요한 위치는 물론 제목이며 본문 내에도 다수 포함되어 있는 것이 관련성을 높이는 방법입니다.


2. 정성스럽게 작성된 컨텐츠여야 한다.


네티즌들이 좋아하는 페이지의 구성은 적절한 량의 텍스트와 이미지 혹은 동영상이 적절히 섞여 있는 것입니다. 해서 포스트 내용이 텍스트로만 구성되어 있을 것이 아니라 이미지 혹은 동영상이 적절히 섞여 있는 형태를 선호합니다.


3. 컨텐츠 소비자의 호응도를 높여라.


검색로봇이 로직에 의해 1차적으로 점수를 부여하여 순위를 결정하여 노출시킬 것입니다. 그 다음에는 해당 포스트에 게재된 컨텐츠를 소비한 이들이 댓글, 공감, 스크랩 등으로 얼마나 호응했는지를 보고서 이 포스트의 진실성 여부를 판단하여 순위 조정을 할 것입니다.


4. 성실한 블로그 운영자여야 한다.


컨텐츠를 꾸준히 업데이트하는지, 복사한 컨텐츠가 아닌 직접 생성한 컨텐츠인지, 이웃은 얼마나 많은지 등을 보고서 블로그 자체의 신뢰 점수를 부여할 것입니다.


이 4가지가 기본이 되는 요소라고 볼 수 있습니다. 이 요소들의 점수를 적절히 연산하여 점수를 계산하고 이 점수에 따라 상위노출이 결정될 것입니다.

2011/10/27 13:51 2011/10/27 13:51
예전에 제 블로그에 올렸던 글인데요 재탕할께요.

How to Capture a Website Screenshot in Linux

http://blog.naver.com/belladonnaf/50094171932

1. 필요한 것.
Linux Server with Centos/RHEL
Khtml2Png (http://khtml2png.sourceforge.net)
ImageMagick (http://imagemagick.org)
KDE Desktop Environment
Cmake - http://www.cmake.org

2. 설치방법

yum install Xvfb ImageMagick
yum install firefox

Xvfb :2 -screen 0 1024x768x24&
export DISPLAY=:2
import -window root example.png

Install Basic Tools

yum install gcc gcc-c++ automake autoconf nano zlib zlib-devel

Install KDE desktop environment

yum groupinstall "X Window System" "KDE (K Desktop Environment)"

Install KDE developer libraries

yum install kdelibs kdelibs-devel

Install Xvfb Virtual Frame Buffer

yum install Xvfb xorg xorg-x11-font*

Install Cmake

Cmake is cross plaform make utility. You cannot install using yum so you have to download the source files and compile it.

wget <path/of/cmake.tar.gz>
tar zxf cmake-2.7.1.tar.gz
cd cmake-2.7.1

then

./bootstrap
make
make install

Install Khtml2PNG

Download the source files from sourceforge.

wget <path/to/khtml2png-2.7.5.tar.gz>
tar xzf khtml2png-2.7.5

./configure
make install

마지막으로 ..

Start Xvfb virtual server, then launch the khtml2png to grab a website screenshot

> Xvfb :2 -screen 0 1024x768x24&
> export DISPLAY=localhost:2.0

then run khtml2png2

> khtml2png2 --sw 200 --sh 150 http://www.example.com example.png

--sh and --sw indicates both scaled width and height

khtml 이 정말 단순한 브라우저에요                                       
2011/10/23 12:00 2011/10/23 12:00