Go | 기본타입 (numbers, strings, booleans)
·
Go
👉 number int int uint: 0과 양수 int16: 16비트 인티저 int32: 32비트... int64: 64... 왜 int(숫자)타입들이 있음? 프로그램이 폰 옛날컴 현재컴 등 어떤 아키텍쳐에서 컴파일될지 모르기 때문에 다양한 종류가 있다. 절대로 확실하게 64비트 아키텍처용 만든다면 int64쓰는게 조오금 낫다. 하지만 그냥 int를 쓰는게 좋다. float float32: 32비트 float64: 64비트 그냥 float는 없다. 사이즈에 따라서 골라서 쓰기 👉 string 스트링은 go에서 이뮤터블 변경 불가능하다. myString := "홍길동" myString = "김말동" 값을 바꾸는게 아니라 새로운 스트링을 생성해서 변수에 할당하는것 그래서 엄청큰 나노세컨드 단위가 중요한 ..
MantisBT | 프로젝트 생성 권한 변경하기
·
기타
mantisbt는 커스터마이징이 가능한 무료 이슈 관리 툴이다. https://computingforgeeks.com/install-and-configure-mantis-bug-tracker-on-ubuntu/ 위 링크를 보고 우분투 서버에 설치를 했다 맨티스 유저의 권한은 보기가능, 보고가능, 갱신가능, 개발자, 매니저, 관리자(VIEWER, REPORTER, UPDATER, DEVELOPER, MANAGER and ADMINISTRATOR)로 5개 권한이 있다. 뒤로 갈수록 높은 권한을 가지고 있다. 프로젝트 관련해서는 각각 아래 작업이 가능하다.(기본값) 매니저 권한인 manager1로 로그인한 상황. 프로젝트 생성이 불가능하다. 나는 매니저도 프로젝트 생성이 가능하도록 만들고 싶다. 디폴트 환경 ..
NestJS | TypeORM: entity 정의(soft delete, 추상클래스)
·
TIL
✔️ soft delete 전에는 soft delete를 위해서 is_active라는 컬럼을 추가해서 삭제 요청이 오면 실제 삭제 대신 is_active=false로 바꿔주는 작업을 했었다. TypeORM에서는 soft delete를 지원한다. 레코드를 삭제하는 대신 @DeleteDateColumn()이 붙어있는 컬럼(날짜)을 업데이트한다. 이 컬럼이 포함되면 데이터를 읽을 때 이 컬럼이 null인지 체크하는 where절이 추가된다. soft delete의 cascade도 가능하다. ✔️ 이력관리 데이터의 생성, 수정 이력을 관리하기 위한 컬럼으로 created, updated가 필요하다. 각각 데이터가 생성됐을때, 업데이트됐을 때의 시간을 timestamp로 기록해야 하는데 이것도 typeorm의 데코..
NestJS | @nestjs/config 패키지를 활용한 환경변수 관리 -> db연결
·
TIL
dotenv.config를 활용해서 NODE_ENV에 따라 각각 다른 db를 연결했던것을 @nestjs/config 패키지를 활용해서 ConfigModule을 동적 모듈로 사용하는 방법으로 변경하기 ✔️env파일 경로 설정하기 ConfigModule.forRoot()에 옵션값을 넘겨주면 동적 모듈을 생성할 수 있다. (method) ConfigModule.forRoot(options?: ConfigModuleOptions): DynamicModule 옵션에는 이런 값들을 넣을 수 있는데 envFilePath에 env파일의 경로를 주면 해당 파일을 루트경로에 있는 .env대신 읽어서 환경변수를 구성한다. 환경변수 파일들은 src/configs/envs에 넣어놨고 참고사이트를 참고해서 NODE_ENV에 따라..
NestJS | production/development환경 각각 다른 DB 사용하기(dotenv)
·
TIL
✔️ production/development 환경 구분하기 개발을 하면서 이것저것 테스트를 해보게될텐데 배포해서 출시된 프로덕트와 연결된 디비에다가 테스트를 막 하면 안되겠쥬..? 그래서 배포환경/개발환경일때 따라서 각각 다른 db를 사용해야 하는데 환경변수 관리 라이브러리 dotenv를 이용해서 하는 방법이 있다. 환경에 따라 서로 다른 .env파일을 읽도록 하는것. node.js는 NODE_ENV라는 환경변수를 활용하여 서버의 환경을 구분한다. package.json 파일을 수정하여 npm run start:dev 명령이 수행될 때 NODE_ENV가 development로 설정되도록 한다. // package.json "scripts": { ... "start:dev": "NODE_ENV=devel..
NestJS | 패키지 버전 지정해서 세팅하기
·
TIL
글로벌환경과 다른 nest 버전으로 프로젝트 시작하기 내 컴터에 깔린 nestjs 버전은 9.1.4이다. 그래서 그냥 nest new 프로젝트명 명령어로 프로젝트를 시작하면 아래처럼 ^9.0.0으로 깔리게 된다. 나는 8.2.x버전의 프로젝트가 필요한 상황이라 아래 명령어로 프로젝트를 시작했다. $ npx @nestjs/cli@버전 new 프로젝트명 npx @nestjs/cli@^8.2 new 프로젝트명 그럼 이렇게 8.0.0이상 버전으로 깔리게 된다. 더보기 8.2.0이 아니라 8.0.0이라서 package.json에서 직접 ^8.2.0으로 변경 후 npm install을 해봤는데 에러가 났다. ^8.0.0은 8이상이니까 8.2에서도 돌아가긴 할테니까 패쓰.... 9.1.4버전에서 nest new를 해..
데이터베이스 | 인덱스란?
·
기타
데이터베이스에 대한 대다수 요청은 전체 데이터 중 극히 일부분만을 필요로 한다. 그런데 레코드를 검색하기 위한 보조 기술이 따로 없다면 DBMS는 요청에 만족하는 데이터를 검색하기 위해 존재하는 레코드를 처음부터 끝까지 순차적으로 검사하게 되는 비효율적인 결과를 낳는다. 인덱싱 기법 DBMS에서 신속한 데이터 검색을 지원하기 위한 보조 기술 탐색키를 이용해서 해당 데이터가 저장된 블럭을 빠르게 파악해서 검색 결과를 생성해 준다. 탐색키: 파일에서 레코드를 찾는데 사용되는 컬럼(들). 인덱스 기반 검색 사용자가 어떤 레코드를 검색하면 DBMS는 찾을레코드 블럭을 바로 메모리에 올리는 것이 아니라 인덱스 블럭을 올린다. 어차피 올리는거 그냥 올리면 되는거 아닌가? 괜히 한단계 더 추가된거 아닌가? -> 인덱..
데이터베이스 | 트랜잭션 동시성 제어 - 락 기반 규약
·
기타
여러 트랜잭션이 동시에 같은 데이터에 대한 읽기나 갱신 작업을 할때 데이터의 무결성이 훼손될 수 있다. ex) 계좌 B 잔액: 0원 트랜잭션 1: A -> B 1000원 입금 트랜잭션 2: ATM에서 B에 1000원 입금 작업완료 후 계좌 B의 잔액은 2000원이 되어야 한다. 그런데 두 트랜잭션이 동시에 실행될 경우 t1 t2 READ(A) A := A - 1000 WRITE(A) READ(B) B := B +1000 WRITE(B) READ(B) B := B +1000 WRITE(B) 두 트랜잭션 모두 B의 잔액이 0원일 때 읽은 후 1000원을 더해서 데이터를 갱신하고 있다. 그래서 B의 잔액이 2000원이 아니라 1000원이 되는 상황이 발생한다. 동시성 제어 트랜잭션 사이 연산 순서를 제어해서 ..
반응형