VEDA를 시작하고 13주차 1기 인원들간 간단한 회식을 가졌다. TIL(Velog), 취업관련 내용, 수업 분위기 등 공감할 수 있는 주제가 많았고 다들 개발자라 그런지 컴퓨터공학에 관련된 내용으로도 잘 놀 수 있었다. 열정있는 사람들과 함께 공부할 수 있어서 좋았고 CS공부에 열정을 가지고 있는 사람이라면 VEDA교육을 추천하고 싶다.
13주차 회고
금주 배운 Kernel Programming은 수업에 들어 가장 어려웠다. 돌이켜 생각하면 유저단에서 하라고 만들어둔 기능들을 커널단에서 시스템콜을 사용해 구현하는 이유를 이해하지 못했고, GPIO나 라즈베리파이 개념을 잘못 알면서 프로그램 디버깅을 하며 애를 먹었다.
문제를 빠르게 해결한 동기에게 물어보면서 개념을 잡고 프로그램을 테스트 할 수 있었다.
커널 프로그래밍을 할 기회가 있을까 싶지만, 몇일동안 고민한 문제인 만큼 오래 기억되면 좋겠다.

linuxOS를 설치한 RaspberryPi의 GPIO-pin에 LED를 연결하고,
GPIO를 제어하는 Module을 만들어 제어해보자.
새로 배운 내용
- 알고리즘: 난이도가 올라가면서 최적화를 필요로 하는 문제가 많다. 몇시간동안 고민해도 못푸는 문제도 종종 있어 다른사람의 코드를 참조하며 공부한다.
- YUVxxx 포맷: 카메라에서 많이 사용되는 포맷으로 휘도(Y)/청색차(U)/적색차(V)를 이용해서 색을 표현한다. 속성별 byte수에 따라 YUV420, YUV422 등등 나뉜다.
- kernel 프로그래밍: System-Call을 이용하는 module을 개발해봤다. 커널 모듈에 관련된 명령어는 insmod, rmmod, lsmod 가 있고 커널 모듈이 실행될때 init_module()이 호출되며, 모듈이 삭제될때 cleanup_module()함수가 호출된다.
- kernel GPIO: 리눅스에서 기본적으로 제공하는 입출력 포트인 GPIO를 사용해서 라즈베리파이의 GPIO-pin 입출력이 가능하다. LED를 제어하는 module을 만들어서 제어해 보자.
앞으로 해야할 내용
- MiniProject: 2인 프로젝트로 QT를 사용해 개발을 진행중이다. 생각보다 QT개발에 오래걸리는걸 느끼며, 프로젝트 진행상황수정이 필요함을 느낀다. 구현 항목들의 중요도를 나누고 빠른 개발로 프로젝트를 끝마쳐 보자.
- 독서: 최근 컴퓨터 수업에 집중하며 독서를 안하고 있다. 출퇴근할때 "그림으로 이해하는 네트워크 구조와 기술" 책을 시작으로 독서를 다시 시작해 보자.