본문 바로가기

Web/DB/Dev

getElementById()가 크롬에서 동작하지 않는 경우 체크할 것 조그마한 웹페이지를 하나 만들어도 Internet Explorer와 Chrome, Firefox 등 여러 브라우저에서 정상적으로 동작하는지를 검토해야하고 게다가 모바일에서까지 잘 동작하는지 체크하고 안되면 수정하는 것은 많은 웹개발자들에게 큰 어려움이다. 어쩌다 한번 웹 소스를 수정하는 나에게도 이건 정말 욕나오는 시추에이션이다. 오늘도 그런 일이 하나 있었다. 그런데 이 경우는 엄밀하게 이야기해서 "나의 실수"였지만 그 실수를 유발하는 것은 다름아닌 Microsoft의 IE였다. 뭔고하니 바로 자바스크립트에서 웹페이지상에 생성된 객체(select box, text box 등)를 조회하여 해당 객체를 리턴해주는 getElementById() 함수의 동작방식이다. 아래와 같은 소스가 있다. 이슈 기한/요청일자 더보기
[SQL / OUTER JOIN] 데이터가 없을 경우 0으로 표시하는 쿼리 두개의 테이블을 Join 할 때 기준이 되는(코드) 테이블을 기준으로 join 하는 테이블(데이터)에 데이터가 없을 경우 inner join을 사용하면 기준이 되는 테이블의 행이 표시되지 않는다. 이 때 데이터가 없을 경우 0으로 표시하고 싶다면 outer join을 사용해야 한다. 예를 들어 특정 문자열이나 에러코드, 감사로그 코드의 일별 통계를 뽑을 때 한건도 없는 경우 일반적인 Inner Join을 하게 되면 건수가 0인 날짜는 출력되지 않는다. 이럴 때 해당 일자에 0건으로 출력되도록 하는 경우에 outer join을 사용할 수 있다.다음의 두 테이블에서 예를 들어 설명하면... table name : t_student no name 01 홍길동 02 김철수 03 이영희 table name : t.. 더보기
톰캣 2개 설치 후 세션 정보 (JSESSIONID) 가 꼬이는(?) 문제 윈도 서버의 IIS와는 달리 Java 가상머신 위에서 구동되는 톰캣은 하나의 머신에 여러개가 설치되어 각각 구동될 수 있다. 특히 윈도서버에 설치되는 이런 저런 솔루션들은 톰캣과 JDK를 내장하고 웹서비스를 제공하는 경우가 있다. 이런 경우 JDK와 톰캣이 2개 이상 동시에 구동된다. 톰캣은 기본적으로 TCP/8080 포트로 웹서비스를 제공한다. 두개를 설치하였다면 둘중 하나의 서비스 포트를 8080 이외의 다른 포트번호로 변경하여 주면 두개의 톰캣이 각기 다른 JDK를 이용해 구동되는 것이 가능하다. 하지만 여기에서 문제가 발생하는 경우가 있다. 각각 다른 웹서비스인 두개의 톰캣은 사용자 로그인(웹 서비스 로그인) 세션관리를 위해 JSESSIONID라는 세션쿠키(?)를 사용한다. 그런데 서로 다른 JD.. 더보기
[제로보드/XpressEngine 설치] gd 라이브러리 설치와 mod_rewrite 문제 오랫만에 PHP 용 게시판의 대명사 제로보드를 설치할 일이 생겼다. 일 때문이라기 보단 그저 궁금함..?? 때문이기도 했다. 제로보드에서 XpressEngine으로 이름을 바꾸고 네이버의 탈(?)을 쓰긴 했지만 오픈소스를 유지하며 계속 버전업이 되고 카페모듈까지도 지원이 되니 개발에 취미가 없는 나 같은 사람에게는 딱~좋은 무료 게시판 소스다. 그저 감사히 사용할 따름이다. UTF-8 캐릭터셋을 지원하는 리눅스 서버에 http://www.xpressengine.net 에서 다운받은 xe.tar를 올려놓고 (zip으로 제공한다.) tar를 해제한 뒤 http://IPAddress/xe 와 같이 브라우저로 접근한다. (DocumentRoot의 xe 디렉토리 아래에 압축을 해제한경우) 설치하다보니... 이런... 더보기
JSP의 통합 개발환경 "이클립스"를 다시 깔다. 처음 Java를 공부했던 2000년 즈음에는 쓸만한 java 개발환경을 지원하는 IDE가 없었다. 비주얼베이직이나 비주얼C는 훌륭한 개발환경을 Microsoft에서 제공하기 때문에 "자바는 뭐 이따위야..."라는 생각을 했었던 기억이 있다. 하지만 10여년이 지난 지금 Java 언어는 이제 개인홈페이지에도 쓰일 만큼 대중화가 되었고 대부분의 엔터프라이즈 급 어플리케이션 개발 프로젝트의 대부분에 주요 언어로 사용되고 있다. 그리고 여러 Java 개발환경 지원도구들도 개발되어 많은 개발자들의 개발을 도와주고 있다. 비록 지금은 개발분야의 일을 하고 있지는 않지만 이따금씩 코딩이 필요한 경우가 있다. 엔지니어 조직을 관리하면서 기술업무를 병행하기 위해 만들었던 프로젝트관리 및 엔지니어 일정관리(http://c.. 더보기
Apache, PHP, MySql 환경에서 한글저장 시 깨질때 확인할 것들... 2 byte 코드를 사용하는 한글을 데이터베이스에 저장할 때 DB의 잘못되어 있는 캐릭터셋 설정은 많은 개발자와 DBA에게 혼란을 야기한다. 아주 오래전 신입사원시절에 Ingres라는 DB의 기술지원을 할 때도 가끔 한글코드가 잘못 지정되어 있어 DB를 업그레이드하거나 다른 서버로 마이그레이션할 때 불편함을 겪곤 했다. 그리고 15년이 지난 요즘...취미삼아 붙잡고 있는 Apache, PHP, MySql 의 환경에서도 여전히 DB의 한글코드 문제는 이따금씩 발생하곤 한다. 예를 들자면 웹페이지의 한글은 정상적으로 깨지지 않고 표시되는데 웹페이지를 통해 DB에 한글을 저장하고 다시 웹페이지에서 불러오면 DB에 저장한 한글데이터가 깨져보이는 현상이 대표적인 "한글깨짐" 증상이다. 이때 확인해야할 것은 1. .. 더보기
[Solaris 10 x86] Apache2 + PHP5 + mysql5 (APM) 설치하기 어제부터 끙~끙~대던 협력사 엔지니어 교육 준비.... 내가 하기로 했던 교육을 류과장에게 부탁했는데... 벌을 받은 듯... APM이 설치된 Solaris10 vmware 이미지가 말썽을 부리기 시작했다. 이유없이 TTY 모니터링도 동작을 안하고 이런 저런 오류도 발생하고.... 그동안 별의별 짓을 다하며 잘 부려먹었는데 드디어 탈이 난 모양이다. 그런데.... 백업해둔줄 알았던 APM 설치된 Solaris10의 VMWare 이미지가 없다... -.- 이런 낭패가.... 아무리 백업 디스크를 뒤져봐도 없다. APM이 설치 안된 Solaris10은 있는데 APM이 설치된 Solaris10은 없다. 설상 가상 SunFreeWare에서 패키지를 다운받아 pkgadd를 실행하는데 통... 설치가 안된다. 분명.. 더보기
안드로이드 개발환경 구축하기(JDK + 이클립스 + 안드로이드 SDK + ADT) 윈도 모바일 스마트폰을 사용할 때는 어플의 개발에 별 관심이 없었습니다. 윈도 모바일 자체가 워낙 불안정한데다 윈도의 개발환경과 별반 다를 바가 없기 때문이었죠. 헌데 안드로이드 운영체제와 IOS의 등장으로 모바일 기기 운영체제가 다양해지니 왠지 개발환경을 한번 경험해보고 싶어졌습니다. 그리고 모바일기기에서 실행되는 어플의 특징을 한번 살펴봐야겠다 싶었습니다. 그래서 안드로이드 개발환경을 한번 구축해보기로 했습니다. = 기본적으로 필요한 것은 다음과 같습니다. * JDK * 이클립스 * 안드로이드SDK 이클립스에 플러그인 형식으로 설치되는 안드로이드 툴킷(ADT)는 이클립스를 설치하고 이클립스 실행 후 인터넷으로부터 설치해도 되기 때문에 따로 파일을 다운로드 받아둘 필요는 없었습니다. = 먼저 JDK를 .. 더보기
나모코드에디터로 PHP 코딩 시 UTF-8의 BOM으로 인한 헤더오류 방지법. 취미삼아 PHP를 이용해 웹으로 이것 저것 코딩하며 노는 나로서는 HTML이나 CSS, PHP 함수에 대해 많은것을 항상 외우고 있지를 못하다. 코딩을 할 때마다 똑같은 키워드를 매일 인터넷을 뒤져가며 하다보니 코딩 속도도 더디고 힘도 많이 든다. 그러다 발견한 나모코드에디터.... 바로 내가 찾던 에디터다. 직접 만들 실력은 안되니 실력자들이 만들어 놓은 것을 주로 활용하는 내게 나모코드에디터는 사막을 헤매다 오아시스를 만난 듯한 느낌을 주었다. (물론 조금 아쉬운 부분들도 있지만..) 그런데... UTF-8로 저장하고 서버에 업로드한 뒤 브라우저에서 호출하면 이런 에러가 찍힌다.. 아무리 해도 이유를 알아내지 못하다가 얼마전에야 그 원인을 알았다. (관련포스트 : http://cybercafe.tis.. 더보기
PHP 코드로 날짜 및 요일 구하기 PHP는 날짜 계산을 위한 함수를 다양하게 제공한다. 그중에서도 오늘날자를 원하는 포맷으로 구하는 방법... 그리고 몇일 전을 구하는 방법... 그리고 오늘을 기준으로 이번주의 월요일을 구하는 방법을 소개한다. - 아래 이미지의 월요일구하기는 오류발생함 - ^^ 더보기
PHP 세션응용 코딩 시 session_start() [function.session-start]: Cannot send session cache limiter - headers already sent 에러의 원인 PHP의 session 변수를 이용해 사용자 로그인 여부를 검사하는 코딩을 할 때 이따금씩 특정 웹페이지에서 "session_start() [function.session-start]: Cannot send session cache limiter - headers already sent ~~~" 라는 오류를 보게 된다. 처음엔 도대체 이게 무슨 원인으로 발생하는 것인지 몰라 헤매곤 했다.그리고 오늘.. 또 뭔가 새로운 기능을 구현하다가 이 에러를 맞닥뜨렸다. PHP와 MySql이 각각 euc-kr로 설정된 상태에서 php 소스파일을 UTF-8로 저장하게 되면 바로 이 에러가 발생한다. 당연히 php는 4.x 버전, MySql도 4.x 버전이다. 하지만 반대로 PHP와 MySql이 모두 UTF-8이 지원되.. 더보기
APM Setup 7에 제로보드5(XpressEngine) 설치하기. 최근에 미니 PC를 한대 구입했다. 회사에서 이것 저것 잡다한 테스트와 파일저장소로 사용하기 위해서다. 이것 저것 따지다.. 궂이 강력한 퍼포먼스가 필요한 것이 아니어서.. 전력소모 적고 발열이 적은 아톰CPU를 가진놈으로 샀다. 다만 그래도~ 서버로 쓸거라서 아톰 듀얼인 D510이 들어간 놈으로 주문했다. CPU : Atom D510 1.66GHz RAM : 2 GByte HDD : 1.5 T 그리고 거기에 Windows 7을 설치하고 체험지수를 봤다. 아...1.0.... 그런데.. 그래픽성능이 1.0이었다. ㅋㅋ 그나마 다행... 뭐.여기서 게임할건 아니니까.. 상관없다. ㅋㅋㅋ 의외로 프로세서나 메모리는 그런대로 쓸만했다. 이제 테스트용으로 쓸 웹서버와 게시판소스를 골랐다. 별 고민없이 그냥 AP.. 더보기