자바스크립트의 정규표현식
자바스크립트에서 정규표현식은 크게 두 가지로 나뉘어 진다.
1. 컴파일: 패턴을 찾는 걸 의미
2. 실행: 찾은 패턴(대상)을 어떠한 작업을 할 것인지
컴파일 하는 방법
1. 정규표현식 리터럴
var pattern = /찾고자 하는 문자/;
2. 정규표현식 객체 생성자
var pattern = new RegExp('찾고자 하는 문자');
여기서 RegExp는 regular expression의 약자이다.
var pattern = /a/ 와 var pattern = new RegExp('a') 는 같은 의미이다.
정규표현식을 사용하는 경우
1. 자신이 원하는 정보를 추출하고자 할 때
2. 자신이 원하는 정보가 있는 지 없는 지 테스트 할 때
3. 찾은 정보를 다른 텍스트로 치환할 때
이제, 실제로 정규표현식 패턴을 이용하여 정보를 추출해보자!
ex) var pattern = /a/;
pattern.exec('abcde') --->>> ["a"]
정규표현식 패턴이 담긴 변수에 exec()메소드를 사용하여
'a'를 추출하는 경우이다.
'a'가 존재하므로 'a'가 출력되었지만, 만약 'a'가 없을 경우는 'null'이 리턴된다.
ex) var pattern = /a./;
pattern.exec('abcde') --->>> ["ab"]
'a'뒤에 '.'이 있으므로 'a'뒤에 있는 텍스트가 같이 출력된다.
ex) var pattern = /a/;
pattern.test('abcde') --->>> true
정규표현식 패턴에 담긴 변수에 test()메소드를 사용하여
'a'가 존재하는지 안하는지 판단하는 경우이다.
'a'가 존재하므로 true이고, 만약 없을경우 false를 리턴한다.
ex) var pattern = /a/;
var str = 'abcde';
str.match(pattern) --->>> ["a"]
여기서 match()메소드는 String.match() 구조이다.
RegExp.exec()메소드와 같은 역할을 하고 있다.
ex) var pattern = /a/;
var str = 'abcde';
str.replace(pattern, 'A') --->>> "Abcde"
replace()메소드는 치환하는 메소드이고, String.replace() 구조이다.
첫 번째 인자로 찾고자 하는 패턴을 기입하고, 두 번째 인자로 치환할 문자를 기입
ex) var xg = /a/;
"abcdea".match(xg) --->>> ["a"]
여기서 'a'가 제일 앞과 제일 뒤, 총 2개 이지만 1개만 출력된다.
'g'키워드를 이용할 경우 검색된 모든 결과를 리턴할 수 있다.
var og = /a/g;
"abcdea".match(og) --->>> ["a", "a"]
이와 같이 'a'가 2개 출력된다.
마지막으로, 정규표현식을 이용하여 캡처를 해보자.
여기서 캡처란, 괄호안의 패턴을 마치 변수처럼 재사용할 수 있는 걸 의미.
ex) var pattern = /(\w+)\s(\w+)/;
var str = "coding everybody";
var result = str.replace(pattern, "$2, $1") --->>> everybody, coding
먼저, pattern변수를 보면 \w는 word를 의미한다.
여기서 word는 숫자, 영어 소문자, 영어 대문자, '_'을 가리킨다.
\s는 공백을 가리킨다.
replace()함수를 이용하여 치환을 하는 데, 두 번째 인자 값에 '$'가 있다.
여기서 '$'는 그룹을 의미한다.
즉, $2는 '(\w+)\s(\w+)'에서 두 번째 괄호를 가리키고,
$1는 첫 번째 괄호를 가리킨다.
두 번째 괄호인 'everybody' 먼저 출력되고 쉼표와 공백을 둔 후,
첫 번째 괄호인 coding가 결과로 출력되게 되는 것이다.
2016년 2월 15일 월요일
2016년 2월 4일 목요일
Feedly
Feedly
Feedly란, 뉴스 종합 어플리케이션이다.
다양한 웹 브라우저나 IOS, Android에서도 실행가능하고,
클라우드 서비스도 가능하다.
Feedly는 RSS reader의 한 종류이다.
RSS란 Rich Site Summary의 약자로, 컨텐츠 업데이트가 자주 일어나는
웹 사이트의 정보를 구독하기 좋게 요약하여 받아보기 쉽게 만든 서비스이다.
Feedly는 third party를 제공하고 있다.
Feedly에 저장해놓은 RSS주소들을 다른 Application,
예를 들면 reader2 or Mr.reader 에서도 이용할 수 있다.
Feedly의 목적
Feeldy는 사용자가 다른 사용자들과 다양한 온라인 서비스를 공유할 수 있고,
뉴스를 편집할 수도 있다.
Feedly의 역사
2006년 11월 DevHD의 공동창립자인 Edwin Khodabakchian이 만들었다.
이 회사는 RSS feeds, social storage, social media intergration을 연결하고
사용할 수 있는 플랫폼을 만들려고 추구했다.
DevHD의 첫 번째 프로젝트인 Streets는 다양한 소스들을 업데이트 하고
편집할 수 있는 데, 이것이 바로 Feedly의 기초이다.
Feedly는 2008년 6월 15일에 처음으로 최적화된 RSS feed로 시판되었다.
2013년 3월 15일에 Google Reader의 폐쇄로 인하여 48시간 만에
500,000명이 가입을 했다고 한다.
Feedly의 방어
2014년 6월 11일 ~ 13일에 Feedly는 해커로부터 공격을 받았다.
해커들은 돈을 요구했지만, 결국 Feedly는 거부하고 공격을 막았다고 한다.
Feedly의 평가
Feedly는 최소화된 디자인과 개인적인 인터페이스로 가장 긍정적인 리뷰를 받았다.
하지만, 가끔 접근할 수 있는 영역이 제한되어 있어서 서비스 렐리가 막힌다는
리뷰도 있었다.
Feedly란, 뉴스 종합 어플리케이션이다.
다양한 웹 브라우저나 IOS, Android에서도 실행가능하고,
클라우드 서비스도 가능하다.
Feedly는 RSS reader의 한 종류이다.
RSS란 Rich Site Summary의 약자로, 컨텐츠 업데이트가 자주 일어나는
웹 사이트의 정보를 구독하기 좋게 요약하여 받아보기 쉽게 만든 서비스이다.
Feedly는 third party를 제공하고 있다.
Feedly에 저장해놓은 RSS주소들을 다른 Application,
예를 들면 reader2 or Mr.reader 에서도 이용할 수 있다.
Feedly의 목적
Feeldy는 사용자가 다른 사용자들과 다양한 온라인 서비스를 공유할 수 있고,
뉴스를 편집할 수도 있다.
Feedly의 역사
2006년 11월 DevHD의 공동창립자인 Edwin Khodabakchian이 만들었다.
이 회사는 RSS feeds, social storage, social media intergration을 연결하고
사용할 수 있는 플랫폼을 만들려고 추구했다.
DevHD의 첫 번째 프로젝트인 Streets는 다양한 소스들을 업데이트 하고
편집할 수 있는 데, 이것이 바로 Feedly의 기초이다.
Feedly는 2008년 6월 15일에 처음으로 최적화된 RSS feed로 시판되었다.
2013년 3월 15일에 Google Reader의 폐쇄로 인하여 48시간 만에
500,000명이 가입을 했다고 한다.
Feedly의 방어
2014년 6월 11일 ~ 13일에 Feedly는 해커로부터 공격을 받았다.
해커들은 돈을 요구했지만, 결국 Feedly는 거부하고 공격을 막았다고 한다.
Feedly의 평가
Feedly는 최소화된 디자인과 개인적인 인터페이스로 가장 긍정적인 리뷰를 받았다.
하지만, 가끔 접근할 수 있는 영역이 제한되어 있어서 서비스 렐리가 막힌다는
리뷰도 있었다.
2016년 1월 31일 일요일
PHP의 정규표현식(Regular Expression)
PHP의 정규표현식
cheat sheet: http://ult-tex.net/info/perl/
cheat sheet: http://ult-tex.net/info/perl/
PHP의 정규표현식은 구분자로 시작해서 구분자로 끝난다.
/php/ --->>> '/'가 구분자이다.
구분자는 정규표현식과 정규표현식이 아닌 것을 구분해주기 위함이다.
'/'대신, '#', '+', '%' 같은 특수기호도 사용가능
/jsp/i --->>> 'i'는 대소문자를 구분하지 않겠다는 의미
/body$/m --->>> '$'은 가장 끝의 경계점을 의미한다.
'm'은 멀티라인이다.
ex) everybody
body
body
Onebody
'm'이 없었으면, 제일 마지막에 있는 One뒤의 body가
선택되지만, 'm'으로 인하여 행 마다 있는 body가 다 선택된다.
\b: 단어의 경계를 의미한다.
\bweb\b --->>> 'web'이라는 독립된 단어를 가리킨다. 즉, 'web'을 가리킴
'webscript'에서도 'web'이 있지만 선택되지 않는다.
\s: 공백을 의미한다.
preg_match()의 리턴 값은, 해당 패턴을 찾았으면 1
찾지 못했으면 0
문법적 에러는 false
capturing: preg_match함수의 결과 값으로 데이터를 따로 대입시키기 위해 '()'로 감싸는 것.
ex) http://www.naver.com/index.html
preg_match('/http:\/\/([^/]+)/', subject, result)
([^/]+)로 감싸진, www.naver.com이 따로 결과 값으로 대입된다.
capturing할 때, 괄호 안에 '?:'를 기입하면 결과 값에 데이터가 따로 대입되지 않는다.
ex) http://www.daum.net/index.html
preg_match('/^(?:http://)?([^/]+)/', subject, result)
'^'는 행의 시작점을 의미한다. 만약 '[]'안에 있으면 Not을 의미
가장 처음에 http://가 있는 지 판단하는 데, '?' 때문에 없을 경우와
존재한다면 1개만 등장하도록 한다.
서브패턴안에 '?:' 있으므로, 'http://'는 결과 값에 따로 대입하지 않는다.
즉, 결과 값은 www.daum.net
ex) www.php.net
preg_match('/[^.]+\.[^.]+$/', subject, result)
'[^.]+\.[^.]+$'의 의미는 $때문에 행의 끝에서 부터 본다.
'[^.]+'는 '.'이 아닌 텍스트가 1개 이상인 경우, 즉 'net'
'\.'는 '.'을 가리키니까, 즉 net의 앞에 있는 '.'
'[^.]+'는 '.'이 아닌 텍스트가 1개 이상인 경우, 즉 'php
결과는 php.net
capturing할 때, 괄호 안에 ?P<key>으로 할 경우, 결과 값이 연관배열로 대입된다.
ex) foobar: 2008
preg_match('/(?P<name>\w+): (?P<digit>\d+)/', subject, result)
'\d'는 숫자를 의미
'?P<name>'로 인해, <name> 키 값에 foobar이 밸류로 대입
'?P<digit>'로 인해, <digit> 키 값에 2008이 밸류로 대입
결과는, [name] => boobar, [digit] => 2008
2016년 1월 20일 수요일
MySQL utf 8 설정하기
MySQL charset 설정
OS가 window일 경우, my.ini
Linux일 경우, my.cnf 를 수정해주어야 한다.
해당 파일을 열고,
[mysql] 하단 부분에 default-character-set=utf8
[mysqld] 하단 부분에 character-set-client-handshake = FALSE
init_connect = "SET collation_connection = utf8_general_ci"
init_connect = "SET NAMES utf8"
default-character-set = utf84
character-set-server = utf8
collation-server = utf8_general_ci
[client] 하단 부분에 default-character-set = utf8
[mysqldump] 하단 부분에 default-character-set = utf8
를 추가한 후, 저장하고 MySQL을 재시작한다.
mysql에 접속한 후, show variables like 'c%'; 입력
위 그림과 같이, utf8로 변경이 된다!
하지만, 아직까지 한글이 ????로 표시되고 있다...
여기서 몇시간을 투자했지만... 결국 해결하지 못하고 컴퓨터를 끄고 잤다...
my.ini를 수정하고 나서, table을 삭제하고 다시 create해도 똑같은 현상이 일어났었다.
오늘, MySQL Window Command Line에서 한글이 깨지는 거라는 걸 알게 되었다.
기본 클라이언트 문자셋은 utf8이지만, 클라이언트에서 자신의 문자셋을 변경할 수 있다.
윈도우즈 커맨드라인에서 입력하는 한글은 euckr이니 euckr로 변경을 해야한다는 것을...
set character set euckr; 입력 후, select 해보니 한글이 제대로 출력되었다!
환경변수를 변경하면 전체 적용되는 게 아닌가 생각했지만,
웹에서 확인해보니 클라이언트 문자셋은 자신에게만 해당되는 것이었고
기존 값 그대로 utf8이었다.
OS가 window일 경우, my.ini
Linux일 경우, my.cnf 를 수정해주어야 한다.
해당 파일을 열고,
[mysql] 하단 부분에 default-character-set=utf8
[mysqld] 하단 부분에 character-set-client-handshake = FALSE
init_connect = "SET collation_connection = utf8_general_ci"
init_connect = "SET NAMES utf8"
default-character-set = utf84
character-set-server = utf8
collation-server = utf8_general_ci
[client] 하단 부분에 default-character-set = utf8
[mysqldump] 하단 부분에 default-character-set = utf8
를 추가한 후, 저장하고 MySQL을 재시작한다.
mysql에 접속한 후, show variables like 'c%'; 입력
위 그림과 같이, utf8로 변경이 된다!
하지만, 아직까지 한글이 ????로 표시되고 있다...
여기서 몇시간을 투자했지만... 결국 해결하지 못하고 컴퓨터를 끄고 잤다...
my.ini를 수정하고 나서, table을 삭제하고 다시 create해도 똑같은 현상이 일어났었다.
오늘, MySQL Window Command Line에서 한글이 깨지는 거라는 걸 알게 되었다.
기본 클라이언트 문자셋은 utf8이지만, 클라이언트에서 자신의 문자셋을 변경할 수 있다.
윈도우즈 커맨드라인에서 입력하는 한글은 euckr이니 euckr로 변경을 해야한다는 것을...
set character set euckr; 입력 후, select 해보니 한글이 제대로 출력되었다!
환경변수를 변경하면 전체 적용되는 게 아닌가 생각했지만,
웹에서 확인해보니 클라이언트 문자셋은 자신에게만 해당되는 것이었고
기존 값 그대로 utf8이었다.
2016년 1월 18일 월요일
정규표현식3
수량자
{~~~}: 중괄호 안에 있는 값이 수량을 의미한다.
ex) '*'는 {0,}과 같다.
'+'는 {1,}과 같다.
'?'는 {0,1}과 같다.
*?: '*'뒤에 '?'가 오면, 수량자 0을 의미한다.
ex) One ring to bring them all and in the darkness bind them
r.*? --->>> 'r' 하나만을 가리킨다.
결과 First match: r
All matches: r, r, r, r ~~
+?: '+'뒤에 '?'가 오면, 수량자 1을 의미한다.
r.+? --->>> 'r'과 'r'뒤에 문자 하나를 같이 가리킨다.
결과 First match: ri
All matches: ri, ri, rk
??: '?'뒤에 '?'가 오면, 수량자 0을 의미한다.
r.?? --->>> 'r'하나만을 가리킨다.
탐욕적인 수량자(Greedy quantifier)
ex) <div>test</div><div>test2</div>
<div>.+</div> --->>> <div>test</div><div>test2</div> 모두 선택된다.
이렇게 맨 앞의 <div>와 맨 뒤의 </div>사이에 있는 모든 게 선택되는 것을
탐욕적인 수량자라고 한다.
게으른 수량자(Lazy quantifier)
<div>.+?</div> --->>> <div>test</div> 만 선택된다.
이렇게 맨 앞의 <div>와 처음으로 나타난 </div>까지 선택되는 것을
게르은 수량자라고 한다.
Character class
ex) A1 B2 c3 d_4 e:5 ffGG88--__--
\w --->>> 알파벳, 숫자, 언더라인('_')을 가리킨다
(\w를 'word'라고 부름)
결과 First match: A
All matches: A1, B2, c3~~~
\w* --->>> word를 0개 or 1개 or 2개 이상을 가리킨다.
결과 First match: A1
All matches: A1, B2, c3, ~~~
[a-z]\w* --->>> word앞에 a~z중 하나가 오는 것을 가리킨다.
결과 First match: c3
All matches: c3, d_4, e, ffGG88
[A-z0-9_] --->>> \w와 같다.
\W --->>> 대문자 'W'는 word의 반대를 가리킨다.
(공백, 특수문자, '.', ',' 등)
\d --->>> 0~9까지의 숫자를 가리킨다.
\D --->>> 소문자 'd'의 반대 즉, 숫자가 아닌 것을 가리킨다.
ex) Ere iron was b
\b: 어떠한 단어를 식별할 수 있다.
\b\w --->>> word가 시작되는 곳을 가리킨다.
결과 First match: E
All matches: E, i, w, b
\w\b --->>> word가 끝나는 곳을 가리킨다.
결과 First match: e
All matches: e, n, s, b
\b\w\b --->>> 단어가 하나인 것을 가리킨다.
결과 First match: b
ex) cat concat
\bcat --->>> 앞에 있는 'cat'을 가리킨다.
cat\b --->>> 뒤에 있는 'cat'을 가리킨다.
\A: 시작점을 의미한다.
\A.. --->>> 앞에 있는 'ca'을 가리킨다.
\Z: 제일 뒤에 있는 경계를 의미한다.
..\Z --->>> 뒤에 있는 'at'를 가리킨다.
Assertions
ex) AAAX----aaax---111---BBBXCCC
\w+(?=X) --->>> word가 1개 or 1개 이상이어야 하고,
옵션으로 대문자 'X' 앞까지 선택하라는 의미.
'?='는 특수기호이다.
문자열을 검색하는 데 'X'를 쓰지만, 선택할 때는 'X'를 제외.
결과 First match: AAA
All matches: AAA, BBB
\w+(?=\w) --->>> word가 1개 or 1개 이상이어야 하고,
옵션으로 word가 아닌 문자가 있을 경우,
word가 아닌 문자 앞에 있는 word를 기준으로,
해당 기준까지 선택하라는 의미(기준을 선택되지 않음)
결과 First match: AAA
('AAAX-'에서 'X'뒤에 '-'가 word가 아닌 문자이다.
'-'의 앞 문자인 'X'를 기준으로 해당 기준까지 선택되고
'X'는 선택을 받지 못한다.)
All matches: AAA, aaa, 11, BBBXCC
{~~~}: 중괄호 안에 있는 값이 수량을 의미한다.
ex) '*'는 {0,}과 같다.
'+'는 {1,}과 같다.
'?'는 {0,1}과 같다.
*?: '*'뒤에 '?'가 오면, 수량자 0을 의미한다.
ex) One ring to bring them all and in the darkness bind them
r.*? --->>> 'r' 하나만을 가리킨다.
결과 First match: r
All matches: r, r, r, r ~~
+?: '+'뒤에 '?'가 오면, 수량자 1을 의미한다.
r.+? --->>> 'r'과 'r'뒤에 문자 하나를 같이 가리킨다.
결과 First match: ri
All matches: ri, ri, rk
??: '?'뒤에 '?'가 오면, 수량자 0을 의미한다.
r.?? --->>> 'r'하나만을 가리킨다.
탐욕적인 수량자(Greedy quantifier)
ex) <div>test</div><div>test2</div>
<div>.+</div> --->>> <div>test</div><div>test2</div> 모두 선택된다.
이렇게 맨 앞의 <div>와 맨 뒤의 </div>사이에 있는 모든 게 선택되는 것을
탐욕적인 수량자라고 한다.
게으른 수량자(Lazy quantifier)
<div>.+?</div> --->>> <div>test</div> 만 선택된다.
이렇게 맨 앞의 <div>와 처음으로 나타난 </div>까지 선택되는 것을
게르은 수량자라고 한다.
Character class
ex) A1 B2 c3 d_4 e:5 ffGG88--__--
\w --->>> 알파벳, 숫자, 언더라인('_')을 가리킨다
(\w를 'word'라고 부름)
결과 First match: A
All matches: A1, B2, c3~~~
\w* --->>> word를 0개 or 1개 or 2개 이상을 가리킨다.
결과 First match: A1
All matches: A1, B2, c3, ~~~
[a-z]\w* --->>> word앞에 a~z중 하나가 오는 것을 가리킨다.
결과 First match: c3
All matches: c3, d_4, e, ffGG88
[A-z0-9_] --->>> \w와 같다.
\W --->>> 대문자 'W'는 word의 반대를 가리킨다.
(공백, 특수문자, '.', ',' 등)
\d --->>> 0~9까지의 숫자를 가리킨다.
\D --->>> 소문자 'd'의 반대 즉, 숫자가 아닌 것을 가리킨다.
ex) Ere iron was b
\b: 어떠한 단어를 식별할 수 있다.
\b\w --->>> word가 시작되는 곳을 가리킨다.
결과 First match: E
All matches: E, i, w, b
\w\b --->>> word가 끝나는 곳을 가리킨다.
결과 First match: e
All matches: e, n, s, b
\b\w\b --->>> 단어가 하나인 것을 가리킨다.
결과 First match: b
ex) cat concat
\bcat --->>> 앞에 있는 'cat'을 가리킨다.
cat\b --->>> 뒤에 있는 'cat'을 가리킨다.
\A: 시작점을 의미한다.
\A.. --->>> 앞에 있는 'ca'을 가리킨다.
\Z: 제일 뒤에 있는 경계를 의미한다.
..\Z --->>> 뒤에 있는 'at'를 가리킨다.
Assertions
ex) AAAX----aaax---111---BBBXCCC
\w+(?=X) --->>> word가 1개 or 1개 이상이어야 하고,
옵션으로 대문자 'X' 앞까지 선택하라는 의미.
'?='는 특수기호이다.
문자열을 검색하는 데 'X'를 쓰지만, 선택할 때는 'X'를 제외.
결과 First match: AAA
All matches: AAA, BBB
\w+(?=\w) --->>> word가 1개 or 1개 이상이어야 하고,
옵션으로 word가 아닌 문자가 있을 경우,
word가 아닌 문자 앞에 있는 word를 기준으로,
해당 기준까지 선택하라는 의미(기준을 선택되지 않음)
결과 First match: AAA
('AAAX-'에서 'X'뒤에 '-'가 word가 아닌 문자이다.
'-'의 앞 문자인 'X'를 기준으로 해당 기준까지 선택되고
'X'는 선택을 받지 못한다.)
All matches: AAA, aaa, 11, BBBXCC
2016년 1월 10일 일요일
딥 러닝(deep learning)
딥 러닝
Deep Learning
딥 러닝이란, 사람의 사고방식을 컴퓨터에게 가르치는 기계학습의 한 분야이다.
딥 러닝 정의
여러 비선형 변환기법의 조합을 통해 높은 수준의 추상화를 시도하는
기계학습 알고리즘의 집합이다.
추상화란, 다량의 데이터나 복잡한 자료들 속에서 핵심적인 내용 또는
기술을 요약하는 작업
기계학습이란, 인공 지능의 한 분야로, 컴퓨터가 학습할 수 있도록 하는
알고리즘과 기술을 개발하는 분야
딥 러닝의 구조
인공신경망에 기반하여 설계된 구조이다.
인공신경망이란, 생물학의 신경망(동물의 중추신경계, 특히 뇌)에서
영감을 얻은 통계학적 학습 알고리즘이다.
딥 러닝의 핵심
딥 러닝의 핵심은 분류를 통한 예측이다.
즉, 많은 데이터 중에서 패턴을 발견하여, 사람이 물건을 구별하는 것 처럼
컴퓨터가 스스로 객체를 분별한다.
이러한 형식을 두 가지로 나뉘게 된다.
지도학습과 비지도학습
지도학습은 먼저 컴퓨터에 고양이 이미지를 학습시킨 후, 학습한 결과를 바탕으로
이미지가 고양이인지를 판별한다.
사전에 반드시 고양이 이미지를 인식시켜주어야 한다.
비지도학습은 고양이 이미지를 컴퓨터에 인식시켜주지 않아도
고양이라고 판별을 하게 된다.
비지도학습이 지도학습보다 기술적으로 우수하지만,
일반적인 컴퓨터에서는 구동이 어렵다고 한다.
(일반적으로 사용하는 컴퓨터의 성능상으론 부족)
딥 러닝의 사용사례
네이버의 음성인식서비스에 딥 러닝이 사용되고 있다.
페이스북에서 딥페이스라는 얼굴인식에도 딥 러닝이 사용되고 있다.
Deep Learning
딥 러닝이란, 사람의 사고방식을 컴퓨터에게 가르치는 기계학습의 한 분야이다.
딥 러닝 정의
여러 비선형 변환기법의 조합을 통해 높은 수준의 추상화를 시도하는
기계학습 알고리즘의 집합이다.
추상화란, 다량의 데이터나 복잡한 자료들 속에서 핵심적인 내용 또는
기술을 요약하는 작업
기계학습이란, 인공 지능의 한 분야로, 컴퓨터가 학습할 수 있도록 하는
알고리즘과 기술을 개발하는 분야
딥 러닝의 구조
인공신경망에 기반하여 설계된 구조이다.
인공신경망이란, 생물학의 신경망(동물의 중추신경계, 특히 뇌)에서
영감을 얻은 통계학적 학습 알고리즘이다.
딥 러닝의 핵심
딥 러닝의 핵심은 분류를 통한 예측이다.
즉, 많은 데이터 중에서 패턴을 발견하여, 사람이 물건을 구별하는 것 처럼
컴퓨터가 스스로 객체를 분별한다.
이러한 형식을 두 가지로 나뉘게 된다.
지도학습과 비지도학습
지도학습은 먼저 컴퓨터에 고양이 이미지를 학습시킨 후, 학습한 결과를 바탕으로
이미지가 고양이인지를 판별한다.
사전에 반드시 고양이 이미지를 인식시켜주어야 한다.
비지도학습은 고양이 이미지를 컴퓨터에 인식시켜주지 않아도
고양이라고 판별을 하게 된다.
비지도학습이 지도학습보다 기술적으로 우수하지만,
일반적인 컴퓨터에서는 구동이 어렵다고 한다.
(일반적으로 사용하는 컴퓨터의 성능상으론 부족)
딥 러닝의 사용사례
네이버의 음성인식서비스에 딥 러닝이 사용되고 있다.
페이스북에서 딥페이스라는 얼굴인식에도 딥 러닝이 사용되고 있다.
2016년 1월 2일 토요일
CasperJS란
Casper.JS
casperjs란, QT기반의 WebBrowers를 이용해 웹 페이지을 불러와
JavaScript, dom객체 등을 컨트롤 할 수 있는 Phantomjs를
보다 쉽게 사용할 수 있도록 만들어 진 것이다.
이를 전부 JavaScript기반의 스크립트로 처리하게 된다.
QT란, 컴퓨터 프로그래밍에서 GUI프로그램 개발에 널리 쓰이는
크로스 플랫폼 프레임워크이다.
크로스플랫폼이란, 멀티 플랫폼이라고도 하며 컴퓨터 프로그램, 운영체제,
컴퓨터 언어, 프로그래밍 언어, 컴퓨터 소프트웨어 등이 여러 종류의
컴퓨터 플랫폼에서 동작할 수 있다는 것을 의미한다.
casperjs를 언제 사용할까
프로그램을 테스트할 때 주로 사용한다.
브라우저에 주소 치고, 클릭하고, 로그인 하고, 해당 웹 페이지 테스트를
일일이 하나 하나 하지 않고도, 자신이 원하는 작업을 할 수 있다.
casperjs는 쉽게 말하면 웹 브라우저이다.
화면 없이 브라우저처럼 웹 페이지를 접근해서 데이터 형태로 읽을 수 있고,
마우스와 키보드의 입력을 줄 수 있다.
casperjs 설치법
윈도우 보다 리눅스에서 작업이 편리하기 때문에
리눅스 설치 방법에 대해서 살펴보자!
먼저, casperjs를 설치하기 위해선 phantomjs가 설치되어 있어야 하므로
phantomjs를 설치한다.
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-linux-i686.tar.bz2
필자는 1.9.7버전을 다운 받았다.
원레 1.9.8을 다운 받았는데, 접근한 웹 페이지의 HTML태그를 JavaScript로
접근하려고 하니까 에러가 발생했다...
알아보니까, 1.9.8 버전에서 일어나는 버그라고 한다.
해결해보려고 1시간을 잡고 있었지만... 결국 다운그레이드를 했다...
지금은 최신버전인 2.0이 출시되었다.
다운받은 압출파일을 해제한다.
tar -xvf phantomjs-1.9.7-linux-i686.tar.bz2
casperjs란, QT기반의 WebBrowers를 이용해 웹 페이지을 불러와
JavaScript, dom객체 등을 컨트롤 할 수 있는 Phantomjs를
보다 쉽게 사용할 수 있도록 만들어 진 것이다.
이를 전부 JavaScript기반의 스크립트로 처리하게 된다.
QT란, 컴퓨터 프로그래밍에서 GUI프로그램 개발에 널리 쓰이는
크로스 플랫폼 프레임워크이다.
크로스플랫폼이란, 멀티 플랫폼이라고도 하며 컴퓨터 프로그램, 운영체제,
컴퓨터 언어, 프로그래밍 언어, 컴퓨터 소프트웨어 등이 여러 종류의
컴퓨터 플랫폼에서 동작할 수 있다는 것을 의미한다.
casperjs를 언제 사용할까
프로그램을 테스트할 때 주로 사용한다.
브라우저에 주소 치고, 클릭하고, 로그인 하고, 해당 웹 페이지 테스트를
일일이 하나 하나 하지 않고도, 자신이 원하는 작업을 할 수 있다.
casperjs는 쉽게 말하면 웹 브라우저이다.
화면 없이 브라우저처럼 웹 페이지를 접근해서 데이터 형태로 읽을 수 있고,
마우스와 키보드의 입력을 줄 수 있다.
casperjs 설치법
윈도우 보다 리눅스에서 작업이 편리하기 때문에
리눅스 설치 방법에 대해서 살펴보자!
먼저, casperjs를 설치하기 위해선 phantomjs가 설치되어 있어야 하므로
phantomjs를 설치한다.
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-linux-i686.tar.bz2
필자는 1.9.7버전을 다운 받았다.
원레 1.9.8을 다운 받았는데, 접근한 웹 페이지의 HTML태그를 JavaScript로
접근하려고 하니까 에러가 발생했다...
알아보니까, 1.9.8 버전에서 일어나는 버그라고 한다.
해결해보려고 1시간을 잡고 있었지만... 결국 다운그레이드를 했다...
지금은 최신버전인 2.0이 출시되었다.
다운받은 압출파일을 해제한다.
tar -xvf phantomjs-1.9.7-linux-i686.tar.bz2
이제 casperjs를 설치해보자.
casperjs는 git을 이용해서 다운 받았다.
git clone git://github.com/n2k0/casperjs.git
casperjs디렉토리로 이동해서,
ln -sf 'pwd'/bin/casperjs /usr/local/bin/casperjs 입력하면 모든 설치가 완료되었다.
만약 Node.js가 설치되어 있다면... 이러한 절차없이 바로 npm으로 설치할 수 있다.
npm install -g phantomjs
npm install -g casperjs
필자는 npm으로 설치했으나... phantomjs가 1.9.8버전으로 설치되어서
wget으로 다시 설치했다.
만약 npm으로 했을 때 1.9.8이면 지우고, 다른 버전으로 설치하자!!
피드 구독하기:
글 (Atom)
결혼이민비자 신청방법(F-6-1 국민의 배우자)
제가 일본인 여자친구와 결혼 후, 한국에 귀국하기 위해 신청한 결혼이민비자에 대하여 작성해보도록 하겠습니다. 필자는 일본에서 근무하고 있었으며, 한국에서의 소득은 없었습니다. 결혼이민비자를 신청한 날짜는 2021-04-21 이며, 사증이 발급된 날짜...
-
Internet of Things 사물 인터넷(IoT) 사물 인터넷이란, 각종 사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술 여기서 사물이란, 가전제품, 모바일 장비, 웨어러블 컴퓨터 등 ...
-
MySQL 8.0.17 부터 추가된 Clone 플러그인에 대하여 알아보자. Clone plugin 이란 온라인으로 습득할 수 있는 풀 백업으로, 동일한 데이터의 MySQL 서버를 작성할 수 있다. Clone plugin 도입 MySQL 서버 패키지에 ...
-
지난 번에 알아본 Internal Temporary Table에서 소개한 MySQL 8.0부터 추가된 TempTable 스토리지 엔진에 대하여 알아보자( https://jongguheo.blogspot.com/2020/11/internal-tempor...








