아직도 cmake는 제대로 쓰고 있다는 느낌이 당최 들지 않는다...

이하
@evenharder@hackers.pub · 24 following · 25 followers
이것저것 해보고 싶은 사람입니다. 지금은 C++과 함께 고통받고 있습니다.
실크송...이게 맞나...?
오늘 오후 4시부터 9시까지 49th ICPC World Finals Baku가 진행됩니다.
실시간 스코어보드: https://worldfinals.icpc.global/scoreboard/2025/index.html
실시간 스트리밍: https://www.youtube.com/live/93DYRPNRrRA
문제지: https://worldfinals.icpc.global/problems/2025/problemset.pdf
오늘은 다른 파트에서 나온 이상 현상을 보다가 흔한 실수 중 하나인 memcpy(dest, src, strlen(src))
를 발견하고 공유했다. 동적 할당 방지를 위해 std::string
과 std::format
을 못 쓰는 상황도 아쉽고, 프로젝트 초창기에 다양한 helper class(std::array
기반 문자열 등)가 정립이 되지 않아 아쉽다. 그 때는 정말 초짜 신입이었으니, 별 도리가 없기도 했다.
올해 초에 조금이라도 바로잡고자 문자열 조작 로직을 개량해 직접 snprintf
를 쓰지 않고 편리하게 문자열을 다룰 수 있도록 변경한 적이 있었다. 꽤 많은 팀원이 그 존재를 익혔지만 수많은 레거시 코드는 앞으로도 태곳적 상태에 머물지 않을까. 슬프기보다는 아쉽다. 근원적인 실수를 줄일 수 있는 기회가 더욱 있었을텐데...
금요일은 반차써서 실크송하러 가야겠다. 얼마나 황홀한 맵과 음악과 적과 기술이 날 반길까...
2주 동안 거의 못 봤던 Pyodide PR 작업이 오늘 모각코 시간에 혈이 뚫려서 조금 더 보완했다. 역시 때로는 휴식이 약이다.
오늘은 평소 출근보다 조금 일찍 나왔는데 조조할인이 되었다. 오전 6시 30분까지였구나...
이번 주는 내내 휴가이니만큼 즐겁게 휴식해야겠다
실크송 출시일에 연차를 써야하나...
회사컴이 점점 맛이 가고 있어서 내일 포맷을 할 예정이다. 브라우저 북마크나 환경설정 백업을 열심히 해두고 있지만, 꼭 몇몇은 기억 저 편 너머에 있다가 한참 나중에 생각이 나곤 한다...
블로깅의 쇠퇴, AI의 끝없는 학습, 비공개 플랫폼(Discord 등)으로의 이주, 짧고 중독성만을 강조하는 피드와 BM, 한 번 보면 다시 찾기도 힘든 SNS 포스트, 범람하는 가짜뉴스와 개소리와 혐오... 웹은 정보의 망망대해도 아닌 소행성대로 변해가고 있다.
이번 주는 그래도 dotfiles 올리고 Pyodide 첫 PR 제출하고...주말에 열심히 공부했다
연휴를 이용해 문제를 열심히 깎아 Call for Task에 제출했다. 선정이 되련지...
강의자료 정리한 부분도 적당히 가공해서 올리려고 하는데, 생각보다 백업이 파편화되어 있다는 안타까운 사실을 깨달았다...
C++ module에 대한 좋은 글을 발견했다. https://lucisqr.substack.com/p/why-nobody-is-using-c-modules
C++ module의 처참한 지원을 놀리기라도 하듯 https://arewemodulesyet.org/ 같은 홈페이지도 있지만, 왜 module이 더디게 발전하는지 알 수 있는 글이었다.
문서 번역과 리뷰가 참 노고가 많이 필요한 일이구나...
오늘 Pyodide 모임은 비록 40분을 늦게 도착해서 세미나는 많이 못 들었지만, Typer를 어떻게 교체해야 할지 조언을 들었다. 뒷풀이에서도 멘토 멘티분들과 가까워지는 시간을 잘 보냈다. 앞으로가 더욱 기대된다
오늘은 바이너리의 glibc++ 버전이 안 맞는 걸 삽질분석하다가 ldd와 objdump랑 조금 더 친숙해졌다. 해결책은 그냥 LD_PRELOAD긴 했지만, ldd -r -v
와 objdump -T
라는 재밌는 옵션을 발굴했다.
왜인지는 모르겠으나 회사컴을 Win11로 올린지 얼마 안 된 오늘 WezTerm이 실행이 안 되어서 Powershell v7로 급하게 이주했다. 회사 보안 프로그램 때문으로 보이는데 고치기도 어려워보인다. 대체 왜 이런 시련이...
pyodide issue 작업하며 python package의 구조를 조금씩 배우고 있다. 망각곡선 저 너머로 사라지기 전에 일지를 기록해놓아야겠다...
주변에 감사하며 살아가자는 진리를 다시금 깨닫는 새벽 12시 56분
올해 UCPC 본선에 H번 문제 시간선 통합을 출제했습니다! 구현이 풀이 도출에 비해 까다로운 문제임에도 불구하고 많은 팀이 도전해주셔서 감사했습니다. 내년에도 좋은 문제로 찾아뵙고 싶습니다 😊
내일은!! 퇴근하고 PT하고 pyodide랑 good first issue에서 종종 언급되는 typer library를 뜯어봐야겠다
멤버변수가 200개 가량 되는 C++ 클래스 인스턴스를 정녕 우아하게 직렬화할 수는 없는 걸까? 컴파일 에러 메시지를 보니 g++ paramater pack 상한에 걸리는 느낌이다
TDD 실습으로 TDD의 한계점만 느끼고 있다. std::cin buffer를 바꿔치기해서 thread를 띄우고 gmock에 시간차를 두고 표준 입력을 전달하려니 이게 프로그램 테스트인지 C++ 지식 테스트인지 모르겠다. 테스트 코드가 테스트할 코드보다 어려운 현상은 매우 흔하며, 대개 src 폴더에 있는 코드보다 더욱 빠르게 레거시 코드로 상해버린다. 테스팅은 소프트웨어 개발 주기에서 필수적인 역할을 지니고 있으나 TDD가 프로그램의 명확함을 보장하는 방향으로 굴러가긴 어렵다. 명확한 프로그램은 선행되는 테스트가 아니라 명확한 설계에서 나오기 때문이다.
교육 받으며 Windows 11에서 nvim dotfile이랑 lazygit 깔아 쓰려고 했는데 git이 계속 타임아웃 걸려서 순정 nvim에 미니멀한 .vimrc
적용해서 쓰고 있다. 기이하게도 git이 명령 하나에 (git log, git switch 포함) 2초씩 걸리고 lazygit에서 커서를 움직이면 diff pane이 한 줄씩 갱신되는 수준의 끔찍한 속도를 자랑하고 있다. Windows는 뭐가 잘못된걸까.
사내 작업환경에서 dotfile 묶음을 꺼내오려고 했는데 Gmail에 ps1
파일이 있는 압축 파일을 수신 거부하는 정책이 있는 줄은 몰랐다. 보안 사고 방지 때문이려나 싶다.
예전에 만들어놓았던 Oracle Cloud 계정으로 다시 instance 만들고 있다. WSL2가 너무 느리긴 하다
OSSCA 발대식에 사람이 정말 많다.
올해도 열리는 UCPC 2025에 많은 관심 부탁드립니다. 돌아오는 토요일에 예선이 있으며, Open Contest도 진행될 예정입니다.
오늘도 데이터 깎는 공돌이였다
오늘은 요리하고 집청소하는 날인데 장마가 끝나서인지 정말 덥구나...이럴수록 물을 든든히 마셔야 한다.
회사에서 테스트 프레임워크를 대공사하며 이런저런 리팩토링을 해야하는데, config file을 어떻게 생성하고 읽어야하는지에 대한 논의가 오갔다. TOML을 쓰는 방향을 강력히 주장했는데, 다음 주에도 이어서 논의를 이어나가봐야겠다
오! OSSCA 멘티로 선발되었다
Intel AVX나 ARM SVE intrinsic을 lsp랑 엮어보면 어떠려나...
현업에서 상용 AI를 쓰지 못한다는 사실이 답답하다... AI가 몇 년 전에는 상상도 못할 수준으로 발전했는데, 정작 써먹을 기회가 별로 없는 느낌이다
사무실에서 간식을 먹지 않기가 이리 힘든 일이었다니...평상시에 당에 얼마나 의존하고 있었는지 돌아보게 된다. 🥲
컴파일 한 번 할 때마다 푸시업을 10번씩 해야겠다...
작년 말에 구현을 주도했던 과제를 주제로 높으신 분들 앞에서 발표하는 날이다. 너무 긴장하지 말고 꼼꼼하게 준비해야겠다.
OSSCA에 지원 완료했다. 3지망까지 있었으면 좋았을텐데!
오늘은 파트원 한 분이 리모트 서버에 ssh-copy-id
를 해도 ssh 스크립트에서 비밀번호를 요구한다기에 분석을 해봤다. 사유는 나름 흔한 문제로, authorized_keys
의 잘못된 권한 설정이었다. 누가 chmod 777을 실행할 생각을 했을까.
이런 일에 익숙하진 않지만 나름 발휘한 기지 덕분에 해결까지 3분 정도밖에 안 걸렸다. ssh -v
가 친절하게 문제가 되는 부분을 알려줬기 때문이다.
debug1: Remote: Ignored authorized keys: bad ownership or modes for file {.ssh directory}/authorized_keys
앞으로도 Unix 유틸리티의 verbose 로그를 잘 활용해서 분석해봐야겠다.
다른 분 PR이 머지가 잘못되었는지 내 PR를 덮어써서 고생하고 있다. 어떻게 꼬인 건지 아직도 잘 모르겠다...
작년에 nvim에 연동해둔 lazygit과 git p4가 지금까지 얼마나 시간과 노고를 아껴줬는지 모르겠다. 하지만 git을 제대로 알고 쓰는 느낌은 아니라 종종 꼬이기도 한다. 조만간 Pro Git도 정독해봐야겠다.
종종 일 앞에 사람이 있다는 점을 간과하는 발언을 들을 때가 있다. 사람을 소울리스 코딩머신으로 취급한다거나, 부서의 상황을 배제하고 일만을 고려하는 의견들. 어느 정도는 일리가 있겠으나 성공적인 의사소통으로 평가하긴 어렵다.
오늘은 docker 환경에서의 원시적인 CI를 간단히 구축했다. C++ 프로젝트를 마운트해서 docker 안에 있는 toolchain으로 빌드해야 했는데, docker 안에서 수행할 script를 바깥에서 같이 마운트해서 다른 script로 호출하는 구조로 땜빵했다. 다른 부서원들이 편히 쓸 수 있어보여 만족스럽다.
bash script는 짤 때마다 앎이 넓어진다. 오늘 새롭게 배운 목록이다.
set -o pipefail
로 nonzero exit code를 pipe를 통해서도 전파할 수 있다.echo -e
로 backslash를 확장해서\e[1;33m
등의 색상을 적용할 수 있다.cat
은 기본적으로 색상출력을 지원하지 않는다.grep -q
는 조건이 부합되면 바로 종료되기 때문에 앞 프로세스의 입력을 다 받지 못할 수 있다.- 정말 오랜만에
printf
에%*
를 써봤다.
작성하는데 테스트까지 1~2시간 정도 걸렸는데 요즘 AI라면 금방 끝내지 않았을까 싶다...
빨간 공이 n개, 초록 공이 100-n개 들어있는 불투명한 통이 있습니다. n은 0에서 100까지의 정수 중 균등하게 무작위로 선택됩니다. 통에서 첫 번째 공을 뽑았더니 빨간 공이 나왔습니다. 첫 번째 공을 꺼내두고 통에서 두 번째 공을 뽑을 때, 빨간 공과 초록 공 중 어느 공이 나올 확률이 더 높을까요 (혹은 두 확률이 같을까요)?
왜 하늘 아래 x86이 있고 또 ARM이 있는가... 🥲
회사에서 C++ 애플리케이션을 만들고 고치는 개발자입니다. 개발하는 프로그램이 성능이 워낙 중요한지라 low-level 지식과 intrinsic도 살짝은 알고 있습니다. C++의 골때리는 세부사항도 많이 알게 됐습니다. 최근에는 학부에서 제대로 알려주지 못한 운영체제 지식을 학습하고자 OSTEP 을 읽고 있습니다. 주 편집기는 nvim이며, lazy에서 kickstart로 넘어가야지 생각만 하고 계속 미루고 있습니다.
학부 때는 알고리즘 문제풀이에 푹 빠져있었습니다. 동아리 운영도 2년간 했고, ICPC WF에도 출전했지만 벌써 몇 년은 된 옛 이야기가 되었습니다. 지금도 간간이 UCPC 및 ICPC 출제에 참여하고 있지만 흥미는 학부때만은 못합니다. 요즘은 제가 잘 알지 못하는 다른 주제에 대한 관심이 훨씬 더 커서, 고루고루 흡수하고 있습니다. 기술적인 관점뿐만 아니라, 사회에 선순환을 이끌어낼 수 있는 방법도 주요 관심사입니다.
코딩 외의 다른 취미로는 보드게임과 독서, 그리고 운동이 있습니다. 최근에는 친구들과 아컴호러 카드게임 헴록 베일의 축일 을 밤새 몰입하며 즐겼습니다. 기력과 여유가 더 생기면 집에 신디사이저와 오인페를 들여 다시 작곡을 해보고 싶습니다. 생각해보니, 이제 몇 년간 방치한 기술 블로그를 이 김에 되살릴 때도 되지 않았나 싶습니다.
프로필 사진은 본가에서 기르는 고양이 망고(8)입니다. 이제는 저도 몇 달에 한 번 정도밖에 못 보지만, 고양이는 귀여우니만큼 종종 타임라인에 올리도록 하겠습니다.
모두 잘 부탁드립니다. 감사합니다.
cmake는 너무 원시적이다...ㅠ