정태영

워드프레스 2.5 버젼에 대한 리뷰는 이미 많은 분들이 하셨으니;; 쩜쩜;; 하여튼! 워드프레스 2.5 버젼이 릴리즈되었단 소식을 듣고 바로! 업데이트를 감행했습니다. 제가 사용하던 플러그인들은 대부분 정상작동을 하는 관계로 업데이트는 아주 간단하게 끝낼 수 있었습니다.

업데이트를 하고 나니 관리자모드가 깔끔한 파스텔톤으로 보여지네요. 위젯을 통해 사이드바를 맘껏 조정할 수 있는 것이 매우 맘에 들었지만, 제가 사용하던 테마가 위젯을 지원하지 않는 관계로 테마를 바꿔야만 했습니다. 흑흑흑;;

꽃향기가 물씬 풍기는 테마로 바꾸고 살짝 맘에 안드는 부분을 제거해버리고 나니 -_-! 이젠 다시 제 집 같네요; 호호호; 그럼 다들 즐거운 하루 보내세요 캬캬캬캭

정태영

wordpress 2.0.5 버젼을 사용하고 있었는데 며칠 전에 갑자기 무슨 바람이 불어서인지 최신버젼으로 업데이트했습니다. -_-v 현재 버젼은 2.2;;

우선 크게 달라진 점은 모르겠고, ajax 로 구현된 comments delete 기능이 제대로 동작하질 않습니다. edit 링크를 누르고, delete comment 을 클릭해주는 것으로 문제를 피하갈 수 있습니다. 자주 사용하는 기능은 아니라서 크게 불편하지는 않네요.

그 외에 akismet plugin 에 의해 스팸으로 걸리진 코멘트들 목록의 경우 예전엔 페이지링크가 위 쪽에 밖에 없었기 때문에 다음 페이지로 넘어가려면 페이지를 다시 맨 위까지 스크롤해야하는 불편함이 있었습니다. 하지만 요번 버젼에서는 그게 아래 위로 다 붙어있기 때문에 상당히 편해졌네요.

또 관리자 메뉴에서의 계층구조가 조금 수정된 거 같기는 한데, 제가 쓰는 기능이래봐야 Write Post, Edit Post 정도 뿐이라 달라진 점이 크게 느껴지지는 않네요.

정태영

며칠전에 현석님과 대화 도중 hanrss 에서 제 블로그의 피드가 제대로 갱신되질 않는다는 소식을 듣게 되었습니다. 제 블로그를 시기하는 사람들이 안그래도 인기없는 제 블로그를 더 인기없게 만들기 위해 이런 음모를 펼쳤나보군요 -_-!!

사실 알고보니 그런건 아니고 rss 를 요청할 때 헤더에 Progma: No-cache 같은게 들어가있는 경우 Bad-Behavior plugin 에서 ‘요상한짓’ 이라고 판단을 해버리는거네요. 게시판에 rss 가 갱신되질 않는다는 글을 올리고 하루가 채 되기도 전에 문제점이 해결되었습니다.

저 빼고 35분이 제 블로그를 구독 중이시던데 (비인기블로그ㅠ_ㅠ) 이제는 제 포스트를 바로바로 구독 가능하실거에요.

p.s) hanrss 측의 빠른 대응에 감스드립니다.

정태영

Bunny's Technorati Tags 와 Jerome's Keywords 는 모두 wordpress 에서 tag 를 붙이는 데 사용할 수 있는 플러그인입니다. 그동안 그냥 아무 의미 없이 Bunny's 를 사용해왔는데, Jerome's Keywords 를 사용할 경우 tag cloud 라거나 tag 를 이용한 검색등이 가능해지길래! 과감하게 마이그레이션을 진행했습니다.

알게 모르게 태그를 달아놓은 포스트가 좀 되다 보니 -_-; 손으로 수정하기는 만만치 않고 프로그램을 짜자니 귀찮아서, 오랫만에 sql 놀이를 해보았습니다.

SQL:
  1. CREATE TEMPORARY TABLE wp_postmeta2 SELECT * FROM wp_postmeta;
  2. UPDATE wp_postmeta
  3.     SET meta_key='keywords', meta_value=REPLACE(trim(meta_value),' ', ',')
  4.         WHERE
  5.             meta_id NOT IN (
  6.                 SELECT meta_id FROM wp_postmeta2
  7.                     WHERE meta_key='keywords'
  8.             )
  9.             &&
  10.             meta_key='tags'
  11.             &&
  12.             meta_value!='';

위의 sql 문이 제가 migrate 를 하는데 사용한 query 입니다. update 할 대상을 sub query 에서 읽게 되면 에러가 발생하는 듯 싶어서 wp_metapost 테이블을 복제한 임시 테이블 wp_metapost2 를 만들어 작업을 해야 했습니다.

요 몇 일 Jerome's Keyword 포멧에 맞게 태그를 작성해놓은 글들이 있기 때문에, keywords 가 이미 있는 글들을 제외시켜야 했으므로, sub query 와 not in operator 를 사용했습니다. 나머지들 중 tags 란 키를 가지고 meta_value 값이 빈 칸이 아닌 경우에 한해서 tags -> keywords 변환과 meta_value 의 space(' ') 를 comma (',') 로 변경시켜주는 작업을 합니다..

혹시나 Bunny's technorati tags 를 쓰다가 Jerome's Keywords 로 갈아타고 싶으신 분들은 그냥 저 sql 문을 복사해다가 실행하면 되겠습니다. 단! subquery 를 지원해야하고 다른 table 을 복제해서 새로운 테이블을 만들어내야 하기 때문에 mysql 5.0 이상이 필요할 겁니다. table 복제를 알아서 해결하신다면 mysql 4.1 로도 가능할 겁니다.

Jarome's keywords 를 위한 포스트를 작성하신 적도 없다면 sub query 도 제외시킬 수 있으니 버젼에 관계 없이 사용가능할 수도 있겠습니다.

정태영

여기저기 돌아다니다 보니 멋진 플러그인들이 많길래 이것저것 추가해보았습니다.

1. Korean Trackback
이글루스에서 오는 트랙백이 euc-kr 로 인코딩되어 있기 때문에, utf-8 기반의 워드프레스에선 이글루스에서 보내는 트랙백을 제대로 받을 수 없기에... 직접 플러그인을 작성해서 추가해줬습니다. -_-v

url: http://b.mytears.org/2006/09/396

2. iG:Syntax Hiliter
혹시나 포스트에 프로그램 코드를 삽입할 일이 있을 경우를 대비해서, 코드 하일라이팅을 위한 플러그인을 추가했습니다. 상당히 많은 언어를 지원합니다만 sh (쉘스크립트) 는 지원하지 않아서 약간 아쉽네요. 사용 예는 아래와 같습니다.

C:
  1. #include <stdio .h>
  2.  
  3. int main( int argc, char** argv ){
  4.  
  5.     fprintf( stderr, "%s\n", "Hello World" );
  6.     return 0;
  7.  
  8. }

url: http://blog.igeek.info/wp-plugins/igsyntax-hiliter/

3. wp-scripts, ajax-spoiler
wp-scripts 는 prototype.js 등을 헤더에 삽입해주는 역할을 하고, ajax-spoiler 는 tt 에서와 같이 텍스트를 숨겼다가 보여줬다 하는 기능을 사용할 수 있도록 해줍니다.

tt 처럼 그냥 단순히 보였다 감췄다 정도가 아니라 애니메이션 효과까지 줄 수 있어서 상당히 멋드러집니다. ;) 적용 예는 아래와 같습니다.

apblind 이펙트 사용예 »

blind 이펙트 사용예 »

appear 이펙트 사용예 »

phase이펙트 사용예 »

url: http://082net.com/tag/wp-scripts/
url: http://082net.com/tag/aj-spoiler/

4. bad behavior
request 를 분석해서 봇이라고 생각되면 차단합니다. 적용 후 확실히 스팸이 줄었습니다. (하루 120 통 쯤에서 10통 이하.. 그나마 akismet 에 나머지는 걸립니다.)

url: http://www.homelandstupidity.us/software/bad-behavior/

조금만 부지런하면 이래저래 편리해지는 아름다운 워드프레스 세상입니다. 혹시 또 멋진 플러그인들을 알고 계신 분들은 트랙백 부탁드리겠습니다. ;)

정태영

개인정보의 유출에 민감하며, https 를 사용할 수 있는 서버를 가지고 있는 사용자들을 위한 간단한 rewrite rule 을 소개하고자 합니다. 오픈웹 사이트를 보면 워드프레스에서 사용자 등록, 로그인, 관리자 모드 등에서는 https 를 사용하도록 리다이렉션이 일어나는 모습을 확인할 수 있습니다.

시작하기에 앞서 이 방식은 아래의 조건을 만족해야 사용할 수 있습니다.

  1. 내 사이트를 https 로 접근이 가능
  2. mod_rewrite 를 사용가능
  3. .htaccess 를 이용 rewrite rule 을 override 가능

워드프레스 루트 디렉토리의 .htaccess 에 들어가야 할 rule 은 다음과 같습니다. (rewrite base 는 wp 의 root location 에 맞게 수정해주면 되겠습니다.)

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# For a site running on port 443 (http over ssl)
RewriteCond %{SERVER_PORT} !^80$
RewriteRule !^wp-(admin|login|register)(.*) - [C]
RewriteRule ^(.*)$ http://%{SERVER_NAME}/$1 [L]

# For a site running on port 80 (http)
RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^wp-(admin|login|register)(.*) https://%{SERVER_NAME}:10001/wp-$1$2
[L]

RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

뭔가 복잡하죠 :) 부분부분 설명을 드리자면 아래와 같습니다.

# For a site running on port 443 (http over ssl)
RewriteCond %{SERVER_PORT} !^80$
RewriteRule !^wp-(admin|login|register)(.*) - [C]
RewriteRule ^(.*)$ http://%{SERVER_NAME}/$1 [L]

80번 포트가 아닌 포트로 접속한 경우를 https request 라고 판단을 하고, 그 중 request uri 가 wp-admin, wp-login, wp-register 와 관련된 것이 아닌 경우에 한해 80번 포트로 리다이렉션을 일으킵니다.

결과적으로 https://b.mytears.org:10001/2005/03/136 과 같은 url 을 http://b.mytears.org/2005/03/136 으로 연결시켜주는 역할을 합니다. (이 url 의 경우 개인적으로 심혈을 기울여 수정했음에도 봐주는 이가 없어서 -_-! 밀어주기를 위해 이런 예제에 자주 사용할겁니다. 캬캬)

# For a site running on port 80 (http)
RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^wp-(admin|login|register)(.*) https://%{SERVER_NAME}:10001/wp-$1$2
[L]

80번 포트로 들어오는 요청 들 중에 wp-admin, login, register 등과 관련된 것들에 한해서 https 로 리다이렉션 시킵니다. %{SERVER_NAME} 뒤에 :10001 이 붙은 것은 제 https 서버가 10001 포트에서 돌고 있기 때문입니다.

RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

지금까지 조건에는 해당되지 않은 경우들 중에 실제 서버에 있는 파일이나 디렉토리에 대한 요청이 아닌 경우 index.php 파일을 불러오게 됩니다. wordpress 의 fancy url 을 사용하는 경우를 위한 설정이 되겠습니다.

간단하죠? ;)

정태영

워드프레스 한글 트랙백 문제를 해결하는 plugin 을 만들고 여기저기 트랙백 하러 다니다가 올블로그에서 워프 사용자들을 조사하기 위한 트랙백 링크가 있길래 가볍게 트랙백 날립니다. 슝슝~

link: http://tbmoim.allblog.net/71