웹싸이트 유지보수 잡감

대부분의 중소기업들처럼 따로 개발/테스트 서버를 두지 않는 곳의 아르바이트를 하고 있는데.(두둥) Apache, PHP, MySQL의 설정이 아주 복잡해주신다. 며칠동안 개발서버 설정을 만지고 있다가 문득, '크와악 운영에다 칼질을 해버려?'하는 충동을 받기 수십번. 참자. 참아야하느라 어흑 ㅡㅜ

Posted by 망고

2009/04/24 12:54 2009/04/24 12:54
Response
No Trackback , 3 Comments
RSS :
http://www.shimminkyu.com/tc/rss/response/1019

커맨드 라인 잡감

집에 리눅스를 설치해놓은지는 꽤 됐는데
실제로 사용하기 시작한 것은 얼마 안되는 것 같다.
좀 버벅대는 컴퓨터가 있어서 '파일서버로나 써야겠다'싶어서
데비안을 설치해놓고는 거의 쓰지 않았기 때문이다.
파일서버라고 해봐야 거의 예전 파일을 볼 일이 없기 때문에
필요할때만 켰다가 바로 끄는 정도?
그러다가 옛날 컴퓨터니까 전력소모가 적을 것이라는 가정하에
토렌트 파일을 받는 용도로 쓰이면서 용도변경(?)이 이루어졌다.
거의 켜져있다보니 간단한 웹서핑을 할때는 무척 유용하게 쓰인다.
은행업무나 기타 인증서가 필요한 일들을 빼고는 전혀 지장이 없다.
(이렇게 보니 요즈음의 컴퓨터 사용은 거의 브라우저 사용이 아닌가 싶다.
구글이 얘기하는 새로운 OS의 개념이 이런 것인 것 같다.
어떤 OS를 사용하건 크롬 위에서 동일한 동작을 보장한다는 것.
아직은-특히 한국에선- 아니지만 Firefox만하더라도 괜찮은 대체제가 된다.)

어쨌거나 리눅스를 사용하다보니 OS간의 철학이랄까 근본적인 차이점이 눈에 보이기 시작한다.

1. 리눅스는 철저히 Command Line Base의 OS다. GUI환경의 인터페이스가 제공되긴하지만 그것들도 Command Line 명령어의 Visual version일 뿐. Command Line에서 동일한 작업이 가능하다. 그러다보니 이 Command Line 명령을 스크립트로 실행시키는 것이 가능해지고 이럼으로써 엄청나게 복잡하고 시간이 걸리는 작업을 지루하게 Progress Bar나 보면서 기다리지 않아도 되게 된다. 물론, Command Line의 단순함과 명쾌함은 전체 파일시스템을 단한번에 날려버릴 수 있는 원천이기도 하다. 철저히 DIY의 정신이다. 할 수 있다면 해봐라. 단, 문제가 생기면 니 책임이다. 반면, 윈도우즈는 사용자를 보호하려 무진 애를 쓴다. 자신의 도끼로 스스로의 발등을 찍지 않도록 말이다. 하지만 능숙한 도끼 사용자라면 자신의 도구로 수염을 깎던 사과를 깎던 누군가 상관하지 않았으면 하기 마련이다.

2. 리눅스는 참 자료가 많다. 내가 리눅스와 관련된 책을 산다면 그것은 인터넷에 자료가 없기 때문이 아니라, 일일이 출력하려면 시간과 토너가 들기 때문이다. 마우스 클릭과 스크롤링과 붉게 충혈된 눈을 견뎌낼 수 있다면 아무것도 없어도 리눅스를 시작할 수 있다. 물론 MSDN에도 읽기에 부담스러울 정도로 많은 정보가 있긴 하다. 하지만 내 경험으로는 MSDN의 자료들은 특정 문제를 해결하는데 좋은 팁은 있지만, 해당 기술에 대해 잘 정리된 A-Z 자료는 부족한 것 같다.

어쨌거나, 1기가 메모리의 데비안은 며칠동안 켜두어도 멀쩡히 동작하는 반면, 2기가 메모리의 XP는 한시간만 켜두어도 메모리 부족 에러가 뜬다. 집에 비스타를 돌리기 버거운 컴퓨터가 놀고 있다면 리눅스를 한번 설치해보는 것도 좋은 경험이 될 것 같다. 물론 Geek을 향한 첫걸음이 될 것 같긴 하지만.

Posted by 망고

2009/04/23 15:43 2009/04/23 15:43
Response
No Trackback , 2 Comments
RSS :
http://www.shimminkyu.com/tc/rss/response/1018

또 사고쳤다

이번엔 주차하다가 기둥을 받았다.
후면주차를 하느라 뒤를 보면서 들어가던 도중
우측 앞쪽에 있던 기둥을 미처 못봤다.
결과는 앞범퍼 교체.
차가 있으니 편리하긴한데
(사고 안쳤으면 안들어갈 돈이긴하지만)
돈이 든다.
좁은 주차장 미워요.

Posted by 망고

2009/04/22 12:36 2009/04/22 12:36
Response
No Trackback , 7 Comments
RSS :
http://www.shimminkyu.com/tc/rss/response/1017

오늘의 삽질 MySQL 4.1.x 와 character set

어느 중소기업의 웹싸이트를 손봐주기로 했다.
따로 개발서버나 테스트 서버를 운영하고 있지 않았기 때문에
손을 보려면 먼저 개발 서버를 구축해야했다.
'하루면 되겠지...' 하고 생각했던 것이 벌써 며칠이 지나갔다.
문제는 다름아닌 character set 과 collation.

character set은 알파벳과 같은 특정 언어의 문자집합 그리고 collation은 그 문자집합의 구성요소들을 구분해주는 룰이라고 볼 수 있다. 자세한 내용은 위키피디어를 참조하고 한글을 사용하기 위한 character set은 주로 euc-kr, cp949, ISO-2022-KR utf8 등이 있다. 이걸 자세히 들여다보면 지옥인데... euc-kr 한가지만해도 어떤 어플리케이션은 euc-kr이라고 쓰는가하면 다른 녀석은 eucKR이라고 쓰기도 하고 euckr이라고 쓰는 녀석도 있다. 게다가 특정 데이터가 어떤 character set으로 이루어져있는가는 해당 charset으로 까보기전엔 모른다.

하여간 이게 어떤 문제를 야기했는가 하면
먼저 운영중인 웹싸이트의 웹서버는 Apache로 euc-kr로 운영중이고
DB서버는 MySQL 4.1.x로 역시 euckr로 운영중이었다.
여기까진 심플했다.

MySQL Administrator에서 DB 덤프를 뜨고 gFTP로 소스를 받아왔다.
SQL 덤프화일을 개발DB에 부어넣고 룰루랄라 웹페이지를 열었는데
오잉? 그리 낯설지만은 않은 물음표가 화면에 가득한거다.
바보 브라우저가 인코딩을 잘못 잡았나? 해서 요리죠리 바꿔봐도 글자는 꿈틀꿈틀거릴뿐 의미가 통하는 한글로 바뀌지는 않았다.

euc-kr로 출발해서 euc-kr로 읽었는데 인코딩이 깨진다라... 오 이런...
갑자기 머리속이 아득해졌다.
먼저, 소스화일들을 다운받은 gFTP는 어떤 인코딩을 쓸까.
DB를 백업받은 MySQL Admin은 또 어떤 인코딩을 쓰며
Apache2 웹서버는? 웹서버에 물려 돌아가는 PHP4는?
그리고 새 개발 MySQL DB는?
터미널인 Gnome Terminal은? 텍스트에디터인 Vim은?
거쳐온 모든 경로를 다 따져봐야한다 ㅡㅜ

결과적으로 MySQL Admin으로 받아온 SQL 덤프는 깨져있었다.
해서 SQLyog에서 다시 덤프를 받았다.
유니코드와 문제가 있다는 gFTP도 버리고 FileZilla로 다시 소스파일도 받았다.
phpmyadmin으로 import했던 sql dump도 command line mysql 명령으로 대체했다.
그렇게 해서 모든 중간단계에서 한글이 잘 읽히는데
마지막 브라우저에서는 여전히 일부 글자가 깨진다.
파일에서 읽어오는 한글은 제대로 나오는데 DB에서 읽어오는 글자들이 깨지는 걸보아
mysql_connect 쪽의 문제임을 직감했다.

해서 php mysql api쪽을 뒤지는데
mysql_client_encoding()이라는 함수가 눈에 띄었다.
커넥션 객체를 파라미터로 받아서 현재 사용중인 인코딩을 리턴해주는 함수. 오호라.
찍어봤더니 아니나 다를까 latin1으로 찍힌다.
난 설정화일을 euckr로 도배를 해놨는데 ㅡㅜ
이 latin1을 euckr로 바꾸려고 온갖 방법을 다 썼다.
하지만 바뀌지 않았다.

php manual에 보면 mysql_set_charset()이라는 매력적인 이름의 함수가 있는데 안타깝게도 php5부터 쓸 수 있는 녀석이었다. 지성이면 감천이랬던가 php4에서도 동작하는 mysql_set_charset()을 던져준 분이 있었으니
그의 이름은 vljubovic AT smartnet DOT ba


코드는 다음과 같다.
<?php
if (function_exists('mysql_set_charset') === false) {
   
/**
     * Sets the client character set.
     *
     * Note: This function requires MySQL 5.0.7 or later.
     *
     * @see http://www.php.net/mysql-set-charset
     * @param string $charset A valid character set name
     * @param resource $link_identifier The MySQL connection
     * @return TRUE on success or FALSE on failure
     */
   
function mysql_set_charset($charset, $link_identifier = null)
    {
        if (
$link_identifier == null) {
            return
mysql_query('SET NAMES "'.$charset.'"');
        } else {
            return
mysql_query('SET NAMES "'.$charset.'"', $link_identifier);
        }
    }
}
?>

이 녀석으로 db connection을 맺을때마다 강제로 set names 'euckr'을 실행시켜주면 결과값을 제대로 받아온다. 그리고 또 놀라운 사실은 제 아무리 euckr로 결과를 받아오고 있더라도 mysql_client_encoding()함수는 여전히 latin1을 반환하고 있다는 것.
알고보니 PHP4의 유명한 버그였더라 ㅜㅜ
이제 개발서버 세팅을 끝내고 제대로 일 좀 해야겠다.

Posted by 망고

2009/04/21 00:13 2009/04/21 00:13
Response
No Trackback , 2 Comments
RSS :
http://www.shimminkyu.com/tc/rss/response/1016

알집 해프닝

노트북이 한참 일하고 있는데 다운이 되버렸다.
문제는 종료가 안되기에 강제종료를 했는데
다시 부팅이 안된다는거.
음... 컴퓨터는 원래 그런건가?
아니면 윈도 사용자의 비애인건가?

영국에 가서 써야하니 이참에 영문판을 설치해버렸다.
한글로 되어있던 것들이 모두 영문으로 바뀌니 어색하긴 하다.
어쨌거나 이런 저런 세팅을 마치고 압축프로그램을 설치하던 중
국민 압축프로그램 알집과 관련해서 이상한 것을 발견하게 되었다.

영문 윈도우니 영문을 설치하려고 Alzip 영문판을 설치했는데
사용하려면 등록을 하라고 나오는거다. 엉? 알집 라이센스 정책이 바뀌었나?
오호라. 영문싸이트에는 얼마전부터 알집 무료가 없어졌다고 안내되어있다.
하지만 국내용 알집은 여전히 공개용이 출시되고 있기에
한글판이라도 설치하려고 했는데...
응? 이게 사용할 수 없을 정도로 한글이 모두 깨진다.
유니코드 문제인가?
이게 알집의 잘못인지, XP 영문판의 잘못인지 모르겠지만
어쨌거나 영문윈도우에선 알집 국내 공개판은 설치되지 않는다.
기묘한 진입장벽이다.

일단 오픈소스 압축프로그램 7-zip을 사용하기로 했다.
7z, ZIP, GZIP, BZIP2, TAR를 압축/해제 해주고
ARJ, CAB, CHM, CIPO, DMG, HFS, ISO, LZH, LZMA, MSI, NSIS, RAR, RPM, UDF, WIM, XAR, Z는 해제만 가능하다.
일단, ZIP이랑 RAR이 어떻게든 해제되니 별 불편함은 없을 것 같다.
게다가 CAB?, CHM?, ISO?, MSI?
이게 압축해제가 되는거면 앞으로 윈도우가 꼬여서 특정 화일이 없다는 에러를 뱉으면 해당 CAB에서 그 녀석만 뽑아낼 수도 있게 되는건가?

Posted by 망고

2009/04/20 10:21 2009/04/20 10:21
,
Response
No Trackback , 2 Comments
RSS :
http://www.shimminkyu.com/tc/rss/response/1015

Linux chroot?

리눅스(유닉스) 시스템에서 chroot란 동작 중인 프로세스가 특정 디렉토리를 루트 디렉토리로 인식하도록 함으로써 새로 설정된 루트 디렉토리 밖을 접근하지 못하도록 하는 것.

from wikipedia

Posted by 망고

2009/04/19 23:52 2009/04/19 23:52
Response
No Trackback , 2 Comments
RSS :
http://www.shimminkyu.com/tc/rss/response/1014

[Textcube Plugin] Recent Photo v2 개발중

1.
여기 블로그의 오른쪽 상단에 사진이 나오는 것 있죠.
그게 mangolog.tistory.com에 있는 제 사진 블로그의 rss를 파싱해서
가장 최근 이미지를 하나 뿌려주는 플러그인이랍니다.
동일한 기능을 하는 (실은 더 다양한 기능이 있는) 다른 플러그인이 이미 업로드 되어있기에 따로 배포는 하지 않았어요. 그런데 사용하다보니 좀 더 욕심이 생겼습니다.
이미지가 하나밖에 보이지 않는다.
너무 정적이다.
이런 생각을 하고 있던 중
최근 jQuery를 공부하다가 문득 이 녀석을 손을 좀 봐야겠다는 생각이 들었습니다.
일단, 서버쪽에서 php로 가져오던 RSS를 Ajax를 이용해서 클라이언트 쪽에서 처리해보기로 했습니다. jQuery에서 제공하는 DOM을 핸들할 수 있는 기능을 최대한 활용해보려구요.

2.
http://www.shimminkyu.com/sandbox/jquery/recentPhoto.html
개발중입니다. 확장자에서 알 수 있듯이 클라이언트단 자바스크립트에서 다 해결할 생각입니다. 실은, 약간의 꼼수가 있었죠. 클라이언트단에서는 원격 싸이트를 호출하려하면 파이어폭스가
Access to restricted URI denied" code: "1012
라는 에러를 냅니다. 보안상의 이유로 원격 싸이트를 접근하지 못하게 하는거더군요.
구글링해보니 이를 돌아가려면 세가지 방법이 있던데요.

첫번째, JSONP을 쓴다.
이 방법으로 받을 수 있는 것은 JSON형식의 데이타뿐. 고로 XML방식의 RSS Feed를 받아야하는 이번 퀘스트에서는 패쓰.

두번째, 플래시를 쓴다.
ㅡㅡ;; 이것저것 섞어 쓰는 걸 별로 좋아하지 않으므로 역시 패쓰

세번째, 프록시를 쓴다.
서버사이드에서 피드를 받아오는 페이지를 만들고, 그 페이지를 호출함으로써 원격 싸이트를 호출하는 것과 동일한 결과를 얻는 것인데요. 춘향이가 이도령을 만나야되는데 집에서 못나가게 하니까 향단이를 보내서 소식을 받아오는 셈이죠. 선택의 여지가 없이 이 방식으로 가기로 했습니다.

향단이는
http://www.shimminkyu.com/sandbox/jquery/xml_proxy.php
이 녀석입니다. 코드 몇줄 안됩니다.
url이라는 파라미터를 받아서 데이터를 받아오는 형태입니다.
위에서는 티스토리에서 rss를 가져오라고 시켜봤습니다.

어쨌거나 받아온 녀석을 jQuery의 Rss Feed Parser Plugin인 jFeed를 통해 이미지 파일을 파싱한다음 jQuery로 요리할 계획입니다. 현재까지의 결과는 보시는대로... 좀 더 이쁘게 다듬어봐야겠습니다. animate 기능도 써보고 싶은데... 오래 주물럭거릴 시간이 없을 것 같으므로 얼른 v2.0으로 내고 일단락해두어야겠습니다.

Posted by 망고

2009/04/15 16:59 2009/04/15 16:59
,
Response
No Trackback , a comment
RSS :
http://www.shimminkyu.com/tc/rss/response/1012

무손실 오디오 압축 오픈소스 코덱 - FLAC

FLAC (Free Loseless Audio Codec)
무손실 오디오 압축 오픈소스 코덱.
많이 쓰이는 mp3는 손실 압축방식인데 반해서 손실없이 압축을 해준다.
웹싸이트

다른 무손실 압축방식 코덱들에 비해 지원하는 하드웨어가 꽤 많다.
예를 들어, 이녀석 같은 것들.
예전 같으면 지름신이 왔다갔다 했겠는데
지름신도 지갑을 가려가며 방문하시나보다.

Posted by 망고

2009/04/15 15:59 2009/04/15 15:59
Response
No Trackback , 3 Comments
RSS :
http://www.shimminkyu.com/tc/rss/response/1011

4월 15일 수요일

1.
BBC를 Global News를 듣고 있는데 한국의 블랙 데이에 대한 뉴스가 나오더라.
발렌타인 데이에 연인을 만들지 못한 사람들이 모여 함께
짜장면을 먹는 날이라고 소개되었다.
익숙한 콩글리시 발음의 인터뷰도 곁들여서 :)
난 그냥 상술이라고 탐탁치않게 생각하고 있었는데
결국 상술도 문화인건가.
발렌타인 데이에 혼자인 영국 젊은이들이
이 뉴스를 듣고
'짜장면? 나도 그거 먹어보고 싶다'
고 생각할 모습이 떠올라
좀 혼자 재밌어했다.
그러는 난 어제 학교 식당에서 짜장면 먹었다.
면을 소진해버려서 소면으로 면이 바뀌었다며 아주머니가 미안해하시더라.
응? 외로운 학생들이 그리도 많은거야?

2.
학교는 시험기간으로 돌입했다.
학생들 눈빛부터 들고다니는 책의 무게까지
좀 무거워졌달까.
그래서 그런지 오늘은 날씨도 춥다.


Posted by 망고

2009/04/15 09:27 2009/04/15 09:27
Response
No Trackback , 5 Comments
RSS :
http://www.shimminkyu.com/tc/rss/response/1010

도서관으로 컴백

1.
아기의 열감기가 낫고
다시 도서관으로 돌아왔다.
지지난 주말이던가 my brother in law가 주고간
(정확하게는 yool's niece의 MP3 Player로 가는 도중에 남은 거지만)
대중가요를 들으며 - Lyn의 사랑 다 거짓말, 박정현의 비밀이 듣기 좋네 -
공부 + 일을 하고 있다.
가끔은 사랑하는 아내와 아기와 함께가 아닌
혼자 있는 보내는 이 시간이 너무나 소중하다.

2.
phpbb coding guideline을 읽고 있는데
참 이네들은 문서화를 참 잘한다는 생각이 든다.
뭐랄까 형식에 그다지 얽매이지 않으면서도
필요한 바를 잘 설명하고 있달까.

연산자 우선순위와 관련해서 이렇게 써있다.
Do you know the exact precedence of all the operators in PHP? Neither do I. Don't guess.

그리곤 아래 예제에

// what's the result? who knows.
$bool = ($i < 7 && $j > 8 || $k == 4);

풋. 그래 누가 알겠는가. PHP 엔진님이랑 Geek님들이 아시겠지 :)
예전에 WordPress 설치하면서 설치매뉴얼을 보면서 웃었던 기억과 일맥상통한다.
예전에 프로젝트 할때 기억을 떠올려보면 음... 코딩가이드라인은 거의 있으나마나... 짜집기한 개발팀이 시간에 쫓기는 프로젝트에 들어가면 소프트웨어는 블랙박스의 조립체가 된다.

3.
Lyn, 사랑, 다 거짓말


박정현, 비밀


구글은 한국의 실명제 정책에 반대한다는데
(다행히도) 한국어 검색은 잘 된다.
다음 아고라도 해외 서버로 이주한다는 기사가 떴던데 우리나라의 정책이 사람들을 바깥으로 내보내고 있는건 아닌지...온라인이든 오프라인이든 말이다. 씁쓸하다.

Posted by 망고

2009/04/14 12:07 2009/04/14 12:07
Response
No Trackback , 2 Comments
RSS :
http://www.shimminkyu.com/tc/rss/response/1009


Lilypie Fourth Birthday tickers

Stay Foolish, Stay Hungry.

- 망고

Site Stats

Total hits:
565657
Today:
451
Yesterday:
467