전체 글
Xcodes를 사용할 때, 간단하게 터미널로 심볼릭 링크를 만들어주는 파이썬 스크립트.
Xcodes를 사용할 때, 간단하게 터미널로 심볼릭 링크를 만들어주는 파이썬 스크립트.
2023.04.25import os import sys from pathlib import Path # 사용 가능한 Xcode 버전을 검색하고 목록으로 반환하는 함수 def find_xcode_versions(): app_dir = Path('/Applications') xcode_versions = [entry for entry in app_dir.iterdir() if entry.is_dir() and entry.name.startswith('Xcode-')] return xcode_versions # 심볼릭 링크를 생성하는 함수 def create_symlink(version): xcode_symlink = Path("/Applications/Xcode.app") if xcode_symlink.is_symlink()..
테스트를 위한 리팩토링
테스트를 위한 리팩토링
2023.03.02드디어 마지막장입니다. 간단한 예시 코드를 테스트가 가능한 구조로 리팩토링하고, 그것을 평가하는 시간을 가져보겠습니다! ERP 시스템 - 이메일 변경 기능 이메일 변경 기능 이메일이 회사 도메인일 경우 직원, 아니면 고객으로 분류. 직원수를 체크 모든 사용자정보는 DB에 저장 변경 후 외부에 알림 class User { private(set) var id: Int private(set) var email: String private(set) var type: UserType // 생성자 생략 } extension User { public func changeEmail(newEmail: String, company: Company) { if self.email == newEmail { return } //..
단위테스트를 위한 리팩토링 준비하기
단위테스트를 위한 리팩토링 준비하기
2023.02.23앞에서는 단위테스트를 어떻게 평가해야하는가? 에 대해 알아봤습니다. 이번에는 그럼 리팩토링단계로 넘어가서, 어떻게 리팩토링해야 단위테스트를 수월하게 할수 있는지를 알아보겠습니다. 1. 아키텍처 1.1 함수형 아키텍처 결정을 내리는 로직 코드와, 결정에 따라 작용하는 코드(주로 입력과 출력)를 나누는 일종의 마이크로서비스 패턴입니다. 1. 가변 셀이 모든 입력을 수집후 코어로 보내고 2. 코어는 입력받은 데이터를 토대로 로직을 수행합니다. 3. 계산된 값들은 다시 가변 셀로나와 사이드이펙트로 변환됩니다. 1.1.1 함수형 프로그래밍? 함수형 아키텍처 이전에, 함수형 프로그램을 먼저 이해하는게 좋습니다. 예전에 제가 Rx Swift에 관한 영상을 제작한적이 있는데요, 도입부를 보다보면 함수형 프로그래밍에 관..
단위테스트, 어떤 항목을 평가해야 할까?
단위테스트, 어떤 항목을 평가해야 할까?
2023.02.22앞 포스트에서 단위테스트가 무엇이고, 왜 해야하는지 알아봤습니다. 단기성 프로젝트가 아닌 이상, 지속적인 유지보수를 해야하고, 리팩토링은 대표적인 유지보수 방법입니다. 하지만 그 리팩토링이 과연 효과가 있었는가? 를 확인하기 위해 단위테스트를 이용한다고 설명을 했었는데요, 그렇다면 단위테스트는 어떻게 만들고 어떻게 평가를 해야할까? 에 대해 포스팅합니다. 1. 단위테스트의 구조 1.1 AAA 패턴 단위테스트는 대표적으로 AAA패턴을 사용하여 진행합니다. AAA 패턴이란, 준비(Arrange) - 실행(Act) - 검증(Assert)의 순서로 진행되는 패턴입니다. public class CalculatorTests { public void test_두_수의_합을_검증() { // 알아보기 쉽게, 읽기 쉽게..
단위테스트가 무엇이고, 왜 해야할까?
단위테스트가 무엇이고, 왜 해야할까?
2023.02.08(단위테스트 책 스터디 후 발표자료를 공유하기 위해 작성했습니다.) 저는 10월 ~ 1월까지 블라디미르 코리코프의 단위테스트 책을 가지고 북스터디를 진행했습니다. 단위테스트(Unit Test)란 무엇일까요? 소프트웨어 테스트 방식 중 하나로, 독립적으로 작동하는 코드 단위 중 가장 작은 코드를 테스트하는 것 입니다. 하나의 기능을 최대한 빠르고 가장 정확하게 테스트 하는 것을 목표로 하며, 이것들이 보장되어야 후에 진행할 통합테스트가 수월해집니다. 그러면 왜 단위 테스트가 필요할까요? - 실패한 리팩토링 시나리오 1. 제품이 지속될수록 점점 길어지는 일정 단위 테스트 '만' 놓고 본다면 중요성은 그다지 크지 않습니다. 작은 코드 '만' 놓고 본다면, 실수할 여지도 크지 않고, 그저 발견된다면 고치면 되니..
트랙패드 핀치(줌인/아웃) 버그
트랙패드 핀치(줌인/아웃) 버그
2022.07.06트랙패드를 사용하다보면 가끔 핀치(줌인, 줌아웃)기능이 안될때가 있습니다. 이럴때는 트랙패드를 껐다가 켜거나, 환겅설정 -> 트랙패드 -> 핀치 기능을 비활성화했다가 활성화를 해야지 버그가 풀립니다. 몇년전부터 모든 맥 환경에서 마우스를 없애고 트랙패드를 사용하기 시작했는데 스트레스가 이만저만이 아니었습니다. 그래서 조금 찾아보다가, 터미널 커맨드로 해당 기능을 ON / OFF할 수 있는 방법을 찾아 스크립트와 알프레드 워크플로를 공유합니다.
알고리즘 풀 때 자주 쓰는 몇가지 테크닉
알고리즘 풀 때 자주 쓰는 몇가지 테크닉
2022.05.161. 배열 순회중, 오버플로우 체크 if (0 .. Bool { for number in 2 ... at / 2 { if at % number == 0 { return false } } return tru..
맥 설치 후 세팅
맥 설치 후 세팅
2022.05.16최근에 Karabiner가 말썽을 일으켜서.. 이참에 세팅을 좀 정리하기로 했습니다. 1. 키보드 세팅 a. 키보드 배열 변경 Command Option 위치 변경 b. 한영키 윈도우처럼 맞추기 Label com.changing.KeyRemapping ProgramArguments /usr/bin/hidutil property --set {"UserKeyMapping":[ {"HIDKeyboardModifierMappingSrc":0x7000000E7, "HIDKeyboardModifierMappingDst":0x70000006D} ]} RunAtLoad 위 파일을 받거나, 코드를 긁어서 ~/Library/LaunchAgents에 저장. 근데 이상하게 제가 쓰는 키보드는 좌우가 바뀌는지.. "HIDKey..
UIColor Custom
UIColor Custom
2022.05.11뷰를 개발하다보면, UIColor를 사용할일이 정말 정말 많습니다. 이를 좀 더 편하게 사용하기 위한 커스텀 코드를 몇번 작성하다보니, 정리가 필요하겠구나 싶어 포스팅 합니다. HTML 삽입 미리보기할 수 없는 소스 위와 같은 코드를 작성하게되면, 아래와 같이 편하게 UIColor 값을 조절할 수 있습니다. myLabel.textColor = UIColor(0, 0, 0) myLabel.textColor = UIColor(rgb: 0x000000) 그리고 추가적으로 조금 더 들어가서.. 각 뷰의 색상값을 아래처럼 정의해두면 조금 더 가독성이 높은 코드가 완성 되겠죠 extension UIColor { static let titleColor: UIColor = { UIColor(rgb: 0x000000) ..
스터디 github 가이드
스터디 github 가이드
2022.04.27서론 스터디를 하는 이유? (너무 길어서 내용을 접어두었으니, 읽어보실분은 펼쳐 보세요) 더보기 저는 스터디를 매년 2~3번씩 꾸준히 정기적으로 참여하는 편입니다. 12개월중 6~9개월정도는 되도록 스터디에 참여를 하고, 나머지는 휴식시간을 가지는데요. 곰곰히 생각해보면 스터디보다는 스스로 공부하는것이 훨씬 효율이 나겠지만(관리, 진도 등의 이유로) 저같은경우 보통 스터디를 하게 되면 같이 하는 공부 속에서 혼자 공부를 하게됩니다. 그냥 쉽게 말해 혼자 공부하게되면 대충 하다가 말게되는 게으름때문에.. 오히려 취업준비할때까지는 쳐다도 안봤는데.. 2017년에 일을 시작한 이후부터는 여유가 생겼는지 매년 빼지않고 꼬박꼬박 참여하는 편 입니다. 그런데 연차가 이제 조금씩 쌓이면서 주니어 티를 벗어나는 수준이..
인앱결제 서버 알림 JSON 데이터 정리
인앱결제 서버 알림 JSON 데이터 정리
2022.04.20https://docs.google.com/spreadsheets/d/1PC0eJKFkfz1ZCURi-MXSqddGyovkNNr1bgJ9-80YY4g/edit?usp=sharing 인앱결제 서버 알림 JSON 정리 requestBody requestBody 변수,타입,설명 receipt-data,byte,Base64로 인코딩 된 영수증 password,string,앱 공유 암호, AppStoreConnect에서 설정 exclude-old-transactions,boolean,최근 갱신 트랜잭션만 포함할지 설정하는 flag docs.google.com 인앱결제 조사하면서 정리를 했는데, 혼자 보기 아까워서 올려 둡니다.
인앱결제 환불 관련 FAQ
인앱결제 환불 관련 FAQ
2022.04.20인앱결제를 준비하던 도중 환불에 관하여 몇가지 궁금한점이 생겨서 애플에 문의를 해봤고, 다음과 같은 답변을 받았습니다. 1: 환불에 대한 조건 A: 개발자(회사)에게 환불 정보를 일체 제공하지 않음 2: 환불시 생기는 불이익 A: 고객(개인사정or변심등 으로 추정)의 문제가 아닌 우리 App에 문제가 있을 시, 연락을 할 수 있음 3: 환불 이후 정산 A: 부분환불에 대한 언급은 없으며, 환불시 환불 금액과 동일한 금액을 Apple에 상환 혹은 크레딧 부여(?) 4: 환불 기간제한 A: 구독기간의 마지막 날로부터 90일 3번의 크레딧은 아마 AppStoreConnect 전산에 출금하지 않고 남아있는 금액으로 추정됩니다.