PHP Framework 링크

Web Prog 2010. 7. 9. 15:48


framework 벤치마크
Posted by Uzys
TAG framework, PHP

댓글을 달아 주세요


2.x 부터는 Aptana PHP Plugin 개발이 중단되고 PDT를 쓰라고 해서 말이죠....

Aptana PHP를 계속 쓰시고 싶으신 분은

1. Aptana -> Help -> Install New Software
2. Add http://update.aptana.com/install/php
3. Aptana PHP 선택 하고 인스톨 

SVN 플러그인이 없는 분은

Aptana -> Help -> Install Aptana Features
Others -> Subclipse 설치 후 위 순서대로 설치

Posted by Uzys
TAG Aptana, PHP

댓글을 달아 주세요

 이것 때문에 꼬박 하루 삽질 했다.Webscrapping을 해왔는데 한글이 깨지는 것이 아닌가 ! 왜 깨질려면 다 깨지지 안깨지는 사이트 있고 깨지는 사이트 있고 막 이러는 거다. !!!. 

로컬서버에서 작업할 때는 아래와 같이  loadHtmlFile()을 이용하여 Html을 불러왔는데 아주 잘 되었다.. 

Input CharacterSet Encoding이 EUC-KR이면 output은 EUC-KR로 input이 UTF-8이면 output UTF-8로 뭐가 되었던 간에 알아서 잘 처리해줬다.  

  $html = new DOMDocument();
  $html->loadHtmlFile($SiteURI);  ( OK )


문제는 호스팅서버로 옮겨 탈 때 발생했다. 보안 때문에 fopen을 쓸 수가 없어 HttpRequest를 이용해서 웹페이지를 긁어온 후 String 으로 넘길 때 희한하게 특정사이트만 깨지는 상황이 발생했다. 어떤 사이트는 안깨지고 어떤 사이트는 깨진다는 것이다. EUC-KR로 똑같이 인코딩 된 사이트인데도 특정 사이트만  이럴까?

  $html =  new DOMDocument();

  $html->loadHtml($responseText); ( 특정 사이트 문제 발생 ) 


1. 일단 CharacterSet 이 의심이 되었다. DOMDocument() 내부적으로 UTF-8로 처리한다고 웹어딘가에서 줏어 들었다. 

읽어온 웹페이지의 메타태그를 '<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">'

                                        --> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

와 같이 바꾸고 iconv를 이용하여 UTF-8로 인코딩한 후 loadHtml()을 수행 해보았다. 메타태그를 파싱해서 뭔가 수행할 것 같아서 위와 같은 형태를 취했다.

결론은 똑같다. 그대로 희한하게 깨진다.

[ 어떤 분들은 중간 중간 한글이 깨지는 경우에는 효과가 있다고 합니다. ]

 

2. 문제는 다른 곳에 있었다. loadHtml의 버그일까? 

 한참 삽질을 했기에 눈에 띄었을까...

 loadHtml()을 쓸 때는 반드시 Character Set을 표시하는 meta tag가 한글 보다 먼저 나와야 된다. 안 그러면 엉망징창으로 깨지기 때문에 복구가 안된다.

 다시말해서 웹페이지를 읽은 후 metatag 위치를 검색하여 배정해주는 선처리를 해주어야 한다.  

예1) 안되는 놈

<html>
 <head>
    <title> 하하하하하하하</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
<body> 백날 해봐라 이게 되나 !!!!</body>
</html> 


예2) 되는 놈.

<html> 
 <head> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8"> 
    <title> 흐흐흐흐흐흐</title> 
  </head> 
<body>얘는 된다 !!</body> 
</html> 

결론 

 많이 찜찜하다. 알고 나서도 찜찜하다 왜 이런 버그가 있을까.? loadHtmlfile()은 되고 loadHtml()은 안된다. 파싱을 charset 먼저 하면 되는 것을 것 참 -_-;; 또 다른 관점에서는 웹표준을 잘 지킵시다.! 웹표준의 중요성을 인지하는 뜻깊은(?) 시간 이었습니다.

하여튼 현재 나는 meta tag 위치를 바꾸고 charset을 utf-8로 바꾼 후 utf-8로 인코딩 한 후 사용하고 있다.   

Thanks

Posted by Uzys

댓글을 달아 주세요

  1. 2010.10.26 23:27  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다


노가다의 산실인 PHP 코드가 있다면 참 보여주길 싫겠죠?

그럴 때 이용하세요

관련 검색어는 PHP Encryption , Obfuscate 입니다.

관련 사이트
String En/Decryption http://www.weberdev.com/get_example-4118.html

소스캅 http://www.sourcecop.com/

PHP Obfuscator 및 Accelerator 소개 페이지 http://blog.pages.kr/tag/Encoder

Posted by Uzys

댓글을 달아 주세요

PHP 개발도구 10선

Web Prog 2009. 3. 23. 01:54



1) MAMP (http://www.mamp.info/en/index.html)
OSX에 APM설치하기 에서도 쉽네 어쩌네 이야기 했었지만, 실은 MAMP 하나면 OSX에서의 PHP 사용준비는 끝나는 셈입니다. 원클릭으로 AMP 개발환경이 준비됩니다.

2) Terminal.app 
다른 이들은 여러가지 터미널 어플리케이션을 쓰지만, 저에게는 이걸로 충분. 적당한 SIMBL 플러그인을 사용하면 굳이 별개의 터미널 프로그램이 필요없더라는...

3) TextMate(http://macromates.com/)
두말하면 잔소리인 TextMate 입니다. 아니, 이거 외에 다른 에디터가 존재한다는 소문이 사실인가요? 유료라는 점, 적절한 한글폰트가 마땅치 않다는 점이 단점. 물론 해결책은 있긴 합니다. 

4) Zend Studio (http://www.zend.com/en/)
...라고 말하긴 했으나, 실제로 PHP개발에 필수나 다름없는 IDE입니다. 도대체 옛날에는 어떻게 개발했는지 이해가 안된다능. JavaDoc/PHPDoc 구문과 결합하면 활용도 150%, Zend Framework과 결합하면 활용도 200%, XDebug, Zend Platform과 결합하면 효율 300%를 낼 수 있는 무서운 물건입니다. 유일한 단점은 유료라는 것. (그것도 엄청나게 비싸다는 점)

5) Aptana (http://www.aptana.com/)
Zend Studio가 너무 비싸다면 Aptana를 대안으로 생각할 수 있습니다. Zend Studio의 기능과 90%정도 호환되며 나름 장점도 많지요. Zend Studio 6.X나 Aptana 모두 Eclipse를 기반으로 합니다. Zend 제품군과의 협업이 아니라면 Aptana도 훌륭한 대안이 될 수 있습니다. Aptana Pro는 유료이긴 하지만 그 값은 하는 물건. Jaxer 엔진을 통해 서버가 아닌 로컬에서의 JavaScript Front-end 개발이 용이하다는 점도 장점.

6) PEAR (http://pear.php.net/)
DRY (Don't Repeat Yourself) 원칙을 명심하세요. PHP에서 무언가 하려고 고민중이라면, 일단 PEAR부터 뒤져봐야합니다. 분명히 PEAR에서는 그에 대한 솔루션이 준비되어 있을 겁니다.

7) Firefox / FireBug / Yslow 
심지어 IE 전용 웹서비스를 만든다 하더라도 위의 세가지 콤보는, 웹서비스를 제대로 만들고 있는지에 대한 반증입니다. Aptana / Zend Studio의 디버깅 기능과 연동하면 효과 double! 

8) SVN (http://subversion.tigris.org/) 
CVS도, Git도 다 좋습니다만... 형상관리 또는 버전관리 도구로 SVN을 쓰는 이유는 따로 있습니다... 뭐냐 하면...

9) Trac (http://trac.edgewall.org/)
바로 Trac과 연동되기 때문이지요. 비록 9번째에 꼽히긴 했습니다만, 비중 및 업무 효율로 따지면 프로젝트의 절반을 차지할 만한 놈입니다.

10) Doxygen / PhpDocumenter
Doxygen은 좀 더 예쁘고 강력하지만 JavaDoc 기반의 범용도구로써 PHP 특화로써는 약한 면이, PhpDocumentor는 PHP전문이지만 좀 오소독스한 면이...
어찌 되었건 소스 문서화를 위한 최고의 솔루션이자 Zend Studio나 Aptana 등의 IDE환경에서의 사용자 편의를 위한 최강 코딩팁인 셈입니다.
Posted by Uzys

댓글을 달아 주세요