project 40

[iOS] 학과 검색 알고리즘 개선 (초성검색)

[iOS] 학과 검색 알고리즘 개선 (초성검색) 쿠링에 학과 검색 알고리즘을 아주 살짝(?) 개선했다. 우선 쿠링 서비스의 학과와 관련한 시퀀스를 살펴보자 해당 시퀀스로 설계하게 된 당시의 배경으로는 1. debounce 등 클라단 로직이 줄어들어 개발 공수가 훨씬 줄어든다. 2. 학과 검색 과정에서 api 응답까지 지연시간이 없으므로 사용자에게 더 좋은 경험을 줄 수 있다. 3. 서버도 학과 검색 개발 로직이 줄어들어 개발 공수가 줄어든다. 4. 한번에 내려줘야하는 학과의 갯수가 api를 통한 페이징 혹은 검색을 통해 받을 만큼 많지 않다. 여러모로 당시 상황을 고려했을때 이런 방향으로 설계를 주장했었는데, 다행히도 다른 분들도 승낙해 주셔서 해당 시퀀스로 구현되었다. 다만 해당 시퀀스 형태로 구현 몇..

[iOS] Memory Debug Graph 분석해 프로젝트 구조 개선

[iOS] Memory Debug Graph 분석하기 IT 동아리에서 2개월간 작은 서비스를 개발했다 기간이 짧았던 만큼 앱 규모도 작았지만, 그에 비해 메모리를 과다하게 사용하고 있다고 느껴졌다. SwiftUI + Combine을 기반으로 프로젝트를 작업 우선 처음으로 의심해 본 부분은 메모리 릭이 발생하는 것 같다고 생각해서, 메모리 릭을 체크해봤다. 우선 프로파일링을 열어서 Leak을 체크 Leaks에 체크되는 부분은 없었지만 무언가 계속 증가하고 있었다. 그래서 그 다음에 생각되었던 부분은 앱 구조에서 무거운 객체를 여러번 생성하는게 아닐까 싶었다. 실질 개발기간이 약 1개월이었기에 (첫 배포까지는 약 3주) 각 Repository 및 UseCase에서 각 객체를 독립적으로 생성했다. 개발 단계에..

[iOS] Spotlight (SearchAPI)

Spotlight Kuring 1.4.3 버전에 해당 기능을 도입했습니다. 현재 public 레포지토리로 kuring-v2를 작업하고 있어서, 해당 기능을 v1 레포에서 작업했습니다. Kuring은 app과 sdk로 이루어져 있는데, 해당 기능은 app단 작업만으로도 가능했습니다. 목차 - 개발환경 - 작동화면 - kuring에 적용한 코드 설명 - 개발 이슈 정리사항 개발 환경 Xcode 15.0 iOS 16.0 + SwiftUI 🎉 벌써 프로젝트가 2년이 넘었네요!! 118번째 PR 🌟 쿠링 새로운 기능 🌟 https://kuring.notion.site/kuring/iOS-eef51c986b7f4320b97424df3f4a5e3c 작동화면 GIF Core Spotlight 중 Search 기능을 사..

[Kuring] 1.4.0 release 개발일지

1.4.0 release 개발일지 이번에 1.4.0을 개발하면서 있었던 것들을 정리해두고자 함. 해당 버전에서 주로 학과 기능 공지 개발을 담당하였음. 🔨 Xcode 14.2 iOS 15.0 + # 구현해야 할 기능 - API - 학과 공지 - 학과 공지 구독 - 학과 리스트 - api v2로 모두 변경 - 화면 - 학과 공지와 관련한 모든 뷰 - 구현 - 학과 리스트 검색 - 구독한 학과 리스트 검증 # 학과 구현 외 버그 개선 작업 - notification 버그 개선 (사일런트 푸시 및 기존 내가 받은 알림이 저장되지 않던 버그) - 학교 url이 변경되어 그에 따른 대응 🏗️ 프로젝트 구조 개선 작업 - Tuist 도입 처음에 개발을 맡게 되었을 때는 얼마나 한 2~3주 정도 걸릴 것 같다고 생각..

[iOS] Debug Scheme 분리하기

[iOS] Debug Scheme 분리하기 - Debug Scheme을 분리하기로 한 이유. - 개발단계의 작업물을 iOS 개발자 외에 다른 분들도 사용해야하는 경우가 있는데, 기존 프로젝트와 동일하게 두어서 출시한 앱과 헷갈리는 불편함 존재 - 또한 Debug 앱은 출시한 앱과 달리 다른 버그를 잡기 위한 토큰 값 등이 UI로 노출되어 있으며, 개발 단계에서도 스킴을 수정해 줄 필요 없이 한번 설정해두면 좋겠다 싶었음. 1. 아래와 같은 사진의 상태에서 New Scheme을 클릭 - 아래 사진은 벌써 만들어 둔 상태 2. 타겟을 둔 상태로 이름을 작성 3. Asset으로 이동하여 기존 AppIcon을 복사하여 AppIconDebug를 생성 후 Debug용 이미지를 넣어주기. 4. 아래 사진처럼 Disp..

[iOS] 내가 만든 SPM에서 No Such Module..

내가 만든 SPM에서 No Such Module 내가 만든 SPM에 Snpakit이 들어 있었음. 근데, Examples을 만드는데, SPM쪽에서 이 에러가 나타나는거임. // swift-tools-version: 5.6 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription let package = Package( name: "kuring-campus-map-ios", platforms: [.iOS(.v14)], products: [ // Products define the executables and libraries a package p..

[iOS] SPM 프로젝트 이름 변경시 오류

SPM 프로젝트 이름 변경시 오류 🚨 에러코드 Build input file cannot be found: '/Users/Jason/Desktop/kuring-campus-map-ios/kuring-campus-map-ios.xcodeproj/kuring_campus_map_ios_Info.plist 🚨에러상황 프로젝트에서 새로운 기능을 추가하고자 했습니다. 해당 기능을 추가하면서, 프로젝트를 따로 관리하고자 했고, 처음에 만든 프로젝트 이름이 마음에 들지 않아서 프로젝트 이름을 변경하고자 했습니다. 변경은 성공했으나 위와 같은 에러가 나타났습니다. - 방법 2가지 1. 경로 변경: 이렇게 해서 해결되면 아주 쉽다,, 근데 안되며 2번으로 2. info.plist 파일 만들어서 넣어주기 그냥 직접 만들어..

[git] Git-flow 전략과 프로젝트 예시(feat. Kuring)

Git-flow 전략과 프로젝트 예시(feat. Kuring) (포스팅 최초 작성) 2022.06.10(포스팅 수정) 2024.08.29커밋 내역 관리하는 방법 수정   ✅ Kuring에서 사용하는 Git-flow 분석과 Git-flow에 대해서 공부하며, Kuring에서 내가 사용하는 커밋 규칙을 정리하고자 포스팅합니다.  🥕 목차 🥕1. 우아한 형제들 Git-flow 전략에 대해서 알아보기2. Kuring의 Git-flow 전략 분석 (소규모 팀에서의 Git-flow 전략)3. Git-flow 전략을 개인 레포에 적용하고 연습해보기4. git 충돌 해결 방법  ✅ 1. 우아한 형제들 Git-flow 전략에 대해서 알아보기우아한 형제들 기술 블로그를 참고하여 Git-flow 전략에 대해서 공부해 봅..

[SwiftUI] UIActivityViewController를 SwiftUI로

UIActivityViewController를 SwiftUI로 ✅ 이번 제목도 UIKit스럽다 이전에도 말했지만, 프로젝트에서 UIKit을 SwiftUI로 코드롤 전환하고 있는데 여기서 만난 문제를 해결하고자 내가 구글링한 단어 그대로 작성했다. 해당 코드는 깃허브에 openSource로 존재하는 것을 가져다가 컨벤션을 수정하고, 한글로 사용법을 직접 정리해 두었다. https://github.com/SwiftUI-Plus/ActivityView/blob/master/Sources/ActivityView/ActivityView.swift GitHub - SwiftUI-Plus/ActivityView: A SwiftUI view that enables you to properly present a UIAc..