연구 노트

    2024년 11월 4주 회고

    페어 프로그래밍 2페어 프로그래밍은 아주 잘 되고 있다. 혼자서 하는 것보다 둘이서 하는 것이 훨씬 진도가 잘 나간다. 언듯 보면 둘이서 1인분의 시간을 낭비하는 것 같지만 그렇지 않다. 둘이서 프로그래밍을 하다가 이렇게 하면 어떨까? 하는 아이디어가 나오면 바로 적용하게 된다. 혼자서라면 고민하다 시간을 끌고 적용을 안 하게 될 수도 있는 사안이었다. 머릿속으로만 생각만 하다 넘겨버릴 수 있는 아이디어도 실제 행동으로 옮겨졌다. 그래서 결국은 더 나은 효율을 낼 수 있었다. 그래서 만족한다. 동료가 조금 더 우리 코드에 익숙해지고 시스템을 이해하기 시작한다면 직접 수정도 가능해 보인다. 그때는 훨씬 더 높은 효율을 낼 수 있을 거라 기대한다.   2분명 좋은 내용인 것은 맞는데, 책 내용이 머리에 들어..

    2024년 11월 3주 회고

    페어 프로그래밍해보고 싶었던 페어 프로그래밍을 해볼 기회가 생겼다. 지금 진행하고 있는 프로젝트에 새로 합류한 동료와 함께하게 되었다. 누가 시켜서 한 것은 아니고 내가 페어 프로그래밍을 해보자고 했다. 빨리 동료에게 프로젝트를 이해시키면서 해야 할 일도 처리하기 위해서다. 예상대로 코드를 수정하는 데 드는 시간이 많이 들긴 했다. 하지만 혼자서 일할 때보다 코드를 더 면밀하게 살펴보며 짜게 되었다. 혼자 했으면 대충 이해하고 갔을 것을 하나하나 설명하며 하다 보니 당연히 그럴 수밖에 없었다. 코드를 빠르게 추가, 수정하지 못하니 처음에는 답답하다가도 불필요한 걱정을 하는 일이 줄어 오히려 좋기도 했다. 혼자 고민하느라 시간을 보냈을 것 같은 상황이 여러 번 있었다. 하지만 함께하던 동료가 그 고민은 나..

    2024년 11월 2주 회고

    테스트 코드테스트 코드가 절실한 한 주였다. 부끄럽게도 주도하고 있는 프로젝트에 테스트 코드가 없다. 그 대가를 톡톡히 치른 한 주였다. 테스트 코드가 없다면 수동으로라도 충분히 테스트해야 했다. 하지만 늘 그렇듯 시간이 문제였다. 일정에 맞추려니 딱 수정한 기능만 확인하고 SQA팀에 수정 버전을 넘겼다. 운이 좋으면 넘어가겠지만, 이번에는 그러지 못했다. iup-go는 이제 그만...사내용을 만든 프로그램 GUI로 iup-go를 사용하고 있다. Golang으로, 크로스 플랫폼을 지원하는 네이티브 GUI라는 점이 마음에 들어 사용했다. 하지만 이제는 슬슬 그만 놓아줘야 할 것 같은 생각이 든다. Windows에서는 문제가 없지만 Ubuntu에서는 알 수 없는 문제가 생겼다. 해결해 보려고 노력했지만, 끝..

    Node.js로 라즈베리파이 GPIO 제어하기 (Blink)

    Node.js로 라즈베리파이 GPIO 제어하기 (Blink)

    라즈베리파이에서 GPIO를 제어하기 위해 흔히 쓰는 라이브러리로 WiringPi가 있습니다. WiringPi는 C로 만들어진 라이브러리여서 Node.js에서 바로 사용할 수 없습니다. Node.js의 패키지 관리자인 npm에서 WiringPi를 검색해보면 꽤 많은 패키지가 나옵니다. 하지만 제대로 동작하지 않는 것도 있었습니다. 제가 시도해본 것은 'wiring-pi' 'node-wiring-pi', 'rpio', 'onoff' 인데, 이 중에서 제대로 동작한 것은 'rpio'와 'onoff' 입니다. 저는 둘 중에서 'onoff'를 사용하기로 하였습니다. 'onoff'를 선택한 이유 'rpio'와 'onoff' 중에 'onoff'를 선택한 가장 큰 이유는 인터럽트 가능 여부입니다. 'rpio'는 공식적..

    라즈베리파이에 Node.js 설치하기

    우선 패키지 관리자의 패키지 리스트를 업데이트하고 설치된 패키지를 업그레이드합니다. sudo apt update sudo apt upgrade Node.js 패키지 저장소를 패키지 관리자에 추가합니다. 아래는 2022년 10월 5일 기준 LTS 버전인 16.17.1을 추가하는 과정입니다. curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - 만약 최신 버전인 18.0을 설치하려 한다면 다음과 같이 명령을 입력합니다. curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E bash - 저장소 추가가 완료되었다면 Node.js를 설치합니다. sudo apt install nodejs ..

    WSL 환경에 vcpkg로 GTK 라이브러리 빌드할 때 의존성 문제 해결하기

    WSL 환경에 vcpkg로 GTK 라이브러리 빌드할 때 의존성 문제 해결하기

    WSL(Windows Subsystem for Linux) 환경에서 gtk4를 빌드하는 것을 시도해보았습니다. vcpkg를 사용하면 설치하려는 패키지의 의존성을 검사해서 필요한 것까지 모두 설치되는 것으로 알고 있었습니다. 그러나 정작 필요한 도구와 라이브러리를 자동으로 설치하지 못하고 계속해서 에러를 뱉어내는 문제가 있었습니다. 그럴 때마다 에러 로그를 살펴보며 필요한 것들을 하나씩 설치했습니다. 불편하고 시간이 걸리긴 했지만, 문제를 하나씩 해결해나갔고 결국 gtk4를 설치할 수 있었습니다. WSL 환경에서 vcpkg로 gtk4를 빌드하며 따로 설치해준 패키지는 다음과 같습니다. bison pkg-config autoconf libtool libxrandr-dev libx11-dev libxft-de..

    [ODROID] Linaro gcc? ARM 아키텍처를 위한 gcc!

    오드로이드 위키 페이지를 살펴보면 커널 빌드에 필요한 툴 체인이 무엇인지 알려주고 있습니다. "Linaro gcc"라고 하는데요, gcc는 gcc인데, Linaro는 무엇일까요? Linaro는 2010년에 만들어진 ARM 기반 리눅스 오픈 소스를 지향하는 엔지니어 중심의 비영리 단체입니다. 전 세계의 굵직한 회사들이 참여해서 ARM 기반 리눅스 소프트웨어에 필요한 도구를 개발하고 있습니다. 매월 마지막 주 목요일마다 최신 툴 체인을 배포한다고 합니다. 데비안 계열의 리눅스에서 "apt" 패키지 관리자로는 원하는 버전의 arm을 위한 gcc를 설치할 수 없습니다. 하지만 다행히도 Linaro 홈페이지에 방문하면 여태껏 배포된 gcc를 내려받을 수 있습니다. gcc 버전 4.9 ~ 7.5 저장소 gcc 버전..

    임베디드 리눅스 애플리케이션 개발 환경 준비하기

    임베디드 리눅스 애플리케이션 개발을 시작하려고 합니다. 그런데 개발 환경을 어떻게 구성하면 좋을까요? 우리에겐 두 가지 선택지가 있습니다. 타깃 디바이스에서 직접 개발 하는 방법과 호스트 PC에서 개발하는 방법입니다. 보통 타깃 디바이스 성능이 일반 PC보다는 좋지 않으므로 별도로 개발용 PC를 두고 작업을 하시는 게 낫습니다. 반면 당장 호스트 PC를 사용할 수 없거나 아직 개발 환경이 준비되지 않았는데 빨리 검토해봐야 한다면 타깃 디바이스에서 직접 코드를 작성해서 테스트해볼 수 있습니다. 이 글에서는 먼저 타깃 디바이스에 직접 개발 환경을 만들어 "Hello World!"를 출력해보는 예제를 설명할 것입니다. 그리고 호스트 PC에서 크로스 컴파일 개발 환경을 준비하는 과정을 살펴봅니다. 호스트 PC에..