Gradle dependency에 로컬 라이브러리 파일 포함시키기

사내에서 혹은 개인이 개발한 라이브러리의 경우 혹은 라이브러리 개발자가 jar 형태로만 배포하거나 소스 코드를 직접 빌드해서 사용해야 하는 경우라면 프로젝트 내부 폴더에 jar 파일을 배치한 후 include 사용하고 싶을 경우가 있다. 이 경우 gradle의 fileTree 를 이용해서 해결할 수 있다.

dependencies {
   compile fileTree (dir: 'lib', include:['**/*.jar'])
}

두 Geo location 좌표의 중간점 구하기

시작점 끝점 2개의 좌표를 가진 도로 정보가 주어지고 특정 좌표를 중심으로 반경 얼마 이내의 도로 ID를 계산하려고 했더니 시작점 기준으로 하기도 애매하고 끝점 기준으로 하기도 애매해서 아예 중간점을 계산해서 중간점을 기준으로 찾기로 했다

데이터는 시작점, 끝점, 중간점을 Elasticsearch에 저장한 후 Elasticsearch에서 지원하는 Geolocation query를 사용하기로 함

아래는 중간점을 구할 때 사용한 코드…

import org.junit.Test;

public class GeoLocationTest {


    @Test

    public void midPoint() {

        midPoint(37.5355890233, 126.8956214339, 37.5366147292, 126.8964237604);

    }


    private void midPoint(double lat1, double lon1, double lat2, double lon2) {

        double dLon = Math.toRadians(lon2 - lon1);


        //convert to radians

        lat1 = Math.toRadians(lat1);

        lat2 = Math.toRadians(lat2);

        lon1 = Math.toRadians(lon1);


        double Bx = Math.cos(lat2) * Math.cos(dLon);

        double By = Math.cos(lat2) * Math.sin(dLon);

        double lat3 = Math.atan2(Math.sin(lat1) + Math.sin(lat2), Math.sqrt((Math.cos(lat1) + Bx) * (Math.cos(lat1) + Bx) + By * By));

        double lon3 = lon1 + Math.atan2(By, Math.cos(lat1) + Bx);


        //print out in degrees

        System.out.println(Math.toDegrees(lat3) + " " + Math.toDegrees(lon3));

    }

}

Python list에서 랜덤하게 아이템 꺼내기

테스트용 데이터 넣다가 유용하게 사용할 듯 해서 정리함

100개의 사이트가 있다고 가정하고 100만개의 데이터가 100개의 사이트를 랜덤하게 갖는 테스트 데이터를 생성하려고 한다.

100만번의 루프를 돌 때 각 루프에서 테스트용 100개의 사이트 중 랜덤하게 하나의 사이트를 골라서 DB에 넣고 싶었다

import random
sites = ['site-{0}'.format(i) for i in range(0, 100)]
for i in range(0, 1000000):
    print (random.choice(sites))

결과는

/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/airkjh/PycharmProjects/study/etc/random_choice.py
site-75
site-94
site-8
site-85
site-80
site-64
site-61
site-65
site-40
site-66
site-85
site-29
site-24
site-65
site-19
site-7
...

DB에서 쿼리해봤더니 의도한대로 입력이 되었다

select siteid, count(*) from nodes group by siteid

Postgresql shutdown 하기

$ pg_ctl -D  /var/lib/pgsql/9.2/data -m smart stop    # oracle shutdown
waiting for server to shut down.... done
server stopped
$ pg_ctl -D  /var/lib/pgsql/9.2/data -m fast stop  # oracle shutdown immediate
waiting for server to shut down.... done
server stopped
$ pg_ctl -D  /var/lib/pgsql/9.2/data -m immediate stop # oracle shutdown abort
waiting for server to shut down.... done