목록전체 글 (21)
찹모찌의 기록일지

위치기반 숏폼 플랫폼 Layover에서 재생 화면 기능을 맡아 개발한 경험이 있다. 유저 프로필 정보, 유저의 위치 정보를 재생 화면과 같이 담아 보여줘야 하는 기능이었다. 위와 같은 재생 화면에서 제목, 내용, 태그, 유저 이름 까지는 따로 비동기적인 동작이 필요하지 않았다. 왜냐하면 영상 데이터를 불러올 때 같이 불러오기 때문이다. 그러나 프로필 이미지와 위치 정보 같은 경우 비동기로 동작하기 때문에 고민이 필요해졌다. CollectionView의 Cell을 구성할 때, 제목, 내용, 태그, 유저 이름과 같은 정보들을 넣어주고 같이 유저 프로필과 위치 정보를 넣어주었는데, 유저 프로필과 위치 정보를 기다려야 하는 탓에 재생 화면 스크롤을 내릴 때 끊김이 발생했다. 필자는 생각했다. 그렇다면 동영상 먼..

Layover 프로젝트를 진행하던 도중 재생 화면의 프로필 이미지와 위치 정보가 뒤늦게 나타나는 경우가 있어 이를 개선하고자 Prefetch를 적용시켜보았다. UIKit에서 CollectionView나 TableView는 DataSourcePrefetching을 이용해 Prefetching을 지원한다. https://developer.apple.com/documentation/uikit/uicollectionviewdatasourceprefetching/prefetching_collection_view_data Prefetching collection view data | Apple Developer Documentation Load data for collection view cells before ..

영상을 재생시킬 때 어떤 문제가 발생할 수 있을까? 위의 gif처럼 영상(AVPlayer)를 UICollectionView의 각 cell에 담아 영상 시청 기능을 구현했다. 그러나 프로젝트를 진행하면서 영상을 시청하다 뒤로 나가거나, 아니면 계속 스크롤하며 다음 cell의 영상을 재생했을 때 기존에 시청했던 영상이 재생되는 문제가 발생했다. 결국 ViewController의 deinit이 호출되지 않는다는 점을 확인하고, Memory graph에서 Observer가 해제되지 않고 계속 동작하는 것을 확인하고 문제를 해결했다. 이처럼 AVPlayerLayer를 커스텀해서 사용할 때, UISlider를 이용하여 재생바를 만들어 두거나 영상을 반복 재생시키기 위해 Notification Center를 이용하거..

숏폼 플랫폼 Layover를 개발하면서, iOS앱 내에서 영상을 재생할 일이 생겼다. iOS에서 영상을 재생하려면 어떻게 해야할까? 1. 영상 재생하기 1) AVPlayerViewController 위와 같이 AVKit에서 제공하는 AVPlayerViewController를 쓰면 쉽게 재생을 할 수 있다. 그러나 AVPlayerViewController는 커스텀이 어렵기 때문에 AVPlayerLayer를 사용해 커스텀 재생 화면을 만들 수 있다. 2) AVPlayerLayer // 먼저 AVPlayerLayer가 있는 VideoView class를 만들어준다. // AVPlayerLayer는 VideoView에 가득차게 만들어 질 것이다. final class VideoView: UIView { priv..

Swift에서 객체(objects)는 어떤 의미일까요? 다음은 Swift 공식 문서에서 알아볼 수 있는 구조체와 class의 정의입니다. Note An instance of a class is traditionally known as an object. However, Swift structures and classes are much closer in functionality than in other languages, and much of this chapter describes functionality that applies to instances of either a class or a structure type. Because of this, the more general term instanc..

네 1차원 배열 단계를 풀어봤습니다. 언어로 C++를 사용했기 때문에 vector를 주로 사용해서 풀게 되었습니다. 기억에 남는 문제를 소개해드리도록 하겠습니다. 백준:2577 숫자의 개수 https://www.acmicpc.net/problem/2577 2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. www.acmicpc.net 자연수 세 개를 곱한 값의 각 자리의 자연수의 개수를 세는 문제입니다. 여기서 중요한 점은 정수를 문자열로 변환하여 각 자리의 숫자를 카운팅하는 부분이 되겠네요. 여기서 처음에 itoa를 사용하여 숫자를 문자열로 변환하려고 했었습니다. 하지만 찾아보니 itoa는 비..

7월 16일은 경인지구 대회를 한 날이었습니다. 광운대 동아리에서 출전을 했구요. 너무 재밌는 경험이었습니다. 개인적으로 되게 겁먹어 있었는데, 너무 겁먹지 않았었나 싶기도 합니다. 😅 운 좋게 본선까지 진출할 수 있어서 좋았습니다. 근데 날씨는 너무 더웠어요. ㅠㅠ 다음에도 참여할 수 있으면 좋겠습니다.

네 이번 2022/07/06 수요일에 테니스를 쳤습니다. 이번엔 서운체육공원이 아닌 까치마을 테니스장인데요. 여기는 아버지가 운동하시는 곳이라 아버지 따라가서 테니스를 쳤습니다. 사실 월요일에도 초안산에서 운동했었는데... 또.. 사진을... 다음엔 하나하나 최선을 다해 기록할 것입니다. 이때 테니스를 친 이유가 제가 라켓의 스트링의 수명이 다한것 같아 스트링을 갈았습니다. 스트링 간 사진도 찍었으면 좋았을 텐데... 많이 아쉽네요. 아무튼, 원래 스트링이 끊어지면 가는 성격인데 이번에 쓰는 줄이 1.28mm로 두꺼워서 그런가 쉽게 안 끊어지더군요. 스트링 로스율이 상당했는데도 말이죠. 그래서 에라모르겠다하고 바로 갈았습니다. 제가 줄을 가져가서 갈았는데도 공임비 12000원을 받으셨습니다....... ..