태터툴즈 : 해당되는 글 24건

2006/05/09 >> 태터툴즈 1.0.5 플러그인 (58)
2006/03/22 >> 태터툴즈 방문자 그래프 플러그인 (9)
2005/10/04 >> 태터툴즈에 FTP로 첨부파일 올리기 (11)
2005/09/13 >> 태터툴즈 + BBClone의 10원짜리 팁 (5)
2005/09/13 >> 태터툴즈 답글 + 기타등등을 RSS로 (21)
2005/08/16 >> Konfabulator Widget 만들기 (26)
2005/08/16 >> 태터툴즈 답글 삭제부분 수정 (8)
2005/08/15 >> 태터툴즈 0.96 위치로그 업데이터 (9)
2005/08/13 >> 태터툴즈 0.96용 노가다 유틸 (5)
2005/08/12 >> 태터툴즈용 간단한 통계 그래프 (9)
2005/08/07 >> This Page Is Valid XHTML 1.0 Transitional! (8)
2005/08/07 >> 태터툴즈 업데이트 (7)
2005/07/15 >> MSN으로 태터툴즈 댓글 알림받기 (16)
2005/06/12 >> 태터툴즈 고쳐쓰기 #12 - 답글에 국가 아이콘 표시하기 (29)
2005/06/04 >> 태터툴즈용 Google Sitemap (12)
2005/04/02 >> 태터툴즈 고쳐쓰기 #11 - UTF-8 RSS 읽기, 트랙백 보내기 (10)
2005/03/24 >> 태터툴즈 검색어 통계 (34)
2005/03/18 >> 단어사용 빈도 분석 (6)
2005/02/24 >> 태터툴즈 고쳐쓰기 #10 - 최근 리퍼러 보여주기 (3)
2005/01/30 >> 태터툴즈 고쳐쓰기 #9 - 답글달리면 SMS 통보 (34)
2005/01/21 >> 태터툴즈 고쳐쓰기 #8 - nofollow, whois 연결 (4)
2005/01/04 >> 태터툴즈 고쳐쓰기 #7 - 글쓰기 화면 넓게 쓰기 (2)
2005/01/01 >> 태터 1.0 Classic에 미니위니 비쥬얼에디터 붙이기 (85)
2004/11/18 >> 태터툴즈 고쳐쓰기 #6 - RSS리더에서 네이버 이미지 보기 (12)

태터툴즈 1.0.5 플러그인

태터툴즈 1.0.5 릴리즈에 맞추어 만든 플러그인 4종세트.. 당연히 1.0.5 이상에서만 동작하며 각 플러그인들의 라이선스는 GPL에 따르니 더 좋게 고쳐서 나눠쓰세요..;

로봇의 방문횟수 제외 [Download - ExcludeRobotsCounter.zip]

기능
많이 알려진 로봇의 이름을 미리 입력해서 로봇이 방문했을때는 방문자 카운터를 증가시키지 않는다.
설명
플러그인 관리자 화면에서 플러그인을 활성화 시키면 동작한다. 봇의 이름을 추가하거나 삭제할때는 index.php 파일을 열어 $robots 배열에 봇의 이름을 편집해주면 된다. 추후에 User-agent 필터링 기능이 추가되기 전까지 임시로 사용되는 플러그인.

피드버너 리다이렉터 [Download - FeedBurnerRedirector.zip]

기능
태터툴즈의 RSS 주소로 접속하면 피드버너의 피드 주소로 이동시켜준다. 스킨의 [##_rss_url_##] 치환자도 피드버너의 URL로 바뀐다.
설명
사용하는 블로그 식별자가 crizin 이라면 http://feeds.feedburner.com/crizin 주소로 이동된다. 블로그 식별자와 피드버너 ID가 다른 경우에는 index.php 파일 10번째줄의 "http://feeds.feedburner.com/{$blog['name']}" 부분을 "http://feeds.feedburner.com/xxxxxx" 같이 변경해줘야 한다. 피드버너 설정에서 Original Feed 주소는 http://crizin.net/rss 같이 원래 RSS 주소를 입력해두면 된다.

전체피드 읽어오기 [Download - GetEntireFeed.zip]

기능
네이버의 모든 블로그, 이글루스의 블로그중 피드 부분공개를 선택한 블로그에 대해 본문 전체를 보여준다.
설명
플러그인을 활성화 시키면 피드가 업데이트 될때마다 직접 블로그에 접속해 본문을 읽어와 RSS의 본문 대신 저장하게 된다. 따라서 피드 업데이트 속도가 느려질 수 있으며 특이한 스킨을 사용하는 이글루스 블로그에 대해서는 본문을 제대로 읽어오지 못할 가능성도 있다.
주의
부분공개된 피드의 전문을 강제로 읽어와 리더에 저장하는건 블로거의 의도에 반하는 행동이 될 수 있다. 개인적인 편의가 아닌 다수에게 서비스를 제공하는 블로그에서 이 플러그인을 사용하는건 문제의 소지가 될 수 있음에 주의할 것.
변경내역
1.0.1 - 네이버의 글에서 이미지에 달려있는 onload 이벤트를 제거해서 스크립트 오류가 뜨지 않게 함
1.0.2 - 파란의 RSS도 지원 (포스트 하나 가져오려면 두번 접속을 해야해서 매우 느림)
1.0.3 - 네이버 블로그 출력부분 변경사항 반영
1.0.4 - 파란 블로그 출력부분 변경사항 반영
1.0.5 - 네이버 블로그 출력부분 변경사항 반영, 이글루스 포스트는 무조건 읽어오도록 수정

리퍼러 로그 정리 [Download - RefererURLBeautifier.zip]

기능
통계보기 » 리퍼러 통계를 봅니다 메뉴에서 리퍼러 로그를 읽기 쉽게 바꿔주고 검색어가 포함된 경우 검색어를 눈에 잘 띄게 표시해 준다.
설명
리퍼러를 저장하는 공간(255bytes)의 제약으로 인해 매우 긴 URL의 경우 한글이 깨지는 등의 문제가 있을 수 있다. 그리고 index.php 파일의 15번째줄 맨 앞의 //를 제거하면 각 도메인의 favicon을 불러다 표시해준다.
변경내역
1.0.1 - Eolin.com 검색어 표시가 안되는 문제 수정
1.0.2 - Baidu.com 검색어 표시가 안되는 문제 수정
1.0.3 - %uXXXX 형식의 문자 해석해서 보여주도록 수정
1.0.4 - http://images.google.co.kr 등에서 유입되는 검색어가 제대로 추출되지 않는 문제 수정

태터툴즈 방문자 그래프 플러그인

예전에 만들었던 태터툴즈 클래식용 그래프 프로그램을 태터툴즈 1.0.2 이상에서 쓸 수 있는 플러그인으로 제작..

대충 이런 모양으로 출력된다. 사용법은,

  1. 플러그인을 plugins 디렉토리에 설치 (그리고 환경설정에서 활성화 시켜줌)
  2. VisitorStatisticsGraph 디렉토리의 퍼미션을 707 정도로 조정 (chmod 707 VisitorStatisticsGraph)
    (그래프가 생성되지 않고 자꾸 엑박으로 뜬다면 이부분을 의심해봐야함)
  3. 플러그인의 index.php 파일을 열어서 5째줄부터 나오는 그래프 설정을 원하는 모양대로 맞춘다
  4. 스킨의 적당한 곳에 [##_VisitorStatistics_##] 이라는 태그를 삽입한다

그래프는 하루에 한번만 갱신되므로 설정값을 변경한 후에는 graph.png 파일을 삭제하고 다시 블로그 페이지를 열어서 graph.png 파일을 생성해야 한다.

태터툴즈에 FTP로 첨부파일 올리기

태터툴즈 포럼에 뎅엽이님 질문을 보고 하나쯤 있으면 좋겠다는 생각이 들어 만들었다. 원래는 Flash8에 추가된 업로드 기능으로 폼나게 만들어볼 생각이었는데 거친마루님의 예제를 한참 보고있으니 머리위에 OTL이라는 말풍선이 뜨면서 기운이 확 빠져버리는 현상이;; 그리하여 결국 FTP로 업로드한 파일을 태터툴즈에 붙여주는 원시적인 방식을 택하게 됐음.

upload.php

Version 2006.01.04.01

사용법,

  1. 위의 파일을 내려받아 태터툴즈 홈 디렉토리에 올려놓는다.
  2. 태터툴즈 홈 디렉토리에 upload 라는 디렉토리를 만들고 FTP로 사진이나 기타 파일을 올려놓는다.
    (upload가 아닌 다른 디렉토리 이름을 쓰고싶으면 upload.php 파일의 4번째줄을 수정한다)
  3. 1번에서 업로드한 upload.php 파일을 호출하면 글목록과 업로드한 파일 목록이 보인다 (관리자 로그인 필요)
  4. 파일을 첨부할 포스트를 선택한다. 새로운 포스트로 붙이고 싶으면 (새 포스트)를 선택하면 됨.
  5. 나열된 파일 목록중에서 첨부를 원하지 않는건 체크를 해제한다.
  6. 등록 버튼을 누르면 잠시 시간이 걸린 후 결과가 표시된다.
  7. 각각의 파일 끝에 (복사 성공)이라는 메세지가 뜨면 성공인데 실패라고 뜨면.. 이 포스트에 답글을 달아 도움을 요청한다;;

파일이 이동되는게 아니고 복사된다는 점에 주의. 아직 충분한 테스트를 거치지 못해서 삭제하는 코드를 넣기가 겁나는 관계로..;; 일단 등록이 끝난 파일은 수동으로 지워줘야 한다.

태그 : 태터툴즈

태터툴즈 + BBClone의 10원짜리 팁

Trackback to :: 강력한 접속통계 프로그램 BBClone

예전부터 쓰려고 했던건데 잊고있다 올블로그에서 한스님의 포스트를 보고 생각난김에 간단히 기록한다.

BBClone은 방문한 페이지에 각각 ID를 부여해서 페이지별 순위를 매길 수 있는데 태터툴즈에서라면 각 포스트별 순위를 매기는 용도로 쓸 수 있다. 일반적인 index.php 맨 처음부분에 코드를 삽입하는 경우라면 아래처럼 넣으면 된다.

switch($md)
{
    case "rss": $bbclone_id = "RSS Paper"; break;
    case "guest": $bbclone_id = "Guestbook"; break;
    case "local": $bbclone_id = "Locations"; break;
    case "keyword": $bbclone_id = "Guestbook"; break;
    default: $bbclone_id = $pl ? "POST #$pl" : "Blog Main";
}

define("_BBC_PAGE_NAME", $bbclone_id);
define("_BBCLONE_DIR", "bbclone/");
define("COUNTER", _BBCLONE_DIR."mark_page.php");

if
(is_readable(COUNTER))
    include_once(COUNTER);

예제는 본인의 BBClone 페이지로..;

태터툴즈 답글 + 기타등등을 RSS로

Trackback to :: 블로그에 코멘트 남기면 쪽지 날라오게 하기

Miranda-IM에 입문하면서 이것저것 만져보는 중인데.. 이것저것 다 마음에 들지만 메신저 주제에 옵션이 이렇게 복잡하리라고는 상상도 못했다 orz;; 그만큼 강력하다는 얘기겠지만서도.. 나름대로 처음보는 프로그램에 대한 적응이 빠르다고 생각하는데 이녀석은 시간좀 걸릴 듯 싶다.

아무튼 예전부터 탐냈던 최근 답글 목록을 RSS로 만들어 Miranda로 알림받는 것도 해봤는데 최근버전의 RSSNews 플러그인에 Store only unread news 옵션이 없어져버려 살짝 문제가 됐지만 (다시 보니까 Maximum displayed items 옵션에 1을 넣으면 알려줄 답글이 여러개일 경우에 하나 알려주고 또 알려주고 하는식으로 알림이 온다. 이렇게 되면 위 옵션은 굳이 없어도 될 듯) (그냥 기본값 그대로 0을 넣어두면 답글 하나에 메세지 하나씩 잘 온다) 일단 편하고 좋다. 예전에 골빈해커님이 만드신 패치를 약간 변형해서 답글, 트랙백, 방명록, 방명록 답글을 시간순서대로 보여주는 스크립트를 만들어서 쓰고있다.

rss_notify.php

Version 2006.01.01.01

..이제 답글만 많이 달리면 된다;

태그 : RSS, 태터툴즈

Konfabulator Widget 만들기

뒤늦게 Konfabulator를 받아서 위젯들을 들었다 놨다 하면서 놀던중에 위젯이 자바스크립트로 만들어졌다는 충격적인 사실을 알아냈다. 자바스크립트라면 덤벼볼만 하지. Konfabulator Workshop 페이지에 가서 튜토리얼 문서를 받아 살펴보다가 몇번 좌절한 끝에 우선 남이 만들어놓은거 한번 뜯어보는 걸로 방향을 바꿨다. 위젯 갤러리를 훑어보다가 RSS를 읽어다 표시해주는게 왠지 만만해보여서 The Apple Blog RSS라는 놈을 잡아다 분석해봤더니 생각보다 심플! 위젯 내부는 XML 파일에서 화면을 꾸미고 자바스크립트를 호출해 사용하는 기묘한 구조로 이루어져 있었다. 테스트용으로 배경이미지 하나 달랑 깔아놓고 블로그의 최근 답글 5개를 불러다 표시해주는 녀석을 만들었다. (거의 copy & paste로 만든거긴 하지만;;)

태터툴즈 답글 위젯 실행화면

만들고 보니까 크기가 너무 크다 -_- 기능은 오로지 1분에 한번씩 답글 XML 파일을 불러다 뿌려주는 것 밖에 없다. 위에 첨부한 rss_replies.php 파일을 태터툴즈 메인에 올려놓고 위젯을 실행한 다음 Preference에 들어가 자신의 rss_replies.php 파일 URL을 적어줘야 한다. (기본값은 내 블로그가 들어가 있음;;) 그리고 호스팅 서버에서 iconv 함수 사용이 가능해야 한다. 글꼴은 굴림으로 했더니 영 보기 불편해서 HY견고딕으로 바꿔버렸다. 오피스던가 한글이던가 설치하면 같이 깔리는거 같던데.. 아무튼 웬만한 컴퓨터엔 다 있을 것으로 간주하고;; (HY견고딕, 중고딕 같은건 윈도우에 기본으로 좀 넣어줬으면 좋겠다)

위젯 만드는거 꽤 재밌어서 당분간은 이녀석으로 심심하지 않을 것 같다;

태터툴즈 답글 삭제부분 수정

태터툴즈 0.96 정식버전에만 해당하는 내용임

어쩌다보니 최근엔 계속 태터툴즈 관련 포스팅이다. 아무튼;; 0.96 정식버전에 추가된 기능중의 하이라이트라고 할 수 있는 답글에 답글달기 기능 중에 의도한 것과 살짝 다르게 동작해서 당황하게 되는 부분이 하나 있는데, 하위 답글이 달린 상위 답글을 삭제했을때의 경우다. 상위 답글이 삭제되면서 하위 답글들은 최근 답글 목록 외에서는 영영 볼 수 없는 미아가 돼버리고 마는데 이걸 방지하려면 약간의 수정이 필요하다.

칼을 대야할 부분은 del_exe.php 파일의 34 ~ 43번째 줄이다. (아래 표시된 부분)

put_query("delete from t3_".$dbid."_reply where no = '$num'");
set_rp_cnt($pnum);
?>
<script type="text/javascript">
    alert('지정하신 글이 삭제되었습니다t');
    opener.exe_frame.location.href='add_exe.php?md=rp&num=<?=$pnum?>&d_target=post_<?=$pnum?>';
    window.close();
</script>
<?
exit;

위의 부분을 일단 아래와 같이 고쳐놓은 뒤에,

list ($is_parent) = mysql_fetch_array(mysql_query("select count(*) from t3_${dbid}_reply where rno = '$num'"));

if($is_parent)
{
    /* 뭔가 삽입될 곳 */
}
else
{
    put_query("delete from t3_".$dbid."_reply where no = '$num'");
    set_rp_cnt($pnum);
    ?>
    <script type="text/javascript">
        alert('지정하신 글이 삭제되었습니다t');
        opener.exe_frame.location.href='add_exe.php?md=rp&num=<?=$pnum?>&d_target=post_<?=$pnum?>';
        window.close();
    </script>
    <?
    exit;
}

/* 뭔가 삽입될 곳 */ 이라고 표시된 곳에 어떻게 처리할건지에 따르는 코드를 넣어주면 된다. 답글 삭제시에 하위 답글을 어떻게 처리할 것인가는 기호에따라 몇가지 방법이 있을 수 있는데 대략 3가지 정도 추려보면,

  1. 상위 답글을 아예 못지우게 하는 방법. 방문자의 삭제 권리를 무시하는 방법이므로 사전에 낙장불입 시스템임을 알려둘 필요가 있다.
    ?>
    <script type="text/javascript">
        alert('하위 답글이 달려있어서 지울 수 없습니다t');
        window.close();
    </script>

    <?
    exit;
  2. 상위 답글의 이름, 홈페이지, IP, 본문만 날려버리는 방법. 일단 리플 개수가 줄어들지 않아 좋다 -_-
    put_query("update t3_${dbid}_reply set name='Anonymous', homepage='', body='(삭제된 답글입니다)', password='', ip='0.0.0.0' where no = '$num'");
    ?>
    <script type="text/javascript">
        alert('하위 답글이 달려있어서 내용만 삭제했습니다t');
        opener.exe_frame.location.href='add_exe.php?md=rp&num=<?=$pnum?>&d_target=post_<?=$pnum?>';
        window.close();
    </script>

    <?
    exit;
  3. 하위 답글까지 몽땅 삭제하는 방법. 화끈한 만큼 운영에 주의가 필요하다.
    put_query("delete from t3_${dbid}_reply where no = '$num' or rno = '$num'");
    set_rp_cnt($pnum);
    ?>
    <script type="text/javascript">
        alert('지정하신 답글과 관련 답글이 모두 삭제되었습니다t');
        opener.exe_frame.location.href='add_exe.php?md=rp&num=<?=$pnum?>&d_target=post_<?=$pnum?>';
        window.close();
    </script>

    <?
    exit;

이렇게 3개의 방법중 원하는 방법에 해당하는 코드를 /* 뭔가 삽입될 곳 */ 부분에 넣어주면 된다.

이 블로그는 두번째 방법을 쓰고있다. 어떤 방법이든 이렇게 수정해두지 않으면 쓰레기 데이터가 쌓여서 DB의 일관성에도 문제가 있고 Staticker 같은 통계프로그램에서도 잘못된 결과가 나올 수 있으니 가급적 수정해주는쪽을 추천.

태그 : 태터툴즈

태터툴즈 0.96 위치로그 업데이터

태터툴즈 0.96RC에서 입력된 위치정보는 일단 기본적으로는 태터센터 지역별 목록에 표시되지 않는 모양이다. 이럴땐 싱크를 다시 시켜줘야 목록에 표시되는데 각각의 포스트 수정화면에 들어가 REFLECT 버튼을 한번씩 눌러서 다시 싱크시켜주면 된다. (0.96 정식버전 부터는 싱크된 포스트일경우 REFLECT만 해도 수정된 내용으로 다시 싱크된다) 일일히 작업하기는 귀찮을땐 아래의 스크립트를 사용하면 간편하게 할 수 있다.

위의 파일을 ftp로 태터툴즈 메인 디렉토리에 올려놓고 웹브라우저에 http://yourdomain.com/location.php 이런식으로 입력해서 실행되는 화면을 지켜보기만 하면된다. 일단 위치정보가 삽입된 포스트중 이미 싱크된 포스트의 목록이 나열되고 각각의 포스트를 싱크시켜 성공, 실패 여부를 표시하게 된다. 모든 포스트 제목 뒤에 (성공) 이라고 표시되면 작업 끝. 실패 메세지가 나온다거나 반응이 없거나 하는 경우에는 일일히 REFLECT 버튼을 눌러주거나 SYNC 해제 후 재 SYNC 작업을 하는 수밖에 없다.

확실히 위치로그 등록해두니까 찾아오는 사람이 꽤 된다;; 지역별로 분류해서 보니까 메타사이트에서 시간순으로 보는 것과는 다른 재미도 있고.. 아직은 495개의 포스트 뿐인데 앞으로 글이 많이 늘어났으면 좋겠다.

이번껀 좀 많은 사람들이 봤으면 하는 바람이 있어서 올블로그 추천글로 등록함

태그 : 태터툴즈

태터툴즈 0.96용 노가다 유틸

드디어 기다리던 답글에 답글달기 기능이 추가됐다. 스킨을 고치고 스타일을 수정하는 과정에 예제가 필요해서 DB를 몇개 수정했는데 게시물이 280개 정도 되는 수준이라 이거 그냥 전부다 수정해버릴까? 하는 생각이 들어 노가다 작업에 필요한 유틸을 만들었다.

reply_helper.zip

주의 : 데이터 백업은 필수!!

DB를 직접 건드리는 민감한 물건이니 정신 바짝 차리고 해야함;; 무조건 데이터 백업후에 몇개 해보고 잘 된다 싶으면 계속 진행하고 이상하게 나오거나 답글이 사라져버리면 즉시 복구해야한다.

  1. 태터툴즈 메인 디렉토리에 올려놓고 reply.php 파일을 호출한다.
  2. 가장 최근의 포스트에 달린 답글이 표시된다. 첫번째 게시물에 답글이 없으면 실행 & 다음 게시물로 버튼을 눌러 답글달린 포스트가 나올때까지 넘어간다. (단축키 ALT-S)
  3. 답글이 쭉 나오면 작업을 시작한다. 방법은 먼저 부모글을 클릭하고, 그에 해당하는 자식 글을 클릭한다. (순서에 주의) 하나의 부모글에 여러개의 답글이 있을때도 부모글 클릭, 자식글 클릭을 반복하면 된다.
  4. 관계 설정이 끝나면 실행 & 다음 게시물로 버튼을 눌러 다음 게시물로 이동해 작업을 계속한다.
  5. 클릭을 잘못해서 취소하고 싶으면 F5키를 눌러서 새로고침한 다음에 다시 하면 된다.

다시한번 강조하지만 반드시 백업후 작업할 것 급조해서 이 블로그에만 적용한뒤 올려놓은거라 다른 곳에서는 이상동작을 하지 않는다는 보장이 없다.

덧. 0.96RC 쓰면서 입력해 놓은 글들이 태터툴즈 홈 지역별 분류 목록에 보이지 않는다면 해당 포스트의 SYNC를 한번 풀었다 다시 걸어주거나 게시물 편집으로 들어가서 위치 입력 옆의 SET 버튼을 한번 눌러주면 업데이트 된다.

덧. 아참 파일명이 reply.php, reply_exec.php 인데 태터툴즈에 원래 들어있는 reply_exe.php 파일과 혼동하지 않도록 주의. (아까 작업 끝내고 지운다고 저것까지 지워버리는 바보짓을 해서..;;)

태그 : 태터툴즈

태터툴즈용 간단한 통계 그래프

그래프 프로그램 데모 화면

최근 n일 동안의 데이터를 뽑아 출력해 그래프를 그려준다. 기존에 있는 것도 많지만 매일매일의 그래프가 아닌 증권차트의 n일 평균 이동선을 보고싶어서 삽질을 거듭해 완성. 오늘 기준으로 최근 두달간 5일 이동평균선의 추세를 보니 꾸준히 상승중. 지금이야말로 매입 찬스!;; 제일 높았던 기록은 올블로그 알찬글 올랐을때고 제일 낮았을때는 구글봇때문에 트래픽 초과됐던 날이다.

저 아래 graph.php 파일을 받아서 태터툴즈가 설치된 디렉토리에 올려놓고 파일을 열어서 변수들을 수정하면 된다.

num
불러올 카운터의 개수. 한달치를 불러오고 싶으면 30으로 수정.
width, height
각각 그래프의 너비, 높이.
trend
위 그래프에서 빨간 선으로 표시된 추세선의 기준값. 5라고 넣으면 그래프의 한 점의 값은 지난 5일간의 평균을 의미한다. 0을 집어넣으면 표시하지 않음.
grid
얼룩무늬의 폭을 지정하는건데 단위는 1일. num 값에 따라 유동적으로 변한다.
color_*
주석에 표시된대로 각각 배경, 무늬, 그래프의 색을 지정한다. 빨간색이면 0xff0000 이렇게 넣어주면 됨.

불러올때는 <img src="graph.php" width="175" height="95" alt="통계 그래프"/> 같은 식으로 호출하면 된다. 이렇게 되면 graph.png 파일이 만들어져 표시되게 되는데 이 파일은 하루에 한번만 만들어지기 때문에 최초에 graph.php 파일을 실행하면 변수를 바꿔서 또 실행해도 graph.png 파일이 업데이트 되지 않는다. 이럴땐 http://yourdomain.com/tt/graph.php?force=1 이렇게 실행해주면 강제로 graph.png 파일을 업데이트 한다. (참고로 저렇게 실행한 상태에서 새로고침을 누르면 graph.png 파일만 새로고침 되기 때문에 graph.php 파일은 호출되지 않는다. 그래서 변수를 수정하고 바뀐 내용을 확인할때는 항상 위에 적힌 URL처럼 PHP 파일을 직접 호출해줘야 함. 또 참고로 새로고침해도 잘 업데이트가 안되면 http://yourdomain.com/tt/graph.php?force=1&asdfasdf 이렇게 URL 뒤에 & + 의미없는 문자를 추가해 입력하면 확실히 새로고침 된다)

좀 그럴듯 하게 만들어서 배포하고 싶은데 이정도에 만족해버려서 더이상은 포기;

graph.php

Version 2005.08.16.01

This Page Is Valid XHTML 1.0 Transitional!

W3C Validator 마크

태터툴즈도 업데이트 하고 스킨도 바꾼김에 그동안 작은 숙원이었던 W3C Validator 통과를 드디어 해냈다. 파이어폭스의 HTML Validator 익스텐션에서도 드디어 깔끔하게 0 errors/0 warnings 결과가 나온다. 태터툴즈 본체는 손댈 부분이 생각보다 그렇게 많지 않아서 index.php, inc_*.php 파일들에 따옴표 빠진거 넣어주고 <center> 태그같은거 제거해주는 정도로 XHTML 1.0 Transitional은 손쉽게 충족시킬 수 있다. Strict까지 손대기엔 고쳐야될 부분이 많고 결정적으로 iframe 때문에 1.0 버전이 나오기 전까지는 힘들 것 같다.

HTML Validation Result

스킨이야 애초에 XHTML 1.0 Strict에 맞춰서 만들었기 때문에 Transitional로 변경하는데는 문제가 없지만 정작 문제되는건 본문 자체가 올바른 문법이어야 한다. 이것도 <p> 태그 안에 그림 삽입용 테이블이나 리스트 태그 같은걸 넣지 않는다던가 URL을 적을때 & 기호를 &amp; 라고 적어준다던가 하는 몇가지만 지키면 그리 어렵지 않다. 아니면 그냥 HTML 코드없이 글만 쭉쭉 써나가면서 그림만 삽입하는정도로 작성해도 문법에는 어긋나지 않지만 문단, 리스트 같은걸 <p>, <ol> 같은 용도에 맞는 태그로 작성해주면 좀 더 의미가 명확한 문서가 될 수 있다. 좀 귀찮긴 하지만;;

태터툴즈 1.0 나오고나면 태터툴즈 블로그 여기저기서도 Valid XHTML 아이콘을 많이 볼 수 있었으면 좋겠다.

'컴퓨터 얘기 > 시시한얘기' 카테고리의 다른 글

나우누리 재가입  (16) 2005/09/06
결국 Gmail로 정착  (20) 2005/08/31
This Page Is Valid XHTML 1.0 Transitional!  (8) 2005/08/07
태터툴즈 업데이트  (7) 2005/08/07
구글의 습격  (5) 2005/08/04
인터넷 뱅킹  (9) 2005/08/03

태터툴즈 업데이트

태터툴즈 로고

기다리던 1.0을 뒤로 살짝 미루고 0.96RC로 발표됐다. 크게 바뀐건 없고 글로벌 키워드와 위치 삽입정도가 눈에 띈다. 예전에 썼던 글들에 위치정보를 넣어놓고 가만히 보고있으니 '이거구나!!' 싶다. 오피셜 사이트가 어서 완공돼서 전세계의 위치별로 정리해서 볼 수 있게되면 굉장히 멋질듯. 외출했다 돌아와보니 발표돼있어서 잽싸게 업데이트 하려고 했지만 연이은 구글의 재습격으로 인한 트래픽 오링 사태 덕분에 느긋하게 작업할 수 있었다. (고마워 구글.. 근데 이제 그만해줬으면 좋겠거든;;)

업데이트 하는김에 1.0 나오면 바꾸려고 아껴뒀던 스킨을 살짝 고쳐 적용시켰다. 스킨이 XHTML 1.0의 구조적인 형식이라고 하더라도 아직은 본체가 준비되지 않아 완벽하진 못하다. 그래도 Validator를 통과하지 못한다 뿐이지 PDA로 본다던가 할때는 지난번 스킨보다 훨씬 수월하다. 이번엔 꽤 신경 써서 print, handheld 스타일까지 추가해놨는데 정작 내 PDA의 Pocket Internet Explorer 에서는 handheld 스타일은 인식하지 못한다 orz;;

예상치못하게 0.96RC로 업데이트 되는 바람에 1.0은 좀더 느긋하게 출시되지 않을까 하는 생각이 든다. 뭐 그만큼 완성도 있는 제품이 되는거라 생각하면 좋기도 하지만 역시 아쉬운건 어쩔 수 없고.. 그냥 포스팅이나 열심히 해야겠다;; 키워드 기능도 아직 한번도 안써봤는데 따로 조회할 수 있는 페이지도 생기고 했으니 이것저것 입력해봐야지.. 이힛힛

좋은 툴, 감사합니다아~

'컴퓨터 얘기 > 시시한얘기' 카테고리의 다른 글

결국 Gmail로 정착  (20) 2005/08/31
This Page Is Valid XHTML 1.0 Transitional!  (8) 2005/08/07
태터툴즈 업데이트  (7) 2005/08/07
구글의 습격  (5) 2005/08/04
인터넷 뱅킹  (9) 2005/08/03
Internet Explorer 7 Beta 1 Available  (8) 2005/07/28
태그 : 태터툴즈

MSN으로 태터툴즈 댓글 알림받기

Trackback : MSN Alert 설명, MSN Alert 테터툴즈 플러그인

이 내용은 태터툴즈 0.961 기준임

화니님이 개발하신 MSN 봇을 이용해서 미리 등록된 아이디로 메세지를 전송할 수 있는 인터페이스를 테스트중이시라고 한다. 간단한 가입절차를 거친 후 사용할 수 있는데 태터툴즈 외에도 사용 가능한 범위가 아주 많다. 태터툴즈에서 댓글, 트랙백, 방명록 알림으로 사용하려면 아래처럼 하면 된다.

  1. 아래의 주소로 이동해 회원가입
    http://d-3-b.com/miniboard/member.php?id=free&url=http://d-3-b.com

  2. 아래의 주소로 이동해 표시되는 메일 주소를 MSN에 친구로 추가한다
    http://msn.d-3-b.com/list.html

  3. inc_function.php 파일의 맨 끝에 아래 함수를 추가한다. 첫부분의 your_id, your_password 부분에는 1번에서 가입할때 적은 아이다와 비밀번호를 넣으면 된다.

    function msn_send($msg)
    {
        $id = "your_id";
        $pw = "your_password";

        if($fp = @fsockopen("msn.d-3-b.com", 80))
        {
            fwrite($fp, "GET /msn/call.html?id=$id&pw=$pw&msg=".urlencode($msg)." HTTP/1.0\r\nHost: msn.d-3-b.com\r\n\r\n");
            fclose($fp);
        }
    }
  4. add_exe.php 파일 28번째줄 setcookie 다음줄에 아래의 구문을 삽입한다

    if($c_name != "관리자")
        msn_send("${c_name}님이 코멘트를 남기셨습니다.\r\n".stripslashes(str_trans_rev($c_body))."\r\n${s_root_path}index.php?pl=$num");

    이렇게 하면 '관리자'라는 아이디로 쓴 댓글은 알림이 오지 않는다. 저부분을 원하는 아이디로 교체해 넣으면 된다. (원하지 않으면 if 줄을 삭제해도 됨)

  5. rserver.php 파일 27번째줄 echo 윗줄에 아래의 구문을 삽입한다

    msn_send("$blog_name 블로그에서 트랙백을 남기셨습니다.\r\n".stripslashes(str_trans_rev("$title\r\n$excerpt"))."\r\n${s_root_path}index.php?pl=$no");
  6. index.php 파일 42번째줄 if 다음줄에 아래의 구문을 삽입한다

    msn_send("${guest_input_name}님이 방명록을 남기셨습니다.\r\n".stripslashes(str_trans_rev($guest_textarea_body))."\r\n${s_root_path}index.php?md=guest");

아직 안정성 테스트 중이라고 하시는데 아주 가끔씩 몇초간 알리미가 로그아웃상태가 되는걸 빼면 큰 문제는 없는 것 같다. MSN 계속 띄워두시는 태터툴즈 유저분들께 강추!!

태그 : MSN, 태터툴즈

태터툴즈 고쳐쓰기 #12 - 답글에 국가 아이콘 표시하기

lunamoth님의 제보에 따라..;

답글의 IP를 조회해서 어느 국가의 IP인지 국기 아이콘으로 표시해주는 워드프레스 플러그인베껴참고해서 태터툴즈에서 돌아가는 코드 몇줄을 만들었다. (pionelle님의 워드프레스 플러그인 소개 포스트에 있는 내용중 상당 부분을 중복해 적습니다)

1. DB 테이블 만들기

ip2nation 사이트에 접속해 왼쪽 메뉴중 Download를 눌러 sql 파일을 다운로드 받은 뒤 mysql에서 실행시켜 테이블을 생성시킨다. ip2nation, ip2nationCountries 두 테이블이 생성되면 성공. SQL 파일로 테이블 생성하는 법을 모른다면 MySQL DB 백업/복원에 대해 검색을 해보자; (ip2nation DB는 매월 업데이트 된다고 한다)

2. 국기 이미지 구하기

frenchfragfactory 사이트에 접속해 /download/utils/flags.zip 를 클릭하면 다운받을 수 있다. 다운받은 이미지는 사용중인 스킨 디렉토리 아래 images/flags 디렉토리에 넣었다고 가정하고 아래 내용을 계속한다.

3. inc_function.php 파일 수정

inc_function.php 파일 404번째줄부터 시작하는 get_rp_content($skin, $num) 함수의 447번째줄 if ($rno == "0") $bf2_rep = $skin->s_rp_rep; else $bf2_rep = $skin->s_rp2_rep; 문장 바로 다음줄에 아래 세줄을 삽입한다.
$ip2nation = mysql_fetch_array(mysql_query("SELECT c.country, c.code FROM ip2nationCountries c, ip2nation i WHERE i.ip<INET_ATON('$ip') AND c.code=i.country ORDER BY i.ip DESC LIMIT 1"));
$bf2_rep = str_replace("[##_rp_rep_country_name_##]", $ip2nation[0], $bf2_rep);
$bf2_rep = str_replace("[##_rp_rep_country_code_##]", $ip2nation[1], $bf2_rep);

4. 스킨 파일 수정

skin.html 파일의 리플을 출력하는 곳인 <s_rp_rep></s_rp_rep> 안쪽의 적당한 위치에 아래처럼 아이콘 이미지 태그를 삽입한다.
<img src="./images/flags/flag_[##_rp_rep_country_code_##].gif" width="18" height="12" alt="[##_rp_rep_country_name_##]">

5. 여기까지 하면 답글 부분은 끝. 방명록에도 추가하고 싶다면,

이번엔 inc_presswork.php 파일을 열어서 318번째줄부터 시작하는 get_guest() 함수의 428번째줄 $p2_rep = $GLOBALS["skin"]->s_guest_rep; 문장 다음줄에 아래 세줄을 삽입
$ip2nation = mysql_fetch_array(mysql_query("SELECT c.country, c.code FROM ip2nationCountries c, ip2nation i WHERE i.ip<INET_ATON('$ip') AND c.code=i.country ORDER BY i.ip DESC LIMIT 1"));
$p2_rep = str_replace("[##_guest_rep_country_name_##]", $ip2nation[0], $p2_rep);
$p2_rep = str_replace("[##_guest_rep_country_code_##]", $ip2nation[1], $p2_rep);

462번째줄 $p3_rep = $GLOBALS["skin"]->s_guest_reply_rep; 다음줄에도 아래의 세줄을 삽입
$ip2nation = mysql_fetch_array(mysql_query("SELECT c.country, c.code FROM ip2nationCountries c, ip2nation i WHERE i.ip<INET_ATON('$ip') AND c.code=i.country ORDER BY i.ip DESC LIMIT 1"));
$p3_rep = str_replace("[##_guest_rep_country_name_##]", $ip2nation[0], $p3_rep);
$p3_rep = str_replace("[##_guest_rep_country_code_##]", $ip2nation[1], $p3_rep);

6. 다시 스킨 파일을 열어서..

<s_guest_rep></s_guest_rep> 태그로 둘러싸인 방명록 본문의 적당한 곳과 <s_guest_reply_rep></s_guest_reply_rep> 태그로 둘러싸인 방명록 답글의 적당한 곳에 각각
<img src="./images/flags/flag_[##_guest_rep_country_code_##].gif" width="18" height="12" alt="[##_guest_rep_country_name_##]">
이렇게 이미지 태그를 똑같이 추가해주면 모두 끝난다.

방명록 답글에는 굳이 넣지 않아도 될 듯 하지만 손님이 답글을 다는 경우도 있어 그냥 넣기로 했다. 그리고 국기 이미지인 flags.zip 파일에 모든 국가의 국기가 들어있지 않음에 주의.. 달아놓고 방명록을 쭉 살펴보니까 우즈베키스탄(!) 아이피를 쓰시는분이 계셨는데 아이콘이 없다. img 태그 안에 onerror="this.src='./images/flags/flag_defalut.gif'" 하는 식으로 아이콘 없을때 기본 아이콘을 보여주도록 추가하면 좋을 것 같다.

근데 국기 아이콘에 그라데이션(?)이 들어가서 썩 예쁘지는 않네..;; (특히 태극기) 시간날때 살짝 고쳐봐야겠다.
태그 : 태터툴즈

태터툴즈용 Google Sitemap

Trackback to :: 구글 검색엔진 등록 - Google Sitemap

Google Sitemaps (BETA)

항상 최신의 내용을 긁어올테니 정보를 쏴주시오!! 라는데 사용자 입장에서도 당연히 환영할만한 일이다. 네이버에 검색되기 위해 한달에 몇십만원식 내야되는 것에 비하면야 구글은 컨텐츠만 좋으면 (링크만 많이 당하면) 상위에 랭크되니.. 아무튼 이게 뭔지 느껴보기 보다는 일단 해보고 싶다는 생각에 이 포스트를 참고해서 급조했는데 첫번째로 만들었던 XML을 submit 하고 한참을 기다리니 Status가 Invalid Date로 나와버린다;; <lastmod> element는 ISO 8601대로 하면 된다고 하는데 1997-07-16T19:20:30+01:00 처럼 표시했더니 에러가 발생한다. 이유는 미스테리..;; 그래서 포스트 시간을 GMT로 바꿔 1997-07-16T19:20:30Z 처럼 표시해주니 잘 된다.

아래 소스를 태터툴즈가 설치된 디렉토리에 적당한 이름으로 저장해두고 Google Sitemaps에 등록하면 된다. 별달리 설정할건 없고 기본적으로 모든 포스트를 가지고 XML을 만드는데 속도가 문제되거나 포스트 개수가 5만개가 넘을경우에는 (설마..) 25번째줄을 지우고 24번째줄의 주석을 풀어서(//를 삭제) 태터 환경설정에서 정해준 XML 아이템 개수만큼만 출력하도록 한다. (또는 적당한 개수를 LIMIT x, y 하는 식으로 지정..) 그리고 블로그 메인의 최근 수정시간은 포스트, 리플, 트랙백중 가장 최근의 시간을 넣게 돼있는데 항상 현재시간으로 설정하고 싶으면 19번째줄을 지우고 18번째줄의 주석을 풀어준다. (역시 //를 삭제) 수정시에는 파일을 꼭 UTF-8로 저장하도록 주의해야 한다.
<?
    require "inc_global.php";
    require "inc_function.php";

    header("Content-type: text/xml");

    echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n";
    echo "<urlset xmlns=\"http://www.google.com/schemas/sitemap/0.84\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.google.com/schemas/sitemap/0.84 http://www.google.com/schemas/sitemap/0.84/sitemap.xsd\">\r\n";

    list($time_post) = mysql_fetch_array(mysql_query("SELECT MAX(regdate) FROM t3_${dbid} WHERE is_public='1'"));
    list($time_reply) = mysql_fetch_array(mysql_query("SELECT MAX(regdate) FROM t3_${dbid}_reply WHERE is_secret=0"));
    list($time_trackback) = mysql_fetch_array(mysql_query("SELECT MAX(regdate) FROM t3_${dbid}_trackback"));

    echo "<url>\r\n";
    echo "<loc>$s_root_path</loc>\r\n";
//  echo "<lastmod>".gmdate("Y-m-d\TH:i:s\Z")."</lastmod>\r\n";
    echo "<lastmod>".gmdate("Y-m-d\TH:i:s\Z", max($time_post, $time_reply, $time_trackback))."</lastmod>\r\n";
    echo "<changefreq>always</changefreq>\r\n";
    echo "<priority>1.0</priority>\r\n";
    echo "</url>\r\n";

//  $result = mysql_query("SELECT no, regdate FROM t3_$dbid WHERE is_public='1' ORDER BY regdate DESC LIMIT 0, $p_xml_cnt");
    $result = mysql_query("SELECT no, regdate FROM t3_$dbid WHERE is_public='1' ORDER BY regdate DESC");

    while(list($no, $regdate) = mysql_fetch_array($result))
    {
        echo "<url>\r\n";
        echo "<loc>${s_root_path}index.php?pl=$no</loc>\r\n";
        echo "<lastmod>".gmdate("Y-m-d\TH:i:s\Z", $regdate)."</lastmod>\r\n";
        echo "<changefreq>daily</changefreq>\r\n";
        echo "<priority>0.8</priority>\r\n";
        echo "</url>\r\n";
    }

    echo "</urlset>\r\n";
?>

태터툴즈 고쳐쓰기 #11 - UTF-8 RSS 읽기, 트랙백 보내기

태터툴즈 1.0부터는 UTF-8 기반이므로 이 내용은 1.0 미만에만 해당되는 내용임.

UTF-8 문자로 작성된 블로그에 트랙백을 보낼때면 상대방의 사이트에는 깨진 문자로 기록된다. 곧 태터툴즈 새버전에서 이 문제가 해결될 것 같지만 그때까지는 임시방편으로 태터툴즈를 약간 고쳐서 써야한다. 또, 역시 UTF-8로 작성된 RSS도 태터툴즈 리더에서는 읽을 수 없는데 이것도 간단한 변환 프로그램을 통해서 (임시로) 해결할 수 있다. 모두 iconv() 함수를 이용하는 방법이라 iconv를 지원하지 않는 서버에서는 사용할 수 없다. (예를 들면 80PORT 등)

먼저 UTF-8로 제공되는 RSS를 태터 리더에서 읽으려면,

1. 우선 HTTP 접속하는 PHP 클래스 여기 있는 http.php 파일을 받아서 계정에 올려놓고

2. 같은 경로에 아래의 코드를 utf8rss.php 등의 이름으로 저장한다
<?
    include "http.php";

    header("Content-type: text/xml");

    preg_match("/^(http:\\/\\/)?([A-Za-z0-9.]+)(\\/.*)/", $_GET["uri"], $matches);

    $h = new http($matches[2], 80);
    $h->setTarget($matches[3]);
    $h->sendData();

    echo iconv("UTF-8", "CP949//IGNORE", preg_replace("/encoding=\"UTF-8\"/i", "encoding=\"EUC-KR\"", $h->getBody()));

    $h->close();
?>

3. 원래의 RSS 주소가 http://foo.com/index.xml 이고 위에서 작성한 utf8rss.php 파일의 경로가 http://mydomain.com/utf8rss.php 라면 태터툴즈 리더 주소록에 이렇게 등록하면 끝이다.
http://mydomain.com/utf8rss.php?uri=http://foo.com/index.xml

어디까지나 임시방편이므로 에러처리 부분은 넣지 않았다. hof님 블로그가 UTF-8로 바뀐 뒤로 계속 써오는 동안 별다른 에러는 없었으니 크게 걱정할 부분은 안되겠지만.. 다시한번 강조하지만 이건 임시방편..;

그리고 태터툴즈에서 UTF-8 블로그로 트랙백을 보내는 방법

1. 태터툴즈 admin/article_trackback_pop.php 파일 100번째줄에 아래의 내용을 끼워넣는다.
<table cellpadding="0" cellspacing="0" style="margin-bottom:5"><tr>
<td width="80" align="right" style="padding-top:3">인코딩 ::&nbsp;</td>
<td style="padding-top:3">
    <input type="radio" name="encoding" id="encoding1" value="euc-kr" checked>
    <label for="encoding1">기본값</label>
    <input type="radio" name="encoding" id="encoding2" value="utf-8">
    <label for="encoding2">UTF-8</label>
</td>
</tr></table>

2. 이번엔 39번째줄에서 아래 문장을 찾아,
$data ="url=".rawurlencode($plink)."&title=".rawurlencode($title)."&blog_name=".rawurlencode($p_title)."&excerpt=".rawurlencode($body);

위 문장 바로 에 아래의 내용을 추가하면 작업 끝.

if( $encoding == "utf-8" )
{
    $plink = iconv("EUC-KR", "UTF-8//IGNORE", $plink);
    $title = iconv("EUC-KR", "UTF-8//IGNORE", $title);
    $p_title = iconv("EUC-KR", "UTF-8//IGNORE", $p_title);
    $body = iconv("EUC-KR", "UTF-8//IGNORE", $body);
}

이제 UTF-8 블로그에 트랙백을 보낼때 인코딩 항목에서 UTF-8을 체크한 후 SEND 하면 된다. (트랙백 테스트할 곳이 없으신 분은 http://crizin.net/soojung/entry.php?blogid=1 이쪽으로 가셔서 트랙백을 보내보세요)
태그 : 태터툴즈

태터툴즈 검색어 통계

최근에 업데이트된 이글루스 통계에 검색어 순위가 나오면서 이글루스 유저분들이 흥미로워 하시는걸 보고 살짝 부러워져 또 삽질을 시작했다. 심플하게 지정된 기간의 검색어만 추출해서 보여주는 프로그램..

referer.php

Version 06.01.23.01


태터툴즈가 설치된 폴더에 넣고 실행하면 어제 하루동안의 검색어를 보여준다. 2005-3-24 같은 식으로 날짜를 넣고 볼 수 있는데 전체 검색어를 보려면 2000-1-1 ~ 2006-1-1 정도로 기간을 적당히 크게 주고 보면 됨.

검색어 추출이 가능한 검색사이트는 현재 네이버, 태터툴즈, 미니위니, 야후, 제로보드, 다음, 블로그코리아, 벅스뮤직, 올블로그, 천리안, 드림위즈, 하나포스, 네이트, MSN이다. (내 블로그 리퍼러 기준으로 뽑았음;;) iconv() 함수가 없는 곳에서의 구글이나 MSN의 UTF-8 문자열 조회는 PHPSCHOOL TIP&TECH무화님 팁을 이용해 출력한다.

태터툴즈는 기본적으로 최근 2일동안의 리퍼러만 보관하고 있는데 이 기간을 늘리려면 inc_function.php 파일 1157번째줄 근처의
put_query ("delete from t3_".$dbid."_referlog where regdate < ".mktime(0, 0, 0, date("m"), date("d")-2, date("Y")));
이 문장을 아래처럼 고치면 된다
put_query ("delete from t3_".$dbid."_referlog where regdate < ".mktime(0, 0, 0, date("m"), date("d")-30, date("Y")));
2라고 쓰인 부분을 30으로 고쳐서 한달간의 리퍼러를 보관하기로 했다. 내 경우엔 한달정도면 DB용량이 대략 1메가정도 소요된다. (방문자가 적은 편임을 감안할 것;;)

그리고 n@log 카운터를 쓰는 경우에 n@log에서 기록한 리퍼러를 기준으로 검색하고 싶으면 referer.php 파일 55번째 부분을
$result = mysql_query("SELECT referer FROM nalog3_counter_blog WHERE referer!='' AND time>=".strtotime("$d1 00:00:00")." AND time<=".strtotime("$d2 23:59:59"));
이런식으로 고쳐 사용하면 된다. (카운터 아이디가 blog가 아닐때는 노랗게 된 부분을 고쳐주면 됨)

통계가 노출되는게 꺼려질 경우에는 referer.php 파일 7번째 줄의 //를 지워 주석을 풀어주면 태터툴즈에 로그인해야 통계를 볼 수 있게된다. (이것 보다는 referer.php가 아닌 다른 파일명으로 바꾸어 숨겨놓는 쪽이 더 편할 듯)
태그 : 태터툴즈

단어사용 빈도 분석

오늘 낮동안 이루어낸 뻘짓.

내 태터 RSS 수집기에 수집된 4580개의 포스트를 대상으로 단어 사용 빈도를 조사한 결과 상위 500개의 결과가 아래와 같이 나왔다. (한글, 영어, 숫자로 이루어진 단어에 한정)

결과보기


그, 수, 이, 있는 등등의 의미없는 단어를 제외하고 명사부분에서 1등은 479회 출현한 영화. 그 뒤를 이어 블로그, PHP, 게임, 인터넷, 일본, 저작권 등등이다. 기대했던 것 보다 평범해서 실망 -_-

그밖에 orz(171회)가 OTL(118회)을 눌렀다는 사실이 나름대로 성과라면 성과;;

태터툴즈 리더를 쓰는 사람은 아래의 파일을 태터툴즈 폴더에 넣고 실행하면 이것처럼 단어 빈도 조사를 할 수 있다. 임시 테이블을 만들어서 처리하는관계로 결과가 출력되기 전에 멈춰버리면 임시 테이블이 그대로 남아버리니 주의..

   덧. 수집된 RSS가 아닌 자기가 쓴 블로그 본문에 대해 조사하고 싶다면 52번째 줄을,
$result = mysql_query("SELECT body FROM t3_".$dbid);
   이렇게 고쳐주면 된다.

태터툴즈 고쳐쓰기 #10 - 최근 리퍼러 보여주기

예전에는 태터의 리퍼러를 수시로 확인하곤 했는데 요즘은 한달에 한번이나 들여다볼까.. 데이터는 자꾸 쌓이는데 쓰이지 못하는게 안타까워 메인 화면으로 빼봤다. 추가하는 과정은 예전에 썼던 방명록 최근글 보여주기와 99% 비슷함.

1. inc_presswork.php 파일에 아래의 함수를 추가
function get_referer_rep() {
    global $db, $dbid;
    unset($p);

    $p_rct_refer_cnt = 10;     // 몇개까지 표시할지 결정
    $p_rct_refer_trunc = 24;   // 길이를 몇바이트에서 자를지 결정

    $sql = "select distinct host, refer from t3_".$dbid."_referlog order by regdate desc limit 0, $p_rct_refer_cnt";
    // print $sql;
    $result = @mysql_query($sql);
    while(list($host, $referer) = @mysql_fetch_array($result)) {
        $p_rep = $GLOBALS["skin"]->s_referer_rep;
        $p_rep = str_replace("[##_referer_rep_link_##]", $referer, $p_rep);
        $p_rep = str_replace("[##_referer_rep_favicon_##]", "http://$host/favicon.ico", $p_rep);
        $p_rep = str_replace("[##_referer_rep_url_##]", str_cut(urldecode(substr($referer,7)), $p_rct_refer_trunc, 1), $p_rep);
        $p .= $p_rep;
    }
    return $p;
}

2. inc_function.php 파일 120번째줄에 아래의 코드를 삽입한다. (정확한 위치를 모르면 비슷하게 생긴 코드들 사이에 추가하면 됨)
list($sval, $this->s_referer_rep) = cut_skintag($sval, "s_referer_rep");

3. index.php 파일 512번째줄 근처로 가서 아래의 코드를 삽입한다 (역시 비슷하게 생긴놈들 사이에 끼워넣기)
if (strpos($d1, "[##_s_referer_rep_##]")) $d1 = str_replace("[##_s_referer_rep_##]", get_referer_rep(), $d1);

4. 마지막으로 스킨파일을 수정한다. 096_quan 스킨을 예로 들면 이렇게 수정한다
<div class="h3"><img src="./images/left.gif" align="absmiddle"> 최근에 방문한 경로</div>
<div style="padding:0 0 0 20"><s_referer_rep><a href="[##_referer_rep_link_##]" target="_blank" style="line-height:13pt">[##_referer_rep_url_##]</a><br></s_referer_rep></div>

이렇게 하면 일단 기본 작업은 끝이고 이곳 처럼 URL 앞에 favicon을 표시하려면 [##_referer_rep_favicon_##] 치환자를 사용하면 된다. 예를들면 이런식으로..
<img src="[##_referer_rep_favicon_##]" width="16" height="16" onerror="this.onerror=null;this.src='./images/favicon.ico'">
favicon 가져올때의 문제점은 예를들어 URL이 http://search.daum.net 으로 시작하는 경우에는 http://search.daum.net/favicon.ico 를 찾기때문에 favicon을 가져오지 못한다. 이럴땐 http://daum.net/favicon.ico 를 가져오도록 만든다던가 하는 방법이 있지만 가장 단순하고 무식한 방법은 아래처럼 일일히 값을 조사해서 해당 favicon으로 연결해주는 방법이다. (일단 구글, 다음, 네이버만 적용..)
function get_referer_rep() {
    global $db, $dbid;
    unset($p);

    $p_rct_refer_cnt = 10;     // 몇개까지 표시할지 결정
    $p_rct_refer_trunc = 24;   // 길이를 몇바이트에서 자를지 결정

    $sql = "select distinct host, refer from t3_".$dbid."_referlog order by regdate desc limit 0, $p_rct_refer_cnt";
    // print $sql;
    $result = @mysql_query($sql);
    while(list($host, $referer) = @mysql_fetch_array($result)) {
        $p_rep = $GLOBALS["skin"]->s_referer_rep;
        $p_rep = str_replace("[##_referer_rep_link_##]", $referer, $p_rep);
        if( eregi("^(www.)?google.", $host) )
            $p_rep = str_replace("[##_referer_rep_favicon_##]", "http://www.google.com/favicon.ico", $p_rep);
        else if( eregi("daum.net$", $host) )
            $p_rep = str_replace("[##_referer_rep_favicon_##]", "http://www.daum.net/favicon.ico", $p_rep);
        else if( eregi("naver.com$", $host) )
            $p_rep = str_replace("[##_referer_rep_favicon_##]", "http://www.naver.com/favicon.ico", $p_rep);
        else
            $p_rep = str_replace("[##_referer_rep_favicon_##]", "http://$host/favicon.ico", $p_rep);
        $p_rep = str_replace("[##_referer_rep_url_##]", str_cut(urldecode(substr($referer,7)), $p_rct_refer_trunc, 1), $p_rep);
        $p .= $p_rep;
    }
    return $p;
}

이로서 실시간 리퍼러 스토킹도 시작됐으니 많이많이 찾아주세요;;
태그 : 태터툴즈

태터툴즈 고쳐쓰기 #9 - 답글달리면 SMS 통보

태터툴즈 고쳐쓰기 시리즈에 넣기는 좀 안어울리는 감이 없지 않지만 아무튼;;

아레오 사이트가 제공하는 SMS 전송모듈을 이용하면 웹페이지에서 간단하게 문자메세지를 보낼 수 있다. 어디에 붙이느냐에 따라 다양한 응용이 가능한데 내경우는 문자전송 사이트 접속하기가 귀찮아서 내 계정에 문자전송 페이지를 만들어 숨겨두고 쓰고 있다. 또 다른 응용 예로 블로그 폐인들을 위해 포스트에 손님의 답글이 달리면 문자로 답글의 일부를 전송해주는 것도 가능한데. 금전적 출혈(에누리없이 건당 30원)도 그렇고 쓸 사람이 있을지는 의문.. (나도 안쓴다;;) 좀 본격적으로 적용하려면 동일 아이피에서 발송할 수 있는 문자 개수를 제한한다든지 오밤중에 문자오는 일을 방지하는 등의 코드를 추가할 필요가 있다.


과연 쓸만할까;;


  1. 아이디와 비밀번호를 생성

Arreo.com Download 메뉴에서 PHP WebClient를 다운로드 받은 후 계정에 설치해서 실행한뒤 '이용신청' 메뉴에서 아이디를 생성하면 된다. (가입하면 500원 충전해줌 잇힝)

sms.zip

Arreo.com 다운로드 일시중지인 관계로 이걸로 받으세요;;


설치하기 어렵거나 귀찮을때는 http://crizin.net/work/sms 이쪽을 이용해서 가입, 충전 등등을 해도 됨.
(arreo 서버로 데이터를 보내고 결과를 전송받는 구조라 제 서버에는 아무것도 남지 않으니 안심하시길;;)

  2. inc_function.php 파일에 아래의 함수를 추가
function send_sms($from, $to, $body)
{
    $uid = "your_id";
    $pass = "your_password";

    $body = str_replace(chr(9), " ", $body);

    $len = strlen($body);

    if( $len > 80 )
    {
        $buffer = "";

        for($i=0; $i<80; $i++)
        {
            $asc = ord(substr($body, $i, 1));

            if( $asc > 127 )
            {
                if( $i < 79 )
                    $buffer .= substr($body, $i, 2);

                $i++;
            }
            else
                $buffer .= substr($body, $i, 1);
        }

        $body = $buffer;
    }

    $query = "SS".chr(9);
    $query .= "1108142553_AUSR".chr(9);
    $query .= "00000".chr(9);
    $query .= $uid.chr(9);
    $query .= $pass.chr(9);
    $query .= $from.chr(9);
    $query .= $to.chr(9);
    $query .= $from.chr(9);
    $query .= $body.chr(9);
    $query .= date("YmdHis", time()).chr(9);
    $query .= "null".chr(9);
    $query .= "A".chr(9);
    $query .= "1".chr(9);
    $query .= "00".chr(9);
    $query .= "NULL".chr(9);
    $query .= "NULL".chr(10);

    $flag = true;

    if( $fp = fsockopen("211.55.26.11", 10001, $errno, $errstr, 3) )
    {
        fwrite($fp, $query);
        flush();

        if( $result = fgets($fp, 3000) )
        {
            $result = explode(chr(9), $result);

            if( $result[1] != "00" )
                $flag = false;
        }
        else
            $flag = false;

        fclose($fp);
    }
    else
        $flag = false;

    return $flag;
}

맨 첫부분 "your_id", "your_password" 부분에 1번에서 만든 아이디와 비밀번호를 넣는다.

  3. add_exe.php 파일 28번째줄 setcookie 다음 행에 아래 두줄을 추가한다.

if (!return_authority())
    send_sms("01011112222", "01012345678", stripslashes(str_trans_rev("$c_name - $c_body")));

관리자로 로그인한 뒤에 쓴 답글은 전송하지 않는다. "01011112222", "01012345678" 부분에는 각각 보내는사람, 받는사람의 전화번호를 쓰면 되는데 일단 여기서는 보내는 사람의 번호는 필요 없으니 아무 번호나 써주고 두번째 번호는 자기 휴대폰 전화번호를 넣으면 된다. 다른 곳에서 send_sms 함수로 문자를 보낼때도 이런식으로 써주기만 하면 되는데 자세한 전송결과를 알고싶다면 arreo.com 에서 제공하는 php 예제를 참고해서 send_sms 함수를 적당히 수정하는 것을 추천..
태그 : 태터툴즈

태터툴즈 고쳐쓰기 #8 - nofollow, whois 연결

별거 아닌 내용을 태터 수정 시리즈로 포스팅하려니 좀 뻘줌하지만 까먹지 않기 위하여..

댓글 부분만 약간 수정한건데 스패머들이 코멘트에 거는 링크를 검색순위 계산에 포함하지 않기위해 구글에서 새로 만든 rel="nofollow" 속성(관련링크)을 추가하고 리플러의 아이피를 클릭하면 new21.com의 IP 조회 페이지로 연결시키도록 수정.

   inc_function.php 파일 442 번째 줄의 아래 내용을 찾아서,
if ($homepage) $name = "<a href=\"$homepage\" target=\"_blank\">".str_tag_off($name)."</a>";
$body = nl2br(autolink(str_tag_off(" ".$body." ")));
if (return_authority() && $ip) $body .= " <font size=\"1\" face=\"tahoma\"> // $ip</font>";

   아래처럼 바꾼다
if ($homepage) $name = "<a href=\"$homepage\" rel=\"nofollow\" target=\"_blank\">".str_tag_off($name)."</a>";
$body = nl2br(autolink(str_tag_off(" ".$body." ")));
if (return_authority() && $ip) $body .= " <font size=\"1\" face=\"Tahoma\"><a href=\"http://new21.com/domain/whois.php?mode=whois&host=$ip\" target=\"_blank\">($ip)</a></font>";

구글이 하는 일이니 표준이 될 것 같기도 한데 그동안 여기저기 코멘트 달면서 조금씩이나마 구글 랭킹을 증가시켰던 짓은 이제 할 수 없게 되니 살짝 아쉽..;;
태그 : 태터툴즈

태터툴즈 고쳐쓰기 #7 - 글쓰기 화면 넓게 쓰기

태터툴즈의 게시물 편집 화면은 1024x768 화면에 최적화 돼있는데 19인치 모니터 이상의 큰 화면을 쓰는 사람은 다소 좁게 느껴질 수도 있다. 그래서 글쓰기 화면의 테이플 폭만 약간씩 수정. 1280x??? 해상도를 사용하는 모니터에 최적화 시켰다.

admin/article_edit.php 파일만 편집하면 된다. 각 라인번호대로 위의 문장을 아래처럼 수정.

181:
<table cellpadding="0" cellspacing="0" width="1003"><tr>
<table cellpadding="0" cellspacing="0" width="1259"><tr>

182:
<td width="430" valign="top" style="padding:20 5 5 5">
<td width="558" valign="top" style="padding:20 5 5 5">

254:
<td><input type="text" class="text" maxlength="80" name="title" value="<?=$title?>" style="width:328"><br></td>
<td><input type="text" class="text" maxlength="80" name="title" value="<?=$title?>" style="width:456"><br></td>

276:
<input type="file" size="34" class="button" name="uploadfile" style="margin-left:18; margin-top:10; width:295px;">
<input type="file" size="55" class="button" name="uploadfile" style="margin-left:18; margin-top:10; width:423px;">

281:
<td><select size="6" name="filelist" multiple style="width:203;" onchange="set_preview_image(this, document.getElementById('s_image'), '<?=$image_file_path1?>', '<?=$image_file_path2?>')"></select></td>
<td><select size="6" name="filelist" multiple style="width:331;" onchange="set_preview_image(this, document.getElementById('s_image'), '<?=$image_file_path1?>', '<?=$image_file_path2?>')"></select></td>

365:
<table cellpadding="0" cellspacing="0" width="510" bgcolor="#FFFFFF"><tr>
<table cellpadding="0" cellspacing="0" width="638" bgcolor="#FFFFFF"><tr>

그리고 마지막으로 태터툴즈 기본 에디터를 사용하는 경우에는,

270:
<textarea name="body" rows="18" cols="62" onselect="save_pos(this)" onclick="save_pos(this)" onkeyup="save_pos(this)" style="width:393; margin:5 0 0 18;"><?=str_replace("&", "&amp;", trim(set_body($body)))?></textarea><br>
<textarea name="body" rows="18" cols="83" onselect="save_pos(this)" onclick="save_pos(this)" onkeyup="save_pos(this)" style="width:521; margin:5 0 0 18;"><?=str_replace("&", "&amp;", trim(set_body($body)))?></textarea><br>

미니위니 비쥬얼에디터를 사용하는 경우에는,

miniwini.visualEditor.conf.php 파일의 42번째줄을,
"width"        => 521,
"height"       => 400,

miniwini.visualEditor.js 파일의 30번째줄을,
o1.style.width = "521px";
o2.style.width = "521px";

각각 이렇게 수정하면 끝.

화면의 가로 해상도가 1024->1280 으로 늘어나면서 전체 크기는 256, 나머지는 모두 128씩 늘렸다. 기타 다른 해상도로 수정할때도 위에 언급된 부분들만 숫자를 적당히 수정해 고치면 된다. 그리고 345번째줄의 width를 자신의 블로그 본문 폭과 같게 설정해두면 (내경우엔 630) 미리보기 화면과 블로그 출력화면이 동일해져서 블로그 화면 따로 띄워두고 편집할때마다 새로고침 해서 보는 짓은 하지 않아도 된다. (설마 나만 그런가;;)
태그 : 태터툴즈

태터 1.0 Classic에 미니위니 비쥬얼에디터 붙이기

태터툴즈 1.0 Classic 기준입니다. 0.93 이하는 이쪽을 참고해주시고 그 외의 버전은 검색사이트를 찾아보셔야 합니다;;

주의 : 이 방법대로 에디터를 붙이게 되면 태터 0.94부터 추가된 현재 커서위치에 그림파일 넣기, 태그넣기 등이 동작하지 않습니다. 0.93 처럼 무조건 태그는 선택영역을 만들어야 적용되고 그림파일 삽입 등은 무조건 문서에 맨 끝에 붙게됩니다.

1. 비쥬얼에디터 다운로드
미니위니 에디터는 EUC-KR 인코딩으로 작성돼있기 때문에 모두 UTF-8 인코딩으로 변경해줘야 합니다. 아래 via crizin.net 링크를 눌러 다운로드 하면 UTF-8로 변경된 파일을 받을 수 있습니다.

via 미니위니 / via crizin.net (utf-8)

2. 다운받은 파일을 태터툴즈가 설치된 폴더 (이하 /tt) 아래 admin 폴더 밑에 집어넣는다.

3. miniwini.visualEditor.conf.php 파일중 아래 표시된 부분만 따라서 수정한다.
"formName"       => "article_edit",
"textareaName"   => "body",
"defaultContent" => trim(str_replace("&quot;","\"", str_replace("&#39;","'",$body))),
"width"          => 423,
"overflow"       => "auto",
"styleWYSIWYG"   => "background-color:white;text-align:left;padding:5px;border:1px solid #cdcdcd;width:100%;word-break:break-all",

3-1. miniwini.visualEditor.conf.php 파일 맨 끝에 아래의 한줄을 추가한다
<meta http-equiv="content-type" content="text/html; charset=utf-8">

4. /tt/admin/miniwini.visualEditor.js 파일을 수정한다.
아래의 문장을 찾아
var o1 = document.getElementById(g_sVisualEditor);
var o2 = document.getElementById(g_sVisualEditor+"_code");

바로 뒤에 아래의 문장을 추가한다.
o1.style.width = "423px";
o2.style.width = "423px";

5. /tt/admin/article_edit.php 파일을 수정한다.

450번째줄의 아래 문장을, (450번째 줄은 수정하지 않습니다. 이미 수정하신분들의 원상복구를 위해 남겨놓습니다.)


350번째줄의 이 부분을 찾아,
<textarea name="body" rows="18" cols="62" onselect="save_pos(this)" onclick="save_pos(this)" onkeyup="save_pos(this)" style="width:423; margin:5px 0 0 18px;"><?=str_replace("&", "&amp;", trim(set_body($body)))?></textarea><br>

이렇게 고친다
<div style="text-align: center; margin: 5px 0px 5px 1px; overflow: auto"><textarea name="body" rows="18" cols="62" onselect="save_pos(this)" onclick="save_pos(this)" onkeyup="save_pos(this)" style="width:423; margin:5px 0 0 18px;"><?=str_replace("&", "&amp;", trim(set_body($body)))?></textarea></div>
<? include(dirname(__FILE__)."/miniwini.visualEditor.php"); ?>

키워드 수정 화면(/tt/admin/keyword_edit.php)도 위와 같은 방법으로 수정해준다.
각각 195, 135번째줄.

6. /tt/lib.js 파일을 수정한다.
440번째줄의 set_tag_support(obj, prefix, postfix) { ... } 부분을 아래의 내용으로 교체
function set_tag_support(obj, prefix, postfix) {
    if( obj.style.display == "none" )
    {
        var oRng = document.selection.createRange();

        if( oRng.text == "" )
            alert('\n본문에서 태그를 추가할 영역을 선택해 주세요.\t\n\n(마우스 드래그 또는 shift + 방향키)');
        else
            oRng.pasteHTML(prefix + oRng.htmlText + postfix);
    }
    else
        alert("소스보기 상태에서는 태그를 넣을 수 없어요 >.<");
}

237번째줄부터 나오는 to_article_1l, to_article_1c, to_article_1r, to_article_2c, to_article_3c, to_article_free, to_article_slide 총 7개의 함수 끝쪽의

set_tag_support(obj2, buffer, '');

이부분을 아래처럼 수정한다
document.getElementById("iView").innerHTML += "<br>" + buffer;

마지막으로 아래의 함수를 파일 끝에 추가한다. (--> 앞쪽에 넣을 것)
function playMultimediaFile(sUri,obj)
{
    var nPlayState = obj.getAttribute("isPlaying");

    if( nPlayState == 0 )
    {
        var el = obj.previousSibling;

        while (el.tagName != "A")
            el = el.previousSibling;

        try
        {
            el.insertAdjacentHTML("beforeBegin", "<EMBED autostart=true src='" + sUri + "'><br>");

            obj.setAttribute("isPlaying", 1);
        }
        catch(e)
        {
            var oMedia = document.createElement("EMBED");
            oMedia.style.display = "block";
            oMedia.src = sUri;
            oMedia.autostart = true;
            obj.parentNode.appendChild(oMedia);                
        }

        obj.setAttribute("isPlaying", 1);
    }
    else
        alert("이미 재생중입니다");
}

6-1. /admin/attach_image_pop.php 파일을 수정한다.
43번째줄의 아래 문장을,
set_tag_support(opener.form.body, '<?=addslashes(put_script($buffer))?>', '');

아래처럼 바꾼다
opener.document.getElementById("iView").innerHTML += "<br><?=addslashes(put_script($buffer))?>"

7. index.php 파일을 수정한다. (index.php 파일은 수정하지 않습니다. 이미 수정하신분들의 원상복구를 위해 남겨놓습니다.)


7-1. inc_function.php 파일의 222번째줄 nl2brc($str) { ... } 함수를 아래의 내용으로 교체한다
function nl2brc($str) {
    return str_replace("[HTML]", "", str_replace("[/HTML]", "", $str));
}

8. 사용하고 있는 스킨 파일의 skin.html 파일 <head></head> 사이에 아래의 문장을 추가한다.
<link rel="StyleSheet" href="admin/miniwini.visualEditor.css">

9. 아래의 SQL을 실행해서 입력돼있는 게시물의 줄바꿈문자를 <br />로 모두 바꿔준다. (기존에 태터 기본 에디터를 써오다 비쥬얼에디터를 처음 설치하는 경우에만 실행하면 됨)
주의1 : 비쥬얼에디터로 작성된 글에는 이 쿼리가 적용되면 안되고 태터 기본 에디터로 작성된 글에만 적용돼야 하니 비쥬얼에디터를 처음 설치하는 경우에만 실행해야 됨.

주의2 : 이 쿼리를 실행하면 [HTML][/HTML] 태그로 묶여있는 부분은 제대로 출력되지 않는다. 이럴땐 [HTML][/HTML] 태그를 제거해주면 제대로 출력 된다.

UPDATE t3_tts_10ofmg SET body=replace(body, '\r\n', '<br />');
UPDATE t3_tts_10ofmg_keyword SET body=replace(body, '\r\n', '<br />');


실행이 어려우신 분들은 아래 nl2br.php 파일을 태터툴즈가 설치된 디렉토리에 업로드 해서 실행해주시면 됩니다.
태그 : 태터툴즈

태터툴즈 고쳐쓰기 #6 - RSS리더에서 네이버 이미지 보기

태터툴즈 내장 RSS 리더에서 네이버 블로그를 볼때 이미지가 나오지 않게 되는 문제를 없애주는 방법..

1. 우선 HTTP 접속하는 PHP 클래스 여기 있는 http.php 파일을 받아서 계정에 올려놓고

2. 같은 경로에 아래의 내용을 getExtImg.php 등의 이름으로 저장한다
<?
    include "http.php";

    $url = $_GET["url"];

    if( $url )
    {
        if( strpos($url, "http://blogfiles.naver.net") === 0 )
            $h = new http("blogfiles.naver.net", 80);
        else if( strpos($url, "http://cafefiles.naver.net") === 0 )
            $h = new http("cafefiles.naver.net", 80);

        
$h->setTarget(substr($url, strpos($url, "/", 7)));
        $h->sendData();
        echo $h->getBody();
    }
?>

3. 태터 admin/reader_right.php 파일 140번째 줄을 이렇게 수정한다 (굵은 글씨로 된 부분은 자기 계정에 맞는 경로로 수정)
<td style="padding:5"><?=str_trans_rev(str_replace("http://cafefiles.naver.net", "http://crizin.net/getExtImg.php?url=http://cafefiles.naver.net", str_replace("http://blogfiles.naver.net", "http://crizin.net/getExtImg.php?url=http://blogfiles.naver.net", $description)))?></td>

이렇게 수정하면 네이버 블로그의 이미지를 보는 문제는 끝. getExtImg.php 만들어 놓은 김에 네이버 까페, 다음 까페, 싸이월드의 이미지 외부링크 할때도 사용하고 싶으면 getExtImg.php 파일을 아래처럼 약간 변경하면 된다. (다음 까페의 이미지 링크를 위해선 27번째줄 부분에다 자기 아이디랑 비밀번호를 넣어줘야 됨에 주의)

[ 다용도;; getExtImg.php 보기]


역시 사용법은 아래처럼 ?url= 뒤에 그림파일 전체 주소만 붙여넣어 주면 됨
<img src="http://crizin.net/getExtImg.php?url=http://blogfiles.naver.net/data1/2004/8/12/212/sp2-8051.png">

<img src="http://crizin.net/getExtImg.php?url=http://cafefiles.naver.net/data4/2004/11/6/160/hoohyacmd.jpg">

<img src="http://crizin.net/getExtImg.php?url=http://cyimg6.cyworld.nate.com/common/file_down.asp?redirect=%2Fs17201%2F2004%2F11%2F15%2F44%2FPB141260%2EJPG">

<img src="http://crizin.net/getExtImg.php?url=http://cafe168.daum.net/_c21_/pds_down_hdn?grpid=pXUS&fldid=9TUz&dataid=304&regdt=20040826113551&realfile=vvboaya_9.jpg&ln=null&grpcode=LOVES4&dncnt=N&.jpg">
태그 : 태터툴즈