회사에서 utf-8 이외의 xml을 못 읽는다기에 나는 그냥 아무 생각 없이 utf-8 형태의 xml만 줬었는데 Flash용으로 다른 콤포넌트를 만드는 작업에서 utf-8 이외의 xml을 읽어야하는 경우가 생길거 같아서 이제야 좀 찾아봤다.

해답은 가까운 곳에 있었고 또다시 한번 macromedia의 개념없는(?) API들에 놀라움을 금치 못 했다.

어찌됐든, ByteArray 형태로 xml을 가져올 수 있다고 치자. 준비 단계로

[Embed(source="config.xml", mimeType="application/octet-stream")]
private static var ConfigXML:Class;

그리고..

var bytes:ByteArray = new ConfigXML();

혹은

var request:URLRequest = new URLRequest(url);
var variables:URLVariables = new URLVariables();
variables.preventCache = new Date().getTime();
request.method = URLRequestMethod.GET;
request.data = variables;
   
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE, onComplete);

onComplete 시

var loader:URLLoader = URLLoader(event.target);
var bytes:ByteArray = loader.data as ByteArray;

ByteArray를 가져온 이후로 다시 encoding에 대한 부가적인 처리가 필요하다.

var xml:String = null;
(1) var matches:Array = bytes.toString().match("encoding=\"(.+)\"");
if (matches && matches.length > 0) {
 var encoding:String = matches[1];
(2) if (encoding) {
  xml = bytes.readMultiByte(bytes.bytesAvailable, encoding);
 }
}
(3) if (!xml) {
 xml = bytes.readUTFBytes(bytes.bytesAvailable);
}
var result:XML = new XML(xml);

기본적인 로직은
(1) 일단 깨진 상태로 읽고 거기서 encoding 정보만 가져와서
(2) encoding 정보가 있을 경우는 해당하는 encoding 정보를 이용하고
(3) 없으면 걍 utf-8로 읽으라는 뜻이다.

Posted by YG~

Domain이 새로 생길 때마다 VirtualHost를 그때그때 추가할 수 없어서 오늘 시간을 좀 내서 작성해보았다. 이것저것 해보다 보니 VirtualHost를 없애고 modrewrite로 구현할 수 밖에 없었다.

디렉토리 구조는 /path/to/docroot 아래에 서버명들로 구성되어 있다.
/path/to/docroot/www.a.com
/path/to/docroot/www.b.com
...

SetEnv docbase /path/to/docroot

RewriteEngine On

RewriteMap lowercase int:tolower

RewriteCond %{ENV:docbase}${lowercase:%{SERVER_NAME}}%{REQUEST_FILENAME} -f [OR]
RewriteCond %{ENV:docbase}${lowercase:%{SERVER_NAME}}%{REQUEST_FILENAME} -d
RewriteRule ^/(.*)$ %{ENV:docbase}${lowercase:%{SERVER_NAME}}/$1 [L]

RewriteCond %{ENV:docbase}${lowercase:%{SERVER_NAME}}%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*) balancer://tomcat/$1 [P,L]

몇몇가지 더 구현해야하는 기능들이 더 있긴 한데
오늘은 이걸로 만족.

Posted by YG~

2008.07.13

일상/글로 보기 2008/07/13 08:13
1.
시간 짬짬히 내서

금년 혹은 내년 초 내로 차 살 방안 구상
Map for Silverlight 구상
Espresso 2.0 구상/구현

요거만 해도 금년 훌쩍 지나가겠군!

2.
간만에 노가다..
6일부터 11일까지 열시미 달려서 사이트 하나 완성.
역시 우리 올드 패밀리가 먼가 해도 빨라. ㅋㅋ

3.
I can see your eyes
and I can see your face,
see your smile ever you are.

Brown Eyes - Your Eyes
Posted by YG~