목록전체 글 (393)
민프
보호되어 있는 글입니다.
공부 노트오픈소스 모델은 다운로드만 해서는 돌아가지 않는다. 모델 파일을 실제로 돌려 주는 추론 엔진(Ollama, llama.cpp, vLLM, SGLang, MLX…)을 누가 만들었고, 무엇이 다르고, 언제 뭘 써야 하는지 정리했다.2026 · 인공지능 › [AI | ML]#추론엔진#Inference Engine#Ollama#llama.cpp#vLLM#SGLang#MLX#로컬LLM#오픈소스LLM오픈소스 LLM을 직접 돌려 보려다가 막힌 지점이 있었다."Gemma나 Qwen은 무료라는데, 그냥 설치하면 되는 거 아냐?"알고 보니 모델은 두뇌 파일일 뿐이고, 그걸 돌려 주는 추론 엔진이 따로 필요했다.이 글은 그 추론 엔진들을 처음부터 끝까지 정리한 공부 노트다.01추론 엔진이 뭔가Hugging Fa..
기술 선택 노트Flutter Web SEO는 튜닝으로 해결되는 문제가 아니다. 렌더링 모델 자체가 검색엔진이 읽는 것과 어긋나 있다. React Native for Web은 뭐가 다른지, 그리고 진짜 답은 왜 “둘 다 아님”인지.2026 · Frontend › [Flutter]#FlutterWeb#플러터웹#CanvasKit#ReactNativeWeb#리액트네이티브웹#ExpoRouter#SEO#검색엔진최적화#Nextjs#크로스플랫폼모바일 앱은 Flutter로 잘 굴러가고 있었다. 그런데 검색 유입이 필요해졌다. “Flutter Web으로 랜딩·콘텐츠 페이지도 같이 뽑으면 되지 않나?” — 이 질문의 답을 찾다가, 문제가 설정값이 아니라 렌더링 모델에 있다는 걸 알게 됐다. Flutter Web과 Rea..
개발후기App Tracking Transparency는 macOS에서 컴파일은 되는데 동작은 하지 않는다.그리고 그 사실은 Xcode 안에 처음부터 적혀 있었다.2026 · Frontend › [IOS]#ATT#AppTrackingTransparency#앱추적투명성#IDFA#macOS#iOS#Flutter#AppsFlyer#앱스플라이어#Amplitude폰용으로 만든 iOS 앱이 어느 날 Mac App Store에서 검색됐다. 이왕 이렇게 된 거 ATT 권한 요청도 Mac에서 되게 하자고 마음먹었다가, 플러그인 · 배포 타겟 · Info.plist를 차례로 헤집은 끝에 Xcode SDK 헤더 주석 한 줄에서 끝났다. 처음부터 불가능한 일이었다.01폰용 앱이 Mac App Store에 있었다우리 앱은 아..
음성 AI 기초 뜯어보기음량이 임계값 아래면 무음이라고 판단하는 코드를 짰다. 조용한 방에서만 잘 됐다.2026 · 인공지능 › [AI | ML]#VAD#Voice Activity Detection#음성활동감지#Silero VAD#WebRTC VAD#무음감지#음성인식#STT#Opus DTX음성 입력 기능을 만들면서 "지금 말하고 있나?"를 판단해야 했다. 라이브러리를 찾기 전에 음량(RMS)이 임계값을 넘으면 말하는 중이라는 코드를 먼저 짰다. 동작은 했다 — 조용한 방에서만. 그러고 나서야 왜 다들 VAD라는 걸 따로 쓰는지 이해했다.01VAD란 무엇인가VAD는 Voice Activity Detection, 우리말로 음성 활동 감지다.오디오 조각을 받아서 "이 안에 사람의 말소리가 있는가"를 판별한..
음성 AI 아키텍처 뜯어보기음성 입력에 "무음 2초면 자동 전송"을 넣었다가 생각하느라 멈출 때마다 말이 잘려나갔다. 큰 앱들은 이 문제를 어떻게 풀었을까.2026 · 인공지능 › [AI | ML]#VAD#엔드포인팅#turn detection#ChatGPT Voice#Gemini Live#Silero VAD#semantic VAD#음성인식#STT음성 입력 기능에 자동 전송을 붙이면서 "무음이 N초 지속되면 끝난 걸로 보고 보낸다"는 로직을 짰다. 조용한 방에선 잘 됐는데, 말을 고르느라 잠깐 멈추면 문장이 두 동강 났다. 큰 앱들은 어떻게 하고 있는지 공식 문서를 뒤졌더니 — 애초에 침묵 길이로 판단하는 시대가 지나 있었다.01증상 — 생각하면 잘린다처음 만든 로직은 단순했다.마이크에서 오는 오디오 ..
DB 실험 일지PostgreSQL Seq Scan이 DB CPU를 100%로 만들자, ALB 헬스체크가 멀쩡한 서버를 처형하기 시작했다.2026 · Backend › [DB]#PostgreSQL#인덱스#SeqScan#ALB헬스체크#ECS#BullMQ개발 중인 AI 채팅 서비스의 테스트 서버가 한낮에 두 번 죽었다. 원인을 파보니 문제는 하나가 아니라 네 개가 쌓인 탑이었다 — 인덱스 없는 테이블, 무한 반복 기능, DB를 기다리는 헬스체크, 그리고 좀비가 된 백그라운드 잡. 그 추적기와 수습기를 정리한다.01증상 — 멀쩡한 서버가 자꾸 처형당했다오후에 갑자기 "서버 죽은 것 같다"는 말이 나왔다.ECS 콘솔을 열어보니 백엔드 태스크가 이미 두 번 교체돼 있었다.중지 사유는 전부 이거였다.stopped..
개발 후기AppsFlyer의 SKAN 경고 배너에서 시작해, Apple 문서의 NSAdvertisingAttributionReportEndpoint와 SKAdNetworkItems가 각각 누구를 위한 키인지 정리한 기록.2026 · Frontend › [IOS]#SKAdNetwork#SKAN#AppsFlyer#iOS#InfoPlistAppsFlyer를 붙이고 SKAN 대시보드를 열었더니 경고 배너가 떠 있었다.해결하려고 문서를 읽다 보니 Info.plist 키가 두 개 등장하는데, 하나는 우리 앱에 없었다.없어도 되는 이유를 이해하고 나니, iOS 광고 측정의 큰 그림이 같이 정리됐다.그리고 다 끝난 줄 알았을 때 넣어야 할 키가 하나 더 나왔고,“로컬에선 확인 못 한다”던 전송을 실기기에서 눈으로 ..
배포 회고모바일 앱과 백엔드를 동시에 갱신하는 건 불가능하다. 그 틈에서 뭘 지켜야 안 터지나.2026 · DevOps › [CI-CD]#VersionSkew#버전스큐#BackwardCompatibility#하위호환#ParallelChange#ExpandContract#DBMigration#마이그레이션#무중단배포#CICD모바일 앱을 출시하려고 백엔드를 먼저 prod에 올렸다. 앱은 앱스토어 심사를 거쳐 며칠 뒤에나 나간다. “서버는 최신인데 앱은 옛날 버전인 그 구간에 에러 나면 어쩌지?”에서 시작해, version skew를 정면으로 마주친 하루의 기록.01배경 — 서버는 오늘 올리는데, 앱은 며칠 뒤모바일 앱 출시를 앞두고 있었다.앱이 쓸 API를 담은 백엔드를 prod에 올려야 했다.문제는 순서..
트러블슈팅 일지AppsFlyer OneLink 딥링크, 설정 다 맞는데 앱이 안 열린다?— iOS Universal Link의 함정, 범인은 Apple CDN 캐시AppsFlyer OneLink로 딥링크(deep link)를 붙였다. entitlement도, AASA도, Team ID·Bundle ID도 다 맞았다.iOS Universal Link 진단은 초록불. 그런데 링크를 누르면 앱이 안 열리고 웹페이지만 떴다.2026 · Frontend › [IOS Error]#iOS#UniversalLinks#유니버설링크#딥링크#Deeplink#AASA#AppsFlyer#앱스플라이어#OneLink#FirebaseDynamicLinks#DynamicLinks종료랜딩에서 들어와 앱을 설치·가입한 유저에게 코인을..
