Cent OS 시간 동기화 하기

SERVER
Cent OS의 시간이 제각각으로 안맞는 경우가 많아 bora.net에서 시간을 동기화 하는 방법을 사용한다. 변경 방법은 아래와 같다. crontab을 열어 SHELL과 매시 5분에 시간을 맞추는 작업을 등록한다. vi /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ 0 5 * * * root /usr/bin/rdate -s time.bora.net && /sbin/hwclock -w rc.local을 실행하여, 시스템에 등록한다. 이 경우는 시스템이 재 부팅되어도 자동 동기화 하게끔 하기 위한 방법이다. vi /etc/rc.d/rc.local /usr/bin/rdate -s time.bora.net /sbin/hwclock -w 만약 rdate가 설치되지 않았다면 yum install rdate를 하여 설치를 먼저 한다. 끝~!

#024 Elasticsearch 설치 후 production mode로 실행시 bootstrap checks failed 에러 해결

SEARCH ENGINE
어제 Elasticsearch 5.0이 릴리즈 되고 엘라스틱서치의 변경 된 부분을 테스트 하기 위해 엘라스틱서치를 받아 설치 해 보기로 했다. 당연 centOS에서 실행 했으며, develop mode에서는 잘 동작하는 것을 확인하였다. 당연 로컬에서는.. 원격에 있는 PC 에 설치를 하여 URL을 불러 사용 하기 때문에 elasticsearch.yml 파일의 network.host 설정에 _global_로 변경 하고 실행 하는 순간...   ERROR: bootstrap checks failed max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536] max number of threads [1024] for user [space_home] likely too low, increase to at least [2048]   위와 같은 에러가 발생하는 것을 확인 하였다.. 이리 찾아보고 저리 찾아봐도 각기 다른 설정을 해 보라고 했지만... 안되었다.. 짬빱을 굴려.. 에러메시지를 잘 읽어 보니.. file open 갯수를 늘리라는 소리였다. 왜 open갯수를 전체로 늘리는 지는 잘 모르겠지만.. 원인은 알았으니.. 해결을 해야 했다. #ulimit -a 명령어로 확인을 해보니 open files의 갯수가 1024 개 밖에 되지 않았다. core file size (blocks, -c) 0 data seg size (kbytes, -d)

#001 랜섬웨어(Ransomware) 확장자 .ccc 파일 복구 성공~~

Ransomware
약 한달전 지인이 바이러스를 먹었다고 해서 .. 그냥 가져와~~ 윈도우 밀어줄께.. 라고 말했는데.. 화면은 본 순간.. 깜짝 놀랬다~~~ 랜섬웨어에 걸려서.. 모든 이미지 텍스트 파일들이 암호화가 되어 버렸다.. 젠장.. 몇일을 인터넷을 뒤지고 다녔지만 방법을 찾지 못헀는데.. 그 방법이 인터넷에 돌아 다녀.. 방법대로 랜섬웨어 복구를 해보니.. 잘 되었다. 복구 하는 방법은 아래와 같다. 1. 아래 프로그램을 받는다. ransomware-decrypt.zip 2. 압축을 해제 한다. 압축을 해제하면 TeslaDecoder와 yafu폴더가 있다. 3. TeslaDecoder 폴더를 들어가면 teslaviewer를 실행 시키고 Browse를 클릭하여 랜섬웨어에 걸린 파일을 입력한다. 그럼 아래와 같이 여러가지의 정보가 나온다. 4.아래 Create work.txt 버튼을 클릭하여 텍스트 파일을 하나 만든다. 5. TeslaDecoder 파일에 work.txt파일이 생성된다. 여기서 privateKeyBC의 dec부분을 복사한다. 6. 압축을 해제한 폴더중 yafu폴더가 있다. 이폴더의 RunYafu.exe파일이 존재 한다. 이 파일을 연다. 7. factorying Threads를 3으로 맞춘다. 8. Tune Yafu Button before factoring의 TuneYafu버튼을 클릭한다. 9. 이런창이 생성되면서 5분 이상 자기가 알아서 무언가를 실행한다. 자동으로 창이 닫혀지면 완료가 된것이다.

#023 Solr Cloud 주무르기

SEARCH ENGINE
이번 장 부터는 솔라 클라우드에 대해서 알아 보려 한다. 주요섹션은 아래와 같다. 1. security - SSL, Logging 2. Scalability - Clustering and Sharding 3. performance - Clustering and Sharding 4. API - HTTP 5. Availability - Replication 6. No loss of data - Replication 이상 끝!!

Solr 메모리 늘리기

SERVER
솔라의 사용 메모리를 늘리려면 solr.in.sh파일을 수정하면 된다. vi /etc/default/solr.in.sh 아래를 내리다 보면 SOLR_HEAP의 값을 원하는 값으로 늘려주면 된다. SOLR_HEAP="2048m" 그리고 자바의 힙 메모리를 늘려 주려면 SOLR_JAVA_MEM의 옵션을 사용하면 된다. SOLR_JAVA_MEM="-Xms2048m -Xmx2048m" 끝~!

솔라 5.4.1 설치(자동화 설치)

예전에 솔라는 war파일을 톰켓에 붙여서 사용했지만 이제는 솔라자체에서 제공하는 웹서버를 통해서 구동이 가능하다. 구동하는 방법은 아래와 같다. 1. 솔라 5.4.1버전 파일 받기 wget http://archive.apache.org/dist/lucene/solr/5.4.1/solr-5.4.1.tgz 2. 압축을 풀기 전 solr압축파일의 권한을 모든권한으로 준다. 그리고 압축 풀기(압축은 자신의 홈에서 푼다. chmod 777 solr-5.4.1.tgz tar -xvf solr-5.4.1.tgz 3. 이제 설치할 준비가 다 되었다. 설치하기 cd ~/solr5.4.1/bin mkdir /home/solr/solrNode mkdir /home/solr/solrNode/data sudo bash ./install_solr_service.sh ~/solr-5.4.1.tgz -i /home/solr/solrNode -d /home/solr/solrNode/data -u solr -s solr -p 9200 굳이 설명을 하자면 솔라 실행 파일은 -i옵션으로 /home/solr/solrNode에 설치 솔라 파일 로그 인덱스 파일등은 -d 옵션으로 /home/solr/solrNode/data에 설치 솔라 관련 파일 권한은 solr -u으로 조정 솔라 서비스 이름은 solr로 -s옵션으로 지정 솔라 포트는 9200번으로 -p옵션으로 지정 이렇게 설치하면 id: solr: No such user Creating new user: solr Extractin

#013 예외(Exceptions)

JAVA
이 장에서는 효과적으로 예외를 사용하는 지침을 제공한다. 예외 상황에서만 예외를 사용하자 / 예외의 터무니 없는 사용. 절대 이렇게 하지 말자! try { int i = 0; while(true) range[i++].climb(); } catch(ArrayIndexOutOfBoundsException e) { } 위의 코드는 예외를 이용하여 while 루프문을 종료시키고 있다. 배열의 범위를 벗어나는 최초의 배열 요소를 사용하려는 순간, ArrayIndexOutOfBoundsException 예외가 발생하고(throw), 검출되고(catch), 무시되면서 이 무한 루프는 종료된다. 이런 식의 코드는 본래의 목적을 혼란스럽게 하고 성능을 저하시키며, 코드가 제대로 동작하는 것을 보장하지 못한다. 코드의 취지와 무관한 버그가 생겨 우리도 모르는 사이에 루프 실행이 실패하고 버그를 감추게 되어 디버깅이 무척 복잡해진다. 예외는 예외적인 상황에서 사용하기 위해 설계된 것이니, 정상적인 흐름 제어에 예외를 사용하지 말자. 복구 가능 상황에는 checked 예외를 사용하고 런타임 예외는 프로그램 에러에 사용하자 자바에서는 던질 수 있는(throwable) 세 종류의 예외를 제공한다. 1. checked 예외 명시적으로 try-catch-finally 예외 처리를 해야하는 것 2. runtime 예외 JVM이 정상적으로 작동하는 동안에 발생하는 예외 3. error 프로그램이 catch 해서는 안되는 심각한 문

#012 메소드(method)

JAVA
이 장에서는 매개 변수와 return 값을 처리하는 방법, 메소드 시그니처(signature)를 설계하는 방법, 메소드를 문서화하는 방법에 대해서 설명한다. 매개 변수가 유효한지 검사하자 대부분의 메소드와 생성자는 자신들의 매개변수로 전달될 수 있는 값에 제한을 둔다. 예를 들면, 배열의 인덱스는 음수가 아니어야 하고 객체 참조는 null이 아니어야 한다는 것들이다. 이런 모든 제약은 명확하게 문서화해야 하며, 메소드 몸체 코드의 맨 앞에서 검사하도록 해야한다. public 메소드의 경우는 Javadoc의 @throws 태그를 사용해서 매개 변수의 값의 제약을 위반했을 때 발생되는 예외를 문서화 한다(항목 62). 일반적으로 IllegalArgumentException, IndexOutOfBoundsException, NullPointerException 예외가 될 것이다 (항목 60). // BigInteger.java 일부 발췌 /** * 그 값이 (this mod m)인 BigInteger를 반환한다. * 이 메소드는 항상 양수의 BigInteger를 반환하는 * BigInteger의 remainder 메소드와는 다르다. * * @param m은 계수(modulus)로서, 반드시 양수여야 한다. * @return this mod m * @throws ArithmeticException 만일 m이 0보다 작거나 같으면 */ public BigInteger mod(Bi

#011 열거형(Enum)과 주석(Annotation) 두번째

JAVA
작명 패턴보다는 주석(annotation)을 사용하자 What is the Annotation? 어노테이션은 일종의 메타 정보를 컴파일러에게 제공할 수 있는 문법이다. // 나 /**/ 등으로 적는 문법은 컴파일러는 알아먹을 수 없고 사람, 정확히는 프로그래머에게 이 코드는 이러저러한 코드다…라고 정보를 주는 문법이지만 어노테이션은 컴파일러에게 메타 정보를 주는 문법이다. 물론 잘 쓴 어노테이션은 프로그래머에게도 정보를 줄 수 있다. 참고 ## 메타 정보 메타데이터 (metadata)란 데이터(data)를 위한 데이터다. 어떤 데이터 즉 구조화된 정보를 분석, 분류하고 부가적 정보를 추가하기 위해 그 데이터 뒤에 함께 따라가는 정보를 말한다. 이를테면, 디지털 카메라에서는 사진을 찍어 기록할 때마다 카메라 자체의 정보와 촬영 당시의 시간, 노출, 플래시 사용 여부, 해상도, 사진 크기 등의 사진 정보를 화상 데이터와 같이 저장하게 되어 있다. 이러한 데이터를 분석하여 이용하면 그 뒤에 사진을 적절하게 정리하거나 다시 가공할 때에 아주 유용하게 쓸 수 있는 정보가 된다. 어노테이션 문법 아마 일반적으로 제일 많이 볼 수 있는 어노테이션은 @Override 일것이다. @Override public void xxx() { ... } 어노테이션의 선언 방법부터 살펴보자. 어노테이션은 @interface 타입으로 선언하며 뒤에 이름이 온다. 만일 TODO 라는 작업이라는 메타 정보를 제공하는 어노테이션을 선언한다면, 이러한 문법이 된다. public @