'2007/03'에 해당되는 글 6건
100여 군데 가까운 고객 사이트 중 WebtoB에서 PHP를 돌리는 곳은 딱 두 군데 있다. 그런데 우연의 일치인지 그 두 군데가 어제 오늘 사이로 모두 문제가 생겼다. 한 군데는 WebtoB 실행 계정이 변경되면서 오라클 환경 변수(TNS_ADMIN과 NLS_LANG)를 가져오지 못해서 일어나는 DB 접속 오류였고 나머지 하나는 PHP 페이지에 접근하면 무조건 500 internal error 뿌리면서 죽는 증상이었다.
첫 번째 경우는 오류메시지가 브라우저까지 ORA-12154메시지가 친절하게 뿌려져서 쉽게 증상을 잡을 수 있었지만 두 번째 경우는 모든 경우에 무조건 500 메시지만 보여져서 도무지 원인을 파악할 수 없었다.
오랜시간 브라우저를 통해서만 증상을 파악하다가 테스트의 편의를 위해 커맨드라인 상에서 해당 PHP 파일들을 실행해 보다 우연히 500이 뜨는 페이지는 모두 Notice 이하 각 오류 메시지가 나오는 걸 확인했다. 혹시 이것인가 해서 phpinfo()의 error_reporing을 확인해 보니 E_ALL로 되어 있었고 이 상태에서 Notice를 발생시키는 테스트 페이지를 생성해보니 역시 500이었다. error level을 조절해보니 아무 이상없이 잘 실행되었다.
즉 해결책은 php.ini에서 error_reporting = 0 로 설정하기였다.
오라클 오류가 난 기관은 Warning도 브라우저에 잘도 뿌려줬는데 여긴 왜 이랬는지 모르겠다. 내일 tmax 담당자한테 전화해서 물어봐야겠다.
첫 번째 경우는 오류메시지가 브라우저까지 ORA-12154메시지가 친절하게 뿌려져서 쉽게 증상을 잡을 수 있었지만 두 번째 경우는 모든 경우에 무조건 500 메시지만 보여져서 도무지 원인을 파악할 수 없었다.
오랜시간 브라우저를 통해서만 증상을 파악하다가 테스트의 편의를 위해 커맨드라인 상에서 해당 PHP 파일들을 실행해 보다 우연히 500이 뜨는 페이지는 모두 Notice 이하 각 오류 메시지가 나오는 걸 확인했다. 혹시 이것인가 해서 phpinfo()의 error_reporing을 확인해 보니 E_ALL로 되어 있었고 이 상태에서 Notice를 발생시키는 테스트 페이지를 생성해보니 역시 500이었다. error level을 조절해보니 아무 이상없이 잘 실행되었다.
즉 해결책은 php.ini에서 error_reporting = 0 로 설정하기였다.
오라클 오류가 난 기관은 Warning도 브라우저에 잘도 뿌려줬는데 여긴 왜 이랬는지 모르겠다. 내일 tmax 담당자한테 전화해서 물어봐야겠다.
Spring IDE plugin을 사용하면 빈 사이의 관계를 다이어그램으로까지 보여주는 것 같은데 일단 우리 개발환경과 맞지 않으므로 패스.
대신 MyEclipse를 사용하면 프로젝트 프로퍼티의 MyEclipse 항목 아래에 Spring 메뉴가 생긴다. 자세한 사용법은 좀 더 들여다봐야겠다.
대신 MyEclipse를 사용하면 프로젝트 프로퍼티의 MyEclipse 항목 아래에 Spring 메뉴가 생긴다. 자세한 사용법은 좀 더 들여다봐야겠다.
Hermes 개발 시 불편한 사항
- 코드와 설정, 자료 분리
- 소스에서 배포본(Deploy)을 만들고, 각 배포본 별 패치 생성, 실서버에 반영
미완성!
.springBeans
src/beanRefContext.xml
WebRoot/WEB-INF/webxml
.springBeans
src/beanRefContext.xml
WebRoot/WEB-INF/webxml
'영구 없다~'라는 유명한 말이 있다. 지금은 영화감독으로 활동하고 있는 심형래씨 최고의 유행이인데, 이를 한번 전산학적으로 접근하여 이 말이 어떤 의미를 가지고 있는지 고찰해 보자.
먼저 '영구 없다'라는 말이 명제로 볼 수 있는지 살펴보겠다. 명제가 되기 위해서는 참과 거짓을 판별할 수 있어야 한다. 이 문장은 두 부분으로 이뤄졌으며 그 뜻은 '영구'가 존재하지 않음('없다')을 표기하고 있다. 즉 우리가 '영구'가 있는지 없는지를 판별할 수 있다면 우리는 이 문장을 명제라 부를 수 있다.
그렇다면 우리는 어떻게 '영구'의 존재를 확인할 수 있을까? 이 작업을 하기 위해 이 문장을 전산학적으로 접근해 보자. 전산학의 기본은 숫자이다. 물론 좀 더 원론적으로 깊이 들어가면 0과 1의 세계가 펼쳐지지만 그 수준까지 가면 너무 미시적으로 바라보아 나무를 보느라 숲을 못 보는 오류를 범하게 되므로 일반적인 수준, 즉 C언어 수준의 시점을 견지하도록 하겠다.
앞서 말했듯이 전산학(C언어 기준, 이하 생략)에서는 모든 것, 객체는 물론이고 자바에서는 기본형으로 사용되는 문자열까지도 실은 숫자로 표현한다. 그러므로 '영구'를 숫자로 표현을 해보기로 하겠다. '영구'라는 말을 어떻게 숫자로 표현할 것인가에 대해 다양한 의견이 있을 수 있다. '영구'라는 텍스르틀 표기하려 하면 그 방법에 있어 UTF-8, 혹은 EUC-KR, 더 나아가 조합형 등 다양한 의견이 제시될 수 있을 것이다. 그러나 우리는 '영구 없다~'라는 문장이 텍스트로 씌여지기 보다는 심형래씨 본인의 육성으로 더욱 많이 들려졌다는 사실에 주목해야 한다. 즉 우리는 '영구'라는 말을 동일한 언어 체계에서 동일한 숫자의 구성으로 바라봐야 한다는 것이다. 이에 따르면 '영구'라는 말은 '09'라는 숫자와 같은 위상에 있다 말할 수 있다.
다음으로 전산학에서 '09'라는 숫자의 조합이 존재할 수 있는가를 따져보자. C언어에서 가장 많이 사용되는 숫자의 표기 형태(진법)는 코드를 짜는 프로그래머, 즉 사람에게 익숙한 10진수 표기이며 다음으로는 에러코드 등에 많이 사용하는 16진수 표기가 있다. 이 외에 거의 쓰이지 않는 8진수 표기가 있다. 16진수 표기는 0x로 시작하여 숫자 0부터 9까지 열 개 모두에다 모자란 여섯 개는 알파벳 앞의 여섯 개(a, b, c, d, e, f)를 사용한다. 그리고 8진수는 0으로 시작하며 0부터 7까지 여덟 개의 숫자를 사용한다. (참고로 C언어에서는 전산의 근원인 2진법 표기를 지원하지 않는다. 반면 루비에서는 0b로 시작하는 2진법 표기를 지원한다.)
자, 이제 우리는 문제를 풀수 잇게 되었다. 접근하고 있다. 앞에서 0으로 시작되는 숫자 표기는 8진법이라 하였다. 따라서 전산학에서 09(영구)는 8진수 표기이다. 그런데 0진법에서 사용할 수 있는 숫자는 그 정의에 의해 0부터 7까지로 제한되어 있으므로 숫자 9는 나타날 수 없다.
자, 이제 정리를 하고 결론를 내려보다. '영구 없다'라는 문장을 전산학적으로 접근하면 '09는 없다'라는 문장과 동위이고 8진법 09는 존재할 수 없다. 따라서 '영구 없다'라는 문장은 '거짓인 명제'이다.
이상 철야하다 하드디스크가 뻑나서 하드디스크 오류 검사가 끝나기를 기다리다 우연히 달력을 보고 오늘이 9일이구나 하다가 왜 달력은 보통 자릿수를 맞춰 09로 표기하지 않을까 하는 의문을 풀어보려는 엽우의 말도 안되는 이야기를 끝까지 읽어버린 당신께 심심한 위로의 말을 전하며 이만 줄이도록 하겠다.
먼저 '영구 없다'라는 말이 명제로 볼 수 있는지 살펴보겠다. 명제가 되기 위해서는 참과 거짓을 판별할 수 있어야 한다. 이 문장은 두 부분으로 이뤄졌으며 그 뜻은 '영구'가 존재하지 않음('없다')을 표기하고 있다. 즉 우리가 '영구'가 있는지 없는지를 판별할 수 있다면 우리는 이 문장을 명제라 부를 수 있다.
그렇다면 우리는 어떻게 '영구'의 존재를 확인할 수 있을까? 이 작업을 하기 위해 이 문장을 전산학적으로 접근해 보자. 전산학의 기본은 숫자이다. 물론 좀 더 원론적으로 깊이 들어가면 0과 1의 세계가 펼쳐지지만 그 수준까지 가면 너무 미시적으로 바라보아 나무를 보느라 숲을 못 보는 오류를 범하게 되므로 일반적인 수준, 즉 C언어 수준의 시점을 견지하도록 하겠다.
앞서 말했듯이 전산학(C언어 기준, 이하 생략)에서는 모든 것, 객체는 물론이고 자바에서는 기본형으로 사용되는 문자열까지도 실은 숫자로 표현한다. 그러므로 '영구'를 숫자로 표현을 해보기로 하겠다. '영구'라는 말을 어떻게 숫자로 표현할 것인가에 대해 다양한 의견이 있을 수 있다. '영구'라는 텍스르틀 표기하려 하면 그 방법에 있어 UTF-8, 혹은 EUC-KR, 더 나아가 조합형 등 다양한 의견이 제시될 수 있을 것이다. 그러나 우리는 '영구 없다~'라는 문장이 텍스트로 씌여지기 보다는 심형래씨 본인의 육성으로 더욱 많이 들려졌다는 사실에 주목해야 한다. 즉 우리는 '영구'라는 말을 동일한 언어 체계에서 동일한 숫자의 구성으로 바라봐야 한다는 것이다. 이에 따르면 '영구'라는 말은 '09'라는 숫자와 같은 위상에 있다 말할 수 있다.
다음으로 전산학에서 '09'라는 숫자의 조합이 존재할 수 있는가를 따져보자. C언어에서 가장 많이 사용되는 숫자의 표기 형태(진법)는 코드를 짜는 프로그래머, 즉 사람에게 익숙한 10진수 표기이며 다음으로는 에러코드 등에 많이 사용하는 16진수 표기가 있다. 이 외에 거의 쓰이지 않는 8진수 표기가 있다. 16진수 표기는 0x로 시작하여 숫자 0부터 9까지 열 개 모두에다 모자란 여섯 개는 알파벳 앞의 여섯 개(a, b, c, d, e, f)를 사용한다. 그리고 8진수는 0으로 시작하며 0부터 7까지 여덟 개의 숫자를 사용한다. (참고로 C언어에서는 전산의 근원인 2진법 표기를 지원하지 않는다. 반면 루비에서는 0b로 시작하는 2진법 표기를 지원한다.)
자, 이제 우리는 문제를 풀수 잇게 되었다. 접근하고 있다. 앞에서 0으로 시작되는 숫자 표기는 8진법이라 하였다. 따라서 전산학에서 09(영구)는 8진수 표기이다. 그런데 0진법에서 사용할 수 있는 숫자는 그 정의에 의해 0부터 7까지로 제한되어 있으므로 숫자 9는 나타날 수 없다.
자, 이제 정리를 하고 결론를 내려보다. '영구 없다'라는 문장을 전산학적으로 접근하면 '09는 없다'라는 문장과 동위이고 8진법 09는 존재할 수 없다. 따라서 '영구 없다'라는 문장은 '거짓인 명제'이다.
이상 철야하다 하드디스크가 뻑나서 하드디스크 오류 검사가 끝나기를 기다리다 우연히 달력을 보고 오늘이 9일이구나 하다가 왜 달력은 보통 자릿수를 맞춰 09로 표기하지 않을까 하는 의문을 풀어보려는 엽우의 말도 안되는 이야기를 끝까지 읽어버린 당신께 심심한 위로의 말을 전하며 이만 줄이도록 하겠다.