2016년 2월 23일 화요일
PHPUnit
PHPUnit이란, 단위 테스트를 할 수 있는 PHP용 Unit test 프레임워크이다.
Laravel framework도 PHPUnit으로 단위 테스트를 할 수 있게 구현되어 있다.
PHPUnit 설치방법
먼저, php가 설치되어 있는 경로를 찾는다.
필자는, C:\xampp\php이다.
그 다음, https://phpunit.de/manual/current/en/installation.html 접속한 후
phpunit.phar을 다운 받는다.
다운 받은 파일을 C:\xampp\php 로 이동시킨다.
마지막으로 배치 파일만 만들면 된다.
배치 파일이란, 확장자가 .bat 또는 .cmd를 가진 텍스트 파일로써
문법, 적절한 명령어들의 모음이다.
명령 프롬프트창을 열고, C:\xampp\php로 이동한다.
echo @php "%~dp0phpunit.phar" %* > phpunit.cmd 입력 후, exit.
새로운 명령프롬프트창을 열고 phpunit --version을 해보자.
하기의 그림과 같이 설치가 된 것을 확인할 수 있다!
2016년 2월 18일 목요일
핀테크
핀테크란, 금융과 Technology의 합성어로, 금융과 IT의 결합을 통해
새롭게 등장한 산업 및 서비스 분야를 말한다.
핀테크를 조사하게 된 계기
2016년 IT분야 핵심 키워드에서 2위를 차지하고 있다.
1위인, IOT는 조사를 한 적이 있어서 핀테크를 알아보기로 했다!
핀테크의 탄생
2007년 미국에서 발생한 서브 프라임 모기지 사태 이후,
글로벌 금융 위기로 확산되면서 글로벌 시장에서 급속히 발전했다.
서브 프라임 모기지 사태란, 미국의 대부업체들이 파산하면서 시작된, 미국만이 아닌
국제금융시장에 신용규제를 불러온 연쇄적인 경제위기를 말한다.
경제 위기 상황에서 빠르게 대응하지 못했던 기존 금융권에 대해
소비자들이 불신하기 시작하면서, 빠르게 발전한 IT기술의 등장은
기존 금융이 담당하던 서비스를 새로운 플랫폼으로 대체했다.
핀테크의 전망
전통적으로 금융 산업을 보수적이라고 한다.
금융 산업은 변화가 적고, 크게 변하기도 어려운, 안정을 위주로 성장할 수 밖에 없다.
하지만 IT산업은 개방적이다. 빠르게 변화하고, 주변의 기술을 받아 들이며,
창의성을 기반으로 성장한다.
즉, 보수적인 금융 산업과 개방적인 IT산업이 융합하는 지금의 핀테크는
흔치 않은 일임에 분명하다.
핀테크로 인한 모바일 시대 변화
2009년 애플의 아이폰3Gs가 국내에 들어오기 시작하면서,
우리는 모바일 시대라는 말을 줄곧 언급한다.
스마트 혁명, 스마트 시대라고도 불리는 최근의 변화는
과거 PC와 초고속 인터넷의 등장으로 인해 변화했던 흐름을 또 한번 뒤바꾸고 있다.
그리고 이 흐름은 금융권에도 본격적으로 시작됐다.
이제는 스마트폰을 이용해 PC에서 하던 작업을 모바일에서 진행할 수 있다.
이로 인해 많은 변화가 일어났다.
금융 서비스는 은행이나 증권사 등 금융 기관의 인증이 필요했는 데,
모바일 시대로 변화하면서 점차 비 금융권 기업이 금융 서비스를 제공 중이다.
알리페이, 애플페이를 생각해보자...
알리페이의 알리바바, 애플페이의 애플은 금융기관이 아니다.
그런데, 언젠가부터 이런 비 금융 기업이 금융 서비스를 제공하기 시작했다.
그 이유는 바로 편리하기 때문이다.
은행에 직접 찾아가서 송금했던 불편함을, 집에 있는 PC와 스마트폰을 이용해
모바일 뱅킹으로 보낼 수 있다!
핀테크의 핵심
핀테크의 핵심은 바로 편리함과 간편함이다.
사용자들은 결제부터 송금, 그리고 대출까지... 기존의 금융 서비스를 보다 편리하게
이용하기를 원한다.
하지만 문제가 있다. 바로 보안, 인증 절차이다.
온라인과 모바일상에서의 결제나 송금은 당사자가 맞는지 인증 절차를 거쳐야 한다.
이제 사람들은 이 과정도 불편하다고 여긴다.
페이발 서비스나 알리페이, 애플페이 등은 은행 계좌나 카드 등을
한번만 연결해놓으면 다음부터는 결제나 송금 등을 바로 이용할 수 있다.
결제할 때 필요한 중간 과정은 알아서 대행해준다.
금융 서비스의 핵심인 본인인증을 대신해주며, 카드 정보 입력, 계좌 번호 입력 등
번거로운 과정도 대행해준다.
즉, 계속 반복해서 입력해야 했던 과거의 방식에서 벗어나 한번 입력한 그 다음부터는
보다 간편하고, 쉽고, 빠르게 해당 서비스를 이용할 수 있게 되는 것이다.
핀테크의 문제점
지금까지 오프라인과 온라인을 지속적으로 결합하며 다양한 서비스를 선보였다.
하지만, 핀테크는 금융과 기술의 직접 결합이라는 점에서 다른 분야와 비교해
높은 주목을 받고 있다.
특히, 국내의 경우 핀테크 활성화에 대해 부정적인 의견이 많았지만, 올해부터는
금융계 및 IT업체, 정부 등의 노력으로 핀테크 산업을 본격적으로 진행할 것으로
예상 된다. 그 만큼 준비해야할 것은 더욱 많다.
앞서 언급했던 본인 인증 등과 같은 절차의 간소화를 위해 실질적인 대책을
마련해야 하며, 규제 중심의 금융계도 달라져야 할 것이다.
또한, 금융 업체와 IT업체가 협력해 새로운 서비스를 고민하고,
사용자들에게 필요한 것을 제공해야 한다.
마지막으로 금융 거래의 핵심인 '보안'도 빼놓을 수 없다.
지금까지 보안은 금융권에서만 전담했지만, 이를 핀테크 업체와 협력할 수 있는
방안을 찾아야한다. 절차의 간소화는 두 업계가 뭉쳐야만 가능하기 때문이다!
2016년 2월 16일 화요일
Smarty 설치하기
Smarty란, PHP 템플릿 엔진이다.
템플릿 엔진이란, 데이터베이스에 있는 정보들과 웹 템플릿에 있는 텍스트를 합쳐서
웹 문서로 만들어주는 역할을 의미한다.
Smarty 설치법
Smarty를 설치하기 위해선 PHP 5.2 이상의 버전이 필요하다.
http://www.smarty.net/docs/en/ 접속한 후에, 다운로드를 한다.
압축을 해제한 후, libs 폴더 안에 있는 파일들을 모두 복사한다.
다음으로, php.ini 파일을 열어서 include_path를 확인한다.
새로 만든 폴더의 경로를 추가해주었다.
Smarty폴더에 아까 복사한 파일들을 붙어넣기 해준다.
마지막으로, 붙어넣기 한 폴더에 templates, templates_c, configs, cache 폴더를 생성!
이것으로 모든 설치는 끝났다.
실제로 실행이 잘 되는 지 테스트를 해보자.
templates 폴더에 index.tpl 파일을 생성한 후, 하기의 그림과 같이 실행을 하면
Hello, Smarty! 라고 출력이 되는 걸 확인 할 수 있을 것이다!
2016년 2월 15일 월요일
자바스크립트의 정규표현식
자바스크립트의 정규표현식
자바스크립트에서 정규표현식은 크게 두 가지로 나뉘어 진다.
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가 결과로 출력되게 되는 것이다.
자바스크립트에서 정규표현식은 크게 두 가지로 나뉘어 진다.
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월 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는 최소화된 디자인과 개인적인 인터페이스로 가장 긍정적인 리뷰를 받았다.
하지만, 가끔 접근할 수 있는 영역이 제한되어 있어서 서비스 렐리가 막힌다는
리뷰도 있었다.
피드 구독하기:
글 (Atom)
결혼이민비자 신청방법(F-6-1 국민의 배우자)
제가 일본인 여자친구와 결혼 후, 한국에 귀국하기 위해 신청한 결혼이민비자에 대하여 작성해보도록 하겠습니다. 필자는 일본에서 근무하고 있었으며, 한국에서의 소득은 없었습니다. 결혼이민비자를 신청한 날짜는 2021-04-21 이며, 사증이 발급된 날짜...
-
MySQL 8.0.21 소스를 컴파일 하여 설치하는 방법에 대해 알아보자. 설치 환경 CentOS 7.6(64 bit) 선행 작업 1. 유저 및 그룹 생성 # 그룹 생성 groupadd mysql # 유저 생성 # options means # -M:...
-
리눅스에서 외부로부터 접속(접근)을 차단해보자. 방법은 두 가지가 있다. 1. route 2. iptables route란, 간단하게 말하면 "구글"에 들어갈 때 경로를 정해주는 역할이라고 정의할 수 있다....
-
MySQL을 이중화 하는 대표적인 MMM과 MHA 차이에 대해서 알아보도록 하자. 가장 큰 차이점은 MMM(Multi-Master Replication Manager For MySQL)는 데이터 정합성이 보장되지 않을 수 있고, MHA(MHA fo...