728x90
반응형

분류 전체보기 904

MySQL Erro Code 28이 리턴되는 경우

작업 서버에서 잘 되던 쿼리가 에러가 떨어졌다. 에러 코드 내용... ERROR 1030 (HY000): Got error 28 from storage engine 1030 에러코드를 메뉴얼로 찾아보니 별다른 내용도 없고, 위 메시지랑 같은 이야기만... ^^;; Error: 1030 SQLSTATE: HY000 (ER_GET_ERRNO) Message: Got error %d from storage engine 그래서 사내 DBA분에게 물어보고 확인해 본 결과 28 에러코드는 다음과 같은 방법으로 찾는 것이라고 한다. [xxxxxx bin]# ./perror 28 OS error code 28: No space left on device mysql이 설치된 디렉토리의 bin 디렉토리에서 perror라는..

Server/DB 2009.04.08

푸조 207RC

몇 일전 출근하다가 푸조 207RC 모델을 봤는데, 참 보기 힘든 모델 보게 됬다란 생각을 가지게 되었습니다. 스키드 러쉬에서 주력 차종으로 쓰고 있는 모델인데... 차량 이미지는 아래처럼 생겼습니다. 3door 모델이고, 수동 기어만 수입되며, 달리기 성능이 207GT에 비해 뛰어나다는 정도는 이미 알고 있었고, 그래서 좀 덜 팔린 모델로서 레어 아이템이구나 란 생각은 하고 봤었습니다. 그런데 오늘 아방가르드님의 블로그를 통해서 207RC 모델이 7대 밖에 안팔렸다는 글을 보게 되었네요. ^^ (http://avantgarde.egloos.com/1690019 참조) 뭐 통계치가 2007년 통계 기준이니 지금은 훨씬(?) 더 많이 팔렸겠지만... ^^ 그래도 몇대 안팔린 차를 보게 되었다는 사실이 재밌..

웹 애플리케이션 배포하기

어떤 파일이 어느 곳에 위치하는지는 중요하다. php를 개발 할 때 프로그래머가 임의로 정하는 장소와는 달리 Java(JSP)는 어느정도 rule을 가지고 특정 위치에 특정 파일을 배포해야지만, 전체 웹 애플리케이션이 돌아가기 때문이다. 따라서 중요한 몇개의 파일 타입별 배포 위치에 대해 정리해 보면 아래와 같다. 정적인 컨텐츠(html, 이미지) 및 jsp 루트 디렉토리 및 그 하위 디렉토리 WEB-INF 밑에 배포 할 경우에는 클라이언트가 직접 접근할 수 없다. 대신 웹 애플리케이션에서 접근을 하게 만들 경우를 위해서 배포할 순 있다. 태그파일(.tag) - http://www.4te.co.kr/567 참고 WEB-INF/tags 디렉토리에 배포 DD 파일 이름은 web.xml이어야 하며 WEB-IN..

Java/Servlet & JSP 2009.04.07

부모 자식 태그간의 통신

커스텀 태그 안에 커스텀 태그가 위치해 있을 경우 서로간에 필요한 속성이라던가 내용 등을 읽어올 필요가 있다. 이럴 경우에는 다음과 같은 방법으로 접근할 수 있다. myCustomTag3.tld 0.1 Nested NestedLevel Check NestedLevel com.example.tag.NestedLevelTag JSP NestedLevelTag.java package com.example.tag; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.Tag; import javax.servlet.jsp.tagext.TagSupport; public class NestedL..

Java/Servlet & JSP 2009.03.26

클래식 커스텀 태그

JSP2.0 이전 버젼에서의 커스텀 태그는 심플 방식이 아닌 클래식 방식을 사용한다. simple 방식에서는 doTag() 메소드 하나로 모든 작업을 하고, exception 처리도 JspException, IOException를 throw 해서 catch 블럭이 없지만, 클래식 방식에는 doStartTag(), doEndTag() 메소드를 사용하며, JspException만을 throw 해서 catch 블럭에서 IOException을 잡을 필요가 있다. 간단하게 아래 예제를 통해 알아보자 tld 파일 0.9 KathyClassicTags ludicrous use of a Classic tag classicOne com.example.tag.Classic1 empty com.example.tag.Clas..

Java/Servlet & JSP 2009.03.26

사용자 정의 태그 개발 (1)

표준 액션 또는 JSTl과 같은 기능을 하는 태그 파일을 만들어 보자. 위와 같이 코딩 한 후 WEB-INF 아래 tags란 디렉토리를 만들어 Header.tag 파일로 저장한다. 그리고 난 후 우리가 url에 호출할 파일을 만들어 보자. Welcome to our site. 위와 같이 만든 다음 DocumentRoot 아래 customTag란 디렉토리 안에 customTag.jsp란 파일로 만들었다. 브라우져에 http://localhost:8080/customTag/customTag.jsp를 호출하면 아래와 같은 모습이 보여진다. 위에서 라고 사용한 부분을 보면 파일명이 바로 Tag 명이 된 것을 알 수 있다. 또한 표준액션에서 param을 사용한 것처럼 사용할 수 있다. customTag.jsp H..

Java/Servlet & JSP 2009.03.23

커스텀 태그 사용하기

사용자 정의 태그를 만들어서 사용할 수 있다. 사용 방법은 EL에서 함수를 만드는 방법과 유사하나 조금 더 복잡한 부면이 있다. 커스텀 태그를 만들기 위해서는 tld 파일과 java class 파일이 필요하다. 예제로 유저에게 랜덤하게 조언을 해 주는 커스텀 태그 소스를 보면 이해하는데 도움이 된다.(소스는 역시 Head & First Servelet & JSP에서 사용된 것이다.) 우선 tld 파일은 EL과 마찬가지로 WEB-INF 밑에 작성한다. 이름은 myCustomTag.tld로 한다. 0.9 RandomTags rollIt com.example.DiceRoller int rollDice() randomThings random advice advice com.example.AdvisorTagHan..

Java/Servlet & JSP 2009.03.17

JSTL 사용하기 (2)

클라이언트의 브라우져에서 쿠키 사용을 제한 하고 있을 경우 jsessionid를 추가하여 url로 세션 정보를 공유하는 방법은 이미 서블릿에서 살펴 봤다. jstl에서도 이와 같은 방법을 사용할 수 있다. 서블릿 response.encodeURL("/BeerTest.do"); jstl 위와 같이 하게 되면 url 뒤에 jsessionid를 덧 붙여서 사용하게 된다. 하지만 urlencoding을 자동으로 하지는 않게 된다. urlencoding을 하게 하려면 아래와 같은 방법을 사용해야 한다. 위와 같이 하게 되면 last, first에 설정 된 값에 있는 공백과 같은 값이 인코딩 되어 사용 된다. * 오류 페이지 만들기 오류 메시지를 그대로 보여주지 않고 디자인 된 페이지를 보여주려면, 예외 사항이 발..

Java/Servlet & JSP 2009.03.16

JSTL 사용하기 (1)

jsp에서 스크립팅을 사용하지 않고 루프를 돌리거나 조건문을 실행하는 방법으로 사용하는 것이 JSTL이다. JSTL을 사용하기 위해서는 다음과 같은 방법으로 설정을 해 줘야 한다. apache-tomcat-6.0.18\webapps\examples\WEB-INF\lib 에 있는 jstl.jar 파일과 standard.jar 파일을 WebContent/WEB-INF/lib 밑으로 copy 한다. 위와 같이 하게 되면 jstl을 사용할 수 있다. jstl을 사용할 수 있게 됬으므로 forEach 문을 돌려보자. 사용 방법은 php에서 사용하는 foreach 문과 별로 다를 바가 없다. web.xml jstlTest com.example.jstlTest jstlTest /Jstl 서블릿 코드 package c..

Java/Servlet & JSP 2009.03.12

지난 주 양평 쪽으로 플레이샵 가다가 애스턴 마틴 뱅퀴시를 봤습니다.

애스턴마틴 뱅퀴시 v12 봤습니다. 제가 차 보는 눈은 정확해서 DB9인지 뱅퀴시인지 정확히 구분 할 수 있는데 확실히 뱅퀴시 맞더군요... 요 차... 그래서 얼마나 하나 확인해 볼려고 http://auto.naver.com/brand/list.nhn?ctype=company&company_id=3827에 들어가 봤더니 DB9이 최고레벨... 그 이상은 가격도 안나와 있네요. DB9이 172,000 달러 정도... 한화로 2억 6천 정도니... 뱅퀴시 같은 경우는 적어도 3, 4억은 호가 할 듯... ㄷㄷㄷ 사진이나 한방 찍어올걸 그랬습니다. 아 뱅퀴시 본 장소는 미사리 지나서 팔당대교 타기 전 무슨 유명한 국수집이였는데... 참 눈만 호강 했네요... ㅋ 덧. 뱅퀴시에 대해서 http://blog.d..

인생이야기 2009.03.11

네이버 지도 서비스에 실시간 교통 정보가 포함...

네이버 지도 서비스에 실시간 교통 정보가 표시된다는 기사를 보고 한번 테스트를 해 보았다. 간단한 기능 테스트와 스샷을 아래 표시한다. 4일 현재 http://map.naver.com을 들어가면 위와 같은 이미지로 새롭게 update 된 내용을 알리는 간단한 공지사항이 하나 뜬다. 관심이 가는 부분은 실시간 교통정보 표시와 실시간 교통정보를 참조하여 빠른길을 찾아 준다는 점이다. 해당 내용을 한번 확인해 보고자 실제로 확인해 보았다. 현재 ip를 기초로 자신위 위치한 곳을 보여준다. 회사에서 확인해 봤으므로 정자역을 중심으로 보여준다. 물론 ip로 정확한 지역을 알 수 없는 경우에는 적용이 안되는 것으로 안다. 오른쪽 상단에 있는 '실시간교통' 이라는 버튼을 누르니 위와 같은 모습이 표시된다. 정자 역 ..

iDStick 초대장 나눠 드립니다.

어떻게 해서 iDStick 초대를 받게 되었는데, 가입하게 되니 최초 5장의 초대장이 생기게 되네요. 한장은 이미 다른 분께 초대해 드렸고, 4장 현재 남아 있습니다. 자세한 설명은 요길 보시고 사용 예는 제 블로그 아래에 나와 있는 아래와 같은 이미지를 참고해 보시면 됩니다. 아래 댓글로 초대 받으실 이메일을 비밀글로 달아 주세요. ^^ 순서대로 초대해 드리겠습니다.

Etc 2009.02.19

템플릿 형태로 JSP 사용하기

템플릿 형태로 모듈화 해서 jsp를 사용하기 위해서는 include를 사용하면 된다. include를 사용하는 형식은 "include 지시자"와 "include 표준 액션"을 사용할 수 있다. include 지시자를 사용하여 코딩하는 예제는 다음과 같다. include 표준 액션은 다음과 같이 사용한다. 지시자를 사용한 include일 경우에는 변환시에, include 표준액션은 실행시에 Header.jsp파일을 실행한다. 만일 Header.jsp 파일에서 동적인 내용을 포함할 페이지로부터 받아야 한다면 다음과 같이 사용할 수 있다. Header.jsp ${param.subTitle} 변수를 미리 선언해 두고 Header.jsp 파일에서 사용하는 방법이 아닌 param 태그를 사용하여 변수를 넘길 수 있..

Java/Servlet & JSP 2009.02.16

EL 함수 사용하기

EL 표현에서도 함수(메소드)를 사용할 수 있다. EL에서 메소드를 사용하기 위해서는 다음과 같은 순서를 따라 작성해야 한다. 1. 정적인 공용 메소드를 제공하는 클래스를 만든다. 해당 메소드는 EL(JSP)에서 사용할 메소드이므로 반드시 정적인 공용 메소드여야 하며, 리턴 타입이 있어야 한다. 그래야지 JSP에서 브라우져에 내용을 그릴 수 있다. 2. 태그 라이브러리 서술자 파일을 만든다. EL 함수를 사용하기 위해서는 TLD(Tag Library Descriptor)란 파일로 자바 클래스, 메소드와 EL에서 호출할 메소드 명을 맵핑해야 한다. 3. JSP에 taglib 지시자를 코딩한다. 4. 함수를 호출하는 EL을 작성한다. 위 형식대로 EL을 작성해 보면 아래 처럼 작성할 수 있다. * DiceR..

Java/Servlet & JSP 2009.02.13

EL 사용하기

프로퍼티의 프로퍼티를 스크립틀릿이나 표준액션으로만 표현하기가 어렵거나 아예 불가능한 경우가 있다. 즉 다음과 같은 서블릿 코드를 스크립틀릿이나 표준액션으로 표현하려고 하면 다음과 같이 표현할 수 밖에 없을 것이다. public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { foo.Person p = new foo.Person(); p.setName("Evan"); foo.Dog dog = new foo.Dog(); dog.setName("spike"); p.setDog(dog); request.setAttribute("person", p); RequestDi..

Java/Servlet & JSP 2009.02.12

표준 액션을 사용한 JSP

"자바 빈을 이용해서 특정 객체의 값을 가져와 보여주는 소스는 아래와 같은 형식으로 jsp에서 사용할 수 있다. Person is : jsp내에서 스크립틀릿을 없애기 위해 나온 것이 표준 액션이므로 스크립틀릿을 없애는 방법으로 표현하자면 아래와 같이 할 수 있다. Person created by servlet : 위에서 id로 지정한 것을 아래 getProperty에서 name으로 가져다 쓸 수 있다. property의 name은 자바빈의 getter, setter에서 사용하는 값이다. 즉 name은 getName()과 같은 기능을 하게 되는 것이다. class는 패키지 명까지 다 써야한다. getProperty가 있다면 당연히 setProperty도 있다. setProperty는 다음과 같이 사용할 수..

Java/Servlet & JSP 2009.02.11

오늘 하루의 시작이...

왠지 이상하군요... 아침에 버스 뒷좌석 가운데 앉고 좌우 창가로 학생 둘이 앉아 있었는데, 왠 동네 양아치 같은 사람이 오더니 내 좌측에 앉는 겁니다. 5명이 앉는 자리에 내 좌측에 2명, 우측에 한명 앉으니 총 4명이 앉았는데 이 양아치 같은놈이 한다는 소리가 형씨 좀 넓게 앉읍시다 라고 하더만요 -.-;; 뭐 양아치랑 말싸움 해 봐야 득될것도 없고 그냥 넓게 앉아서 4명이서 앉아 갔습니다. 그놈의 양아치는 아주 다리를 쭥 벌려서 건드릴려면 건드려 봐라는 식으로 굴더군요 -.-;; 우째든 중간쯤 가다 보니 어떤 아주머니가 와서 그 좁은 좌석에 가운데 앉겠다고 좀 비켜 달라네요 -.-;; 뭐 어쩔 수 없이 이번에는 오른쪽으로 붙었습니다. 저와 그 양아치 사이에 아주머니가 앉게 된 것이죠. 아주머니 양아..

인생이야기 2009.02.11

JSP 초기화 하기

ServletConfig를 web.xml에 정의해 두고 나서 서블릿에서 가져다 쓰는 방법에 대해 http://www.4te.co.kr/540 에서 다루었었다. JSP에서도 마찬가지로 초기화를 통해서 web.xml에 있는 ServletConfig를 변수처럼 사용할 수 있다. 방법은 서블릿 생명 주기에서 가장 처음에 한번만 호출하는 메소드인 jspInit() 메소드를 오버라이드 해서 사용하면 되는 것이다. 사용 방법은 아래와 같다. MyTestInit /TestInit.jsp email ikickedbutt@wickedlysmart.com MyTestInit /TestInit.jsp 위와 같이 설정을 하면 된다. 다만 servlet-class가 아니라 jsp-file 이라는 태그를 사용하게 되며, 패키지 형..

Java/Servlet & JSP 2009.02.10

배틀 하다가 다리 아래로 떨어졌네요 ^^;;

다리에서 밀려 떨어지는 중... 첨에는 물로 떨어지다가 결국엔 잔디밭(?)이 나오는 군요 ^^;; 앞서가는 차량을 멀리서 멍 하니 처다 보기만 할 뿐 -.-;;;;;;; 아무 생각없이 앞으로 달려가니 다시 도로 위로 올라가네요. 그나 저나 너무나도 차량 스펙이 좋고, 잘 달리는 사람들이 많아서 배틀 하기가 여간 힘든게 아니네요 ㅎ

스크립틀릿에서 변수 선언하기

다음과 같이 jsp를 작성해서 방문자의 숫자를 세어 보는 코드를 만들 생각을 할 수 있다. The page count is now: 이렇게 하게 되면 화면에 "The page count is now:1" 이라는 메시지가 찍힐 것이다. 하짐나 브라우져를 리프레쉬 하게 되면 count가 2가 되는 것이 아니라 여전히 1이 된다. 왜냐면 위에서 선언한 count란 변수는 지역 변수로 작용하기 때문이다. 즉 jsp는 서블릿으로 변하면서 그 모든 코드가 _jspService 메소드 안에 작성 되는데 count란 변수 역시 _jspService 메소드 안에서 정의 된다는 뜻이다. jsp 코드가 서블릿으로 변환 되게 된다면 아래와 같은 코드를 가지게 될 것이다. public void _jspService(HttpSe..

Java/Servlet & JSP 2009.02.04

랩타임 성적이 많이 좋아 졌네요

위 이미지는 작년 7월 쯤에 8등급 차 타이거와 스피릿으로 달린 경우인데 둘다 잘 달렸다고 생각 했는데도 50초대 나왔던 기록입니다. 가장 최근에 같은 맵에서 달린 기록은 아래 스샷과 같습니다. 차도 9등급 MPM7으로 바뀌고 귀속이랑 기타 km 옵션 달린 파츠, 부스터 옵션 달린 파츠 등을 끼고 달린 거지만 어째든 20초 정도 향상된 기록을 세우고 있네요. 위 스샷에서 최고 기록인 94Lv 차량이 세운 기록보다도 빠르네요 ㅋㅋ 물론 그때보다도 현재 많은 분들의 차량 성능이 많이 증가했겠지만 어째든 80대 랩에서 저정도 기록이 나온다는 것을 보아 기분이 좋습니다. 그나 저나 얼른 80파츠 득, 귀속 1등 득해야 할텐데요 ㅎㅎ

간단한 Jsp 시작하기

Jsp를 작성하게 되면 jsp는 컨테이너에 의해서 서블릿으로 변형되게 된다. 간단하게 얼마나 많은 요청을 받았는지를 출력하는 jsp를 작성해 보면 다음과 같다. Counter.java package com.example; public class Counter { private static int count; public static synchronized int getCount() { count++; return count; } } BasicCounter.jsp Counter 클래스에서 static int 변수를 두어서 요청한 횟수를 저장할 변수를 만든다. BasicCounter.jsp에서는 page 지시자를 사용하여 com.example.*을 import 한 후 Counter 객체를 사용해서 카운트를 ..

Java/Servlet & JSP 2009.02.04

HttpSessionBindingListener와 HttpSessionAttributeListener

HttpSessionAttributeListener는 세션에 어떤 속성이 추가, 제거, 수정되는 이벤트가 발생하는지 알고 싶을 때 사용한다. 반면에 HttpSessionBindingListener는 자신이 세션에 속성으로 추가되었는지, 제거 되었는지 알기 위하여 사용한다. package com.example; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionBindingListener; public class Dog implements HttpSessionBindingListener { private String breed; public Dog(String breed) { this.breed = ..

Java/Servlet & JSP 2009.02.02

Cookie 사용하기

웹 프로그래밍을 하다 보면 자연스럽게 나오게 되는 부분이 쿠키(Cookie)이다. Java에서도 쿠키를 사용할 수 있는데, 다음과 같은 방식으로 사용하면 된다. 1. Cookie 객체 생성 Cookie cookie = new Cookie("username", name); 2. Cookie 생명 주기 설정 cookie.setMaxAge(30*60); //30분... 3. Response에 Cookie 추카 response.addCookie(cookie); 4. Request에서 Cookie 일어오기 Cookie[] cookies = request.getCookies(); for(int i = 0 ; i

Java/Servlet & JSP 2009.02.02

Session 관리

클라이언트와 지속적인 연결을 유지하지 못하는 것이 http protocol의 특징이므로, 이전 요청한 클라이언트와의 연결을 유지하기 위해서 Session을 사용한다. 컨테이너(톰캣) 단에서 Session ID를 발행하고, 해당 Session ID와 Cookie를 맵핑 한 다음 해당 쿠키를 클라이언트에서 사용하도록 하면 클라이언트를 구분해서 받을 수 있다. * 세션 ID는 다음과 같은 방법으로 사용할 수 있다. HttpSession session = request.getSession(); 위와 같이 하게 되면, request로부터 세션 ID를 가지고 올 수 있고, 제일 처음 요청이라면 response 객체에 보낼 쿠키도 생성하게 된다. * 세션이 이미 있는지, 아니면 처음 요청으로 새롭게 만들게 되었는지를..

Java/Servlet & JSP 2009.01.30

스레드 안전한 ServletContext 만들기

스레드 안전이란 말은 어떤 속성에 set을 한 다음 get을 하기 전에 다른 무엇인가가 해당 속성에 set을 해서 내가 set한 속성 값을 그대로 get하지 못하는 경우를 말한다. ServletContext에서도 스레드 안전이 보장되지 못한다. 즉 다음과 같이 코딩하게 되면 잘못된 결과가 리턴될 수도 있다는 말이다. public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("test context a..

Java/Servlet & JSP 2009.01.29
728x90
반응형