안녕세계
[SK고용디딤돌] 프로젝트에 필요한 정보 본문
[SK고용디딤돌] 프로젝트에 필요한 정보
Junhong Kim 2016. 8. 25. 01:40[fulltext search_engine] 상위 버전의 mysql만 가능
select id, title, content
from article
where match(title, content) against('머신러닝'); // 타이틀과 내용에서 머신러닝 들어간거
select id, title, content
from article
where match(title, content) against('"머신러닝" - 올림픽' in boolean mode); // 올림픽은 빼고
select id, title, content
from article
where match(title, content) against('머신러닝 + "구글이 자연어를 이해"' in boolean mode); // 구글이 자연어를 이해 들어간거
단어일 경우 구문기호 안해도됨, 구문일경우 " " 쌍따움표로 표시
RDS - > paprameter groups -> default.mysql5.7 아무것도 없을땐 파라미터 셋팅 볼 수 있음
innodb_ft를 검색
[테일 윈32]
https://sourceforge.net/projects/tailforwin32/files/latest/download?source=directory
[모멘트 타임존]
npm install moment-timezone
var CronJob = require('cron').CronJob;
var moment = require('moment-timezone');
console.log(moment().add(30, 'm').format('YYYY-MM-DD hh:mm:ss'));
var timeZone = "Asia/Seoul";
var future = moment().tz(timeZone).add(1, 'm');
console.log(future.format('YYYY-MM-DD hh:mm:ss'));
console.log(future.month() + 1);
console.log(future.date());
console.log(future.hour());
console.log(future.minute());
console.log(future.second());
var crontime = future.second() + " " +
future.minute() + " " +
future.hour() + " " +
future.date() + " " +
future.month() + " "
future.day();
// var crontime = '30 * * * * *'; // 매초, 매분, 매시, 매일, 매월, 매주
var job = new CronJob(crontime, function() {
console.log('*');
job.stop();
}, function() {
process.exit(0);
}, false, timeZone);
job.start();
//--------------------------------------------------
var timeZone = 'Asia/Seoul'
var crontime_min50 = '00 50 9-17 * * 1-5';
var crontime_1215 = '00 15 12 * * 1-5';
var crontime_1755 = '00 55 17 * * 1-5';
var job_min50 = new CronJob(crontime_min50, function() {
console.log('눈의 피로를 풀어주세요');
}, true, timeZone);
var job_1215 = new CronJob(crontime_1215, function() {
console.log('밥 먹으러 갑시다');
}, true, timeZone);
var job_1755 = new CronJob(crontime_1755, function() {
console.log('카카오택시 콜');
}, true, timeZone);
[스케쥴링]
var CronJob = require('cron').CronJob;
var crontime = '30 * * * * *'; // 매초, 매분, 매시, 매일, 매월, 매주
var timeZone = 'Asia/Seoul';
var job = new CronJob(crontime, function() {
console.log('*');
}, null, false, timeZone);
job.start();
https://www.npmjs.com/search?q=cron
npm install cron -> moment-timezone@0.3.1
http://momentjs.com/
[포레버]
sudo npm install forever -g
forever -h
$ DEBUG = forver_test sudo forever start ./bin/www ------------ 실행
sudo forever list - 포레버 프로세스 띄운 목록 볼 수 있음
process.on("uncaughtException", function(err) { if (err) { console.err(err) } }; -- 없으면 집어 넣자
sudo forever list
sudo netstat -nap | grep "LISTEN"
sudo forever stop () // ----- sudo forever stop 0 0번 프로세스 멈춤
sudo forever list
[Redis - 레디스]
vi ./.bash_profile ---> 환경변수 설정
. ./.bash_profile ---> 환경변수 적용
sudo apt-get update & apt-get upgrade --- > 최신버전 업글
sudo apt-get install -y redis-server --- > 레디스 서버 설치
sudo service redis-server restart --> 리스타트
sudo redis-cli -h 127.0.0.1 -p 6379 --- > 레디스 서버 접속(?)
---> 레디스 들어가서 keys * 세션 정보보기
sudo service redis-server status ---> 레디스 서버 상태 보기
sudo netstat -npatu +| grep "LISTEN" --- > 현재 listen 중인거 보기
sudo -E DEBUG=homeal:* noedemon ./bin/www.js --- > EC2에서 서버 실행 (-E는 슈퍼권한으로 환경변수 실행해서 서버 실행)
여기까지 EC2 서버 실행
http://ec2-52-78-131-245.ap-northeast-2.compute.amazonaws.com/auth/local/login -> 보안 로그인아닐 때
https://ec2-52-78-131-245.ap-northeast-2.compute.amazonaws.com/auth/local/login -> 보안 로그인 크롬에서 한번 뚥고, 포스트맨에서 해야함
--
https://developers.facebook.com/
facebook callback url를 잘 맞추자..
facebook 코드를 작성후 -> dev.facebook에서 auth 설정 바꿔준후 -> 서버 실행 -> 접속 -> facebook 토큰을 받아와서 -> access_token을
facebook/auth/token url로 들어가서 access_token : 받아온 토큰값을 body로 요청
-- aws
instance 는 ec2 던 rds 던 만들면 돈 나감.. 그래서 무조건 1개만
-- mysql
* 데이터 형식 출처: http://flystone.tistory.com/46
------------------------------------------------------------------------------------------
MySQL 데이터 형식 (문자형)
CHAR[길이] : 0 ~ 255개의 고정길이 문자열 (정확히 그 길이 바이트)
VARCHAR[길이] : 0 ~ 65536개의 가변길이 문자열 (길이 + 1 또는 2바이트)
TINYTEXT : 0 ~ 255개의 문자로 된 문자열 (길이 + 1바이트)
TEXT : 0 ~ 약 7만개의 문자로 된 문자열 (길이 + 2바이트)
MEDIUMTEXT : 0 ~ 약 1700만개의 문자로 된 문자열 (길이 + 3바이트)
LONGTEXT : 0 ~ 약 430000만개의 문자로 된 문자열. 43억개 (길이 + 4바이트)
------------------------------------------------------------------------------------------
MySQL 데이터 형식 (숫자형)
TINYINT[길이] : -128 ~ +127 또는 0 ~ 255 (1바이트)
SMALLINT[길이] : -32768 ~ 32767 또는 0 ~ 65536 (2바이트)
MEDIUMINT[길이] : -800만 ~ +800만 또는 0 ~ 1600만 (3바이트)
INT[길이] : -21억 ~ +21억 또는 0 ~ 42억 (4바이트)
BIGINT[길이] : 무제한^^ 8바이트만큼 이라고 하면 맞음. (8바이트)
* [길이]는 zerofill을 위함이다. insert된 수의 자릿수가 적어야 효과가 나타나겠지..
* zerofill을 걸지 않았다면, [길이]는 넣지도 마라. zerofill 걸면 자동으로 unsigned가 된다.
* INT(4) ZEROFILL => 0005
FLOAT[길이, 소수] : 고정 소수점을 사용하는 작은 수 (4바이트)
DOUBLE[길이, 소수] : 고정 소수점을 사용하는 큰 수 (8바이트)
DECIMAL[길이,소수] : DOUBLE를 문자열로 저장 (길이 + 1 또는 2바이트)
* FLOAT(7,4) => -999.9999
------------------------------------------------------------------------------------------
MySQL 데이터 형식 (날짜형)
DATE : YYYY-MM-DD (3바이트)
DATETIME : YYYY-MM-DD HH:MM:SS (8바이트)
TIMESTAMP : insert나 update되면 자동으로 그 날짜와 시간이 저장됨.
TIME : HH:MM:SS (3바이트)
------------------------------------------------------------------------------------------
MySQL 데이터 형식 (열거형)
* 컬럼에 저장될 데이터가 몇가지로 정해져 있을 때(최대64개), 이를 저장하기 위한 데이터형이다.
ENUM : 정해진 몇가지의 값들 중, 하나만 저장 수 있다. (1 또는 2바이트)
SET : 정해진 몇가지의 값들 중, 여러 개를 저장할 수 있다. (1,2,3,4,8 바이트)
------------------------------------------------------------------------------------------
MySQL 데이터 형식 (이진 데이터 저장용 : 파일이나 암호화된 데이터 저장)
BINARY :
VARBINARY :
TINYBLOB :
MEDIUMBLOB :
LONGBLOB :
------------------------------------------------------------------------------------------
속성 적용하기
cost DECIMAL(5, 2) NOT NULL
gender ENUM('M', 'F') default 'F'
---
--
[ puttykeygen ] 다운 -> load 에 pem 넣고 putty 실행, ppk 넣고 실행하고 ubuntu 하면 끝
[AWS 에서 설정]
EC2 -> security groups -> rds : ec2의 ip 값을 넣어야 한다 (MYSQL/Aurora 해당 IP)
-> launch : 포트 값을 열어준다. anywhere로 한다 모두
RDS security_group 이랑 instance inbound ip 값 rds ec2의 ifconfig 해서 ip 값 넣어줘 야함
그리고 서버 접속할 때는 anywhere로
[EC2]
EC2에서는 localhost 따위가 먹히지 않는다 직접 주소를 다 쳐야함 특히 이미지 url 지정할 때..
[async.each] 속에 query 반복
if (data.menu instanceof Array) {
async.each(data.menu, function(menu, done) {
dbConn.query(sql, [data.eater, data.cooker, data.schedule, menu], function(err, result) {
if (err) {
return done(err);
}
done(null);
});
}, function (err) { // done callback
dbConn.release();
if (err) {
callback(err);
}
callback(null);
});
}
[https 로 접속하려면 인증서를 크롬에 등록해야한다.]
크롬에 등록한 pc만 https로 접속이 가능.
인증서 등록후 크롬으로 한번 뚫어야, 포스트맨에서 접속 가능하다 -> 들어가서 고급에 안전하지 않음 페이지로 한분 뚫고 포스트맨 ㄱㄱ
dummy 서비스 = 안드로이드 애들이 왔다갔따 하는곳 80 443
dev 서비스 = 내가 개발 할떄 8080 4433
prod 서비스 = 실제 개발 완료
https 는 보통 443 포트 들어감
[ec2와 local 에서 이미지 수정이 안될때 -> 경로의 문제임]
ec2에서 만든건 ec2 경로에 따르기 때문에 ec2에서 만든것만 이미지 수정이 가능 (즉, 찾아오기가 그렇게 됨) 그렇기에 로컬에서 만든건 로컬에서만 수정가능
'My Trace > SK고용디딤돌2기' 카테고리의 다른 글
[SK고용디딤돌] 2기 수료식!! - 모바일 서버 개발 과정 (0) | 2016.10.16 |
---|---|
[SK고용디딤돌] Node.js (마지막) (0) | 2016.08.19 |
[SK고용디딤돌] Node.js (10/10) - 7주차 (0) | 2016.08.18 |
[SK고용디딤돌] Node.js (9/10) - 7주차 (0) | 2016.08.17 |
[SK고용디딤돌] Node.js (8/10) - 7주차 (0) | 2016.08.16 |