안녕세계

[SK고용디딤돌] 프로젝트에 필요한 정보 본문

[SK고용디딤돌] 프로젝트에 필요한 정보

Junhong Kim 2016. 8. 25. 01:40
728x90
반응형

[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'


---

MySQL에서 boolean 타입사용하기 팁

기술문서창고/mysql 2013.11.16 18:21


MySQL 5버전대부터 사용 가능합니다. 


tinyint(1)과 같은 것으로 boolean 타입이 추가되었고, 저장할 때도 true, false로 저장이 가능합니다만, 저장된 값을 확인해보면 0 (=false), 1(=true)로 저장됩니다.


그러다보니 값을 가져와서 쓸 때, 이 값들이 0과 1로 나와서 약간 곤란할 때가 있습니다.


이럴 경우   IF(칼럼명 , 'true', 'false') as 칼럼명   과 같이 해주면 아쉬운대로 사용할 수 있습니다. 


예를 들면 다음과 같이 말이죠..

select id, title, IF(completed, 'true', 'false') as completed from todo;


참고문서:

http://gyuha.tistory.com/243

http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html

--




[ 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에서 만든것만 이미지 수정이 가능 (즉, 찾아오기가 그렇게 됨) 그렇기에 로컬에서 만든건 로컬에서만 수정가능

728x90
반응형
Comments