Monthly Archives: December 2015

[JAVA]시간변환 유틸 TimeUnit

public static void main(String[] args) throws InterruptedException {
    long interval;

    //1초는 몇초?
    interval = TimeUnit.SECONDS.convert(1, TimeUnit.SECONDS);
    System.out.println(interval);

    //1일은 몇초?
    interval = TimeUnit.SECONDS.convert(1, TimeUnit.DAYS);
    System.out.println(interval);

    //1000interval * 2 = 2초 sleep
    Thread.sleep(1000*2);
    //2초 sleep
    TimeUnit.SECONDS.sleep(2);
}

이전에는 interval 기준으로 1000*x초 라는식으로 변환해서 계산을 했을데 이걸로 쓰면 좀 더 명확해서 좋은듯.

[Linux] scp 사용

사용법

 

scp -rpC 계정명@원격서버주소ip:원격서버내부경로 로컬서버경로

 

백그라운드 사용시 앞에 nohup 뒤에 & 붙이면 된다

nohup scp -rpC 계정명@원격서버주소ip:원격서버내부경로 로컬파일디렉토리경로 &

 

https://docs.oracle.com/cd/E37933_01/html/E36613/remotehowtoaccess-55154.html

[Ubuntu] redis 설치

패키지로 설치

sudo add-apt-repository -y ppa:rwky/redis
sudo apt-get update

add-apt-repositoy가 안되면 이거 설치 후 재실행

sudo apt-get install python-software-properties

 

레디스 서버 설치

sudo apt-get install redis-server

설정파일

/etc/redis/redis.conf

소스 설치

다운로드
wget http://download.redis.io/releases/redis-3.0.6.tar.gz
압축해제
tar zxvf redis-3.0.6.tar.gz
이동
cd redis-3.0.6

빌드
make
설치 테스트
make test
설치
make install

설정 도움 스크립트

[redis dir]/utils/install_server.sh

 

설정파일

[redis dir]/redis.conf

 

 

실행모습

127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set mykey somevalue1
OK
127.0.0.1:6379> get mykey
"somevalue1"
127.0.0.1:6379> get mykey
"somevalue1"
127.0.0.1:6379> set mykey newval nx
(nil)
127.0.0.1:6379> set mykey newval nx
(nil)
127.0.0.1:6379> get mykey
"somevalue1"
127.0.0.1:6379> set mykey newval
OK
127.0.0.1:6379> get mykey
"newval"
127.0.0.1:6379> set counter 100
OK
127.0.0.1:6379> get counter
"100"
127.0.0.1:6379> set counter1 100
OK
127.0.0.1:6379> get counter1
"100"
127.0.0.1:6379> incr counter1
(integer) 101
127.0.0.1:6379> get counter1
"101"
127.0.0.1:6379> incrby counter1 50
(integer) 151
127.0.0.1:6379> get counter
"100"
127.0.0.1:6379> get counter1
"151"

 

[Ubuntu] add-apt-repository not found

$ sudo apt-get install python-software-properties

The following extra packages will be installed:
python-pycurl python3-pycurl python3-software-properties unattended-upgrades
Suggested packages:
libcurl4-gnutls-dev python-pycurl-dbg python3-pycurl-dbg bsd-mailx
mail-transport-agent
The following NEW packages will be installed:
python-pycurl python-software-properties python3-pycurl
python3-software-properties software-properties-common unattended-upgrades

$ sudo apt-get install software-properties-common

 

java.Validator 부족한 부분

상황을 지정할 수 있으면 어떨까

@NotNull
private String name;

@NotNull(scene = 1)
private String email;

 

위 두개의 필드가 있는 dto에서

상황 0 : 모두 동작
name, email notnull을 모두 체크

상황1 : 1만 동작
email만 체크

상황2 : 기본만 동작
name만 체크

 

이렇게 하면 validator에서 여러 상황을 복수로 셋팅할 수 있게됨

 

 

[MQ,CEP] 0. 개요 및 구조 정의

MQ라는 것에 맨 처음 관심을 갖게된 계기는..

지금의 분류로는 빅데이터로 볼 수 있는 증권데이터였다

 

목표는 실시간 분석이었는데 그 때도 SQL로 처리하는 것은 포기했었다.

어차피 시간순서대로 사용되는 데이터니 파일로 저장하고 순차적으로 쓰려고 했었는데 실시간 분석이 안되는게 또 문제라서 중간 버퍼에 메서드를 필터로 깔아놓고 돌리는 방법을 썼었다.

당시 뭐 설계 구조도 좀 안좋았고 해서 속도도 안나오고 해서 포기했었는데(지금 보니 코드도 안좋다)

요즘 빅데이터나 실시간 분석 솔루션이 많이 나오면서 다시 관심을 갖게 됐다.

 

당시 원했던 구조는

  1. 세개가 연결된 구조 : 진입 ==> 필터(스크립트언어, java osgi) ==> 탈출
    ==>>==>>==>>==>>==>>==>>
    in[] ==> brane[] ==>out[]
  2. control api : 1번을 조작하는 api

추가로 생각한 부분은

in -> grabber, receiver

out -> shotter, deliverer

filter->aggregator, wiper

 


요즘 나와있는 툴

  1. fluentd는 보니 번은은 구현 돼 있다

http://www.fluentd.org/

 

2. kafka

http://kafka.apache.org/

 

3. logstash

https://www.elastic.co/products/logstash

 

4. flume

https://flume.apache.org/

 

5. rabbitmq

https://www.rabbitmq.com/