분류 전체보기 85

깃허브 Remote Host Identification has changed 에러 해결하기

어느 날 갑자기 다음과 같은 오류를 마주했다. 처음보는 형태의 오류여서 정말 누군가가 해킹을 시도한 것일까 조금 걱정했다. 아마 깃허브 측에서 rsa ssh 호스트 키를 변경하여 생긴 오류같긴 한데, 이게 변경된지는 벌써 반 년도 넘어서 왜 이제와서 워닝을 띄우는 거지? 하는 의문이 들긴 했다. 해당 내용은 여기서 확인해볼 수 있다. 인터넷을 뒤져서 찾아낸 해결방법은 그다지 복잡하지 않다. 커맨드창에 다음의 명령어를 입력하면 된다. $ssh-keygen -R github.com ~/.ssh/known_hosts에 존재하는 github.com 호스트와 관련된 라인을 지워주는 역할을 한다. 이후에 다시 한 번 git pull을 시도하면 다음과 같은 물음이 뜬다. 두 번째 줄의 fingerprint가 다음 중..

카테고리 없음 2023.09.21

제 9회 K-해커톤 참가 후기 / 예선부터 결선까지

작년에 참여했던 K-해커톤이 올해 10회를 맞이했다는 광고 메일을 받고, 미루고 미루던 해커톤 후기를 더는 미룰 수 없겠다는 생각이 들어 작성한다. 해커톤 후기를 작성하는 건 처음이라.. 해커톤 후기를 읽는 사람들이 어떤 걸 바라고 읽으러 오는지는 모르겠으나 최대한 해커톤 자체에 대한 일반적인 정보를 아는대로 담아보겠다. K-해커톤 K-해커톤은 이름에서도 드러나듯이, 전국의 대학생을 대상으로 하는 해커톤이다. 예선부터 본선까지는 각 권역별로 진행하고, 결선에서는 권역 상관 없이 수상을 위한 경쟁을 하게 된다. 예선, 본선, 결선까지의 기간이 상당히 길다보니 일반적인 해커톤을 생각하고 지원하면 당황할 수 있다. (내가 그랬다.) 참가신청은 5월 말쯤부터인데 예선은 6월 말에서 7월 초에 하고 본선은 7월 ..

Ubuntu 용량 부족할 때 생기는 에러 해결과정

용량이 없으면 다음과 같은 에러 메시지를 마주하게 된다. No space left on device (28) ... 그럴 때 어떤 순서대로 해결하면 되는지 정리해두려고 한다. 생각보다 마주하기 쉬운 에러라는 생각이 들었다. 1. 현재 용량 확인 df -h를 입력하면 다음과 같이 현재 사용하고 있는 용량, 사용할 수 있는 용량을 확인할 수 있다. 현재 /dev/vdal에 Available한 용량이 0인 것을 확인할 수 있다. 2. 용량 큰 파일 목록 확인 용량이 부족한 것을 확인했으니 용량을 많이 잡아먹고 있는 파일 중 지울만한 것을 모색한다. 다음 명령어는 '/' 경로에 있는 파일 중 크기가 100MB 이상인 것을 출력한다. find / -size +100000 -print 3. 파일 삭제(우분투 휴지통..

카테고리 없음 2022.05.17

Facenet 얼굴 인식 모델 Fine-tuning 하기

졸업프로젝트에 이용할 얼굴 인식 모델의 한국인 얼굴 인식 정확도를 높이기 위해 Facenet이 제공한 pre-trained model을 직접 수집한 한국인 연예인 얼굴 이미지로 fine tuning 하였다. 그 과정은 다음과 같다. 학교 측에서 gpu 서버를 다소 늦게 제공해주어 불가피하게 구글 colaboratory와 anaconda+jupyter notebook 조합을 넘나들며 training을 해야 했는데, 이 글에서는 구글 colab 환경에서의 학습을 중심으로 설명하겠다. 데이터 준비하기 facenet에서 제공하는 코드를 기반으로 fine tuning할 생각이라면, dataset의 구조와 형식, 설정 등을 facenet에서 이용한 dataset과 일치시켜야 한다. 이는 facenet 공식 깃허브 ..

CS/기계학습(ML) 2022.05.11

Monitor란?

Monitor란? 프로세스 동기화를 구현하기 위해서 semaphore를 사용하는 것에는 몇 가지 문제가 있다. 우선 코딩하기가 쉽지 않고, 정확하게 작동한다는 것을 입증하기가 어렵다. 또한 한 번의 실수가 모든 시스템에 치명적인 영향을 미친다. V와 P의 순서를 바꾸어 쓰거나 P만 2번 쓴 경우 mutual exclusion이 깨지거나 deadlock 문제가 생길 수 있다. 이러한 문제를 해결하기 위해 사용하는 것이 Monitor이다. Monitor란 객체단위로 구성된 프로그램으로, 공유 데이터 멤버 변수와 그 변수들을 조작할 수 있는 함수들을 포함하고 있다. 모니터 내에서는 한 번에 하나의 프로세스만이 활동 가능하도록 구현되어 있어서 semaphore를 이용할 때처럼 직접 동기화 제약 조건을 명시적으로..

CS/운영체제(OS) 2022.05.10

Classic Synchronization problems 설명과 코드

1. Bounded-Buffer Problem (Producer-Consumer Problem) 동그란 링 모양의 bounded buffer에 저장되어 있는 공유데이터에 producer와 consumer가 접근을 하는 경우에 해당한다. producer와 consumer가 수행하는 프로세스는 다음과 같다. Producer 1. empty 버퍼가 있는지 확인한다. 없다면 기다린다. 2. 있다면 공유데이터(전체 버퍼)에 lock을 건다. 3. empty 버퍼에 데이털를 입력하고 버퍼를 조작한다. 4. lock을 푼다. 5. full buffer 개수를 하나 증가시킨다. Consumer 1. full 버퍼가 있는지 확인한다. 없다면 기다린다. 2. 있다면 공유데이터(전체 버퍼)에 lock을 건다. 3. full..

카테고리 없음 2022.04.24

Race Condition과 프로세스 동기화(Process Synchronization)

Race Condition이란? Race condition이란 여러 프로세스들이 동시에 공유 데이터에 접근하는 상황을 말한다. 데이터 최종 연산 결과가 마지막에 어떤 프로세스가 데이터를 다루냐에 따라 달라지기 때문에 문제가 된다. 이를 막기 위해서 동시에 실행되는 프로세스들은 동기화되어야 한다. OS에서 Race condition이 발생하는 경우 OS에서 race condition이 발생하는 경우는 크게 3가지가 있다. 1. 커널 수행 중 인터럽트가 발생한 경우 커널모드가 running하고 있을 때 interrupt가 발생하여 인터럽트 처리 루틴이 수행되면 둘다 커널 코드이므로 커널 주소 공간을 공유하게 되어 race condition이 발생한다. 2. 프로세스가 시스템콜을 하여 커널 모드로 수행 중인데..

CS/운영체제(OS) 2022.04.24

CPU 스케줄링 : CPU 스케줄러와 CPU 스케줄링 알고리즘들

CPU 스케줄링 CPU 스케줄링이란 어떤 프로세스에게 CPU를 할당을 해줄 것인지 정하는 것이다. CPU와 I/O 장치 등의 시스템 자원을 골고루 효율적으로 사용하기 위해서 CPU 스케줄링이 필요하다. CPU Scheduler가 Ready 상태에 프로세스 중에서 이번에 CPU를 줄 프로세스를 선택하면, Dispatcher가 그 프로세스에게 CPU 제어권을 넘기며 이 과정을 문맥 교환, context switch라고 한다. 스케줄링을 위한 큐와 스케줄러 프로세스를 스케줄링하기 위한 큐에는 세 가지가 있다. 프로세스들은 각 큐들을 오가며 수행된다. 1. Job queue : 현재 시스템 내에 있는 모든 프로세스의 집합 2. Ready queue : 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리..

CS/운영체제(OS) 2022.04.23

프로세스 관리 : 프로세스 생성과 종료, 부모 프로세스와 자식 프로세스

프로세스 생성 시스템이 부팅된 후 최초로 생성되는 프로세스는 운영체제가 직접 생성하지만, 그 이후에는 이미 존재하는 프로세스를 복제하여 다른 프로세스를 생성하게 된다. 이때 새로운 프로세스를 생성하는 기존 프로세스를 부모 프로세스라고 하고, 새로 생성되는 프로세스를 자식 프로세스라고 한다. 프로세스는 전체적으로 트리의 계층 구조를 형성한다. 프로세스는 자원을 필요로 하는데 이 자원을 운영체제로부터 받을 수도 있고 부모 프로세스와 공유할 수도 있다. 부모와 자식 간의 자원 공유는 크게 3가지로 나눠진다. 1. 부모와 자식이 모든 자원을 공유하는 모델 2. 일부만을 공유하는 모델 3. 자원을 전혀 공유하지 않는 모델 대부분의 경우 3번에 속하며, 프로세스 부모와 자식 프로세스의 수행 방식 또한 두 가지로 나..

CS/운영체제(OS) 2022.04.21

파일 시스템과 DBMS의 비교

파일 시스템을 이용한 데이터 관리 파일 시스템 파일은 기본적으로 순차적인 레코드들로 구성되며, 각각의 레코드는 연관된 필드들의 모임이다. 파일에 접근하는 방식이 프로그램 내에 상세히 표현되어, 프로그램과 데이터의 독립성이 충분히 보장되지 않는 데이터 종속성 문제가 있다. 예를 들어 만약 A라는 응용 프로그램에 변화가 생기면, 그 프로그램과 연관된 파일 B와 파일 B를 쓰는 다른 프로그램들까지 같이 수정해주어야 하는 것이다. 이런 번거로움은 상대적으로 높은 유지보수 비용을 초래한다. 그러나 파일 시스템의 단점은 이뿐만이 아니다. 파일 시스템의 단점 1. 같은 데이터가 서로 다른 여러 개의 파일에 중복해서 저장된다. 특정 데이터를 변경하려면 해당 데이터를 포함한 파일을 모두 수정해야 하기 때문에 데이터 불일..