Search Results for '프로그래밍'


1208 posts related to '프로그래밍'

  1. 2010/03/18 <form 안에 있는 checkbox를 radio 처럼 쓰기
  2. 2010/03/18 Jquery 체크박스 사용법
  3. 2010/03/18 iframe내의 id셀렉터
  4. 2010/03/18 csv를 읽어서 테이블로 보여주는 플러그인
  5. 2010/03/18 json 사용시 엔터(newline) 넘길때 에러나는 경우
  6. 2010/03/18 jQuery + 정규표현식( 이메일검증법)
  7. 2010/03/18 jquery 오른쪽 마우스금지
  8. 2010/03/14 JavaScript - 외부 이미지 크기 구하기
  9. 2010/03/14 지정한 두 기간 사이의 날짜 랜덤 생성
  10. 2010/03/14 jqGrid 3.5 한글 번역 파일입니다.
  11. 2010/03/14 pscp와 plink를 이용해서 원격 SSH 호스트에 파일 업로드 및 작업 자동화하기
  12. 2010/03/12 [MySQL] root 비밀번호 분실시 해결법
  13. 2010/03/12 cmd.exe 명령 도움말
  14. 2010/03/12 Google 메일서버 이용하기
  15. 2010/03/12 압축하며 다운하기. passthru()
  16. 2010/03/12 국가별 아이피 차단 스크립
  17. 2010/03/12 IPTABLES 를 이용한 파이어 월 구축..
  18. 2010/03/12 perl 싸이월드 투데이 조작 기타 조회수 조작하기 2
  19. 2010/03/12 [jQuery] 간단한 텍스트 스크롤
  20. 2010/03/12 lftp 이용한 파일 다운로드 , 업로드.
  21. 2010/03/12 MySQL 백업용 쉘스크립트입니다.
  22. 2010/03/12 웹사이트에서 쿠키값을 보고 싶을때 1
  23. 2010/03/12 vi 에디터에서 창 나누기
  24. 2010/03/12 jquery.filestyle.js 를 이용한 input file '찾아보기' 버튼을 이미지로 바꾸기 1
  25. 2010/03/12 URLScan -
  26. 2010/03/10 코딩할때 편한 폰트 ^^
  27. 2010/03/10 TextInput과 TextArea의 속도 향상 1
  28. 2010/03/10 lftp 이용한 파일 다운로드 , 업로드
  29. 2010/03/01 MS-SQL 의 데이타 복구 방법(MDF, LDF 파일) 1
  30. 2010/03/01 bak 파일로 데이타베이스 복원하기
<form id="fwishlist" ...
loop....
<input type=hidden name=it_id[$i] >
...end loop

        $("#fwishlist input:checkbox[name^=it_id]").click( function(){
                $("#fwishlist input:checkbox:checked[name^=it_id]").attr('checked',false);
                $(this).attr('checked',true);
        });
2010/03/18 03:31 2010/03/18 03:31
 

jquery를 이용한 체크박스 부분에 관련된 내용이 없어서 간단하게 한번 만들어보았습니다.

저보다 더 좋은 내용이 있으면 코멘트 달아주세요

<html>
<head>
<title></title>
<script  type="text/javascript" src="./script/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
 $("#selectall").click(selectAll);
 $("#save").click(save);
});
function selectAll()
{
 var checked = $("#selectall").attr("checked");
  $(".box").each(function(){
  var subChecked = $(this).attr("checked");
    if (subChecked != checked)
   $(this).click();
  });
}

function save()
{
 var result = "";
 $(".box:checked").each(function() {
 $("#"+$(this).val()).remove();  
  result += $(this).val();
  //AJAX로 넘겨줄때는  
  //.get('XXX.php',{SelType:$(this).val()});

  });
 alert(result);
}
</script>
</head>
<body>
<table>
<tr><td><input type="checkbox" id=selectall></td><td>1전체선택</td></tr>
<tr><td><input type="checkbox" name="chkbox" value="1" class="box"></td><td>1</td></tr>
<tr><td><input type="checkbox" name="chkbox" value="2" class="box"></td><td>1</td></tr>
<tr><td><input type="checkbox" name="chkbox" value="3" class="box"></td><td>1</td></tr>
<tr><td><input type="checkbox" name="chkbox" value="4" class="box"></td><td>1</td></tr>
<tr><td><input type="checkbox" name="chkbox" value="5" class="box"></td><td>1</td></tr>
<tr><td><input type="button" value="저장" id="save"></td></tr>
</table>
</body>
</html>

2010/03/18 03:30 2010/03/18 03:30
$('#iframeID').contents().find('#someID').html();

전 이걸 몰라서 헤멨는데 다른분은 다 아시고 계신건가요? -0-;;
2010/03/18 03:30 2010/03/18 03:30
http://plugins.jquery.com/project/csv2table

== Mini sample 1 ==
<div id="view1"></div>
<script type="text/javascript">
$(function(){
    $('#view1').csv2table('./data/Book12.csv');
});
</script>
2010/03/18 03:29 2010/03/18 03:29
function parse($text) { 
   
// Damn pesky carriage returns... 
    $text
= str_replace("\r\n", "\n", $text); 
    $text
= str_replace("\r", "\n", $text); 
 
   
// JSON requires new line characters be escaped 
    $text
= str_replace("\n", "\\n", $text); 
   
return $text; 
} 
2010/03/18 03:28 2010/03/18 03:28
function ajax_email_ch() {
 var email1 = $("#email1").val();
 var email2 = $("#email2").val();

 var email_ch = email1 + "@" + email2;
   if(email_ch.match(/\w+[/\w.]*@[/\w.]+\.\w+/)) {
     이메일이 맞을경우...
   }
 }

찾아봐도 없어서 간단히 만들어봤습니다.
제가 사용하려고 만든거라 정리되지 않았는데...
쉬운 소스이니 변형하셔서 사용하셔여~.~

2010/03/18 03:28 2010/03/18 03:28
$(document).bind("contextmenu", function(e){
    alert("오른쪽마우스금지입니다.");
    return false;
 });
2010/03/18 03:27 2010/03/18 03:27
다른 사이트의 이미지 크기를 간단하게 구하는 방법입니다.

<script type="text/javascript">
var imgs = new Array(); // 배열 Object
function getimagesize(url)
{
    if ( typeof(imgs[url])=="undefined" || !imgs[url].complete ) { // 정의되지 않았거나 로딩되지 않은 경우
        imgs[url] = new Image(); // 이미지 Object
        imgs[url].src = url; // 이미지 지정
        setTimeout("getimagesize('"+url+"')",100); // 0.1초 후 재귀 호출
    } else {
        alert("W:"+imgs[url].width+"/H:"+imgs[url].height); // 크기 띄우기
    }
}
</script>
<input type="button" value="LOGO" onclick="getimagesize('http://phpschool.com/images/top_logo.gif');" />
<input type="button" value="Q/A" onclick="getimagesize('http://phpschool.com/title_image/sub_qna_title.gif');" />

예외 처리가 빈약한 기본 코드입니다.
살은 직접 붙여보세요.
2010/03/14 10:21 2010/03/14 10:21
2010-01-01 00:00:00부터 2010-02-03 23:59:59 사이의 임의의 날짜를 생성해볼까요?

먼저 알아야 할 것은 날짜 및 랜덤 관련 함수입니다.

UNIX_TIMESTAMP() 함수를 이용해 Timestamp를 구할 수 있죠?
아래의 예를 보세요.

SELECT UNIX_TIMESTAMP('2010-01-01 00:00:00');
UNIX_TIMESTAMP('2010-01-01 00:00:00')
1262271600

SELECT UNIX_TIMESTAMP('2010-02-04 00:00:00'); // 1초 더함. 이유는 아래
UNIX_TIMESTAMP('2010-02-04 00:00:00')
1265209200
= UNIX_TIMESTAMP('2010-02-03 23:59:59')+1

저 수치 사이의 값을 구하면 되겠죠?
이때 필요한 것이 RAND() 함수입니다.
이 함수로 0 이상, 1 미만의 부동 소수점 값을 구할 수있습니다. (0 ≤ n < 1) 이유!

SELECT RAND();
RAND()
0.298790559450901

정수 형태로 하려면 FLOOR() 함수를 사용해주면 됩니다.
예를 들어 1 이상 10 미만의 정수를 반환받고자 한다면 아래처럼 하면 됩니다.

SELECT FLOOR(1+RAND()*(10-1));
FLOOR(1+RAND()*(10-1))
3


지금까지의 함수를 통해 두 값 사이의 임의의 수(Timestamp)를 생성할 수 있겠죠?
그렇게 생성된 Timestamp 값을 FROM_UNIXTIME() 함수를 이용해 '년-월-일 시:분:초' 형태로 구할 수 있습니다.
최종적으로 아래 명령으로 구할 수 있습니다.

SELECT FROM_UNIXTIME(FLOOR(unix_timestamp('2010-01-01 00:00:00')+(RAND()*(unix_timestamp('2010-02-04 00:00:00')-unix_timestamp('2010-01-01 00:00:00')))));
FROM_UNIXTIME(FLOOR(unix_timestamp('2010-01-01 00:00:00')+(RAND()*(unix_timestamp('2010-02-04 00:00:00')-unix_timestamp('2010-01-01 00:00:00')))))
2010-01-21 23:37:01

Timestamp값을 그대로 넣으려면 FROM_UNIXTIME() 함수가 필요없겠죠?
년-월-일 또는 시간 등 필요한 문장으로 입력하려면 DATE_FORMAT() 함수를 사용하면 됩니다.
2010/03/14 10:20 2010/03/14 10:20
지원 OS : 모든 환경(웹)

개발환경 : 자바스크립트

사용제한 : MIT Style(jqGrid 라이센스에 따름)

제작자 : 컴포지트

자료설명 :

jqGrid 3.5 기준으로 작성되었습니다.
MIT 라이센스에 따라 배포 및 수정이 자유롭게 적용됩니다.

실무에서 jqGrid를 사용하기 위해 번역했습니다.
혹시라도 번역이 안된 부분이나 오역이 발생할 수도 있으니 양해 바랍니다.
(되도록 모두 한글화하도록 노력하였습니다.)

jqGrid 스크립트 파일을 불러오기 전에 이 파일을 넣어주시면 됩니다.
jqGrid 폴더에 i18n 폴더가 있는데 거기가 여러 번역 스크립트가 있는 곳입니다.
그곳에 살포시 넣어주시면됩니다.

UTF-8로 인코딩 하였으니 다른 인코딩에도 별 무리는 없을 것입니다.
만약 한글이 깨진다면 스크립트 태그에 charset='utf-8' 을 추가해주면 될겁니다.
자바스크립트 특성상 아스키 문자 외엔 모두 유니코드로 취급하니 한글 인코딩에
조금만 신경써준다면 한글이 깨지는 일은 없을 겁니다.

한글은 영어 문자보다 클 수 있기 때문에 Grid 레이아웃이 깨지는 경우가 있습니다.
가능하면 DOCTYPE를 명시해 주시고(HTML 종류 상관없음), 인코딩 메타태그를 넣어주세요.
그러면 레이아웃이 깨지는 일은 없을 것입니다.
2010/03/14 10:13 2010/03/14 10:13

1. 원격 SSH 호스트에 파일 올리기

베리즈 웹쉐어 프로젝트에서 배포본을 웹서버에 올리는 작업을 자동화하기 위해 쓰고 있는 방법입니다. PuTTY 패밀리의 일원인 pscp를 사용하고, stania군이 작업했던 것으로 기억합니다.

pscp.exe 올릴파일이름 유저이름@호스트주소:목적지경로 -pw 비밀번호
e.g.) pscp yd0283.avi rica@upnl.org:public_html/yd_distribution -pw BLAHBLAH

커맨드는 위와 같습니다. 이때 '-pw 비밀번호' 부분을 빼면 매번 비밀번호를 입력하게 됩니다. 베리즈 웹쉐어 프로젝트에서는 스크립트를 실행할 때마다 암호를 입력하는 것을 피하면서 스크립트에 암호가 그대로 보이는 상황을 막기 위해, 계정에서 계정의 개인키를 받아오는 방식을 취하고 있습니다. 이 방법은 제가 잘 모르기 때문에 건너뛰겠습니다.

2. 원격 SSH 호스트에 명령어 입력하기

PuTTY는 유명한 SSH 클라이언트인데, PuTTY 패밀리 중에 콘솔에서 작동하는 SSH 클라이언트도 있지 않을까 하고 찾아 봤더니 역시 있습니다. 이름은 plink라고 합니다.

이놈도 사용방법은 비슷합니다.

plink.exe 유저이름@호스트주소 -m 수행할명령어가담긴파일 -pw 비밀번호
e.g.) plink rica@upnl.org -m commands.txt -pw BLAHBLAH


3. 위 작업들을 스크립팅

pscp와 plink는 모두 콘솔에서 잘 작동하기 때문에, 배치파일을 쉽게 만들 수 있습니다.
plink를 실행해서 수행할 명령어가 담긴 파일을 따로 관리해야 하는 것이 약간 귀찮다면 귀찮겠네요.

pscp 는 http://youngsam.net/1056 요 글을 참고 하십시오. 윈도우 환경에서 가능합니다.

2010/03/14 09:42 2010/03/14 09:42
MySQL root 비밀번호 분실시 권한 없이 MySQlL 에 접속하여 새로운 비번을 부여후 다시 MySQL을 가동하면 해결됩니다.

# cd /usr/local/mysql/bin //mysql이 설치된 디렉토리의 bin
# killall mysqld
# ./safe_mysqld --skip-grant &
# mysql
mysql> use mysql;
mysql> update user set password=PASSWORD('패스워드') where user='root';
mysql> flush privileges;
mysql> quit;
# killall mysqld
# ./safe_mysqld -uroot &
2010/03/12 19:31 2010/03/12 19:31
Windows2000 명령 인터프리터의 새 인스턴스를 시작합니다.

CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
    [[/S] [/C | /K] 문자열]

/C      문자열이 지정한 명령어를 수행한 후에 종료합니다.
/K      문자열이 지정한 명령어를 수행한 후에 계속 남아있습니다.
/S      /C 또는 /K 다음에 문자열의 역할을 수정합니다(아래 참고).
/Q      에코를 끕니다.
/D      레지스트리에서 AutoRun 명령어를 실행할 수 없습니다(아래 참고).
/A      파이프 또는 파일로의 내부 명령어의 출력이 ANSI로 설정합니다.
/U      파이프 또는 파일로의 내부 명령어의 출력을 Unicode로
        설정합니다.
/T:fg   전경/배경 화면 색상을 설정합니다(자세한 사항은 COLOR /? 참고).
/E:ON   명령 확장을 사용할 수 있습니다(아래 참고).
/E:OFF  명령 확장을 사용할 수 없습니다(아래 참고).
/F:ON   파일과 디렉터리 이름 완성 문자를 사용할 수 있습니다(아래 참고).
/F:OFF  파일과 디렉터리 이름 완성 문자를 사용할 수 없습니다(아래 참고).
/V:ON   c를 사용하는 지연된 환경 변수 확장명을 구분 기호로 사용할 수 있습니다.
        예를 들어, /V:ON는 실행 시간에 !var!이 변수 var을
        확장하도록 허용합니다.  var 구문은 입력 시간에
        변수를 확장하는데 이것은 FOR 루프 안에 있는 경우와
        매우 다릅니다.
/V:OFF  지연된 환경 확장을 할 수 없습니다.

명령 구분 기호 '&&'로 구분되는 다중 명령어는
앞뒤에 따옴표가 있는 경우에만 문자열로 처리됩니다.
또한 호환성을 위해 /X와 /E:ON, /Y와 /E:OFF, /R과/C는
동일한 기능을 갖습니다. 다른 스위치는 무시됩니다.

/C 또는 /K가 지정되면, 스위치 뒤의 나머지 명령줄은
다음 내용과 같이 따옴표(") 문자를 처리하도록
별도의 명령줄로 처리됩니다.

    1.  다음의 모든 조건이 만족되면,
        명령 줄에 있는 따옴표가 유지됩니다.

        - /S 스위치 없음
        - 정확히 두 개의 따옴표 문자가 있음
        - 따옴표 문자 사이에 다음과 같은 특수 문자가 없음
          특수 문자: &<>()@^|
        - 따옴표 사이에 하나 이상의 공백 문자가 있음
        - 따옴표 사이에 실행 파일 이름이 있음

    2.  그렇지 않으면, 이전의 방식대로 첫 문자가 따옴표인지 확인하고
        만약 따옴표라면, 시작 및 끝 따옴표를 제거하고 따옴표 뒤에 있는
        문자를 유지합니다.

명령 줄에 /D가 사용되지 않으면 CMD.EXE가 시작할 때,
다음 REG_SZ/REG_EXPAND_SZ 레지스트리 변수를 찾습니다.
다음 중 하나 또는 모두가 있으면 우선적으로 실행합니다.

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun

        및/또는

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun


명령 확장은 기본적으로 사용하도록 설정되어 있습니다. 그렇지만
/E:OFF 스위치 사용하면 명령 확장을 사용하지 않을 수도 있습니다.
REGEDT32.EXE를 사용하여 레지스트리에 있는 REG_DWORD 중에서
하나 또는 모든 값을 설정(0x1 또는 0x0)함으로써 컴퓨터 및/또는
사용자 로그온 세션에 있는 CMD.EXE에 대해 명령 확장을 사용하도록
또는 사용하지 않도록 설정할 수 있습니다.

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions

        및/또는

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions

사용자 설정 내용은 컴퓨터 설정 내용에 대해 우선권을 갖습니다.
명령 줄에 사용된 스위치는 레지스트리 설정에 대해 우선권을
갖습니다.

명령 확장에는 아래 명령에 대한 변경 및/또는 추가 사항이 있습니다.

    DEL 또는 ERASE
    COLOR
    CD 또는 CHDIR
    MD 또는 MKDIR
    PROMPT
    PUSHD
    POPD
    SET
    SETLOCAL
    ENDLOCAL
    IF
    FOR
    CALL
    SHIFT
    GOTO
    START (또한, 외부 명령 호출에 대한 변경 사항도 있습니다.)
    ASSOC
    FTYPE

자세한 정보를 얻으려면 "명령 이름 /?"를 입력하고 내용을 확인하십시오.

지연된 환경 변수 확장은 기본적으로 사용하지 않도록 설정되어
있습니다. /V:ON 또는 /V:OFF 스위치를 사용하여 CMD.EXE에
지연된 환경 변수 확장을 사용하거나 사용하지 않을 수 있습니다.
REGEDT32.EXE를 사용하여 레지스트리에 있는 REG_DWORD 중에서
하나 또는 모든 값을 설정(0x1 또는 0x0)함으로써 컴퓨터 및/또는
사용자 로그온 세션에 있는 CMD.EXE에 대해 사용하도록
또는 사용하지 않도록 설정할 수 있습니다.

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\DelayedExpansion

        및/또는

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\DelayedExpansion

사용자 설정 내용은 컴퓨터 설정 내용에 대해 우선권을 갖습니다.
명령 줄에 사용된 스위치는 레지스트리 설정에 대해 우선권을
갖습니다.

지연된 환경 변수 확장을 사용하도록 설정하면
실행 시간동안 환경 변수의 값을 대신할 수
있습니다.


파일과 디렉터리 이름 완성은 기본적으로 사용하지 않도록
설정되어 있습니다. /F:ON 또는 /F:OFF 스위치를 사용하여
CMD.EXE에 대한 파일 이름 완성을 사용하거나 사용하지
않을 수 있습니다. REGEDT32.EXE를 사용하여 레지스트리에 있는
REG_DWORD 중에서 하나 또는 모든 값을 설정(아래 참고)함으로써
컴퓨터 및/또는 사용자 로그온 세션에 있는 CMD.EXE에 대해
사용하도록 또는 사용하지 않도록 설정할 수 있습니다.

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar
    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar

        및/또는

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar
    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar

위의 레지스트리 값에는 특정 기능에 대해 사용할 제어 문자의
16진수 값을 사용합니다. (예: 0x4은 Ctrl-D이고 0x6은 Ctrl-F입니다.)
사용자 설정 내용은 컴퓨터 설정 내용에 대해 우선권을 갖습니다.
명령 줄에 사용된 스위치는 레지스트리 설정에 대해 우선권을
갖습니다.

/F:ON 스위치를 사용하여 이름 완성 기능을 사용하면
두 개의 제어 문자를 사용할 수 있으며, 디렉터리 이름
완성에는 Ctrl-D를, 파일 이름 완성에는 Ctrl-F를 사용할 수
있습니다. 레지스트리에 있는 특정 완성 문자를 사용할 수
없도록 설정하려면 올바른 제어 문자가 아닌
공백(0x20) 값을 사용하십시오.


두 개의 제어 문자 중에서 하나를 입력할 때 이름 완성이
실행됩니다. 완성 기능은 일치하는 경로의 목록을 만들지 않았거나
또는 아무 경로가 없는 경우, 와일드카드 문자를 덧붙이는 커서의
왼쪽에 경로 문자열을 위치시킵니다. 그리고 일치하는 첫 번째
경로를 표시합니다. 일치하는 경로가 없으면 경고음을 내고 화면에
표시합니다. 이후에도 같은 제어 문자를 반복해서 누르면
일치하는 경로의 목록 전체를 순환합니다. 제어 문자와 함께
<Shift> 키를 누르면 목록을 반대로 작업합니다. 해당 행을 편집하고
제어 문자를 다시 누르면 저장된 일치하는 경로 목록이 삭제되고
새로운 목록을 만듭니다. 파일과 디렉터리 이름 완성 작업 간에도
동일합니다. 두 개의 제어 문자 사이에 유일하게 다른 점은
디렉터리 완성 문자는 디렉터리 이름과 일치하는 반면
파일 완성 문자는 파일과 디렉터리 이름 양 쪽 모두와 일치한다는
것입니다. 파일 완성이 기본 제공 디렉터리 명령어(CD, MD, RD) 중
어떤 명령어에 사용되면 디렉터리 완성이 실행됩니다.

완성 코드는 공백이 있거나 일치하는 경로의 주위에 따옴표가 있는
특수 문자를 갖는 파일 이름과 올바르게 작동합니다.
또한 백업을 하는 경우, 행에서 완성 기능을 실행하십시오.
완성이 실행된 지점의 커서 오른편에 있는 문자열은 제거됩니다.
2010/03/12 17:08 2010/03/12 17:08
메일 서버 구축하기 난감하신분들 사용하시면 편할듯 싶습니다.

호스팅 업체에서 추천해주길래 한번 셋팅해봤는데...
나름 편하네요.

클라이언트 4분 셋팅해드렸는데...
클라이언트들도 더이상 메일서버가 말성을 안일으킨다고 감사메일까지 날려줍니다.


링크따라가셔서 가입만하면 됩니다.
링크1 : 학교, 교육단체
링크2 : 비영리기관

기업형, 학교용, 비영리단체 가 있습니다.
기업형은 가입을 안해봐서 모르겠습니다.
(학교용, 비영리단체용으로만 가입을 시켰습니다.)

MX 레코드 설정하시고 CNAME 이나 HTML 로 인증 받으시면 됩니다.
최초설정시 48시간걸리는줄 알았는데 30분정도면 인증되네요

코드값 : google4091bac42bede38c

# MX 레코드 셋팅
                        IN      MX 10  aspmx.l.google.com.
                        IN      MX 20  alt1.aspmx.l.google.com.
                        IN      MX 20  alt2.aspmx.l.google.com.
                        IN      MX 30  aspmx2.googlemail.com.
                        IN      MX 30  aspmx3.googlemail.com.
                        IN      MX 30  aspmx4.googlemail.com.
                        IN      MX 30  aspmx5.googlemail.com.
webmail                IN      CNAME  ghs.google.com

# CNAME 인증방법
# 네임서버에 추가
google4091bac42bede38c  IN      CNAME  google.com

# HTML 인증방법
# 해당 도메인 최상위에 googlehostedservice.html 화일 생성
# 내용은 다음과 같습니다.
google4091bac42bede38c


### 추가사항 2009.06.24
코드값은 밑에 댓글처럼 구글에서 임의로 생성해 줍니다.
적은줄 알았는데 안적어놨었네요 @@
2010/03/12 16:35 2010/03/12 16:35
<?php

//header('Content-Type: application/x-tar');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=asdf.tar.bz2');

passthru('tar cjf - yourfiles');
exit; // 중요
2010/03/12 16:34 2010/03/12 16:34
귀찮게 하는 아이피가 많아 크론에 등록할 간단한 스크립을 만들어 봤습니다..

사실은... 음.. 커널패치가 더 귀찮아서..  '_'.. ㅎㅎ..

#!/bin/csh

if ($#argv < 1) then
    echo "usage : ./ip CN or China";
    exit
endif

wget -O IP.zip http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
unzip IP.zip
cat GeoIPCountryWhois.csv  | grep $argv[1] > iplist
cat iplist | perl -pi -e 's/,/ /g'  | perl -pi -e 's/"/ /g' | awk '{ print "iptables -A INPUT -m iprange --src-range "$1 "-" $2 " -j DROP "}' > run

스크립실행후..  ./run 하시면 해당 국가 아이피를 차단합니다..

커널에 ipt_iprange 모듈이 있어야하구요..

한국 아이피만 허용하고 모두 막으실려면..

DROP 부분을 ACCEPT로 수정하시고..

iptables -A INPUT -s 0/0 -p tcp -m tcp --dport 80 -j DROP
iptables -A INPUT -s 0/0 -p udp --dport 80 -j DROP

이 두줄을 run 에 추가하시면 됩니다..
2010/03/12 16:31 2010/03/12 16:31
리눅스 서버 보안 관리 실무라는 책을 보면 관련 내용이 있습니다.
넥스트웨이라는 업체 방화벽 설정을 보니 책에 나오는 내용과 동일하게 사용을 하더군요
검증은 된셈이죠.


편하게 설정할수 있어서.. 괜찮은것 같습니다.


[root@localhost bin]# cat  My_Firewall
#!/bin/sh

IPTABLES="/sbin/iptables"
IP_ADDR=`grep "IPADDR=" /etc/sysconfig/network-scripts/ifcfg-eth0 | awk -F'=' '{ print $2 }'`

. /etc/init.d/functions

case "$1" in
start|restart)
            echo "$1ing My_Firewall :"
            ;;
        stop)
            echo "$1ping My_Firewall :"
            $IPTABLES -F
            $IPTABLES -X
            $IPTABLES -P INPUT ACCEPT
            $IPTABLES -P FORWARD ACCEPT
            $IPTABLES -P OUTPUT ACCEPT
            exit
            ;;
            *)
            echo $"Usage: $0 {start|restart|stop}"
            exit
            ;;
esac

### 룰셋 초기화
$IPTABLES -F

### 기본정책 설정
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT

### Loopback 트래픽 허용
$IPTABLES -A INPUT -i lo -j ACCEPT

### 자기자신을 소스로 하는 트래픽 차단
$IPTABLES -A INPUT -i eth0 -s $IP_ADDR -j DROP
$IPTABLES -A INPUT -i eth0 -s 127.0.0.0/8 -j DROP

### 상태추적 설정
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPTABLES -A INPUT -p all -m state --state INVALID -j DROP

### 비정상적 tcp-flags 차단
$IPTABLES -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL PSH,FIN -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL URG,PSH,FIN -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,ACK,FIN -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,FIN,PSH -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,FIN,RST -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,FIN,RST,PSH -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,FIN,ACK,RST -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,ACK,FIN,RST,PSH -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP


### 서비스포트 추가/제거를 위해서는, 반드시 아래의 설정만 수정하시기 바랍니다!!!
### $IPTABLES 구문앞의 주석 제거후, My_Firewall 를 재가동하시면 해당포트는 활성화 됩니다.

 
##  관리자 PC가 고정이라면 마스터 IP 로 등록하자.
$IPTABLES -A INPUT  -s 211.47.132.123 -m state --state NEW -j ACCEPT


### ftp servive  20은 데이타 포트이므로 반드시 오픈  21은 FTP 포트를 바꾸어 사용가능
#$IPTABLES -A INPUT -p tcp --sport 1024: --dport 20 -m state --state NEW -j ACCEPT
#$IPTABLES -A INPUT -p tcp --sport 1024: --dport 21 -m state --state NEW -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 20 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 21 -j ACCEPT

 

# 또는 FTP의  IP 대역을 지정도 가능하다.

$IPTABLES -A INPUT -p tcp --sport 1024: --dport 21  -s 211.xx.xxx.0/255.255.255.0  -j ACCEPT

 


### ssh servive  22외에 다른 포트로 변경해서 사용하는게좋다.
$IPTABLES -A INPUT -p tcp --sport 1024: --dport 22 -m state --state NEW -j ACCEPT

 

### smtp servive  멜 서버 돌리지 않으면 막자
$IPTABLES -A INPUT -p tcp --sport 1024: --dport 25 -m state --state NEW -j ACCEPT

 

### dns servive  DNS 돌리지 않으면 막자
#$IPTABLES -A INPUT -p tcp --sport 1024: --dport 53 -m state --state NEW -j ACCEPT
#$IPTABLES -A INPUT -p udp --sport 1024: --dport 53 -m state --state NEW -j ACCEPT

 

### http servive  기본적으로 웹은 돌릴텐데... 열어놓자.
$IPTABLES -A INPUT -p tcp --sport 1024: --dport 80 -m state --state NEW -j ACCEPT

 

### pop3 servive  메일 서버 안쓰면 막죠...
#$IPTABLES -A INPUT -p tcp --sport 1024: --dport 110 -m state --state NEW -j ACCEPT

 

### identd servive
$IPTABLES -A INPUT -p tcp --syn --dport 113 -j REJECT --reject-with tcp-reset

 

### imap servive
#$IPTABLES -A INPUT -p tcp --sport 1024: --dport 143 -m state --state NEW -j ACCEPT

 

### snmp servive
#$IPTABLES -A INPUT -p udp --sport 1024: --dport 161 -m state --state NEW -j ACCEPT

 

### https servive  보안서버 사용한다면 오픈해야 된다.
$IPTABLES -A INPUT -p tcp --sport 1024: --dport 443 -m state --state NEW -j ACCEPT

 

### rsync servive  RSYNC 사용한다면 오픈
$IPTABLES -A INPUT -p tcp --sport 1024: --dport 873 -m state --state NEW -j ACCEPT

 

### mysql servive    Mysql 은 돌릴테니 오픈
$IPTABLES -A INPUT -p tcp --sport 1024: --dport 3306 -m state --state NEW -j ACCEPT

 

### ping servive  핑을 열어 접근 테스트가 가능하도록...
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

 
./My_Firewall start  하면 시작된다..
죽일때는 ./My_Firewall stop 하면 된다.

주의해야 될것은 기본 정책을 DROP 으로 했기 때문에
죽일때  iptables -F  로 죽이면 절대 안된다.....


서버 부팅시 자동 적용하게 할려면..
#serivce iptables save 
를 해준다.


이전까지
iptables-save 와 iptables-restore 를 사용해서 관리했는데
그거도 괜찮은듯 하다...


기본 정책을 허용으로 바꾸고 싶을땐..
#iptables -P INPUT ACCEPT
#iptables -P FORWARD ACCEPT
#iptables -P OUTPUT ACCEPT

를 실행한다.
2010/03/12 16:29 2010/03/12 16:29
#!/usr/bin/perl
use LWP;
use HTTP::Cookies;

$header = HTTP::Headers->new;
$request = HTTP::Request -> new;


$header -> header('User-Agent' => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; User-agent: Mozilla/4.0 (compatible; MSI
E 6.0; Windows NT 5.1; SV1); .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)',
 'Accept-Language' => 'ko',
 'UA-CPU' => 'x86',
 'Accept-Encoding' => 'gzip, deflate',
 'Host' => 'minihp.cyworld.com',
 'Connection' => 'Keep-Alive',
 'Referer' => 'http://minihp.cyworld.com/pims/main/pims_main.asp?tid=홈피아이디',
);

$url = "http://minihp.cyworld.com/pims/main/pims_main4.asp?tid=자신의홈피id&urlstr=";
$i=0;

while(1)
{

    $i++;
    $browser = LWP::UserAgent->new();//브라우져 생성
    $browser -> cookie_jar({}); //쿠키 저장
    $response = $browser->get($url); //브라우져에 요청
    print $response -> as_string; //헤더 및 응답받은 페이지 출력
    $browser -> cookie_jar -> clear;//쿠키삭제
        sleep(15);//15초 텀
}

혼자서 perl 공부해 보다가 혹시 필요한 분들이 계실꺼 같아서 올려봅니다.
perl은 국내 서적이 없더군요 ㅠㅠ
참고로 싸이월드 뿐만 아니라 모든 사이트 다 적용이 됩니다.


$response = $browser->get($url, $header) 해주시면 헤더파일 까지 조작해서 request를 날리게 됩니다.

15초 슬립건 이유는 싸이에서 15초내로 다시 리퀘스트를 날리면 매크로 프로그램 이라고 차단을 해버려서 입니다.

한 ip당 하루최대 300개만 허용합니다. 15초 이후에 리퀘스트를 날려도 해당 ip가 300번 이상 들어오면 무조건 차단입니다.
2010/03/12 16:26 2010/03/12 16:26
jQuery 플러그인(Link1)으로도 존재합니다만...

간단한 스크롤 기능이면 되는데 굳이 플러그인을 쓸필요가 없다고는 하지만
플러그인에서 따로 분리해도 될테니... ㅡ_

여하튼...

function tested() {
  var tested = $('#tested');
  tested.animate({marginTop:'-25px'}, 200, null, function() {
    tested.css('marginTop', '0px').append(tested.find('> li:first'));
  });
}
setInterval('tested()', 3000);

결과 : 다운로드1

----    ----    ----    ----
2010/03/12 16:25 2010/03/12 16:25
리눅스 서버간 파일 복사할 때
보통 scp 등으로 명령어 라인에서 간단하게 복사하는데
방화벽이나 관리자가 scp 명령어를 막아서 못쓸 경우
lftp 로 간단하게 옮길 수 있습니다.
..
lftp 는 옛날 ncftp 를 기능적으로  대체하는 ftp 클라이언트 인데
최근 리눅스 배포판에는 ncftp 가 빠지고 lftp 가 들어가 있습니다.


[[ 사용법 ]]


## 파일 가져올 때 :  home.co.kr 서버의 nonots 계정에 있는 *.tgz 파일들을
내 컴퓨터로 가져올 때

lftp home.co.kr -u nonots,mypwd -e "mget *.tgz;exit"



## 여러파일 업로드 할 때 :  home.co.kr 서버의 nonots 계정으로  *.log 파일들을
업로드 할때

lftp home.co.kr -u nonots,mypwd -e "mput ./*.log;exit"
lftp home4.co.kr -u nonots,mypwd -e "put ./aaa.tgz;exit"



## 방화벽 등으로 패시브 모드 전환 필요할 때 ( set ftp:passive-mode 0 혹은 1 )

lftp home7.co.kr -u nonots,mypwd -e "set ftp:passive-mode 0;put ./aaa.tgz;exit"
2010/03/12 16:23 2010/03/12 16:23
/etc/cron.daily 에 파일을 만들어 두거나

crond 에 등록해서 사용하시면 됩니다.

[기능요약]

1.root 계정으로 전체 디비를 디비별로 백업 가능함
2.옵션으로 테이블 별 백업 가능함.
3.보존 설정 기간 이후 자동 삭제

--------------------------------------------source----------------------------------------------------------

#!/bin/sh

############################################################################
#
#
# 데이터 베이스별 혹은 테이블 별로 백업 받을 수 있도록 변경했으며
# 30 LINE 에 명기된 배열에 속하는 디비들만 테이블 별로 백업 받는다.
#
# 데이터베이스 단위로 받은 파일은 DB. 으로 시작하고
# 테이블 단위는 TB. 으로 시작하는 파일명을 갖는다.
#
# 백업 파일은 dump.gz 로 형성 되며 설정된 보존 기간이 지나면 자동 삭제 된다.
#
#############################################################################

##### SET VARIABLES ############ 전체를 백업 받으려면 여기에 root 계정을 입력한다.
DBHOST="yourhost"
DBUSER="yourid"
DBPWD="yourpassword"

#백업 경로
BACKUPDIR="/home/your_backup_dir/"
#로그 작성 경로
LOGDIR="/home/your_backup_log_dir/"
#로그 파일 앞에 붙을 특정 텍스트
LOGNAME="log_"

###### SET DB NAMES which BACKUP by TABLES ###### 여기 표시된 DB 들은 테이블 별로 백업된다.
DB_TBARR=(dbname1 dbname2 dbname3)

#백업 옵션을 원하는 대로 설정
#routine 옵션은 5버전 이상에서만 사용(function 등을 백업함)
OPTIONS="--skip-comments --default-character-set=euckr --routines"

##### SET CHARGE LIMIT ########## 백업 파일 저장 기간(일단위)
CHARGE_LMT=3

##### DELETE OLD_BACKUP FILES #######
find ${BACKUPDIR} -name "*.gz" -mtime +${CHARGE_LMT} -exec rm -rf {} \;

##### START LOG CREATE ##########
YMD_S=`date +%Y%m%d%H%M%S`
touch ${LOGDIR}${LOGNAME}${YMD_S}.start

##### DB LIST GET ###############
#IF YOU WANT TO EXCEPT SOME DATABASE ADD THIS
#grep -v Database | grep -v somename | grep -v somename`
#

#grep -v dbname 하면 백업 시 제외 된다.

RESULT=`mysql -u$DBUSER -p$DBPWD -h$DBHOST -e "show databases" | grep -v Database`

for DB in $RESULT; do

    sw=0
    ##### compare DB to TBARR #####
    for i in ${DB_TBARR[@]}; do
        if [ $i = $DB ]; then
            let "sw=sw+1"
        fi
        done

    if [ $sw = 0 ]; then
        # BACKUP by DB
        FNAME=${BACKUPDIR}DB.${DB}_${YMD_S}.dump
        #echo $FNAME
        touch $FNAME
        echo "set foreign_key_checks=0;" >> $FNAME
        mysqldump -u$DBUSER -p$DBPWD -h$DBHOST $OPTIONS $DB >> $FNAME
        echo "set foreign_key_checks=1;" >> $FNAME
        gzip --rsyncable $FNAME

    else
        # BACKUP by TABLES
                RESULT_TB=`mysql -u$DBUSER -p$DBPWD -h$DBHOST $DB -e"show tables" | grep -v heap | grep -v Tables_in `
                for TB in $RESULT_TB; do

                        FNAME=${BACKUPDIR}TB.${DB}.${TB}_${YMD_S}.dump
            #echo $FNAME
            touch $FNAME
            echo "set foreign_key_checks=0;" >> $FNAME
            mysqldump -u$DBUSER -p$DBPWD -h$DBHOST $OPTIONS $DB $TB >> $FNAME
            echo "set foreign_key_checks=1;" >> $FNAME
            gzip --rsyncable $FNAME

                done        
    fi

done

##### END LOG CREATE ###########
YMD_E=`date +%Y%m%d%H%M%S`

touch ${LOGDIR}${LOGNAME}${YMD_E}.end
2010/03/12 16:22 2010/03/12 16:22
javascript:alert(document.cookie);
javascript:if (tmp = prompt("쿠키변수명=쿠키변수값; 식으로 입력해주세요.”,document.cookie)) { document.cookie=tmp;history.go(0); }
제가 쓰는방법 ^^; 주소입력창에 넣기쉽게 즐겨찾기에넣어두면 임시로 쓰긴 좋더군요..

다른방법 그냥 주소창에 javascript:alert(document.cookie);  넣고, 엔터쳐보세요.
2010/03/12 16:19 2010/03/12 16:19
모니터가 16:9 길죽한 거니까
창을 세로로 나누어서 쓰니까 편하군요..
..
vi 에디터에서

ctrl + w  v  하면 수직 창이 나누어진다.
ctrl + w  s 는 수평나누기이다.(별로 쓸일이 없다)
..
나누어서
ctrl + w  w 하면 나누어진 창으로 커서가 이동한다.
..
창 크기 조절은..
수평.. 나누기 했으면..

ctrl + w  N+  하면 N 만큼 커진다..
예를 들면 ctrl+w 를 한뒤에 숫자 3 과 플러스를 누르면 3 만큼 창이 커진다.
마이너스 하면 작아지고..
..
만약 수직 나누기에서 창크기 조절은..
N>.. N< 와 같다.. 즉 ctlr+w 누른후 숫자 3 과 꺽은 괄호 < 나 > 를
누르면 크기가 조절이 된다
..
창 연 후에  다른 파일 열려면..
창 명령모드
:e  aaa.txt  하고 하든가..

파일명을 몰라서 파일목록 보이게 하려면..
:e [디렉토리] 와 같이 한다.
만약 현재 디렉토리의 파일 목록 보려면..
:e .
와 같이 점을 찍으면 된다.
..
다 아는 내용이라구요?
2010/03/12 16:14 2010/03/12 16:14
많은 분들이 포스팅 하시고..
예전부터 가라로 작업을 많이 했던 부분인데

최근 작업하는 업체중 까다로운 부분이 있어
작업후에 올려봅니다..

사용법은 아래와 같으며 주 사용문구는

 $("input[type=file]").filestyle({
  image: "../img/search_bt.gif",
  imageheight : 18,
  imagewidth : 90
 });

입니다.


그외에 width가 들어가지만 소스내용중 어차피 마진레프트로 빼는 부분이 있기에
소스상에선 삭제처리 해두었습니다.



<script src='../jq/jquery.js' type='text/javascript'></script>
<script src='../jq/jquery..js' type='text/javascript'></script>

<script>
$(function(){ 
 $("input[type=file]").filestyle({
 image: "../img/search_bt.gif",
 imageheight : 18,
 imagewidth : 90
 });
});
</script>

<input type="file" name="file01" size="10">
2010/03/12 16:10 2010/03/12 16:10

  URLScan은 IIS 웹 서버로 보내는 모든 요청을 검열하여 관리자가 정의한 규칙을 기준으로 필터링한다. 이것은 유효한 요청에만 응답하도록 함으로써 서버의 보안성을 향상시킴 

URLScan 설치

URLScan을 설치하려면 다음 MSDN(Microsoft Developer Network) 웹 사이트를 방문하십시오.
http://msdn2.microsoft.com/en-us/library/aa302368.aspx (http://msdn2.microsoft.com/en-us/library/aa302368.aspx)
자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
307608  (http://support.microsoft.com/kb/307608/ ) INFO: IIS에서 URLScan 사용

URLScan.ini 파일 수정

URLScan의 모든 구성은 %WINDIR%\System32\Inetsrv\URLscan 폴더에 있는 URLScan.ini 파일을 통해 수행됩니다. URLScan을 구성하려면 메모장과 같은 텍스트 편집기에서 이 파일을 열고 적절히 변경한 후 파일을 저장합니다.

참고 변경 사항을 적용하려면 인터넷 정보 서비스(IIS)를 다시 시작해야 합니다. 이 작업을 신속히 수행하는 한 가지 방법은 명령 프롬프트에서 IISRESET 명령을 실행하는 것입니다.

URLScan.ini 파일에는 다음과 같은 구역이 포함되어 있습니다.
  • [Options]: 이 구역에서는 일반 URLScan 옵션을 설명합니다.
  • [AllowVerbs] 및 [DenyVerbs]: 이 구역에서는 URLScan이 허용하는 동사(HTTP 메서드라고도 함)를 정의합니다.
  • [DenyHeaders]: 이 구역에서는 HTTP 요청에 허용되지 않는 HTTP 헤더 목록을 제공합니다. 이 절에 나열된 HTTP 헤더 중 하나가 HTTP 요청에 들어 있는 경우 URLScan은 해당 요청을 거부합니다.
  • [AllowExtensions] 및 [DenyExtensions]: 이 구역에서는 URLScan이 허용하는 파일 확장명을 정의합니다.
  • [DenyURLSequences]: 이 구역에서는 HTTP 요청에서 허용되지 않는 문자열 목록을 제공합니다. URLScan은 이 구역에 있는 문자열이 포함된 HTTP 요청을 거부합니다.
이 문서에서는 각 구역을 자세히 설명합니다.

[Options] 구역

[Options] 구역에서는 많은 URLScan 옵션을 구성할 수 있습니다. 이 구역의 각 줄은 다음 형식으로 되어 있습니다.
OptionName=OptionValue
사용 가능한 옵션과 기본값은 다음과 같습니다.
  • UseAllowVerbs=1

    기본적으로 이 옵션은 1로 설정됩니다. 이 옵션을 1로 설정하면 URLScan은 [AllowVerbs] 구역에 나열된 동사를 사용하는 HTTP 요청만 허용합니다. URLScan은 이러한 동사를 사용하지 않는 요청은 차단합니다. 이 옵션을 0으로 설정하면 URLScan은 [AllowVerbs] 구역을 무시하고 대신 [DenyVerbs] 구역에 나열된 동사를 사용하는 요청만 차단합니다.
  • UseAllowExtensions=0

    기본적으로 이 옵션은 0으로 설정됩니다. 이 옵션을 0으로 설정하면 URLScan은 [DenyExtensions] 구역에 나열된 파일 확장명에 대한 요청은 차단하지만 다른 모든 파일 확장명에 대한 요청은 허용합니다. 이 옵션을 1로 설정하면 URLScan은 [AllowExtensions] 구역에 나열된 확장명을 가진 파일에 대한 요청만 허용하고 다른 모든 파일에 대한 요청은 차단합니다.
  • NormalizeUrlBeforeScan=1

    IIS는 URL이 인코딩된 요청을 받습니다. 즉, 이것은 바로 뒤에 특정 숫자가 오는 % 기호로 특정 문자를 대체할 수 있다는 의미입니다. 예를 들어, %20은 공백에 해당하므로 http://myserver/My%20Dir/My%20File.htm에 대한 요청은 http://myserver/My Dir/My File.htm에 대한 요청과 동일합니다. 정규화는 URL 인코딩된 요청을 디코딩하는 프로세스입니다. 기본적으로 이 옵션은 1로 설정됩니다. NormalizeUrlBeforeScan 옵션이 1로 설정된 경우 URLScan은 디코딩된 요청을 분석합니다. 0으로 설정된 경우 URLScan은 디코딩되지 않은 요청을 분석합니다. 이 옵션을 0으로 설정하면 URLScan은 특정한 종류의 공격을 차단하는 기능을 수행할 수 없습니다.
  • VerifyNormalization=1

    % 기호 자체가 URL이 인코딩될 수 있기 때문에 공격자는 기본적으로 이중 인코딩된 정교하게 만든 요청을 서버에 제출할 수 있습니다. 이런 일이 발생하면 IIS는 유효하지 않은 것으로 거부될 요청을 받아 들일 수도 있습니다. 기본적으로 이 옵션은 1로 설정됩니다. VerifyNormalization 옵션이 1로 설정된 경우 URLScan은 URL을 두 번 정규화합니다. 첫번째 정규화 후의 URL이 두번째 정규화 후의 URL과 다를 경우 URLScan은 요청을 거부합니다. 이렇게 하면 이중 인코딩된 요청에 따른 공격을 막을 수 있습니다.
  • AllowHighBitCharacters=0

    기본적으로 이 옵션은 0으로 설정됩니다. 이 옵션을 0으로 설정하면 URLScan은 비 ASCII 문자를 포함하고 있는 요청을 거부합니다. 이렇게 하면 특정 종류의 공격을 방지할 수는 있지만 정규 파일(예: 영문 이름이 아닌 파일)에 대한 요청도 차단할 수 있습니다.
  • AllowDotInPath=0

    기본적으로 이 옵션은 0으로 설정됩니다. 이 옵션을 0으로 설정하면 URLScan은 마침표(.)가 여러 개 있는 모든 요청을 거부합니다. URL의 경로 정보나 쿼리 문자열 부분에 안전한 파일 확장명을 넣어 위험한 파일 확장명에 대한 요청을 가장하려는 시도가 방지됩니다. 예를 들어, 이 옵션을 1로 설정한 경우 PATH_INFO 영역에 HTML 페이지의 이름을 가진 실행 파일(.exe)에 대한 요청이 있으면 URLScan은 HTML 페이지에 대한 요청으로 간주하기 때문에 http://servername/BadFile.exe/SafeFile.htm에 대한 요청을 허용할 수 있습니다. 이 옵션을 0으로 설정하면 URLScan은 마침표가 포함된 디렉터리에 대한 요청도 거부할 수 있습니다.
  • RemoveServerHeader=0

    기본적으로 웹 서버는 모든 응답에서 어떤 웹 서버 소프트웨어를 실행 중인지 나타내는 헤더를 반환합니다. 이렇게 하면 공격자는 서버에서 IIS가 실행 중임을 확인한 다음 다른 웹 서버를 위해 설계된 방법을 사용하여 IIS 서버를 공격하는 대신 알려진 IIS 문제를 공격할 수 있기 때문에 서버의 보안 문제가 증가할 수 있습니다. 기본적으로 이 옵션은 0으로 설정됩니다. RemoveServerHeader 옵션을 1로 설정하면 서버에서는 IIS 서버로 식별하는 헤더를 보내지 않게 됩니다. RemoveServerHeader를 0으로 설정하면 이 헤더가 보내집니다.
  • AlternateServerName=(기본적으로 지정되지 않음)

    RemoveServerHeader를 0으로 설정하면 AlternateServerName 옵션에서 문자열을 지정하여 서버 헤더에서 전달되는 내용을 지정할 수 있습니다. RemoveServerHeader를 1로 설정하면 이 옵션이 무시됩니다.
  • EnableLogging=1

    기본적으로 URLScan은 %WINDIR%\System32\Inetsrv\URLScan에 차단되는 모든 요청의 전체 로그를 저장합니다. 이 로그를 저장하지 않으려면 EnableLogging을 0으로 설정합니다.
  • PerProcessLogging=0

    기본적으로 이 옵션은 0으로 설정됩니다. 이 옵션을 1로 설정하면 URLScan은 URLScan.dll을 호스트하는 각 프로세스에 대해 별도의 로그를 만들고 0으로 설정하면 모든 프로세스가 같은 파일에 기록됩니다.
  • PerDayLogging=1

    기본적으로 이 옵션은 1로 설정됩니다. 이 값을 1로 설정하면 URLScan은 매일 새 로그 파일을 만들고 각 로그 파일 이름은 Urlscan.MMDDYY.log가 됩니다. 여기서 MMDDYY는 로그 파일의 날짜입니다. 이 값을 0으로 설정하면 날짜에 관계없이 모든 로깅이 같은 파일에 저장됩니다.
  • AllowLateScanning=0

    기본적으로 이 옵션은 0으로 설정됩니다. 이 옵션을 0으로 설정하면 URLScan은 높은 우선 순위의 필터로 실행됩니다. 즉, 서버에 설치되어 있는 다른 ISAPI(Internet Server Application Programming Interface) 필터보다 먼저 실행됩니다. 이 옵션을 1로 설정하면 URLScan은 낮은 우선 순위의 필터로 실행되므로 URLScan이 분석을 수행하기 전에 다른 필터가 URL을 수정할 수 있습니다. FrontPage Server Extensions(FPSE)에서는 이 옵션을 1로 설정해야 합니다.
  • RejectResponseUrl=(기본적으로 지정되지 않음)

    이 옵션은 URLScan이 요청을 차단할 때 실행되는 파일에 대한 가상 경로를 지정합니다. 이 옵션을 사용하면 차단된 요청에 대해 클라이언트에 보내는 응답을 사용자 지정할 수 있습니다. RejectResponseUrl을 /Path/To/RejectResponseHandler.asp처럼 해당 파일에 대한 가상 경로로 지정해야 합니다. Active Server Pages(ASP) 페이지와 같이 URLScan이 일반적으로 차단하는 파일을 지정할 수 있습니다. 해당 페이지에서 다음 서버 변수를 사용할 수도 있습니다.
    • HTTP_URLSCAN_STATUS_HEADER: 요청을 차단한 이유를 지정합니다.
    • HTTP_URLSCAN_ORIGINAL_VERB: 차단된 요청의 원래 동사(예: GET, POST, HEAD 또는 DEBUG)를 지정합니다.
    • HTTP_URLSCAN_ORIGINAL_URL: 차단된 요청의 원래 URL을 지정합니다.
    RejectResponseUrl/~*의 특수한 값으로 설정하면 URLScan은 로깅 전용 모드를 사용합니다. 따라서 IIS는 모든 요청을 제공할 수 있지만 일반적으로 차단되는 요청에 대해 URLScan 로그에 항목을 추가합니다. 이것은 URLScan.ini 파일을 테스트하려는 경우 유용합니다.

    RejectResponseUrl의 값을 지정하지 않으면 URLScan은 /<Rejected-By-UrlScan>의 기본값을 사용합니다.

  • UseFastPathReject=0

    기본적으로 이 옵션은 0으로 설정됩니다. 이 옵션을 1로 설정하면 URLScan은 RejectResponseUrl 설정을 무시하고 즉시 404 오류 메시지를 브라우저로 반환합니다. 이것은 RejectResponseUrl을 처리하는 것보다 빠르지만 많은 로깅 옵션으로 허용되지 않습니다. 이 옵션을 0으로 설정하면 URLScan은 RejectResponseUrl 설정을 사용하여 요청을 처리합니다.

[AllowVerbs] 및 [DenyVerbs] 구역

[AllowVerbs][DenyVerbs] 구역은 URLScan이 허용하는 HTTP 동사(메서드라고도 함)를 정의합니다. 일반적인 HTTP 동사로는 GET, POST, HEAD 및 PUT 등이 있습니다. FPSE와 WebDAV(Web Distributed Authoring and Versioning) 같은 다른 응용 프로그램은 추가 동사를 사용합니다.

[AllowVerbs][DenyVerbs] 구역은 모두 같은 구문을 사용합니다. 이들은 HTTP 동사 목록으로 구성되어 있으며 각 동사는 자체 줄에 나타납니다.

URLScan은 [Options] 구역의 UseAllowVerbs 옵션 값에 따라 어느 구역을 사용할지 결정합니다. 기본적으로 이 옵션은 1로 설정됩니다. UseAllowVerbs를 1로 설정하면 URLScan은 [AllowVerbs] 구역에 나열된 동사를 사용하는 요청만 허용합니다. 이 동사 중 하나를 사용하지 않는 요청은 거부됩니다. 이 경우에 [DenyVerbs] 구역은 무시됩니다.

UseAllowVerbs를 0으로 설정하면 URLScan은 [DenyVerbs] 구역에 명시적으로 나열된 동사를 사용하는 요청을 거부합니다. 이 구역에 나타나지 않는 동사를 사용하는 요청은 허용됩니다. 이 경우에 URLScan은 [AllowVerbs] 구역을 무시합니다.

[DenyHeaders] 구역

클라이언트가 웹 서버에서 페이지를 요청하면 일반적으로 요청에 대한 추가 정보가 들어 있는 일부 HTTP 헤더를 보냅니다. 일반적인 HTTP 헤더는 다음과 같습니다.
  • Host:

    이 헤더는 웹 서버의 이름을 포함하고 있습니다.
  • Accept:

    이 헤더는 클라이언트가 처리할 수 있는 파일 형식을 정의합니다.
  • User-Agent:

    이 헤더는 페이지를 요청하는 브라우저 이름을 포함하고 있습니다.
  • Authorization:

    이 헤더는 클라이언트가 지원하는 인증 방법을 정의합니다.
클라이언트는 추가 정보를 지정하기 위해 서버에 다른 헤더를 보낼 수 있습니다.

[DenyHeaders] 구역에서는 URLScan이 거부할 HTTP 헤더를 정의합니다. URLScan은 이 구역에 나열된 헤더를 포함하고 있는 요청을 받으면 요청을 거부합니다. 이 구역은 HTTP 헤더 목록으로 구성되어 있으며 각 헤더는 자체 줄에 나타납니다. 헤더 이름 다음에는 콜론(:)이 와야 합니다(예: Header-Name:).

[AllowExtensions] 및 [DenyExtensions] 구역

대부분의 파일에는 파일 형식을 나타내는 파일 확장명이 있습니다. 예를 들어, 일반적으로 Word 문서의 파일 이름은 .doc, HTML 파일 이름은 .htm이나 .html, 일반 텍스트 파일 이름은 .txt로 끝납니다. [AllowExtensions][DenyExtensions] 구역에서 URLScan이 차단하는 확장명을 정의할 수 있습니다. 예를 들어, 웹 사용자가 시스템에서 응용 프로그램을 실행하는 것을 방지하려면 .exe 파일에 대한 요청을 거부하도록 URLScan을 구성할 수 있습니다.

[AllowExtensions][DenyExtensions] 구역은 모두 같은 구문을 사용합니다. 이들은 파일 확장명 목록으로 구성되어 있으며 각 확장명은 자체 줄에 나타납니다. 확장명은 마침표(.)로 시작합니다(예: .ext).

URLScan은 [Options] 구역의 UseAllowExtensions 값에 따라 어느 구역을 사용할지 결정합니다. 기본적으로 이 옵션은 0으로 설정됩니다. UseAllowExtensions를 0으로 설정하면 URLScan은 [DenyExtensions] 구역에 나열된 파일 확장명을 사용하는 요청만 거부합니다. 이 구역에 나열되지 않은 파일 확장명은 허용됩니다. [AllowExtensions] 구역은 무시됩니다.

UseAllowExtensions를 1로 설정하면 URLScan은 [AllowExtensions] 구역에 명시적으로 나열되지 않은 파일 확장명에 대한 요청을 거부합니다. 이 구역에 나열된 파일 확장명에 대한 요청만 허용됩니다. [DenyExtensions] 구역은 무시됩니다.

확장명이 없는 파일에 대한 요청을 허용하도록 URLScan을 구성하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
312376  (http://support.microsoft.com/kb/312376/ ) HOWTO: IIS에서 Null 확장명을 포함하는 요청을 허용하도록 URLScan 구성

[DenyUrlSequences] 구역

URL에서 특정 문자 시퀀스가 포함된 요청을 차단하도록 URLScan을 구성할 수 있습니다. 예를 들어, 디렉터리 액세스 보안 문제에 자주 사용되는 두 개의 연속된 마침표(..)가 포함된 요청을 차단할 수 있습니다. 문자 시퀀스를 차단하도록 지정하려면 [DenyUrlSequences] 구역의 해당 줄에 이 시퀀스를 넣습니다.

문자 시퀀스를 추가해도 Microsoft Exchange용 Outlook Web Access(OWA)에는 나쁜 영향을 미치지 않습니다. OWA에서 메시지를 열면 서버에서 요청한 URL에 메시지의 제목 줄이 포함되어 있습니다. URLScan.ini 파일은 % 기호와 & 기호가 포함된 요청을 차단하기 때문에 사용자가 "Sales increase by 100%" 또는 "Bob & Sue are coming to town" 같은 제목 줄이 있는 메시지를 열려고 하면 404 오류 메시지가 표시됩니다. 이 문제를 해결하려면 [DenyUrlSequences] 구역에서 이 시퀀스를 제거하면 됩니다. 이렇게 하면 문제를 일으키는 요청이 서버에 도달할 가능성이 있기 때문에 보안이 약화됩니다.

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
325965  (http://support.microsoft.com/kb/325965/ ) URLScan 도구로 인해 Outlook Web Access에 문제가 발생할 수 있다

IIS 종속 응용 프로그램에서 사용하도록 URLScan 구성

Exchange, FPSE 및 Microsoft Visual Studio .NET과 같은 응용 프로그램은 적절한 기능을 수행하기 위해 IIS에 의존합니다. 이러한 응용 프로그램은 URLScan을 올바르게 구성하지 않으면 제대로 작동하지 않을 수 있습니다.

이러한 응용 프로그램에서 제대로 작동하도록 URLScan을 구성하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
309508  (http://support.microsoft.com/kb/309508/ ) XCCC: Exchange 환경의 IIS 잠금 및 URLscan 구성
309394  (http://support.microsoft.com/kb/309394/ ) HOWTO: FrontPage 2000에서 URLScan 사용
318290  (http://support.microsoft.com/kb/318290/ ) HOWTO: FrontPage 2002에서 URLScan 사용
310588  (http://support.microsoft.com/kb/310588/ ) PRB: Security Toolkit로 인해 Visual Studio .NET에서 ASP.NET 디버깅이 수행되지 않는다

출처 : http://support.microsoft.com/kb/326444/
2010/03/12 15:46 2010/03/12 15:46
사용자 삽입 이미지
2010/03/10 23:08 2010/03/10 23:08

TextInput과 TextArea의 속도 향상


한국 Adobe Flex 사이트의 블로그에 나와있는 힌트를 보고 실제로 한번 시도해 보았는데, 확실히 속도의 향상이 있네요.

"간단하게도 TextField의 alwaysShowSelection 이란 프로퍼티 값이 기본적으로는 false로 되어있는데 이것을 true로 바꿔주면 간단하게 해결됩니다."

지금까지 해결방법으로 제시되었던 것은 frame rate을 작게 바꾸는 것이었는데, 의외로 간단한 곳에 해결방법이 있었네요.

간단한 것이지만 샘플 코드를 원하시는 분들이 계시더군요.  몇몇 분들이 원하시는 것 같아서 이곳에 올려 봅니다. MXML 파일을 올립니다.


MyTextArea.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:TextArea xmlns:mx="http://www.adobe.com/2006/mxml"
    initialize="init()">
 <mx:Script>
  <![CDATA[
   private function init(): void {
    this.textField.alwaysShowSelection = true;
   }
  ]]>
 </mx:Script>
</mx:TextArea>

2010/03/10 22:21 2010/03/10 22:21
리눅스 서버간 파일 복사할 때
보통 scp 등으로 명령어 라인에서 간단하게 복사하는데
방화벽이나 관리자가 scp 명령어를 막아서 못쓸 경우
lftp 로 간단하게 옮길 수 있습니다.
..
lftp 는 옛날 ncftp 를 기능적으로  대체하는 ftp 클라이언트 인데
최근 리눅스 배포판에는 ncftp 가 빠지고 lftp 가 들어가 있습니다.


[[ 사용법 ]]


## 파일 가져올 때 :  home.co.kr 서버의 nonots 계정에 있는 *.tgz 파일들을
내 컴퓨터로 가져올 때

lftp home.co.kr -u nonots,mypwd -e "mget *.tgz;exit"



## 여러파일 업로드 할 때 :  home.co.kr 서버의 nonots 계정으로  *.log 파일들을
업로드 할때

lftp home.co.kr -u nonots,mypwd -e "mput ./*.log;exit"
lftp home4.co.kr -u nonots,mypwd -e "put ./aaa.tgz;exit"



## 방화벽 등으로 패시브 모드 전환 필요할 때 ( set ftp:passive-mode 0 혹은 1 )

lftp home7.co.kr -u nonots,mypwd -e "set ftp:passive-mode 0;put ./aaa.tgz;exit"
2010/03/10 21:00 2010/03/10 21:00
Friday, November 24, 2000
  
A . 아래 내용은 정원혁씨 사이트에 참조한 글입니다. 저도 이러한 경우가 발생 해서 복구한적이이 있네요. 어려울때는 Books Online 을 참조 하시면 많은 도움이 됩니다.

1. *.mdf 를 비롯한 파일을 날렸다면 전혀 방법이 없습니다.
2. drop1 database 를 실행했거나 EM에서 database를 삭제했다면 역시 전혀 방법이 없습니다.
3. SQL 서버를 Uninstall 했다면 가능합니다. 이때는 *.mdf, *.ndf, *.ldf 등이 남아 있기 때문입니다.이 때는 바로 아래에 있는 스크립트를 참고하여 디비를 하나씩 살려내면 됩니다.
pubs 디비를 가지고 먼저 연습을 하고 하십시요.

sp_helpdb pubs
select * from pubs..titles
sp_detach_db pubs

sp_attach_db pubs, 'c:temppubs.mdf','c:temppubs_log.ldf'

sp_attach_single_file_db pubs, 'c:temppubs.mdf'
-----------
sp_helpdb mydb2
sp_detach_db mydb2

sp_attach_single_file_db mydb2, 'f:mssql7datamydb2.mdf'
,'f:mssql7datad2.ndf'
,'f:mssql7datamydb2_log.ldf'
2010/03/01 02:29 2010/03/01 02:29
1. master DB 일단 연결한다.

2. 아래 구문 실행

Restore Database TTT
from disk = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\TTT.bak'
with
move 'SFK_Data' to 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\data\TTT_Data.MDF',
move 'SFK_Log'  to 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\data\TTT_Log.LDF'
2010/03/01 02:28 2010/03/01 02:28