[LinkClip] 로컬 LLM 기반 AI 요약 기능 추가하기
·
회고
미리보기 LinkClip은 웹페이지 링크를 저장하고 태그로 분류하는 iOS 앱입니다.링크가 많아지면서 한 가지 문제가 생겼습니다. 저장한 링크의 제목만 보고는 어떤 내용이었는지 파악하기 어려웠고, 내용을 확인하려면 매번 원문을 다시 열어야 했습니다.이 문제를 해결하기 위해 링크 저장과 함께 웹페이지의 핵심 내용을 제공하는 AI 요약 기능을 개발했습니다.어떤 방식으로 AI 요약을 제공할 것인가가장 먼저 결정해야 했던 것은 요약 모델의 실행 위치였습니다.검토한 방식은 세 가지입니다.방식장점단점상용 AI API빠른 응답, 간단한 구현요청량에 따라 비용 증가사용자 API 키운영 비용 절감진입 장벽과 키 관리 문제자체 로컬 LLM 서버별도 API 비용 없음느린 추론과 서버 운영 필요OpenAI나 Gemini 같..
[Our Bridge] 개발 회고
·
회고
Our Bridge는?Our Bridge는 장거리 커플을 위한 조용한 일상 공유 앱입니다.떨어져 있는 두 사람이 서로의 하루, 기분, 일정, 사진을 부담 없이 확인할 수 있도록 만드는 것이 목표였습니다. 메신저처럼 계속 대화를 주고받는 앱이라기보다는, 상대방의 생활 리듬과 마음을 자연스럽게 느낄 수 있는 공간에 가깝게 만들고 싶었습니다.장거리 연애를 하다 보면 "지금 뭐 해?"라는 말을 자주 하게 됩니다. 물론 그 말 자체가 나쁜 것은 아니지만, 매번 물어봐야만 상대의 하루를 알 수 있다는 점이 조금 아쉽게 느껴졌습니다.그래서 Our Bridge에서는 다음과 같은 경험을 중심으로 잡았습니다.오늘의 기분과 현재 상태 공유서로의 시간과 날씨 확인다음 만남 D-day 표시공유 캘린더서로 챙김 목록오늘의 한 장..
[swiftUI] SwiftUI에서 UIImagePickerController 사용하기
·
swiftUI
공식문서: https://developer.apple.com/documentation/uikit/uiimagepickercontrollerUIImagePickerControllerUIImagePickerController는 iOS 앱 내에서 사진이나 동영상을 촬영하거나, 기기의 사진 라이브러리에서 이미지를 선택할 수 있도록 시스템 기본 UI를 제공하는 뷰 컨트롤러입니다.주요 모드(Source Type)이 컨트롤러의 화면과 역할은 표시하기 전에 설정하는 소스 타입(Source Type)에 따라 달라집니다..camera: 새로운 사진이나 동영상을 촬영할 수 있는 카메라 인터페이스를 제공합니다..photoLibrary/.savedPhotoAlbum: 기기에 저장된 기존 사진과 동영상을 고를 수 있는 앨범 인터..
[Flutter] cached_network_image에 대한 짧막한 설명
·
Flutter
cached_network_image란?cached_network_image는 인터넷 서버(URL)에 있는 이미지를 불러와서 화면에 보여주고, 스마트폰의 로컬 저장소(캐시)에 자동으로 임시 저장해 주는 Flutter의 필수 UI 패키지입니다. Flutter의 기본 위젯인 Image.network()는 이미지를 불러올 수는 있지만, 앱을 껐다 켜거나 화면을 다시 그릴 때마다 매번 인터넷에서 새로 다운로드를 받습니다. 이 패키지를 사용하면 데이터 낭비를 막고, 로딩 속도를 획기적으로 올리며, 로딩 중 스피너나 실패 시 에러 화면까지 처리할 수 있습니다.설치dependencies: flutter: sdk: flutter cached_network_image: ^3.3.1사용import ..
[Flutter] dio 패키지에 대한 짧막한 설명
·
Flutter
dio란?dio는 Flutter와 Dart 환경에서 가장 널리 사용되는 HTTP 네트워킹 패키지입니다. 기본적인 웹 요철뿐만 아니라, 인터셉터(Interceptor), 파라미터 글로벌 설정(BaseURL 등), 파일 다운로드/업로드, 타임아웃 처리, 요청 취소 등 복잡한 네트워크 작업을 매우 적은 코드로 쉽게 처리할 수 있게 해주는 통신 라이브러리입니다.기존 http 패키지와의 차이점Flutter에서 API 통신을 할 때 보통 기본 http 패키지로 시작하지만, 앱이 커지면 거의 대부분 dio로 넘어갑니다.기능기본 http패키지dio패키지복잡도가볍고 단순한 통신에 적합기능이 많고 엔터프라이즈급 앱에 적합JSON 파싱jsonDecode()로 직접 변환해야 함응답을 자동으로 JSON₩ 변환해줌인터셉터(Int..