아이디어를 실제 프로덕트로 만들어내는 Maker
-
[Combine] Combine 진짜 알기 쉽게 정리해서 올려줄게 (1) - Combine 기초 개념 이해하기
⚠️ 이번 글은 Combine Framework가 처음 소개되었던 WWDC19의 두 세션 Introducing Combine과 Combine in Practice의 예제 을 직접 구현하면서 사용된 Combine 개념들에 대해 집중적으로 소개합니다.이 글에서 소개되지 못한 Combine의 다른 여러 개념들은 Apple Developer Documentation-Combine 글을 참조하길 바랍니다.번역 또는 프로젝트의 목적, 그리고 저의 부족한 이해력 때문에 일부 잘못된 내용이 있을 수 있다는 점. 전제하고 읽어주시면 감사하겠습니다 (잘못된 개념 제보 및 질문 댓글로 얼마든지 환영입니다:) ^__^ 1️⃣ Combine이 뭔데? 왜 공부하는 건데? 언제 쓰는 건데?Combine에 대해 공부하기 전에 우리가..
-
[iOS] 키보드 레이아웃을 가져오는 개선된 방법 (NotificationCenter to Keyboard Layout Guide)
[UIKit] 재사용 Component 개발하기 (3) - 바텀 시트 (Sheets, Bottom Sheet)[UIKit] 재사용 Component 개발하기 (1) - Toast Message💡 재사용 Component 개발하기 시리즈 글을 시작하며 이번 33기 앱잼이었던 프로젝트에서 우리 iOS 팀이 추구한 방향 중 하나는, 앱 내에서 반복되는 컴mini-min-dev.tistory.com오늘 글은 예전 위의 글에서 설명했던 바텀 시트(Sheets)의 기능을 개선하기 위해 공부한 내용이다.위의 글을 안 읽은 분들이 있을 것 같아 필요한 간략한 개념만을 설명해 보자면, (바텀시트 만드는 전반적 과정은 위의 글에서 설명했다!)내가 참여했던 라는 프로덕트에는 아래 이미지에서 보이는 것처럼 매우 다양한 바텀..
-
[Swift] [weak self] 이젠 제대로 알고 사용하자! (feat. ARC 2탄)
아직 ARC 1탄 글을 읽지 않고 오셨다면, 아래 링크로 넘어가서 읽고 오길 권장합니다:) [Swift] ARC (Automatic Reference Counting) 완전 정복하기1️⃣ ARC (Automatic Reference Counting)를 배우기 위해 알아야 하는 기초 개념1. 값 타입 (Call by Value)과 참조 타입 (Call by Reference)값 타입 (Call by Value)은 데이터를 복사해서 전달하는 경우, 참조 타입 (Callmini-min-dev.tistory.com 1️⃣ 클로저(Closure)에서도 발생하는 강한 참조 사이클(Strong Reference Cycle) 문제지난 [Swift] ARC (Automatic Reference Counting) 완전 정..
-
[WebKit] WKWebView를 사용해서 앱 사용 중, 웹으로 연결시켜보자
1️⃣ 이번 글에서 구현하고자 하는 기능은?이번 글에서는 URL 링크를 저장하고, 해당 링크를 앱 안에서 웹 페이지로 띄울 때 사용한 모든 기능들에 대해서 정리해보겠다.이번 프로젝트에서 앱 내 웹 콘텐츠를 표출시키는 방식으로 WKWebView를 사용했다.WKWebView란 Apple의 기본 프레임워크 WebKit를 기반으로 동작하는 뷰이며, 네이티브 앱과 웹 콘텐츠 사이의 상호작용을 도와주는 다양한 기능을 지원하는 화면이다.대표적으로, 웹 뷰의 내비게이션(뒤로 가기, 앞으로 가기) 동작이나 새로고침, 페이지의 타이틀, URL 같은 기본적인 정보들을 받아올 수 있으며, 심지어는 웹 페이지의 로딩 상태나 스크롤 위치 같은 디테일한 부분도 사용할 수 있다.💡 앱 사용에 있어 외부 URL 연결 방식에 대한 생..
세상의 문제를 소프트웨어 개발자의 책임으로 해결하는 Solver
-
[iOS] Clean Architecture + MVVM + Observable 사용해서 날씨앱 리팩토링하기
⚠️ 해당 글은 Robert C. Martin의 너무도 유명한 책과 Oleh Kudinov라는 분의 Medium 글 Clean Architecture and MVVM on iOS를 참고해서 작성했습니다.번역 또는 프로젝트의 목적, 그리고 저의 부족한 이해력 때문에 일부 잘못된 내용이 있을 수 있다는 점. 전제하고 읽어주시면 감사하겠습니다 (잘못된 개념 제보 및 질문 댓글로 얼마든지 환영입니다:) ^__^ + 아 그리고 글이 조금 깁니다...어쩌다보니.. GitHub - mini-min/Clean-Architecture-iOS: 🍎 날씨앱 클론코딩으로 공부하는 클린 아키텍처 (feat. Robert C. Ma🍎 날씨앱 클론코딩으로 공부하는 클린 아키텍처 (feat. Robert C. Martin) - ..
-
[Basis] 내가 보려고 정리하는 개발 용어 사전 (2) - 비즈니스 로직 (Business Logic)
은 블로그에서 시리즈로 연재하고 있는 글이다.정말 오랜만에 이 시리즈 글을 쓰느라 깜빡했을 수도 있지만, 아래에 1탄 글을 첨부해 뒀으니 궁금하신 분은 가서 읽어보시길 ^___^ [Basis] 내가 보려고 정리하는 개발 용어 사전 (1) - 프레임워크(Framework)와 라이브러리(Library)개발 공부를 한 지 2년이 훌쩍 지났다.하지만, 학교에서도 복수전공은 한 학기 수업 정도, 나머지 1년 반 정도의 시간은 군대에서 보내느라.. 아직까지 내 머릿속에는 개발과 관련된 용어들이 명mini-min-dev.tistory.com"비즈니스 로직을 분리하라"아키텍처를 공부하다가 많이 보던 문장이다.혹시 이 문장을 보고 "그래서 비즈니스 로직이 뭔데?" "나는 사업을 하고 있지 않은데 비즈니스가 왜 나오는 거..
-
[GitHub] 코드 리뷰 문화 - 토스터 iOS팀이 코드 스타일과 구성을 깔끔하게 유지할 수 있는 이유
팀 블로그에 올린 글입니다! 팀에서 사용한 협업 문화, Code Review 스타일을 비롯한 컨벤션까지 내용을 담고 있어 기록하고자 개인 블로그에도 공유합니다. [iOS] 코드 리뷰 문화: 토스터 iOS팀이 코드 스타일과 구성을 깔끔하게 유지할 수 있는 이유 안녕하세요! 토스터 iOS팀 개발자 코딩하는 체대생, 민군입니다. TOASTER 어플을 앱스토어에 릴리즈한지 어언 2개월이 지나고 있는 지금 시점에서, 저희 iOS 팀의 첫 번째 팀블로그를 작성하고자 힘 velog.io
-
[Clean Architecture] OOP의 SOLID 원칙을 Swift의 관점에서 이해하기
0️⃣ OOP(Object-Oriented Programming)와 SOLID 원칙"일단 앱잼 기간 중에 빨리 기능부터 구현하고, 우리 앱잼 끝나면 진짜 리팩토링하자!"단기간에 결과물을 내야하는 솝트 동아리 내의 과제, 합동 세미나, 장기 해커톤 앱잼 같은 곳에서 가장 많이 들었고, 가장 많이 해온 말이다.하지만 해당 기능 개발이 끝나면, 또 다른 기능 개발이 개발자들을 기다리고 있고....또 다른 기능 구현을 우선적으로 하다 보면, 코드 정리나 프로젝트의 구조를 개선하는 일은 후순위가 항상 되기 마련이었다.어쩌면 리팩토링은 평생 동안 목표에 그칠 수밖에 없는 "이룰 수 없는 과제"일지도 모르겠다.그래서 나는 여기서 의문을 하나 가지게 되었다."겉으로 보이지 않는 코드의 퀄리티나 프로그램의 구조를 굳이 ..
새로 올라온 글 보러가기!
-
[Share Extension] 다른 앱의 "공유하기" 버튼에 우리 앱을 설정하고 싶다면? (feat. NSExtensionActivationRule)
[Chore] #209 - 사파리 외에 다른 앱에서도 Share Extension 대응 by mini-min · Pull Request #210 · Link-MIND/TOASTER✨ 해결한 이슈 Resolved: [Chore] ShareExtension 사파리 제외한 타앱에서도 대응 #209 🛠️ 작업내용 1. NSExtensionActivationSupportsWebURLWithMaxCount 기존 쉐어 익스텐션 Info.plst에는 NSExtensionActivationSupportsURLWithMagithub.com 1️⃣ Share Sheet, Share Extension 기본 개념 이해하기보통 자신의 앱에서 보여주는 콘텐츠 (URL 주소, 텍스트, 이미지, 동영상 등)를 타 앱으로 공유할 수 ..
2024.10.06 11:51 -
[Swift] KVO (Key-Value Observing) 완전 정복하기 (feat. WKWebView progressBar)
예전 WKWebView를 구현하는 글의 마지막 부분이었던 "KVO를 사용해서 웹 페이지 로딩 상태 프로그레스바로 나타내기" 코드를 이번 글에서는 리팩토링하는 내용과 함께 KVO (Key-Value Observing) 개념에 대해 완전 정복해보도록 하겠다.WKWebView에 관한 자세한 내용이 궁금하다면 아래 링크를 타고 읽어보는 것도 ^__^ [WebKit] WKWebView를 사용해서 앱 사용 중, 웹으로 연결시켜보자1️⃣ 이번 글에서 구현하고자 하는 기능은?이번 글에서는 URL 링크를 저장하고, 해당 링크를 앱 안에서 웹 페이지로 띄울 때 사용한 모든 기능들에 대해서 정리해보겠다.이번 프로젝트에서 앱mini-min-dev.tistory.com KVO (Key-Value Observing)가 뭔데?KV..
2024.10.01 00:11 -
[Xcode] Xcode에서 Python 알고리즘 환경 구축하는 방법 (feat. Xcode 15.4 버전)
이번 글에서는 Xcode로 Python 환경을 구축하는 방법에 대해 설명해 볼 거다.각 단계별로 차근차근 하나씩 어떤 과정을 거치는지 자세하게 다뤄볼 거고,이 글을 작성하고 있는 시점(24.09.06)에서 맥북 M1 칩 기반의 Xcode 버전은 15.4, Python 버전은 3.12로 환경을 세팅하고자 했다는 점 참고하자!1. Xcode에서 "Other-External Build System" 타입의 프로젝트를 생성한다.2. Product Name을 설정하고, python이 위치한 경로를 Build Tool로 지정해 주자.💡 Python이 위치한 경로는 터미널에 where python3 명령어를 입력해서 확인할 수 있다.3. 테스트하고 싶은 파이썬 파일(.py)을 "macOS-Empty" 타입으로 생성..
2024.09.06 23:32 -
[UIKit] UISheetPresentationController를 사용해서 바텀시트(Sheets)를 만들어보자
예전 글에서 직접 프로젝트에서 사용할 바텀 시트(Sheets)를 커스텀해서 만든 방법을 소개했었다. [UIKit] 재사용 Component 개발하기 (3) - 바텀 시트 (Sheets, Bottom Sheet)[UIKit] 재사용 Component 개발하기 (1) - Toast Message💡 재사용 Component 개발하기 시리즈 글을 시작하며 이번 33기 앱잼이었던 프로젝트에서 우리 iOS 팀이 추구한 방향 중 하나는, 앱 내에서 반복되는 컴mini-min-dev.tistory.com하지만, WWDC21 에서 소개된 UISheetPresentationController를 사용해서 바텀시트(Sheets)를 만들면, 위의 글과 같은 복잡한 과정 없이 매우 간단하게 만들 수 있었다.그래서 이번 글에서..
2024.08.30 22:16 -
[iOS] 키보드 레이아웃을 가져오는 개선된 방법 (NotificationCenter to Keyboard Layout Guide)
[UIKit] 재사용 Component 개발하기 (3) - 바텀 시트 (Sheets, Bottom Sheet)[UIKit] 재사용 Component 개발하기 (1) - Toast Message💡 재사용 Component 개발하기 시리즈 글을 시작하며 이번 33기 앱잼이었던 프로젝트에서 우리 iOS 팀이 추구한 방향 중 하나는, 앱 내에서 반복되는 컴mini-min-dev.tistory.com오늘 글은 예전 위의 글에서 설명했던 바텀 시트(Sheets)의 기능을 개선하기 위해 공부한 내용이다.위의 글을 안 읽은 분들이 있을 것 같아 필요한 간략한 개념만을 설명해 보자면, (바텀시트 만드는 전반적 과정은 위의 글에서 설명했다!)내가 참여했던 라는 프로덕트에는 아래 이미지에서 보이는 것처럼 매우 다양한 바텀..
2024.08.28 00:12