전체 글

전체 글

    [GraphQL] GraphQL이란?

    GraphQL GraphQL은 API를 위한 쿼리언어이며 타입 시스템을 사용하여 쿼리를 실행하는 서버사이드 런타임이다. GraphQL은 특정 데이터베이스나 특정 스토리지 엔진과 관계되어 있지 않으며 기존코드와 데이터에 의해 대체된다. 쿼리언어(Query Language) 쿼리언어는 정보를 얻기 위해 보내는 질의문을 만들기 위해 사용되는 컴퓨터 언어이다. 데이터베이스 시스템에 저장된 데이터를 가져오기 위해 사용하는 SQL GraphQL(Graph Query Language) SQL이 데이터베이스에서 데이터를 가져오는 목적을 가진다면 GraphQL은 클라이언트가 데이터를 서버로부터 가져오는 것을 목적으로 한다. GraphQL vs REST GraphQL은 RESTful API가 이미 존재하고 널리 쓰이던 2..

    [Bun] Bun??

    Bun 이란?? 자바스크립트 런타임 : 자바스크립트 코드를 실행할 수 있는 환경 노드보다 빠른 속도 Bun 공식 웹사이트를 통해 알 수 있다. https://bun.sh/ Bun은 빠른 올인원 자바스크립트 런타임이라고 소개하고 있다. 그렇다면 얼마나 빠를까??

    [python] smtp 메일 보내기

    파이썬 'smtplib' 를 통해 메일을 보낼 수 있다. cron을 통해 특정주기마다 반복적으로 메일을 보내는 방법을 소개한다. import smtplib import re from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.application import MIMEApplication html_content = """ 파이썬 코드로 메일 보내기 """ def send_mail(addr): reg = "^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$" # 유효성 검사 if re.match(reg, addr): smtp.sendmail(my_ac..

    Dead Lock(교착상태)

    DeadLock 데이터베이스에 데드락이란 여러개의 트랜잭션이 실행되지 못하고 서로를 무한정 기다리고 있는 교착상태를 뜻한다. 교착상태란 두개 이상의 작업이 서로의 작업이 끝나기를 기다리고 있는 상태로 결과적으로 아무것도 완료되지 못한다. Transaction 트랜잭션은 작업의 안정성을 보장해주는 것이다. 여러개의 작업을 하나의 논리적 단위로 묶어 반영과 원상복귀를 조정할 수 있게 하기 위해 사용된다. 사용자의 입장에서는 작업의 논리적 단위로 이해할 수 있고 시스템의 입장에서는 데이터들을 접근 혹은 변경하는 프로그램의 단위가 된다. Locking(교착상태 예방) 로킹은 하나의 트랜잭션이 데이터를 액세스하는동안 다른 트랜잭션이 그 데이터 항목을 액세스할 수 없도록 하는 병행제어 기법이다. 사실상 필요한 데이..

    [node] Base64

    노드에서 Base64 인코딩, 디코딩 방법을 알아보자 Encoding & Decoding var message = "This is message"; console.log(message); // Encoding base64EncodedText = Buffer.from(message, "utf8").toString('base64'); // Decoding base64DecodedText = Buffer.from(base64EncodedText, "base64").toString('utf8'); Buffer.from(문자열, "utf8").toString('base64') -> Base64 Encoding Buffer.from(문자열, "base64").toString('utf8') -> Base64 Deco..

    [v8] V8엔진(Chrome V8)

    V8엔진(Chrome V8) 웹 브라우저를 만드는데 기반을 제공하는 오픈소스 자바스크립트 엔진 ECMAScrpit 규격의 C++로 작성되었으며 자바스크립트를 바이트코드로 컴파일하고 실행하는 방식 사용(JIT) * JIT Just-In-Time Java, C# 등에서 제공하는 실시간 컴파일 방식 자바스크립트 엔진 자바스크립트 코드를 실행하는 프로그램 혹은 인터프리터를 말한다. 자바스크립트 엔진은 표준적인 인터프리터로 구현될 수도 있고 혹은 자바스크립트 코드를 바이트코드로 컴파일하는 JIT컴파일로 구현할 수도 있다. V8엔진 등장배경 웹브라우저 내부에서 JS의 속도 개선을 위해 고안된 V8엔진. 자바스크립트 엔진은 웹 특성상 유저와 상호작용을 위해 즉시성이 있는 인터프리터 방식을 사용하는데 코드가 많아질수록..

    [typeScript] 타입스크립트를 왜 쓸까?

    타입스크립트를 왜 쓸까 타입스크립트도 결국 자바스크립트이다. 타입스크립트도 자바스크립트와 크게 다르지 않다. 따지고 보면 JS의 확장 느낌 자바스크립트에 타입에 대한 내용을 확장시킨것이 타입스크립트이다. 타입스크립트는 컴파일 후에 자바스크립트 파일을 떨군다.(tsc -w) 결과적으로 JS파일을 생성한다는 점에서 왜 굳이 타입스크립트를 쓰는지에 대한 의문이 생기는데 그 의문을 해결해보자. 다음과 같은 함수가 있다고 하자 function sum(x, y) {{ return x + y; } sum 함수가 파라미터로 어떤타입의 인자를 받는지, 어떤타입으로 리턴해주는지 명확하지가 않다. 자바스크립트는 dynamic typing을 지원하고 있다. 예를 들어 해당 함수에 x =3 , y = '5' 값을 인자로 넘겨줬..

    [mongoDB] MongoDB에 대하여

    NoSQL "Non Relation Operation Database SQL" 관계형 데이터베이스가 아닌 SQL 나는 관계형 DB만을 사용해봤고 사용해왔다. NoSQL 비관계형 데이터베이스에 대해선 들어보기만 했지 실제로 사용해본적은 없었다. 데이터직군에 있는 지인도 NoSQL을 사용하고 요즘 채용공고에도 MongoDB와 같은 비관계형 데이터베이스가 많이 보인다. NoSQL에 대해 알아보자 feat.몽고디비 일반적인 관계형데이터베이스는 데이터의 중복을 제거하고 무결성을 보장하기 위해 정규화를 진행한다. (1,2,3 정규화) 이러한 정규화 과도한 JOIN으로 성능저하의 문제를 야기한다. 당장 내가 사용하는 쿼리만 봐도 JOIN이 난무한다. 하지만 NoSQL은 중첩데이터 형태를 띔으로 불필요한 JOIN을 최..