토요일, 4월 20
Shadow

#001 객체의 생성과 소멸

JAVA
이 장에서는 객체를 언제 어떻게 생성하는지, 언제 어떻게 생성을 피해야 하는지, 적합한 방법으로 소멸되는 것을 어떻게 보장하는지, 그리고 객체 소멸에 앞서 선행되어야 하는 클린업 작업을 어떻게 관리할 것인가에 대해 설명한다. 1.생성자 대신 static 팩토리(factory) 메소드 사용을 고려하자 클래스의 인스턴스 생성방법 1. public 생성자(constructor) 2. public static 팩토리 메소드 장점: – 생성자와 달리 자기 나름의 이름을 가질 수 있다. (알다시피, 생성자는 클래스 이름과 동일해야 한다.) – 생성자와 달리 호출될 때마다 매번 새로운 객체를 생성할 필요가 없다. – 자신의 클래스 인스턴스만 반환하는 생성자와 달리, static 팩토리 메소드 자신이 반환하는 타입의 어떤 서브타입 객체도 반환할 수 있다. (유연성 제공) – 매개변수화 타입의 인스턴스를 생성하는 코드를 간결하게 해준다. 이런 식으로 중복 지정하면 타입 매개변수가 늘어나는 경우, 타이핑할 분량이 많아지고 복잡해진다. Map m = new HashMap(); 아래에 선언한 newInstance 메소드를 다음과 같이 간결한 형태로 사용할 수 있다. static 팩토리를 사용하면 컴파일러가 타입 매개변수를 해결하도록 할 수 있다. 이것을 타입 추론이라고 한다 Map m = HashMap.newInstance(); public static HashMap newInstance() { return new HashMap(); } 1.7버전부...

#008 리눅스 vsftpd 설치 및 설정

SERVER
1. vsftpd 설치 yum install vsftpd -y 2. vsftpd.conf 설정(기존에 설치된 내용 백업) mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak vi /etc/vsftpd/vsftpd.conf anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_file=/var/log/xferlog xferlog_std_format=YES chroot_local_user=NO listen=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES 3.vsftpd시작 service vsftpd start 4.vsftpd 자동시작 chkconfig vsftpd on chkconfig --list | grep vsftpd 5.ftp 계정 생성 및 암호 입력 useradd allen passwd allen 암호입력: **필요에 따라서** 6. root 계정 ftp 사용 가능하게 하기 vi /etc/vsftpd/user_list root 주석 vi /etc/vsftpd/ftpusers root 주석 ...

#022 색인 커스터마이징

SEARCH ENGINE
1. Directory 루씬의 추상 클래스인 Directory 클래스는 간단한 파일 형식의 저장 공간을 나타내는 Directory 클래스는 간단한 파일 형식의 저장 공간을 나타내는 API이다. 루씬에서 색인파일을 읽거나 쓰려는 경우 항상 Dicionary의 메소드를 통해 처리한다. 간단하게 설명하면, 1. SimpleFsDirectory 색인 파일 시스템에 저장하는 가장 기본적인 Directory 클래스, java.io.*패키지의 기능을 활용하여, 동시에 사용하려는 쓰레드 개수가 많아지면 성능이 떨어진다. 2. NIOFSDirectory 색인을 파일 시세템에 저장하지만 java.nio.* 패키지의 기능을 활용한다. 동시에 사용하려는 쓰레드의 개수가 많아져도 성능이 크게 떨어지지 않는다. 3. MMapDirectory 메모리 맵 I/O 기능을 활용해 파일의 내용일 읽어온다. 4. RAMDirectory 모든 파일을 메모리에 보관하는 Directory이다. 5. FileSwitchDirectory 두개의 디렉토리를 사용하여, 파일 확장자에 따라 두개의 디렉토리를 바꿔가며 사용한다. RamDirectory는 색인된 내용을 디스크 대신 메모리에 저장한다. 모든 색인을 메모리에 보관하면 읽기 쓰기 속도가 엄청나게 빨라지며, 따라서 색인을 메모리 안에 담을 수 있을 만큼 크기가 작고 원본 문서에서 언제든 재빨리 색인 할 수 있다. 루씬 매부적으로 자동 단위 테스트를 진행 할 때 테스트용 임시 색인을 저장할 공간으로 RAMDirectory를 많...

#021 색인 필드 설정

SEARCH ENGINE
Field클래스는 색인에 문서를 추가할 때 가장 핵심이 되는 클래스 중 하나이다. Field인스턴스를 생성할 때 색인 할 작업과 설정도 지정한다. 설정은 기능에 따라 구분해 소개하며, 색인 관련 설정, 저장 관련 설정, 텀백터 관련 설정 등의 순서로 설명한다. 1. 색인 관련 설정 Field.Index.ANALYZED 필드에 지정된 텍스트를 분석기에 넘겨 일련의 토큰을 뽑아 내 각 토큰을 검색할수 있게 한다. 일반적인 텍스트 필드에서 사용하기 좋다. Field.Index.NOT_ANALYZED 필드에 지정된 텍스트를 검색하게 역파일 색인에 추가하긴 하지만, 분석기로 텍스트를 처리하지는 않는다. 즉 텍스트 전체를 스트링으로 만든다. Field.ANALYZED_NO_NORMS norm값을 색인에 저장하지 않는다. norm값은 색인할 때 지정했던 중요도를 색인에 보관하지만 검색할때 메모리를 조금더 사용한다. Field.NOT_ANALYZED_NO_NORMS norm값을 색인에 저장하지 않는다 색인이 차지하는 용량과 검색 시점의 메모리 사용량을 절약하고자 할때 사용한다. 토큰을 하나만 갖고 있는 필드에 중요도를 지정하지 않는한 norm값이 필요하지 않는다. 위 Field 클래스는 루씬 3대에서 사용하였으며, 현재 4~5대 버전에서는 변경되었다. 1. BinaryDocValuesField: BytesRef 값을 저장한다. 2. DoubleDocValuesField: NumericDocValues로 double형의 시멘틱 슈거 값을 저장한다. 3. DoubleField:...

#020 기본 색인 작업

SEARCH ENGINE
1. 색인에 문서 추가하는 방법을 살펴 보자. Lucene 5.4기준의 예제를 살펴 보자. package foo.bar; import org.apache.lucene.analysis.core.WhitespaceAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.document.StringField; import org.apache.lucene.document.TextField; import org.apache.lucene.index.*; import org.apache.lucene.queryparser.classic.MultiFieldQueryParser; import org.apache.lucene.queryparser.classic.ParseException; import org.apache.lucene.queryparser.classic.QueryParser; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; import org.apache.lucene.search.ScoreDoc; import org.apache.lucene.search.TopDocs; import org.apache.lucene.store.RAMDirectory; import java.io.IOException; public cla...

#019 루씬 색인 소개

SEARCH ENGINE
다루는 내용 기본적인 색인 작업 필드 중요도 지정 날짜 숫자 필드 정렬 고극 색인 기법 루씬은 해당 문서를 색인 할때 마다 루씬의 필드와 내용을 어떻게 처리 할것인가 하는 조정이 존재한다. 색인을 하려면 먼저 해당 원본을 루씬의 문서와 필드 구조로 변환해야 한다. 예를 들어 사용자가 title:lucene라는 검색을 하면 title의 lucene를 찾는 다는 뜻이다. 문서를 색인하는데 있어 크게 3가지 종류의 옵션을 사용할수 있다. 1. 필드의 내용을 색인 할 것인지 하지 않을 것인지. 2. 필드의 내용을 색인 할 경우 텀 백터를 저장할 것인지 아닌지. 3. 색인 여부와 관계 없이 필드의 내용을 저장 할 것인지. 또한 유연한 스키마 구조를 가지고 있기 때문에 스키마리스 구조로 루씬을 만든다면 각각의 데이터에 맞춰서 자동으로 스키마의 필드가 생성되며, 하나의 문서에 여러개의 서로 다른 필드가 추출될수 있으며, 비정규화된 데이터를 xml, json등의 형태로 변경하여 결과를 리턴 받을수 있는 구조로 만들수 있다. 다음으로는 텍스트 추출과 문서 생성과정을 보면 크게 루씬의 색인 절차는 3가지 형태로 분류 할수 있다. 1. 텍스트를 추출한다. 2. 텍스트를 분석한다. 3. 텍스트를 색인에 추가한다. 색인 작업을 진핼 할 때 가장 먼저 원본 문서의 파일에서 텍스트를 뽑아내고 루씬의 필드 객체를 만들어 최종적으로는 document객체에 생성하고, 텍스트 분석 절차를 거쳐 일련의 토큰 스트림을 반환한다. 그리고 마지막으로 세그먼트 구조의 색인...

#007 Apache + Tomcat 연동시 인코딩 설정

SERVER
보통 인코딩은 8080 포트가 있는 곳에 URIEncoding 을 해 주지만 아파치와 연동시 AJP 가 연결된 포트에 URIEncoding을 해 주어야 함. 1. 인코딩 설정 vi /usr/local/tomcat/conf/server.xml <Connector URIEncoding="utf-8" port="8009" protocol="AJP/1.3" redirectPort="8443" /> 끝!

#005 SVN설치

SERVER
1. yum을 통한 SVN설치 yum -y install subversion 2. svn이 설치될 폴더 생성 mkdir /usr/local/svn 3. svn설정파일 설치 svnadmin create --fs-type fsfs /usr/local/svn 4. svnconfig 파일 변경 mv svn/conf/svnserve.conf svn/conf/svnserve.conf.bak vi svn/conf/svnserve.conf 아래 설정파일 입력 [general] anon-access = none auth-access = write password-db = passwd 5. user 생성 vi /usr/local/svn/conf/passwd 아래 설정 입력(구조는 : id = password) [user] svnuser = 1234 6. 서버 가동 svnserve -d -r /usr/local/svn 7.서버 중지 -----는 프로세스 번호 ps -enf | grep svnserve kill ------- 8. svn 주소 svn://address/ 끝~~

#004 JENKINS 설치

SERVER
1. jenkins download 간단히 yum 명령어를 통해 받아올 것이다. 그런데, 보통 yum repository에 등록되어 있지 않으므로 수동으로 등록 해 준다. wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key 2. Yum Install yum install jenkins 3. 설치 확인 rpm -qa | grep jenkins 4. Jenkins 설정 jenkins 기본 포트가 8080이기 때문에 톰켓의 포트랑 겹친다. 다른포트로 변경한다. 보통 8888을 많이 사용 /etc/sysconfig/jenkins 파일의 JENKINS_PORT 옵션 변경 vi /etc/sysconfig/jenkins JENKINS_PORT="8888" 5. Jenkins 실행 /etc/init.d/jenkins 파일에 설정 정보가 자동으로 등록되어 있다. 그냥 service로 실행하면 끝 service jenkins restart 확인은 http://ipaddress:8888 로 확인하면 된다. ...