Development 73

관계형 데이터 모델 - 정규형이란?

관계형 데이터베이스는 여러 테이블들을 JOIN하는 방식으로 원하는 형식의 데이터를 얻을 수 있다. 이 때 각 테이블의 정보가 중복되지 않고, 독립적으로 구조화하기 위해 정규화 과정을 거친다. 이 때 정규형(Normal Form)은 보통 3단계로 분류한다. 제1정규형(1NF) 원자 값: 각 셀에는 고유한 단일 값이 포함된다. 테이블을 변경하지 않고 데이터를 추가할 수 있다. 서로 다른 관계를 서로 다른 테이블로 분리 외래 키와 함께 테이블 간의 관계 유지 제2정규형(2NF) 1NF를 만족 테이블의 모든 열은 Primary Key에 의존 제3정규형(3NF) 2NF를 만족 No transitive dependencies 3NF를 사용하는 이유 데이터를 업데이트하고 싶을 때 한 개의 테이블만 업데이트하면 되도록..

Development 2022.06.16

SQL과 NoSQL은 언제 써야할까?

SQL(관계형 데이터베이스)를 사용하면 좋은 점에는 다음과 같은 것들이 있다. SQL 쿼리 언어를 활용하여 유연하게 쿼리를 적용할 수 있다. 쿼리가 아닌 데이터를 모델링 한다. JOINS를 활용할 수 있다. 집계 및 분석을 수행할 수 있다. 빠른 검색을 위해 보조 색인을 추가할 수 있다. 데이터 볼륨이 작을 때 단순성을 위해 사용 ACID 트랜잭션: 오류, 정전이 발생한 경우에도 유효성을 보장하여 데이터의 무결성을 유지 비즈니스 요구 사항에 맞춰서 변경하기 용이하다. 반면 NoSQL(비관계형 데이터베이스)를 사용하면 좋은 경우들은 이러하다. 다양한 데이터 타입 형식으로 저장 많은 양의 데이터: 수평 확장이 가능 수평적 확장성 높은 처리량: 빠른 읽기 및 쓰기 성능 유연한 스키마: 모든 row에서 사용되지..

Development 2022.06.15

비전공 개발자의 첫 취업 (2)

코딩 부트캠프 부트캠프는 색다른 경험이었다. 활동은 완전히 원격으로 이루어졌다. 게더타운이라는 게임 같은 실시간 영상 통화 프로그램을 활용했는데, 나중에는 거의 현장에서 함께 하는 기분이 들었다. 매일 아침 9시에 접속하여 사람들과 인사를 나누고, 거의 밤 12시 혹은 그 이후까지 하루 종일 프로그램을 수행했다. 강의는 부트캠프에서 제공하는 강의를 들었다. 그렇기에 그 강의들이 다른 교육 매체의 강의들에 비해 아주 뛰어나지는 않을 가능성도 있었다. 그래도 개인적으로 이해하기 좋은 유익한 강의였던 것 같다. 어떠한 부트캠프를 선택하든 교육 프로그램이 완벽한 곳은 없지 않을까 싶다. 떠먹여 주는 대로만 받아먹는 것으로는 분명 부족할 수 있다. 자신이 배워야 할 것들을 체크해보고 배우지 않는 부분이 있다면 스..

Development 2022.06.12

[TIL] 코틀린 쿡북 / 실전 카프카

코틀린 쿡북 2장 코틀린 기초 파트를 읽고 있는데 정말 기초 내용인지는 모르겠다. 아직은 코틀린으로 한글자도 코딩할 수 없을 것 같다. 코틀린으로는 거듭 제곱하는 것도 간단하지 않은 모양이다. ansible을 통해 zookeeper를 설치하는 과정에서 Host key verification failed 에러가 발생했다. /etc/ansible/ansible.cfg 에서 [defaults] host_key_checking = False 라인을 추가하여 문제가 해결되었다. EC2로 파일을 복사하기 위해서 scp 명령어를 사용했다. scp -i /path/my-key-pair.pem /path/my-file.txt ec2-user@my-instance-public-dns-name:path/ EC2 인스턴스에 ..

Development 2022.06.09

비전공 개발자의 첫 취업 (1)

최근 개발자로서 취업에 성공했다. 비전공자이고 개발 공부를 시작한 지도 얼마 되지 않았기 때문에 아직 배울 것이 많고 갈 길이 멀다. 하지만 한 명의 '개발자'로서 경력을 시작할 수 있게 되었고, 따라서 현업에서 더 많을 것을 배울 수 있게 되었다. 취업까지의 과정이 어땠는지 짧게 공유하고 싶다. 작은 스타트업에서 인턴을 시작 코딩을 배우게 된 가장 큰 계기는 작은 스타트업에서 인턴으로 일할 기회를 얻었던 것이었다. 당시 나는 어떤 삶을 살아야 할지 고민이 많았다. 책을 읽는 데 가장 많은 시간을 보냈고, 창업 관련 준비도 해보고 있었다. 어쨌든 일하게 된 회사에서는 코딩 능력을 필요로 하고 있었다. 나는 당시 코딩할 수 있는 능력이 거의 없었다. 대학교 1학년 때 수강했던 기초 과목이 전부였다. 그래서..

Development 2022.06.05

[TIL] 트리 알고리즘 강의, 문제 풀이 / 면접 정보 공유 서비스 프로젝트

자바스크립트 코딩 테스트 https://www.acmicpc.net/problem/9372 9372번: 상근이의 여행 첫 번째 줄에는 테스트 케이스의 수 T(T ≤ 100)가 주어지고, 각 테스트 케이스마다 다음과 같은 정보가 주어진다. 첫 번째 줄에는 국가의 수 N(2 ≤ N ≤ 1 000)과 비행기의 종류 M(1 ≤ M ≤ 10 000) 가 www.acmicpc.net 문제 자체가 함정인 것 같다. 트리 알고리즘을 시도하다가 필요가 없다는 사실을 깨달았다. const fs = require('fs') const input = fs.readFileSync('dev/stdin').toString().trim().split('\n') const [_, ...cases] = input let index = ..

Development 2022.02.14

[WIL] 프론트엔드, 백엔드 분리 프로젝트 / 알고리즘 공부

자바스크립트 코딩테스트 https://www.acmicpc.net/problem/19583 19583번: 싸이버개강총회 첫번째 줄에는 개강총회를 시작한 시간 S, 개강총회를 끝낸 시간 E, 개강총회 스트리밍을 끝낸 시간 Q가 주어진다. (00:00 ≤ S < E < Q ≤ 23:59) 각 시간은 HH:MM의 형식으로 주어진다. 두번째 줄부터는 www.acmicpc.net const fs = require('fs') const input = fs.readFileSync('dev/stdin').toString().trim().split('\n') const [timesString, ...logsString] = input const times = timesString .split(' ') .map((x) =..

Development 2022.02.13

[TIL] 새 프로젝트 백엔드 구현 / 해쉬 알고리즘 / 스택, 큐 문제

새 프로젝트 '지금 우리 면접은' 백엔드 기본 구현 완료 https://github.com/kiwihannah/csProj_back GitHub - kiwihannah/csProj_back Contribute to kiwihannah/csProj_back development by creating an account on GitHub. github.com 심화 기능 추가 예정. 해쉬 알고리즘 강의 수강 자바스크립트 코딩테스트 스택 문제 https://www.acmicpc.net/problem/5002 5002번: 도어맨 첫째 줄에 정인이가 기억할 수 있는 가장 큰 차이 X a+b, 0)에서 뒤에 0으로 초기값을 넣어주지 않으면, 런타임 에러가 난다는 사실을 몇 시간만에 알았다. 이유는 잘 모르겠다.

Development 2022.02.12

[TIL] 백엔드 프론트엔드 협업, 큐 알고리즘, 스택 문제

백엔드로서 프론트엔드와 협업해보기 시작 큐 알고리즘 강의 수강 자바스크립트 코딩 테스트 https://www.acmicpc.net/problem/2841 2841번: 외계인의 기타 연주 첫째 줄에 멜로디에 포함되어 있는 음의 수 N과 한 줄에 있는 프렛의 수 P가 주어진다. (N ≤ 500,000, 2 ≤ P ≤ 300,000) 다음 N개 줄에는 멜로디의 한 음을 나타내는 두 정수가 주어진다. 첫 번째 정수 www.acmicpc.net https://github.com/fancyers/coding-test/blob/main/%EC%99%B8%EA%B3%84%EC%9D%B8%EC%9D%98%20%EA%B8%B0%ED%83%80%20%EC%97%B0%EC%A3%BC.js GitHub - fancyers/co..

Development 2022.02.11

[TIL] 정렬 코딩테스트, 스택 알고리즘 강의, 노마드코더 줌 클론코딩

자바스크립트 코딩테스트 https://www.acmicpc.net/problem/11497 11497번: 통나무 건너뛰기 남규는 통나무를 세워 놓고 건너뛰기를 좋아한다. 그래서 N개의 통나무를 원형으로 세워 놓고 뛰어놀려고 한다. 남규는 원형으로 인접한 옆 통나무로 건너뛰는데, 이때 각 인접한 통나무의 높이 www.acmicpc.net const fs = require('fs') const input = fs.readFileSync('dev/stdin').toString().trim().split('\n') const numCases = +input.shift() const cases = [] for (let i = 0; i < numCases; i++) { cases.push(input[2 * i + ..

Development 2022.02.10