JS

    # 33 가지 Javascript 필수 개념 - 7. Expression vs Statement

    본 내용은 아래의 링크를 참조하여 작성되었습니다 (github.com/leonardomso/33-js-concepts#7-expression-vs-statement) * 표현식(Expression) 과 문장(Statement) JS 는 특이하게 문법적으로 "표현식" 과 "문장" 이라는 두개의 카테고리로 나뉠 수 있다. 아주 간단히 이야기하면, 표현식(Expression)은 값을 만들어 낼 수 있는 것이고, 문장(Statement)은 그 자체로 어떤 값을 만들어 낼 수 없는 것을 말한다. 예를들면, let num = 10; num * 2; num + 2; console.log(num); cs 이런 코드가 있다 치면 let num = 10; 은 Statement 이지만, num * 2; num + 2; 는 ..

    # 33 가지 Javascript 필수 개념 - 6. Scope

    본 내용은 아래의 링크를 참조하여 작성되었습니다 (github.com/leonardomso/33-js-concepts#6-function-scope-block-scope-and-lexical-scope) # Scope scope 란 사전적 의미로는 '범위' 를 말한다 이 포스팅에서 다뤄볼 것은 '변수의 (유효) 범위' 를 다뤄 볼 것이다 모든 프로그래밍 언어가 그렇듯, 변수의 범위를 다루는 것은 가장 기초적이면서도, 꽤나 중요한 부분 중 하나이다. * Global Scope, Local Scope 보통 변수의 범위 하면, 전역 변수(Global) 와 지역 변수(Local) 로 나뉜다 전역 범위는 코드 어디에서든 참조할 수 있는 범위고, 지역 범위는 특정 구간에서만 참조할 수 있는 범위이다. '지역' 에 ..

    schema.prisma 정리

    # 개요 schema.prisma 파일엔 크게 3가지 부분으로 나뉜다 1. Data Source : Data Source 부분은 어떤 DB 와 연결할것인지 설정하는 부분이다. prisma 에서 지원하는 DB 는 PostgreSQL, MySQL, SQLite 가 있으며 이런식으로 작성할 수 있다 (PostgreSQL 기준 예시) datasource db { provider = "postgresql" url = "postgresql://johndoe:mypassword@localhost:5432/mydb?schema=public" } Colored by Color Scripter cs 또는 prisma 폴더내에 .env 파일을 생성하여 다음과 같이 url 을 숨길수 있다. 또한 다수의 DB 와 연결이 가능하..

    prisma 2 query 문제

    기존의 prisma 1 버젼에서는 별 문제없이 조회되던 쿼리문이 prisma 2 가서 안되는 경우가 있다. 예를들어, 스키마가 아래 같이 정의 되어 있을때 model User { id Int @default(autoincrement()) @id email String @unique name String posts Post[] } model Post { id Int @default(autoincrement()) @id title String @default("") content String author User @relation(fields:[authorId] references:[id]) authorId } Colored by Color Scripter cs resolver 코드를 아래 같이 작성하고 e..

    GraphQL Server 구성

    이 포스팅은 기존의 GraphQL-Yoga 에서 탈피하여 GraphQL, Express, Apollo 를 활용하여 서버 구성을 했던 과정을 기록한 요약한것이다. # GraphQL-Yoga GraphQL 을 처음 배웠을때는, graphql-yoga 를 이용해서 배웠었다. yoga 는 서버 환경 설정시에 겪게 되는 여러 오류 사항에서 벗어나 편하게 프로그래밍 할 수 있는 환경을 제공해줬다. 그러나, 왜 그런지는 모르겠지만, 꽤 오랜 시간 yoga 패키지에 대한 업데이트가 없었고, yoga 로 만든 프로젝트를 깃헙에 올리면 패키지 보안 취약성 오류를 내고 있었다. 그리고 단순히 npm audit fix 로는 yoga 패키지 자체가 가지고 있는 여러 의존 패키지들에 대한 보안 취약성 문제를 처리 할 수 없었다...

    webpack (1)

    webpack 에 대해서 여태까지 어설프게만 알고 있었는데 이참에 한번 제대로 싹 정리를 해보고 개념도 확실하게 익힐겸 포스팅을 작성하게 되었다. * Module JS 를 사용해서 개발을 하다보면 module 이란 용어를 듣게 된다. JS 에서 module 이란 각각의 개별 파일을 말하는 것이다. module 단위로 JS 를 관리하다 보면, 생기는 문제 중 하나가 JS 파일에 정의된 변수명이 겹칠 수 있다는 것이다. 이런 문제를 해결하기 위해 등장한것이 ES6 이후 등장한 import, export 구문이다. * Bundle bundle 은 영어로 묶는다는 뜻이다. webpack 의 정의를 보면, "webpack is a static module bundler for modern JavaScript ap..

    Prisma Migration 관련 오류

    * Migration Prisma 에서 Migration 은 schema.prisma 파일에 정의해놓은 스키마에 변화가 있을 경우 사용하고 있는 DB 에도 업데이트를 해주기위해 사용하는 연산이다. 근데 이 연산을 하다 보면 간혹 이런식의 오류가 발생한다 "Error: There are more migrations in the database than locally. This must not happen. Local migration ids: . Remote migration ids: 202009031622-init, 202009031623-init2" 이것은 Migration 을 할때, Prisma 가 사용하는 DB 에 _Migration 이라는 테이블을 생성해서 언제 Migration 을 했는지 기록해..

    Prisma 란?

    # Prisma 2 Prisma 의 정의를 보면 아래와 같이 서술 되어 있다. "Prisma is an open-source database toolkit. It replaces traditional ORMs and makes database access easy with an auto-generated query builder for TypeScript & Node.js." -> 말이 거창하게 써있는것 처럼 보이는데 그냥 JS, TS 에서 쓰는 ORM 이다. * Prisma 의 연산 과정 Prisma 가 작업을 수행하는 과정을 대략적으로 요약하면 아래 그림과 같다 Node.js 에서 (백엔드 서버 단) Prisma Client 를 생성하고, Query Engine 을 이용해서 DB 와 연결한다 그리고 ..