분류 전체보기

· Node.js
module scope에서 실행 파일 경로를 얻어보자! node type: module npm 라이브러리들의 docs를 보다보면 commonJS보다 ES module을 사용하는 것을 자주 볼 수 있었다. 이왕 이렇게 된거 node 버전을 16에서 17로 업그레이드 하고 type을 commonJ에서 ES module로 사용하기로 했다. 업그레이드하고 require들을 모두 import, export로 바꾼뒤 실행해보니 __dirname이 정의되어 있지 않단다. ES module에서는 어떻게 바뀐건지 확인해보자. ES module에서 cwd(), import.meta.url, path.resolve() 먼저 공식문서를 확인해 보자 ES module과 commonJS의 차이는 노드 공식문서에서 확인 할 수 ..
데이터베이스 구조부터 잡고 sequelize와 MySQL query를 이용해 스키마를 생성해보자! 데이터베이스 저는 서비스를 만들 때 기능들을 구상하고 인터페이스를 대충 생각 해보고 데이터 베이스를 설계하는 편입니다. 기능 구상은 저번 포스트에서 했고 인터페이스는 크게 신경 쓰지 않을 계획이니 바로 데이터베이스를 설계해 보겠습니다. 우선 채팅 서비스에 필요한 데이터부터 생각해보면 유저, 대화방, 메시지 정도가 있습니다. 모든 테이블에 createdAt, updateAt, deletedAt을 추가 해 시간을 이용해 대화방에서 나갔다가 다시 접속했을 때 나가기 전 메시지를 불러오지 않을 계획입니다. 대충 컬럼을 생각해봤으니 관계를 맺고 정규화를 통해 나은 방법을 찾아보겠습니다. pseudo ERD '메시..
· Node.js
socket.io 없이 ws모듈을 이용한 채팅방 구현 과정과 결과입니다. ws모듈을 이용한 채팅방 구현 실시간 양방향 통신은 요즘 웹서비스에서 거의 필수입니다. 하다못해 배달 중인 음식의 위치까지 실시간으로 알려주는 시대에 살고 있습니다. web socket을 공부해보고 싶은 마음을 품고 미루던 찰나, node 강의에서 web socket 프로토콜과 ws모듈, socket.io를 소개했습니다. 제가 듣는 node 강의는 node 생태계 전체를 훑는 강의기에 깊은 내용보다는 이런 게 있다 정도의 설명이기에 스스로 예제를 만들며 학습했고 그 경험을 기록하고 공유할까 합니다. 들어가기 전에 이 글은 socket.io없이 ws모듈만을 사용하여 채팅방을 구현한 과정의 기록입니다. socket.io를 이용한 채팅방..
· Node.js
로그인 시 빼놓으면 섭섭한 passport.js의 github을 살펴보며 passport의 흐름에 대해 정리해보자. Passport.js `passport.js`는 인증을 도와주는 미들 웨어입니다. passport는 Oauth와 세션 쿠키 관리를 쉽게 도와줍니다. passportjs를 사용하며 공식문서가 조금 빈약하다고 느껴졌고 passport의 깃헙의 코드를 읽어봤습니다. 주석으로 설명이 너무 잘되어있어 깃헙을 읽게 된 과정과 내용을 정리해보려 합니다. 글이 다소 복잡할 수 있어 캡쳐와 그림만 봐도 내용을 이해하는데 큰 무리가 없도록 노력했습니다. 이 글에서는 제가 작성한 예시 코드로 설명합니다. 예시코드는 깃헙 repository에 공유해두었습니다. 이 글은 크게 두가지 내용을 담고 있습니다. pas..
let userError:object; userError = { name: "cloer", age: 10 }; // console.log(user.name) // Error: Property 'name' does not exist on type 'object'. type Score = 'A'|'B'|'C'|'D'; interface User { name: string; age: number; gender?: string; //optional readonly birthYear: number; [grade:number]: Score }; let user:User = { name:'cloer', age:10, birthYear: 2012 }; user.gender = 'male'; // user.birthYe..
// primary type const myName:string = 'cloer' const age:number = 13 const married:boolean = false // Array const weekdays:string[] = ['mon', 'tue', 'wed'] const weekend:Array = ['sat', 'sun'] // tuple const user:[string, number] = [myName, age] // void const voidFunc = ():void => { // No return } // never const naverFunc1 = ():never=>{ while(true){ // Infinite loop } } const naverFunc2 = ():neve..
canvas API와 nodeJS, MySQL로 간단한 웹게임을 만들어보자! Canvas로 슈팅게임 만들기 기말고사 기간 공부가 하기싫어 vs code를 열고 이짓 저짓 하다가 간단한 게임을 만들어 보기로 했다. 즉각적인 결과를 얻을 수 있고 로직도 짤 수 있는 canvas가 시험기간에 공부하기 싫을 때 놀기 적당해 보였다. 먼저 canvas를 써본적이 없으니 기본적인 사용 방법을 공부하기 위해 유투브에서 영상을 찾아봤다. 이 영상을 보고 만들었으며 추천한다. 영상을 보며 따라 만든 후 AWS EC2에 배포해 친구들에게 알려줬고 점수 스크린샷을 찍어 서로 자랑하는 모습을 보고 점수를 저장하는 서버를 만들기로했다. 이 글은 시험이 끝난 뒤 영상을 안보고 만들 수 있는지 스스로 테스트도 해볼겸 처음부터 리..
· Languages/R
다른 언어를 쓰다 R을 처음 접하면 요소에 접근하는 방법이 헷갈린다. 정리하며 익혀보도록 하자! 첨자(Indexing) R에서 요소근은 $, [], [[]], [,]등 여러 형태로 나타난다. 또 R언어는 인덱스가 1부터 시작한다. 프로그래밍을 처음 배울때는 왜 0부터 시작하지? 했는데 이제는 왜 1부터 시작하지? 라는 생각이 든다. matlab도 1부터 시작하는 것을 보면 아마 통계기반 언어들의 특징인것 같다. 통계를 위한 데이터들을 나타낼 때 0번째는 의미가 없기 때문이 아닐까한다. 그럼 이제 벡터, 행렬, 배열, 리스트, 데이터 프레임등 열거형 데이터의 인덱싱을 알아보자! 벡터 인덱싱 벡터는 다른 언어와 마찬가지로 [](대괄호)를 사용한다. test.vector = 1:8 test.vector[1]..
기본형(primitive type)과 참조형(reference type) 데이터를 담는 변수의 선언, 초기화, 할당 과정을 메모리 측면에서 이해하고 가변형(mutable type)과 불변형(immutable type)의 의미를 파악해보자. 데이터 타입과 가변성, 불변성 어떤 언어를 배우든 가장 먼저 변수를 배우게 됩니다. 이를 공부하다 보면 mutability와 immutability라는 단어를 마주하게 됩니다. 가변성 불변성이라고 번역되지만 불변하다고 하는데 값을 바꿀 수 있는 것 같고... 의미가 잘 와닿지 않습니다. 메모리의 관점에서 변수의 생성 과정을 보는 것이 불변, 가변의 의미를 이해하는데 조금은 도움이 될 수 있습니다. Js에서 데이터의 타입에 따른 변수의 선언, 초기화, 할당 과정을 메모리..
당근마켓 서버를 클론해보자! 당근마켓 서버 클론 nodeJS를 이용해 당근마켓 서버를 클론 했다. 리펙토링하며 블로그에 글로 정리해볼까 한다. 살면서 처음 만들어본 API서버이기 때문에 세상에 자랑하고 싶지만 부족한점이 많다. 나중에 이 글을 읽으며 코드를 보고 부끄러울 수 있지만 몇 줄 정도는 자랑 스러워 할 코드가 있지 않을까 하며 조심스럽게 기록을 남겨본다. 코드 외에도 당근마켓 클론의 전체적 과정을 담아보겠다. 블로그에는 api별로 코드를 뜯어와 붙여 포스트 하고 깃헙으로 전체를 공유 하겠다. 다시 한번 말하지만 첫 api서버이기 때문에 부족한점이 많다. 혹시 읽으시다가 불편하신 점, 마음에 안드시는 점, 개선이 필요하거나 부족한 부분이 있다면 메일, 쪽지, 댓글 등으로 알려 주신다면 정말 감사하..
· etc.
렌즈의 공식과 파이썬을 이용해 객체의 위치에 따른 상의 위치를 계산해보자. Lens equation 렌즈의 공식은 렌즈의 초점거리, 렌즈의 중심으로부터 피사체의 거리, 렌즈의 중심으로부터 상 사이의 거리사이의 관계를 나타낸다. 이를 이용해 렌즈의 특성으로 알 때 렌즈와 와 객체 사이의 거리를 계산해 상이 맺히는 곳을 계산 할 수 있다. Plotting graphs showing lens equation import numpy as np import matplotlib.pyplot as plt ## function # s' = Lens_Equation(s,f) # input # f: focal length # s: object location # output # s': image location def L..
· etc.
스테판-볼츠만 법칙을 이용해 태양상수를 추정해보자. Stefan-Boltzman law 스테판-볼츠만 법칙은 단위면적당 방출되는 에너지의 총량과 흑체의 절대온도 사이의 관계식이다. 방출되는 복사 에너지는 절대온도의 네제곱에 비례한다. 이를 이용해 태양상수를 추정할 수 있다. Computing the solar constant at the Earth Computing the total energy emitting from the Sun and the Earth during 1 second. Assuming that the radius of the Sun and the Earth are about 675,000km and 6,400 km, respectively. Assuming that the distan..
thecloer
'분류 전체보기' 카테고리의 글 목록 (19 Page)