전체 글 24

Redis를 Docker Compose로 사용하는 방법

Redis는 인-memory 데이터 저장소로서 자주 사용되는 오픈 소스입니다. Docker Compose를 사용하면 Redis를 간단하게 실행하고 관리할 수 있습니다. 아래는 Redis를 Docker Compose로 사용하는 단계입니다: Docker Compose 파일을 생성합니다. 예를 들어, 'docker-compose.yml' 파일을 만들어서 다음과 같이 Redis 서비스를 정의합니다: version: '3' services: redis: image: redis ports: - "6379:6379" 위의 파일에 따라 Redis Docker 이미지를 다운로드하고 실행합니다. 커맨드 라인에서 다음 명령어를 입력합니다: docker-compose up Redis 서비스가 실행되고 컨테이너가 시작됩니다. ..

영역별/Infra 2023.09.24

MySQL을 Docker Compose로 사용하는 방법

다음은 Docker Compose를 사용하여 MySQL을 실행하는 방법입니다. Docker Compose 파일 생성 프로젝트 폴더 내에 `docker-compose.yml` 파일을 생성하고 다음과 같이 내용을 작성합니다. version: '3' services: db: image: mysql restart: always environment: MYSQL_ROOT_PASSWORD: [MySQL 루트 비밀번호] MYSQL_DATABASE: [데이터베이스 이름] MYSQL_USER: [사용자 이름] MYSQL_PASSWORD: [사용자 비밀번호] ports: - [로컬 MySQL 접속 포트]:3306 volumes: - ./data:/var/lib/mysql MySQL 컨테이너 실행 터미널에서 프로젝트 폴더로..

영역별/Infra 2023.09.24

Ts: overloading

// overloading type Config = { path: string, state: number } type Push = { (path: string): void, // call signature을 다르게 표현하는 방법 (config: Config): void // Config 타입을 오버로딩 해서 파라미터를 string(path) 하나만 받을 수도 있고 Config타입에 맞게 받을수 있음 } const push: Push = (config) => { if (typeof config === "string") { console.log(config) } else { console.log(config.state) } } type Add = { (a:number, b:number) : number (a..

Ts:세번째 변수

//unknown 변수 // 만약에 api로 값을 받았을때 파라미터의 타입이 뭔지 모를경우 강제시킴 let a : unknown; //let b = a + 1; // Object is of type 'unknown' if(typeof a === "number"){ let b = a + 1 } if(typeof a === "string"){ let b = a.toUpperCase } function hello():void { console.log("hello bro"); } function hello2() { console.log("hello bro"); } //never 타입 -> 절대 리턴을 하지 않은 경우 never 타입사용 function hello3():never { throw new Error(..

Ts:두번째 변수

// readonly는 실행은 가능하되 변수변경 불가 type player = { readonly name:Name, age?:Age } Ex) nico.name = "jung" // error Ex2) const numbers: readonly number[] = [1, 2, 3, 4] numbers.push(1) // error Ex3) //튜플 const player2: readonly [string, number, boolean] = ["nico", 1, true] player2[0] = 1 // error -> 이중검증 (1) 0번째 index의 타입이 맞지않음 (2) readonly로 변경 보호 Ex4) // null, undefined let a : undefined = undefined l..

Ts:변수의 지정 및 재사용

// 타입재사용 가능 type Age = number; // 타입지정 type Name = string; // 타입지정 type player = { name:Name, age?:Age // ?-> optional } //함수 선언식 function playerMaker(name:string) : player { // 리턴타입 지정(:player) => 리턴타입은 위 type player에서의 //타입값을 재사용 return { name } } //함수 표현식도 동일하게 리턴값 지정 const playerMaker = (name:string) : player => ({name}) const nico = playerMaker("nico"); nico.age = 12

Js:변수 및 호이스팅

(1)호이스팅 => 함수가 실행되기 전 함수 안에 필요 변수값들을 모두 모아 유효범위 최상단에 선언 -> 자바스크립트 parser가 함수 실행 전 함수를 한번 훑음 -> 함수안에 존재하는 변수 / 함수선언에 대한 정보를 기억하고 실행시킴 -> 유효범위 : 함수 블록 {} *실제로 코드가 변화되는건 아니고 parser 내부적으로 끌어올려서 처리 -> 메모리상 변화는 없음 * var 변수 선언과 함수선언문에 대해서만 호이스팅이 일어남 let/const 변수 선언과 함수표현식에서는 호이스팅이 일어나지 않음 EX) 함수선언문 / 함수표현식 -함수선언문- function abc() { console.log("hellomello"); } -함수표현식- var abc = function() { console.log(..

가벼운 Js VS Ts

Js vs Ts -안정성- -> 타입 안정성 : 자바스크립트에서는 타입을 자동으로 지정해주는 대신 그만큼 타입에 대한 안정성이 떨어짐 --> 자바와 타 언어들과 동일하게 타입을 지정을 하여 개발 진행 / 그만큼 자바스크립트가 유연하나 말도안되는 코드가 실행됨 ex)Js : [1, 2, 3, 4] + false => '1, 2, 3, 4false' ==> 첫째로 배열이 사라지고 String 바뀜 ==>둘째로 false라는 boolean 값이 String 으로 바뀜 ex2) function divide(a, b) { return a / b } divide("wow"); ==> NaN ===> 에러가 발생하지않고 실행됨 / 에러에 대한 보호가 이뤄지지 않아 위험성이 높음 ex3) const name = { n..