git 소개
2018-12-31 00:00:00 +0000Svn과 Git의 차이점
버전 관리란?
- 버전 관리 시스템은 파일의 변화를 시간에 따라 기록하여 과거 특정 시점의 버전을 다시 불러올 수 있는 시스템( git 설명 참고 링크 )
중앙집중식 관리 vs 분산관리
- svn의 중앙 집중식 버전 관리 시스템(Centralized Version Control System; CVCS)
- git은 분산 버전 관리 시스템(Distributed Version Control System; DVCS)
- 중앙집중식 시스템은 중앙server가 하나 존재. 중앙server에서 version을 관리. 단점은 중앙server에 문제가 생기면 파일 올리기, 파일 받기 등의 기능을 수행할 수 없음
- 분산 버전 시스템은 저장소를 통째로 복사.(checkout) 그래서 서버에 문제가 생겨도 언제든 복구가 가능
파일 관리
- svn은 파일 변화가 있을 때 마다 version을 붙여서 전체 파일을 관리함. 즉 변경되지 않은 파일도 관리
- git은 파일 변화가 없으면 이전 파일 링크만 가지고 있음. 파일을 들고있지 않기때문에 무게도 가볍다
작업 속도
- svn은 모든 작업이 중앙서버를 통해야 가능하다.그래서 commit, push 시 속도가 느리다
- git은 checkout할 때 저장소를 통째로 복사하고 거의 대다수의 작업을 local에서 한다(commit, branch 등.. push, pull 등 중앙 서버를 통하는 것은 느리다)그래서 인터넷이 없어도 작업할 수 있다
파일,프로젝트 상태 분류
- git은 파일을 3가지 상태로 분류한다
- Modified: 파일이 local에서 수정되었다
- Staged: 현재 수정한 파일을 곧 commit할 것이다
- Committed: 파일이 local에 저장되었다
- 또한 프로젝트도 3단계로 분류한다
- working directory : 수정한 파일들이 있는 디렉터리
- staging area : 곧 commit할 데이터 정보를 저장.
- git directory : git이 프로젝트의 메타데이터와 객체 데이터 베이스를 저장하는 곳(.git) commit버튼을 눌러 자신의 local 저장소에 변경사항을 반영하였다
node.js 개발환경 구축
2018-12-30 00:00:00 +0000Nodejs 개발환경 구축
Node.js란
- 브라우저가 아닌 서버 환경에서 javascript를 사용할 수 있게 해줌
- 이벤트방식과 비동기식. 어떤 이벤트가 발생할 때 처리하며, 처리를 하기 위해 서버가 멈추지 않음(callback함수)=>속도향상
Node.js 설치
download url : https://nodejs.org/ko/
Node.js 예제
- server.js 파일을 만들고 아래와 같이 소스코드를 작성한다
- 작성 후 cmd 창을 열고 해당 소스코드가 있는 폴더로 이동한다
- cmd 창에 node server.js 라고 입력한다
- http://127.0.0.1:52273/ 주소로 들어가면 Hello World…! 라는 글을 볼 수 있다
// 모듈 추출
var http = require('http');
// 웹 서버를 만들고 실행
http.createServer(function(request, response){
response.writeHead(200, {'Content-Type': 'text/html'});
response.end('<h1>Hello World...!</h1>');
}).listen(52273, function(){
console.log('Server running at http://127.0.0.1:52273/');
});
node.js 기본 내장 모듈
2018-12-30 00:00:00 +0000기본 내장 모듈
- 아래 url에서 node.js에서 사용하는 기본 내장 모듈 api를 확인할 수 있다
- https://nodejs.org/api/
os모듈
- node.js 서버가 실행되고 있는 운영체제에 대한 정보
const os = require('os');
console.log(os.hostname()); // 운영체제의 호스트 이름 리턴
console.log(os.type()); // 운영체제의 이름 리턴
console.log(os.platform()); // 운영체제의 플랫폼 리턴
console.log(os.arch()); // 운영체제의 아키텍처 리턴
console.log(os.release()); // 운영체제의 버전 리턴
console.log(os.uptime()); // 운영체제가 실행된 시간 리턴
console.log(os.loadavg()); // 로드 에버리지 정보를 담은 배열 리턴
console.log(os.totalmem()); // 시스템의 총 메모리 리턴
console.log(os.freemem()); // 시스템의 사용 가능한 메모리 리턴
console.log(os.cpus()); // CPU의 정보를 담은 객체 리턴
console.log(os.networkInterfaces()); // 네트워크 인터페이스의 정보를 담은 배열 리턴
url 모듈
- url 분석 및 구문 분석을 위해서 사용
var url = require('url');
// parse는 url문자열을 url 객체로 변환해서 리턴
var obj = url.parse('https://parkwonhui.github.io/');
console.log(obj);
Query String 모듈
- url객체와 쿼리에 관련된 모듈
- 아래 예제는 url 중에 query만 뽑아내는 예제이다
- 그래서 쿼리가 있는 Obj1은 쿼리정보가 출력되지만 쿼리정보가 없는 Obj2는 아무것도 출력되지 않는다
//모듈을 추출
var url = require('url');
var querystring = require('querystring');
// parse:쿼리문자열을 쿼리 객체로 리턴
var parsedObj1 = url.parse('http://www.hanbit.co.kr/store/books/look.php?p_code= B4250257160');
var parsedObj2 = url.parse('https://parkwonhui.github.io/java/2018/12/28/java-javabean.html');
console.log(querystring.parse(parsedObj1.query));
console.log(querystring.parse(parsedObj2.query));
Util 모듈
- node.js에 보조적인 기능을 모아둠
var util = require('util');
// 매개변수로 입력한 문자열을 조합해 리턴
var data = util.format('%d + %d = %d', 52, 273, 52+273);
console.log(data);
crypto 모듈
- 해시(전자지문)생성과 암호화를 수행하는 모듈
- 아래 예제는 문자열을 암호화해서 해시값을 출력하는 예제
var crypto = require('crypto');
// 해시생성
var shasum = crypto.createHash('sha256');
shasum.update('werwetg'); // 문자열에 따라 해시 값이 달라진다
var output = shasum.digest('hex');
console.log('crypto_hash:', output);
- 다음 예제는 암호화 및 복호화를 하는 예제
var crypto = require('crypto');
var key = 'abce1123123';
var input = 'password';
var cipher = crypto.createCipher('aes192', key);
cipher.update(input, 'utf8', 'base64');
var cipheredOutput = cipher.final('base64');
var decipher = crypto.createDecipher('aes192', key);
decipher.update(cipheredOutput, 'base64', 'utf8');
var decipheredOutput = decipher.final('utf8');
console.log(input); // 암호화 전
console.log(cipheredOutput); // 암호화 후
console.log(decipheredOutput); // 복호화
File System 모듈
| 객체 이름 | 설명 | |:——–:|:——–:| | readFile(file,encoding, callback) | 파일을 비동기적으로 읽음 | | readFileSync(file, encoding) | 파일을 동기적으로 읽음 | | writeFile(file, data, encoding, callback) |파일을 비동기적으로 씀 | | writeFileSync(file, data, encoding) | 파일을 동기적으로 씀 |
- 파일을 동기적으로 읽는다.
- 그래서 파일 내용다음에 1이 출력된다
var fs = require('fs'); var text = fs.readFileSync('ttt.txt', 'utf8'); console.log(text); console.log('1');
- 비동기적 파일 읽기. readFile 함수를 만나면 이벤트 리스너에 등록하고 파일을 읽으면 이벤트 리스너를 실행
- 비동기적이므로 파일을 읽으면서 프로그램을 실행한다.
- 그래서 1다음에 파일 내용이 출력된다
var fs = require('fs');
fs.readFile('ttt.txt', 'utf8', function(error, data){
console.log(data);
});
console.log('1');
node.js의 전역 객체
2018-12-30 00:00:00 +0000Node.js의 전역 객체
전역변수
- node.js 이므로 최상위 객체 window는 없음
- 전역변수, 전역 함수를 가짐.
- 전역 변수 | 객체 이름 | 설명 | |:——–:|:——–:| | __filename | 현재 실행 중인 코드의 파일 경로를 나타냅니다 | | __dimame | 현재 실행 중인 코드의 폴더 경로를 나타냅니다|
- 사용법
console.log('filename:', __filename);
console.log('dirname:', __dirname);
전역 객체
| 객체 이름 | 설명 | |:——–:|:——–:| | console | 콘솔 화면과 관련된 기능을 다루는 객체 | | exports | 모듈과 관련된 기능을 다루는 객체 | | process | 프로그램과 관련된 기능을 다루는 객체 |
console 객체
- 지정한 매개변수 이외의 내용은 그냥 출력된다
- ‘%j’는 json 데이터가 들어간다
console.log('숫자: %d + %d = %d', 273, 52, 273 + 52,'가나다라라');
console.log('문자열: %s', 'Hello World..!', '특수기호와 상관 없음');
console.log('JSON: %j', {name:'RintTanTt'});
- 시간측정 예제
- ‘a’는 타이머의 이름이라고 생각하면 된다(아무 글자를 넣어도 됨)
// 시간측정 시작
console.time('a');
var output = 1;
for(var i = 1; i<=10; ++i){
output *= 1;
}
console.log('Result:', output);
// 시간 측정을 종료합니다
console.timeEnd('a');
- 출력 글자 색상을 바꿀 수도 있다
// 출력합니다.
console.log('\u001b[31m', 'Hello World .. !');
console.log('\u001b[32m', 'Hello World .. !');
console.log('\u001b[33m', 'Hello World .. !');
console.log('\u001b[34m', 'Hello World .. !');
console.log('\u001b[35m', 'Hello World .. !');
console.log('\u001b[36m', 'Hello World .. !');
console.log('\u001b[1m');
console.log('\u001b[31m', 'Hello World .. !');
console.log('\u001b[32m', 'Hello World .. !');
console.log('\u001b[33m', 'Hello World .. !');
console.log('\u001b[34m', 'Hello World .. !');
console.log('\u001b[35m', 'Hello World .. !');
console.log('\u001b[36m', 'Hello World .. !');
// 초기화합니다.
console.log('\u001b[0m');
process 객체
- 프로그램과 관련된 정보를 나타내는 객체
속성 이름 | 설명 |
---|---|
argv | 실행 매개변수를 나타냄 |
env | 컴퓨터 환경과 관련된 정보를 나타냄 |
version | Node.js 버전을 나타냄 |
verisons | Node.js와 종속된 프로그램 버전을 나타냄 |
arch | 프로세서의 아키텍처를 나타냄 |
platform | 플랫폼을 나타냄 |
- 매개변수를 차례대로 출력하고 ‘–exit’ 문자열을 찾으면 입력 시간 후에 프로그램이 종료되도록 만든 예제
// process.argv
process.argv.forEach(function(item, index){
// 출력합니다
console.log("메모리 사용정보(객체반환):",process.memoryUsage());
console.log(index+':'+typeof(item)+':',item);
// 실행 매개변수에 --exit가 있을 때
console.log("프로그램이 실행된 시간:",process.uptime());
if('--exit' == item){
// 다음 실행 매개변수를 얻음
var exitTime = Number(process.argv[index+1]);
// 일정 시간 후 프로그램을 종료
setTimeout(function(){
process.exit();
}, exitTime);
}
});
exports 객체와 모듈
- nodejs는 모듈을 사용하여 기능을 확장
- 무듈은 기능을 쉽게 사용하고자 메서드와 속성을 미리 정의해서 모아놓은 것
- 다음 예제는 main.js가 module.js 의 기능을 불러와 사용
- 모듈 추출 시 require 함수 사용
- module.js
// abs:절대값을 구함
exports.abs = function(number){
if(0 < number)
return number;
else
return -number;
};
//원의 넓이를 구하는 메서드
exports.circleArea = function(radius){
return radius * radius * Math.PI;
}
- main.js
// 모듈을 추출
var module = require('./module.js');
// 모듈을 사용
console.log('abs(-273)=%d', module.abs(-273));
console.log('circleArea(3) = %d', module.circleArea(3));
node.js http module
2018-12-30 00:00:00 +0000HTTP 모듈
HTTP
- TCP/IP를 기반으로 하는 프로토콜
- 웹서버는 클라이언트에서 요청하면 서버에서 응답을 주는 형식으로 되어있다
server 객체
- http 모듈에서 가장 중요한 객체는 server객체
- http 모듈의 createServer() 메서드를 사용하면 server 객체 생성
- 아래 예제는 서버가 응답하지 않으므로 페이지에 내용을 표시하지 않고 계속 응답만 기다린다
var http = require('http');
// 웹 서버를 생성합니다.
var server = http.createServer();
// 웹 서버를 실행합니다.
server.listen(52273);
메서드 이름 | 설명 |
---|---|
request | 클라이언트가 요청할 때 발생하는 이벤트 |
connection | 클라이언트가 접속할 때 발생하는 이벤트 |
close | 클라이언트가 종료될 때 발생하는 이벤트 |
checkContinue | 클라이언트가 지속적인 연결을 하고 있을 때 발생하는 이벤트 |
upgrade | 클라이언트가 HTTP 업그레이드를 요청할 때 발생하는 이벤트 |
clientError | 클라이언트에서 오류가 발생할 때 발생하는 이벤트 |
var http = require('http');
// server 객체를 생성
var server = http.createServer();
// server 객체에 이벤트 연결
server.on('request', function(code){
console.log('Request On');
});
server.on('connection', function(code){
console.log('Connection On');
});
server.on('close', function(code){
console.log('Close On');
});
// listen()메서드 실행
server.listen(52273);
response 객체
| 메서드 이름 | 설명 | |:——–:|:——–:| | writeHead(statusCode, object) | 응답 헤더를 작성 | | end([data], [encoding]) | 응답 본문을 작성|
- 클라이언트가 서버 응답을 받으면 페이지가 정상적으로 띄워짐
// 웹서버를 생성하고 실행합니다
require('http').createServer(function(request, response){
response.writeHead(200, {'Content-Type':'text/html'});
response.end('<h1>Hello World..!</h1>');
}).listen(60001);
File System 모듈을 사용한 HTML 페이지 제공
- javascript 파일 위에서 모든 html 페이지를 문자열로 작성하는 것은 불가능
- file System 모듈을 사용하여 서버에 존재하는 HTML 페이지를 클라이언트에 제공
- html과 js 파일을 생성
// 모듈을 추출합니다.
var fs = require('fs');
var http = require('http');
// 서버를 생성하고 실행합니다.
http.createServer(function (request, response) {
// HTML 파일을 읽습니다.
fs.readFile('6-8.html', function (error, data) {
response.writeHead(200, { 'Content-Type': 'text/html' });
response.end(data);
});
}).listen(52273, function () {
console.log('Server Running at http://127.0.0.1:52273');
});
-html
<!DOCTYPE html>
<html>
<head>
<title>Index</title>
</head>
<body>
<h1>Hello Node.js</h1>
<h2>Author. RintIanTta</h2>
<hr />
<p>Lorem ipsum dolor sit amet.</p>
</body>
</html>
이미지와 음악파일 제공
- 60001번 포트로는 이미지 파일 제공. 60002번 포트는 음악 파일 제공 ~~~ var fs = require(‘fs’); var http = require(‘http’);
// 60001번 포트에 서버를 생성하고 실행 http.createServer(function(request, response){ // 이미지 파일 읽기 fs.readFile(‘Chrysanthemum.jpg’, function(error, data){ response.writeHead(200, {‘Content-Type’:’image/jpeg’}); response.end(data); }); }).listen(60001, function(){ console.log(‘Server Running at http://127.0.0.1:60001’); });
// 60002번 포트에 서버를 생성하고 실행 http.createServer(function(request, response){ // 음악 파일을 읽습니다 fs.readFile(‘Kalimba.mp3’, function(error, data){ response.writeHead(200, {‘Content-Type’:’audio/mp3’}); response.end(data); }).lesten(60002, function(){ console.log(‘Server Running at http://127.0.0.1:60002’); }); });
### 쿠키 생성
- 쿠키는 key, value로 이루어진 데이터
- 이름, 값 파기 날짜, 경로 정보 등을 가지고 있다
- 일정 기간동안 데이터를 저장할 수 있으므로 로그인을 유지할 때 사용
- response 객체의 Set-Cookie 속석으로 쿠기를 할당할 수 있음
- 아래 예제는 쿠키를 출력하는 예제. 첫 접속 시에는 쿠키가 없으므로 undefined를 출력하지만 두번째 부터는 쿠키의 내용을 출력한다
var http = require(‘http’); http.createServer(function(request, response){ // 변수를 선언 var date = new Date(); date.setDate(date.getDate() + 7);
// 쿠키 입력 response.writeHead(200, { ‘Content-Type’:’text/html’, ‘Set-Cookie’:[‘breakfast = toast;Expires = ‘+ date.toUTCString(), ‘dinner=chicken’] }); // 쿠키를 출력합니다 response.end(‘<h1>‘+request.headers.cookie + ‘</h1>’); }).listen(60001, function(){ console.log(‘server Start’); });
### 페이지 강제 이동
- 네이버 로그인 시 흰화면으로 이동후 재빨리 메인화면으로 이동
- 이렇게 페이지 강제 이동이 발생한다
- 사용법은 응답 헤더의 Location 속성에 이동할 url을 넣어주면 된다
| 응답번호 | 설명 |
|:--------:|:--------:|
| 1XX | 처리중 |
| 2XX | 성공 |
| 3XX | 리다이렉트 |
| 4XX | 클라이언트 오류 |
| 5XX | 서버 오류 |
var http = require(‘http’);
http.createServer(function(request, response){ response.writeHead(302, {‘Location’:’https://parkwonhui.github.io/’}) response.end(); }).listen(60001, function(){ console.log(‘server Start’); });
### request 객체
- 사용자가 요청한 페이지를 적절하게 제공해주고, 요청 방식에 따라서 페이지를 구분할 수 있음
- url 모듈을 사용해 pathname 추출 후 조건문으로 페이지를 따로 처리
| 속성 이름 | 설명 |
|:--------:|:--------:|
| method | 클라이언트의 요청 방식을 나타냄 |
| url | 클라이언트가 요청한 URL을 나타냄 |
| headers | 요청 메시지 헤더를 나타냄 |
| trailers | 요청 메시지 트레일러를 나타냄 |
| httpVersion | http 프로토콜 버전을 나타냄 |
var http = require(‘http’); var fs = require(‘fs’); var url = require(‘url’);
http.createServer(function(request, response){ // 변수를 선언 var pathname = url.parse(request.url).pathname; // 페이지를 구분 if(‘/’ == pathname){ fs.readFile(‘6-17.html’, function(error, data){ response.writeHead(200, {‘Content-Type’:’text/html’}); response.end(data); }); }else if(‘/OtherPage’ == pathname){ fs.readFile(‘6-18.html’, function(error, data){ response.writeHead(200, {‘Content-Type’:’text/html’}); response.end(data);
}); }
}).listen(60001, function(){ console.log(‘server Start’); }); ~~~
Posts
Interceptor(인터셉터)
Android Studio Install
계층형 게시판
VirtualBox Ubuntu 18.04.2 LTS
TransactionAwareDataSourceProxy Error
Java Coding Conventions
Java Long과 long의 차이
Mybatis 객체 안에 객체 매핑
JavaConfig mariadb 연결
DataTable
관리자 페이지
MappingJackson2JsonView
Spring Javaconfig
게시판 만들기-제품 등록
게시판 만들기-제품 페이지 제작
게시판 만들기-회원탈퇴 및 게시판 삭제 플래그 추가
footer 하단에 고정시키기
bootstrap4 사용법
Spring 데이터 검증 @Valid, BindingResult
brackets 실시간 미리보기
Spring 기본설정(pom.xml, web.xml, encoding)
Vue.js computed, methods, watch
javascript onkeyup
Maria DB Incorrect string value Error
javascript 암호화(md5, base64)
Vue.js template
Vue.js 소개
Nexacro 설명
ControllerAdvice
Batch
html 페이지 로딩 순서
소수구하기(PrimeNumber)
최소공배수,최대공약수
Stream
Lambda(람다식)
inner class(내부 클래스)
final 키워드
file upload
파이썬 빅 데이터 K-평균(K-means)
아나콘다(Anaconda), 주피터 개발환경 세팅
텐서플로우(TensorFlow) 아키텍쳐 및 Session
텐서플로우(TensorFlow)상수, 변수, 함수
머신러닝 기초
한글 리스트 오름차순, 내림차순
연속된 글자의 갯수 출력
java spring5 프로젝트 설정
restController
spring 세팅 및 기본설정
mybatis trim
jquery datepicker
ajax로 데이터 전달/응답 받는법
mybatis error
mybatis 게시판 만들기 순서
Java Jsp Mybatis Dynamic Query
mybatis
git 소개
node.js 개발환경 구축
node.js 기본 내장 모듈
node.js의 전역 객체
node.js http module
node.js event
jdbc
자바빈
jsp, servlet 정리
java null object pattern
다음지도 key 등록(kakao map)
공공 데이터 open api
facebook login api
sourcetree 사용법
JavaScript event3
JavaScript jquery
JavaScript dom
JavaScript ajax
JavaScript 이벤트2
JavaScript 캡슐화
JavaScript Array,내장객체
JavaScript var
JavaScript 객체,생성자
JavaScript 함수,클로저
JavaScript Event
javascript eclipse 자동완성(with tern)
CSS position
HTML5,CSS 선택자
자바 시간 측정
git,eclipse 연동
HTML 기초 정리
Eclipse Web 환경세팅
피보나치의 수
Oracle 반복문,커서,예외,저장 서브프로그램
Oracle PL/SQL
Oracle 다중쿼리(Multiple row query)
Oracle 인덱스, 뷰, 시퀀스, 트랜잭션, 세션 정리
Oracle JOIN 정리
Oracle DDL, DML 정리
Oracle 문자열 함수 정리
Oracle 숫자,날짜,자료형 변환 함수 정리
Oracle 제약조건 정리
Oracle 기초 쿼리 정리
문제2775
DFS
junit
json
algorithmus basic
circular queue(원형큐)
binary search(이진탐색)
port forwarding(포트포워딩)
kakao chatbot(카카오 챗봇)
java io
sort comparable, comparator
Unresolved compilation problem
ArrayList, HashMap
Regular(정규표현식)
Enum Class
String Function
refactoring 이란(상수,제어플래그,assert)
reference,abstract 정리
FileNotFoundException Solve
static
Thread Synchronization(스레드동기화,원자성)
Java Exception(예외처리)
Java 생성자, this, super
roomnum
BeeHouse
Git Reset, Revert
Git Log
Array
stack
pyramid draw
Star Draw(별 그리기4)
Star Draw(별 그리기3)
Star Draw(별 그리기2)
Star Draw(별 그리기1)
Loop(While, For)
자바 데이터 타입, 데이터 연산
시계방향 달팽이 그리기
정수값의 짝수,홀수 갯수 구하기
java, Scanner 정리
draw dog
subscribe via RSS