2026년 11월 10일 화요일

2026년 11월 업무 환경

하드웨어

  • Apple Mac mini (2024, M4 Pro, 64GB)
  • Microsoft Surface Pro 11

소프트웨어

ChatGPT가 핵심이다. 

Plus 구독 중. 가끔 할당량을 다 쓸 때도 있지만 간간히 제공해주는 리셋권이 있기에 Pro까지는 필요 없다. 

주로 하는 작업은 코딩과 회로 설계, 문서 초안 만들기. 

코딩은 내가 직접 코드 안 본 지 오래됐다. 가끔 구조 정도는 다듬어 준다. 물론 코드 말고 자연어로… 확실히 수개월 전에 비해 월등히 좋아졌다. 

Codex를 원격 연결해서 사용하기도 한다. 그래서 모든 작업은 사무실의 맥 미니에서 거의 이뤄지고 있다  

회로 설계는 KiCad 검토를 맡겨보다가 회로도까지 그려보라고 하는 중. 완전 마음에 드는 수준은 아니다. 엉뚱한 심볼을 쓸 때도 있고 내장 심볼이 있는데 굳이 새 심볼을 만드는 경우도 많다. 그리고 회로도가 예쁘진 않다. 그냥 그냥 ERC 통과 수준. 그러다 보니 아트웍은 그냥 내가 한다. 회로도 그리기는 코딩보다 토큰을 훨씬 많이 먹는다. 

OpenCode Go를 추가로 구독하고 deepseek-v4.1-flash를 Hermes와 연결해서 개인 비서로 쓰고 있다. 

주로 영수증 정리. 영수증 입력하면 회사 Sharepoint 내 관련 Lists로 정리. 

Sharepoint의 사이트 페이지 기능을 사내 지식 베이스로 구축하기 위해 노력 중인데 이때도 Hermes를 적극 사용하고 있다. 

두 경우 모두 MS Graph API 기반으로 연동 중. ChatGPT로 할 수도 있겠지만 단순 API 연동은 Hermes의 가성비가 훨씬 좋다. 

최근에는 네이버 커머스 API도 연동해 보고 있다. 기본적인 연동은 가능해져 간단한 상품페이지 수정, 주문 확인도 Hermes가 한다. 어떻게 워크플로에 녹일지는 계속 고민 중. 

2026년 11월 6일 금요일

야구에 빠지다.

올 시즌 막판에 한화이글스가 완전 죽을 쑤고 있는데 무슨 직관할 맛이 나냐고?

사실 티켓팅을 도전 안해본건 아니다. 올 시즌 초에는 한화가 잘 하는 편이었고 찐팬이 아니기에 방만한 자세로 티켓팅을 시도하니 될 리가 없었다.

그런데 어느 순간부터 초3 아들이 야구에 반응하기 시작했다.


결국...

  • 8월 30일: NC다이노스
  • 9월 13일: 기아타이거스(원정)
  • 9월 23일: 롯데자이언츠
  • 10월 3일: 키움히어로즈
  • 10월 10일: NC다이노스(홈 피날레)
직관을 다녀왔다.
결과는 전부 패.ㅋㅋㅋ

아쉬운 마음으로 요새 포스트시즌을 감상하고 있다.
내년에는 좀 더 본격적으로 다녀봐야겠다.


2026년 7월 13일 월요일

2026년 7월 업무 환경

하드웨어

  • Apple Mac mini (2024, M4 Pro, 64GB)
  • Microsoft Surface Pro 11

개발

  • OpenCode + OpenCode Go
    • deepseek-v4-flash: 주로 사용
    • deepseek-v4-pro: 복잡한 요청, Open Code Review 등에 연동해 사용
  • Emacs: 가끔 파일 열어 내용 확인할 때
문서 작업
  • 초안작성: Gemini Canvas
    • 3.5 Flash로 하면 토큰 금방 한계 도달
  • Office 365, 한글, ...
생각해보니 코딩할 때 Antigravity도 안쓰고, 굳이 유지할 필요가 있을까 싶어 어제 날짜로 Gemini (Google AI Pro)를 해지했다. 구독 완전 종료되는 시점부터 ChatGPT로 갈아탈 생각.

2026년 7월 12일 일요일

학나래교 남단 까지 라이딩

 두 아들과 함께, 푹푹 찌는 일요일 아침부터 신나게 라이딩

코스: 도담동 - 아름동 - 제천 - 금강 - 세종보인증센터 - 학나래교 남단 - 세종보인증센터 - 한누리대로 - 도담동





2026년 7월 4일 토요일

오송역 근처까지 찍고 오기

 


코스: 출발 - 해밀동/산울동 - 조성습지공원 - 오천자전거길 - 오송역 근처 금강10공구강외지구주차장

다음 무심천교인증센터 도전을 위한 중간 지점까지 완료

조치원비행장 옆을 지날 때 두어번 급경사가 반복되서 힘들었음

돌아올 때는 조성습지공원 - 해밀동/산울동의 오프로드 업힐은 어려울 것 같아서 호수공원 쪽으로 돌아 왔음. 덕분에 장거리.

2026년 5월 14일 목요일

오래간만에 STM32 펌웨어 작업 시작하다가 느낀 점

한동안 high level에서 놀다가 간만에 STM32 펌웨어 작업을 하게 됐다.

복잡한 펌웨어도 아니고 그 high level 코드가 돌아가는 리눅스 보드의 전원을 제어하는 16KB 플래시를 가진 MCU에 올라가는 펌웨어다.

사실, 이 MCU와 상관없이 리눅스 보드 전원 제어용 로드 스위치(active low)에 pull-down 저항을 달아서 전원을 일단 상시 공급하게 설계를 해놔서 당장 안해도 될 작업이었는데, 로드 스위치를 반대(active high) 타입으로 주문해서 조립했다. 아... 진짜...

급한대로 간단하게 펌웨어 만들어서 로드 스위치 입력 신호를 1로 줘야 했다.

오래간만에 STM32CubeIDE를 설치하고 새 프로젝트를 생성해보니... 어라? CubeMX가 없다. 아무리 찾아봐도.

알고보니 STM32CubeIDE 2.0 부터 CubeMX가 빠지게 됐단다.

이제부터 STM32CubeMX는 따로 설치하고 CubeIDE에서 작업하고 싶으면 CubeMX에서 CubeIDE용 프로젝트로 생성한 후 CubeIDE에서 import 하면 된다고...

그래서 윈도에 CubeMX를 설치했다. 다 설정하고 Code Generate 누르기 전에 생각해보니, CubeMX에서는 STM32CubeIDE나 EWARM용 프로젝트를 만들어주기도 하지만, Makefile, CMake 프로젝트도 만들어준다. 음... 안그래도 AI로 코딩하는 시대에 잘 됐다 싶었다.

문제는 나의 모든 개발용 툴들이 WSL2에 있다는 거다. 음. 윈도에서 만든 후 WSL2로 가져가도 큰 문제가 안될 것 같긴 한데... 이미 윈도용 디스크 압박도 심해서 부담스러웠던 터라 CubeMX를 지우고 WSL2에서 설치해보기로 결정.

STM32CubeMX를 다운받아 WSL2에서 압축 풀고 인스톨 실행하면 의외로 CLI로 진행이 된다.

설마 본 프로그램도 CLI로만 도는건가 해서 설치 후 실행해봤더니 역시나 X11 디스플레이를 못잡는다.

$ ./STM32CubeMX
Check exe path on linux
FullExe path1 is: /home/jsjeong/STM32CubeMX/STM32CubeMX
Exe path is: /home/jsjeong/STM32CubeMX
Search java from relative path ----
Checking java in /home/jsjeong/STM32CubeMX/./jre/bin/java
current working dir : /home/jsjeong/STM32CubeMX
av[0] ./STM32CubeMX
chdir to :/home/jsjeong/STM32CubeMX/.
New current working dir /home/jsjeong/STM32CubeMX
Full command: /home/jsjeong/STM32CubeMX/./jre/bin/java
-args[0] java
-args[1] -jar
-args[2] STM32CubeMX
log4j user configuration file not found: /home/jsjeong/.stm32cubemx/log4j2.xml
Configure log4j with default settings from jar:file:/home/jsjeong/STM32CubeMX/STM32CubeMX!/log4j/log4j2.stm32cubemx.xml
2026-05-14 08:07:38,683 [INFO] MicroXplorer:98 - [MX] MX Start == 49483568554686
2026-05-14 08:07:38,687 [INFO] MicroXplorer:653 - Detected Java Version = 21.0.9
Exception in thread "main" java.awt.HeadlessException:
No X11 DISPLAY variable was set,
or no headful library support was found,
but this program performed an operation which requires it.
        at java.desktop/java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:164)
        at java.desktop/java.awt.Window.<init>(Window.java:553)
        at java.desktop/java.awt.Frame.<init>(Frame.java:428)
        at java.desktop/java.awt.Frame.<init>(Frame.java:393)
        at java.desktop/javax.swing.SwingUtilities$SharedOwnerFrame.<init>(SwingUtilities.java:1925)
        at java.desktop/javax.swing.SwingUtilities.getSharedOwnerFrame(SwingUtilities.java:2001)
        at java.desktop/javax.swing.JWindow.<init>(JWindow.java:183)
        at java.desktop/javax.swing.JWindow.<init>(JWindow.java:135)
        at com.st.microxplorer.stobjects.STSplash.<init>(STSplash.java:34)
        at com.st.microxplorer.maingui.MicroXplorer.main(MicroXplorer.java:189)
        at com.st.microxplorer.maingui.STM32CubeMX.main(STM32CubeMX.java:59)


생각보다 간단하게 해결

$ DISPLAY=:0 ./STM32CubeMX

깔끔하게 GUI로 실행된다.

이어서 여러가지 설정을 해준 다음, Makefile 프로젝트로 code generate 후, 프로젝트 디렉토리 가서 make 하니 성공.

아... 드디어 무거운 STM32CubeIDE에서 해방인가...

코딩을 위해 OpenCode를 실행하면서 한가지 걱정되는 점이 있었다. STM32CubeMX로 프로젝트를 생성하면 나름 코딩 룰이 생긴다. USER CODE BEGIN ~ USER CODE END 사이에만 사용자 코드를 넣어야 한다. 그 외에 코드를 넣으면 CubeMX로 재설정 하는 순간 그 블록 밖의 코드는 전부 사라진다. 과연 OpenCode가 이 룰을 감지할 수 있을까?

/init 으로 초기 프로젝트 파악 및 AGENTS.md 파일 생성하게 했더니...

AGENTS.md 생성 완료. 요약:

- 대상: STM32L011F4Ux (Cortex-M0+), 16KB Flash / 2KB RAM

- 빌드: make / make clean, arm-none-eabi-gcc 10.3.1 필요

- 핵심 규칙: USER CODE BEGIN/END 블록 밖은 수정 금지 (CubeMX 재생성 구역)

- 하드웨어 구성: USART2(115200), LPTIM1(LSI 37kHz), GPIO(PA4,PA6 출력 / PA5 입력 / PA1,PB9 EXTI), HSI 16MHz

- 플래싱/디버그: 시스템에 도구 미설치, st-flash/openocd 외부 사용 필요

생각보다 잘 감지한다.

자 이제 작업 시작!