본 포스트는 공룡책이라 불리는 Abraham Silberschatz, Peter B. Galvin, Greg Gagne의 『Operating System Concept 10th』 을 바탕으로 작성하였습니다. Ch 6. Synchronization Tools 협력적 프로세스란 시스템 내에서 실행 중인 다른 프로세스의 실행에 영향을 주거나 영향을 받는 프로세스이다. 협력적 프로세스는 논리 주소 공간(코드 및 데이터)을 직접 공유하거나, 공유 메모리 또는 메시지 전달을 통해서만 데이터를 공유할 수 있다. 이번 챕터에서는 협력적 프로세스들의 질서 있는 실행을 보장하여, 데이터의 일관성을 유지하는 다양한 메커니즘을 논의한다. 6.1 배경 이미 우리는 프로세스가 병렬로 실행될 수 있다는 것을 배웠다. (비동기) 하..
Nest 본 강의는 'john ahn'님의 강의를 정리한 내용입니다. https://www.youtube.com/watch?v=3JminDpCJNE 1. 데이터베이스 연동을 위해 정리 이전에 만들었던 소스코드 부분들을 정리하고, 이제 실제 DB를 붙여보도록 하자 board.model.ts의 board interface는 더 이상 필요하지 않으므로, status만 남기고 삭제해준다. 이제 BoardStatus 만 남으므로 파일명도 board.model.ts에서 board-status.enum.ts로 바꾸어 주도록 하자 controller를 비롯해서 여러군데에서 에러가 발생할텐데 board를 사용하는 곳은 다 주석처리하고, status를 import하는 부분은 import 경로를 바뀐 위치로 바뀌어주자 이제..
Nest 본 강의는 'john ahn'님의 강의를 정리한 내용입니다. https://www.youtube.com/watch?v=3JminDpCJNE 이번 강의는 PostgresSQL과 TypeORM에 대한 내용을 다룬다. 1. PostgresSQL 설치하기 이제부터는 진짜 DB를 사용하여 개발을 진행해보자 필요한 것은 두가지이다. PostgresSQL pqAdmin ( 데이터베이스를 보는 tool) 설치 방법은 다음에서 진행하면 된다. window에서 설치하기 https://www.postgresql.org/download/ Mac에서 PostgresSql 설치하기 https://postgresapp.com/downloads.html pgAdmin 설치하기 https://www.pgadmi..
Git Clone & rebase 1. Clone - git clone GIT_URL 2. rebase : commit 과거 시점으로 돌리기 - git rebase -i --root : commit이 옛날것 부터 순서대로 정렬 (pick -> edit로 바꾸면 그 시점으로 돌아감) - git rebase --continue : 되감은 내용 풀기 3. commit 사이에 새로운 commit 넣기 - git commit의 내용을 commit을 삽입하고 싶은 위치에 rebase를 한다. - commit을 하기 위한 파일을 생성 - 3개의 파일을 add, commit한 뒤 rebase --continue를 통해서 풀어준다. - git reset --hard origin/master ..
본 포스트는 공룡책이라 불리는 Abraham Silberschatz, Peter B. Galvin, Greg Gagne의 『Operating System Concept 10th』 을 바탕으로 작성하였습니다. Ch 8. 교착 상태 (Deadlocks) 다중 프로그래밍 환경에서는 여러 스레드가 한정된 자원을 사용하려고 서로 경쟁할 수 있다. 한 스레드가 자원을 요청했을 때, 그 자원을 사용할 수 없는 상황이 발생할 수 있고, 그때는 스레드가 대기 상태로 들어간다. 이처럼 대기 중인 스레드들이 결코 다시는 그 상태를 변경시킬 수 없으면 이런 상황을 교착 상태라 부른다. 교착 상태의 유명한 사례는 이러하다. 두 기차가 교차로에서 서로 접근할 때는, 둘 다 완전히 정지해야 하며 상대방이 없어지지 않는 한 누구도 ..
Git Fork & Clone 1. Fork - fork는 다른 사람의 Github Repository에서 내가 어떤 부분을 수정하거나 추가 기능을 넣고 싶을 때 해당 repository를 내 Github Repository로 그대로 복제하는 기능 (fork한 저장소는 원본(원래 repository와 연결 되어 있다.) 2. Clone - clone은 특정 원격 Repository와 나의 로컬 PC를 연결해 데이터를 복사하여 가져오는 기능 - 내가 생성한 원격 저장소를 내 컴퓨터와 연결해서 데이터를 복사하는 작업 - fork한 원격 저장소를 내 컴퓨터와 연결해서 데이터를 복사하는 작업 출처: https://velog.io/@imacoolgirlyo/Git-fork%EC%99%80-clone-%EC%9D%..
Nest 본 강의는 'john ahn'님의 강의를 정리한 내용입니다. https://www.youtube.com/watch?v=3JminDpCJNE 1. 커스텀 파이프 이전 시간에는 pipe에 대해서 알아보았다. 이전에는 빌트인 파이프만을 사용했다면 이번에는 커스텀 파이프를 구현해볼 것이다. 우선 커스텀 파이프를 구현하기 위해서는 PipeTransform이라는 인터페이스를 새롭게 만들 커스텀에 implements 해주어야 한다. 이 PipeTransform 인터페이스는 모든 파이프에서 구현해주어야 하는 인터페이스로, transform() 메서드를 구현해주어야 한다. transform() 메서드가 바로 pipe가 라우팅 핸들러로 인자를 보내기전에 작업을 메서드라고 생각하면 된다. 다음과 같은..
Nest 파이프와 예외처리 본 강의는 'john ahn'님의 강의를 정리한 내용입니다. https://www.youtube.com/watch?v=3JminDpCJNE 1. Nestjs Pipes 파이프란 무엇인가? @Injectable()데코레이터로 주석이 달린 클래스이다. 또한, 파이프는 컨트롤러 경로 처리기에 의해 처리되는 인수에 대해서 작동하는데 data transformation과 data validation를 위해서 사용된다. 다음과 같이 URL 요청이 왔을 때, 먼저 해당 URL에 대한 데이터들을 처리해주는 것이다. 만약 문제가 생기면 통과하지 못하고 Error 처리되며, 통과한다면 데이터를 처리해준 채로 handler에게 가게 된다. Data Transformation 입력 데..