요즘 회사일,, 사이드 프로젝트,, 공모전까지.. 정말 너무 바쁜 한달을 보내다보니 블로그 글을 너무 오래 못쓴것같다.. 오늘은 프로젝트를 진행하면서 Swinject을 활용한 DI를 구성하는데 궁금한 내용이 있어 이 부분에 대해 공부를 좀 해보려고 한다. 먼저 왜 DI (Dependency Injection) 이 필요한 걸까? 문제 상황 예시를 한번 보자// ❌ 강한 결합 - 수정하기 어려운 코드class UserService { private let networkManager = NetworkManager() private let coreDataManager = CoreDataManager() func fetchUser(id: String) -> User? { // ..
2025.05.30 - [◽️ Programming/T I L] - FCM을 활용해 푸시 알림 구현하기 (1/2) FCM을 활용해 푸시 알림 구현하기 (1/2)이번 프로젝트에서 맡은 역할 중 FCM을 활용한 알림 서비스 구현 Task가 있어 먼저 자세하게 FCM이 어떤건지.. 어떻게 구현하는건지.. 어떤 방식으로 구성되어있는지 한번 알아보려고 한다! 먼저 FCMdongdida.tistory.com Apple Notification이 어떤 방식으로 진행되는지 알아보자 일단 푸시 알림은 기존에 핸드폰을 사용하다보면 특정 이벤트가 발생했을때 이용자에게 이를 알릴 수 있는 형태로 서버에서 클라이언트로 직접 메세지를 전송하는 방식을 말한다! 앱이 실행되지 않아도 실시간으로 알람이 뜰 수 있게 한다는게 특징! 먼저..
2025.04.03 - [◽️ Programming/T I L] - 단방향 데이터 흐름이 왜 좋은데!? 단방향 데이터 흐름이 왜 좋은데!?스터디를 진행하면서 토론을 했던 주제가 TCA에서 얘기하는 단방향 데이터 흐름에 대한 이해를 도울 수 있는 토론이었던 것 같아 끝나고 개인적으로 다시 정리해서 글을 남기려고 한다. 매주 하dongdida.tistory.com 프로젝트를 진행하면서 단방향 아키텍처에 관한 관심이 생겼다 이전에는 클린아키텍처를 가지고 Repository, UseCase, ViewModel, View 를 구성해 관리했지만 이전에 블로그 글을 남겼던 내용과 같이 양방향 아키텍처를 충분히 사용해본 지금 상태에서 단방향 아키텍처는 어떤 방식으로 진행되는지 궁금했기 때문.. 대표적으로 SwiftUI..
SwiftUI로 프로젝트를 진행하면서 네비게이션 관리가 점점 어려워 진다고 느껴지는 경우가 많다. 어디서 네비게이션을 처리해야할지 항상 고민이었는데 처음 도입하는데 복잡하다고 느낄 수 있지만 팀원의 추천으로 Router를 활용한 방식을 한번 도입해보려고 한다. Router Injection은 네비게이션 로직을 완전히 추상화해 의존성으로 주입하는 패턴이다. 일단 기존의 네비게이션을 활용하자면struct CalendarView: View { @State private var events: [Event] = [] @State private var navigationPath = NavigationPath() var body: some View { NavigationStack(..
이번 프로젝트에서 맡은 역할 중 FCM을 활용한 알림 서비스 구현 Task가 있어 먼저 자세하게 FCM이 어떤건지.. 어떻게 구현하는건지.. 어떤 방식으로 구성되어있는지 한번 알아보려고 한다! 먼저 FCM은 Firebase Cloud Messaging으로 말 그대로 Firebase 플랫폼에서 제공하는 메세지 전송 서비스로 앱에서 푸시 알림을 전달하는데 주로 사용 되게 된다! 이 서비스는 앱에 실시간 데이터를 전송하거나 사용자에게 알림을 제공하는데 유용하게 사용된다고 한다! 또한, 크로스플랫폼을 지원하는 것도 장점!! 그럼 기본 개념에 대해서 알아보자FCM의 구조앱 클라이언트 : 푸시 알림을 수신 하는 앱FCM 서버 : 알림을 전송하는 서버 (Firebase에서 관리)FCM 전송 API : 푸시 알림을 전..
요즘 프로젝트를 진행하면서 너무 정신없이 바쁘단 핑계로 아주 오랜만에 블로그를 남긴다.. 영상 챗봇 관련 내용을 진행하면서 AVAudioSession을 다루는데 영상을 킨상태로 음성을 다루자니 자동으로 ducking되는 현상때매 꽤나 애먹었던 기억이 있어서 AVAudioSession은 어떤 것이고 무엇을 다루고 설정할 수 있는지 정리 해놓으려고 한다. 먼저 iOS에서 AVAudioSession은 앱과 iOS 오디오 시스템인 Core Audio 사이에서 중개자 역할을 담당한다. 여기서 어떤 방법을 통해 연결하는지 알아보도록 하자AVFoundation계층에서 AVAudioSession은 AVFoundation 프레임워크 안에 구현된 클래스이다. 앱은 AVFoundation을 통해 오디오 세션을 구성하고 활성..
현재 나는 정신 건강 챗봇 서비스를 개발하고 있는데 얼굴 인식, 음성, 텍스트를 분석해 현재 감정상태를 판단하고 이 감정에 맞는 답변을 낼 수 있는 프로젝트를 진행 중이다. LLM 모델은 AI 연구소 측에서 담당하여 협업하며 진행 하는 중.. 현재까지 프로젝트를 진행하면서 Feature 단위로 모듈화를 나눠 UserSession, Chatbot, FaceCatch, VoiceRecord 등 각 기능별로 모듈화를 해 내부 네트워크 통신이나 데이터 저장하는 로직을 해당하는 기능에 모두 통합해 구성하였다. 이렇게 구성했을때 기능에 따라 모든 기능이 분리되어 관리된다는 장점이 있었지만, 영상 채팅 기능을 추가하여 기능을 디벨롭하면서 명확한 한계점을 맞이할 수 있었다.. API 통신을 하는 네트워크 로직, 데이터..
이전에는 Swift Package를 활용해 모듈화를 구현해 봤다면, 오늘은 Tuist를 활용해 모듈화 아키텍처 구조를 설계해보려고 한다.먼저 Tuist에 대해서 아주 간략하게 개념을 잡고 가자면, 협업을 하면서 프로젝트 파일이 충돌되는 일이 잦아 conflict가 나는 일이 있다. 그 문제를 해결하는데 혼이 쏙 빠진 적이 있는데 이 프로젝트의 복잡한 설정과 관리를 코드로 처리할 수 있도록 도와주는 도구라고 이해하면 된다! Swift 언어로 프로젝트를 관리하게 되니 여러 측면에서 생산성이 증가하고 이 외에도 모듈화 하는 과정에서 그 구조를 체계적이고 시각화할 수 있다는 점 등등 협업 하는 과정에서 아주 이점이 많은 툴이다. 이제 Tuist로 프로젝트를 시작해보자. 일단 Tuist가 설치되어있다는 것을 가정..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.