작은 도서관
[javascript] 함수, 클래스, 메서드
개발/아롬 멘토링 2025. 4. 7. 03:51

함수function 키워드로 선언하며 return 키워드로 값을 반환한다.function func1(var1, var2...) { // do something return}만약 함수가 아무런 값도 반환하지 않거나, return 뒤에 값이 없다면 undefined를 반환한다.매개변수js의 모든 함수는 0개 이상의 이름이 있는 매개변수를 가질 수 있다.만약 미리 선언되지 않은 n개의 '나머지 매개변수(rest parameter)'를 전달받으려면 ...args 키워드를 사용한다.function add(a, b, ...args) { // 1, 2를 제외한 나머지 매개변수는 배열로 args에 전달됨 console.log(args) return a + b;}console.log(add(1, 2, 3, 4, 5..

[javascript] 제어문
개발/아롬 멘토링 2025. 4. 7. 03:12

조건문지정한 조건이 참인 경우 블럭 안의 코드를 실행한다.if ... else제1 분기로 if, 이후 분기는 else if, 기본 분기로 else를 사용한다.if (condition1) { // statement 1} else if (condition2) { // statement 2} else { // default statement}만약 statement가 한 줄 이라면 내려쓰기와 중괄호는 생략할 수 있다.switch특정한 값과의 동등 비교(===)를 통한 분기에 사용된다.switch(var1) { case "A": // 이는 다음과 동일: if (var1 === "A") // statement1 break; case "B": // statement2 break; default: // def..

[javascript] 연산자
개발/아롬 멘토링 2025. 3. 30. 15:55

할당과 산술 연산연산자연산명설명=할당B를 A에 저장함. {A} = {B}+더하기사칙연산-빼기*곱하기/나누기**거듭제곱A의 B승을 구함. {A} ** {B}%나머지A / B의 나머지를 구함.(24 % 7 = 3)관계 비교와 논리 연산이하의 연산자들은 모두 Boolean값을 반환한다.연산자연산명설명, >=크기 비교A와 B의 크기를 비교함.==, !=동등, 부등A와 B가 같은지, 다른지 검사. 단, 형 변환 있음("123"==123은 형 변환에 의해 true)===, !==일치, 불일치A와 B가 같은지, 다른지 검사. 단, 형 변환 없음("123"===123은 false)&&ANDA와 B가 둘 다 참이라면 true 반환.||ORA와 B가 둘 중 하나라도 참이라면 true 반환.기타 연산연산자연산명설명? :삼항..

article thumbnail
[javascript] 변수와 타입
개발/아롬 멘토링 2025. 3. 30. 15:38

변수의 선언변수는 다음과 같은 형식으로 선언할 수 있다.[선언 키워드] [변수명] = [값]= (등호)를 사용해 초기화하는게 필수는 아니다.변수의 이름으로는 유니코드 문자셋을 사용하기 때문에 한글로 된 변수명이나 연산자가 아닌 특수문자 만으로도 이름을 사용할 수 있다.변수의 선언 키워드는 다음 세 가지가 있다.var가장 기본적인 변수. 이 키워드로 선언된 변수는 기본적으로 전역 범위를 갖는다. 반복문이나 조건문, 함수 안에서 var를 사용해 선언된 변수는 해당 범위 바깥에서도 사용할 수 있다.let블록 범위 변수. 이 키워드로 선언된 변수는 기본적으로 블록 범위를 갖는다. 반복문이나 조건문, 함수 안에서 let을 사용해 선언된 변수는 해당 범위 바깥에서 사용될 수 없다.const블록 범위 상수형 변수. ..

article thumbnail
[prisma] pagination 구현
개발/개발일지 2025. 1. 21. 17:09

prisma에서 pagination을 구현하는 두 가지 방식을 소개한다.prisma는 orm으로서 갖춰야 할 기능을 여러 메서드로 제공하는데, pagination은 findMany 메서드에서 구현하는 방법을 제공한다.offset 방식offset 방식이란 n개의 데이터를 보여줄 때, 앞에서 {skip}개 만큼 건너 뛴 데이터를 {take}개 만큼 가져오는 방식을 의미한다.prisma.repository.findMany({ skip: number, take: number})실제 사용할때는 skip을 take만큼 증가시키며 사용한다.(위 그림에서, 다음 skip은 7이 될 것이다) cursor 방식cursor 방식이란 데이터를 보여줄 때, 특정 데이터로부터 {take}개 만큼 가져오는것을 의미한다.위 그..

article thumbnail
postgresql 서버 외부 접속 허용
개발/개발일지 2025. 1. 16. 00:33

현재 netstat 확인현재 서버가 어떻게 구성되어있는지 확인한다.netstat -ntlp스크린샷을 못남겼는데, 5432번 포트에 대해 127.0.0.1번만 허용되어있다.접속 허용 IP(listen_address) 변경postgresql 서버를 실행하는 설정은 모두 /etc/postgresql//main 디렉토리에 있다.이중 접속 허용 IP를 변경하려면 postgresql.conf 파일을 수정한다.이 중 listen_addresses를 허용할 ip 목록으로 수정한다.(기본값 127.0.0.1)수정 후 postgresql을 재시작한 뒤 다시 netstat 명령어를 통해 확인해본다.5432번 포트가 설정한 IP에 대해 허용된것을 확인할 수 있다.접속 허용 포트 변경파일을 하나 더 수정해야하는데, pg_hba..

article thumbnail
[nodejs]nodejs에서 webassembly로 빌드된 모듈을 이용했을 때의 성능개선
개발/백엔드 2024. 11. 5. 10:52

WebAssembly란웹 브라우저에서 작동되는 프로그래밍 언어로, webAssembly 자체로 코드를 작성하기보다 C, C++, Rust등의 소스 언어를 컴파일하는 타겟 언어로써 고안되었다.브라우저에서 실행할 때는 javascript에서 webAssembly를 실행시키는 코드를 작성해 네이티브에 가까운 속도로 실행시킬 수 있다.그럼 이 webAssembly로 컴파일된 함수를 node에서 사용하면 어떨까?함수 작성성능 비교를 위해 백엔드 서버에서 해시 함수를 사용하는 상황을 가정하고, 다음과 같은 해시함수를 작성한다.export default function generateHash(input) { let hash = 2166136261; for (let i = 0; i 이 함수는 시행 시간을 측정하기 ..

[express] Request Body에 대한 Custom Interface 작성
개발/Express 2024. 10. 7. 11:17

기본적으로 express.js에서 Request body의 타입은 미리 정의되지 않는다. 그렇다면 바디에 담길 타입을 개발 과정에서 미리 정의해두고 싶다면 어떻게 해야할까?전역 모듈 선언 사용typescript에선 기본적으로 개발자가 특정 모듈에 대한 정의를 작성하거나, 수정할 수 있는 방법을 제공한다.프로젝트의 루트 디렉토리에 @types 폴더를 만들고, 다음과 같이 body의 타입을 정의할 수 있다.declare module "express" { interface Request { T?: T; } }}Custom Interface 작성Request에 대한 정의만 새로 작성하고 싶다면 Custom Interface를 사용할 수 있다.import { Request } from "ex..