Sign in

9월의 목표는 github action 과 관련된 아래 두가지 자동화 방법을 포스팅하는거였어요

  1. develop 브랜치로 push 하면 👉🏻 build & test 실행
  2. release 브랜치로 push 하면 👉🏻 테스트 플라이트 자동 등록

이전 포스팅에서는 1. develop 브랜치로 push 하면 👉🏻 build & test 실행까지 마쳤죠?

오늘 목표는 2. release 브랜치로 push 하면 👉🏻 테스트 플라이트 자동 등록 입니다. 바로 시작하죠 ㄱㄱ!

release 브랜치로 push 하면 👉🏻 테스트 플라이트 자동 등록

깃헙 레포의 .github/workflowsdeploy_on_release.yml 이란 파일을 만들어 줄거예요!

만약에 기존에 등록된 github actio …


9월의 단 하나의 목표가 있었다면,,? 바로바로 추석에 github action 포스팅하는 것..

앗,, 해야하는데,,ㅎㅎㅎ 하고 누워있다가 주섬주섬 노트북 챙겨서 나왔읍니다.. 이게 바로 인간 승리?ㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ

목표

  1. develop 브랜치로 push 하면 👉🏻 build & test 실행
  2. release 브랜치로 push 하면 👉🏻 테스트 플라이트 자동 등록

1. develop 브랜치로 push 하면 👉🏻 build & test 실행

일단 이렇게 무족권 테스트 통과하는 테케 세팅해놓고요,,?


안녕하세요 인터넷 세상 친구님덜! 일단 제 티셔츠 구경하실래여? (다짜고짜 자랑)

한 두개 정도는,, 아직 저의 것이 아니긴하지만,, 꼭 빼앗고 말것,,

전 평소에 여러 행사들을 참여하면서 개발 굿즈를 모으는걸 좋아하고 (거의 굿즈 모으려고 참가하는 수준ㅎ) 특히 옷 종류를 제일 좋아해요!! 스티커보다 유니크하고,, 그냥 예쁘잖아요! ㅎㅎ

그런 와중에 현실 칭긔칭긔들이 개발자스러운.. 졸귀 티셔츠를 만든거예요?! 못참고 당장 사버림 ㅎ


저는 요 며칠 lldb 공부 중이에요. 뭔 컨퍼런스인진 기억안나지만 이전에 lldb 세션 듣고서 우왕 공부해야지 ㅇ0ㅇ!! 했던 기억은 있는데 ㅎㅎ,, 그러고서 몇년 후에 공부하는 내가 ㄹㅈㄷ ㅜ 공부 안하니 응??????????? 뭐 거기서 스티커랑 굿즈나 얻고 왔겠죠 ㅎㅎㅎㅎㅎㅎㅎ,,,◠‿◠

거기서 얻은건,, 과연 무엇?

튼 이것 저것 보고 있는디 [WWDC 2018] Advanced Debugging with Xcode and LLDB 영상 보다가 진짜 개쩌는 기능이 있는거예요?! 이건 포스팅 안하고 못참지;; 하 2018 년 영상이니까,, 나만 3년 손해 보고 있었음 또;;

문제 상황

🤔 아래 코드에서 텍스트 뷰 클릭해도 print 되지 않는데,, 흠 머가 …


시작 계기

올해 초부터 회사에서 일주일에 네시간씩 자기 개발이든 뭐든 자유롭게 사용할 수 있는 시간을 주기 시작했다

이 맘때쯤 내가 갖고 있던 생각은?

흠,, SwiftUI 랑 Combine 슬슬 조져봐야하는데,,??? MVVM도 써보고,,,

TDD,,? 아주 말로만 백날 천날 듣기만 하고 테스트 코드 언제 작성해보지.. ㅎㅎ.. Quick & Nimble 많이 사용하는 듯? 하 써봐야하는디 ㅠ

언젠간 해야지,, ^.ㅠ 하고 부채감만 쌓아두고 있던 게으른 잇프피 인간은 이 기회에 반강제로 플젝 시작하기로 결정 ㅎㅎ

주제 정하기

주제 정하는 의식의 흐름은 이랬다

  1. 어차피 무슨 주제를 잡든 SwiftUI, Combine, Test Code 다 생소한거니까 제 …


SwiftUI에서는 Text(_:style:) 생성자를 이용해서 날짜 및 시간을 다양한 형식으로 표시할 수 있습니다.

Text(Date(), style: .date)

두번째 파라미터로 오는 styleText.DateStyle 타입으로 총 다섯가지의 스타일이 미리 정의되어 있습니다. (date, time, offset, relative, timer )

하나씩 살펴보도록 합시다

date

날짜를 표시하는 스타일입니다.

연도, 월, 일까지 표시 됩니다 (어제, 내일 등의 text는 제가 추가해 놓은 설명입니다)

time

날짜의 시간만 표시하는 스타일입니다


동기와 비동기

우선 동기와 비동기의 개념부터 살짝 짚고 가봅시다

동기 (sync)

작업을 동기적(synchronous)으로 실행한다는 것은 무엇을 의미할까요?

만약 어떤 작업을 동기적으로 실행한다면, 해당 작업이 끝날 때까지 다른 작업들은 기다립니다.

비동기 (async)

반면 비동기(asynchronous) 로 작업을 실행한다면요?

해당 작업이 끝나든 말든 신경 쓰지 않고 나머지 작업을 바로 실행합니다. 그래서 이미지 다운로드나 네트워킹 등 작업 시간이 오래걸리는 것들은 비동기로 처리하는게 일반적인 방식이었습니다. 메인 스레드 막혀서 사용자 이벤트 등을 못받으면 안되니까요!


SwiftUI 는 우리의 코드에서 아래의 세가지 요소를 확인합니다

  1. Identity — SwiftUI가 element동일한 것으로, 혹은 다른 것으로 인식하는 방법
  2. Lifetime — SwiftUI가 뷰와 데이터의 존재(existence)를 시간에 따라 추적하는 방법
  3. Dependency — SwiftUI가 인터페이스업데이트해야 하는 시기와 그 이유를 이해하는 방법

이 세 가지 개념을 통해 SwiftUI는 변경해야 할 사항(what), 변경 방법(how), 변경 시기(when)를 결정할 수 있습니다.

이전 두편에 걸쳐 identity가 무엇이고, identity가 어떻게 view의 lifetime 과 연관되어 있는지 살펴봤 …


Picker

swiftUI에서는 위와 같은 picker를 해당 코드로 만들 수 있습니다.

enum Flavor: String, CaseIterable, Identifiable {
case chocolate
case vanilla
case strawberry

var id: String { self.rawValue }
}

struct FlavorPicker: View {
@State private var selectedFlavor = Flavor.chocolate

var body: some View {
VStack {
Picker("Fl …

여러분 알져? 카카오톡 돈 봉투에 담아보낼 때 애니메이션 팡팡 터지는거!

전 항상 이걸 어떻게 했을까 궁금했었는데, CAEmitterLayerCAEmitterCell 로 비슷하게 구현 가능하다는 것을 동료분을 통해 힌트를 얻었답니다 ✦‿✦ 👍🏻

여기에 해당하는 프로퍼티는 너무 많기도 하고 저도 잘 알지 못하므로, 해당 기능을 구현하기 위해 사용했던 최소한의 프로퍼티만 사용해서 설명하도록 하겠습니다.

CAEmitterLayer

우선 CAEmitterLayer의 정의를 봅시다.

A layer that emits, animates, and renders a particle system.

ㅇㅋ particle system을 방출하고, 움직이게하고, 렌더링하 …

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store