| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- selenium
- 논문리뷰
- 앱개발
- 강화학습 기초
- 데이터분석
- 카트폴
- pandas
- Ai
- 전국국밥
- TTS
- clone coding
- Instagrame clone
- TeachagleMachine
- 사이드프로젝트
- DeepMind
- FirebaseV9
- 클론코딩
- Reinforcement Learning
- Ros
- 머신러닝
- App
- 음성합성
- 딥러닝
- expo
- 강화학습
- JavaScript
- python
- coding
- ReactNative
- React
- Today
- Total
목록2026/04 (11)
qcoding
논문 WaveNet: A Generative Model for Raw Audio 저자 Aaron van den Oord et al. (DeepMind) 학회/연도 arXiv 2016 (ICLR 2017 Workshop) arXiv 1609.03499 데모 DeepMind Blog📄 한 문단 요약WaveNet은 DeepMind가 2016년에 발표한 오디오 생성 모델이다. 핵심 아이디어는 단순하다. 음성 파형(waveform)을 16kHz로 샘플링하면 1초에 16,000개의 정수 값이 나오는데, 이것을 과거 값들을 조건으로 한 자기회귀 확률 모델로 한 샘플씩 예측한다. 핵심 구조는 희석 인과 합성곱(dilated causal convolution)으로, dilation을 1→2→4→…→512까지 ..
논문 Natural TTS Synthesis by Conditioning WaveNet on Mel Spectrogram Predictions 저자 Jonathan Shen et al. (Google) 학회/연도 ICASSP 2018 / arXiv 2017 arXiv 1712.05884 샘플 Google Tacotron 2 Demo📄 한 문단 요약Tacotron 2는 "텍스트를 어떻게 사람 목소리처럼 읽게 만들 것인가"라는 TTS 문제를 두 단계로 나눈 논문이다. 첫 번째 네트워크는 문자 입력을 80채널 mel spectrogram으로 변환하고, 두 번째 WaveNet vocoder는 그 spectrogram을 실제 waveform으로 합성한다. 핵심 결과는 MOS 4.526으로, 전문 성우 ..
이 글은 qcoding 블로그의 콘텐츠 색인입니다. Flutter + Flame 게임 개발, MBTI 히어로 운영, depense_game 타워디펜스 개발기를 한곳에서 찾을 수 있도록 정리했습니다.이 블로그는 무엇을 다루나요?Flutter와 Flame으로 2D 게임을 만드는 과정, Android/Web 배포, AdMob/AdSense 수익화 준비, Supabase 리더보드, 타워디펜스 밸런싱과 에셋 파이프라인을 다룹니다.MBTI 히어로 시리즈는 어떤 순서로 읽으면 좋나요?Flutter + Flame으로 MBTI 생존 게임을 만든 이유16개 MBTI 캐릭터를 데이터 구조로 설계한 방법Flame 웨이브 서바이벌 게임 루프 만들기적 스폰과 30웨이브 난이도 곡선 설계Flutter 게임에서 저장, 해금, 업그레..
MBTI 히어로: 직장인 생존기는 MBTI 캐릭터를 골라 직장 몬스터 웨이브를 버티는 2D 생존 게임입니다. 설치 없이 Web에서 먼저 해볼 수 있고, Android에서는 Google Play로 플레이할 수 있습니다.어떤 게임인가요?직장인 생존기라는 테마를 MBTI 캐릭터와 웨이브 서바이벌로 풀었습니다. 캐릭터마다 공격 방식과 리듬이 다르고, 동료 캐릭터 조합으로 한 판의 느낌이 바뀝니다.처음 플레이할 때 무엇을 보면 좋나요?처음에는 내 MBTI와 가까운 캐릭터를 고르고, 다음 판에서는 전혀 다른 공격 타입을 골라보면 차이가 잘 보입니다. 보스 웨이브가 오는 타이밍에는 무리하게 공격하기보다 생존 동선을 먼저 확보하는 편이 좋습니다.어디서 플레이할 수 있나요?Web 즉시 플레이: https://mbti-h..
Flutter Web 게임을 운영하려면 빌드 결과물을 올리는 것만으로 끝나지 않습니다. Firebase Hosting 라우팅, ads.txt, app-ads.txt, 플레이 링크 CTA까지 준비해야 검색과 광고 심사에서 덜 흔들립니다.Firebase Hosting 설정은 어떻게 단순화했나요?{ "hosting": { "public": "build/web", "rewrites": [ { "source": "**", "destination": "/index.html" } ] }}Flutter Web은 SPA이므로 모든 경로를 index.html로 돌려주는 rewrite가 필요합니다. 이렇게 해야 새로고침이나 직접 링크 접근에서 404가 줄어듭니다.ads.txt와 app-ads.t..
Flutter 게임에 AdMob을 붙일 때 핵심은 “모바일에서는 광고 SDK를 초기화하고, Web에서는 같은 코드를 안전하게 건너뛰는 것”입니다. MBTI 히어로는 kIsWeb 분기로 광고 흐름을 보호했습니다.왜 Web에서는 AdMob 초기화를 건너뛰나요?google_mobile_ads는 모바일 앱용 SDK입니다. Web 빌드에서 같은 초기화 경로를 타면 불필요한 오류가 생길 수 있습니다.Future init() async { if (_isInitialized) return; if (kIsWeb) { _isInitialized = true; return; } await MobileAds.instance.initialize(); _isInitialized = true; _createI..
Supabase 리더보드는 Flutter 게임에서 빠르게 온라인 기록 시스템을 붙이는 좋은 방법입니다. MBTI 히어로는 RPC 함수로 점수를 제출하고, 네트워크 실패 시 로컬 리더보드로 fallback하는 구조를 사용했습니다.Supabase 초기화는 어떻게 안전하게 처리하나요?Web과 앱에서 환경값이 없을 수 있으므로, 설정이 없으면 온라인 기능만 비활성화합니다.class SupabaseBootstrap { static bool get isConfigured => _supabaseUrl.isNotEmpty && _supabaseAnonKey.isNotEmpty; static Future initializeIfConfigured() async { if (!isConfigured) ret..
작은 Flutter 게임도 저장 구조를 초반에 잡아두면 운영이 편해집니다. MBTI 히어로는 한 판의 진행 데이터와 전체 해금 데이터를 나눠서 관리하고, 게임 시작 시 저장값을 주입하는 방식으로 확장성을 확보했습니다.저장 데이터는 왜 두 종류로 나누나요?런 중 데이터는 현재 웨이브, 체력, 업그레이드 상태처럼 이어하기에 필요합니다. 글로벌 데이터는 해금 캐릭터, 누적 재화, 최고 기록처럼 앱 전체에서 유지됩니다. 둘을 섞으면 이어하기 삭제가 전체 진행도 삭제로 이어지는 실수가 생길 수 있습니다.게임 시작 시 저장값은 어디로 들어가나요?로비에서 게임 객체를 만들 때 저장 데이터를 주입합니다.final game = MbtiGame( saveManager: saveManager, loadedSave: sa..