Si Jong Tech Blog
close
프로필 배경
프로필 로고

Si Jong Tech Blog

  • 분류 전체보기 (237)
    • ◽️ Programming (237)
      • T I L (89)
      • Swift 문법 (22)
      • UIKit (18)
      • SwiftUI (11)
      • TCA (6)
      • RxSwift (7)
      • iOS (35)
      • 회고 (5)
      • ◽️ Algorithm (32)
      • ◽️ Computer Science (12)
  • 홈
  • 태그
  • 방명록
AVAudioSession설정으로 인한 트러블 슈팅 과정

AVAudioSession설정으로 인한 트러블 슈팅 과정

요즘 프로젝트를 진행하면서 너무 정신없이 바쁘단 핑계로 아주 오랜만에 블로그를 남긴다.. 영상 챗봇 관련 내용을 진행하면서 AVAudioSession을 다루는데 영상을 킨상태로 음성을 다루자니 자동으로 ducking되는 현상때매 꽤나 애먹었던 기억이 있어서 AVAudioSession은 어떤 것이고 무엇을 다루고 설정할 수 있는지 정리 해놓으려고 한다. 먼저 iOS에서 AVAudioSession은 앱과 iOS 오디오 시스템인 Core Audio 사이에서 중개자 역할을 담당한다. 여기서 어떤 방법을 통해 연결하는지 알아보도록 하자AVFoundation계층에서 AVAudioSession은 AVFoundation 프레임워크 안에 구현된 클래스이다. 앱은 AVFoundation을 통해 오디오 세션을 구성하고 활성..

  • format_list_bulleted ◽️ Programming/iOS
  • · 2025. 5. 26.
  • textsms
모듈화에 대한 고민, 최적의 구조를 찾아야한다!!

모듈화에 대한 고민, 최적의 구조를 찾아야한다!!

현재 나는 정신 건강 챗봇 서비스를 개발하고 있는데 얼굴 인식, 음성, 텍스트를 분석해 현재 감정상태를 판단하고 이 감정에 맞는 답변을 낼 수 있는 프로젝트를 진행 중이다. LLM 모델은 AI 연구소 측에서 담당하여 협업하며 진행 하는 중.. 현재까지 프로젝트를 진행하면서 Feature 단위로 모듈화를 나눠 UserSession, Chatbot, FaceCatch, VoiceRecord 등 각 기능별로 모듈화를 해 내부 네트워크 통신이나 데이터 저장하는 로직을 해당하는 기능에 모두 통합해 구성하였다. 이렇게 구성했을때 기능에 따라 모든 기능이 분리되어 관리된다는 장점이 있었지만, 영상 채팅 기능을 추가하여 기능을 디벨롭하면서 명확한 한계점을 맞이할 수 있었다.. API 통신을 하는 네트워크 로직, 데이터..

  • format_list_bulleted ◽️ Programming/T I L
  • · 2025. 5. 9.
  • textsms
Tuist를 사용하면서 만난 Duplicate Symbol Error

Tuist를 사용하면서 만난 Duplicate Symbol Error

Tuist를 활용해 카드 정보를 API로 호출 받아 관리하는 프로젝트를 진행하게 되었는데 이전에 학습해 둔 Tuist를 바탕으로 각 모듈을 나눠 기능을 구현하게 되었다. 네트워크 기능을 제외한 모든 기능을 모듈 별로 구현한 다음 마지막으로 네트워킹을 넣게 되었는데 이 시점에서 Duplicate Symbol Error가 발생하여 해결하기 까지 아주 골치가 아팠다.. 하지만 결국 원인을 알게 되었고 해결 했으니 잊지 않기 위해 그 과정을 한번 정리해보자 Duplicate Symbol Error란 무엇인가Tuist를 활용하여 모듈을 나눠 개발을 하다가 빌드 과정에서 이런 오류를 만나게 될 때가 있다Duplicate symbol '_ExampleFunction' in: /path/ModuleA.o /..

  • format_list_bulleted ◽️ Programming/iOS
  • · 2025. 4. 30.
  • textsms
Tuist Scaffold로 모듈 생성 자동화 하기 + 외부 Dependencies 추가하기

Tuist Scaffold로 모듈 생성 자동화 하기 + 외부 Dependencies 추가하기

이번에는 이전에 Tuist를 활용해 모듈화를 구성했다면 추후 모듈화를 자동화하여 편리하게 사용할 수 있는 환경 세팅을 해주기 위해 Scaffold로 자동화를 해주고 그 이후 외부 Dependency를 추가해보려고 한다. 먼저 Scaffold를 적용시켜보자! Tuist를 통해 모듈화하는 이전 세팅이 완료된 상황에서 진행해 보려고 한다.우선 Manifests/Tuist/Templates/Feature 디렉토리까지 만들어 둔 다음 Feature 내부에 Sources 그룹과 Feature.swift 파일을 만든다!mkdir -p Tuist/Templates/Feature/Sources터미널을 활용해 만들어주면 한번에 완성이 된다.그 다음 Feature.swift 파일 내 템플릿 파일을 구성해 주어야 한다.imp..

  • format_list_bulleted ◽️ Programming/iOS
  • · 2025. 4. 22.
  • textsms
Tuist를 활용해 TMA 구조 설계하기

Tuist를 활용해 TMA 구조 설계하기

이전에는 Swift Package를 활용해 모듈화를 구현해 봤다면, 오늘은 Tuist를 활용해 모듈화 아키텍처 구조를 설계해보려고 한다.먼저 Tuist에 대해서 아주 간략하게 개념을 잡고 가자면, 협업을 하면서 프로젝트 파일이 충돌되는 일이 잦아 conflict가 나는 일이 있다. 그 문제를 해결하는데 혼이 쏙 빠진 적이 있는데 이 프로젝트의 복잡한 설정과 관리를 코드로 처리할 수 있도록 도와주는 도구라고 이해하면 된다! Swift 언어로 프로젝트를 관리하게 되니 여러 측면에서 생산성이 증가하고 이 외에도 모듈화 하는 과정에서 그 구조를 체계적이고 시각화할 수 있다는 점 등등 협업 하는 과정에서 아주 이점이 많은 툴이다. 이제 Tuist로 프로젝트를 시작해보자. 일단 Tuist가 설치되어있다는 것을 가정..

  • format_list_bulleted ◽️ Programming/iOS
  • · 2025. 4. 14.
  • textsms
TCA - Effect & Test 에 대해서 조금 더 알아보기

TCA - Effect & Test 에 대해서 조금 더 알아보기

앞서 1주차 스터디에서 앱의 상태를 나타내는 State와 이를 변경하는 Action, 이 Action의 기능을 구현하고 상태를 변경하는 Reducer를 알아봤다. 이번에는 Effect에 대해서 알아볼 예정인데. Action이 반환하는 타입이자, Action을 거친 모든 결과물을 칭한다. 그 중 외부에서 어떤 처리가 일어나 예상하지 못한 결과물을 얻는 Side Effect에 대해서 까지 알아볼 예정이다. 이에 더해 이러한 비동기 작업이나 외부 작용에서 발생하는 Side Effect를 우리 앱의 로직에 통합하는 역할인 Store까지 알아보자! Effect의 구현과 활용Action에 따른 결과가 바로 EffectEffect는 Reducer의 액션이 반환하는 타입으로 액션을 거친 모든 결과물이라고 말할 수 있다..

  • format_list_bulleted ◽️ Programming/TCA
  • · 2025. 4. 9.
  • textsms
단방향 데이터 흐름이 왜 좋은데!?

단방향 데이터 흐름이 왜 좋은데!?

스터디를 진행하면서 토론을 했던 주제가 TCA에서 얘기하는 단방향 데이터 흐름에 대한 이해를 도울 수 있는 토론이었던 것 같아 끝나고 개인적으로 다시 정리해서 글을 남기려고 한다. 매주 하나씩 이런 형태의 글을 꼭 써야지!!  오늘은 그 첫번째로 단방향 데이터 흐름이 왜 좋은건데? 라는 주제로 토론한 내용을 토대로 정리한 내용이다.단방향 데이터 흐름이란 말 그대로 데이터가 하나의 방향으로만 흐른다는 의미이다.TCA에서 데이터 흐름을 보면 다음과 같다사용자입력(Action) -> Reducer -> State -> View이 흐름은 언제나 한 방향으로만 일어나고 반대로 거슬러 올라가는 흐름이 없기 때문에 단방향이라고 말한다. 그렇다면 단방향 데이터 흐름이 왜 좋을까? 이걸 따져보기 위해 먼저 양방향 데이터..

  • format_list_bulleted ◽️ Programming/T I L
  • · 2025. 4. 3.
  • textsms
에러 핸들링과 Toast Message 활용하기

에러 핸들링과 Toast Message 활용하기

챗봇을 개발하면서 예외, 오류 처리 등 이용자 경험에 필수적으로 포함되어야 하는 부분에 대해 구현하기 위해 일단 발생할 수 있는 상황을 정리해 에러 핸들링을 나열하고 이 핸들링을 통해 특정 상황에 맞는 Toast 메세지를 날려주는 로직을 구현하려고 한다! 먼저 최대한 기능별 모듈화를 통해 프로젝트를 쪼개 구현하고 있기 때문에 에러 핸들러 패키지를 만들어서 사용하는 방식을 사용해보자!이 글에서는 대표적인 사례로 인터넷 연결이 끊겼을때 상황을 가정해 로직 구현을 해보려고 한다.public enum NetworkError: Error { case networkError(code: Int, underlying: Error?) case noInternetConnection case yesInter..

  • format_list_bulleted ◽️ Programming/iOS
  • · 2025. 4. 2.
  • textsms
모듈화 아키텍처를 적용해 재사용성 높히기

모듈화 아키텍처를 적용해 재사용성 높히기

최근 챗봇을 구현하는 과정에서 단일 프로젝트 내 클린아키텍처만 적용해 구현 하는데, 진행을 하다보니 구현 기능들이 추가되었고 점점 크기가 커져 나가는 것을 느꼈다. (다른 큰 프로젝트 비해서는 아주 작은 편이지만..) 모듈화에 관련한 스터디를 진행하게 되면서 이참에 기능 단위로 로직을 모듈화해 다른 프로젝트에서도 재사용성을 높히는 방법을 한번 적용해보려고 한다. 모듈화 방향성?모듈화를 진행하면서 느끼는 건 어떤 방식으로 모듈화를 진행하는지에 대한 정답은 딱 정해져 있지 않은 것 같다. 그때 그 프로젝트, 개발 환경 등 각 요소에 맞춰 어떤 방향으로 모듈화를 진행할지, 유지 보수, 재사용성에 맞춰 진행을 방식도 있고, 협업 시 기능 구현을 나눠 충돌없이 개발이 진행 가능한 환경을 조성하던지.. 등등 아래의..

  • format_list_bulleted ◽️ Programming/T I L
  • · 2025. 3. 27.
  • textsms
모듈화 아키텍처를 활용한 프로젝트 관리

모듈화 아키텍처를 활용한 프로젝트 관리

Mash-Up 동아리 활동이 슬슬 시작되면서 프로젝트 팀 구성은 아직 되지 않았지만 스터디가 개설되었다. 나는 두가지의 스터디에 참여하게 되었는데 Tuist를 활용한 모듈화 스터디와 TCA 이렇게 두가지를 선택했다. 다른 동료들은 어떻게 모듈화를 해 나가는지, TCA를 공부할때 혼자 공부하니 잘 되지 않았던 것을 이번 기회에 둘 다 얻어가고싶어 신청하게 되었다. 먼저 오늘은 본격적인 모듈화 스터디가 시작되기 전에 어떤 방식으로 모듈화가 이뤄지는지, 모듈화 아키텍처가 왜 필요한지, 강점은 무엇인지 등 아주 기초적인 개념 정리를 하기 위해 블로그를 작성하게 되었다. 그럼 이제 하나하나 기초부터 알아보자 모듈화 아키텍처란?모듈화 아키텍처는 애플리케이션의 기능과 책임을 여러 독립된 모듈로 분리하여 개발하는 설계..

  • format_list_bulleted ◽️ Programming/T I L
  • · 2025. 3. 20.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • ···
  • 24
  • navigate_next
프로필 로고

Si Jong Tech Blog

전체 카테고리
  • 분류 전체보기 (237)
    • ◽️ Programming (237)
      • T I L (89)
      • Swift 문법 (22)
      • UIKit (18)
      • SwiftUI (11)
      • TCA (6)
      • RxSwift (7)
      • iOS (35)
      • 회고 (5)
      • ◽️ Algorithm (32)
      • ◽️ Computer Science (12)
최근 글
인기 글
최근 댓글
태그
  • #uikit
  • #오블완
  • #project
  • #티스토리챌린지
  • #MVC
  • #swift
  • #tableView
  • #알고리즘
  • #TIL
  • #IOS
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바