2006/10/30 4

mysql_real_escape_string의 황당한 시츄에이션

mysql_real_escape_string(이하 MRES)는 서버와 클라이언트간의 케릭터 셋에 따라 인풋값을 적절히 이스케이핑 해주는 함수이다. mysql_escape_string(이하 MES)이 연결정보를 확인하지 않기에 PHP 4.3.0부터 추가된 함수이다. 그러나... DB도 UTF8이고 접속할 때 "SET CHARACTER SET 'utf8'"을 넣어주고 난리를 쳐도 환경에 따라서 저놈이 이상한 짓을 할때가 있다. "ㅋㅋㅋ"라는 한글을 입력하였을 때 "\ㅋ\ㅋ\ㅋ"라고 나타난다면 바로 이 상황인 것이다. 현재 추측하기로는 서버의 셋팅이 한번 euckr 등으로 고정되면 어떠한 짓으로도 이게 변환이 안되어 MRES가 utf8 문자들을 이스케이핑 해 주는 것으로 보인다. 만약 Table의 컬럼이 모두..

재개발

개발자가 흔히 하는 말중에.. 지금 구린 코드는 버리고 새로 짜야 한다라는 주장이 있다. 맨날 뭐 하나 고치려면 머리 두뭉큼은 빠지는거 같으니 날잡아서 새로 개비를 합시다라고.. Refactoring이라는 말이 등장했을때 많은 개발자들이 열광한 것이 이런 이유일 것이다. Refactoring은 기존의 코드를 버리고 새로 작성하는 것은 아니다. 정확한 번역은 "정리"가 아닐까 한다. 임시방편으로 연결된 바이패스(막힌 지점을 우회시키는 혈관)를 제거하고 원래의 길을 제대로 수행되도록 수정하는 작업일 것이다. 물론 앞으로 생겨날 혈관협착도 고려해서 말이다. 기존의 코드를 폐기하는 것은 상당한 낭비이다. Project Planning에서 기존의 코드는 훌륭한 Asset의 목록이 된다. Asset이란 개발 Cos..

기획자 vs. 개발자

늑대와 양만큼이나 서로 으르렁 거리는 관계가 있다면 바로 기획자와 개발자이다. 개발자 출신의 기획자나 기획자 출신의 개발자가 도움은 되지 못한다. 언제나 상황은 한쪽에 서게 만들기 때문이다. 요즘은 오픈소스조차 빌어먹을 상용 소프트웨어를 박살낼 획기적인 기능을 내포하길 원한다. 그리고 발표시기도 상당히 정치적이다. 자선단체도 이윤을 내야 영속할 수 있는 상황인 것이다. 경쟁중인 분야의 소프트웨어는 신기능이 빠른 시간 안에 나와야 하고 그것이 상대를 압도할 정도로 획기적이어야 한다. 개인적으로는 그냥 영리업체가 돈 펑펑 쓰면서 개발해 낸 기능을 낼름 카피하는게 더 효과적일 것이라고 생각하지만.... 아무튼 이런 상황에서 기획자가 쉽게 하는 실수는 너무나 강력하고 획기적인 기획을 내어 놓아 기존 버전의 프로..

Quality Assurance

개발자는 프로그램의 기능이 동작하게 하고 테스터는 프로그램의 기능이 오동작하거나 동작하지 않는 경우를 없앤다. - 겐도 - 테스팅에서 가장 먼저 수행하는 것은 Smoking Test일 것이다. 전기제품을 만들었을때 전류를 가해서 어디 타는 곳이 없나 확인하는 작업에서 유래된 이 말은 어플리케이션을 만들고 릴리징 준비 단계로 들어갈 때 실제로 설치하거나 배포(Deploy)를 수행한 후 가동을 시작해 보는 작업이다. 수없는 단위 테스트로 인해 이미 더러워질 데로 더러워진, 즉 시스템의 상당 부분이 해당 프로그램이 동작하도록 설정된 환경을 벗어나서 깨끗한 곳에서 동작성을 테스트 하는 이 과정조차 한번에 되기란 그리 쉬운 것은 아니다. DLL이 누락되었거나 버전이 안맞을 수도 있고 임시 파일이나 레지스트리등의 ..