본문 바로가기

전체 글

(18)
미니멀 vs 기능 기능이 적은 도구를 쓰는 이유예전엔 파워풀한 기능에 눈이 돌아갔다. 할 수 있는 게 많을수록 좋은 도구라고 믿었다. 새 앱을 깔면 설정 화면부터 끝까지 훑으며, 이 도구로 내가 못 할 일은 없겠다는 기분에 들떴다. 그런데 정작 그 많은 기능 중 손에 익은 건 늘 두세 개뿐이었고, 나머지는 화면 어딘가에 자리만 차지하고 있었다.요즘은 다르게 본다. 도구를 고를 때 가장 먼저 묻는 건 "이게 미니멀하고, 쓰는 게 즐거운가"다.적당한 불편함은 괜찮다미니멀한 도구에는 보통 적당한 불편함이 따라온다. 자동으로 해주지 않으니 내가 직접 손을 움직여야 하고, 빠진 기능은 내가 방법을 찾아 메워야 한다. 처음엔 이게 단점처럼 느껴졌다.그런데 리프레이밍하면 이야기가 달라진다. 그 불편함은 나를 직접 조작하게 만들고, 내..
🍎 SwiftUI에서 @Observable을 사용하자 안녕하세요 여러분~! 오늘은 iOS 17부터 도입된 @Observable 매크로가 기존의 ObservableObject를 어떻게 대체하고 있는지 함께 살펴봅시다! 👀예전에는 이랬어요... ObservableObject + @PublishediOS 13부터 SwiftUI가 처음 나왔을 때, 우리는 데이터 바인딩을 위해 ObservableObject 프로토콜과 @Published 프로퍼티 래퍼를 사용했어요. 이거 써본 사람? 손! ✋class UserProfile: ObservableObject { @Published var username: String = "애플빠" @Published var level: Int = 1 @Published var isOnline: Bool = false}..
SwiftUI Spacer 사용 꿀팁 SwiftUI에서 이런 레이아웃은 어떻게 구성할까? "고양이" 텍스트 길이는 바뀔 수 있는데 중앙에 와야하고 짝꿍은 그 옆에 나와야 하는 상황.HStack 으로 만들면 고양이와 짝꿍의 넓이가 합쳐진 채 중앙으로 정렬되서 "고양이"만 딱 중앙에 정렬이 안된다.ZStack 에 넣자니 텍스트 길이도 알아내야할 것 같고 복잡해진다.이럴 때 Spacer 를 활용하면 좋다.HStack { Spacer() Text("고양이") Spacer() .overlay(alignment: .leading) { Text("짝꿍") .padding(.leading, 6) }}
Swift Concurrency에서 메모리 누수 주의하기 🧐 안녕하세요~ 메모리 누수 문제에 대해 더 자세히 알아볼게요! 이거 진짜 중요한 부분인데 많은 개발자들이 놓치는 함정이에요 ㅋㅋTask와 메모리 누수의 관계 💦Task는 비동기 작업을 시작하는 방법인데, 문제는 Task가 강한 참조(strong reference)를 생성한다는 점이에요. 만약 클로저 내에서 self를 캡처하면 뷰나 객체가 사라져도 Task가 완료될 때까지 메모리에서 해제되지 않을 수 있어요!func loadData() { Task { // 여기서 self를 강하게 캡처함 let data = await self.fetchSomething() self.processData(data) // 만약 Task가 오래 걸리는데 객체가 해제되어야 한다면? ..
Swift Concurrency: async/await 완전정복 🚀 안녕하세요 여러분! 오늘은 Swift Concurrency의 핵심인 async/await에 대해 알아볼게요~ 😊왜 async/await가 필요한 거임? 🤔기존에 우리가 비동기 작업을 할 때는 completion handler를 사용했잖아요. 근데 이거 진짜 지옥이었음ㅋㅋ 콜백 지옥이라고도 하죠. 코드가 이렇게 됨:func fetchUserData(completion: @escaping (User?) -> Void) { fetchUserID { id in fetchUserProfile(id: id) { profile in fetchUserPosts(profile: profile) { posts in let user = User(id: id..
iOS17 숨겨진 기능들 34가지 제어센터에 “나의 Watch 핑하기” 추가됨, 애플워치가 어딨는지 찾을 수 있음 사파리 주소표시줄에서 검색할때 자동완성이 완전히 나옴, 이전엔 잘 안나왔음 애플뮤직에 “크로스페이드” 기능 추가, 설정에서 옵션을 활성화 해야 합니다. 크로스페이드는 다음곡 재생시 점점 멀어졌다 가까워지면서 자연스럽게 재생되는 기능입니다. “화면 주시 거리” 기능 추가, 얼굴을 너무 가까이 대면 경고가 뜸. 스크린타임에서 활성화 날씨앱에 과거 날씨가 추가됨 미리알림 앱에 섹션이 추가됨, 칸반 보드 가능!! 스팟라이트 검색 결과로 시스템 설정 전환 가능, 예를들어 저전력 모드 검색해서 스팟라이트에서 바로 비활성할 수 있음 개인정보 보호 및 보안 → “민감한 콘텐츠 경고” 추가됨 잠금화면에서 시계 글꼴 굵기 사용자 지정 애플뮤직..
심플한 제품 만들기 심플한 제품은 한 가지 문제를 제대로 해결한다.핵심인 것은 제대로, 그 외는 가능하게만 만든다.고객이 원하는 것을 만들어야 할 때는 이 기능이 왜 필요한지나 어떻게 생겨야 하는지 보다, 언제 필요한지 물어보는 것이 더 큰 도움이 된다.과제가 일상적인 루틴이 되려면 단순하고 반복적이어야한다.좋은 도구라면 이미 갖추어져 있는 것에 추가 기능이나 선택 사양을 덧붙이는 것이 아니라, 주요 작업에서 집중이 분산되지 않도록 도와줄 수 있어야 한다.단순함에서 중요한 것은 뒤섞이지 않았다는 점이지, 기능이 하나뿐이라는 점이 아니다. 이는 매우 중요하다.단순한 삶을 산다면 반드시 만족이 따라올 것이다. 단순함은 행복에 있어 대단히 중요한 것이다. _달라이 라마“진정한 단순함은 불필요한 장식이 없는 수준을 넘어 ‘복잡함에..
Arc, Edge, Vivaldi, Opera, Brave 브라우저에 구글 번역 사용하기 크롬 외의 브라우저를 사용하는 경우 한글 번역 기능이 없거나 구글 번역에 비해 만족스럽지 않은 경우가 많습니다. 이럴때 크롬에서 사용하는 환경과 거의 비슷하게 사용 가능하고, 전체 페이지 번역도 엄청 빠르고, 제일 만족스러운 번역 익스텐션을 소개합니다. 파이어폭스 애드온으로 있는 번역 익스텐션인데 익스텐션 스토어에는 없고 사이트에서 다운로드 후 직접 설치해 주어야 합니다. https://github.com/FilipePS/Traduzir-paginas-web GitHub - FilipePS/Traduzir-paginas-web: Translate your page in real time using Google or Yandex Translate your page in real time using Goog..