ios(9)
-
iOS 개발자의 React 공부하며 느낀 점
iOS를 하다 React 개발을 하게 되어 공부를 하고있는데 다른 것도 많고 비슷한 것도 많았다.공통점SwiftUI에서 State/Observable 등을 통한 State 동기화Flux 패턴Environment와 Context를 통해 dependency 전달할 때 편리하게 관리Stateful / Stateless component가상 Dom을 활용한 부분 렌더링 교체 방식SwiftUI는 가상돔은 아니지만 tree의 diff 연산을 통해 부분 교체하는 점이 닮은 것 같음tuist/pnpm(workspace) 등의 모노레포 트렌드차이점트렌드의 빠른 변화SSR이었다가 CSR이었다가 이제는 또 다시 SSR로 변경되었다. SSR로 다시 돌아왔다. 물론 SSR이 필수는 아니다.이 때문에 풀스택 개발자가 되어버렸다...
2025.11.29 -
[GithubAction] CI - feat.Caching (2)
저번 시간에는 GitHubAction의 기초에 대해 알아보았습니다.프로젝트 앱스토어 배포 이후, 피처 개발에 집중하고자 품이 많이 드는 CI/CD 자동화 개발 구축하였습니다.CI에서 캐싱 적용을 통해 기존 9분 17초에서 7분 50초로 개선한 사래를 공유해보겠습니다. 아이코 앱스토어 링크 아이코처음 시작하는 코인 투자자도 쉽게 시작하는 코인 투자 가이드 이 앱은 복잡한 시장 정보를 AI가 대신 분석해, 꼭 필요한 코인만 쉽고 빠르게 추천해드립니다. - 초보자도 이해할 수 있는 친절apps.apple.comCI (Continous Integration)지속적 통합이라는 뜻으로, 보통은 PR 이벤트로 빌드 테스트와 UnitTest, Integration Test 등을 거치는 것을 의미합니다. 아이코앱은 ..
2025.10.14 -
WebRTC 앱 만들어보기: (1) Domain 지식
등장 배경WebSocket(Web Real Time Communication)은 서버의 중개를 거쳐 통신을 한다. 따라서, Client가 늘어나고, 프레임의 크기가 커질 수록 서버의 부담이 늘어난다.이를 해결하기 위해 등장한 것이 WebRTC이다. P2P로 연결되게 때문에 서버의 부담이 적다. 데이터 송수신에서는 UDP가 이용된다.Signaling두 클라이언트가 1)무엇으로, 2)어떻게 대화할지 서버를 통해 합의하는 과정.IP, 미디어 유형, 코덱 등을 초기화하는 과정Signalling 서버는 양방향 통신이 필요하기 때문에 WebSocket 구현이 일반적임이 시리즈에서는 FireStore를 이용하여 개발해볼 예정SDP(Session Definition Protocol)무엇으로 통신할지: 비디오, 오디오 ..
2024.09.08 -
WWDC2019 - Advances in Networking, Part 1
주요 내용 요약 Low Data Mode Combine in URLSession WebSocket URLSession and Network framework Network mobility Network 프레임워크와 URLSession 2가지 2track으로 진행한다.모티브사이드 프로젝트 채팅 기능에서 WebSocket을 사용하는데, StartScream 대신 직접 구현해보고자 서칭하다가 보게 됨. URLSession 기반 WebSocketTask를 중점적으로 봄. Low Data Mode 비용이 많이 드는 expensive mode인 cellular이거나 혼잡한 Wifi 환경일 때 LowData Mode라고 한다. Always save network data when there is no impact o..
2024.01.24 -
동영상 피드 스크롤 시 중앙의 비디오만 재생되는 기능
유튜브, 인스타, 트위터 등 앱들을 사용할 때는 몰랐는데 생각보다 셀에서 영상이 재생되는 예제를 찾기 힘들었다. 상태 관리가 힘들어서 그런 것 같다. 그러던 중 아래와 같은 요구 사항이 추가되었다 피드 리스트에서 스크롤 시 중앙에 있는 비디오만 재생해주세요 구현 아이디어 1 [참고1] 테이블 뷰의 center 좌표를 구하고 헤당 좌표에 있는 셀의 비디오를 재생 재생 상태 관리는 이전에 재생한 cell을 변수로 저장 func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { let point = self.convert(tableView.center, to: tableView) guard let ind..
2023.03.29 -
Nested ScrollView - 프로 프로필 피드 탭 구현
피드 기능이 추가 되면서 프로필에 유저가 작성한 피드 리스트를 추가하게 되었다. 스크롤 뷰안에 스크롤 뷰가 들어가게 되면서 자연스러운 유저의 스크롤 경험을 구현하기 어려웠다. 티빙과 같은 자연스러운 스크롤 뷰를 만들고 싶었다. 처음엔 내부 테이블 뷰를 isScrollEnabled 속성을 false로 주어 컨텐츠 사이즈를 다 잡아버리는 방식으로 구현했었다. 그러다 아래의 글을 보게 되었고, 이 방식이 reusable한 cell을 전혀 활용하지 못한다는 것을 알게 되었다. [참고1] 나이브한 테이블 뷰 - https://oleb.net/blog/2014/05/scrollviews-inside-scrollviews/ 찾아보니 크게 두가지 방법이 있었다. 1. 스티키 헤더: [참고2]헤더 뷰를 만들고 스크롤에 ..
2023.03.29