라벨이 DOC인 게시물 표시

[DOC] oreilly vs smartupload

제가 알고 있는 업로드 패키지의 대표적인 주자는 oreilly의 multipartrequest와 jspsmart의 smartupload가 있습니다. 과거 처음 자바를 시작할때는 스승이 smartupload를 선호해서 smartupload를 이용해서 사용했습니다. 그러다가 java service net에서 이원영님의 글중 smartupload는 업로드 도중 중간에 취소하면 그 쓰레드가 쌓이고 쌓여 서버에 문제가 발생하는 버그가 존재한다는 내용이 있었습니다... 그래서 자연스레 multi로 옮겨가게 되었습니다. 제가 생각하는 두 업로드 패키지의 장단점을 비교해보겠습니다. smartupload... 업로드시 캐릭터 인코딩이 따로 필요없습니다. 서버의 셋팅에 따라서 인코딩을 취합니다. 그러나 이것이 치명적인 단점이 되어 다국어 처리나 접속환경에 따라 인코딩에 문제가 발생합니다.. 파일업로드폼의 name이 동일해도 별 수정없이 모두 사용가능합니다... multipartrequest.. 업로드시 캐릭터 인코딩이 필요합니다. 따라서 다국어 처리가 비교적 간단해질수 있습니다.. 파일업로드 폼의 name이 동일하면 제공되는 API로는 모든 파일을 다 사용할 수 없습니다... 따라서 가능한 폼의 파일업로드의 name는 다 다르게 만들어야 합니다. 또한, getFileNames()시에 폼에 작성된 순서대로 name이 출력되지 않습니다. 이것은 파일 정보를 hashtable에 저장하기 때문이므로, Linkedhashmap으로 수정하여 사용하시면 됩니다... 비록 multipart가 파일업로드시에 몇가지 제한이 있기는 하지만, 인코딩부분 처리만 추가해주면 손쉽게 다국어 처리가 가능하다는 장점이 있습니다.. 따라서 주인장은 oreilly의 손을 들어주고 싶습니다

[DOC] 포틀릿

Portlets “포틀릿은 복합페이지의 컨텍스트내에 결집되기 위해 특별히 고안된 웹컴포넌트이다. 통상 많은 포틀릿들은 포탈페이지의 단일 요청(request)로 호출된다. 각 포틀릿은 마크업 조각을 생성한다. 그것은 다른 포틀릿의 마크업과 겹합되어 전체 포탈페이지 마크업이 된다.” (JSR 168 포틀릿 스펙중) 이 기사는 다음의 주제들을 다룬다: 1. 포탈 페이지의 요소 2. 포탈이란 무엇인가? 3. 포틀릿이란 무엇인가? 4. "Hello World" 포틀릿 개발하기 5. Pluto에 "HelloWorld" 배치하기(Deploy) 6. 포탈페이지는 어떻게 생성되는가? 7. 결론 8. 참고자료 포틀릿스펙은 포틀릿을 "요청의 처리 및 동적 컨텐츠를 생산하는 포틀릿 컨테이너에 의해 관리 되어지는 자바기술기반의 웹컴퍼넌트"로 정의하고 있다. 위의 정의로는 포틀릿에 대해 이해하기가 쉽지 않다. 이 기사는 포틀릿이 무엇이며 무엇을 하는지 설명한다. Figure 1. 일반적인 포탈서버 컨텐츠(WebSphere Portal 5.1) 브라우저 컨텐츠를 자세히 들여다 보면 이 페이지는 다른 여러개의 "윈도우"로 구성된것을 발견할 수 있을 것이다. 한 윈도우는 날씨정보를 갱신하고, 다른 윈도우는 뉴스를 보여준다. 또다른 윈도우는 증권시세를 실시간으로 갱신하는등 다양한 윈도우들이 있다. 이런 각 윈도우들은 포틀릿을 보여준다. 더 자세히 보면 각 윈도우는 타이틀바와 최소화, 최대화등 몇개의 버튼들로 구성되어 있는것을 발견할 수 있을 것이다. 한 페이지에서 이 윈도우들은 각기 독립적으로 개발된 다른 어플리케이션들 이다. 뉴스 포틀릿 개발자는 어플리케이션을 만들고 .war파일도 압축한다. 그러면 포탈서버의 관리자는 .war파일을 서버에 설치하고 페이지를 생성하게 된다. 다음 단계로 모든 사용자는 자신의 페이지에 필요한 어플리케이션을 선택할 수 있게 된다. 예를들어, 만일 사용자가 증권시세에 관심이 없...

[DOC] 스프링 프레임워크를 사용한 데이터 접근

0. 서문 : 하이버네이트 사용자를 위한 스프링의 이점들 스프링의 가벼운 빈 컨테이너는 비지니스 객체들, DAO들, JDBC DataSources와 하이버네이트 SessionFactories와 같은 리소스들을 IoC 형태로 묶어준다. 커스텀 프라퍼티 파일들로부터 그 설정내용들을 읽어들이는 부분에 있어, XML 정의 어플리케이션 컨텍스트는 수동으로 관리되는 싱글톤 혹은 팩토리들에 대한 강력한 대체물일 것이다. 침입받지 않는 것이 핵심 목표이기 때문에, 스프링에 의해 설정되는 어플리케이션 빈들은 스프링 인터페이스 혹은 클래스들에 의존할 필요는 없지만, 그것들의 bean 프라퍼티들을 경유하여 설정된다. 이러한 개념은 어떠한 환경에서도 적용가능한데, J2EE 웹 어플리케이션, 데스크탑 어플리케이션, 혹은 심지어 애플릿에까지 확장된다. 하이버네이트 환경에서, DAO를 위해 제공되는 스프링의 포괄적인 트랜잭션 관리는 매우 흥미롭다. 목적은 데이터 접근과 트랜잭션 경계 영역을 분리하는 것인데, 이것은 특정한 데이터 접근 혹은 트랜잭션 전략을 가지지 않는 재사용 가능한 transactional 비지니스 객체 사용을 가능하게 한다. 경계는 TransactionTemplate를 사용한 프로그래밍적인 방법으로도 가능하고, AOP TransactionInterceptor를 경유하여 작성될 수도 있다. native 하이버네이트/JDBC 트랜잭션들과 JTA 모두 사용가능한 방법들이다. 이것은 로컬 비상태 세션 빈에 대한 실용적인 대안일 것이다. 스프링의 HibernateTemplate는 하이버네이트 기반 DAO를 구현하는 간편한 방법들을 제공하는데, 이것은 Session 인스턴스를 다루거나 혹은 트랜잭션들(관리)에 참여하는 것에 신경쓰지 않도록 해준다. try-catch 블럭도 필요 없고, 트랜잭션 체크도 필요없다. 간단한 하이버네이트 접근 메써드가 한줄에 모든 것을 가능하게 해준다. 잡다한 DAO들을 묶어주는 것은, DAO 인터페이스와 트랜잭션 관리 모두의 관점에서 잘 작동한다. 예...

[DOC] Oracle AS

Oracle Application Server 10g는 표준 통합 소프트웨어 플랫폼으로서, 모든 규모의 기업이 변화하는 비즈니스 요구사항에 보다 신속히 대응할 수 있도록 도와 준다. 이 서버는 고객이 필요로 하는 모든 미들웨어 서비스의 배포 관리, 엔터프라이즈 포탈, 모바일 장치를 통한 개별적인 애플리케이션 공급, 실시간 비즈니스 정보 제공, 애플리케이션 통합, 비즈니스 프로세스 자동화 등을 모두 제공한다. 개방형 표준을 지원함은 물론 써드파티 애플리케이션 및 툴과 즉시 설치 사용 가능한 기반으로 상호운용되기 때문에, 기존의 투자로 최대의 가치를 이끌어 낼 수 있다. 그리고, Oracle Application Server 10g는 정보 시스템의 광범위한 요구사항을 처리할 수 있도록 높은 수준의 성능과 가용성을 제공한다. 감수 | 장세국 sekook.jang@oracle.com 엔터프라이즈 그리드 컴퓨팅 지원 Oracle Application Server 10g는 클러스터 컴퓨팅과 엔터프라이즈 그리드 배포 구조를 완벽하게 활용할 수 있도록 최적화되었다. IT 시스템을 엔터프라이즈 그리드로 마이그레이션하면, 비즈니스의 유연성을 높이고 하드웨어 및 관리 비용을 낮출 수 있을 뿐 아니라 서비스 수준 또한 한층 더 높이 끌어올릴 수 있다. 자동화된 소프트웨어 및 사용자 프로비저닝(User Provisioning)을 통해 시스템 용량을 늘릴 수 있다. Oracle Application Server 10g는 비용과 시간이 많이 드는 시스템 관리 업무를 없애주는 동시에 비즈니스의 유연성 또한 높여 준다. 정책기반 작업로드 관리(Policy-Based Workload Management)를 통해 수요와 요구사항의 변화에 적응할 수 있다. Oracle Application Server 10g를 사용하면, 리소스가 가장 많이 필요한 곳에 귀중한 시스템 자원을 할당할 수 있어 기존 인프라에서 보다 많은 가치를 얻을 수 있다. 적은 비용으로 메인프레임이 주는 보안성과 안정성을...

[DOC] 웹 프로그래밍 언어 php의 새로운 도전 PHP5

웹 프로그래밍 언어 php의 새로운 도전「php5」 php5가 새로이 릴리즈 되었다. 아니 정확히 말하면 5.0.0 beta부터 말하자면 이미 나온 지는 1년이 넘어간다. 그리고 이제 5.01이 릴리즈 되었다. 아직 대부분의 사이트에서는 5.0은 그리 많아 보이지 않는다. 솔직히 4.x 버전도 크게 문제되진 않는다. 하지만 5.0 버전이 새로이 나왔다는 것은 필자를 포함하여 여러 사람에게 꽤나 흥미 있는 이야기가 아닐 수 없다. 이 글은 php5의 새로운 기능과 그에 관련된 전반적인 내용에 대해 알고 싶어하는 사람을 위한 글이다. 옛것 그리고 새로운 것 php는 현재 가장 많이 사용되고 있는 웹 프로그래밍 언어중 하나이다. 엄청나게 강력한 기능을 제공함에도 불구하고 공짜로 구할 수 있으며 또한 여러 플랫폼의 지원까지 이루 말할 수 없는 수많은 장점을 지닌 언어라는 것은 따로 말할 필요가 없을 것이다. 그러나 이러한 강점들도 완벽한 것은 아니다. 필자 역시 개발 당시 “역시 이러한 것은 아직 안 되는군” 이라고 말하며 아쉬워했던 부분이 있었으니 말이다. 독자 역시 그러한 경험이 있었을 것이다. 그리고 php5가 나왔다. 다음에 무슨 말이 나올지 당연히 짐작되는 바와같이 php5는 php4의 수많은 문제점들이 수정되었다. 그리고 여러 가지 새로운 개념이 들어가게 되었다. 필자는 php5의 새로운 기능에 대해서 여러 가지로 보여 줄 것이다. 그러나 php5의 모든 기능을 다루진 못할 것이다. 좀 더 많은 아직 php5의 소식을 듣지 못한 개발자나 혹은 듣기만 했을 뿐 아직 다뤄보지 않은 개발자 그리고 관심을 갖는 모른 사람들은 지금 당장 php5를 설치해 보기 바란다. 그리고 좀더 새로운 php5의 세계에 발을 담가보기 바란다. 자 그럼 이제부터 php의 새로운 기능에 폭 빠져보도록 하자! “php5는 객체 지향적인 웹 프로그래밍 언어이다.” 필자는 방금 제목에서부터 거짓말을 했다. php는 객체지향 프로그래밍 언어가 아니다. 하지만 php5는 그런 거짓말을 진실...

[DOC] ActiveX 삭제하기

‘나도 모르게 설치된’ ActiveX 삭제하기 ActiveX는 기존의 응용 프로그램으로 작성된 문서 등을 웹과 연결시켜 사용할 수 있게 하는 기술로 웹 페이지에 접속하면 자동으로 설치 창이 떠서 다운로드하게 되어 있다. 국내에서는 주로 게임ㆍ동영상ㆍ인터넷 뱅킹 프로그램에 주로 사용되고 있으며 타 국가에 비해 액ActiveX 사용 비중이 높은 편이다. ActiveX는 웹 개발시 편리성을 제공하지만, 최근 웹에 은닉되어 있는 악성코드를 자동으로 실행하게 되어 있어 악성코드 유포 및 해킹 등에 악용되고 있다. 이러한 ActiveX의 피해를 최소화하는 방법을 알아보자. ActiveX 자동 실행 막기 악성코드 등 유해 프로그램은 Active X가 자동 실행된다는 점을 교묘하게 악용하고 있다. 따라서 Active X 자동 실행을 막아야 한다. 이를 위해서는 인터넷 익스플로러의 보안 설정을 조정하면 된다. ① [도구]→[인터넷 옵션]→[보안]→[사용자 지정 수준]→[보안 설정] ② [ActiveX 컨트롤 및 플러그인]→각 항목에 대하여 값 선택 ③ [서명 안 된 ActiveX 항목 다운로드]→ 사용 안 함 ④ [서명된 Active X 항목 다운로드] → 확인 ⑤ [안전하지 않은 것으로 표시된 ActiveX 컨트롤 초기화 및 스크립트] → 확인 이러한 과정을 거치면 동의하지 않은 ActiveX가 자동 설치되는 것을 막을 수 있다. 설치된 ActiveX 삭제하기 인터넷을 사용하다 보면 기능을 알지 못하는 수많은 ActiveX 프로그램이 설치된다. 이 ActiveX는 다음과 같은 방법으로 제거할 수 있다. ① [도구]→[인터넷 옵션]→[임시 인터넷 파일]→[설정]→[개체 보기] ② 마우스 오른쪽 버튼으로 삭제할 ActiveX 클릭 → [제거] 선택 개체보기 목록에 나타나는 악성 프로그램을 제거하면 된다. 참고로 전체를 다 제거하더라도 ActiveX는 인터넷 사이트를 방문할 때마다 다시 설치할 수 있으므로 인터넷을 사용하는데에는 문제가 없다.@

[DOC] 이클립스에서 자바독 만들기

export 하실때 javadoc command에 jdk\bin\javadoc.exe 즉 jdk를 까신 디렉토리 하위의 bin폴더에 있는 javadoc.exe를 찾아서 입력해주시면 됩니다. (configure버튼 눌러서 찾으시길) code assist는 eclipse에 자체 내장되어 있습니다.

[DOC] Java Doc 사용법

@ author 이름 - 이 태그는 모든 클래스와 인터페이스 정의에서 사용되어야 한다. - 개별적인 메소드와 필드에서는 사용하면 안된다. - 클래스가 여러 명의 작성자를 가지고 있다면, 인접 라인에 여러 개의 태그를 사용할수 있다. @ version 텍스트 - 모든 클래스 및 인터페이스 문서 주석에 포함되어야 한다. - 개별적인 메소드와 필드에서는 사용할 수 없다. @ param 매개변수 – 이름 설명 - 메소드나 생성자에 사용되는 주석 - 각각의 매개변수에 대해 하나의 태그를 사용한다. - 매개변수가 세부 설명을 요구한다면 이 설명은 다중 라인으로 싸여지고 필요한 양 만큼의 텍스트도 포함할 수 있다. - 각각의 설명을 서로 정렬하기 위해서 공백을 사용할 수도 있다. Ex) @param o 삽입객체 @param index 삽입객체의 인덱스 @return 설명 - 메소드가 void를 리턴하거나 생성자가 아닌 경우를 제외하고 모두 사용해야 한다. Ex) @return ‘ true ’ 삽입이 성공한 경우 ‘ false ’ 삽입이 실패한 경우 @exception, throws Ex) @exception java.io.FileNotFoundException 지정된 파일이 발견되지 않는 경우 @see 참조 - @see java.lang.reflect - @see java.util.List - @see List - @see java.io.InputStream#reset - @see InputStream#close - @see InputStream#read(byte[], int, int) - @see ...

[DOC] editplus 자바 컴파일, 패키지 컴파일 방법

에디터 플러스 상에서 --> 도구 > 사용자 도구 구성에서.. 1. 자바컴파일러 메뉴제목 : 자바 컴파일러 명령 : C:\j2sdk1.4.2_04\bin\javac.exe 인수 : 파일이름 디렉토리 : 파일디렉토리 출력내용캡처 에 체크 2. 자바 패키지 컴파일러 메뉴제목 : 자바패키지 컴파일러 명령 : C:\j2sdk1.4.2_04\bin\javac.exe 인수 : -d . 파일이름 디렉토리 : 파일디렉토리 출력내용캡처 에 체크 명령 프롬프트 상에서 --> javac -d . Xxxx.java 또는 javac -d . 패키지명\Xxxx.java (java파일과 class 파일을 패키지명으로된 디렉토리에 위치시킨다.) 3. 자바 인터프리터(결과보기) 메뉴제목 : 자바인터프리터 명령 : C:\j2sdk1.4.2_04\bin\java.exe 인수 : 확장자를 뺀 파일이름 디렉토리 : 파일디렉토리

[DOC] 구현(implement)과 상속(extends) 차잇점

우선, extends는 일반 클래스와 abstract클래스 상속에 사용되고, implement는 interface상속에 사용됩니다. 그럼, 상속이라는것은? 나의 부모가 부자라면, 내가 부모로부터 상속 받는 다면 나도 부자가 됩니다. 결국, 다른것으로부터 그들의 기능을 빌려다 쓴다고 생각하시면 됩니다. 자바에서의 상속은 2가지 형태가 있습니다. 하나는 extends 이고, 다른 하나는 implements인데, 첫번째는 순수 상속으로 앞에 설명 드린것처럼, 부모로부터 모든 권한과 재산과 능력을 가져 옵니다. 다른 하나는 구현상속, 이라고 합니다. 구현상속 ==> 인터페이스라고 흔히 하죠. 상속이라기 보단. 인터페이스만을 얻어 오는 겁니다. 쉽게 얘기해서, 무언가로 부터 상속은 받되, 그 상속 내용이 란게 비어 있고, 그 비어 있는 것을 내가 꼭 채워서 써야 하는 것을 의미합니다. [소스2]는 childclass2 가 TestInterface을 상속받아서 implement 했다고 생각하시면 됩니다. 다른 비유로 설명한다면, implement(구현 상속)은 조언자로 부터 조언자가 잡은 고기를 얻는게 아니라, 고기를 잡는 방법을 얻어 온다고 생각하시면 됩니다. 그럼 실례로 들어서 생각해 봅시다. 누군가가 나에게 사용자가 입력한 내용을 파일로 저장하는 모듈을 만들어 달라고 했습니다. 파일 저장형식은 1) 엑셀, 2)html, 3)텍스트 세가지의 형식으로 저장 가능하도록 해야 한다고 할때, 개발자는 3가지의 기능이 각기 서로 상이 하므로 서로다른 3개의 모듈을 만들것 입니다. 하지만, 이 모듈을 정작 사용하는 입장에서는 3개의 모듈이 모두 같은 인터페이스를 제공 해주길 바랄것입니다. 결국 자바 클래스관점에서 본다면, 서로 다른 모듈이 하나의 인터페이스로 부터 구현 상속을 받아 야 할것 입니다. 그러면, 사용자는 그 하나의 인터페이스만 보고, 코딩을 하면 될테니까요. 더 쉽게 설명 드리면, extends: 부모로 부터 상속, implements: 조언자로 부터 상속이라...

[DOC] Hibernate

Hibernate 란? Hibernate에 관한 정의는 Hibernate Reference Documentation 에 보면 "Hibernate is an object/relational mapping tool for Java environments" 라고 정의하고 있습니다. 직역을 해보면 "Hibernate는 자바 환경을 위한 객체/관계형 매핑 도구이다". 여기서 object/relational mapping (ORM) 용어가 등장합니다. 참조 문서에 따른 정의에서 ORM은 객체 모형으로부터 SQL 기반의 스키마를 가진 관계형 데이터 모형으로 데이터 표현을 매핑하는 테크닉(technique of mapping a data representation from an object model to a relational data model with a SQL-based schema)이라고 설명하고 있습니다. ORM에 대한 다른 정의를 볼까요. Hibernate In Action(Manning)에서는 "객체/관계형 매핑은 객체들과 데이터베이스 사이의 매핑을 설명하는 메타데이터를 사용함으로써, 자바 어플리케이션 내의 객체들을 관계형 데이터베이스에 있는 테이블로의 자동화된(그리고 투명한) 영속화이다."라고 정의하고 있네요. Hibernate가 이렇게 어렵남? ? 물론 첨부터 ORM이라는 무거운 주제가 나와서 머리를 아프게 하겠지만, 일단은 이 주제를 통해 Hibernate가 무엇인지 더 잘 알 수 있으리라 생각됩니다. ORM의 문제점들 많은 사람들이 ORM은 문제가 많아서 기피하는 이유를 말하곤 합니다. 'ORM 비슷한 거 한번 써 보았는데 맞지 않더라!'. 이런 말을 하면서 무엇이 문제인지를 제대로 얘기해 주지는 않더군요. 그래서 저는 이 기회에 ORM의 일반적인 문제점을 언급하는게 좋겠다고 생각됩니다. (Hibernate In Action에서 발췌 번역...) [우리가 O/R 매핑 문제점들이라고 일컫...

[DOC] Spring관련 사이트

1) Model hibernate :: http://blog.naver.com/jdkim528.do 2) Controller spring :: http://openframework.or.kr/blog/ 3) View velocity :: http://blog.naver.com/jdkim528.do 4) etc

[DOC] 루비와 자바의 환상적인 만남, J루비 개발 테크닉

개발 환경의 대이동 스크립트 언어의 역습 최근 웹 개발 환경을 보면 루비를 선두로 하는 스크립트 언어들의 약진이 눈에 띈다. 이러한 스크립트 언어의 행보는 자바나 닷넷 개발자들을 스크립트 개발자로 변신시키고 있다. 심지어 자바 기술 리더인 브루스 테이트(Bruce Tate)마저 스크립트 언어의 손을 들어주었을 정도다. 그렇다면 이제 기존 개발 언어들은 모두 몰락의 길을 걷게 되는 것일까? 전문가들은 이 문제에 대한 답으로 기존 개발 언어와 스크립트 언어가 공존하며 서로를 보완해 주는 구도가 될 거라 예상한다. 기존 언어들의 장점을 최대한 살리면서 취약한 부분들에 스크립트 언어를 적용하여 안정성과 빠른 개발의 두 마리 토끼를 모두 잡을 수 있다는 것이다. 이번 특집에서는 기존 개발 언어들과 스크립트 언어를 융합하여 사용하는 기술과 활용 방법들에 대해 알아보았다. 기획·정리 | 정희용 기자 flytgr@imaso.co.kr 루비와 자바의 환상적인 만남, J루비 개발 테크닉 이창신 |오픈마루(openmaru) 플랫폼 오프너 1999년부터 2006년까지 무려 8년간 필자는 오직 자바만 팠다. 자바는 실로 모든 것을 할 수 있을 정도로 발전해왔지만, 그것이 모든 것을 잘 할 수 있음을 의미하지는 않다는 사실을 깨달은 것은 솔직히 얼마 되지 않았다. 오히려 자바는 과거의 오명을 많이 씻었다. 느린 성능도 잡아가고 있고, 플랫폼도 오픈 소스화 되어가고 있으며 툴도 풍부해져 가고 있다. 이렇듯 성장해가고 있는 자바라고해도 완벽할 수는 없는 법, 그리고 빠른 개발을 강렬히 원하는 21세기 IT 환경에서 동적 스크립트 언어의 활약은 더욱 기대 받고 있다. 그리고 그 선봉에 루비가 서 있다. 루비에 대해서는 그동안 마소를 통해 많이 소개된 바 있다. 게다가 2006년에는 통산 10대 개발 언어로 우뚝 설 만큼 메이저 프로그래밍 언어로 거듭나기도 한 저력이 있는 스크립트 언어이다. 이 10대 언어 중 1위가 자바였다는 점은 참으로 고무적이다. 그동안 C 계열 언어나 닷...