우리가 모노리포를 유지하는 방식, 그리고 왜 DLL 경계가 더 중요한가 제가 운영하는 회사는 기본적으로 Monorepo를 지향합니다. 그래서 폴더 구조 역시 "코드를 예쁘게 정리하자"가 아니라, 의존성 관리와 재사용을 어떻게 할 것인가를 기준으로 설계되어 있습니다. 많은 분들이 "기능 단위냐, 도메인 단위냐"를 고민하시는데, 저는 조금 다른 관점에서 접근합니다.
'셰이더 프로그래밍 입문 1.5판' 전자책 출간 안내 『셰이더 프로그래밍 입문』 1판이 절판된 뒤로, 여러 대학교에서 여전히 교재로 사용하고 있음에도 정작 학생분들이 책을 구하지 못하는 상황이 오래 지속되었습니다. 중고 거래가 10만 원을 넘기는 사례까지 생기는 것을 보며, 더 이상 이렇게 둘 수는 없겠다는 생각이 들었습니다. 많은 분들께서 "전자책이라도 다시 내주시면 좋겠다"는 요청을 보내주셨고, 저 역시 어느 정도 책임감을 가지고 해결해야 한다고 느꼈습니다.
Stripe랑 KRW 로컬 결제, 그리고 DCC의 끝없는 싸움 해외 결제할 때마다 원화로 할래, 달러로 할래 물어보는 그거. 그게 DCC다. Dynamic Currency Conversion. 뭔가 편리해 보이지만 실제로는 거의 다 손해다. 카드사가 환전해줄 때보다 비싼 자체 환율에 마크업까지 얹어서 계산해버리니까. 그래서 대부분의 경우 그냥 현지 통화(USD, EUR 등)로 결제하는 게 훨씬 낫다. 해외 사이트에서 원화 결제하면 괜히 더 낸다 생각하면 된다.
AWS가 멈췄다고요? 멀티클라우드가 답은 아니다 지난 며칠, 많은 사람이 "안전"이라는 환상을 잃었다. 10월 20일(현지 시각) AWS US-EAST-1 지역에서 대형 장애가 터졌다. 수많은 앱과 서비스가 줄줄이 멈췄다. 원인은 DNS 해석 실패와 특정 내부 서브시스템/데이터 계층(EC2·DynamoDB API 경로 등)에서 시작된 오류로 분석됐다. 소셜, 게임, 생산성, 심지어 일부 정부·교육 서비스까지 덩달아 흔들렸다. 하루가 다 갈 때쯤 복구됐지만, 여파는 오래갔다.
Rust는 좋은 언어다. 하지만 종교는 아니다. 10년 전, 아무도 관심 없던 시절에 저는 이미 말했습니다. "Rust는 좋은 언어다." 그땐 데이터를 들이밀 수도 없었죠. 그냥 제 경험으로 느낀 겁니다. Rust는 기본 동작 자체가 프로그래머의 실수를 줄여주는 방향으로 설계되어 있었습니다.
두 개의 DB에 동시에 쓰면서 사이드 이펙트를 최소화하는 방법 보통은 데이터를 하나의 데이터베이스에만 저장합니다. 하지만 드물게 두 개의 물리적으로 다른 DB 서버에 동시에 데이터를 써야 할 때가 있습니다.
내가 만든 방어 유틸 함수 5종 세트 C# 기본 제공 Debug.Assert()만으로는 부족했다. 운영 중 발생할 수 있는 가정 위반, 내부 버그, 즉시 대응이 필요한 크리티컬 상황을 한 체계로 다루고 싶었다.
페북 Graph API 자주 끊기는 시대, ASP.NET Core 로그인은 이렇게 관리해야 한다 ASP.NET Core에서 페북 로그인 붙이는 건 원래 진짜 쉽다. NuGet에서 Microsoft.AspNetCore.Authentication.Facebook 패키지 하나 설치하고 services.AddFacebook()만 해주면 끝이다. AppId랑 Secret 넣어주면 바로 로그인 화면 뜨고, 토큰까지 잘 들어온다.
Git, 아직도 autocrlf라니 참 답답하다 가끔 회사 레포를 보면 아직도 core.autocrlf에 의존하는 경우가 있다. 솔직히 말해, 2025년에 이걸 쓰고 있다는 건 답답하다.
Assert 래퍼 깔끔하게 쓰기 C# 개발하다 보면 Debug.Assert()나 Debug.Fail() 같은 디버깅용 API를 자주 쓰게 된다. 그런데 프로젝트 전체에서 직접 호출하다 보면 불편할 때가 많지. 그래서 보통은 이를 감싸는 래퍼 함수를 만들어 전역적으로 쓰곤 한다.