분류 전체보기 600

포이즌 필(Poison Pill) 패턴 : 멀티 스레드 프로세스를 안전하게 종료하는 방법

AI가 만들어낸 코드를 한 줄 한 줄 곱씹어 보던 중에 특이한 패턴을 발견했다.@classmethoddef stop_processor(cls): """백그라운드 처리 스레드 중지""" cls._is_running = False cls._processing_queue.put(None) 나라면 스레드를 종료하기 위해서 그냥 is_running 플래그만 False로 바꿔놨을 것 같은데, 왜 Queue에다가 None이라는 이상한 값을 집어 넣는걸까? 포이즌 필 패턴이는 안전하게 스레드를 종료하기 위한 포이즌 필(Poison Pill) 패턴이라고 한다.실생활에서 보이는 포이즌 필 패턴 예시가 재미있다.식당에서 "CLOSED" 사인을 걸어두는 것을 예로들 수 있다. 영업종료 시간이 다가오면 식당주인..

DASHI - 치지직 도네이션 연동 룰렛 업데이트

이번에 DASHI에서 업데이트한건 룰렛 기능이다.예전에 트위치 시절, 투네이션에서 룰렛 기능을 제공했었다. 최소금액이상 후원하면 룰렛 후원에 참여할 수 있고, 방송에 변수를 줄 수 있다. 룰렛 기능을 개발하기 위해서는 생각보다 많은 것이 필요하다.단순히 채팅 메세지를 받아 룰렛을 처리하는 작업 이외에도 OBS용 오버레이, 스트리머만 접근 가능한 룰렛 관리 화면을 준비해야한다. 예전같았다면 최소 일주일은 잡고 들어갔을테지만, 오늘 나는 10시간만에 모든 작업을 끝내버렸다. 바로, AI의 서포트 덕분이다. 이번 업데이트 회고를 작성하면서 AI와 함께 어떤식으로 개발했는지 공유해보려한다. 장애물 치우기AI와 개발할때 가장 중요한 점은 일을 단계별로 쪼개야한다는 것이다.어떤 목표지점에 도착하는게 일이라면 먼..

[신대방] 경식이네알쌈주꾸미 - 주꾸미 정식

13000원짜리 주꾸미 정식이 아주 푸짐하게 나왔다.술을 진탕 먹고 다음에 간거라 다들 많이 못먹었는데, 여기 주변에 살았다면 정말 자주갔을 것 같다.칼칼한 시래기 된장국으로 스타트를 했는데 대박이었다.주꾸미는 특별하진 않지만, 다른 여느 식당들만큼 통통하고 맛있다. 계란 부침에 계란도 정말 많이 들어간것 같았다.주꾸미 먹고, 계란 부침먹고, 고사리먹고, 밥 먹고 싸이클을 돌리느라 정신없었다.

[내방] 양산도 - 가지장어덮밥

내방역 근처에 양산도라는 장어 덮밥집이 생겨서 방문해봤다.난 장어를 정말 싫어하고...(뼈때문에) 장어 덮밥도 제대로된건 거의 처음이지만...이집이 맛있다는걸 단번에 알 수 있었다.우선 메밀소바, 차완무시, 샐러드, 미소장국 이렇게 한 상 차림의 구성도 마음에 들었다.그리고 장어는 빠짝 구워서 거의 뼈가 느껴지지않았다. 그러면서도 부드러운 가지가 바짝구운 장어와 밥사이에 아주 조화롭게 들어온다. 친구말에 의하면 가지장어가 제일 맛있었다고한다.

직접 RAG를 구축할 필요없게 해주는 Gemini File Search API

Chatbot을 만들면서 가장 귀찮았던건 RAG였다. RAG를 구현하기 위해 VectorDB라는 관리 포인트가 생기며, 임베딩 정책 및 모델 설정, 임베딩할 파일들을 관리하는 컴포넌트까지...RAG 구축 하나로 프로젝트가 복잡해지는 것은 순식간이다. 지난 11월 6일, Google이 Gemini 3, Nano Banana Pro와 함께 Gemini File Search API를 발표했다. Gemini File Search API는 Gemini API에 구축된 RAG 시스템이다. 텍스트 파일 종류라면 대부분 지원하며, File Store를 생성하고 파일을 업로드하는 간단한 절차만으로 검색 기능을 추가할 수 있다. 나는 사내 API 문서를 바탕으로 API에 대한 질의를 할 수 있는 하는 MCP서버를 만들어보..

[Android] Room이 생성한 Dao 구현체 확인방법

오늘 @Upsert 어노테이션을 사용해서 Collection 데이터를 넘겼을때 과연 "트랜잭션처리가 되는가?"에 대해서 검증해야할 일이 있었다. Room을 당연한듯이 사용하고는 했지만 너무 추상화되어있어서 내부 동작을 알지 못했다. 당연히- 트랜잭션처리가 될거라고, 되어야만 한다고 생각했지만, 어림짐작으로 그치지 않고 코드로 확실하게 보고싶었다. 안드로이드 빌드를 한번 끝내면 generated/build에 내 Dao이름 + _Impl 이름으로 Dao의 구현체에대한 Java Class가 생성되어있는 것을 볼 수 있다. upsert 함수가 이렇게 트랜잭션으로 감싸져 있는것을 확인했고, Room에 대한 흐릿한 불신을 지울 수 있게 되었다.@Override public Object upsert(fina..

[일본 마쓰야마] まめ楽 - 두부 정식

마쓰야마에서 유명한 요리는 단연 타이메시다.타이메시도 정말 맛있는 음식이긴하지만, 마쓰야마에 지내는동안 그런 음식만 먹을수는 없지않은가..?!도고 공원을 한바퀴 돌고, 독특한 두부정식을 점심으로 간단히 먹었었는데 정말 좋은 가격에 건강하고 든든한 한끼를 먹은느낌이었다.특히 어묵이나 가지 등을 독특한 방식으로 조리한 반찬들이 맛있었다. 그리고 빨간 고추로 만든 유즈코쇼를 두부와 함께 먹도록하는데,여기서 이 조합이 너무 신선해서 빨간 유즈코쇼를 하나 사왔다. 식사공간 바로옆이 식재료를 사갈수도있는 숍이다.

OAuth 2.0 관련 용어 공부

인가(Authorization)확인된 사용자가 특정 자원에 접근할 권한이 있는지 확인 (권한 확인) 인증(Authentication)사용자가 누구인지 확인 (로그인)따라서 일반적인 순서: Authentication → Authorization 인증 서버(Authorization server)OAuth 2.0 프레임워크의 구성요소로, 클라이언트가 인증 및 인가에 성공하면 Access Token을 발급한다. Bearer 인증OAuth 2.0 프레임워크에서 사용하는 토큰 인증 방식. HTTP 통신시 Header에 “Authorization: Bearer ”과 같은 형식으로 사용한다. Basic 인증방식만으로는 사용자의 권한을 정교하게 제어할 수 없기 때문에 등장했다. 형식은 *불투명한(Opaque) 문자열일수..

[논현] 성천막국수 - 막국수

추천 받아서 방문한 집이다.호불호가 꽤 클 것같은 느낌이긴하지만, 나는 마음에 들었다! 혼자가면 제육 4점 + 막국수 세트를 먹을 수 있다. 물론 난 고기를 좋아해서 그냥 제육 반판시켰다. 비빔 막국수를 먹었는데, 양념이 짜니 바로 다 풀지말고 조금씩 다대기를 풀면서 먹으라는 조언을 받았기에 그렇게 먹었다. 라멘에 아지헨을 넣는 것처럼 처음에 슴슴하게 먹었다가 점점 자극적인 맛으로 먹으니 고명하나없는 막국수를 먹으면서도 다채롭게 먹을 수 있었다. 그리고 참기름 냄새가 너무좋다...ㅋㅋㅋ 언제 한번 메밀이 100%로 들어간 미슐랭 막국수집에 방문한적이 있었는데, 메밀이 너무 많이들어가서 면이 푸석하고 뚝뚝 끊겼다. 건강에 좋을지 어떨진모르지만 맛으로 놓고보면 실망스러웠다. 성천 막국수는 면이 쫀득하고 ..

샤오미 14T - 아이폰 16에서 갈아탄 리뷰

얼마전까지 구글 픽셀7을 아주 잘 쓰고있다가, 자가 수리로 인해 볼륨키가 고장나기도하고 더위먹고 하루 내내뻗은적이 있어서 급하게 아이폰 16e로 교체했었다. 오랜만에 아이폰 진영으로 넘어왔기에 기기사양을 제대로 몰랐고, 16e는 맥세이프가 빠져있는데다 Face ID 기능도 조악해서 최종적으로 아이폰 16으로 기기변경을 해서 사용하고 있었다. 그러다 문득...판다 익스프레스가 너무 먹고싶어서 여의도 IFC몰에 갔다가 샤오미 매장에서 이 녀석을 보게된다.샤오미 매장에는 샤오미 폰이 라이카랑 협업했다는 광고가 대문짝만하게 있었다. 아니...그 비싼 라이카가 휴대폰에 들어있다고?!15T 라인은 백만원대라, 상대적으로 저렴한 모델인 14T를 구경해보았다. 사진을 찍어보니 정말 다르긴다르다.이게 폰 카메라인가~D..

나/리뷰 2025.09.14