일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- IOS
- DiffableDataSource
- MainScheduler
- data_structure
- combine
- GCD
- 명품cppProgramming c++
- MainScheduler.asyncInstance
- Realm
- 등굣길
- leetcode
- SwiftUI
- cleanarchitecture
- DispatchQueue
- 오픈채팅방
- CoreBluetooth
- SRP
- RaceCondition
- swift
- 코테
- gitflow
- DependencyInjection
- MethodSwilzzling
- DynamicMemberLookup
- SeSAC
- 청년취업사관학교
- 프로그래머스
- rxswift
- GIT
- MainScheduler.Instance
- Today
- Total
목록General Dev (12)
Do.
xcresult 파일 생성 우선 junit.xml 포멧으로 변환하기 전에 xcresult 파일을 생성할 필요가 있습니다. 우선 xcresult는 xcode에서 바로 생성되기도 하는데요. (xcode 14.3 기준) 심플하게 찾는 법은 Report Navigator 테스트 결과에서 Ctrl + click 하면 바로 Show in Finder를 볼 수 있습니다. CLI 하지만 보통은 테스트 자동화는 CI/CD를 통해서 이루어 지기 때문에 CLI를 통해 test를 돌릴 필요가 있습니다. xcodebuild -scheme PleaseAttendancePresentationLayer test -destination "platform=iOS Simulator,name=iPhone 14 Pro,OS=16.4" -re..
소개두 개념 모두 생호 배제를 목적으로 한다는 것은 동일하나 이전글의 출력문을 봐서 알겠지만 다른 양상을 보입니다. 어떤 차이에 의해서 그러한 현상이 발생할까요? 이번에는 단골 질문 중 하나인 Semaphore와 Mutex의 차이에 대해서 알아보려고 합니다.Semaphores우선 Semaphore는 P(wait)와 V(signal)로 이루어 져 있습니다. wait 연산은 Semaphore의 값을 감소시키고, signal은 값을 증가 시킵니다. Semaphore의 값이 0일 때, wait 연산을 수행하는 모든 프로세스는 다른 프로세스가 signal 연산을 수행할 때까지 차단되게 됩니다. 이전글에서 설명했었죠? 즉 Semaphore는 사실 정수와 같습니다. 단순히 숫자를 증가시키냐 감소시키냐 와 같다는 것이..
Race Condition레이스 컨디션이란 동시에 여러 스레드 또는 프로세스에서 공유 자원에 접근하고 수정하는 상황에서 발생하는 문제를 말합니다. 특별히 신경쓰지 않으면 멀티스레드 환경에서 반드시 발생할 수 있는 것이죠. 흔히 발생하는 현상으로는 결과값이 예상과는 다르게 나오거나 잘못된 순서로 데이터가 적재됩니다. 메모리를 다루는 경우에는 BAC_ACCESS와 함께 앱 크래시가 발생할 수 있는 위험한 경우입니다! 어떤 상황에서 레이스 컨디션이 발생하는지 알아보겠습니다.Examplelet concurrentQueue = DispatchQueue(label: "com.queue", attributes: .concurrent) var sharedResource = 0 func test_task() throws..
소개개발자로 취업한지 벌써 1년이 훌쩍 지났습니다. 아직까지도 그리고 앞으로도 세상에서 가장 잘한 선택인 것은 개발자로 이직을 했다는 것입니다. 여전히 일하는게 즐겁고 또 내일이 기대되는 나날이네요. 요즘은 비전공자들을 교육 시켜서 개발자로 취업시켜주는 좋은 교육과정이 정말 많은데 저는 딱 한군데 후회하지 않을 곳을 소개시켜드리고 싶습니다. 바로 청년취업사관학교(SeSAC)의 (영등포 SW과정) iOS 앱 개발자 데뷔 과정 PLUS 입니다! 다른 좋은 교육과정보다 더 좋은곳이라고 소개하는 데에는 합당한 이유가 있어야 겠죠? 물론 제가 해당 교육과정을 통해서 취업을 할 수 있었다는 부분이 가장 크지만 그럴 수 있었던 배경에는 무엇이 있을까 생각해보면iOS 앱 개발자 데뷔 과정 PLUS의 특장점!진심으로 수..
IntroUML. Unified Modeling Language는 시스템 설계를 시각화 하는 표준 방법을 제공하기 위한 소프트웨어 엔지니어링 분야의 범용 개발 모델링 언어입니다.쉽게 말하면 글자로 표현되는 코드를 그림으로 표현하기 위한 방법이죠! UML에 대해서 정확하게 알고 사용한 것은 아니지만 정말 유용한 도구라고 생각을 해서 많이 사용했는데요. 객체간의 관계와 구조를 코드를 보지 않고도 그림으로 설명할 수 있기 때문에, UML이 있으면 코드를 일일이 분석하지 않아도 어떤식으로 구성되어 있는지 한눈에 알 수 있습니다. 레거시 코드를 유지 보수 하다 보면 코드와 실제 화면이 잘 매치가 안되기도 하고, 추상화가 많이 되어 있는 경우 코드를 파악하는데 오랜 시간이 걸리기도 합니다. 개인의 역량에 따라 다르..
Intro SRP는 SOLID라 불리는 아키텍처 원칙 중 첫번째 글자에 해당하는 원칙입니다. 용어는 로버트 C. 마틴이 2003년 저서 Agile Software Development, Principles, Patterns, and Practices에 소개한 개념으로 OOD의 원리 라는 기사에서 소개했다고 합니다. 도서 클린 아키텍처(로버트 C. 마틴 저)에 따르면 일부 정의된 아키텍처 원칙 중 몇몇을 마이클 페더스라는 사람이 그것들을 재배열해서 나오게 된 이름이라고 하네요! Single Responsibility Principle SRP는 직역하면, 단일 책임 원칙 이라고 해석할 수 있는데, SOLID 원칙 중 가장 의미가 제대로 전달되지 못한 원칙 중 하나라고 합니다. 그 이유는 이름 때문이라고.....
꽤 자극적인 주제죠? 네 오늘은 SwiftUI에서 MVVM을 멈춰야 하는가에 대한 제 생각을 써보려고 합니다. 결론은 쓰세요 입니다. 반박시 여러분 말이 맞습니다. 👍 본문에 들어가기 앞서, 민감한 주제라고 생각하기 때문에, 누가 그러한 주장을 했는지는 모두 생략하도록 하겠습니다. 본 글에서 작성하는 '여론'의 근거는 주로 iOS Developer Slack 채널 raywenderlich 웨비나, 블로그 글 등을 참고했습니다. 이제 왜 이러한 결론에 도달했는지 설명 드리겠습니다. SwiftUI의 State와 Binding은 View Model 인가? 최근들어 iOS Developer Slack 채널이나, 온갖 뉴스레터에서 SwiftUI Framework에서는 MVVM을 쓰지 말자는 논지의 아티클을 정말 ..
Intro 코드를 작성하다 보면, 특정 기능을 다른 객체에 의존해야 하는 상황이 생깁니다. 간단한 예로 TIL 앱을 만들었다고 가정했을 때, 데이터를 저장하는 객체를 DataManager 와 같은 이름으로 만들어서 쓸 수 있겠죠. 이 의존성을 받는 객체는 유저의 액션에 따라, 로직 흐름에 따라 호출이 이루어지는데요. 호출을 하는 대표적인 두 가지 방법이 바로 Singleton Pattern과 Dependancy Injection입니다. 각 개념에 대해서는 별도로 소개하지 않겠습니다. Singleton 두 개념은 서로 반대 진영에 있는 것으로 볼 수 있는데요, 우선 Singleton은 인스턴스를 전역에 올려두고, 어디에서든 쉽고 빠르게 접근할 수 있다는 장점이 있습니다. 아래 코드는 어떤 DataSourc..