[Ubuntu] CURL 설치하기[Ubuntu] CURL 설치하기
Posted at 2019. 4. 23. 10:47 | Posted in Linux/Ubuntu참고 : https://zetawiki.com/wiki/우분투_curl_설치
참고 : https://www.lesstif.com/pages/viewpage.action?pageId=14745703
■ 우분투에 CURL 설치하기
-. curl은 command line 용 data transfer tool 이다.
-. DOWNLOAD / UPLOAD 모두 가능하다.
-. HTTP / HTTPS / FTP / LDAP / SCP / TELNET / SMTP / POP3 등 주요 프로토콜을 지원한다.
-. LINUX / UNIX 계열 및 Windows 등 주요한 OS에서 구동되므로 여러 플랫폼과 OS에서 유용하게 사용할 수 있다.
-. libcurl 이라는 C 기반의 library가 제공되므로 C / C++ 프로 그램 개발시 위의 protocol과 연계가 필요하다면 libcurl을 손쉽게 연계할 수 있다.
-. libcurl은 PHP, RUBY, PERL 및 여러 언어에 바인딩 되어 있으므로 사용하는 언어나 개발 환경에 맞게 libcurl을 사용할 수 있다.
우분투에 curl을 설치해 보자.
$ sudo apt-get install -y curl |
설치가 완료되었다면 아래와 같이 설치된 버전을 확인 함으로서
정상적으로 설치되었는지 살펴보자.
$ curl --version |
명령 |
설 명 |
-f |
· HTTP 요청 헤더의 contentType을 multipart/form-data로 보낸다. |
-s |
· 진행 과정이나 에러 정보를 보여주지 않는다.(–silent) |
-S |
· SSL 인증관련 |
-L |
· 서버에서 301, 302 응답이 오면 redirection URL로 따라간다. · apt-key : apt가 패키지를 인증할 때 사용하는 키 리스트를 관리한다. 이 키를 사용해 인증된 패키지는 신뢰할 수 있는 것으로 간주한다. · add 명령어는 키 리스트에 새로운 키를 추가하겠다는 의미이다. |
CURL을 이용해 Node.js를 다운받아보자.
$ curl -fsSl https://deb.nodesource.com/setup_버전 숫자.x | sudo -E bash - |
'Linux > Ubuntu' 카테고리의 다른 글
[Ubunt] CRON을 이용한 반복작업 수행하기 (0) | 2019.09.29 |
---|---|
[Ubuntu] 우분투 타임존(Timezone) 변경하기 (0) | 2019.07.30 |
[Ubuntu] 아파치 Virtual Host 설정하기 (0) | 2019.03.25 |
[Ubuntu] 리눅스판 바로가기 - Symbolic Link (0) | 2019.02.26 |
[Ubuntu] MariaDB 원격접속 허용하기 (0) | 2019.01.09 |
[JavaScript] 정규 표현식을 사용한 데이터 변환[JavaScript] 정규 표현식을 사용한 데이터 변환
Posted at 2019. 4. 16. 15:36 | Posted in JavaScript & jQuery/JavaScript■ 정규 표현식이란?
정규 표현식(regular expression)이란, 문자열의 패턴을 표현하는 표기 방법으로 문자열의 검색과 치환에 유용하다.
문자열의 패턴을 메타 문자(미리 약속된 특별기호)를 조합하여 표현함으로써 문자를 검색하거나 치환할 수 있다.
대부분의 프로그래밍 언어에서 정규 표현식을 지원하며, 자바스크립트에도 표준 기능으로 탑재되어 있다.
정규 표현식은 씹으면 씹을수로 맛이나는 오징어처럼 쓰면 쓸수록 그 유용함을 깨닫게 된다.
또한, 문자열을 효과적으로 다루기 위해 반드시 터득해야 되는 기술 중 하나이다.
그러면 정규 표현식의 기본 문법과 자바스크립트에서의 사용법을 알아보자.
■ 자바스크립트에서의 정규 표현식 사용법
자바스크립트에서는 소스 코드 중에 '/패턴/'으로 정규표현식 객체를 생성할 수 있다. 이를 정규 표현식 리터럴이라고 한다.
var re = /value=\d+/; |
혹은 RegExp 객체를 생성하여 사용할 수도 있다.
var re = new RegExp("value=\d+"); |
정규 표현식 리터럴을 사용하면 스크립트가 로드되는 시점에서 정규 표현식이 컴파일되므로 성능에 유리하다.
한편 RegExp 객체를 사용하면 문자열 변수로 정규 표현식 패턴을 지정할 수 있어 동적으로 정규 표현식을 다룰 수 있게 된다.
#01. 정규 표현식 메소드
자바스크립트에는 정규 표현식과 관련하여 다음과 같은 메소드가 준비되어 있다.
▼ JavaScript의 정규 표현식 메서드 일람 |
|
메서드 |
설 명 |
.exec( ) |
· 문자열 중에서 일치하는 부분을 검색하여 결과를 배열로 반환한다. · 검색에 실패한 경우 null을 반환한다. |
.test( ) |
· 문자열 중에서 일치하는 부분이 있는지를 테스트한다. · true / false 중 하나를 반환한다. · RegExp의 메서드 |
.match( ) |
· 문자열 중에서 일치하는 것을 검색하여 결과를 배열로 반환한다. · 일치하는 패턴이 없는경우 null을 반환한다. · String의 메서드 |
.search( ) |
· 문자열 중에서 일치하는 것이 있는지를 테스트한다. · 일치하는 패턴이 없는경우 -1을 반환한다. · String의 메서드 |
.replace( ) |
· 문자열 중에서 일치하는 것을 찾아서 다른 문자열로 치환한다. |
.split( ) |
· 문자열을 정규 표현식으로 분할하여 부분 문자열의 배열을 반환한다. |
기능이 비슷해 보이는 메서드들이 있는데 다음과 같이 용도에 따라 나눠 생각하면 된다.
어떤 문자열 안에 정규 표현식 패턴이 있는지 확인만 하고 싶을 때는 test( ) 또는 search( )를 사용한다.
더 자세한 정보를 알고 싶을 때에는 exec( ) 혹은 match( )를 사용한다.
#02. RegExp.exec( ) 메서드
RegExp.exec( ) 메서드는 정규 표현식에 해당하는 문자열을 검색하여 패턴이 존재하면
문자열의 배열을 반환함과 동시에 RegExp 객체의 속성을 업데이트하고, 일치하는 패턴이 없으면 null을 반환한다.
결과로 반환되는 배열에는 정규 표현식에 일치하는 문자열이 첫 번째 요소에 담겨 있고,
이어서 정규 표현식 중 괄호로 묶인 부분에 해당하는 부분 문자열이 차례로 담겨 있다.
또한, 이 배열에는 속성으로 정규식에 해당하는 문자열의 인덱스 정보와 입력받은 문자열 값을 포함하고 있다.
<html> <head> <title>:: RegExp.exec() 메서드 ::</title> <script type="text/javascript"> document.addEventListener("DOMContentLoaded", function() {
// 정규 표현으로 수치 + 영소문자 패턴 var re = /([0-9]+)([a-z]+)/g; // 정규 표현식 객체를 리터럴로 만들어서 변수 str에 대입 // [ ]괄호가 2번 사용되었는데 각각 부분 패턴을 의미한다.
// 대상 문자열 var str = "111jpy,8usd,xxx"; // 정규 표현식으로 확인하고 싶은 문자열을 변수 str에 대입
// 1회 실행 console.log(re.exec(str));
// 2회 실행 console.log(re.exec(str));
// 3회 실행 console.log(re.exec(str)); }); </script> </head> </html> |
수행결과는 아래와 같다.
정규 표현식에 g플래그를 지정하면 문자열 안에 일치하는 모든 패턴을 포함하게 된다.
예제에서는 exec( )를 여러 번 호출하며 일치하는 패턴을 차례로 출력하고 있다.
그런데 exec( ) 메서드는 test( )나 search( )에 비해 실행 속도가 느리므로 패턴의 존재 여부만을 확인하고 싶은 경우에는
사용을 권장하지 않는다.
#03. RegExp.test( ) 메서드
RegExp.test( ) 메서드는 인자로 주어진 문자열에 정규 표현식에 해당하는 문자열 패턴이 있는지 여부를 조사한다.
결과로 true나 false의 boolean 값을 반환한다.
<html> <head> <title>:: RegExp.exec() 메서드 ::</title> <script type="text/javascript"> document.addEventListener("DOMContentLoaded", function() {
// 우편번호 nnn-nnn 패턴 var re = /^\d{3}-\d{3}$/;
// 정규표현식으로 패턴이 일치하는지 확인 console.log("123-123 : ", re.test("123-123")); console.log("12-123 : ", re.test("12-123")); // 숫자의 자릿수가 부족해 false console.log("440-001 : ", re.test("440-001")); console.log("aaa-bbb : ", re.test("aaa-bbb")); // 숫자가 아닌 알파벳으로 구성되어 있기때문에 false }); </script> </head> </html> |
수행결과는 아래와 같다.
#04. String.match( ) 메서드
String 객체에 관련된 match( ) 메서드는 인자로 전달받은 정규 표현식 패턴을 조사한다.
정규표현식에 g 플래그를 포함하지 않은 경우는 RegExp.exec( ) 메서드와 같은 결과를 반환하지만.
g 플래그를 포함한 경우에는 일치하는 부분을 모두 포함한 배열을 반환한다.
일치하는 패턴이 없으면 null을 반환한다.
g 플래그 여부에 따른 결과의 차이를 유념해서 보도록 한다.
<html> <head> <title>:: String.match() 메서드 ::</title> <script type="text/javascript"> document.addEventListener("DOMContentLoaded", function() {
// 대상 문자열 var str = "v=20, n=40, c=30";
// 숫자 패턴 검색 console.log("숫자 패턴 검색 : ", str.match(/[0-9]+/));
// 모든 숫자 패턴을 검색 console.log("모든 숫자 패턴 검색 : ", str.match(/[0-9]+/g));
// 변수 = 숫자의 조합을 검색 console.log("변수 = 숫자의 조합을 검색 : ", str.match(/\w+=\d+/g)); }); </script> </head> </html> |
수행결과는 아래와 같다.
#05. String.search( ) 메서드
대상 문자열에 정규 표현식에 해당하는 패턴이 있는지 확인할때 사용한다.
정규 표현식에 해당하는 패턴이 발견되면 발견된 인덱스를 돌려주고, 없으면 -1을 반환한다.
<html> <head> <title>:: String.search() 메서드 ::</title> <script type="text/javascript"> document.addEventListener("DOMContentLoaded", function() { // 대상 문자열 var str = "zip:999-999, mail:a@example.com"; // 우편번호 검색 console.log("우편번호 검색 : ", str.search(/\d{3}-\d{3}/));
// 이메일 검색 console.log("이메일 검색 : ", str.search(/\w+\@\w+\.\w+/));
// URL 검색 console.log("URL 검색 : ", str.search(/https?:\/\//)); }); </script> </head> </html> |
수행결과는 아래와 같다.
#06. String.replace( ) 메서드
정규 표현식으로 치환을 수행하는 replace( ) 메서드는 두 가지 형태의 사용법이 있다.
① 정규 표현식을 이용한 치환
str.replace( 정규 표현식, 치환될 문자열 ) |
실제 코드를 통해 사용법을 파악하자.
<meta charset="utf-8"> <html> <head> <title>:: String.replace() 메서드 ::</title> <script type="text/javascript"> document.addEventListener("DOMContentLoaded", function() { // 대상 문자열 var str = "Today 10per OFF";
// 숫자를 30으로 치환 console.log("숫자를 30으로 치환 : ", str.replace(/\d+/, "30"));
// 숫자와 이어지는 영문 소문자까지 치환 console.log("숫자와 이어지는 영문 소문자까지 치환 : ", str.replace(/\d+[a-z]+/, "500won"));
// 알파벳을 전부 지우고 숫자만을 남긴다. console.log("알파벳을 전부 지우고 숫자만을 남김 : ", str.replace(/[a-zA-Z]+/g, "")); }); </script> </head> </html> |
치환될 문자열 내에 특수한 치환 패턴을 포함할 수 있다.
▼ 치환될 문자열에 사용되는 특수 기호 |
|
패턴 |
설 명 |
$$ |
· 문자 '$'를 삽입한다. |
$& |
· 매치된 부분 문자열을 삽입한다. |
$` |
· 매치된 부분 문자열 직전의 문자열을 삽입한다. |
$' |
· 매치된 부분 문자열 직후의 문자열을 삽입한다. |
$1$2$3… |
· 괄호로 묶인 부분 문자열을 삽입한다. |
<html> <head> <title>:: String.replace() 메서드 ::</title> <script type="text/javascript"> document.addEventListener("DOMContentLoaded", function() { // 대상 문자열 var str = "Today 10per OFF";
// 숫자를 30으로 치환 console.log("숫자를 30으로 치환 : ", str.replace(/\d+/, "30"));
// 숫자와 이어지는 영문 소문자까지 치환 console.log("숫자와 이어지는 영문 소문자까지 치환 : ", str.replace(/\d+[a-z]+/, "500won"));
// 알파벳을 전부 지우고 숫자만을 남긴다. console.log("알파벳을 전부 지우고 숫자만을 남김 : ", str.replace(/[a-zA-Z]+/g, "")); }); </script> </head> </html> |
② 콜백함수를 사용하여 치환
콜백 함수를 사용하는 replace( ) 메서드의 사용법을 알아보자.
str.replace( 정규표현식, 치환 함수 ) |
문자열 str안의 정규 표현식에 일치하는 문자열에 대해 치환 함수가 수행된다.
그러면 수행된 치환 함수의 반환 값으로 치환된다.
직접 프로그램으로 확인해 보자.
다음은 영어 단어의 소문자를 대문자로 치환하는 예이다.
<html> <head> <title>:: String.replace() 메서드 ::</title> <script type="text/javascript"> document.addEventListener("DOMContentLoaded", function() { // 대상 문자열 var str = "piano GUITAR";
// 대소문자를 소문자로 치환 var txt = str.replace(/[a-z]+/g, function(v) {
return v.toUpperCase(); });
document.getElementById("instrument").innerHTML = txt; }); </script> </head> <body> <h1 id="instrument"></h1> </body> </html> |
위 프로그램을 실행하면 "PLANO GUITAR"라고 표시된다.
콜백 함수를 사용하면 단순한 치환이 아닌 복잡한 치환까지도 자유롭게 프로그래밍 할 수 있다.
아래 코드는 텍스트 중에서 숫자를 찾아서 세금에 해당하는 값에 8%를 더한 값으로 치환하는 프록램이다.
<html> <head> <title>:: String.replace() 메서드 ::</title> <script type="text/javascript"> document.addEventListener("DOMContentLoaded", function() { // 대상 문자열 var str = "price : 100 won";
// 금액에 해당하는 문자열을 찾아서, 세금 8%를 더하여 치환 var txt = str.replace(/\d+/, function(v) { v = parseInt(v); return Math.ceil(1.08 * v); });
document.getElementById("price").innerHTML = txt; }); </script> </head> <body> <h1 id="price"></h1> </body> </html> |
프로그램을 실행하면 "price : 108 won"으로 표시된다.
'JavaScript & jQuery > JavaScript' 카테고리의 다른 글
[JavaScript] 스크립트로 QR코드 스캔하고 데이터 읽기 (43) | 2019.06.13 |
---|---|
[JavaScript] 셀렉트 박스의 시간 자동 비교 및 선택기능 (0) | 2019.05.23 |
[JavaSccript] 콤마(,)로 구분된 문자를 배열로 합치기 (0) | 2019.02.24 |
[JavaScript] 배열의 값을 콤마(,)로 분리하기 (0) | 2019.02.24 |
[JavaScript] GMT, 그리니치 표준시 구하기 (2) | 2019.01.25 |
[Node.js] node.js로 PDF 문서 생성하기[Node.js] node.js로 PDF 문서 생성하기
Posted at 2019. 4. 11. 19:58 | Posted in Node.js참고 : 자바스크립트와 Node.js를 이용한 웹 크롤링 테크닉
■ PDFKit을 이용한 PDF문서 출력
node.js를 활용하여 PDF 문서를 출력해 보려고 한다.
PDFKit이라고 하는 라이브러리가 node.js 용으로 공개되어 있어 PDF를 쉽게 만들어 낼 수 있다.
npm을 사용하여 PDFKit을 설치한다.
$ npm install pdfkit |
|
설치가 완료 되었다면 아래 코드와 같이 PDF 파일을 만들어 보도록 하자.
# 소스코드
pdfkit-test.js |
// 모듈로드 const pdfDocument = require('PDFKit'); const fs = require("fs"); // 도큐먼트 생성 let doc = new pdfDocument(); // 출력파일 지정 doc.pipe(fs.createWriteStream("output.pdf")); // 폰트지정 - 나눔고딕 사용(한글폰트를 사용해야 한다.) doc.font("NanumGothic.ttf"); // 문자표시 doc.fontSize(30).text("Wicked_MISO", 90, 100); doc.fontSize(20).text("사악미소", 100, 180); // 도형 그리기 doc.save() .moveTo(80, 80) .lineTo(300, 80) .lineTo(300, 150) .lineTo(80, 150) .lineTo(80, 80) .stroke("#0000FF"); // 페이지 추가 doc.addPage(); // 도형 그리기 doc.save() .moveTo(100, 150) .lineTo(100, 250) .lineTo(200, 250) .fill("#FF0000"); // 종료 doc.end(); |
.fongSize( ) : 크기를 지정하고
.text( ) : 출력할 텍스트와 표시 위치를 지정한다
화면의 왼쪽 위 좌표가 (0, 0)이고 밑으로 내려갈 수록 수치가 높아진다.
메소드 |
의 미 |
.moveTo(x, y) |
· 도형의 시작 좌표를 지정한다. |
.lineTo(x, y) |
· 이전 좌표에서(x, y)로 선을 긋는다. |
.stroke(color) |
· 지정한 좌표들에 선을 긋는다. |
.fill(color) |
· 지저안 좌표들을 칠한다. |
# 출력결과
$ node pdfkit-test.js |
■ PDFKit을 이용한 PDF문서 출력
# 소스코드
pdfkit-graph.js |
// 모듈로드 const pdfDocument = require("PDFKit"); const fs = require("fs"); // 그래프 데이터 var data = [ { label:"트와이스", value:96 } , { label:"레드벨벳", value:90 } , { label:"블랙핑크", value:74 } , { label:"여자친구", value:85 } , { label:"러블리즈", value:93 } , { label:"모모랜드", value:89 } , { label:"아이즈원", value:69 } , { label:"우주소녀", value:71 } ]; // 도큐먼트 var doc = new pdfDocument(); var page_w = doc.page.width; var page_h = doc.page.height; // 출력파일 설정 doc.pipe(fs.createWriteStream("output-graph.pdf")); // 폰트 설정 doc.font("NanumGothic.ttf"); // 타이틀 표시 doc.fontSize(30).text("걸그룹", 20, 20); // 그래프 그리기 var margin = 20; var g_w = page_w - margin * 2 -50; var g_x = margin + 50; var y = 80; var wpx = g_w / 100; for(var i = 0; i < data.length; i++) {
var value = data[i].value; var label = data[i].label;
doc.save() .rect(g_x, y, wpx * value, 20) .fill((i % 2) ? "blue" : "red");
doc.fontSize(10) .fillColor("black") .text(label, 30, y + 5) .text(value, g_x + 5, y + 5);
y += 20 + 5; } // 편집종료 doc.end(); |
# 출력결과
$ node pdfkit-graph.js |
여기서는 doc.rect( ) 메소드를 사용하여 각 값의 막대 그래프를 그리고 있다.
PDFKit이 외에도 여러가지 도형을 그릴 수 있는 메소드가 준비되어있다.
메소드 이름 |
설명 |
.rect(x, y, width, height) |
· 직사각형 그리기 |
.roundRect(x, , width, height, conerRadius) |
· 모퉁이가 둥근 사각형 그리기 |
.ellipse(cx, cy, radiusX, radiusY) |
· 타원 그리기 |
.circle(cx, cy, radius) |
· 원 그리기 |
.poygon(points...) |
· 다각형 그리기 |
.path(pathData) |
· SVG의 path 지정하여 그리기 |
'Node.js' 카테고리의 다른 글
[Node.js] Terminal 명령을 수행하는 node_cmd 모듈 (0) | 2019.05.10 |
---|---|
[Node.js] SCRAPING을 위한 cheerio 모듈과 cheerio-httpcli 모듈 (0) | 2019.05.08 |
[Node.js] package.json과 npm i 명령 (0) | 2019.04.02 |
[Node.js] Node.js 채팅방 제작 (0) | 2019.02.12 |
[Node.js] PM2 프로세스 관리 도구 (0) | 2019.01.22 |
[Node.js] 일정 시간마다 실행되는 스케줄러[Node.js] 일정 시간마다 실행되는 스케줄러
Posted at 2019. 4. 10. 11:39 | Posted in 카테고리 없음
참고 : https://www.npmjs.com/package/node-schedule
■ 일정 시간마다 실행을 반복하는 node-schedule 모듈
Node.js의 외부모듈중 하나인 node-schedule를 사용하여
일정시간마다 실행되는 프로그램을 만들어 보려 한다.
$ npm install node-schedule |
var schedule = require("node-schedule"); var num = 0; schedule.scheduleJob({second:1}, function() { console.log("10초에 한번씩 실행됩니다. : " + num); num++; }); |