분류 전체보기 138

[머신러닝] 지도학습(Supervised), 비지도학습(Unsupervised), 강화학습(Reinforcement)

머신러닝을 통해 시스템이 어떻게 스스로 학습을 한다는 것일까? 결론부터 말하자면, 머신러닝은 어떤 데이터를 분류하거나 값을 예측하는 것이다.분류하거나 값을 예측하는 것은 확률과 통계를 토대로 한다. 이 사진을 보고 어떻게 고양이라고 맞췄는가? 뾰족한 귀, 무늬, 눈코입의 위치, 4개의 다리 등의 특징을 빠르게 스캔하면서 그 동안 우리가 알게모르게 학습된 고양이의 모습이라고 판단했을 것이다. 이렇게 데이터를 잘 분류하기 위한 특징을 머신러닝에서 feature라고 부른다.(feature는 머신러닝에서 엄청 중요한 단어니까 기억해야 한다.) 만약 feature를 홍채의 모양 또는 발톱 모양으로만 분류했다면 고양이인지 몰랐을 것이다.적절한 feature를 잘 정의하는게 머신러닝의 핵심이다. 그렇다면 머신러닝, ..

개발/머신러닝 2018.04.02

인공지능(AI), 머신러닝, 딥러닝이란 무엇인가?

인공지능, 머신러닝, 딥러닝 등... 처음 접하면 무엇이 무엇인지, 단어를 혼용하기 쉽다.머신러닝을 시작하기에 앞서 간략하게 단어의 개념을 정리해보겠다. 인공지능(AI)이란? 인간의 학습 능력을 컴퓨터 프로그램으로 실현한 기술.사람이 코딩을 한 내용대로 수행되는 것이 아니라, 시스템 스스로가 학습을 하고 이해하고 사고하도록 만든 기술. 사람이 프로그램을 만들면,input -> 함수 f(x) -> output함수 부분(프로그램)을 사람이 구현하게 된다. 반면 인공지능은input -> 학습 -> output위에서 사람이 직접 짰던 함수 부분을 인공지능 시스템이 스스로 학습하고, 결과를 내뱉어 주는 것이다. 인공지능, 머신러닝, 딥러닝 이런 부류 중 가장 포괄적이고 큰 개념이다. 머신러닝이란? 이 것 때문에 ..

개발/머신러닝 2018.04.02

Apache SSL 등급 올리기

사이트 등급 확인 https://www.ssllabs.com/ssltest/analyze.html 에 들어가서 등급 확인할 사이트의 주소로 확인해보자. 각 항목에 대해 어떤 기준으로 점수를 매기는지는 https://github.com/ssllabs/research/wiki/SSL-Server-Rating-Guide 에서 확인 가능하다. 내 사이트의 경우 F 등급이 나왔다.ㅠㅠ SSL 설정파일 수정하기 vi apps/apache/conf/extra/httpd-ssl.conf (AS-IS) SSLProtocol -all +TLSv1 +SSLv3 SSLCipherSuite SSLv3:+HIGH:+MEDIUM (TO-BE) SSLProtocol TLSv1.2 TLSv1.1 TLSv1 SSLCipherSuite ..

개발/ETC 2018.01.19

Apache SSL 인증서 등록하기

1. 인증서 파일(cert.pem, Wild-Chain.pem)과 새 인증서에 대한 private key를 준비한다.cert.pem = cert.pem Wild-Chain.pem = Chain_RootCA_Bindle.crt key-nopass.pem = xxx.key 2. 인증서 파일들을 원하는 서버로 옮긴다. 아파치 설정 파일 확인 (../apache/httpd.conf)해서 ssl 설정 파일(../apache/extra/httpd-ssl.conf)을 찾는다. 3. ssl 설정 파일에서 인증서 경로 설정SSLCertificateFile "/home/apps/apache/conf/extra/certs/cert.pem" SSLCertificateKeyFile "/home/apps/apache/conf/e..

개발/ETC 2018.01.19

[java] selenium으로 Chrome headless 사용해보기

Headless browser란? GUI가 없는 브라우저. command line interface(CLI)에서 다루는 브라우저. CLI 환경에서 에뮬레이션 가능.headless 브라우저에서 phantomJS가 대세였었지만,2017년 4월에 Chrome에서 직접 headless 모드를 추가함으로써 phantomJS의 의미가 없어져서 더 이상 지원하지 않는다고 한다. Selenium이란? 브라우저 플러그인을 넣고 테스트를 실행시킬 수 있도록 하는 자동화 툴이다.서버 사이드에서 테스트를 실행시킬 수 있는 Remote Controller (RC)브라우저를 제어할 수 있는 webdriverJava, Python, node.js, javascript, ruby, groovy, php, perl 등 다양한 언어 제..

개발/ETC 2018.01.19

자주 쓰는 이클립스 단축키 vs 인텔리제이 단축키

며칠전에 인텔리제이로 바꿨다. 이클립스 키맵을 쓸까 하다가 이클립스의 한정 기능만 쓰게 될 것 같아서 당분간은 고통스럽더라도 새 단축키를 손에 익혀야지. 손가락은 생각보다 금방 익힌다. 설명 이클립스 인텔리제이 비고 창 닫기 ctrl + w ctrl + F4 인텔리제이에서 ctrl + w는 커서 위치한 곳 근처를 블럭지정 해준다. 누를 수록 블럭영역이 확장됨 창 크게하기 ctrl + m ctrl + shift + F12 import 하기 ctrl + 1 alt + enter 메소드 단위로 커서 위치 이동 alt + ↑, alt + ↓ 커서 위치한 line 옮기기 alt + ↑, alt + ↓ ctrl + alt + ↑, ctrl + alt + ↓ 커서 위치한 line 삭제 ctrl + d ctrl + y..

개발/ETC 2017.06.16

[Mysql] 여러 컬럼 IN문 사용하기

보통 IN문 사용할 때, 한 컬럼에 대한 것으로 주로 검색한다. SELECT * FROM table WHERE id IN (1, 2, 3, 4) 두 컬럼이 unique한데 여러 값을 가져와야할 때는??? 예를들어 id1, id2 컬럼으로 여러 값을 가져와야한다면 아래와 같이 사용한다. SELECT * FROM table WHERE (id1, id2) IN ( SELECT id1, id2 FROM table WHERE (id1=1 AND id2=2) OR (id1=3 AND id2=4) OR (id1=5 AND id2=6) ); IN문 안에 서브쿼리로~ (id1, id2) IN ((1, 2), (3, 4))... 이런식이었으면 좋으련만 ㅋㅋ

개발/Database 2017.05.26

input type 엔터키 서브밋 되는 현상

요런식으로 input text에 값 넣고 검색하는 화면을 만들었다. '검색' 버튼에 onclick 이벤트를 주고 onclick이 되면 파라미터들을 좀 더 채워넣어서 submit을 스크립트 함수에서 시키도록 했다. function search() { $('#search_form').append('').submit(); } 뭐 이런식으로? 마우스로 검색 버튼을 클릭했을 땐 잘 동작했다. 그런데 text에 값을 넣고 엔터를 치면 search() 함수에 들어오지 않고 바로 서브밋이 돼서 서버로 가는 것이었다. 검색 결과 아래 블로그에 잘 나와있었다. https://blog.outsider.ne.kr/292 input type text가 1개만 존재하면 바로 서브밋이 된다는 내용이다. (이유는 모름.. 브라우저들..

개발/Javascript 2017.02.14

@PathVariable 여러개 주소 못찾는 경우

@PathVariable을 여러개 사용해서 매핑 시키려고 하는데 계속 dispatcher가 매핑을 못시킨다는 에러가 발생했다. No mapping found for HTTP request with URI 구글링으로도 안나오는데 운좋게 되는 방법을 찾았음 ㅠㅠ 내가 하려고 했던 주소의 형식은 이랬다. @PostMapping(value = "/product.{product_id}/book.{book_id}") public ResponseEntity addProduct( @PathVariable("product_id") int productId, @PathVariable("book_id") int bookId) { // code } 계속 404... 해결법 @PostMapping(value = {"/produ..

개발/Spring 2016.09.29

Java String split 또는 replace 할 때 .(Dot, 점) 안되는 현상

내가 split 하려고 했던 문자열이 아래와 같다고 하면, String text = "aaa.111"; . (dot)로 split을 하려고 했다. String[] result = text.split("."); System.out.println(result.length); 결과는 몇일까? .을 기준으로 aaa와 111로 나눠지기 때문에 2가 나와야 정상이지만, 0이었다. 이유는 .(dot)는 정규식 예약어이기 때문이다. \n(개행문자)를 제외한 모든 문자를 의미한다. 따라서, String[] result = text.split("."); 이 문법은 모든 문자를 각각 다 split 하면서 하나씩 다 없어져버린 것이다. 그래서 원하는대로 하기 위해서는 \\. 으로 수행해야한다. \

개발/JAVA 2016.09.29