코딩 공부 50

퍼지(fuzzy) 검색 (정규표현식이용)

fuzzy logic : 불분명한 상태, 모호한 상태를 참 혹은 거짓의 이진 논리에서 벗어난 다치성으로 표현하는 논리개념 (위키백과) 확률론과 근본적으로 다른것이 부엌과 침실사이에 서 있을때 50%확률로 부엌에 있고 50%확률로 침실에있다고 말하는것과 양자역학처럼 50%는 부엌 50%는 침실에있다라고 말하는것은 다름 fuzzy 검색 : 완전히 일치하지않아도 검색하는것 (유사성 검색 알고리즘) fuzzy 검색이란 유사해도 검색하는 방법론이므로 딱 정해진 방법이 존재하는것은 아니다 다양한 방법들이 있는데 레펜슈타인 거리(Levenshtein distance) 다메라우-레펜슈타인 거리(Damerau-Levenshtein) 우(Wu)와 만버(Manber)씨에 의한 비탭 알고리즘과 변형 철자 검사 기법 N-그램 ..

node-cron을 이용한 schedule

npm install node-cron // 설치 사용 예시 const cron = require('node-cron'); cron.schedule('* * * * * *', function () { console.log('매 초 마다 작업 실행'); }); cron.schedule의 첫인자로 실행 주기, 두번째 인자로 콜백 함수 입력 메소드 기본적으로 자동실행인데 const cron = require('node-cron'); const a = cron.schedule('* * * * * *', function () { console.log('매 초 마다 작업 실행'); }, { scheduled: false }); a.start(); scheduled를 false로 주면 a.start()해야지만 실행된..

Sequelize N : M (다대다)관계에 대한 고찰

diary : hashtag = N : M 일때 처음에는 await diary.create() await diary_hashtag.create() await hashtag.create() 로 각각 3개의 테이블에 데이터를 만들어 줬는데 belongsToMany로 관계설정을 해줬으니까 각각 안만들어줘도 똑똑한 sequelize가 join table은 자동 생성해줄거라고 생각했다 또한 위에처럼 각각 만들어줬을때 diary를 삭제하면 연관되는 diary_hashtag테이블의 칼럼이 삭제되고 또한 hashtag를 삭제했을때도 연관되는 diary_hashtag테이블의 칼럼이 삭제는 되지만 더 나아가서 diary 삭제시 diary_hashtag테이블이 삭제되고 diary_hashtag테이블을 참조하는 hashtag..

Sequelize 관계 설정 1 : N, N : M(1대다, 다대다)

trip : diary = 1 : N diart : hashtag = N : M 인 경우의 관계 설정 관계 설정방법은 2가지가 있다 마이그레이션과 모델 모두 이용하는 방법과 마이그레이션을 하지않고 모델만 이용하는 방법이 있는데 마이그레이션을 이용하는 방법으로 하겠다 1 : N 우선 trip, diary, hashtag의 migration과 model파일들을 다 만든 상황에서 일반적으로 migration 파일을 만들때 npx sequelize-cli model:generate --name user --attributes name:string 처럼 만드는데 이렇게 말고 npx sequelize-cli migration:generate --name fk-diary 이런식으로 model이 생성되지 않고 migr..

Sequelize와 Migration 기본 설정

Migration을 하면 데이터베이스에 테이블 생성 및 삭제할것을 미리 선언해두는것이고 Seed는 그 테이블에 더미데이터를 집어 넣는거 공식문서 : https://sequelize.org/docs/v6/other-topics/migrations/ Migrations | Sequelize Just like you use version control systems such as Git to manage changes in your source code, you can use migrations to keep track of changes to the database. With migrations you can transfer your existing database into another state and ..

JS로 slack bot 사용하기 (invalid_auth 에러 해결 법)

await slack.slack("제목"); await slack.slack("내용"); 서버에 요청이 갈때마다 해당 요청정보를 slack 채널에 bot이 메시지를 보내는것을 구현하고자 함 우선 새 워크스페이스를 개설한다 https://slack.com/ Slack은 미래의 업무가 이루어지는 곳입니다 Slack은 여러분의 팀과 소통할 새로운 방법입니다. 이메일보다 빠르고, 더 조직적이며, 훨씬 안전합니다. slack.com 에 접속하여 새 워크스페이스 개설을 누르고 워크스페이스를 생성한다 그 후에 새 app을 만든다 https://api.slack.com/apps Slack API: Applications | Slack Your Apps Don't see an app you're looking for? ..

포스트맨 자동화

포스트맨에서 엔드포인트 별로 만들어놓은 요청들의 테스트케이스를 만들어서 한번에 성공여부를 볼 수 있다 위 이미지처럼 탭을 많이 열어놨을때 각각의 요청에서 Tests탭을 들어간다 그리고 아래 코드 예시처럼 어떤 상태코드를 띄워야 성공인지, key값이 뭐가 와야 성공인지등을 지정해 줄 수 있다 pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); pm.test("Response must have the token property", function () { var jsonData = pm.response.json(); pm.expect(jsonData).to.have.keys("data","accessToken"); ..

정규표현식 (Regular Expression: Regex)

형식 /pattern/flag //예시 문자열 let str = "안녕하세요 안녕 제 전화번호는 010-1234-5678입니다 G gd god good goood!."; 패턴 의미 비고 [a-z] [A-Z] 알파벳 범위 [ㄱ-ㅎ] [가-힣] 한글 범위 0-9 숫자 범위 . 모든 문자열 (공백 포함, 줄바꿈은 x) 1개당 문자열한개. ...은 3자리의 문자열 \d 숫자 str.match(/\d/) === '0' \D 숫자 아닌거 \w 알파벳, 숫자, _ 영문 대소문자 52개 + 숫자 10개 + _ 1개 =63개 문자 \W \w 제외 \s 공백 \S 공백 아닌것 ^ 줄의 시작에서 일치 e.g. /^abc/ 시작 포함돼야함 [^] 부정(not) $ 줄의 끝에서 일치 e.g. /abc$/ 끝 포함돼야함 /goo..

코드스테이츠 23일차

오늘의 키포인트 Class 나의 이해 Class : js를 객체지향적으로 쓰기 위한 방법 문법 및 중요 절차 지향 프로그래밍 : 일반적으로 생각하는거 ex)편의점 문을 연다. 들어 간다. 물건을 집는다. 점원한테 준다. 돈을 지불한다..... 객체 지향 프로그래밍 : 점원한테는 계산과 같은 속성 및 메소드 존재, 소비자한테는 구매 같은 속성 및 메소드 존재 인간이 세상을 보는것과 유사. OOP(Object-oriented programming) 객체 지향 프로그래밍 : 데이터와 기능을 한 곳에 묶어 처리 속성, 메소드가 하나의 객체에 포함, 이는 js의 내장 타입인 object와 다르게 class로 부름 객체 지향은 메모리를 많이 먹으나 보기 편하고 재사용성이 좋음 메소드 호출때는 화살표 함수 안쓴다 l..