iOS(19)
-
[Swift] 몬티홀의 딜레마 알고리즘으로 증명해보기
일명 몬티홀 게임은 누구나 한번쯤 들어본 유명한 게임이다. 게임의 규칙은 간단한데, 참가자에게 3개의 문이 주어진다. 이 세개의 문 중 하나에 고액의 자동차가 랜덤으로 들어있고 나머지 두개의 문들의 뒤에는 염소가 서있다. 참가자가 하나의 문을 고르면 아직 고르지 않은 두개의 문중 하나를 사회자가 열어준다. 사회자가 열어준 문에는 (당연히) 염소가 서있는데, 이때 사회자는 참가자에게 문을 바꿀 기회를 제공한다. 이때 참가자가 문 바꾸기를 받아들인다면 자동차를 얻을 수 있는 확률은 올라갈까? 수학적으로는 무조건 문을 바꾸면 무조건 확률이 상승한다고 한다. 하지만 직관적으로는 잘 이해가 가지 않는다. 그냥 내가 선택한 문 뒤에 자동차가 들어있을 수도 있지않나? 그래서 알고리즘을 한번 짜보기로 했다. 과연 어떤..
2022.02.04 -
iOS) Fastlane을 이용한 CI/CD 파이프라인 구축 - 1
서론. 입사한지 얼마 되지는 않았지만 (2개월) 입사 후 한 일들 중 코딩 외적으로 가장 많이 하는것이 있다면 그것은 배포였다. 현재 서비스하고 있는 프로젝트의 경우 한개의 타겟에 여러 스키마가 구성되어 배포타겟의 수도 많고, 프로세스도 길고, 무엇보다 시간이 굉장히 오래 걸렸다. 기존 배포 프로세스를 정리하자면 다음과 같다. - QA 배포의 경우 1. Xcode에서 배포할 스키마 선택 2. 스키마 빌드 3. Organizer 화면에서 Distribute App 선택 4. Ad Hoc 선택 5. Ad Hoc distribution options 선택 6. Re-sign 방식 선택 7. 아카이브 (진~~짜 오래걸림) 8. ipa 파일 저장 9. Firebase App Distribution 에서 ipa 업..
2021.11.06 -
[iOS] Swift - 프로토콜 지향 프로그래밍
들어가기에 앞서, https://lawrey.medium.com/swift-protocol-oriented-programming-pop-ceef8e2b7cca 를 번역한 것임을 밝힙니다. 의역이나 오역이 있을 수 있습니다. Swift Protocol Oriented Programming (POP) #1 Swift have come a long way coming out with great syntax that allows us to make our code very readable. In our day-to-day development… lawrey.medium.com 스위프트는 가독성 좋은 코드를 쉽게 만들 수 있게 나온 언어입니다. 하지만 오늘날 우리들은 촉박한 개발일정에 있어서 두 가지 선택지 사이..
2021.11.01 -
iOS) Xcode Build Settings를 통한 Custom environment 구축
iOS 를 개발하다보면 다양한 환경들에 대해서 다른 세팅들을 해주어야 하는 경우가 많습니다. 예를들면 아무래도 서버 url 같은 것들이 빈번하게 바뀌는 것들이겠죠. 앱을 앱스토어에 Release 할 때와, 로컬에서 Develop(test) 할 때, 서버 URL이 달라지게 할 수 있습니다. Release 혹은 Develop 이나 기타 등등 다양한 환경들이 있다면 서버 URL같은 설정값들을 어떻게 처리할 수 있을까요? 손으로 일일히 한다면... 1. 환경에 따라서 매번 URL 값을 바꿔줘야 할 겁니다... 2. 만약에 Git같은 버전관리 툴을 쓰고 있다면, URL 값을 바꿀 때마다 워킹 디렉토리는 변경되고 매번 커밋을 해줘야겠죠. 3. 항상 앱이 어떤 환경상태인지 기억해놓아야 합니다. Develop 인가? ..
2021.10.28 -
iOS) 복구가능한 계산기 어플리케이션 만들기 (2) :: CushyCalculator
이 포스팅은 이전글 에서 이어지는 시리즈 포스팅이다. iOS) 복구가능한 계산기 어플리케이션 만들기 (1) :: CushyCalculator 이전에 만들었던 어플리케이션을 회고하는겸 해서 리뷰해보려고 한다. 이 어플리케이션은 기본 계산기 기능 외에도 특별한 기능이 들어가 있는데 바로 삭제된 값을 복구하는 기능이다. 전체 코 codecrafting.tistory.com 연산자 버튼을 눌렀을 때 호출되는 operatorButton(sender:) 을 마저 이어서 설명한다. 일단 operatorButton의 전체코드다. @IBAction func operatorButton(_ sender: UIButton) { if reloadTextField { return } guard let operType = send..
2021.08.08 -
iOS) 복구가능한 계산기 어플리케이션 만들기 (1) :: CushyCalculator
이전에 만들었던 어플리케이션을 회고하는겸 해서 리뷰해보려고 한다. 이 어플리케이션은 기본 계산기 기능 외에도 특별한 기능이 들어가 있는데 바로 삭제된 값을 복구하는 기능이다. 전체 코드는 https://github.com/naldal/CushyCalculator에 있다. 사용기술은 특별한것 없이 Storyboard, AutoLayout, Delegate 만으로 만들었다. 1. 기본 레이아웃 짜기 가장먼저 할것은 스토리보드로 레이아웃을 짜는거다. 왼쪽의 뷰컨트롤러는 계산기 기능을 수행할 화면이고, 오른쪽의 화면은 삭제했을때의 값들이 표시될 테이블뷰 화면화면이다. 버튼을 레이아웃하는데 있어서 힘들었던 점은 처음엔 일일히 하나하나 Constraint를 잡아가며 위치를 교정해주어야 했던것인데 나중에 스택뷰의 존..
2021.08.08 -
iOS) 영속적인 객체 저장 방식 : UserDefaults, Codable
UserDefaults는 호락호락하지 않다 만약 TableView의 cell이 어떤 Custom Class의 객체라고 하자. 이 객체들을 영속적으로 저장하고 불러내고 싶을 때 UserDefaults에 순진하게? 객체배열을 set하면 "Attempt to insert non-property list object" 하면서 컴파일러가 울부짖는다. 🦖 크아앙 얘가 왜이러는지 알려면 UserDefaults의 성질부터 짚고 가는게 좋겠다. UserDefaults에서 저장되는 값의 타입은 기본적으로 property list 여야 한다. NSData, NSString, NSNumber, NSDate, NSArray, or NSDictionary. 가 여기 속한다. 그렇다면 그 외의 타입들 - 예를 들면 클래스나 구조체..
2021.08.06 -
iOS) 회원 사진 불러오기 Firebase Storage
이전글 https://codecrafting.tistory.com/46 에서 이어지는 글이다 사진 라이브러리 이용하는 법을 참고하고 싶다면 읽고오기 바람! iOS) 포토 라이브러리에서 사진 가져오기 보통 앱에서 회원가입을 할때 프로필 사진용으로 사진업로드 기능을 지원한다. 이 포스팅에서는 포토 라이브러리에서 사진을 가져오거나, 카메라를 사용하여 직접 사진을 올리는 방법에 대해 codecrafting.tistory.com 오늘 해볼것은 사진 라이브러리에서 사진을 선택했다면 이것을 프로필 사진에 띄우는 것이다. 이것을 응용하면 앞으로 구현할 채팅어플에서 대화할 대상을 테이블로 표시할 때 이름 옆에 회원의 프로필 사진을 띄울 수 있다. 로직을 구성해보자 1. 회원가입할 때 사진데이터를 Firebase Stor..
2021.07.28 -
Swift) 프로그래머스 Lv.2 - 가장 큰 수 풀이
https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr "순서를 재배치하여" 만들 수 있는 가장 큰 수를 찾는다. 예제 1번을 들어서 풀어보자. numbers: [6, 10, 2] 먼저 6과 10이 있다고 하자. 이때 두 수를 재배치하면 610 과 106을 얻을 수 있다. 이때 610이 더 크므로 6이 10보다 앞서서 배치한다. 결과 : [6, 10, ..
2021.07.28 -
iOS) 데이터 검색기능 구현 Firebase Database
이 포스팅은 https://codecrafting.tistory.com/47 에서 이어진다. 내용중 이해가 되지 않는 부분이 있다면 참고하길 바란다. iOS) Firebase 를 이용한 회원가입과 프로필 사진 등록 Firebase Auth, Firebase Database, Firebase Storage 회원가입 기능을 구현하려면 먼저 회원객체가 필요하다. struct DuetUser { let firstName: String let lastName: String let emailAddress: String // To solve issue that not allow some special symbols("[",.. codecrafting.tistory.com 이번에 구현할 기능은 검색기능이다. 특히 앞부..
2021.07.25