전체 글
-
[SwiftUI] Model data 앱 데이터 관리하기SwiftUI 2022. 11. 25. 18:47
아래 문서를 읽고 정리한 글입니다. https://developer.apple.com/documentation/swiftui/model-data Apple Developer Documentation developer.apple.com Overview SwiftUI는 선언적인 UI 접근 방식을 제공합니다. 뷰 계층을 구성할 때 뷰에게 관련된 데이터 의존성을 알려줍니다. 그럼 외부 이벤트나, 사용자 액션으로 데이터가 바뀔 때, SwiftUI 는 자동으로 영향이 미치는 부분을 업데이트 합니다. 결과적으로 SwiftUI 프레임워크는 자동으로 이전에 뷰컨트롤러가 했던 대부분의 일을 수행합니다. SwiftUI 프레임워크는 데이터와 UI를 연결하기 위해 state variables, bindings 같은 도구를 제공..
-
Hello CombineCombine 2022. 10. 1. 16:44
공부한 내용을 바탕으로 생각을 정리한 글입니다. 잘못된 내용이나 수정 보완이 필요한 내용은 댓글로 알려주시면 감사하겠습니다. 핵심 요약 👨🏻💻 Combine 은 비동기 이벤트를 처리하기 위해 declarative Swift API 를 제공하는 프레임워크 입니다. Combine 의 3가지 핵심 개념은 Publisher, Operator, Subscriber 입니다. Publisher 가 이벤트를 방출하면, 그걸 Subscriber 가 받아주고, 중간에서 Operator 들을 사용해 원하는 형태로 이벤트를 전달합니다. Operator는 upstream 을 받아, downstream 을 내보내며, 순서를 건너뛰지 않고 다른 Operator 를 바꿀 수 없습니다. Combine Combine은 비동기 이벤트를..
-
[git] revert 할 수 없을 때, commit revert is a merge but no -m option was given.git 2022. 8. 29. 00:42
커밋을 revert 시킬 때 아래 명령어를 사용할 수 있습니다. git revert {commit hash} 하지만 브랜치가 여러 개 있을 경우, 아래 에러 메시지가 나오며 불가능할 때가 있습니다. commit { } is a merge but no -m option was given. merge 한 커밋을 revert 하려고 하는데, 누구를 revert 할지가 애매해서 하기 때문에 -m(merge) 사용해 옵션을 어떤 머지를 revert 할 지 명확하게 지정해달라는 의미입니다. 아래 과정으로 처리해줄 수 있습니다. git cat-file -p {hash} 로 tree 확인가능 tree 의 두 부모 중 하나를 정해줘야함. m1 면 머지된 tree m2 면 머지시킨 tree git revert {comm..
-
Xcode 여러 버전 설치 후 git 문제iOS 2022. 5. 13. 14:16
아래와 같은 에러가 나온다면, git에서 제대로 된 Xcode 경로를 찾지못해 발생하는 에러입니다. xcrun: error: active developer path ("/Users/~~~/Xcode13.2.app/Contents/Developer") does not exist Use `sudo xcode-select --switch path/to/Xcode.app` to specify the Xcode that you wish to use for command line developer tools, or use `xcode-select --install` to install the standalone command line developer tools. See `man xcode-select` for m..
-
4장 주석독서_dev/Clean Code 2022. 1. 14. 22:35
있으나 마나 한 주석을 달려는 유혹에서 벗어나 코드를 정리하라. 더 낫고, 행복한 프로그래머가 되는 지름길이다. 함수나 변수로 표현할 수 있다면 주석을 달지 마라 주석은 나쁜 코드를 보완하지 못한다 코드로 의도를 표현하라! // 직원에게 복지 혜택을 받을 자격이 있는지 검사한다. if ((employee.flags & HOURLY_FLAG) && (employee.age > 65)) 위 코드보단 if (employee.isEligibleForFullBenefits()) 좋은 주석 법적인 주석 정보를 제공하는 주석 의도를 설명하는 주석 의미를 명료하게 밝히는 주석 결과를 경고하는 주석 TODO 주석 중요성을 강조하는 주석 하지만 코드로 설명할 수 있다면 그것이 베스트 위치를 표시하는 주석 반드시 필요할 ..
-
클린 코드 3장 함수독서_dev/Clean Code 2022. 1. 14. 22:34
// 3-1. HtmlUtil.java (FitNesse 20070619) public static String testableHtml { PageData pageData, boolean includeSuiteSetup } throws Exception { Wikipage wikiPage = pageData.getWikiPage(); StringBuffer buffer = new StringBuffer(); if (pageData.hasAttribute("Test")) { if (includeSuiteSetup) { WikiPage suiteSetup = PageCrawlerImpl.getInheritedPage( SuiteResponder.SUITE_SETUP_NAME, wikiPage ); if (s..
-
클린 코드 2장 의미 있는 이름독서_dev/Clean Code 2022. 1. 14. 22:31
의도를 분명히 밝혀라 변수나 함수 그리고 클래스 이름은 다음과 같은 굵직한 질문에 모두 답해야 한다. 변수(혹은 함수나 클래스)의 존재 이유는? 수행 기능은? 사용 방법은? 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다. int d; // 경과 시간(단위: 날짜) // ==== d보다는 아래 변수들이 훨씬 명확 int elapsedTimeInDays; int daysSinceCreation; int daysSinceModification; int fileAgeInDays; public List getThem() { List list1 = new ArrayList(); for (int[] x : theList) if (x[0] == 4) list1.add(x); return list1; }..
-
클린 코드 1장 깨끗한 코드독서_dev/Clean Code 2022. 1. 14. 22:29
깨끗한 코드를 작성하는 방법은 배우기 어렵다. 단순히 원칙과 패턴을 안다고 깨끗한 코드가 나오지 않는다. 고생을 해야 한다. 스스로 연습하고 실패도 맛봐야 한다. 남들이 시도하다 실패하는 모습도 봐야 한다. 그들이 넘어지고 일어서는 모습도 봐야 한다. 결정을 내리느라 고민하는 모습, 잘못된 결정으로 대가를 치르는 모습도 봐야 한다. "나중은 결코 오지 않는다." 기한을 맞추는 유일한 방법은, 그러니까 빨리 가는 유일한 방법은, 언제나 코드를 최대한 깨끗하게 유지하는 습관이다. 프로그래머들이 대충 넘어가는 부분 중 하나가 오류 처리다. 메모리 누수, 경쟁 상태(race condition), 일관성 없는 명명법이 또 다른 예다. 한 마디로 요악하면, 깨끗한 코드는 세세한 사항까지 처리하는 코드다. 깨끗한 코..