일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- unittest
- Swift thread
- 함수형 프로그래밍
- XCTest
- github
- firestore
- xcode
- SwiftUI VStack
- 쏙쏙 들어오는 함수형 코딩
- 오픈소스
- Apple Developer Academy @ POSTECH
- combine
- print 단점
- CI
- swift CI 적용
- 액션과 계산 데이터
- LGTM
- 2기화이팅
- SwiftUI
- os_log
- IOS
- auto_assign
- MVVM
- 함수형 코딩
- Firebase
- Swift
- swift github action
- ChatGPT
- 하드디스크 삭제 원리
- flutter
- Today
- Total
목록전체 글 (26)
개발공방

코드리뷰를 겪으면서 print() 구문이나, dump() 를 남겨뒀을 때 지워달란 리뷰를 받은적이 있다. 난 해당 값들을 확인하면서 개발하는게 편해서 남겨뒀다가 미처 지우지 못했던 것이다. 그러다 문득 의문이 들었다. 디버깅 코드들이 과연 얼마나 앱에 영향을 미칠까?? 이에 대해 알아보았다. 명확한 공식문서나 WWDC영상은 찾을 수 없었으나, stackoverflow를 통해 어느정도 해답을 얻을 수 있었다. print(), dump() 와 같이 개발하면서 디버깅시에 도움을 주는 코드들이 있다. 하지만 이 코드들은 프로덕션(릴리즈) 상태에서는 해당 코드가 실행은 되지만, 눈으로 확인할 수 없다. 말 그대로 디버깅 코드이기 때문이다. 위와 같은 디버깅 코드들이 프로덕션 코드에 남아있을 때, 생길 수 있는 단..

현재 애니또 iOS팀이 직면한 문제 현재까지 개발하면서 많은 문제와 버그들을 만났다. 첫 문제들을 해결하는데는 어려움이 없었지만, 앱의 규모가 조금씩 커지면서 문제들이 서로 엮이기 시작했다. 그래서 A라는 문제를 해결하면 B라는 문제가 다시 발생하는 상황이 생겼다. 이렇게 우당탕탕 앱을 만드는 것이 아니라 정형화된 틀이 필요했다. 그리고 각자가 만드는 기능들을 다른 팀원이 테스트하는데 굉장한 어려움이 있었다. 각자가 해당 브랜치로 가서 그 상황을 똑같이 만들어야 테스트가 가능했다. (그래서 PR에 테스트 방법을 상세히 적기도 했다) 애니또 팀에서 리팩토링을 진행한 이유 이젠 그 방식이 아니라 테스트 코드가 포함된 코드를 만들고 싶었고, 팀원끼리 상의한 결과 차근차근 리팩토링을 진행하자! 였다. 현재는 그..

처음 의문이 든 것은 문득 데이터가 삭제되는 과정이 너무 궁금했다. 무언가를 지운다면 그 잔해가 분명 남을텐데, 어떻게 외부와의 통신이 없이 지워지는 것일까? 란 궁금증에서 출발했다. 내 생각으론 에너지 보존 법칙에 같이 폐쇄되어 있는 공간에서 무언가를 삭제했다면 그 에너지(데이터)는 외부와의 통신이 없다면 내부에 남아 있을 것인데, 어떻게 데이터가 꾸준히 삭제되는 것인지에 대한 의문이 생겼다. (우리가 집 내부에서 무언가를 버린다고 해서 쓰레기통에 넣지만, 아직까지 집 내부에 있는 쓰레기통에 들어있기 때문에 전체적인 질량은 변하지 않는것과 같은 원리로 생각했다.) 혼자 곰곰히 생각해보다가 한 가설을 세웠다. 처음 생각한 가설은 가설 : 잔해가 남을 것이다. (틀림) 우리가 만약 정확히 100GB의 하드..
ADA 회고겸 2기 꿀팁 아카데미를 수료한지 두 달이 넘은 지금에서야 전체적인 아카데미의 회고를 하려 한다. 말이 회고지 배운점들이고, 어쩌면 2기 사람들이 본다면 유익할 수 있을 내용이다. 아카데미에서 소프트 스킬과 하드 스킬을 굉장히 많이 배웠다. 일일이 나열하기엔 너무 많고, 9개월의 과정에서 배운 인생 꿀팁(?) 같은 내용들을 적어봤다. 아래 적은 내용들을 아카데미 기간동안 내가 겪었고, 남들을 보며 느낀점들이다. 지극히 개인적인 생각이라 공감된다면 봐주시고, 아니라 생각하신다면 생각이 다르구나 하고 넘어가 주세요 ^_____^ 1. 행위로써의 만족을 조심하자. 다양한 챌린지를 진행하다 보면, 우선 큰 주제를 정하고 그에 따른 리서치나 인터뷰를 종종 하게 된다. 물론 팀마다 다르겠지만, 빅 아이디..

크리스마스를 맞아 평소 해보고 싶었던 UIBezierPath를 끄적여 보기로 했다. 다들 즐거워하는 크리스마스이기 때문에 그냥 그림을 그리기 보단 의미있는 것을 그리고 싶었다. 그래서 크리스마스 트리를 그리기로 결정했다. UIBezierPath가 어떤건지 대충 알긴하지만 직접 사용해본적은 없었기에, 꽤나 흥미로웠다. 참고 : https://zeddios.tistory.com/814 zedd님의 정리를 참고했다. 정리가 매우 완벽하기 때문에 다른 글을 필요없이 저 시리즈를 쭉 훑어보면 이해가 될 것 같다. zedd님의 글엔 사람들의 이해를 돕기위해 viewDidLoad나 draw 함수에 다 정의되어 있는데, 난 내 방식대로 코드를 짰다. (property를 미리 만들고, 그리는 함수를 분리하는 식) (보시..

이번에 PR을 날리면 자동으로 빌드를 돌려서 develop이 박살나는지 확인해주는 CI를 적용해보았다. 적용해보면서 겪은 문제들과, 구글링해도 나오지 않던 바보같은 실수를 다른사람들은 하지 않았으면 하는 마음에 작성해본다. 우선은 특정 브랜치를 생성해서 진행한 게 아니라 develop 브랜치에서 진행했다. 그 이유는 develop에 들어갈 때 적용이 되는데, 새로 브랜치를 만들면 CI 추가 작업하고(한번에 된다는 보장이 없음. 분명 실수를 하기 때문에), develop에 PR날리고, 그 PR이 develop에 merge가 되어야 그 때부터 테스트를 할 수 있기 때문에 번거로워서 develop에서 작업했다. 우리팀 규칙으론 develop에서 작업은 원칙적으로 금지였지만, CI관련 작업이었고, 현재 앱 심사..

Github를 이용해서 팀 프로젝트를 할 때 Pull Request를 생성하면 자동으로 코드리뷰어를 설정해주는 CI입니다. 1. 아래 사이트에 들어가서 Add to Github 버튼을 누릅니다. https://probot.github.io/apps/auto-assign/ https://probot.github.io/apps/auto-assign/ What it does Auto Assign adds reviewers/assignees to pull requests when pull requests are opened. How it works When the pull request is opened, automatically add reviewers/assignees to the pull request.I..

제가 이해한 내용을 이해하기 쉽게 정리합니다. 혼잣말하는 느낌으로 작성해서 반말로 작성했습니다 ! DispatchQueue를 사용해야하는 이유는 도대체 뭘까?? -> 비동기적으로 처리해야할 데이터(API 통신) 가 있을 때 사용한다. (우리가 어떤 앱을 실행했을때 바로 뭔가가 뜨지않고 1~2초후에 뜨는게 API통신으로 어떤 데이터를 불러오기 때문이다.) 비동기적이란 ?? 순차적(직렬적)으로 진행되는 작업이 아닌 병렬적으로 진행되는 작업 이게 무슨 말이지 ?? 1번(2초 걸리는 작업) 2번(3초 걸리는 작업) 3번(1초 걸리는 작업) 4번(2초 걸리는 작업) 으로 수행되어야할 작업이 있을 때 동기(Sync) : 1번이 끝나야 2번이 실행되고, 2번이 끝나야 3번이 실행되고 ... 그럼 총 8초가 걸릴것이다..

현재는 간단하게 제목과 닉네임을 받아볼 예정이다 Firebase에서 FirestoreDatabase 탭을 선택한다 위치는 asia-northeast3가 대한민국 서울이다 (참고 : https://firebase.google.com/docs/firestore/locations?hl=ko) Firestore의 구조는 Collection -> Document -> Field or Collection 이다 ex) freeboard -> NDV8FGEUcp7mt5R892bM -> title: "첫 번째 게시물", nickname: "chemi" Collection이 DB의 이름이고, Document가 개별적인 저장공간의 이름이고, Field가 저장되는 값이라 생각하면 이해가 편할 것 같다 Cloud가 생성되면 컬..

Firebase를 아예 처음 접하는 사람들을 위해, swift로는 연동을 해본적이 없기에 여러모로 도움이 되고자 글을 쓴다 https://console.firebase.google.com/?hl=ko 로그인 - Google 계정 하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인 accounts.google.com google 로그인 이후 firebase 콘솔로 이동해서 프로젝트 생성 클릭 Analytics는 사용 설정해도되고 안해도 되는데, 실제 출시할 앱이면 사용하는 게 좋지만 지금은 연결방법정도만 알아보는 과정이기 때문에 설정을 하지 않았다. (사용 설정해도 상관 X) 프로젝트 만들기를 누르면 프로젝트가 생성된다 (1분정도 소요) Xcode project를 생성한다 현재는 iOS..