전체 글

기타

버퍼 변환 사이트 buffer converter

서버 작업할 때, 테스트용으로 사용하면 편리한 버퍼 변환기입니다. 구글에 치면 버퍼 변환기가 나오기는 하나 이미지 확장자만 지원하는 경우가 많고 샘플 버퍼 찾기도 번거롭고, 그렇다고 매번 코드 돌리는 것보다 직접 웹하나 만들어두면 편리하게 쓸 것 같아서 만들었습니다. fkwsur.github.io/buffer_converter/ 내가 편하려고 만든 파일 버퍼 변환기 fkwsur.github.io

Database/mysql

[MySQL] 외래키 쓰면 안되는 이유

외래키(Foreign Key)는 데이터베이스에서 두 테이블 간의 관계를 정의할 때 사용하는 개념 외래키는 한 테이블의 필드(또는 컬럼)가 다른 테이블의 기본 키(Primary Key)를 참조할 때 사용 이렇게 하는 것으로 데이터의 일관성과 무결성이 보장되지만, 몇 가지 단점 또는 고려사항들이 있음 1. 성능 문제 외래키를 사용하면 INSERT, UPDATE, DELETE 작업 시 해당 테이블뿐만 아니라 참조하는 테이블까지 확인해야 함. 이로 인해 작업 속도가 느려질 수 있음. 2. 복잡성 증가 외래키 관계를 설정하면 데이터베이스 구조가 복잡해질 수 있음. 이로 인해 쿼리 작성이나 데이터베이스 관리가 어려워질 수 있음. 3. 삭제 제한 외래키로 참조되는 테이블의 데이터를 삭제하려고 할 때, 그 데이터를 참..

Node.js

[Node.js] iamport 결제 실패 시의 상황 대처법

결제시스템은 결제를 한다고 다가 아닙니다. 아이엠포트를 결제를 한다고 치면 프론트에서 결제 창이 뜨고 결제 완료가 됩니다. 그리고 그 결제완료된 내용을 서버로 보내고 서버에선 디비에 저장하게 됩니다. 그런데 프론트에서 결제 승인이 났는데 뜻밖의 이슈로 서버가 다운됐다고 쳐봅시다. 그럼 유저 입장에서 돈은 빠졌나갔는데 자신의 결제기록을 볼 수 없죠? 그러므로 안전하게 이를 핸들링하기 위해 상태값 중 결제 대기 상태를 만듭니다. 그래서 유저가 프론트에서 아이엠포트를 이용하기 전에 결제 대기 상태로 서버에 데이터를 보내줍니다. 결제 대기를 포함한 아이엠포트 서버 코드 예시들을 보여드리겠습니다. 우선 결제 대기 로직입니다. // 결재 대기 로직 WaitAccept : async (req, res) => { tr..

Elasticsearch

[Elasticsearch] 03. db연동하기

전차수들에서 엘라스틱 서치를 세팅하고 노리 형태소 분석기도 적용했습니다. 이제 데이터베이스에 있는 값을 엘라스틱 서치와 연동해서 검색해 봅시다. 일반적으로 엘라스틱 서치는 로그스태시를 사용하여 디비와 연동을 하지만, 버전을 맞춰줘야 하고 설정파일도 만져줘야 하는 등 까다롭고 m1에서 호환이 잘되지 않는 단점이 있습니다. 결국엔 로그스태시도 계속 켜놓은 상태로 일정 시간 주기로 스케줄링을 해주는 원리로 돌아가기에 배치서버 만들어서 돌리는 것과 성능에는 별 차이가 없기도 하고, 직접핸들링 하는 게 저는 더 편하기 때문에 로그스태시 같은 배치서버를 직접 만들겠습니다. 1. 서버 세팅 node 서버에 express 프레임워크 세팅해서 진행하겠습니다. 서버세팅법과 crud 부분은 아래의 링크를 참고해 주세요. h..

Elasticsearch

[Elasticsearch] 02. Elasticsearch 사용하기 (with nori)

ElasticSearch 를 사용해보겠습니다. 1. 엘라스틱 서치 설치 및 실행 우선 엘라스틱 서치를 설치해야 합니다. 저는 m1 이라 brew 로 설치했습니다. $ brew tap elastic/tap $ brew install elasticsearch-full $ brew services start elastic/tap/elasticsearch-full http://localhost:9200 브라우저로 들어가보면 { "name" : "", "cluster_name" : "", "cluster_uuid" : "", "version" : { "number" : "7.17.4", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "79878..

Elasticsearch

[Elasticsearch] 01. 검색엔진

검색엔진을 구현할때는 다양한 방법이 있습니다. 그 중에서 mysql like, mysql full-text-scan, elasticsearch 등이 있습니다. 1. MySQL Like 일반적으로 mysql 등의 디비에서 키워드를 검색할때는 like연산자를 이용하여 일치하는 값을 검색합니다. 그러나 like연산자를 이용하는 방식은 단어 또는 구문에 대한 검색에는 어느정도 한계가 있습니다. 만약 '크림 파스타' 라는 데이터가 있고, 유저가 "크림파스타" 라고 검색을 한다면 결과값은 나오지 않을 것입니다. 결과값이 나오게 하려면 select * from search_warming where REPLACE(keyword, " ", "") LIKE "%크림파스타%” 이런식으로 조회를 해야 결과가 나올 것 입니다...

Node.js

[Node.js] prototype 사용예시

1. 클래스 선언을 한다. class User{} 2. 객체를 가져오는 방법은 아래의 양식이 된다. const user = new User() 이 객체의 프로토타입은 User.prototype 이 된다. 3. 객체에 새로운 프로퍼티를 추가해줄 수 있다. User.prototype.Hello = () => { console.log('user') } Hello라는 메소드가 프로퍼티로써 추가되었다. 이 프로퍼티는 콘솔에 user 를 출력해준다. 4. user라는 이름으로 선언된 User 프로토타입 안에 있는 Hello 프로퍼티를 콘솔로 찍어본다. console.log(user.Hello()) user가 출력될 것이다.

Node.js

[Node.js] prototype 이란

원문 : http://www.tcpschool.com/javascript/js_object_prototype 자바스크립트의 모든 객체는 프로토타입(prototype)이라는 객체를 가지고 있습니다. 모든 객체는 그들의 프로토타입으로부터 프로퍼티와 메소드를 상속받습니다. 이때 상속되는 정보를 제공하는 객체를 프로토타입(prototype)이라고 합니다. 프로토타입 체인(prototype chain) 자바스크립트에서는 객체 이니셜라이저를 사용해 생성된 같은 타입의 객체들은 모두 같은 프로토타입을 가집니다. 또한, new 연산자를 사용해 생성한 객체는 생성자의 프로토타입을 자신의 프로토타입으로 상속받습니다. var obj = new Object(); // 이 객체의 프로토타입은 Object.prototype입니다..

hyun_ji
코딩일기