만들고, 직접
운영합니다.

웹과 앱 서비스를 만들고, 사용자가 쓰는 동안 직접 운영합니다. 아래는 지금 돌아가고 있는 것들입니다.

칸코테크 · 소프트웨어 스튜디오
대표 이현준 · 경기 화성
02운영 만들고 끝이 아니라

만든 뒤에도 직접 운영합니다. 고치고, 업데이트하며 굴러가게 두는 것까지가 서비스라고 봅니다.

운영 중인 서비스2
제작 이력11
플랫폼Web · iOS · Android
기술 블로그74
03블로그 만들며 쓴 글
전체 글 →
2026.03.05전부 올리지 않는다 — 페이징과 무한 스크롤7편의 마지막 숙제였던 페이징을 구현합니다. 목록이 수천 건이면 한 번에 다 올릴 수 없으니, LIMIT/OFFSET으로 한 페이지씩 끊어 오고 바닥에 닿으면 이어 붙이죠. "다음 페이지가 있는지"를 별도 카운트 없이 N+1로 아는 기법, Scrol…2026.03.01미뤄 둔 것을 구현할 때 — SQL 검색과 디바운스6편에서 "목록이 커지면 검색을 SQL로 내리고 디바운스가 필요하다"고 미뤄 뒀습니다. 이번 편에서 그걸 실제로 구현합니다. 조회 조건을 도메인 값(TodoQuery)으로 만들어 계약을 따라 내려보내고, sqflite가 WHERE/LIKE로 걸러 오…2026.02.25검색·필터를 SQL로 안 내리고 화면에 둔 이유시리즈를 닫았다고 했는데, 앱을 쓰다 보니 검색과 필터가 필요해졌습니다. 지금까지의 반사신경은 "규칙은 도메인에, 저장은 SQL에"였죠(1·4편). 그런데 이번엔 반대로, 검색·필터를 아래 계층으로 내리지 않고 화면(bloc)에 뒀습니다. 목록이 이…2026.02.21조립된 앱이 진짜로 도는지 — 통합 테스트로 시리즈를 닫다계층마다 테스트는 다 초록이었습니다. 그런데 실제 컨테이너로 조립하고 실제 SQLite에 붙였을 때 전부 맞물려 도는지는, 따로 증명해야 합니다. 실제 조립 루트로 앱을 부팅해 bloc→유스케이스→repository→sqflite까지 관통하고, 파일…2026.02.17저장소를 sqflite로 갈아 끼우는데 도메인은 한 줄도 안 고쳤다앱을 끄면 할 일이 사라졌습니다. 인메모리였으니까요. 이제 진짜 SQLite(sqflite)를 붙입니다. 그런데 저장소를 통째로 바꾸는데 도메인도, 유스케이스도, bloc도, 화면도 한 줄을 안 고쳤습니다 — 1편에서 prod/fake로 갈라 둔 그…2026.02.13화면을 붙이다 — BlocProvider를 직접 짜서 트리에 얹기1편에서 뼈대를, 2편에서 손수 짠 bloc을 만들었지만 둘 다 화면이 없었습니다. 이제 붙입니다. 그런데 bloc을 화면 깊은 곳의 위젯이 어떻게 집고, StreamController는 누가 닫을까요? 답은 지하 탐사에서 이미 팠습니다 — Inhe…2026.02.09flutter_bloc을 지우고 BLoC을 60줄로 짠 이유상태 관리 하면 으레 flutter_bloc을 import하지만, 이번엔 지웁니다. BLoC 패턴의 본질은 패키지가 아니라 "이벤트가 sink로 들어가고 → UI 없는 로직이 돌고 → 상태가 stream으로 나온다" 이 세 줄이거든요. StreamC…2026.02.05UI를 한 줄도 안 짜고 앱을 시작하는 이유 — 뼈대부터 세우기할 일 앱을 만드는데 첫 편에서 화면을 한 장도 안 그립니다. 대신 도메인·데이터·의존성 주입이라는 뼈대를 먼저 세우죠. 왜냐고요? UI부터 짠 앱은 커질수록 무너지거든요. 실패를 예외가 아니라 값(Either)으로 흘리고, 잘못된 값은 값 객체에서…2026.02.01부모 밖 버튼이 안 눌리는 이유 — 히트 테스트부모 밖으로 삐져나온 버튼은 왜 안 눌리고, Stack에서 위 위젯이 왜 탭을 먼저 먹고, IgnorePointer와 AbsorbPointer는 뭐가 다를까요? 전부 히트 테스트에서 나옵니다 — 포인터가 내려오면 RenderObject 트리를 훑어…
04문의

협업·제휴, 그 밖의 문의는 메일로 주세요.

kahnco@kahnco.me