
돈 쓸 일이 많아서, 최대한 Gemini CLI를 주로 이용하고 GPT 4o를 겜스고에서 결제해서 사용하고 있었는데개발자들 사이에서 Claude Code가 넘사라는 이야기를 링크드인, X, 유튜브 등의 커뮤니티에서 너무 많이 듣다보니 도저히 안되겠다 싶어서 Claude Code를 결제해서 한 달 사용해봤다. (겜스고는 클로드 코드 맥스 1인 구독권을 팔아라!!! 제발!!!) 처음에는 100달러, 200달러라는 요금이 두 강아지를 키우는 가장(?)에게 너무 비싼 것 같아서 소소하게 Pro 요금제를 결제해서 사용했는데, 문제는 20달러로는 금방 토큰 사용량을 초과해버려서, 갈증이 났다. 큰 맘 먹고 Max 100 달러짜리로 사용해봤다. 초라하기 짝이 없는 성적표(?)를 받았다. (커피한잔 앱으로 유명한 ..

추억의 "방능"공유기를 사용하는 집에서 스타크래프트, 워크래프트 같은 게임을 했던 사람이라면, 방능이라는 단어를 한 번씩 들어봤을거라 생각한다. 내가 만든 게임 방에 다른 사람이 들어올 수 있는 상태를 뜻하는 말로, 그 시절에는 방능이 안되면 포트포워딩을 해야했고, 네이버를 뒤져서 방법을 찾아보면 공유기에서 설정할 수 있다는 말을 듣고 마구잡이로 따라했었다. 최근 스타크래프트 영상을 몇 개 보다보니 갑자기 그 시절이 생각났다. 그 때는 단순 따라하기만했던 블로그의 설정들을 개발자가 된 지금 왜 공유기 설정이 필요했는지, 게임을 호스팅한다는 게 무슨 의미인지 정리해볼 수 있었다. 방장이 호스트인 P2P 통신스타크래프트, 워크래프트는 P2P 방식이다. 서버가 방을 관리하는 것이 아닌, 내가 직접 방장이..

nest의 e2e이 글을 읽으시는 nest를 활용하는 개발자분들은, e2e를 작성하시나요? 어떻게 작성하고 계신가요?보통은 nest의 공식 문서 가이드에 따라 TestingModule을 통해 NestApplication을 init한 후 사용하실 겁니다.beforeAll(async () => { const moduleRef = await Test.createTestingModule({ imports: [CatsModule], }) .overrideProvider(CatsService) .useValue(catsService) .compile(); app = moduleRef.createNestApplication(); app.use(thirdPartyMiddleWare()); // i..

[SKT 해킹 사태] 2주 간의 타임라인으로 본 사건의 재구성보안업계에서 말하는 ‘골든타임’은 ‘빠르면 빠를수록’이다. 이를 반영하듯 현행 정보통신망법은 사고 인지 후 24시간 내 한국인터넷진흥원(KISA) 또는 과학기술정보통신부에 신고하도록 규www.boannews.com 예스24 ‘랜섬웨어 공격’에 회원정보 유출 정황…개보위 조사 착수개인정보보호위원회가 랜섬웨어 공격으로 ‘먹통’이 된 온라인 서점 예스24에 대한 개인정보 유출 조사에 착수했다. 예스24는 그동안 개인정보가 유출되지 않았다고 밝혔지만, 하루 만에 이와 www.hani.co.kr 최근 뜨거웠던 보안 이슈들과 더불어 TypeScript Backend Meet-Up 의 토스 한상진님의 발표를 듣고해싱 방식들의 안정성을 전혀 생각해보지 않..

⭐오픈소스의 판도를 바꿀, AI로 오픈소스 기여 완벽 가이드와 프롬프트 공유!직접 AI로 오픈소스 기여해본 후 느꼈던 충격을 공유합니다!medium.com 오픈소스에 기여해보고 싶다고 처음 생각했던 때가 2023년 12월 DevFest에서, 첫 PR을 날린건 2024년 11월. 왜 이렇게 오래걸렸을까?오픈소스는 뭔가 어려워보이잖아.. 라고 생각해서? 소위 진입장벽 때문에..? 하지만 이번 오픈소스 멘토링에서 이 진입장벽을 깨부술 엄청난 것을 겪게 되었다. 이슈 선정이 힘들어? AI로 딸깍오픈소스 기여에 막막했을 때를 회고해보자면 기여의 스타트인 이슈 선정부터 막막했다. 정말 막막했다. "내가 이거 해도 되나?""이슈를 어떻게 찾지?""아 전부다 영어네 ㅋㅋ" 오픈소스 멘토링 8기에서는,..

최근 면접 이야기최근 기술면접에서 다음과 같은 질문을 받았다. "JS에서 Array에 모든 데이터를 Array에 넣고, find()로 찾으면 되지, 왜 굳이 객체를 사용할까요?" 이 질문에 대해 "find()는 O(N)이지만, 객체는 프로퍼티를 통해 값을 조회할 수 있어서 O(1)이기 때문에 사용한다고 생각합니다." 라고 대답했고, 다음과 같은 꼬리질문들이 이어지기 시작했다.객체는 어떻게 값을 저장하길래 O(1)인가요?객체는 값을 가져올 때 항상 O(1)인가요? 정말인가요? 최근 학습했던 JS와 V8의 메모리 구조와 관리 내용을 기반으로 알고 있던 지식을 버무려 답하고자 했다. 생각하는 시간을 가질수록 머리가 하얘져서, 객체의 프로퍼티 - 값 형태에 집착했고, 해시 구조로 저장된다는 답을 드렸다. 그 ..

Redis의 고가용성(HA: High Availability) 설계를 위한 위한 Redis Sentinel에 대해 알아보자.주니어 개발자의 Nest + BullMQ 기반 실시간 채팅의 성능/구조 개선기내가 어떤 조직에 속하게 되었을 때, 조직에서 관리하는 애플리케이션을 한 번씩 사용자 관점에서 돌아보고, 개발자 관점에서mag1c.tistory.com 이전 포스팅에 이어서, Sentinel 구성해보자. Redis Master + Replica 구성먼저, Master노드와 Replica 노드를 구성해보자.# docker-compose.ymlredis-master: image: redis:latest command: redis-server container_name: "redis-mas..

주니어 개발자의 Nest + BullMQ 기반 실시간 채팅의 성능/구조 개선기내가 어떤 조직에 속하게 되었을 때, 조직에서 관리하는 애플리케이션을 한 번씩 사용자 관점에서 돌아보고, 개발자 관점에서 돌아보고 문제점을 리스트업하는 습관이 있다. 이를 통해 당장의mag1c.tistory.com 이전 글에서 메시지 큐의 장애 발생 상황을 여러가지로 가정하고, 간단한 해결책들을 생각해서 서술했었다.이번 글에서는 그 중에서도 특히 많은 메시지 큐에서 Redis를 저장소로 사용하거나 지원하는 만큼, Redis의 failover전략 중 하나인 Redis Sentinel에 대해 공식 문서와 실제 사례를 기반으로 공부한 내용을 작성한다. Redis에 장애가 발생한다면?생각해보면 Redis는 애플리케이션을 구성할 때 거..