전체 글
Exception 처리, 어떻게 하는게 좋을까?
Exception 처리, 어떻게 하는게 좋을까?
2019.05.29Error와 Exception의 차이 에러 : 애초에 예상이 불가능한 것. 예외 : 발생을 예상할 수 있는 것. 그리고 예상할 수 있기 때문에 그에 대한 대비로 try-catch가 있는 것. checked exception 컴파일 타임에 경고를 해주는 예외. 예외 처리가 안되어 있으면 컴파일이 안된다. 컴파일 타임에 발생하는 Exception이라고 말하기는 좀 그렇다. 정확히는 Exception은 Runtime에 발생하며 컴파일 타임에 경고를 해주는거지. 대표적인게 `` IOException, SQLException`` unchecked exception 컴파일 타임에 경고를 안해주는 예외. 예외 처리가 안되어 있어도 컴파일이 된다. 대표적인 것이 `` NPE, IndexOutOfBoundsExcepti..
[Spring] DB 관련 : JdbcTemplate
[Spring] DB 관련 : JdbcTemplate
2019.05.28JdbcTemplate [Spring JDBC] Spring JDBC를 이용한 데이터 접근 방식 [Spring JDBC] JdbcTemplate의 기본 사용법 JdbcTemplate query~ 다양한 타입 예제 Spring 기준이라 살짝 더 manual한데, SpringBoot에서는 application.properties에 설정해둔 datasource 설정을 바탕으로 JdbcTemplate을 이미 만들어두기 때문에 그냥 JdbcTemplate을 바로 DI받아서 사용하면 된다. ```java // query 결과가 없는 경우 EmptyResultDataAccessException가 발생한다. DAO 내에서 try-catch해주자. Product product = jdbcTemplate.queryForO..
DB 접근 툴 : Universal Database Tool
DB 접근 툴 : Universal Database Tool
2019.05.27https://www.eversql.com/top-7-mysql-gui-tools-for-windows/ DBeaver 다양한 DB들을 지원하고, Enterprise 버전이면 NoSQL들도 지원함. SQL developer Oracle을 쓸거라면 무난하고 괜찮음. Sequel Pro 괜찮은 듯? JetBrain DataGrip JetBrain에서 나온거라 친숙하고 여러모로 괜찮을 듯 유료라는 것만 빼면 ㅎ IntelliJ 내장 DB Tool 뭐 대단한 작업 할게 아니면 그냥 IntelliJ에 내장되어 있는 DB Tool 기능을 활용한다. 스마트 서치에서 Database 입력하면 있음. 단점은 intelliJ 프로젝트 마다 각각 DB연결 설정을 따로 해줘야 한다는 점. 뭔가 좀 더 복잡한 작업을 해야 하거..
민감도와 특이도 (sensitivity, specificity)
민감도와 특이도 (sensitivity, specificity)
2019.05.24sensitivity(민감도) / specificity(특이도)\\(sensitivity = \frac{True Positive}{True Positive + False Positive}\\) \\(specificity = \frac{True Negative}{True Negative + False Positive}\\) 실제 정답PositiveNegative실험 결과PositiveTrue PositiveFalse Positive (Type Ⅱ error)NegativeFalse Negative (TypeⅠerror)True Negative True Positive : Positive일거라고 예측한 것 중에서, 실제로 정답인(True) 개수.True Negative : Negative라고 예측한 것 중에..
재표본추출 방법, Resampling Methods
재표본추출 방법, Resampling Methods
2019.05.20training set에서 반복적으로 표본을 추출하고, 각 표본에 모델을 적합하여 적합한 모델들에 대해 정보를 얻는 것을 말한다. 예를 들어 각 표본 마다 적합 결과가 다를 것이므로, 적합 결과가 다른 정도를 조사할 때 사용할 수 있다. Resampling에 주로 사용되는 방법으로는 교차검증(cross-validation)과 붓스트랩(bootstrap)이 있다. cross-validation은 본질적으로는 validation error를 구하기 위해서이고, validation error를 구하는 이유는 이를 이용해 test error를 추정하는 방식으로 성능을 평가하거나 적절한 수준의 유연성을 선택하는데 사용. 즉, 모델 평가(model assessment), 모델 선택(model selection) b..
[Java] Jackson ObjectMapper Serialization
[Java] Jackson ObjectMapper Serialization
2019.05.15ObjectMapper Configuration SpringBoot가 생성 및 제공하는 ObjectMapper Bean / configuration Spring Boot가 default ObjectMapper Bean 생성 할 때 관여하는 클래스는 `` JacksonAutoConfiguration, Jackson2ObjectMapperBuilder``이므로, 이 두 클래스를 참고하면 기본 설정을 알아낼 수 있다. 역할 org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration -> application.yml의 spring.jackson... 설정 적용. org.springframework.http.converter.json.Jacks..
바이너리를 쉘 명령어로 등록하기 (+ 버전 관리, 멀티 패키지)
바이너리를 쉘 명령어로 등록하기 (+ 버전 관리, 멀티 패키지)
2019.05.14PATH shell에 명령어를 입력하게 되면 환경 변수 `` PATH``에 등록된 경로를 차례로 뒤져가면서 해당 명령어와 일치하는 바이너리가 있는지 찾는다. `` /usr/bin``에 위치한 바이너리가 쉘에서 별도의 prefix 없이 명령어로서 사용할 수 있는 것은, 이 경로는 기본으로 `` PATH``에 등록되어 있기 때문 패키지를 수동 설치 하거나 바이너리를 직접 가져온 경우, 이를 명령어로 등록하고 싶다면? 해당 바이너리가 위치한 경로를 환경변수 `` PATH``에 추가하는 방법 PATH 관리가 좀 지저분해질 수 있다. 해당 바이너리만 `` /usr/bin``으로 직접 symbolic link하는 방법 가능은 하지만 단점이 있음. 버전이 여러 개인 경우. 예를 들면 java8, java12나 pyt..
Spring Framework의 IoC 컨테이너 / 빈(Bean) / DI 방식 정리
Spring Framework의 IoC 컨테이너 / 빈(Bean) / DI 방식 정리
2019.05.13spring core의 공식 docs. 웬만큼 궁금한건 여기 다 나와 있다. https://docs.spring.io/spring/docs/5.1.x/spring-framework-reference/core.html Core Technologies Letting qualifier values select against target bean names, within the type-matching candidates, does not require a @Qualifier annotation at the injection point. If there is no other resolution indicator (such as a qualifier or a primary marker), for a non- do..
의존성 주입(DI, Dependency Injection)이란?
의존성 주입(DI, Dependency Injection)이란?
2019.05.10의존성이란? "의존성 주입"이 무엇인지 얘기하기 전에 "의존성"이 무엇인지부터 명확히 해야 한다. 우리가 의존성 의존성 말은 많이 하는데, 의존성이라는 단어가 등장할때면 어김없이 추상적인 개념이 하나 둘 튀어나오다 보니 코드에서 정확히 뭘 의미하는건지 감을 못잡는 경우가 많다. ```java public class SimpleMovieLister { // the SimpleMovieLister has a dependency on a MovieFinder private MovieFinder movieFinder; } ``` 이게 의존성이다. 별게 아님. 그냥 한 객체에서 다른 객체 갖다 쓰면 의존성이다. 그렇다면 의존성 주입은 무엇이냐? ```java public class SimpleMovieLister..
[CI/CD] 젠킨스 Jenkins
[CI/CD] 젠킨스 Jenkins
2019.05.09젠킨스 설치 공식 홈페이지에서 권장하는 방법은 `` .war`` 파일 하나 받아서 java 커맨드로 띄우는 방식. 이게 제일 간단 yum 등을 이용해 아예 패키지로 설치해도 되긴 함 ```bash #!/bin/sh nohup java -DJENKINS_HOME=/home1/user/jenkins/jenkins_home -jar /home1/user/apps/jenkins/jenkins.war --httpPort=8080 > /home1/user/logs/kenins/nohub.out & ``` JENKINS_HOME은 옵션으로 줄 수도 있고, 환경변수로 줄 수도 있음. 기본 경로는 `` ~/.jenkins`` jenkins-x.x.x 폴더에 symlink 걸어서 jenkins로 참조하도록 하는게 관리 편..
분류, Classification
분류, Classification
2019.05.07반응변수는 크게 양적 반응변수와 질적 반응변수(categorical)로 나눌 수 있다.질적 반응변수는 동물(개, 고양이, 치타)처럼 분류할 수 있는 반응변수를 말한다. (범주형, categorical) 반응변수가 질적인 경우 선형회귀는 적합하지 않다.분류 클래스 수가 3 이상인 경우 선형회귀?범주에 따라 Y값을 1, 2, 3으로 나눌 수는 있는데, 1과 2, 2와 3의 차이가 비슷한 경우에만 해볼만하다. 분류 케이스가 3 이상인 경우 질적 반응변수를 선형 회귀를 위해 양적 반응변수로 바꾸는 자연스러운 방법은 없다.그래서 후술할 LDA 분류기를 사용한다. 분류 클래스 수가 2인 경우 선형회귀?분류해야하는 케이스가 2개면 0, 1로 할 수 있으니까 가능은 하지만…이런 경우 f가 직선이라 Y값이 음수로 나오거..
선형 회귀, Linear Regression
선형 회귀, Linear Regression
2019.05.07선형 회귀란 선형대수 ( Linear Algebra )와 선형성이란 X와 Y 사이에 선형적 상관관계가 있다고 가정하고 \\(f\\)를 추정하는 것. 선형적 상관관계가 있다고 가정하기 때문에, 함수 전체를 추정하는 문제를 계수 \\(\beta\\)를 추정하는 쉬운 문제로 단순화 시킬 수 있다. \\[\hat{y} = \hat{\beta}_0 + \hat{\beta}_1 x\\] 주어진 데이터를 통해 직선 y를 추정하는 척도로 가장 흔하게 사용되는 기법은 최소제곱. 잔차제곱합(RSS: residual sum of squares) \\[RSS = \sum (y_i - \hat{y_i})^2\\] RSS를 최소화하는 \\(\beta\\) 추정량을 최소제곱추정량(LSE)라 한다. 장단점? 모델이 간단하여 해석은 ..