개발&Development 190

천기누설

태터 1.1의 RC4가 현재 패키징이 완료된 후 공개될 준비를 하고 있습니다. 교주(?)님이 온라인상에 나타나기만 하면 공개가 바로 될 것입니다. 이번엔 좀 빡시게 테스트를 하였습니다. 현재 스킨의 일부 누락 이미지와 번역만 완성하면 바로 정식으로 할 수 있을 정도의 수준을 생각했고 덕분에 후보 첫번째 패키징에서 대박 버그들 잡느라 죽는 줄 알았습니다. 후보 2,3이 지나 4번 후보만에 공개 결정을 하였습니다. 이제 이쁜 상자 만들고는 담아서 주말쯤에 공개될 것 같군요 :) 그리고는.. 깨꼬닥~~~

태터 제작 방법론

1.1 RC3을 출시하고는 (관련발표) 비가 그치기를 기다리면서 주절주절. 주로 내부 PHP 함수와 QA만을 전담하다 이번에 CSS와 JS까지 손보는 작업까지 하면서 나름대로 세운 기준들을 적어볼까 합니다. 1. Static과 Dynamic의 분리 이번에 사이드바 ajax 코드를 넣으면서 고민 되었던 것은 로딩 시간입니다. 최초 로딩이야 어쩔 수 없다지만 매번 10년씩 걸리면 문제가 생길 수 밖에 없죠. CSS도 커지고 JavsScript의 양도 데이터를 능가할 정도로 커졌습니다. 말 그대로 사이트가 2~3배 느려질 수 있는 요소입니다. JS와 관련해서는 좀 쓸데없이 함수를 부르는 경향이 커지더라도 스태틱한 JS 부분을 만들어 외부 파일로 빼는 것이 좋은 것 같습니다. PHP에서 생성해야 하는 JS부분도..

태터툴즈 1.1 - Blog API

1.1에 추가된 기능중에 Blog API를 일부 지원하는 것이 있죠. 한번 맛배기를. http://windowslivewriter.spaces.live.com/ 에 가면 MS Live Writer beta 버전을 받을 수 있습니다. 다른 툴들도 있겠지만 이것을 한번 사용해 보죠. 우선 플러그인 목록중에 Blog API를 활성화 시킵니다. 물론 이것 없이도 가능은 합니다. 이 플러그인은 좀 사용을 편하게 해 주는 것이죠. 이제 Live Write를 실행합니다. 처음 실행하면 계정 설정이 나오며 이미 사용중이신 분들은 계정 추가를 하시면 됩니다. 블로그 종류를 설정하는 화면에서 "Another weblog service"를 선택합니다. 이제 홈페이지 주소와 로긴용 이메일 ID, 패스워드를 입력합니다. Blo..

산고 - 태터툴즈 1.1 - 마지막 달리기를 시작하며

처음 나오기로 했던 때는 지나간지 오래고 최근에 작업하면서 선언했던 10월 말 릴리징은 일단 연기가 되었습니다. (참고 from TnF Forum) MS를 따라 하는 듯한 느낌이 들지만 아무튼 막판의 IE7를 핑계삼아 몇일 늦게 나올 예정입니다. 물론 IE7이 이유의 전부는 아닙니다. 최근에 일부 호스팅 환경에서 오동작 하는 버그 몇가지를 확인하면서 이에 대한 안정성 확보 작업도 상당한 영향을 주고 있습니다. 더불어 각 기능에 대한 세밀한 테스팅을 하면서 시간의 여유를 가지고 작업을 하는 것으로 결정을 하였습니다. 일단 연기를 하고 보니 주위의 반응이 색다릅니다. 기존까지는 판매 목적의 프로그램만을 작성하다 보니 듀가 늦어진다고 말하는 순간 개발팀을 제외하곤 모든 사람들이 아우성을 쳤었는데 이번에는 배포..

Event Driven과 Multi-Threading

Why Events Are A Bad Idea Prefer Multithreading to Event-driven in Highly-Concurrent Servers from http://lastmind.net/ 간만에 좀 어려운 글좀 읽었더니 살포시 머리에 쥐가 오네요. Event-Driven(ED)과 Multi-Thread(MT) 기법은 서로 연관이 많습니다. 이것을 OS나 어플리케이션 서버가 구동시켜 주기 위해서는 결국 세마포어(Semaphore)라던가 블라블라들의 기능들을 요구합니다. 이동네가 그렇듯 ED는 MT로 구현할 수도 있고 반대로도 가능합니다. 현재 개발해야 하는 환경이 일단은 한쪽을 더 잘 지원한다면 그쪽으로 손이 가게 마련입니다. 그리고 위의 두 글에서 보듯 처음에는 ED로 구현하는 ..

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. 개발자

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