레이블이 php인 게시물을 표시합니다. 모든 게시물 표시
레이블이 php인 게시물을 표시합니다. 모든 게시물 표시

2010년 1월 3일 일요일

YUI PHP Loader 문제

YUI PHP Loader를 사용하여 YUI를 로드하면 w3c html validator 에서 문제가 생긴다. 내가 이상하게 사용 한 것인지 모르겠지만 아직은 못쓰겠다.

2010년 1월 2일 토요일

PHP에서 YUI 삽입하기

YUI야 Javascript 라이브러리인데 PHP가 무슨 상관일까?

 

 YUI PHP Loader라는 Utility가 있다.

 

이 유틸리티는 YUI 컴포넌트를 로딩해주는 역할을 한다.

 

클라이언트 사이드에 YUI Loader가 있다면 php 서버사이드엔 YUI PHP Loader가 있다.

 

php 쓰는 김에 같이 쓰기로 결정.

 

php에서 제공된 loader.php를 include 하고 아래와 같이 코드를 실행하면 된다.

 

$loader = new YAHOO_util_Loader("2.8.0r4");
$loader->load("yahoo", "dom", "event", "tabview", "grids", "fonts", "reset");

 

3.0이 좋다하여 $loader = new YAHOO_util_Loader("3.0.0"); 으로 바꿨더니 잘 되는 것같다.

 

서비스 서버에 올릴때 meta 디렉토리가 담겨있는 lib 디렉토리를 빼먹으면 안된다.

2009년 12월 31일 목요일

PHP XML Writer 속도

XMLWriter

0.000063


XMLDocument

0.000068


String

0.000084

 

XMLWriter가 가장 빨라보이기는 했는데 XMLDocument가 String으로 XML을 만든 것보다 빠른 것은 예상 밖이었다. 위의 값은 평균 값은 아니고 어떤 특정시점의 스냅샷이다. 그렇지만 여러번 실행시켜도 결과는 마찬가지다.

PHP 속도체크

$s = microtime();
$this->doSomething();
echo sprintf("%f", microtime_float() - $s);

 

위처럼 하니 속도파악이 가능하다.

PHP에서 XML 다루기

XMLWriter 라는 스트링으로 XML을 생성하는 클래스를 구해다가 사용하고 있었다. 그런데 계층 구조의 객체 관계를 모델링하고 이를 XML로 바꾸는 과정에서 스트링은 문제가 생겼다. 스트링은 여태까지 만들어 놓은 XML 텍스트를 수정하는 것이 불편하다.

 

따라서 PHP에서 XML을 다루는 방법을 찾아본 결과 역시나 정리되어 있는 문서를 찾아볼 수 있었다. XML을 다루는 방법은 크게 네 분류로 나뉘는데 tree based, streaming, event based, transformation 이다.

 

tree based

- ext/dom

PHP 4에서는 ext/domxml을 쓰고 PHP 5에서는 ext/dom을 사용한다. 사용법은 매우 비슷하다.

- ext/simplexml

 

 

streaming (빠르고 간단함)

- ext/xmlreader

- ext/xmlwriter

 

event based

- ext/xml

 

transformation

- XSL

 

 

2009년 12월 28일 월요일

PHP 의 POST 자동 addslashes

SQL injection을 피해보잡시고 POST값에 대해서 addslashes를 하려고 했다. 그런데 뭔가 조금 이상해서 봤더니 POST된 값에 이미 슬래쉬가 붙어있다. flash가 그렇게 보내진 않을거 같고 조금 찾아봤더니 아래와 같은 설명이 PHP 메뉴얼에 나온다.

 

The PHP directive magic_quotes_gpc is on by default, and it essentially runs addslashes() on all GET, POST, and COOKIE data. Do not use addslashes() on strings that have already been escaped with magic_quotes_gpc as you'll then do double escaping. The function get_magic_quotes_gpc() may come in handy for checking this.

 

magic_quotes_gpc가 on이면 GET, POST, COOKIE에 대해서 addslashes()를 수행한다. 그래서 addslashes()를 추가했다가 다시 빼버렸다. 다른 환경을 위해 get_magic_quotes_gpc()로 검사하고 직접 해주던지 놔두던지 하게 바꾸야 한다.

2009년 8월 4일 화요일

AIR에서 WebORB for PHP 사용

weborb\Weborb\WEB-INF\flex 위치에 remoting-config.xml, services-config.xml를 잘 변경해줘야 쓸 수 있다. services-config.xml에 my-air-amf 라는 게 있어서 봤더니 주소가 틀려서 접속이 안되더라.

 

remoting-config.xml 에 보면 아래와 같은 xml이 있다.

 

    <destination id="GenericAIRDestination">
        <channels>
          <channel ref="my-air-amf"/>
        </channels>   
        <properties>
            <source>*</source>
        </properties>
     </destination>

 

이 remoting-config.xml과 services-config.xml이 뭐 어떻게 꿍짝꿍짝 하나본데 급하게 하느라 WebORB에서 문서를 몇 번 찾아보다가 안보여서 그냥 "되는데 뭐~" 하면서 관뒀다.

 

destination의 id값은 RemoteObject의 destination 프로퍼티 값 혹은 RemoteObject 생성할 때 생성자의 첫 번째 인자로 지정해주는 값이다. source가 만약 com.example.app.FileSystemBrowser로 지정되어 있으면 weborb\Services\com\example\app에 있는 FileSystemBrowser.php 클래스를 사용하게 된다. 기타 다른 클래스가 또 있다면 아래와 같이 지정해주면 된다.

 

flash.net.registerClassAlias("com.example.app.FolderItem", FolderNode);
flash.net.registerClassAlias("com.example.app.FileItem", FileNode);
flash.net.registerClassAlias("com.example.app.FileSystemItem", FileSystemNode);

 

이렇게 해두면 flex에서 원격(WebORB for PHP로 구성된 웹서버)에 있는 SomeMethod(fileNode); 메소드를 호출하면 FileNode 타입을 서버에서 받아 그대로 사용할 수 있다. 어쨌든 비동기라 짜기 귀찮긴 하지만 XML 파싱하고 전송하고 받고 그런거 안하는 게 어디야.