본문 바로가기

분류 전체보기103

[사물인터넷] 스마트홈 - 실내 공기질 관리 프로젝트 학부 때 수행한 UROP 프로젝트 정리.1. 아두이노, ESP8266, DHT22, BME280, PM2008M 하드웨어로 구성한 데이터 수집 노드. 2. FreeRTOS 플랫폼아두이노에 FreeRTOS를 기반으로 여러 센서(온습도 센서 DHT22, 미세먼지 센서 PM2008M)로부터 데이터를 실시간으로 수집.각 센서 데이터는 FreeRTOS 태스크로 독립적으로 관리되어, 온습도 센서와 미세먼지 센서에서 수집된 데이터를 병렬로 처리.FreeRTOS를 이용해 각각의 센서 데이터를 측정하고, 일정 주기로 처리하며 우선순위를 설정하여 중요한 태스크가 먼저 실행되도록 구성.예를 들어, 온도나 미세먼지 농도가 특정 임계값을 넘으면 LED 점등 태스크를 실행.3. ESP8266 모듈은 Soft AP로 클라이언트에서.. 2024. 9. 16.
[SwiftUI] 이슈 해결: Bound preference ScrollOffsetKey tried to update multiple times per frame. .onPreferenceChange(MyPreferenceKey.self) { newValue in DispatchQueue.main.async { widget.value = newValue }} onPreferenceChange와 같은 SwiftUI change 핸들러들은 임의의 스레드에서 호출됨. 따라서 View 상태 변수를 업데이트 해야하는 경우에는 위와 같이 메인 쓰레드에서 수행하도록 다시 DispatchQueue.main에 스케쥴링해야함. 2024. 9. 14.
[SwiftUI] 이슈 해결 : Do not put a navigation destination modifier inside a "lazy” container .navigationDestination 모디파이어를 뷰 최상단에 두지 않아 생긴 에러뷰 최상단으로 옮겨줌 2024. 9. 13.
[SwiftUI] ScenePhase : Scene의 Lifecycle 관리하기 안녕하세요 Lody 입니다. 🙂 오늘은 SwiftUI.ScenePhase에 대해 알아보려고 합니다. ScenePhase현재 Scene의 Lifecycle 상태를 관리하는 값입니다.Environment에서 scenePhase를 observing해서 현재 상태 값을 읽을 수 있고, onChange(of: perform:) 메서드를 사용해서 값이 변경할 때마다 이벤트를 받도록 구현할 수 있습니다. ScenePhase는 열거형으로 총3가지(active, inactive, background)입니다. 2024. 8. 31.
[UIKit] UIScreen 사용을 지양해야하는 이유 (feat. Scene 관점에서) 보호되어 있는 글 입니다. 2024. 8. 25.
[Swift] actor도 final 키워드로 최적화 할 수 있을까? 흔히들 class에서 상속 구조가 없으면 swift optimizationTips에서 가이드하는 것처럼 아래와 같이 final 키워드를 명시하여 컴파일러가 최적화를 수행할 수 있도록 해준다. class 뿐만 아니라 메서드, 프로퍼티는 final 키워드를 통해 컴파일러가 최적화가 가능하다.final 키워드는 더 이상 얘는 overriden 되지않아.! 걍 바로 얘 쓰면 돼! 라고 알려주는 것과 같기 때문이다. 그렇다면 swift 5.5에 새롭게 등장한 actor는 어떨까? 그보다 먼저 actor가 뭔지부터 간략하게 끄적여보면actor는 class와 같은 reference type이다. class와 다른 점은 상속이 불가능하고, MT-safe를 기본적으로 보장한다.다른 타입처럼 initializer도 가질 .. 2024. 8. 24.
[SwiftUI] .task(priority:_:) 플랫폼 버전 대응하기 보호되어 있는 글 입니다. 2024. 8. 23.
[PhotoKit] 5. LivePhotos Live PhotoLive Photo는 움직임과 소리를 포함하고, 사진이 촬영된 직전과 직후의 순간을 포착한 사진입니다. Live Photo를 보여주기 위해 PHLivePhotoView클래스를 사용합니다. 이 클래스는 Photos 앱에서 사용되는 것과 같은 인터랙티브 재생 기능을 제공합니다. PHLivePhoto 객체를 얻은 후에는 Live Photo view를 사용하여 사진을 보여주고, 그 움직임과 소리를 제어할 수 있습니다. 플랫폼별 사용법iOS와 tvOS: PHLivePhoto 클래스를 사용하여 Live Photo 객체를 가져와 PHLivePhotoView로 표시할 수 있습니다.macOS: PHLivePhoto 클래스는 Photos 앱의 사진 편집 확장 기능에서 Live Photos를 편집할 때 사.. 2024. 8. 22.
[Combine] Future : Convenience Publishers Combine의 Future Publisher에 대해 정리.Future와 Promise란 무엇인가? Future는 아직 존재하지 않을 수 있는 값을 위한 컨텍스트. 일반적으로, 우리는 비동기 작업의 최종적인 완료 또는 실패를 나타내기 위해 Future를 사용함. Swift는 Combine 프레임워크의 일부로서 Future의 기본 구현을 제공함. Future는 자신이 감싸고 있는 값의 타입과 발생할 수 있는 오류의 타입을 나타내는 두 가지 타입을 가짐.위 코드 조각에서는 각각 Int(값의 타입)와 Never(오류의 타입)가 해당됨.  Combine의 영역에서 Future는 하나의 Publisher임.Future는 Publisher 프로토콜을 채택함. Publisher 프로토콜의 모든 요구사항을 따르며, P.. 2024. 8. 19.
[SwiftUI] 링크도 게으름이 필요해: NavigationLink를 Lazy하게 안녕하세요. 로디입니다. SwiftUI로 앱을 개발하다 보면 자연스럽게 만나게 되는 친구가 있죠. 바로 NavigationLink입니다.오늘은 NavigationLink에서 메모리 사용을 최적화하는 기법에 대해 알아보려고 합니다. 뷰 간의 네비게이션을 손쉽게 처리해주는 NavigationLink 요녀석, 처음엔 아주 사랑스러운데, 쓰다 보면 뭔가 불편함을 느낄 때가 있습니다.  기본적으로 NavigationLink는 화면에 나타나는 순간, 링크의 목적지(destination)를 미리 생성해버립니다. 작은 화면이나 간단한 뷰라면 상관없지만, 복잡한 화면이거나 무거운 데이터를 다루는 경우라면 이야기가 달라집니다. 무거운 뷰를 미리 생성해둔다..? 메모리 폭행범인가요?..🥲 아직 쓰지도 않는 뷰의 메모리를 .. 2024. 8. 18.
[WWDC21] Meet async/await in Swift WWDC21 : Meet async/await in Swift 세션을 그대로 번역한 내용입니다. Swift는 이제 비동기 함수를 지원합니다. 이 패턴은 흔히 async/await로 알려져 있습니다. 새로운 문법이 어떻게 코드를 더 읽기 쉽고 이해하기 쉽게 만들어주는지 알아보세요. 함수가 일시 중단(suspend)될 때 무엇이 일어나는지, 그리고 기존의 완료 핸들러(completion handler)를 비동기 함수로 어떻게 변환할 수 있는지도 배워보세요. 안녕하세요, 저는 Apple의 Swift 팀 엔지니어 Nate입니다. 오늘 제 동료 Robert와 함께 Swift의 async/await에 대해 설명드리겠습니다.비동기 프로그래밍은 여러분 중 많은 분들이 정기적으로 수행하는 작업일 것입니다. 비동기 코드는.. 2024. 8. 17.
[WWDC21] What’s new in SwiftUI 1. pull to refresh2. searchable [SearchBar]3. list row separator4. async image5. material effect6. badge for TabView item7. onSumit Trigger8. safeArea inset9. iteractiveDismissDisabled10. swipe actions11. AppStorage raw representable12. keyboard done button13. Canvas Core Graphics14. keyboard accessory view15. FocusState 2024. 8. 11.