콩벌레 개발자의 개발 공부 노트
close
프로필 배경
프로필 로고

콩벌레 개발자의 개발 공부 노트

    • 분류 전체보기 (236)
      • 일상 (6)
        • 일상 이야기 (3)
      • Web (17)
        • Spring Boot (6)
        • CSS (3)
        • HTML (2)
        • JSP (0)
      • R (4)
      • Algorithm (88)
        • 백준 (67)
        • 프로그래머스 (19)
      • ICT COG Academy (8)
        • AI 기본 (8)
      • 계산이론 (6)
      • 데이터 베이스 (1)
      • IOT 네트워크 (1)
      • iOS (66)
        • RxSwift (2)
        • swift (17)
        • 앱 개발 (32)
        • 보안 (1)
        • UIKit (10)
        • SwiftUI (3)
      • 클린 아키텍처 (7)
      • 클린 코드 (3)
      • 컴퓨터 구조 (14)
      • 네트워크 (10)
      • 운영체제 (2)
      • KMP CMP (1)
  • mode_edit_outline글작성
  • settings환경설정
  • 홈
  • 태그
  • 방명록

Actor Hopping

넥스터즈 면접에서 actor 관련 질문을 받았을때, actor hopping으로 인해 성능 이슈가 있다는 답변을 받고, 한번 알아보았다. 사실 actor를 쓸때 컴파일 타임에 data race 막아주네? -> 개꿀이네? -> 써야겠네? 이런 흐름으로 큰 생각없이 actor를 썼는데 성능 이슈같은게 있는줄 생각도 못했다.Actor Hopping이란?다른 스레드나 다른 Actor에서 작업하다가 특정 Actor의 프로퍼티나 메서드를 호출(await)하면, 실행 흐름이 기존 컨텍스트에서 새로운 Actor의 컨텍스트로 전환되어야 합니다. 이 전환 과정을 Actor Hopping이라 한다. 성능 이슈가 나타나는 케이스컨텍스트 스위칭이 자주 일어나는 경우await를 만나서 스레드를 전환하거나, suspend 시키고 ..

  • format_list_bulleted iOS/swift
  • · 2026. 6. 16.
  • textsms

Swift MVI 패턴에서 State 변경 검증 테스트하기

MVI패턴을 이용하여 프로젝트를 진행하면서, 기존 MVVM-In/Out 패턴에서 사용하던 ViewModel 테스트 코드 작성 방식으로는 상태값을 검증하지 못하는 이슈가 발생했다. 기존 MVVM 패턴은 input과 그 input에 대한 상태값의 변경인 output을 받아 화면을 갱신하는 구조여서 output에 대한 검증만 하면 되었지만, MVI 패턴은 State를 UI가 의존하는 구조로 intent에 따라 State의 값이 변경되는 구조로, State가 어느 시점에 변경이 되고 종료되는지를 외부에서 알 수가 없다. 예를 하나 들어보자면 다음과 같이 ViewModel을 정의했다고 가정한다.struct ImageFeedState { var images: [IFImage] = [] var isLoad..

  • format_list_bulleted iOS/swift
  • · 2026. 5. 31.
  • textsms

AVPlayer로 m3u8 재생이 안 될 때 — HEVC 코덱 호환성 문제

내가 담당하고 있는 앱(차량 블랙박스 앱)의 기능 중 라이브 스트리밍 기능이 있는데, 기존에는 AVPlayer를 이용하여 영상을 재생하고 있었다. 그런데 새로운 블랙박스 연동 작업을 하던 중 스트리밍이 재생되지 않았다(까만 화면만 나옴). 분명 재생 관련 코드는 건드리지 않았는데도 말이다. 처음에는 내 작업으로 인한 사이드 이펙트라고 생각해 관련 코드를 확인해 봤지만, 변경된 부분은 없었다. 그래서 기존에 지원되던 단말로 스트리밍을 시도해 보니 정상적으로 재생되는 것을 확인했다. 또한 AVPlayer에서 AVPlayerItem의 프로퍼티들(status, error 등)을 KVO로 디버깅해 봤으나, 별다른 로그도 출력되지 않았다. 그래서 선임 개발자께 해당 이슈를 정리해서 문의했고, 이전 블랙박스와 신규 ..

  • format_list_bulleted iOS/앱 개발
  • · 2026. 5. 3.
  • textsms

Mac에서 kmp/cmp iOS 빌드 시 Process 'command 'codesign'' finished with non-zero exit value 1 에러

KMP 또는 CMP로 프로젝트 빌드할 경우 요런 에러가 뜨면서 빌드 자체가 실패한 케이스. 하단에 embedAndSIgnAppleFrameworkForXcode 작업을 실패했다고 하는데, 이 작업은 kmp/cmp 환경을 세팅할때, Build phases로 프로젝트가 빌드 될 때 같이 돌아간다. kmp/cmp의 main에 있는 코드를 kotlin -> obj-c로 변환된 코드를 코드 서명을 해주는 작업을 해주는 동작인데, 이 작업에서 오류가 터지는 것. 나에게 발생한 케이스는 해당 프로젝트 파일이 icloud에 연동된 파일된 상태 + 연동중인 상태이기에 파일어 어떤 아이클라우드 관련 메타 데이터가 내부적으로 추가가 되어서, 코드 서명에 실패한 케이스였다. 만약 똑같은 오류가 발생한다면 프로젝트 파일에 ..

  • format_list_bulleted KMP CMP
  • · 2025. 11. 29.
  • textsms

Swift) 백준 2579번 계단 오르기 - S3

https://www.acmicpc.net/problem/2579 계단의 점화식 문제.특정 계단에서 얻을 수 있는 점수는 다음과 같다.n-1, n 이렇게 연속적으로 접근n-2, n 이렇게 떨어져서 접근따라서 다음과 같은 점화식이 세워짐dp[i-3]+stair[i-1]+stait[i] (연속적으로 계단에 접근한 경우)dp[i-2]+stair[i] (비연속적으로 계단에 접근한 경우)import Foundationlet n = Int(readLine()!)!var stairtArr: [Int] = []for _ in 0..

  • format_list_bulleted Algorithm/백준
  • · 2024. 5. 26.
  • textsms

Swift) 백준 2805번 나무 자르기 - S2

https://www.acmicpc.net/problem/2805 이분 탐색을 이용하여 자르는 부분의 범위를 구하는 문제. import Foundationlet nm = readLine()!.split(separator: " ").map{Int($0)!}let treeArr = readLine()!.split(separator: " ").map{ Int($0)! }var start = 1var end = treeArr.max()!while start mid { count += tree-mid } } if count >= nm[1] { start = mid+1 } else { end = mid-1 }}print(end)

  • format_list_bulleted Algorithm/백준
  • · 2024. 5. 26.
  • textsms
  • 1
  • 2
  • 3
  • 4
  • ···
  • 40
공지사항
카테고리
  • 분류 전체보기 (236)
    • 일상 (6)
      • 일상 이야기 (3)
    • Web (17)
      • Spring Boot (6)
      • CSS (3)
      • HTML (2)
      • JSP (0)
    • R (4)
    • Algorithm (88)
      • 백준 (67)
      • 프로그래머스 (19)
    • ICT COG Academy (8)
      • AI 기본 (8)
    • 계산이론 (6)
    • 데이터 베이스 (1)
    • IOT 네트워크 (1)
    • iOS (66)
      • RxSwift (2)
      • swift (17)
      • 앱 개발 (32)
      • 보안 (1)
      • UIKit (10)
      • SwiftUI (3)
    • 클린 아키텍처 (7)
    • 클린 코드 (3)
    • 컴퓨터 구조 (14)
    • 네트워크 (10)
    • 운영체제 (2)
    • KMP CMP (1)
최근 글
인기 글
최근 댓글
태그
  • #8기
  • #2023
  • #swift
  • #edwith
  • #변경된 점
  • #부트캠프
  • #uikit
  • #스탠포드 강의
  • #앱개발
  • #IOS
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바