'Web Dev'에 해당되는 글 21건
- 2007/08/25 "다음 오픈 API 개발자의 날" 행사에 참가합니다. (8)
- 2007/05/28 Javascript Loose Comparison Table
- 2007/04/30 웹테크 워크샵에서 강연을 하고 왔습니다. (6)
- 2006/11/30 php5의 정수 __autoload()활용하기 2 (2)
- 2006/11/10 php5의 정수 __autoload()활용하기 1 (4)
- 2006/11/07 PHP 이클립스(PHPEclipse) - 콘솔창에 실행하기
- 2006/11/07 [1원짜리 팁] 찾기힘든 실수 - header already sent를 막는방법;
- 2006/10/28 Ajax의 필수요소 Spinner를 만들어줍니다.
- 2006/10/23 오픈소스 프로젝트에 참여하고 싶어요 (11)
- 2006/06/24 이번 프로젝트에서 배운것 (2)
- 2006/04/19 젠드 프레임워크 0.1.3
- 2006/04/06 The Oracle + PHP Cookbook :: Oracle/PHP 환경의 LOB 처리
- 2006/03/28 MySQL에 사용자와 그 사용자가 쓸 DB생성 스크립트
- 2006/03/21 PHP를 Eclipse로 개발하기(PHPEclipse) - 2. 설정편 (7)
- 2006/03/13 Linux 및 Windows 환경을 위한 PHP, Oracle 10g Instant Client 설치 (1)
- 2006/02/24 PHP를 Eclipse로 개발하기(PHPEclipse) - 1. 설치편 (7)
- 2006/01/23 Upcoming changes in PHP 6.0
- 2006/01/23 AJAX-based site builder is built with PHP
- 2006/01/23 DHTML은 항상 골때리다.. (2)
- 2006/01/08 프로그래머 10계명
- 2006/01/07 A Simpler Ajax Path
패널로 참석하여 위자드닷컴의 Open API소개와 패널토의를 하게 될 것입니다. 또다시 저의 PT능력에 한계를 드러낼 것이지만 열심히 준비해보겠습니다;
많은 참여부탁드립니다 ^^ [참가신청 바로가기]
'Web Dev > etc' 카테고리의 다른 글
| "다음 오픈 API 개발자의 날" 행사에 참가합니다. (8) | 2007/08/25 |
|---|---|
| 이번 프로젝트에서 배운것 (2) | 2006/06/24 |
| MySQL에 사용자와 그 사용자가 쓸 DB생성 스크립트 (0) | 2006/03/28 |
php의 그것과 비슷한 Javascript Loose Comparison Table입니다. 아시다시피 php나 Javascript나 equal(==) 연산자를 쓰게 되면 느슨한 타입비교를 하게 됩니다.
저는 php에 워낙 길들여져 있는 터라 Javascript 타입 비교시에는 헷갈리는 경우가 많아 cheat sheet으로 쓰려고 만들어 보았습니다.
역시 만들고 보니 별로 헷갈릴 것도 없군요^^
'Web Dev > JavaScript' 카테고리의 다른 글
| Javascript Loose Comparison Table (0) | 2007/05/28 |
|---|---|
| DHTML은 항상 골때리다.. (2) | 2006/01/23 |
코리아인터넷닷컴에서 주최한 '제1회 웹테크 워크샵'에서 '위자드 2.0 개발관련 AJAX 연동 서버사이드 관련 이슈'를 주제로 강연을 하고 왔습니다...만;
강연이 처음이어서도 그렇고, 제가 많이 모자라서도 그렇고 나름 최선을 다했어도 내용상 만족할만한 강연을 하지를 못했습니다.(총 4일정도는 밤을 샌 듯 싶네요)
주로 Ajax 개발에서 특히 MVC패턴과 TDD를 왜 엄격하게 적용해야 하는가에 대한 방법론적인 이야기를 했었는데, 업계에 계신 분들이니 그쪽 방면에 대해서는 저보다 훨씬 더 많이 알고 계시지 않았나 싶네요. 사실 서버사이드의 입장에서는 저보다 경험 많으신분들이 많으실것 같아 '번데기 앞에서 주름잡는 격'이 아닌가 생각하면서 강연을 준비했었습니다.
그런 큰 자리에 불러주신 코리아인터넷닷컴과 위자드웍스에 감사하단 말씀을 이자리를 빌어 하고 싶습니다.
'Web Dev > Ajax' 카테고리의 다른 글
| 웹테크 워크샵에서 강연을 하고 왔습니다. (6) | 2007/04/30 |
|---|---|
| Ajax의 필수요소 Spinner를 만들어줍니다. (0) | 2006/10/28 |
| A Simpler Ajax Path (0) | 2006/01/07 |
include_path 개념
지금 리눅스/유닉스를 사용하고 계시거나, 예전에 DOS를 사용해 보셨다면, PATH환경 변수에 대해서 알고 있을 겁니다.
파일을 include시 꼭 현재 스크립트로 부터 시작되는 상대경로가 아니더라도, include path안에 있는 경로이면 알아서 include를 시켜줍니다.
메뉴얼에 따르면
즉, 자동으로 파일을 찾아 include시켜준다는 의미 입니다. 이것을 조작하는 방법은 몇가지가 있는데,
ini_get과 ini_set은 설정 옵션을 조정할 수 있도록 하는 범용함수이고, get_include_path와 set_include_path는 php4.3이상에서 지원하는 include_path를 위한 전용함수 입니다. 사용 예는 메뉴얼에서 확인 하실 수 있습니다.
아래 코드에서는 set_include_path와 get_include_path를 사용합니다.
그러면 include_path을 지정하면서 __autoload가 실행되는 것을 보겠습니다.
하.지.만 이 방법도 문제가 있습니다. 상황에 따라 다르겠지만 저의 경우는 패키지 내에서 include할 때(cohesion)를 제외하고는 거의 include를 사용하지 않으므로 한 스크립트가 실행될 때 __autoload가 여러번 실행되게 됩니다.
그래서 위와 같은 방법으로는 include_path를 지정해주는 코드가 여러번 실행되는 것을 피할 수가 없게 됩니다.
그래서 정적(static)변수를 사용해 아래와 같이 개선해보았습니다.
제가 지금 사용하는 코드가 바로 위와 비슷한 코드 입니다. 파일이 존재하지 않을 때를 대비한 예외처리까지 합하면 조금 더 길어지기는 하지만.. 예외처리가 쉽게 가능하도록 아래에 팁을 마련합니다. 참고하시고 잘 사용하셨으면 좋겠습니다^^
지금 리눅스/유닉스를 사용하고 계시거나, 예전에 DOS를 사용해 보셨다면, PATH환경 변수에 대해서 알고 있을 겁니다.
파일을 include시 꼭 현재 스크립트로 부터 시작되는 상대경로가 아니더라도, include path안에 있는 경로이면 알아서 include를 시켜줍니다.
메뉴얼에 따르면
require()와 include(), fopen_with_path() 함수들이 사용하는 파일을 찾을 위치(path)를 지정한다. string의 형식은 시스템 환경변수 PATH의 설정과 비슷하다. UNIX에서는 콜론으로 나뉘어진 디렉토리들의 리스트이고, Windows에서는 세미콜론을 사용한다. (이하 생략)
즉, 자동으로 파일을 찾아 include시켜준다는 의미 입니다. 이것을 조작하는 방법은 몇가지가 있는데,
- php.ini에서 직접 변경
- ini_get, ini_set 함수
- get_include_path, set_include_path 함수
ini_get과 ini_set은 설정 옵션을 조정할 수 있도록 하는 범용함수이고, get_include_path와 set_include_path는 php4.3이상에서 지원하는 include_path를 위한 전용함수 입니다. 사용 예는 메뉴얼에서 확인 하실 수 있습니다.
아래 코드에서는 set_include_path와 get_include_path를 사용합니다.
그러면 include_path을 지정하면서 __autoload가 실행되는 것을 보겠습니다.
하.지.만 이 방법도 문제가 있습니다. 상황에 따라 다르겠지만 저의 경우는 패키지 내에서 include할 때(cohesion)를 제외하고는 거의 include를 사용하지 않으므로 한 스크립트가 실행될 때 __autoload가 여러번 실행되게 됩니다.
그래서 위와 같은 방법으로는 include_path를 지정해주는 코드가 여러번 실행되는 것을 피할 수가 없게 됩니다.
그래서 정적(static)변수를 사용해 아래와 같이 개선해보았습니다.
제가 지금 사용하는 코드가 바로 위와 비슷한 코드 입니다. 파일이 존재하지 않을 때를 대비한 예외처리까지 합하면 조금 더 길어지기는 하지만.. 예외처리가 쉽게 가능하도록 아래에 팁을 마련합니다. 참고하시고 잘 사용하셨으면 좋겠습니다^^
include_path에서 파일이 있는지 없는지 어떻게 알 수 있을까?
file_exists를 이용한 노가다를 할 수도 있지만.. 조금더 elegant한 방법은,
fopen을 실행시켜 리턴값이 resource인지를 확인하는 방법이다. 많이 사용되지 않는 fopen의 세번째 인자는 include_path를 활용할 것인가 하는 boolean값이다.(기본값은 false다)
'Web Dev > PHP' 카테고리의 다른 글
| php5의 정수 __autoload()활용하기 2 (2) | 2006/11/30 |
|---|---|
| php5의 정수 __autoload()활용하기 1 (4) | 2006/11/10 |
| PHP 이클립스(PHPEclipse) - 콘솔창에 실행하기 (0) | 2006/11/07 |
| [1원짜리 팁] 찾기힘든 실수 - header already sent를 막는방법; (0) | 2006/11/07 |
| 오픈소스 프로젝트에 참여하고 싶어요 (11) | 2006/10/23 |
| 젠드 프레임워크 0.1.3 (0) | 2006/04/19 |
php6의 발표를 앞두고 이제서야 포스팅을 올리는 것이 쑥스럽지만 php5에서 추가된 __autoload()에 대해 이야기 해보도록 하겠습니다.
__autoload()는 PHP5에서 추가된 'intercepter'로 필요한 클래스가 로딩 되지 않았을 때 자동으로 실행되는 함수입니다.
특히 네임스페이스라는 개념이 아직 없는 PHP에서 __autoload는 아주 유용하게 활용됩니다. (가장 많이 개발되는 형태에서) PHP4에서는 클래스의 로딩을 위해 include에 몇 라인씩을 할애해야했지만, PHP5의 __autoload를 활용하면 그런 라인들이 최소화 될 수 있습니다.
사용예는
[CODE type=php]
function __autoload( $className ){
require_once $className.'.php';
}
[/CODE]
이렇습니다.
$className에 필요한 클래스 네임이 들어가고, 그것을 규칙에 맞도록 파일이름으로 변경시켜 인클루드 시켜주는 것으로 작업이 끝납니다.
아주 간단하게 사용을 할 수가 있겠죠?
하지만 한가지 더 생각해 보아야 할 주제는 바로 패키지 개념 적용입니다. 패키지는 관련있는 클래스들의 모음이고 어떤 방법으로든 그룹화 됩니다. 지금부터는 이 그룹화에 대해 말씀드리려고 합니다.
PEAR를 한번이라도 활용해보셨다면, 이름짓기규칙(Naming Convention)에 대해서도 아실 텐데요. DB_Common이라는 클래스는 DB/Common.php 에 저장되어 있습니다.또 Zend Framework에서 Zend_Controller_Action이라는 클래스는 Zend/Controller/Action.php에 저장되어 있습니다. _(언더바)가 /(디렉토리 분리기호)로 변경시켜 디렉토리 단위로 패키지로 묶는 것이 PHP에서의 대세 입니다.
이것을 활용한 __autoload()의 코드의 예는 이렇습니다.
[CODE type=php]
function __autoload($className)
{
$path = str_replace('_',DIRECTORY_SEPARATOR,$className).'.php'; /*DIRECTORY SEPARATOR는 윈도환경에서는 \으로, xNIX환경에서는 / 이 저장되어 있는 php기본 상수 입니다. */
require_once $path;
}
[/CODE]
다음 포스팅에서 include_path를 잘 활용하는 방법과 앞서 언급한 것을 모두 적용시킨, 제가 사용하는 __autoload코드를 공개합니다~
__autoload()는 PHP5에서 추가된 'intercepter'로 필요한 클래스가 로딩 되지 않았을 때 자동으로 실행되는 함수입니다.
특히 네임스페이스라는 개념이 아직 없는 PHP에서 __autoload는 아주 유용하게 활용됩니다. (가장 많이 개발되는 형태에서) PHP4에서는 클래스의 로딩을 위해 include에 몇 라인씩을 할애해야했지만, PHP5의 __autoload를 활용하면 그런 라인들이 최소화 될 수 있습니다.
사용예는
[CODE type=php]
function __autoload( $className ){
require_once $className.'.php';
}
[/CODE]
이렇습니다.
$className에 필요한 클래스 네임이 들어가고, 그것을 규칙에 맞도록 파일이름으로 변경시켜 인클루드 시켜주는 것으로 작업이 끝납니다.
아주 간단하게 사용을 할 수가 있겠죠?
하지만 한가지 더 생각해 보아야 할 주제는 바로 패키지 개념 적용입니다. 패키지는 관련있는 클래스들의 모음이고 어떤 방법으로든 그룹화 됩니다. 지금부터는 이 그룹화에 대해 말씀드리려고 합니다.
PEAR를 한번이라도 활용해보셨다면, 이름짓기규칙(Naming Convention)에 대해서도 아실 텐데요. DB_Common이라는 클래스는 DB/Common.php 에 저장되어 있습니다.또 Zend Framework에서 Zend_Controller_Action이라는 클래스는 Zend/Controller/Action.php에 저장되어 있습니다. _(언더바)가 /(디렉토리 분리기호)로 변경시켜 디렉토리 단위로 패키지로 묶는 것이 PHP에서의 대세 입니다.
이것을 활용한 __autoload()의 코드의 예는 이렇습니다.
[CODE type=php]
function __autoload($className)
{
$path = str_replace('_',DIRECTORY_SEPARATOR,$className).'.php'; /*DIRECTORY SEPARATOR는 윈도환경에서는 \으로, xNIX환경에서는 / 이 저장되어 있는 php기본 상수 입니다. */
require_once $path;
}
[/CODE]
다음 포스팅에서 include_path를 잘 활용하는 방법과 앞서 언급한 것을 모두 적용시킨, 제가 사용하는 __autoload코드를 공개합니다~
'Web Dev > PHP' 카테고리의 다른 글
| php5의 정수 __autoload()활용하기 2 (2) | 2006/11/30 |
|---|---|
| php5의 정수 __autoload()활용하기 1 (4) | 2006/11/10 |
| PHP 이클립스(PHPEclipse) - 콘솔창에 실행하기 (0) | 2006/11/07 |
| [1원짜리 팁] 찾기힘든 실수 - header already sent를 막는방법; (0) | 2006/11/07 |
| 오픈소스 프로젝트에 참여하고 싶어요 (11) | 2006/10/23 |
| 젠드 프레임워크 0.1.3 (0) | 2006/04/19 |
오늘은 PHP-CLI를 통해 이클립스 콘솔창에서 php파일을 실행하는 방법을 알아보도록 하겠습니다.
사실 개발 중에는 브라우져에서 보지 않아도 될 일들이 상당히 많습니다. 타임스탬프를 많이 사용하는 저같은 경우 DB에서 읽어온 타임 스탬프 검토를 위해 date()함수를 쓰는 일이 종종 있습니다. 그런경우 콘솔에서 바로 찍어보면 브라우져에서 여는 것보다 상당히 편하게 열 수 있습니다. 또 var_export의 경우는 구분자로 개행문자(\n)을 출력하므로 브라우져에서 보면 문자열들이 정렬되지 않고 주르륵 붙어나오게 되는데, 이런경우도 콘솔을 사용하면 편합니다. ^^
마우스로 브라우져로 가서 주소를 찍고 할 필요 없이 단축키로 손가락만 움직여 열 수 있으니 편리하구요.
우선 이클립스를 켜야겠죠? 그다음 상단 메뉴의 Run - External Tools - External Tools로 들어가 외부 툴을 연결 시킬 수 있는 곳으로 들어갑니다. External Tools라는 창이 하나 열릴거구요. 왼편에 보면 Configuration이라고 되어 있는데 사람이 달리는 아이콘으로 되어 있는 것도 있고, 플레이 아이콘 처럼 생긴것도 있죠? 사람이 달리는 아이콘으로 되어 있는 것은 Run이고, 플레이 아이콘처럼 생긴것은 Program이라고 붙어있을 겁니다.
php콘솔을 '제대로' 열려고 하면 Program을 선택해야 합니다. 둘이 뭐가 다른지는 잘 모르겠지만, Run은 working directory를 설정하는 것이 힘들어서 Program으로 추가합니다;
Program을 선택하고 왼쪽하단의 New를 클릭하세요.
그러면 오른쪽에 New_Configuration이라고 하면서 새로운 설정을 추가할 수 있는 form이 나올 겁니다.
이제 여기에 php를 실행시킬 인자라던가 php가 실행될 working디렉토리를 설정해주어야 합니다.
Location에는 php파일의 경로를 적어주셔야 합니다. 저는 xampp를 사용중이어서 경로가 c:\Program Files\xampp\php\php.exe 이렇게 됩니다.
Working Directory에는 ${container_loc} 이렇게 적어주세요. 이것은 실행시킬 파일이 담긴 디렉토리의 절대경로를 working directory로 사용하겠다는 뜻입니다. 이외에 다른 변수를 찾아보시려면 Variables버튼을 클릭해보세요.
Arguments에는 -f "${resource_loc}" -c "c:\Program Files\xampp\apache\bin\php.ini"
이렇게 적어줍니다. 이 때에도 php.ini경로를 맞추어서 적어주시면 됩니다. 이것은 우리가 커맨드라인에서 php -f "디렉토리/파일명" -c "c:\Program Files\xampp\apache\bin\php.ini" 라고 적는것과 같이 인자를 전달해주는 역할을 합니다.
중간 중간의 큰 따옴표는 윈도 파일시스템에서 스페이스가 포함되어 있더라도 경로로 인식시켜주기 위한 장치입니다.
이제 거의 다 왔습니다. Apply를 눌러보시지요. 창이 닫기고 다시 workspace로 돌아왔죠?
프로젝트를 하나 추가하시고 echo "hello world"를 입력해보세요. 그 다음 한번 실행을 시켜보시지요. 실행은 Run-External Tools-방금 추가한 php를 클릭 해주시면 됩니다.
간단하게 실행이 되죠? 단축키는 Alt + R + E + 숫자 정도가 되겠네요 ^^
이것으로 이번 강좌는 마치도록 하겠습니다. PHPDocumentor도 달 수 있으니 참고하세요.
PHPDocumentor 추가하기
사실 개발 중에는 브라우져에서 보지 않아도 될 일들이 상당히 많습니다. 타임스탬프를 많이 사용하는 저같은 경우 DB에서 읽어온 타임 스탬프 검토를 위해 date()함수를 쓰는 일이 종종 있습니다. 그런경우 콘솔에서 바로 찍어보면 브라우져에서 여는 것보다 상당히 편하게 열 수 있습니다. 또 var_export의 경우는 구분자로 개행문자(\n)을 출력하므로 브라우져에서 보면 문자열들이 정렬되지 않고 주르륵 붙어나오게 되는데, 이런경우도 콘솔을 사용하면 편합니다. ^^
마우스로 브라우져로 가서 주소를 찍고 할 필요 없이 단축키로 손가락만 움직여 열 수 있으니 편리하구요.
우선 이클립스를 켜야겠죠? 그다음 상단 메뉴의 Run - External Tools - External Tools로 들어가 외부 툴을 연결 시킬 수 있는 곳으로 들어갑니다. External Tools라는 창이 하나 열릴거구요. 왼편에 보면 Configuration이라고 되어 있는데 사람이 달리는 아이콘으로 되어 있는 것도 있고, 플레이 아이콘 처럼 생긴것도 있죠? 사람이 달리는 아이콘으로 되어 있는 것은 Run이고, 플레이 아이콘처럼 생긴것은 Program이라고 붙어있을 겁니다.
php콘솔을 '제대로' 열려고 하면 Program을 선택해야 합니다. 둘이 뭐가 다른지는 잘 모르겠지만, Run은 working directory를 설정하는 것이 힘들어서 Program으로 추가합니다;
Program을 선택하고 왼쪽하단의 New를 클릭하세요.
그러면 오른쪽에 New_Configuration이라고 하면서 새로운 설정을 추가할 수 있는 form이 나올 겁니다.
이제 여기에 php를 실행시킬 인자라던가 php가 실행될 working디렉토리를 설정해주어야 합니다.
Location에는 php파일의 경로를 적어주셔야 합니다. 저는 xampp를 사용중이어서 경로가 c:\Program Files\xampp\php\php.exe 이렇게 됩니다.
Working Directory에는 ${container_loc} 이렇게 적어주세요. 이것은 실행시킬 파일이 담긴 디렉토리의 절대경로를 working directory로 사용하겠다는 뜻입니다. 이외에 다른 변수를 찾아보시려면 Variables버튼을 클릭해보세요.
Arguments에는 -f "${resource_loc}" -c "c:\Program Files\xampp\apache\bin\php.ini"
이렇게 적어줍니다. 이 때에도 php.ini경로를 맞추어서 적어주시면 됩니다. 이것은 우리가 커맨드라인에서 php -f "디렉토리/파일명" -c "c:\Program Files\xampp\apache\bin\php.ini" 라고 적는것과 같이 인자를 전달해주는 역할을 합니다.
중간 중간의 큰 따옴표는 윈도 파일시스템에서 스페이스가 포함되어 있더라도 경로로 인식시켜주기 위한 장치입니다.
이제 거의 다 왔습니다. Apply를 눌러보시지요. 창이 닫기고 다시 workspace로 돌아왔죠?
프로젝트를 하나 추가하시고 echo "hello world"를 입력해보세요. 그 다음 한번 실행을 시켜보시지요. 실행은 Run-External Tools-방금 추가한 php를 클릭 해주시면 됩니다.
간단하게 실행이 되죠? 단축키는 Alt + R + E + 숫자 정도가 되겠네요 ^^
이것으로 이번 강좌는 마치도록 하겠습니다. PHPDocumentor도 달 수 있으니 참고하세요.
PHPDocumentor 추가하기
'Web Dev > PHP' 카테고리의 다른 글
| php5의 정수 __autoload()활용하기 2 (2) | 2006/11/30 |
|---|---|
| php5의 정수 __autoload()활용하기 1 (4) | 2006/11/10 |
| PHP 이클립스(PHPEclipse) - 콘솔창에 실행하기 (0) | 2006/11/07 |
| [1원짜리 팁] 찾기힘든 실수 - header already sent를 막는방법; (0) | 2006/11/07 |
| 오픈소스 프로젝트에 참여하고 싶어요 (11) | 2006/10/23 |
| 젠드 프레임워크 0.1.3 (0) | 2006/04/19 |
일러두기 : 이미 있는 팁인지는 검토해보지 않았습니다;
php는 scriptlet 언어 입니다. 초보 때 누구나 한번쯤은 <html>로 시작해서 <table>사이에 <?php ~~~ ?> 이런 php코드를 심어 넣어보셨으리라 믿습니다.
또 모듈화 때문에 쉴새 없이 require혹은 include를 해주고 있으리라 생각됩니다.
이럴 때 require의 대상 파일이 ?> 로 끝나고, 그 후에 빈줄이라던지 빈칸이 삽입되어 있으면 그 후 세션을컨트롤한다던지 redirect로 헤더값을 적어주어야 하는경우 header already sent오류가 발생하게 됩니다.
이럴때는 php파일의 ?>을 삭제해버리면 그런 실수를 방지할 수 있습니다;
?>는 생략가능 하기 때문입니다;
돌던지지 마세요 -_-;
php는 scriptlet 언어 입니다. 초보 때 누구나 한번쯤은 <html>로 시작해서 <table>사이에 <?php ~~~ ?> 이런 php코드를 심어 넣어보셨으리라 믿습니다.
또 모듈화 때문에 쉴새 없이 require혹은 include를 해주고 있으리라 생각됩니다.
이럴 때 require의 대상 파일이 ?> 로 끝나고, 그 후에 빈줄이라던지 빈칸이 삽입되어 있으면 그 후 세션을컨트롤한다던지 redirect로 헤더값을 적어주어야 하는경우 header already sent오류가 발생하게 됩니다.
이럴때는 php파일의 ?>을 삭제해버리면 그런 실수를 방지할 수 있습니다;
?>는 생략가능 하기 때문입니다;
돌던지지 마세요 -_-;
'Web Dev > PHP' 카테고리의 다른 글
| php5의 정수 __autoload()활용하기 1 (4) | 2006/11/10 |
|---|---|
| PHP 이클립스(PHPEclipse) - 콘솔창에 실행하기 (0) | 2006/11/07 |
| [1원짜리 팁] 찾기힘든 실수 - header already sent를 막는방법; (0) | 2006/11/07 |
| 오픈소스 프로젝트에 참여하고 싶어요 (11) | 2006/10/23 |
| 젠드 프레임워크 0.1.3 (0) | 2006/04/19 |
| The Oracle + PHP Cookbook :: Oracle/PHP 환경의 LOB 처리 (0) | 2006/04/06 |
언젠가 어느 블로그에서 찾아서 들어가보았는데.. 막상 찾으려니 힘들었습니다.
뒷북이지만 까먹기 싫어서 올려둡니다 ^^;
http://www.ajaxload.info/
뒷북이지만 까먹기 싫어서 올려둡니다 ^^;
http://www.ajaxload.info/
'Web Dev > Ajax' 카테고리의 다른 글
| 웹테크 워크샵에서 강연을 하고 왔습니다. (6) | 2007/04/30 |
|---|---|
| Ajax의 필수요소 Spinner를 만들어줍니다. (0) | 2006/10/28 |
| A Simpler Ajax Path (0) | 2006/01/07 |
전 인천대학교 동북아통상대학 러시아통상학과를 다니다 입대했구요, 97년경에 처음홈페이지를 만들어보고(네띠앙과 같이 사라졌습니다 ㅡㅜ) 2002년에 영웅시대라는 사이트를 제로보드를 이용해서 만들어보았습니다.(지금보면 많이 창피합니다)
그리고 04년에 공군 전산병으로 입대해서 2년간 머리박고 php로 sw개발'만' 했습니다. 각종 시스템 4개(아직 밝힐 수는 없군요;) 포탈 홈페이지 1개(이것도 밝힐 수가 없지만 군 인트라넷 내에서는 몇손가락 안에 드는 규모였습니다)의 선임 프로그래머로 참여했었습니다.
이제 곧 제대합니다. 그런데 제 전공이 문과계열이라 전산하는 분들과의 교류가 참 적었고, 앞으로도 군대에서 만난 사람들 외에는 전산계열분들과 이야기해볼 기회가 참 적을것 같아요. 전산을 좋아하는데 같이 교류할 만한 사람이 적다는 것이 제 고민입니다.
그래서 생각한 것이 오픈소스 프로젝트로 인맥을 좀 넓혀보고, 안목도 좀 키워보고 싶다는 겁니다. kldp.net에는 이미 가보았지만, 활발한 프로젝트도 없고 하더니 멤버구함은 아예 한개도 안나오는군요 ㅡㅜ; 이미 시작된 프로젝트이면 더 좋구요, 아이디어만 가지신 분이라도 저와 함께 해보실분 있으시면 댓글로 남겨주셨으면 좋겠습니다. 제가 더 배울것이 많았으면 좋겠습니다;
관심분야는 PHP, Javascript, Ajax, 웹표준/CSS 입니다;
감사합니다;
그리고 04년에 공군 전산병으로 입대해서 2년간 머리박고 php로 sw개발'만' 했습니다. 각종 시스템 4개(아직 밝힐 수는 없군요;) 포탈 홈페이지 1개(이것도 밝힐 수가 없지만 군 인트라넷 내에서는 몇손가락 안에 드는 규모였습니다)의 선임 프로그래머로 참여했었습니다.
이제 곧 제대합니다. 그런데 제 전공이 문과계열이라 전산하는 분들과의 교류가 참 적었고, 앞으로도 군대에서 만난 사람들 외에는 전산계열분들과 이야기해볼 기회가 참 적을것 같아요. 전산을 좋아하는데 같이 교류할 만한 사람이 적다는 것이 제 고민입니다.
그래서 생각한 것이 오픈소스 프로젝트로 인맥을 좀 넓혀보고, 안목도 좀 키워보고 싶다는 겁니다. kldp.net에는 이미 가보았지만, 활발한 프로젝트도 없고 하더니 멤버구함은 아예 한개도 안나오는군요 ㅡㅜ; 이미 시작된 프로젝트이면 더 좋구요, 아이디어만 가지신 분이라도 저와 함께 해보실분 있으시면 댓글로 남겨주셨으면 좋겠습니다. 제가 더 배울것이 많았으면 좋겠습니다;
관심분야는 PHP, Javascript, Ajax, 웹표준/CSS 입니다;
감사합니다;
php스쿨에 올린 글입니다. 이글을 보는 당신도 저를 좀 도와주시지요-_-
'Web Dev > PHP' 카테고리의 다른 글
| PHP 이클립스(PHPEclipse) - 콘솔창에 실행하기 (0) | 2006/11/07 |
|---|---|
| [1원짜리 팁] 찾기힘든 실수 - header already sent를 막는방법; (0) | 2006/11/07 |
| 오픈소스 프로젝트에 참여하고 싶어요 (11) | 2006/10/23 |
| 젠드 프레임워크 0.1.3 (0) | 2006/04/19 |
| The Oracle + PHP Cookbook :: Oracle/PHP 환경의 LOB 처리 (0) | 2006/04/06 |
| PHP를 Eclipse로 개발하기(PHPEclipse) - 2. 설정편 (7) | 2006/03/21 |
서브버젼 설치, 사용법, 각종 트러블슈팅;
MVC패턴,레지스트리 패턴,싱글턴 패턴
Zend Framework - Controller
Template_
awstats
PEAR::DB
PEAR::Log
PEAR::Var_Dump
xampp
ethereal
mod_rewrite
mod_alias
mod_vhost
mod_expires
alias
.htaccess
.htpasswd
cronolog
VIM
CSS
JAD로 디컴파일;
웹표준
백업의 중요성;; rm -rf 의 무서움;;;( <- 뼈에 사무치도록 느꼈음;; )
오라클에 대해 어렴풋이 알기 시작함;
오라클 오브젝트 이름은 대소문자 구별이 안된다는것;
자동화툴로 개발하기
배치파일과 같은 sh 짜보기;
자바스크립트로 상속 구현하기
Solaris
tcp_wrapper
| grep | wc
crontab
curl
tail
-------------------------------------------------------
모르게 된것 : 내 짬밥에 맞는 행동양식 -_- 난 아직도 내가 상병 말호봉인것 같다..
마무리가 되어간다..
빡센 프로젝트는 정말 많은 것을 남긴다. 100일 남짓한 시간동안 참 많은 것을 배웠다.
앞으로 한달 동안 더 배워야 할것들도 많겠지만... 너무 앞만보고 달려왔으니 이젠 조금 쉬고 싶다.
MVC패턴,레지스트리 패턴,싱글턴 패턴
Zend Framework - Controller
Template_
awstats
PEAR::DB
PEAR::Log
PEAR::Var_Dump
xampp
ethereal
mod_rewrite
mod_alias
mod_vhost
mod_expires
alias
.htaccess
.htpasswd
cronolog
VIM
CSS
JAD로 디컴파일;
웹표준
백업의 중요성;; rm -rf 의 무서움;;;( <- 뼈에 사무치도록 느꼈음;; )
오라클에 대해 어렴풋이 알기 시작함;
오라클 오브젝트 이름은 대소문자 구별이 안된다는것;
자동화툴로 개발하기
배치파일과 같은 sh 짜보기;
자바스크립트로 상속 구현하기
Solaris
tcp_wrapper
| grep | wc
crontab
curl
tail
-------------------------------------------------------
모르게 된것 : 내 짬밥에 맞는 행동양식 -_- 난 아직도 내가 상병 말호봉인것 같다..
마무리가 되어간다..
빡센 프로젝트는 정말 많은 것을 남긴다. 100일 남짓한 시간동안 참 많은 것을 배웠다.
앞으로 한달 동안 더 배워야 할것들도 많겠지만... 너무 앞만보고 달려왔으니 이젠 조금 쉬고 싶다.
'Web Dev > etc' 카테고리의 다른 글
| "다음 오픈 API 개발자의 날" 행사에 참가합니다. (8) | 2007/08/25 |
|---|---|
| 이번 프로젝트에서 배운것 (2) | 2006/06/24 |
| MySQL에 사용자와 그 사용자가 쓸 DB생성 스크립트 (0) | 2006/03/28 |
젠드 프레임워크가 0.0.1 업그레이드 되었습니다;;;
방금 들어온 따끈따끈한 소식입니다; 젠드프레임워크 이용해 개발중인데 빨리 적용시켜봐야겠군요 ^^;
역시나 영어는 눈치로 하는지라 원문을 그대로 올립니다.
-------------------------------------------------------------------------------------------------------------------
ZEND FRAMEWORK PREVIEW RELEASE 0.1.3
by John Herren (staff) · Tuesday, April 18, 2006 · 12:30PM PDT · 0 comments
Today the Zend Framework team has launched a shiny new website and tagged another minor version release of the framework. Since the last release in early March, the codebase features some module additions and several bug fixes, as well as updated documentation. The latest preview release is available for download from the framework website, or developers can access the Subversion repository directly for bleeding-edge checkouts.
To stay on top of important changes in the framework, visit the framework website or follow changes to the NEWS.txt file in the Subversion repository for release notes. Up-to-the-minute commit notifications are also available. To subscribe, simply send an e-mail to fw-svn-subscribe@lists.zend.com.
Zend is actively seeking contributions to the framework for various code modules. To get involved, visit the FAQ page on the framework website to learn more about the contribution process and requirements. Those wishing to be involved in the development process are highly encouraged to participate in the framework mailing list, as it is currently the preferred forum for collaboration. Send an e-mail to fw-general-subscribe@lists.zend.com to subscribe to the framework mailing list.
Framework documentation translations have begun for French, German, Dutch, Chinese, and Japanese.
Bug tracking is still being managed through the mailing list. Alternately, developers can submit bug reports to framework-feedback@zend.com.
Release Notes for 0.1.3
Zend_Filter is* methods return strictly TRUE or FALSE. (Chris)
Zend_InputFilter has test* methods for retrieving valid data. (Chris)
Fixed bug in Zend_View_Abstract::__isset(). Reported by James Simmons. (Mike)
Zend_Db_Adapter_Pdo_Mysql::limit() now compatible with MySQL versions prior to 4.0. Reported by Greg Neustaetter (Mike)
Fixed bug in Zend_Controller_Dispatcher_Token::setParams(). Reported by Rob Allen. (Chris)
Fixed bug in Zend_Log::log(). Reported by Mislav. (Mike)
Updated Zend_Filter::isFloat() and Zend_Filter::isInt() to respect locale. (Chris)
Improved Zend_Db_Adapter_Pdo_Mssql contributed by Rob Allen. (Mike)
Fixed bug in Zend_Controller_Dispatcher::_formatName. Reported by Arpad Ray. (Chris)
Zend::dump() now works from CLI (Rob Allen)
Improved support for XML-RPC namespaces (Mike, Chuck)
Registry can now be tested with Zend::isRegistered (Shekar C. Reddy, Mike)
Zend_Search_Lucene promoted from incubator (Alex)
Zend_Cache has been accepted to the incubator (Fabien, Mislav)
Zend_Json testing expanded; covers all major cases (Matthew)
Fixed Zend_Json encoding of empty values (Matthew, Davey)
Fixed Zend_Json encoding of associative arrays (Matthew, Davey)
Fixed Zend_Json encoding of numeric indices in associative arrays (Matthew)
Removed formatting (newlines, tabs) from Zend_Json encoding methods (Matthew)
Fixed escaping in Zend_Json_Encoder (Matthew)
Zend_HttpClient moved to Zend_Http_Client (Mike)
Zend_Console_Args in the incubator but not yet refactored (Jason Garber)
Zend_Mail enhancements in the incubator by Austria Telekom (Nico, Clez)
Zend_Service classes no longer subclass Zend_Service_Rest (Davey, Andi, et al)
Zend_Service classes now use new Zend_InputFilter (Davey)
Fixed bug in Zend_Service_Amazon::itemLookup() (Davey)
Fixed bug in Zend_Service_Flickr::userSearch() (Davey)
Fixed bug in Zend_Uri_Http::__construct(). Reported by Adrian Gheorghe. (Mike)
Improved some not well-formed PDF processing with Zend_Pdf. (Alexander)
Minor Zend_Pdf documentation fixes. (Alexander)
Fixed Zend_Pdf processing of inherited page attributes. (Alexander)
Fixed Zend_Pdf umlauts support for standard fonts. (Alexander)
방금 들어온 따끈따끈한 소식입니다; 젠드프레임워크 이용해 개발중인데 빨리 적용시켜봐야겠군요 ^^;
역시나 영어는 눈치로 하는지라 원문을 그대로 올립니다.
-------------------------------------------------------------------------------------------------------------------
ZEND FRAMEWORK PREVIEW RELEASE 0.1.3
by John Herren (staff) · Tuesday, April 18, 2006 · 12:30PM PDT · 0 comments
Today the Zend Framework team has launched a shiny new website and tagged another minor version release of the framework. Since the last release in early March, the codebase features some module additions and several bug fixes, as well as updated documentation. The latest preview release is available for download from the framework website, or developers can access the Subversion repository directly for bleeding-edge checkouts.
To stay on top of important changes in the framework, visit the framework website or follow changes to the NEWS.txt file in the Subversion repository for release notes. Up-to-the-minute commit notifications are also available. To subscribe, simply send an e-mail to fw-svn-subscribe@lists.zend.com.
Zend is actively seeking contributions to the framework for various code modules. To get involved, visit the FAQ page on the framework website to learn more about the contribution process and requirements. Those wishing to be involved in the development process are highly encouraged to participate in the framework mailing list, as it is currently the preferred forum for collaboration. Send an e-mail to fw-general-subscribe@lists.zend.com to subscribe to the framework mailing list.
Framework documentation translations have begun for French, German, Dutch, Chinese, and Japanese.
Bug tracking is still being managed through the mailing list. Alternately, developers can submit bug reports to framework-feedback@zend.com.
Release Notes for 0.1.3
Zend_Filter is* methods return strictly TRUE or FALSE. (Chris)
Zend_InputFilter has test* methods for retrieving valid data. (Chris)
Fixed bug in Zend_View_Abstract::__isset(). Reported by James Simmons. (Mike)
Zend_Db_Adapter_Pdo_Mysql::limit() now compatible with MySQL versions prior to 4.0. Reported by Greg Neustaetter (Mike)
Fixed bug in Zend_Controller_Dispatcher_Token::setParams(). Reported by Rob Allen. (Chris)
Fixed bug in Zend_Log::log(). Reported by Mislav. (Mike)
Updated Zend_Filter::isFloat() and Zend_Filter::isInt() to respect locale. (Chris)
Improved Zend_Db_Adapter_Pdo_Mssql contributed by Rob Allen. (Mike)
Fixed bug in Zend_Controller_Dispatcher::_formatName. Reported by Arpad Ray. (Chris)
Zend::dump() now works from CLI (Rob Allen)
Improved support for XML-RPC namespaces (Mike, Chuck)
Registry can now be tested with Zend::isRegistered (Shekar C. Reddy, Mike)
Zend_Search_Lucene promoted from incubator (Alex)
Zend_Cache has been accepted to the incubator (Fabien, Mislav)
Zend_Json testing expanded; covers all major cases (Matthew)
Fixed Zend_Json encoding of empty values (Matthew, Davey)
Fixed Zend_Json encoding of associative arrays (Matthew, Davey)
Fixed Zend_Json encoding of numeric indices in associative arrays (Matthew)
Removed formatting (newlines, tabs) from Zend_Json encoding methods (Matthew)
Fixed escaping in Zend_Json_Encoder (Matthew)
Zend_HttpClient moved to Zend_Http_Client (Mike)
Zend_Console_Args in the incubator but not yet refactored (Jason Garber)
Zend_Mail enhancements in the incubator by Austria Telekom (Nico, Clez)
Zend_Service classes no longer subclass Zend_Service_Rest (Davey, Andi, et al)
Zend_Service classes now use new Zend_InputFilter (Davey)
Fixed bug in Zend_Service_Amazon::itemLookup() (Davey)
Fixed bug in Zend_Service_Flickr::userSearch() (Davey)
Fixed bug in Zend_Uri_Http::__construct(). Reported by Adrian Gheorghe. (Mike)
Improved some not well-formed PDF processing with Zend_Pdf. (Alexander)
Minor Zend_Pdf documentation fixes. (Alexander)
Fixed Zend_Pdf processing of inherited page attributes. (Alexander)
Fixed Zend_Pdf umlauts support for standard fonts. (Alexander)
'Web Dev > PHP' 카테고리의 다른 글
| [1원짜리 팁] 찾기힘든 실수 - header already sent를 막는방법; (0) | 2006/11/07 |
|---|---|
| 오픈소스 프로젝트에 참여하고 싶어요 (11) | 2006/10/23 |
| 젠드 프레임워크 0.1.3 (0) | 2006/04/19 |
| The Oracle + PHP Cookbook :: Oracle/PHP 환경의 LOB 처리 (0) | 2006/04/06 |
| PHP를 Eclipse로 개발하기(PHPEclipse) - 2. 설정편 (7) | 2006/03/21 |
| Linux 및 Windows 환경을 위한 PHP, Oracle 10g Instant Client 설치 (1) | 2006/03/13 |
출처: http://www.oracle.com/technology/global/kr/pub/articles/oracle_php_cookbook/fuecks_lobs.html저자 Harry Fuecks
4,000 바이트 제한이 문제가 되십니까? LOB를 활용하십시오...
Downloads for this article:
Oracle Database 10g
Zend Core for Oracle
Apache HTTP Server 1.3 (및 이후 버전)
VARCHAR2와 같은 오라클 데이터 타입은 유용하게 활용됩니다. 하지만 4,000 바이트 이상의 데이터를 저장하려면 어떻게 해야 할까요? 바로 오라클이 지원하는 Long Object (LOB) 데이터 타입이 필요합니다. 또 LOB와 호환하는 PHP API의 사용법을 알고 있어야 합니다. 이에 필요한 지식을 갖고 있지 않은 개발자에게는 무척 까다로운 과제가 될 수 있습니다
이번 “Oracle+PHP Cookbook” 시리즈 연재에서는, LOB 데이터 타입과 PHP에서 LOB를 다루는 방법을 예제를 통해 알아보기로 합니다.
오라클의 Long Object
오라클은 다음과 같은 LOB 데이터 타입을 지원합니다:
BLOB - 바이너리 데이터의 저장에 사용
CLOB - 데이터베이스 문자 셋 인코딩을 이용한 문자 데이터 저장에 사용
NCLOB - 국가별 문자 셋을 이용한 유니코드 문자 데이터 저장에 사용. (본 문서에서 사용되는 PHP OCI8 익스텐션은 NCLOB을 지원하지 않음을 참고하십시오.)
BFILE - 운영체제 파일시스템에 저장된 외부 파일의 참
4,000 바이트 제한이 문제가 되십니까? LOB를 활용하십시오...
Downloads for this article:
Oracle Database 10g
Zend Core for Oracle
Apache HTTP Server 1.3 (및 이후 버전)
VARCHAR2와 같은 오라클 데이터 타입은 유용하게 활용됩니다. 하지만 4,000 바이트 이상의 데이터를 저장하려면 어떻게 해야 할까요? 바로 오라클이 지원하는 Long Object (LOB) 데이터 타입이 필요합니다. 또 LOB와 호환하는 PHP API의 사용법을 알고 있어야 합니다. 이에 필요한 지식을 갖고 있지 않은 개발자에게는 무척 까다로운 과제가 될 수 있습니다
이번 “Oracle+PHP Cookbook” 시리즈 연재에서는, LOB 데이터 타입과 PHP에서 LOB를 다루는 방법을 예제를 통해 알아보기로 합니다.
오라클의 Long Object
오라클은 다음과 같은 LOB 데이터 타입을 지원합니다:
BLOB - 바이너리 데이터의 저장에 사용
CLOB - 데이터베이스 문자 셋 인코딩을 이용한 문자 데이터 저장에 사용
NCLOB - 국가별 문자 셋을 이용한 유니코드 문자 데이터 저장에 사용. (본 문서에서 사용되는 PHP OCI8 익스텐션은 NCLOB을 지원하지 않음을 참고하십시오.)
BFILE - 운영체제 파일시스템에 저장된 외부 파일의 참
