최근 마이크로소프트사의 오픈소스 진영에 대한 활동 확대와 그 맥을 같이 하는 괜찮은 웹 개발도구를 하나 만나게 되었습니다. "웹 개발"이라 하면 브라우저에 표시되는 가장 기본적인 HTML 편집을 비롯해서 CSS, 자바스크립트 편집과 같은 클라이언트 레벨의 개발 과정이 있고 서버 레벨로는 ASP.NET, PHP, Node.js 편집과 함께 데이터베이스 질의 및 관리 등이 연상됩니다. 이런 개발 과정을 위해서 드림위버와 같은 전문 웹 디자인 도구도 있고 노트패드++("노트패드++ 한글 사용 환경 준비하기" 참조)와 같은 전문 텍스트 편집기도 있고 이클립스나 넷빈즈처럼 소스 코드 편집과 빌드 및 디버깅 도구를 합친 통합 개발 환경도 있지만 웹매트릭스는(https://www.microsoft.com/web/we..
최근의 웹페이지들은 UTF-8인코딩을 채용하는 경우가 점점 늘어나고는 있지만 윈도우 환경이 지배적인 한국에서는 여전히 EUC-KR인코딩 내지 CP949 인코딩을 지원해야하는 것은 한국 개발자들의 숙명이 아닌가 싶습니다. 최근 PHP 환경에서 인코딩 변환을 하다가 문제를 해결한 사례를 메모해 둡니다. 웹서버는 UTF-8 인코딩으로 웹페이지 및 MySQL 데이터베이스에 저장하는 체계인데 서너개의 테이블을 조인해서 엑셀로 내려받기하는 기능을 추가하려 했습니다. DB 쿼리도 문제없고 테스트 과정에서 댓글도 하나로 잘 조인 되었습니다. SELECT t.id, t.type ttype, FROM_UNIXTIME( t.time /1000000 ) ctime, t.priority, t.owner, t.reporter, ..
프로그래밍 과정에서 배열만큼 많이 활용되고 편리한 데이터 구조체는 없을 것입니다. 배열은 모든 원소의 데이터 타입이 동일한 데이터 집합으로 정의할 수 있으며 인덱스에 의해서 각 원소를 접근할 수 있습니다. PHP에서는 좀더 유연한 형태의 배열을 다룰 수 있으며 스트링과 같은 기본 타입 뿐만아니라 복잡한 클래스 오브젝트도 배열의 원소로 사용할 수 있습니다.그런데, 배열을 사용하다보면 편리하기는 하지만 배열은 PHP 환경 파일에서 설정한 메모리 허용 용량 내에서만 사용할 수 있기 때문에 파일 용량이 크거나 배열 크기가 커지는 경우에는 프로그램이 메모리 한계에 부딛혀 비정상 종료되는 상황이 벌어질 수 있습니다. 그래서 대용량 배열을 메모리에 저장하지 않고 디스크에 저장해서 용량의 크기에 관계없이 정상적인 프로..
PHP 프로그램을 개발하다보면 실행 환경이 달라짐에 따라 이전 환경에서는 발생하지 않던 오류 메시지가 나타나거나 정상 동작하지 않는 경우가 있습니다. 통상 PHP실행 환경 파일을 수정한 다음 웹서버를 재가동시키는 것이 일반적인 대처 방법이고, 버전 관련 문제라면 연관 코드를 수정할지 면밀히 검토해야 합니다. 그렇지만, 웹서버 설정을 손대기 어렵거나, 환경 설정 변경이 다른 응용에 미칠 영향이 불투명하다면 프로그램에서 오류메시지 출력에 관한 설정을 실행 과정에 조정할 수 있습니다.error_reporting(0);위의 코드를 삽입하면 이후로는 모든 메시지를 출력하지 않습니다. 실제로 중요한 오류 메시지가 출력되어야 한다면 위험한 설정일 수는 있습니다.error_reporting(E_ALL & ~E_NOTI..
다국어 기반으로 응용 프로그램을 작성하는 경우 아래의 그림과 같이 "키=내용"으로 단순 구성된 각 언어별 파일을 만드는 방식을 많이 사용하게 됩니다. 이런 다국어 기반의 응용을 지속적으로 버전업 하다 보면 대부분 영어 번역이나 한글 번역등 중심이 되는 기본 언어 파일에는 내용을 추가하거나 변경하지만 다른 언어에 대해서는 추가 및 업데이트를 소홀하게 되는 경우가 많습니다. 특히 커뮤니티의 기여를 통해서 번역을 확장해 가는 오픈 소스 프로젝트의 경우에는 더더욱 이런 현상이 비일비재한 것이 사실입니다. 프로그램은 새로운 버전이 릴리즈 되었는데 정작 번역 파일은 따라가지 못하다보니 듬성 듬성 번역되지 않은 것 때문에 프로그램이 불완전하게 보이기도 합니다. 이런 상황을 보완하기 위해서 기본 언어와 번역 대상을 하..