정태영

sql injection 을 피하기 위해 single quote 를 escape 시켜주는 코드를 작성해야할 필요가 있었는데, 매번 하나하나에 대해 mysql_real_escape_string 을 호출해주는 건 너무나도 번거로웠다. 뭔가 간단하게 처리할 방법이 없을까 하고 찾아봤더니 왠걸! array_map 이라는 마법의 함수를 발견할 수 있었다.

function stripslashes_deep($var){ $var = is_array($var)? array_map('stripslashes_deep', $var) : stripslashes($var);   return $var; }   function mysql_real_escape_string_deep($var){ $var = is_array($var)? array_map('mysql_real_escape_string_deep', $var) : mysql_real_escape_string($var);   return $var; }   if( get_magic_quotes_gpc() ){ if( is_array($_POST) ) $_POST = array_map( 'stripslashes_deep', $_POST ); if( is_array($_GET) ) $_GET = array_map( 'stripslashes_deep', $_GET ); }   if( is_array($_POST) ) $_POST = array_map( 'mysql_real_escape_string_deep', $_POST ); if( is_array($_GET) ) $_GET = array_map( 'mysql_real_escape_string_deep', $_GET);

common function 들을 정의해놓은 파일 맨 아래 저 코드를 삽입해버리니 sql injection 따위 이제 두려워할 필요가 없어졌다. 움하하핫!!

p.s) 그냥 array_map 에 stripslashes 나 mysql_real_escape_string 을 사용하게 되면 array 가 넘어온 경우 문제가 생길 수 있어서 약간 수정을 했습니다.

정태영

아시는 분은 다 알고 계실 듯 하지만 추석 연휴 동안 unfix 서버의 아파치를 1.3 tree 에서 2.3 tree 로 버젼 업 했습니다.

몇 달 전쯤부터 gentoo 의 패키지관리 시스템인 portage 에서 apache 1.3 tree 를 위한 지원이 하나 둘 빠지기 시작했고, 급기야 1.3 버젼대가 아예 제거되버리는 일이 있었습니다. 1.3 tree 는 이미 안정화가 될만큼 된 상태고 거의 버젼업이 이루어지지 않기에 큰 문제가 되지 않았으나 모든 아파치 모듈들에 대해서 1.3 버젼에 대한 지원이 없어졌기 때문에 해당되는 모듈들을 업데이트를 하려면 대규모 수작업을 통해야만 하는 문제가 생기더군요. -_-;

근데 제가 apache 를 그냥 곱게 사용하는 것도 아니고, 몇 가지 패치를 넣어서 사용하고 있었기 때문에 2.3 tree 로의 업데이트는 마음의 준비가 필요했습니다. 더 끌어봐야 좋을 것도 없고, 며칠 전 포스트에서 밝힌대로 apache2 의 mod_autoindex 를 새로 해킹한 뒤! 가볍게 버젼 업!!

사실 작업은 30분이면 충분히 이루어질 줄 알았습니다. 근데 왠걸!!! apache-1.3 버젼대에선 <virtualhost myip> 식으로 적어놓아도 별 문제가 생기질 않았는데 apache-2.3 버젼대에선 :80 이라고 포트를 정확히 명시해주지 않는 이상 ssl 설정과 부딪히더군요. -_-; 하지만 이쯤이야 후훗! 가볍게 설정을 고친 후 아파치를 재시동하니 허억;;;

dev-lang/php 를 apache2 플래그를 빼먹은 채로 빌드하는 바람에 모듈이 생성되지 않았습니다. -_-;; 그 날따라 php 를 빌드하는게 어찌나 길게 느껴지던지… 삐질;;

여기까지 해서 아파치 + 여러가지 아파치 모듈과 관련해선 문제를 해결할 수 있었습니다만, 문제는 여기서 끝이 아니더군요. 갑자기 java 관련된 것들이 무슨 incompatible version 어쩌구저쩌구 에러를 일으키며 tomcat 이 시동되는 것을 막기 시작했습니다. (이때부터 좀 마가 꼈어요.)

하나 둘 다시 빌드를 해봤지만, 문제가 해결되는 것 같다가도 다시 미궁에 빠져버리더라구요;; 결국! dev-java 카테고리에 있는 모든 패키지들을 제거했다가 다시 설치하는 것을 통해 이 문제도 해결 -_-v

뭐 그 후로도 phpmyadmin 업데이트 후에 설정파일을 예전것 그대로 썼다가 여러가지 404 페이지를 겪기도 하고 … 하튼 제가 안쓰는 것들에 대해서도 좀 꼼꼼히 체크할 필요를 느꼈습니다. (이런거 확인하시면 혼자 알고 계시지 말고 메일로 좀 보내주세요. ㅠ_ㅠ)

하여튼 생고생 끝에! 이제는 apache, php, mysql, tomcat, ruby 등등이 다시 최신으로 업데이트됐습니다!! 키킥 언픽스 화이팅~!

정태영

개인적인 스크린샷을 올려놓거나 정모 사진등을 쉽게 업데이트 하기 위해 만들어 놓았던 갤러리를 공개해볼까 합니다 :) 워낙 simple 하기 때문에 이름을 Simple Gallery 라고 지을까 하는데 가져다가 쓰는 사람이 있을지는 모르겠군요 –;

사용법도 정말 심플합니다. 이미지 디렉토리에 ftp 등을 이용해서 파일을 올려놓기만 하면 자동으로 thumbnail 이 생성되고 리스트가 갱신됩니다. 라이센스는 예전 Directory Viewer 와 마찬가지로 BSD License 가 될 듯 싶네요

데모:
http://mytears.org/resources/etc/screenshot/linux/

개발버젼:
http://trac.unfix.net/browser/mytrz-gallery

라이센스: BSD License 예정

아직은 제대로 동작하지 않습니다. 현재 계획 중인 것들은

  1. smary 를 이용한 템플릿 지원
  2. image resizer 를 gd 와 ImageMagick 등 중에 선택가능

뭐 대강 저 정도입니다. 혹시나 쓰는 사람들이 하나 둘 생기고… 개선 요구가 있음 반영하도록 노력할 계획입니다 ;)

덧: 이상하게 이건 손이 안가네요.

Change Log:
2006/08/30
1. 개인 repository 를 통합하면서 svn 경로가 변경됨
2. 웹에서 svn 을 구경하기 위한 툴을 trac 으로 변경
3. 프로젝트 이름은 mytrz-gallery 로 변경

2006/01/06
1. 개인적으로 사용하던 걸 코드를 조금 정리하고 svn 에 import

정태영

gentoo 에서 php 가 dev-php/php, net-www/mod_php 로 나눠져 있던 것들이 dev-lang/php 로 통합되는 시점 쯤 해서 apache 와 관련된 모듈 위치라던가 설정 파일 관련해서 상당 부분 바뀌어버렸다. 손이 많이 갈 듯 해서 업데이트를 미뤄왔었는데, php 보안 버그도 몇 가지가 발표되고 한고로 귀차니즘을 무릅쓰고 살짝쿵 작업을 해줬다 :)
(more…)

정태영

예전에 수정해서 이쁘게 만들어 사용하고 있는 mod_autoindex 의 경우에는 아파치의 모듈이기 때문에 관리가 활성화 시켜주지 않으면 사용할 수 없는 단점이 있어서… 누군가에게 권하기도 그렇고… 수정하기도 매우 어려웠습니다…

심심하던 차에 아는 사람 부탁 겸… 해서 directory viewer 를 php 로 다시 작성했습니다… template 엔진으로 template_ 만 써보다가 smarty 를 처음 써봤는데 template_ 이 좀 더 쓰기 쉬운 듯 하기는 하지만… smarty 도 그런데로 쓸만한 것 같습니다…

[php:realpath] 란 함수를 사용해서 내가 지정해놓은 디렉토리 루트 밖으로는 나갈 수 없도록 해놓았고 수많은 버그가 있겠지만… 하튼 동작은 합니다…

데모:
http://mytears.org/tmp/dir/

다운로드 url:
http://mytears.org/resources/distfiles/directory-viewer-1.1.1.tar.gz

개발버젼:
http://trac.unfix.net/browser/mytrz-dviewer

라이센스: BSD License

참고로 템플릿 엔진은 smarty 를 쓰고 있는데, 제 서버에는 smarty 가 /usr/lib/php 밑에 설치되어 있기 때문에 따로 더 필요가 없었는데… 서버에 smarty 가 이미 깔려있지 않은 분들은 smarty 를 받아다가 풀어주는 센스가 필요합니다…

p.s) 혹시나 가져다가 새로운 디자인으로 고치신 분이 계시면 skin 관련해서 feedback 좀 부탁드리겠습니다 :)

Change Log:
2006/8/29
1. 개인 Repository 를 하나로 통합하면서 svn 경로가 수정됨
2. 웹에서 svn 을 둘러보기 위한 툴을 trac 으로 변경
3. 프로젝트 이름을 mytrz-dviewer 로 변경

2006/06/27
1. fancy size bug 수정
2. 1.1.1 버젼 릴리즈

2005/08/24
1. 스킨에서 경로도 표시가능하게 수정
2. taeyoung 스킨 추가
3. web_basedir 에서는 Parent Direcory 링크를 보여주지 않게 고침
4. 1.1 버젼 릴리즈

2005/08/17
1. kirrie 님의 스킨 추가
2. kukie 스킨 업데이트 (I.E 호환성이 더 좋아짐)

2005/08/13
1. Filename / Size / Modification Time 으로 역순 정렬이 가능해짐 (내림차순)
2. 설정 가능한 변수들을 config.php 로 빼냄
3. 숨긴 파일( 파일 이름이 “.” 으로 시작하는 파일) 을 보여줄지 말지 설정 가능해짐
4. BSD License 로 정하고 소스에 라이센스를 명시
5. Encoding 도 설정가능하도록 수정
6. 1.0 버젼 릴리즈

2005/08/12
1. XHTML 표준에 맞지 않는 부분들을 수정 validation 을 통과

2005/08/09
1. template_c 디렉토리의 퍼미션을 바꿔주는 인스톨용 스크립트 추가 (정말 퍼미션만 딱 바꿔줌 -_-);;

2005/08/08
1. 숨긴 파일 (파일 이름이 “.” 으로 시작하는 파일) 을 보여주지 않도록 함

2005/08/04
1. Filename / Size / Modification Time 으로 정렬이 가능해짐 (오름차순만 지원)
2. Skin 기능이 추가됨
3. svn repository 에 import 하고 누구든지 받을 수 있도록 공개

정태영

흠 한동안 귀차나서 그냥 내비뒀었지만 결국 php 5.0.2, mysql 4.0.22, apache 1.3.33 으로 업데이트를 완료했습니다. 다른건 모르겠지만 wordpress에서 login 버튼을 누르니 페이지가 제대로 로딩이 안되네요. 뭐가 문젠지 파악하기 위해 콘솔에서 실행시켰더니 segmentation fault!! (이른바 잘못된 메모리 접근!?) 뭔가 버그가 있는 듯 싶습니다. -_-!!

(저만 겪는 문제는 아니고 php 의 문제가 맞는 것 같습니다. 관련링크 )

그리고 mysql 도 4.1.7 로 업데이트 할려다가 하위 호환성 관련해서 깔끔한 해결책이 보이지 않아서 우선 내비두기로 했습니다.

또 class 관련해서 바뀐 점들 때문에 다람쥐 메일이 문제를 일으켰는데, 최신버젼으로 업데이트를 하니 문제가 해결되버렸습니다.

뭐 하튼 업데이트 완료입니다~!