반응형

전체 글 12

DB 정규화 한줄 설명

" 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화(Normalization)라고 한다. " - 위키백과 - 정규화 안하면 정규화되지 않은 데이터베이스의 중복된 데이터는 데이터의 수정에 큰 비용이 들게 할 뿐만 아니라, 데이터의 갱신 / 삽입 / 삭제가 제대로 이루어지지 않는 갱신 이상, 삽입 이상, 삭제 이상을 발생시킬 가능성이 있다. 용어 슈퍼 키 : 행을 특정할 수 있는 속성 집합 후보 키 : 더이상 줄일 수 없는 슈퍼 키 기본 키 : 후보 키 중 테이블의 대표로 선택된 키 정규화와 정규형 정규화된 데이터베이스는 특정 정규형을 만족하게 된다. Ex) 제1정규화가 된 데이터베이스는 제1정규형을 만족한다. 제1정규형(1NF 또는 최소형) 중복되는 항목이 없으며, 모..

개발/DB 2021.02.07

논리연산 수학식으로 하기

논리식을 수학식으로 표현하면 장점을 얻을 수 있다. 같은 논리식은 똑같이 표현된다. 깔끔함이 느껴져서 기분이 좋다. 기본 연산 $$NOT(X) = 1-X$$ NOT 연산을 위와 같이 만들 수 있다. $$AND(X,Y) = XY$$ AND 연산도 만들 수 있다. $$OR(X,Y)$$ $$= NOT(AND(NOT(X),NOT(Y)))$$ $$= 1-(1-X)(1-Y) = X+Y-XY$$ OR 연산도 만들 수 있다. $$XOR(X,Y)$$ $$= OR(AND(NOT(X),Y),AND(X,NOT(Y))$$ $$= (1-X)Y+X(1-Y)-XY(1-X)(1-Y)$$ $$= X+Y-3XY+XXYY$$ $$= X+Y-3XY+XY = X+Y-2XY$$ XOR 연산도 만들 수 있다. 증명에 사용 $$X^n = X$$ 숫..

공부/수학 2021.02.05

자바스크립트 for, while label

자바스크립트에의 반복문에도 label 기능이 있다. a:for(let i = 0; i < 4; i++) b:for(let j = 0; j < 4; j++) { if(i === j && i === 1) continue a; console.log(i, j); } let i = 0; a:while(true) { console.log("J"); b:while(true) { if(i === 10) break a; console.log(i); i++; } } continue 또는 break 뒤에 반복문의 label 이름을 붙여, 해당 반복문 바로 아래에서 break 또는 continue를 쓴 것과 같은 효과를 낼 수 있다.

개발/Javascript 2021.02.05

자바 ArrayList Vector 차이

자바에 있는 두 배열, ArrayList와 Vector 사이에는 어떤 차이가 있을까? Vector 클래스의 메서드들에는 synchronized 키워드가 붙어있다. ArrayList 클래스의 메서드들에는 synchronized 키워드가 붙어있지 않다. 즉, synchronized 키워드가 붙어있는 Vector 클래스는 여러 개의 스레드에서 같은 객체의 메서드를 동시에 실행하는 일을 막아 준다. 반면 ArrayList 클래스는 여러 개의 스레드에서 같은 객체의 메서드를 동시에 실행할 수 있으므로 아무 생각 없이 다중 스레드 환경에서 사용하면 문제를 일으킬 가능성이 있다. 또, ArrayList에서 내부적으로 존재하는 실제 배열의 길이를 알 수 없는데 반해, Vector에서는 그 길이를 capacity 메서드..

개발/JAVA 2021.01.04

자바스크립트 큰 숫자 편하게 표기하는 법

큰 숫자를 표시할 때 콤마가 안 찍혀 있으면 읽기 힘들다. JS에서는 콤마 대신 언더스코어를 이용해 숫자를 예쁘게 표기할 수 있다. console.log(1_000_000); // 백만 console.log(1_0000_0000); // 1억 console.log(1_23_456); // 간격이 달라도 상관없다 console.log(0b0011_0110); // 다른 진수도 작동된다 console.log(1_1.5_5); // 소수부분에도 쓸 수 있다 원하는 숫자 사이에 언더스코어를 하나씩 껴넣어 주면 끝이다. 백 단위로 끊는 대신 천 단위로 끊을 수도 있다. 그냥 마음대로 끊어도 된다. 1_0000_0000_0000_0000_0000_0000n // 1자(秭) 물론 BigInt를 표기할 때에도 사용할 ..

개발/Javascript 2021.01.04

AWS EC2 파일 업로드 with FileZilla

FileZilla를 이용하면 EC2에 손쉽게 파일을 업로드 할 수 있다. FileZilla를 이용해 EC2 인스턴스에 연결하기 위해서는 AWS에서 받은 pem 파일 또는 putty용으로 변환한 ppk 프라이빗 키 파일이 필요하다. 혹시나 이 파일이 어디에 위치해있는지 잊어버렸다면, 인스턴스에 연결할 때 사용하는 putty 연결 속성을 Load한 후 Connection - SSH - Auth를 들어가서 ppk 파일의 위치를 얻을 수 있다. FIleZilla를 키고 왼쪽 위의 "사이트 관리자 열기" 아이콘을 눌러 사이트 관리자 창을 연다. New site로 사이트를 추가해주고, 프로토콜 : SFTP 호스트 : EC2 인스턴스의 퍼블릭 IPv4 DNS 또는 IPv4 주소 로그온 유형 : 키 파일 사용자 : u..

개발/AWS 2021.01.03

Typescript infer 키워드, 함수 반환값 구하기

/** * Obtain the return type of a function type */ type ReturnType any> = T extends (...args: any) => infer R ? R : any; ReturnType, es5 타입스크립트 기본 라이브러리에 들어있는, 함수의 리턴 타입을 알아내는 타입 함수(?)다. infer 키워드는 extends 구문에서, 아무데에나 들어가서 그 위치에 들어갈 수 있는 최대한의 타입을 유추한다. 그리고 그것을 extends 문이 참일 때 반환될 구문에서 사용할 수 있다. 위 함수를 보면 문제점을 하나 알 수 있는데, 함수가 입력에 따라서 반환값의 타입이 바뀌는 경우 이를 정확히 찾아낼 수 없다는 것이다. 이를 해결하기 위해서 GetReturnType이..

개발/Typescript 2021.01.02

마인크래프트 1.12.2 모드서버 렉 해결법

마인크래프트 1.12.2로는 모드서버를 열면 렉이 엄청나다. 나도 이게 내 컴퓨터 성능상의 문제인 줄 알았다. 하지만 찾아 보니... 전혀 아니더라. 이 원인모를 렉의 해결법이 있더라. (찾는 데에는 정말 몇시간을 쓴 것 같다.) java -jar server.jar 서버를 시작하는 배치 파일(서버를 시작할 때 더블클릭하는 파일)을 메모장으로 열어 보면 이런 식으로 되어 있을 것이다. 이것을 다음과 같이 바꾸어 주자. java -Xms10G -Xmx10G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:-OmitStackTrace..

반응형