CS

myGoodPlace
[DB] 다대다(M:N)를 일대다(1:N), 다대일(M:1)로 만들어주는 이유는 뭘까?
원숭이 엉덩이는 빨개, 빨가면 사과, 사과는 맛있어 우리는 익숙하게 사물과 사물을 연관지어서 생각할 수 있어, 관계형 데이터베이스(RDBMS)를 자연스럽게 받아들인다. 마치 객체지향을 공부할 때, 우리가 사는 세계와 비유하는 것을 자연스럽게 받아들이는 것처럼 그럼 관계형 데이터베이스에서, 두 테이블의 관계가 다대다(M:N)일 때, 이것을 일대다(1:N), 다대일(M:1)로 만들어주는 이유가 뭘까? 자, 다대다(M:N)가 되는 상황부터 살펴보자! 우리는 각 게시글마다 댓글을 등록한 회원들을 알고싶다. 하나의 게시글에는 여러 명의 회원이 댓글을 등록할 수 있고, 한 명의 회원 또한 여러 개의 게시글에 댓글 등록이 가능하다. 이러한 관계는 다대다가 될 수 있다. 다대다의 관계로 테이블을 구성을 어떻게 하면 될..
개발자로서 클린코드란
저는 보안과 성능을 모두 고려하면서도, 함께 일할 분들과 코드를 통해 의사소통이 가능한 개발자를 꿈꾸고 있습니다.?!저는 설명없이 작성한 코드만을 통해 대화할 수 있는 것이 바로 클린코드라고 생각합니다. 그리고 이러한 클린코드는 아래 3가지를 만족한다고 생각합니다.  1. 읽기 좋은 코드2. 컨벤션을 잘 지키는 코드3. 기능을 명확히 나타내는 코드  사실, 이렇게 생각은 하지만 이를 직접 실천하는 것은 정답 어렵다고 느끼기에, 이를 몸소 이루고 계신 분들을 정말 존경합니다.요새 링크드인에 정말 많은 인사이트가 있는데요. 저는 덕분에 지하철을 타고다니며 링크드인에서 다양한 인사이트를 얻고 있습니다. 그 중 모든 코드는 부채다라며 시작하는 글을 보며, 클린코드와 관련하여 깨달음을 얻은 경험이 있어서 링크를 ..
[네트워크] REST API를 꼭 지켜야하는걸까?
·CS/네트워크
REST API란 뭘까? REST API는 내가 무엇을 어떻게 요청할 것인지 REST의 원칙에 따라 작성한 API라고 생각한다. 그리고 이 API는 HTTP 규약을 잘 지켜서 보내야하며, 무조건적으로 지켜야하는 표준이 아니다. REST의 구성요소 3가지 1. 자원 2. 자원에 대한 행위 3. 행위에 대한 내용 REST API는 이 구성요소 3가지가 모두 API에 담겨있어야 한다고 말한다. 그리고 이것을 모두 잘~지킨 것을 RESTful하다라고 말하는 것이다. 그런데, 개발을 하다보면 조회를 한다고 GET을 사용하면 안되지 않을까? 라는 생각에 모두 지키는 것이 어려울 것이라고 판단하였다. 그리고 이것을 무조건적으로 지키는 것이 어렵다고 느꼈다. 그래서 여쭤봤더니, 무조건 조회는 GET으로 했을 때 RES..
[데이터베이스] 트랜잭션(Transaction) 격리수준
Transaction(트랜잭션) 격리수준 트랜잭션 격리수준을 계속 보면서 외웠는데, 이름의 의미와 각 격리단계를 보완하기위한 전략을 이해하는 방법으로 다시 격리수준을 학습해보았다. 이번에 조금 더 깊게 공부하면서, 왜 MySQL 혼자 Repeatable Read 의 격리단계를 기본 단계로 갖는지 알 수 있었다. (Next Key Lock덕분)그리고 오라클이 고가용성에 좋다고 알고있는데, 이것이 지원하지 않는 격리 수준과 관계가 있는걸까? 하는 의문이 들었다. 물론, 아직 의문을 해결하지는 못했다. 트랜잭션하나의 기능을 수행하기 위한 SQL 연산들의 집합을 의미트랜잭션의 성질Atomicity(원자성)트랜잭션은 모든 연산이 완전히 성공적으로 수행되어야 한다. 그렇지 않다면 아예 수행되지 않아야 한다. All..
[페어프로그래밍][알고리즘] 버블정렬
·CS/알고리즘
5분씩 총 30분동안 네비게이터와 드라이버의 역할을 번갈아가며 페어프로그래밍을 진행했다.페어 프로그래밍의 미션은 버블정렬을 구현하는 것이었다. 이번 기회를 통해, 내가 어떤 부분에서 정확히 알고 있고, 모르는지 확인할 수 있었다.채윤이랑 함께 페어 프로그래밍으로 버블정렬을 구현하면서 즐거웠고, 인상깊어서 구현 방법도 잊어버리지 않을 것 같다! 그래서 페어 프로그래밍을 하면서 느낀 점을, KPT 회고로 남겨보고자 한다.  Keep(현재 잘하고 있는 부분, 만족하는 부분)- 상대방이 어디까지 내가 표현한 것을 이해하고 있는지, 계속 확인하고 표현하고자 노력했던 것- 대화를 하면서, 상대방의 기분이 상하지 않도록 표현 하나하나를 조심히 한 것 Problem(개선이 필요하다고 생각하는 부분)- 상대방이 이해할 ..
[디자인 패턴] MVC
디자인 패턴 중 MVC가 있다. MVC는 뭘까? M은 Model, V는 View, C는 Controller를 의미한다. Model(이하 모델)은 데이터를 가지고, 연산 역할을 한다. View(이하 뷰)는 사용자의 입력을 받고, 사용자에게 화면을 보여주는 역할을 한다. Controller(이하 컨트롤러)는 모델과 뷰 사이의 중재자로서, 뷰의 요청을 받아 모델에게 알맞는 요청을 넘기고 받아 뷰에 해당 응답을 넘겨주는 역할을 한다. 왜 이렇게 모델, 뷰, 컨트롤러로 나누는걸까? 먼저 나누지 않는 것의 특징을 보자. JSP(Java Server Page)는 뷰(HTML)와 컨트롤러(Java)가 한 파일에 모두 다 있다. 1. 이렇게 나누지 않은 JSP 파일이 만일 2,000줄의 코드로 이루어져 있다면, 한 줄을..
[운영체제] 프로세스
·CS/운영체제
프로세스의 이해 프로세스란 실행되는 프로그램 이 때, 메모리에 적재되며, CPU를 할당받는다. 프로그램이란? 명령어의 집합을 파일로 묶어놓은 것 프로세스에 할당되는 메모리 공간 4가지의 영역으로 이루어짐 Code Data BSS Data Heap Stack Code 영역 프로그램의 코드가 기계어로 저장되는 공간 Data 영역 전역변수와 정적변수가 저장되는 공간 초기화 되지 않은 변수가 저장되는 곳 BSS, 그렇지 않은 곳으로 다시 구분됨 Heap 영역 런타임시에 생성되는 변수가 저장되는 공간 Stack 영역 함수 호출 시 생성되는 지역 변수 및 매개 변수가 저장되는 공간 CPU와 Code영역의 연관성 프로그램을 실행하기 위해서는 CPU가 코드를 읽고, 연산을 수행해야한다. CPU의 PC는, CPU 내부에..
[자료구조] Array vs List, ADT
·CS/자료구조
1. Array vs List Array 연속적인 공간에 순차적으로 같은 자료형의 원소들을 저장하는 자료구조 List 순서를 가지며, 추가/삭제/조회가 가능한 ADT 구현 방법 array를 사용 ⇒ ArrayList node를 사용 ⇒ LinkedList 2. ADT Abstract Data type 특징 자료구조의 특징, 속성, operation operation의 예: stack의 경우 push, pop what에 대해 기술할 뿐, how에 대해서는 말하지 않음 어떻게 구현하는지에 대해 기술하지 않음 how까지 적용한 것이 DS(Data Structure) 예시 Stack Queue List in Java ADT ⇒ interface DS ⇒ class
sooyeon-kr
'CS' 카테고리의 글 목록