'개발하는 남자'에 해당되는 글 122건

  1. 2010.02.01 자바개발환경 구축
  2. 2009.10.07 JTidy (HTML Parser)
  3. 2009.08.19 http content type
  4. 2009.07.23 Struts2 if tag 사용시 주의점..
  5. 2009.07.17 Java TimeZone 관련 링크
  6. 2009.07.17 [Struts2] radio 태그에서 선택값 유지시키기
  7. 2009.04.20 NNTP, Usenet, UUCP 간략한 정의
  8. 2009.04.07 오픈소스 검색서버 SOLR 설치 메뉴얼 5
  9. 2009.04.07 오픈소스 검색서버 SOLR 설치 메뉴얼 4
  10. 2009.04.07 오픈소스 검색서버 SOLR 설치 메뉴얼 3 1

자바개발환경 구축

|

JDK(Java Development Kit)
말그대로 자바로 개발을 하기위해 필요한 것들이 들어있는 도구이다.
jvm과 자바 클래스 라이브러리 등이 포함되어 있다.
다운로드 : http://java.sun.com/javase/downloads/index.jsp

* JVM(Java Virtual Machine)
C, C++로 컴파일된 코드는 CPU에서 바로 실행이 가능하지만, 자바로 컴파일 된 .class 파일은 바로 실행이 불가능하다. 그래서 CPU역할을 하는 가상의 장치가 필요한데 그게 바로 JVM이다. 가상의 장치이므로 HW가 아니라 SW이다.


Java API 문서
자바 프로그래밍을 하다보면 자바에서 기본적으로 제공하는 클래스 라이브러리(API)에 대한 정보를 검색하게 되는 경우가 많다. 웹서핑을 통해서도 왠만한 정보는 습득이 가능하지만, Java API Docs를 통해 공부하는 습관을 기르자. 안나와있는 클래스가 없다.. (기초적인 영어공부도 해두자.. 한글 번역기로 돌린 것들이 존재하는데 표현이 정확하지 않아 그리 볼만한게 못된다..)
다운로드 : http://java.sun.com/javase/downloads/index.jsp#docs


이클립스 설치
이클립스는 자바개발을 할 때 사용하는 통합개발환경(IDE;Integrated development environment) 이다.(Visual C++ 같은..) IDE로는 SUN사에서 내놓은 Netbeans 도 있긴한데, 우니라나에서는 많이 안쓰이고, 이클립스가 더 좋다(다른 부분은 모르겠고,, 다양한 플러그인들 때문에). 이 두개 아니면 상용 IDE들도 많이 쓰는 듯 하다.

다운로드 : 
http://www.eclipse.org/downloads/
위 사이트로 가보면 여러가지 다른 버전이 있는데, "for Java developer"버전으로도 입문공부는 문제없지만 나중을 생각해서 "for Java EE developer"버전을 받자.


*참고
나중에 웹프로그래밍을 하게 될 경우를 생각해서 브라우저는 파이어폭스를 사용하자
익스플로러도 좋지만 파이어폭스에서는 개발할 때 필요한 여러 플러그인들이 제공되고 있기 때문에 여러모로 편리한 점이 많다.
다운로드 : http://www.mozilla.or.kr/ko/
And

JTidy (HTML Parser)

|
And

http content type

|

출처 : http://blog.daum.net/justdoit1978/5261242

Content-Type 의 종류.

1) Multipart Related MIME 타입
  - Content-Type: Multipart/related <-- 기본형태
  - Content-Type: Application/X-FixedRecord

2) XML Media의 타입
 - Content-Type: text/xml
 - Content-Type: Application/xml
 - Content-Type: Application/xml-external-parsed-entity
 - Content-Type: Application/xml-dtd
 - Content-Type: Application/mathtml+xml
 - Content-Type: Application/xslt+xml

3) Application의 타입
 - Content-Type: Application/EDI-X12 <--  Defined in RFC 1767
 - Content-Type: Application/EDIFACT <--  Defined in RFC 1767
 - Content-Type: Application/javascript <-- Defined in RFC 4329
 - Content-Type: Application/octet-stream  : <-- 디폴트 미디어 타입은 운영체제 종종 실행파일, 다운로드를 의미
 - Content-Type: Application/ogg <-- Defined in RFC 3534
 - Content-Type: Application/x-shockwave-flash <-- Adobe Flash files
 - Content-Type: Application/json <-- JavaScript Object Notation JSON; Defined in RFC 4627
 - Content-Type: Application/x-www-form-urlencode <-- HTML Form 형태

* x-www-form-urlencode와 multipart/form-data은 둘다 폼 형태이지만 x-www-form-urlencode은 대용량 바이너리 테이터를 전송하기에 비능률적이기 때문에 대부분 첨부파일은 multipart/form-data를 사용하게 된다.


4) 오디오 타입
- Content-Type: audio/mpeg <-- MP3 or other MPEG audio
- Content-Type: audio/x-ms-wma <-- Windows Media Audio;
- Content-Type: audio/vnd.rn-realaudio <--  RealAudio;  등등

5) Multipart 타입
- Content-Type: multipart/mixed: MIME E-mail;
- Content-Type: multipart/alternative: MIME E-mail;
- Content-Type: multipart/related: MIME E-mail <-- Defined in RFC 2387 and used by MHTML(HTML mail)
- Content-Type: multipart/formed-data  <-- 파일 첨부

6) TEXT 타입
- Content-Type: text/css
- Content-Type: text/html
- Content-Type: text/javascript
- Content-Type: text/plain
- Content-Type: text/xml

And

Struts2 if tag 사용시 주의점..

|

<s:if test="%{status.equals('1')}" ></s:if>

는 안된다.

<s:if test='%{status.equals("1")}' ></s:if>

는 된다.
따옴표 주의..;
And

Java TimeZone 관련 링크

|

'작업노트 > JAVA' 카테고리의 다른 글

자바의 가비지 콜렉터(Gavage Collector)  (0) 2010.07.27
CSV파일  (0) 2009.03.02
자바 5 에서의 반복자와 컬렉션(for/in 반복문)  (0) 2008.02.28
Java API Map  (0) 2008.01.05
JVM 메모리구조와 스택 - 참조 ^^  (0) 2007.11.19
And

[Struts2] radio 태그에서 선택값 유지시키기

|

지금 보고있는 책에는 이런 간단한 예제 조차 나와있지 않다.
그래서 구글링을 해보니 상당히 매우 간단한 방법으로 해결할 수 있었다.

그냥 action에서 해당 property에 값을 넣어주면 된다.

radio 의 name이 color 라면 action에서 color에 'blue'를 미리 넣어주면,
jsp에서 blue가 선택된다. 물론 value값이 blue인게 있어야 하겠다..

그리고 select 태그도 마찬가지 이다..
And

NNTP, Usenet, UUCP 간략한 정의

|

The Network News Transfer Protocol or NNTP is an Internet application protocol used primarily for reading and posting Usenet articles (aka netnews), as well as transferring news among news servers. - Wikipedia -

Usenet, a portmanteau of "user" and "network", is a worldwide distributed Internet discussion system. It evolved from the general purpose UUCP architecture of the same name. - Wikipedia -

UUCP is an abbreviation for Unix-to-Unix Copy Program. The term generally refers to a suite of computer programs and protocols allowing remote execution of commands and transfer of files, email and netnews between computers. - Wikipedia -


Usenet
User Network(사용자 네트워크)의 약어이다. 유즈넷전자게시판의 일종으로 특정한 주제나 관심사에 대해 의견을 게시하거나 관련 분야에 대한 그림, 동영상, 실행파일, 데이터파일 등의 자료를 등록할 수 있는 전세계적인 토론 시스템이다. 1979년 미국 듀크대학교 대학원생이던 톰 트루스코트(Tom Truscott)와 짐 엘리스(Jim Ellis)의 정보교환에 대한 아이디어로 처음 시작되어 네트워크를 통해 서로의 의견을 교환하다가 발전되었다.

올라온 정보를 보기만 하는 웹과 달리 PC통신의 게시판처럼 다른 사용자와 각종 자료를 주고 받으며 토론도 벌일 수 있어 동호인이나 같은 분야에 관심을 가진 네티즌이 모이는 곳이다. 유즈넷은 특정한 분야에 대한 정보를 다루기 때문에 유용한 정보를 빠르게 찾을 수 있고, 서로 정보를 교환하며 도움을 주고받을 수도 있다.

유즈넷에 마련된 하나하나의 토론집단을 '뉴스그룹'이라 한다. 전세계적으로 수많은 사용자가 있고 특별히 통제력을 갖는 조직은 없으나, 뉴스그룹을 관리하는 관리자가 있어 해당 뉴스그룹에 대해 권한을 가지므로 그룹에 적합하지 않은 글은 삭제될 수 있고 특정인의 접속을 허가하지 않을 수도 있다.

유즈넷은 특정 전문가집단에 의해 운영되는 것이 아니라 인터넷을 사용하는 모든 사람들이 자발적으로 참여해 운영되기 때문에 다양한 내용을 갖는 것이 특징이다. 그러나 한편으로 뉴스그룹에는 토론주제에 관한 전문가와 관계자들이 많이 참여해 서로 공개적으로 의견을 나누기 때문에 고급 정보도 얻을 수 있다. - 네이버 백과사전 -
And

오픈소스 검색서버 SOLR 설치 메뉴얼 5

|

5. Solrj API사용법

 

Solrj API 사용하기 위해서는 미리 관련 라이브러리가 추가되어 있어야 한다.

(‘1.5 라이브러리 추가 부분 참조.)

 

 

5.1 데이터 인덱싱

 

5.1.1 Sample Code

 

//CommonsHttpSolrServer객체 생성

CommonsHttpSolrServer server = null;   

       

        String url = "http://localhost:8080/solr/";

        server = new CommonsHttpSolrServer( url );

 

        //인덱싱 데이터

List<OasisDocument> docs = oasisService.getAllDocument();

 

OasisDocument doc = new OasisDocument();

 

doc.setDocId(10000)

doc.setTitle(“what is Solr?”);

doc.setContent(“Solr is an open source enterprise search server based on the Lucene.”)

 

 

//데이터 추가

        server.addBeans(docs);

             server.addBean(doc);

            

        //서버 객체 커밋 (인덱싱)

             server.commit();

 

 

5.2 데이터 검색

 

5.2.1 Sample Code

 

String url = http://localhost:8080/solr/;

CommonsHttpSolrServer server = new CommonsHttpSolrServer( url );

       

SolrQuery query = new SolrQuery();

query.setQuery(“title” + “:” + “solr”);//검색어 셋팅

query.addSortField("docId", SolrQuery.ORDER.asc );//정렬 방식

query.setStart(startNum);//시작 번호(시작번호부터 설정된 개수만큼 가져옴)

 

 

QueryResponse rsp = server.query( query );//검색을 요청하고 응답 저장

 

//검색 결과 가져오기

SolrDocumentList docs = rsp.getResults();

List<BlogLog> docs2 = rsp.getBeans(BlogLog.class);

And

오픈소스 검색서버 SOLR 설치 메뉴얼 4

|

4. DataImportHandler 설정

 

4.1 data-config.xml

 

데이터를 인덱싱할 참조할 data-config.xml파일을 생성해야 한다. 아래의 예와 같이 쿼리 필드 매핑 정보, Transformer 설정등을 있다.

 

<dataConfig>

<dataSource driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@123.456.78.9:1521:ORCL" user="USERNAME" password="PASS1234" />

    <document name="products">

        <entity name="log" query="select * from BLOG_LOG">

            <field column="LOG_ID" name="logId" />

            <field column="BLOG_ID" name="blogId" />

            <field column="MENU_ID" name="menuId" />

            <field column="TITLE" name="title" />

            <field column="REGISTER_NICKNAME" name="registerNickname" />

            <field column="TAGS" name="tags" />

 

            <entity name="contents" query="select contents from BLOG_LOG_CONTENTS where LOG_ID='${log.LOG_ID}'" transformer="netville.blog.util.NetvilleClobTransformer">

                <field name="contents" column="CONTENTS" clob="true" />

            </entity>

           

        </entity>

    </document>

</dataConfig>

 

 

4.2 DataImportHandler 등록

 

solrconfig.xml에서 <config></config> 태그 안에 아래의 설정을 추가한다.

(설정 전에, 관련 라이브러리가 추가되어 있어야 한다. ‘1.5 라이브러리 설치참조.)

 

<!-- DB data import configure -->

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">

    <lst name="defaults">

      <str name="config">/data-config.xml</str>

    </lst>

</requestHandler>

 

 

4.3 ClobTransformer

 

인덱싱을 실시할 필드 , CLOB 타입의 데이터가 있다면 String타입으로 변환해줄 있는 Transformer클래스가 필요하다. 현재 SOLR 1.3.0 버전에서는 ClobTransformer 지원하고 있지 않기 때문에(SOLR v1.4 부터 지원) CLOB타입을 변환해줄 있는 CustomTransformer 생성하여야 한다.

And

오픈소스 검색서버 SOLR 설치 메뉴얼 3

|

3. 형태소 분석기 추가

 

solr에서 기본으로 제공하는 분석기로는 한글 문서의 단어들을 분석하고 인덱싱 하는 데에 한계가 있다(복합명사 ). 때문에 국내에서 진행중인 오픈소스 한글 형태소 분석기인 KoreanAnalyzer 사용할 것을 권장한다.

(jdk 1.5 이상 요구됨)

 

 3.1 다운로드

 

루씬 한글 분석기 오픈소스 카페(http://cafe.naver.com/korlucene.cafe)’ 가입 최신 버전의 source 다운로드 받고 압축을 푼다. Factory 클래스 추가를 위해 source 파일은 반드시 다운로드 받아야 한다.(koreananalyzer-src-20090000.zip)

 

 

3.2 Factory 클래스 추가

 

Solr Server에서 KoreanAnalyzer 사용하기 위해서는 개의 Factory클래스가 필요하다. Factory 클래스를 추가하기 위해서는 아래의 절차를 따른다.

 

l  다운로드 받은 source 이클립스 등의 IDE 새로운 프로젝트로 import 한다.

l  org.apache.lucene.analysis.kr 패키지 밑에, 아래 개의 클래스를 추가한 .jar 파일로 export 한다.

 

package org.apache.lucene.analysis.kr;

 

import org.apache.lucene.analysis.TokenStream;

import org.apache.solr.analysis.BaseTokenFilterFactory;

 

public class KoreanFilterFactory extends BaseTokenFilterFactory {

 

    public TokenStream create(TokenStream input) {

       

        return new KoreanFilter(input);

    }

}

package org.apache.lucene.analysis.kr;

 

import java.io.Reader;

 

import org.apache.lucene.analysis.TokenStream;

import org.apache.solr.analysis.BaseTokenizerFactory;

 

public class KoreanTokenizerFactory extends BaseTokenizerFactory {

 

    public TokenStream create(Reader input) {

       

        return new KoreanTokenizer(input);

    }

}

 

 

 

3.3 설치

 

이클립스에서 적용하고자 하는 프로젝트의 ‘WEB-INF/lib/’ 디렉토리 아래에 koreananalyzer.jar 라이브러리 파일을 복사한다.

 

 

3.4 설정

 

scheme.xml 파일에서 적용하고자 하는 field type에서 아래와 같이 filter tokenizer 설정부분을 수정한다.

 

<types>

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">

      <analyzer type="index">

        <!--<tokenizer class="solr.WhitespaceTokenizerFactory"/>-->

                           <tokenizer class="org.apache.lucene.analysis.kr.KoreanTokenizerFactory"/>       

                           <filter class="org.apache.lucene.analysis.kr.KoreanFilterFactory"/>

        <filter class="solr.StopFilterFactory"

                ignoreCase="true"

                words="stopwords.txt"

                enablePositionIncrements="true" />

        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>

        <filter class="solr.LowerCaseFilterFactory"/>

        <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>

        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>

      </analyzer>

      <analyzer type="query">

                           <tokenizer class="org.apache.lucene.analysis.kr.KoreanTokenizerFactory"/>

                           <filter class="org.apache.lucene.analysis.kr.KoreanFilterFactory"/>

        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>

        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>

        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>

        <filter class="solr.LowerCaseFilterFactory"/>

        <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>

        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>

      </analyzer>

    </fieldType>

</types>

 

 

3.5 단어 사전

 

KoreanAnalyzer 형태소 분석을 위해 단어 사전을 별도로 사용하고 있다. 기본적으로 3만개 정도의 단어를 포함하고 있고 새로운 단어를 추가할 수도 있다.

 

3.5.1 구조 형식

l  total.dic

-        용언과 체언을 포함한 기본 사전,

-        사전의 형식

) 납부, 10011X

콤마를 중심으로 좌측은 단어, 우측은 단어정보임.

-        단어정보 사용규칙

단어정보는 여섯글자로 이루어지고 순서에 따른 내용은 다음과 같음.

1-명사 2-동사 3-기타품사 4-하여동사 5-되어동사 6-불규칙변형

-        불규칙 변형의 종류

B:ㅂ불규칙 H:ㅎ불규칙 L:ㄹ불규칙 S:ㅅ불규칙 D:ㄷ불규칙 R: 불규칙 X:규칙

 

l  extension.dic - 사전을 보완해야 경우 추가 단어 등록을 위해 사용되는 확장 사전

l  josa.dic - 조사 모음.

l  eomi.dic - 어미 모음.

l  prefix.dic - 복합명사 분해 사용할 접두어 모음.

l  suffix.dic - 복합명사 분해 사용할 접미어 모음.

l  compounds.dic -

최장일치법에 의해 분해가 불가능한 복합명사를 등록하기 위한 사전

(- “근로자의날:근로자,”)

 

 

    3.5.1 사전 편집

             단어사전을 수정해야 하는 경우, 아래의 순서를 따른다.

 

l  KoreanAnalyzer source 다운로드 받는다.

l  다운로드 받은 source 이클립스 등의 IDE 새로운 프로젝트로 import 한다.

l  org.apache.lucene.analysis.kr.dic 아래에서 변경이 필요한 사전을 수정한다.

l  .jar 파일로 export 기존의 koreananalyzer.jar 교체하여 사용한다.

And
prev | 1 | 2 | 3 | 4 | 5 | ··· | 13 | next