sh’s words


apache’s httpd 2.2

Posted in web development by sh. on the June 14th, 2006

요즘 사내 프로젝트를 하나 진행하고 있다. 외부에 공개할 녀석이 아니라 각종 패키지를 최신으로 선택했다.

  • php 5.1.4
  • mysql 5.0.22
  • apache 2.2

apache를 설치하곤 UserDir을 설정하려고 했는데 httpc.conf 안에 UserDir 지시자가 없는거다 -_-; 뭔가 해서 찾아보니 httpd.conf에는 기본적인 설정들만 들어있고 어지간한 것들은 Include 를 하도록 되어있군.

# Server-pool management (MPM specific)
#Include conf/extra/httpd-mpm.conf

# Multi-language error messages
#Include conf/extra/httpd-multilang-errordoc.conf

# Fancy directory listings
#Include conf/extra/httpd-autoindex.conf

# Language settings
#Include conf/extra/httpd-languages.conf

# User home directories
Include conf/extra/httpd-userdir.conf

# Real-time info on requests and configuration
#Include conf/extra/httpd-info.conf

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

# Local access to the Apache HTTP Server Manual
#Include conf/extra/httpd-manual.conf

# Distributed authoring and versioning (WebDAV)
Include conf/extra/httpd-dav.conf

# Various default settings
#Include conf/extra/httpd-default.conf
.. 이런식이다. default httpd.conf가 좀 길긴 했지- 그런데 userdir 설정에 Indexes가 기본값인건 맘에 안든다.

backport of SimpleXML

Posted in web development, php by sh. on the June 5th, 2006

php 5.x 이상에서는 xml을 쉽게 다루기 위한 인터페이스로 simpleXML 이라는 것을 제공한다. 매우 편해보이는데 php4.x에서는 사용할 수 없을까?

하여 구글신에게 물어보았다.

“backport of simplexml”

역시… 고려해볼만한 세 가지 대안을 찾을 수 있었다.

우선 miniXML. miniXML은 simpleXML과 컨셉이 비슷한 녀석인데, php와 perl 모듈을 제공하고 있다. simpleXML과 API가 달라서 탈락. (하지만 꽤 괜찮아 보인다)
link : http://minixml.psychogenic.com/

그리고 ister.org에서 simpleXML의 backport를 제공하고 있더라. 다운로드해서 살펴봤는데 여러개의 파일로 나눠져 있는데다 클래스명에 Ister라는 prefix를 사용하고 있어서 탈락.
link : http://www.ister.org/code/simplexml44/index.xhtml

joomla(mambo라는 CMS가 fork한 것)에서도 simpleXML의 backport를 제공하길래 살펴봤더니 svn을 통해 체크아웃 할 수가 있길래 얼른 받아봤다. (요즘은 tar를 받아서 압축 푸는것보다 svn이 더 편해~)
단 두 개의 파일만 필요한데다 그나마 한 개의 파일은 JObject라는 간단한 base class라서 이걸로 낙점. API도 거의 같다. joomla가 꽤 활발하게 유지되고 있다는 점도 크게 작용했다.
link : http://dev.joomla.org/index.php?option=com_jd-wiki&Itemid=31&id=guidelines:jsimplexml

anyway- php4에서의 xml_parser() 를 써야 했으면 몇 일 빈둥거렸을지도 몰라!

멍청한 짓 발견

Posted in web development, php by sh. on the March 29th, 2006

그동안 미루고 미루다가 이슈트래커에 1번으로 등록했던 버그를 고치기로 맘먹었다. 두 달 정도 미뤄둔 것 같은데, 그 동안 몇 번 소스를 열어봤기 때문에 대강 어느 메쏘드가 문제겠구나 하고 감은 잡고 있었다. 그런데 막상 소스코드를 자세히 살펴보니, 예상했던 지점의 문제가 맞긴 했는데 그 내용이 하도 어이없어서 여기에 기록하고 반성하려고 한다.

첫 번째 문제

$goods->setFrom($data);
unset($data[’supertax’], $data[’state’], $data[’fee_shop’], $data[’fee_benefit’]);
$goods->update();

이 메쏘드를 통해서는 supertax, state, fee_shop, fee_benefit가 수정되지 않도록 하려는 의도였는데, 이미 setFrom()으로 값을 줘버린 상태에서 unset() 을 한거다 -_-;; vim에서는 [ddp] 이렇게 세 개의 키로 수정이 됐다 -_-;;

두 번째 문제
if (strpos($var, ’somestring’) != false)) …..

이거, 너무 뻔한거라 민망하다. strpos의 인수 순서는 왜 매번 헷갈리는 것일까? 반환값이 0 이 나올수도 있다는 걸 왜 자꾸 간과하는걸까?

strpos($var, ’somestring’) !== false로 코딩해야 정확하다.
어쨌거나 버그를 고치긴 했는데, 좀 더 조심성을 가져야겠다. 그리고 굉장히 중요한 부분인데도 테스트를 작성하지 않은것도 반성할 점이다.

MVC Framework by zend.com

Posted in web development, php, oop by sh. on the March 20th, 2006

http://framework.zend.com/

zend.com에서 배포하는 open-source MVC framework이다.

  • php 5.0.3이상 필요 (4.x는 지원하지 않음)
  • Zend, Zend_controller, Zend_Db, Zend_Feed, Zend_Filter, Zend_HttpClient, Zend_InputFilter, Zend_Json, Zend_Log, Zend_Mail, Zend_Mime, Zend_Pdf, Zend_Search, Zend_Service, Zend_View, Zend_XmlRpc 등의 클래스로 이루어져 있다.
  • Zend_Db는 PDO를 이용한다.
  • http://devzone.zend.com/public/view 가 Zend Framework 를 이용해 만들어졌다.

아직까지 파악한 건 이정도- 빨리 설치해서 써보고 싶다!

http://devzone.zend.com/node/view/id/17에서 정보를 좀 더 얻을 수 있다.

PHP Object-Oriented Web Programming #4

Posted in software, web development, php, pear, oop by sh. on the March 15th, 2006

오래 전에 써놓은 글인데, 일단 묵혀두기가 좀 그래서 포스팅을 한다. 스스로에게 자극을 줘서 계속 쓰게 하려는 이유가 크다:)

—-

DB_DataObject 의 세팅과 사용.

DB_DataObject는 일단 앞으로의 과정에서 SQL을 직접 다루는 일이 거의 없도록 도와준다. DBDO는 내부적으로 PEAR::DB 패키지를 통해 DBMS를 다루는데 최근 버전에서는 옵션을 통해 PEAR::MDB를 사용할 수도 있다.

DBDO를 사용하려면 우선 몇 가지 작업을 해줘야 한다.
앞서 밝혔듯이 DBDO는 RowDataGateway 패턴을 구현한 것인데, 하나의 객체가 테이블상의 한 로우(=레코드)를 다룰 수 있다는 뜻이다. 따라서 각 테이블의 Row를 표현하는 클래스를 정의해야 한다. 다행히도 이 작업은 자동화되어있다.
PEAR 하위의 DB/DataObject/createTables.php 라는 스크립트를 이용하면 DB의 각 테이블에 1:1로 대응하는 클래스 파일들을 자동으로 생성해준다. createTables.php 를 실행하기 전에 (more…)

Next Page »