블로그 이미지
namGoos
IQ.152 천재 남구스

calendar

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      
    2007/07/03 23:19 Web Dev/PHP
    C SDK를 PHP에서 불러서 사용하려고 하는데..
    28시간째 삽질... 도대체 왜.. 왜..왜..




    안되는거야... 아놔.. OTL...
    크리에이티브 커먼즈 라이선스
    Creative Commons License
    posted by namGoos
    TAG PHP, swig
    2007/05/23 16:04 Web Dev/PHP

    어디 까지나 제가 써본 프레임 워크라서 주관적인 결과입니다..^^;

    저의 목적은 어디 까지나 가볍고 빠르고 영문 메뉴얼의 디테일한 설명을 기준으로 말씀을 드린다면..  zend / symfony / cakePhp 등이 있겠으나..

    http://codeigniter.com 의 CI가 최고 인듯합니다.
    지금 현재 이녀석으로 개발중이지만 FancyURL과 mod_rewrite의 부분이 처음에 좀 문제였지만 역시나 활용도나 확장성은 나물랄때가 없었습니다..

    또한 Php4와 php5를 모두 지원하고 Db와 템플릿 등 확장성에는 제 입맛에 가장 좋았습니다. 
    그리고 뭐니 해도 영문 메뉴얼... PDF로 Reference 한장에 쫘악 보기 쉽게 나열 한거 부터며 상세한 메뉴얼등이 좋았구요.. 포럼과 wiki를 통해 공개 라이브러리가 쓸만한게 많더군요..

    동영상으로 블로그 제작 기법등 소개 하는 메인 메뉴얼을 보시면 어떻게 구현이 되는지 충분히 이해가 되실겁니다.

    프레임워크에 관심이 있으신분은 한번 보시구요.,.

    가장 뭐니 뭐니해도 자신(=회사)에게 가장 필요한 부분을 제공하는 프레임워크가 최고의 프레임워크가 아닐까 합니다.

    이번 포토바다 프로젝트 기본 프레임 워크는 역시나 CI 입니다.
    크리에이티브 커먼즈 라이선스
    Creative Commons License
    posted by namGoos
    2007/05/04 00:54 Web Dev/PHP
    가장 기본적인 XML 규약인데 이것을 무시하고 AJAX개발을 한답시고 삽질 하다가 오늘 하루 다 보냈습니다. 알고 있었던 부분이지만 오래만에 XML관련 작업을 하다 보니 미쳐 생각을 못했던 부분이네요..

    header("Cache-Control: no-cache, must-revalidate");
    header("Content-Type: text/xml; charset=utf-8");
    해더에 꼭 content-type을 text/xml로 하셔야 합니다. 그리고 cache부분은 ajax로 XMLHTTPREQUEST로 호출을 하는 부분이기 때문에 Apache에 캐슁이 안되도록 하는 것이 정보의 정확성을 높일 수 있을 것입니다.

    AJAX 공부 하시는 분들.. 꼭 이 부분을 잊으시면 자바스크립트 오류로 인해서 삽질 하시게 될지도..^^
    크리에이티브 커먼즈 라이선스
    Creative Commons License
    posted by namGoos
    2007/05/04 00:53 Web Dev/PHP

    요즘 정신없이 개발을 하다가 문득 개발자의 코딩 스타일에 많은 관심을 가지게 되면서 DBA 직종의 분들의 소스를 가끔 훔쳐 봅니다. 긴 SQL의 내용은 가로 80라인을 넘어서 New Line 보단 아래로 풀어서 쓰는게 소스 가독성면에서는 뛰어 나다는 것을 깨우치고 작년 부터 SQL 구문은 아래와 같이 사용합니다.

    $sql = "
       SELECT
           SEQNO, USERID, GBN, DIRECTORY, DEPTH, CREATETIME
       FROM
           {$strTbName}
       WHERE
           SEQNO = {$this->SeqNo}";
    $result = mysql_query( $sql ) ;
    $intDownCount = @mysql_result( $result, 0, 0);
    뭐 이런 형태로 사용을 하는데 저 렇게 사용하지 않고 일반적으로 사용하면
    $sql = "SELECT SEQNO, USERID, GBN, DIRECTORY, DEPTH, CREATETIME FROM {$strTbName} WHERE SEQNO = {$this->SeqNo}";

    구독력이 좀 떨어지죠..? SQL구문이 80 라인에 모두 들어 간다면 1줄에 괜찮겠지만 많은 량의 쿼리 구문이라면 이런 코딩 스타일도 괜찮을 듯 합니다.
    크리에이티브 커먼즈 라이선스
    Creative Commons License
    posted by namGoos
    2007/05/04 00:52 Web Dev/PHP

    요즘 소리바다 웹하드 서비스인 파일바다 개발에 한참 열을 올리고 있습니다. 스토리지 이전 때문에 정신없이 시간 가는줄 모르는데 벌서 4월 중반이 되어 버렸습니다. ^^;

    요즘 제가 DEBIAN LINUX에서 CGI 개발 한다고 5년만에 다시 GCC를 이용해 C 프로그램밍을 하는데 참 이거이 .. --; PHP가 참 개발 하기 편하구나라고 새삼 또 느끼게 되었습니다. 이놈의 Pointer와 메모리 선언.. 변수형등.. 그리고 함수라고는 몇개 안되고.. SI업체의 라이브러리를 사용해야 하기 때문에 문자열 함수등은 모두 자체개발을 통해 이용해야 하는데 Path경로 자르기 하나 만드는데 머리 터지는 줄 알았습니다.

    기존에 PERL로 만든 FILE SYSTEM CGI만들 때도 궁시렁 궁시렁 했지만 PERL 또한 참으로 발전한 언어라고 생각이 들 정도 C의 보수적인 개발 환경.. LINUX 콘솔에서 MAN PAGE와 VI를 통한 개발은 WINDOG XP 와 EDITPLUS의 단축키에 익숙한 저로선 너무나 힘든 개발이었습니다.

    하지만 여기서 중요한 것은 까탈스럽고 건조한 GCC의 환경과 C의 메모리 관리체계야 말로 시스템 개발에 가장 안정적인 환경과 메모리 누수를 막기 위한 가장 엄격하다고 할 수 있을거 같습니다. 사실 PHP로 개발을 하다 보면 에러와 Warring만 안뜨면 그냥 넘어 가지만 사실상 효율적인 코딩 스타일이 아니면 향후 Debuging 할때 많은 시간이 소요 되기 마련입니다. 사실 설계와 코딩 시간은 얼마 되지 않지만 디버깅 할때 아무리 부라우져에 찍어봐도 원인 모를 오류 때문에 시간을 많이 빼긴적이 한두번이 아니거든요...

    서론이 너무 길었네요.. 본격적인 남구스의 Coding Style #1

    그래서 오늘은 저의 코딩 습관에 대해 말씀 드리고 싶습니다. 제가 표준은 아니지만 나름대로의 철학(?)과 해외 유명한 코더들의 습관을 배울려고 많은 노력해서 오늘 여전히 이런 습관을 가지고 개발을 하고 있습니다. 그 중에 몇가지만 소개 하겠습니다.

    IF문 비교

    가장 많이 사용하시는 제어문은 IF문이 아닐까 합니다. 하지만 좀더 신경을 쓰면 디버깅 오류의 확율을 줄일 수 있습니다.

    ex1)
    if ( TRUE === empty($val) ) {
    echo '$val의 값이 비어 있습니다';
    }

    제가 문자열 함수를 자주 사용하는 이유는 리턴값이 TRUE와 FALSE로 표현되는 것이 많은지라 IF문을 사용할 때 자주 이용합니다. 위의 보시면 PHP에서의 비교연산자 '===' 가 나오는데 생소하시는 분들도 계시고 기존의 '=='와 차이가 없을꺼라고 하실지 모르지만 분명한 차이가 있습니다.

    '===' 형과 값이 같을 경우 TRUE/FALSE
    '==' 값이 같을 경우 TRUE/FALSE
    ex2)
    $intValue = 1;

    if ( '1' === $intValue ) {
    echo '$intValue = str 1';
    }
    if ( 1 === $intValue ) {
    echo '$intValue = int 1';
    }
    if ( 1 == $intValue ) {
    echo '$intValue = int 1';
    }
    if ( '1' == $intValue ) {
    echo '$intValue = str 1';
    }
    //print out
    $intValue === int 1
    $intValue == int 1
    $intValue == str 1

    무슨 차이가 있으신지 아시겠죠..? if ( '1' === $intValue ) 부분은 '1'이 int형이 아닌 str형이라서 FALSE라 결국 거짓으로 다음 IF행을 실행하겠죠..? 형선언이 없고 자동 형변환이 PHP의 장점이긴 하나 이런 부분을 이해 없이 개발을 하다보면 어디서 버그가 생겼는지 찾기가 힘듭니다.

    그러면 여기서 하나 더 보시죠.. 제가 즐겨 쓰는 변수 비교 형태입니다.
    위에 보시다 시피 비교문에서 보통
    if ( $intValue == '1' )

    이렇게 쓰는게 보편적인것인데..
    if ( '1' == $intValue )

    라고 쓴 이유는 초보 분들이 간혹 이런 실수를 하시는데 '==' 비교 연산자를 '=' 대입연산자(변수 복사 연산)로 오타를 낼 경우에 값이 바뀌게 되어 버리는 경향이 있습니다.
    if ( $intValue = '1' )

    그래서 왜 값이 변했는지 찾기가 힘들 경우가 종종 있는데요.. 이럴때 변수 대입을 방지 하기 위해서 상수를 왼쪽에 두개 되면 상수에 변수를 대입을 할 경우 즉,
    Parse error: parse error, unexpected '=' in /var/www/Process/namgoos.php on line 66

    이라는 에러와 함께 종료 되기 때문에 66째 라인에가서 '=' 로 되어 있는 녀석을 '==' 로 수정 하면 금방 버그를 찾을 수 있겠죠..?

    해외 phpFrameWork소스를 분석 중에 클래스와 함께 이런 형태로 많이 구현을 하고 있는 것을 보았습니다. PHP에 적절히 장점과 단점을 함께 활용한 사례라 생각되어 오늘까지 줄기차게 쓰고 있는데 혹시라도 개발자 여러분들 중에서 필요하시다면 이런 습관을 지금부터라도 바꾸신다면 디버깅하는 시간이 다소 줄어들 것이라 생각됩니다.

    아니면 말구요..~ :)
    크리에이티브 커먼즈 라이선스
    Creative Commons License
    posted by namGoos
    2007/03/13 23:52 W.W.W
    뭐 거창하게 프로젝트까지는 라고 할 것은 없지만 언제나 PHP FrameWork에 대해 많은 연구와 테스트를 해왔으나 언제나 느끼는 것은 다양하지 않는 Document와 Reference 등의 부재로 많은 개발자의 어려움이 있다는 걸 느끼고 있습니다.

    따라서 크게 능력은 되지 않지만 현재 Code Igniter의 FrameWork을 사용하면서 번역 및 사용 예제를 기반으로 프레임워크 뽀개기 프로젝트를 진행을 해볼까 합니다. 담주에 회사 프로젝트가 끝나면 WIKI등을 이용해서 각종 프레임 워크 소개를 하는 공간을 만들어 볼까 합니다.

    만들고자 하는 분야는 PHP FrameWork , Ajax FrameWork , CSS2.0, xHTML, FLEX등이 되겠습니다.


    프레임워크에 관심이 많으신분들 께서는 코멘트를 달아 주십시오. 구체적인 요구 부분이나 혹시나 참여 하실 분들의 의견을 수렴 해보도록 하겠습니다.

    결국 오랜만에 포스팅을 하게 되네요..^^;
    크리에이티브 커먼즈 라이선스
    Creative Commons License
    posted by namGoos
    prev 1 next