TDD(Test Driven Development) TDD(Test Driven Development) 란 테스트 주도 개발(TDD, Test Driven Development)은 소프트웨어를 개발하는 여러 방법론 중 하나이다. 제품이 오류 없이 정상 작동하는지 확인하기 위해 모든 코드는 프로그래머가 작성 하고 난 후 테스트를 거치게 된다. TDD 방법론에서는 제품의 기능 구현을 위한 코드와 별개로, 해당 기능이 정상적으로 작동하는지 검증하기 위한 테스트 코드를 우선 작성한다. 이를 통하여 테스트가 실패할 경우 테스트를 통과하기 위한 최소한의 코드로 개선한다. 최종적으로 테스트에 성공한 코드를 리팩토링하는 과정을 거치게 된다. * 정리 TDD 란 Test-Driven Development 로 개발(코드 ..
리팩토링(Refactoring) 과 시큐어 코딩(Secure Coding) 리팩토링(Refactoring) 이란 외부 동작을 바꾸지 않으면서 내부 구조를 개선하는 방법이다. 이 과정은 코드를 쉽게 이해하고 유지보수를 좋게 하는 것에 초점이 맞춰져야 한다. 가깝게 볼 때 클린 코드와 리팩토링의 차이가 별로 없어 보이지만 클린코드는 단순하게 가독성을 높이기 위한 작업인 반면 리팩토링은 클린 코드를 포함하여 유지보수를 위한 코드의 개선이라고 볼 수 있다. 클린 코드와 같은 부분은 설계단계에서 잘 이루어져 있는 것이 중요하고, 리팩토링은 결과물이 나온 이후 수정이나 추가 작업이 진행될 때 개선해 나가는 단계이다. 리팩토링(Refactoring) 목적 리팩토링의 목적은 소프트웨어를 더 이해하기 쉽고 수정하기 쉽게..
클린 코드(Clean Code) 클린 코드(Clean Code) 란 읽기 쉬운 코드가 "클린 코드(Clean Code)" 이다. 클린 코드의 가장 중요한 요소는 가독성이다. 즉, 모든 팀원이 이해하기 쉽도록 작성된 코드를 의미한다. 일반적으로 기존 코드를 변경하고자 할 때, 해석하는 시간과 수정하는 비율이 10:1 이라고 한다. 예를 들면, 코드를 변경하기 위해서 걸리는 전체 시간이 10시간이라고 하면, 사전에 코드를 분석하는 시간이 9시간 이상 걸린다는 것을 의미한다. 위의 그래프처럼 변경 비용과 대응 속도에 대한 이상치와 실제 프로젝트에서 발생하는 수치가 차이나는 이유는 프로젝트 초기에 클린코드로 개발하기 보다는 좀 더 빠르고 쉬운 방법을 선택하기 때문이다. 대표적인 것이 'Copy & Paste'이..
DFS(Depth First Search, 깊이 우선 탐색) BFS(Breadth First Search, 너비 우선 탐색) DFS(Depth First Search, 깊이 우선 탐색) 란 루트 노드 혹은 다른 임의의 노드에서 다음 분기(Branch)로 넘어가 기전에 해당 분기를 완벽하게 탐색하는 방법이며 스택(Stack) 혹은 재귀함수(Recursion)로 구현된다. 코드(Python) """ 1 / | \ 2 5 9 | /\ | 3 6 8 10 / | 4 7 """ graph = { 1: [2,5,9], 2: [3], 3: [4], 4: [], 5: [6,8], 6: [7], 7: [], 8: [], 9: [10], 10: [] } def recursive_dfs(v, visited = []): vi..
세마포어(Semaphore)와 뮤텍스(Mutex) 동기화 도구인 세마포어(Semaphore)와 뮤텍스(Mutex) 공유된 자원에 여러 프로세스가 동시에 접근하면서 문제가 발생할 수 있다. 이러한 문제를 해결하기 위하여 공유된 자원의 데이터는 한 번에 하나의 프로세스만 접근할 수 있도록 제한을 두는 동기화 방식을 취해야한다. 동기화 도구에는 대표적으로 세마포어(Semaphore)와 뮤텍스(Mutex)가 있으며 이 두 방식은 모두 공유된 자원의 데이터를 여러 프로세스 또는 스레드가 접근하는 것을 막는 역할을 한다. 임계 영역(Critical Section) 멀티 프로세스 환경에서 둘 이상의 프로세스가 동시에 접근해서는 안되는 공유자원의 코드 영역이다. 즉 여러 프로세스가 동일한 자원을 동시에 참조하여 값이 ..
트랜잭션(Transaction) 트랜잭션(Transaction; TX) 란 ? 트랜잭션(Transaction)은 데이터 베이스 상태를 변환시키는 하나의 논리적 기능 수행 단위이다. 즉 한번에 수행되어야 할 일련의 연산을 의미한다(Unit Of Work in Database Language). * 데이터베이스의 상태를 변화시킨다는 의미 ? 질의어(SQL: SELECT, INSERT, DELETE, UPDATE)를 통해 데이터베이스에 접근하는 것을 의미한다. * 작업의 단위? 많은 SQL 명령문들을 사람이 정하는 기준에 따라 정하는 것을 의미한다. 예시) 사용자 A가 사용자 B에게 만원을 송금한다. [DB 작업] 1. 사용자 A의 계좌에서 만원을 차감한다: UPDATE 문을 사용해 사용자 A의 잔고를 변경한..
PCB(Process Control Block) Process Metadata 프로세스는 컴퓨터에서 연속적으로 실행되고 있는 동적인 상태의 컴퓨터 프로그램, 즉 하나의 작업 단위이다. 프로세스는 여러가지 특징을 가지고 있는데 이러한 특징을 Process Metadata 라고 한다. 이 메타데이터는 프로세스가 생성되면 PCB(Process Control Block)에 저장된다. 이러한 메타 데이터를 통해 CPU는 각 프로세스를 구분할 수 있고, 이를 통해 프로세스가 여러 개일 때 전부 관리할 수 있다. 이렇게 프로세스 여러 개를 CPU 스케쥴링을 통해 관리하는 것을 Process Management 라고 한다. ※Process Metadata - process-id : 새로운 프로세스에 시스템이 할당해주는..
인덱스(Index) 인덱스(index) 란 ? 인덱스는 데이터베이스 테이블에 대한 검색 속도를 높여주는 자료구조이다. 만약 우리가 책에서 원하는 내용을 찾는다고 하면, 책의 모든 페이지를 찾아보는 것은 오랜 시간이 걸린다. 그렇기 때문에 책의 저자들은 책의 맨 앞 또는 맨 뒤에 색인을 추가하는데, 데이터베이스의 인덱스는 책의 색인과 같다. 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장된다. 즉 데이터베이스 테이블의 컬럼을 색인화 하게 되며 검색 시 해당 테이블의 레코드를 Full scan 하는 것이 아니라 색인화 되어있는 Index 파일을 검색하여 검색 속도를 빠르게 한다. 인덱스(Index)의 원리 인덱스를 해당 컬럼에 주게 되면..
- Total
- Today
- Yesterday
- 프로그래머스
- https
- 네트워크
- 정렬
- 데이터베이스
- CS.
- 보험
- 자바
- 리스트함축
- Greedy sort
- CS
- 자료구조
- It
- 스터디
- 리스트2
- SW
- 리스트 복사
- 완전탐색
- 프로그래머스강의
- 파이썬
- 이진탐색
- 프로세스 주소공간
- 알고리즘
- 리스트
- 연결리스트활용
- CS 스터디
- 운영체제
- 자료구조와알고리즘 23강
- 이차 리스트
- 코드업 기초
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |