전체 글
-
Xcode 15 firebase firestore 에서 컴파일 에러 발생할 때iOS 2023. 12. 2. 01:56
편법 주의 ⚠️ Xcode 14대에서 15로 올리고 나니, 아래 코드부분에서 An attribute list cannot appear here 에러가 발생하면서 컴파일이 되지 않을 때. // Public constant ABSL_CONST_INIT extern "C" const int64_t kFIRFirestoreCacheSizeUnlimited = Settings::CacheSizeUnlimited; ABSL_CONST_INIT 코드를 지워봅시다. xcode에서는 잠겨서 수정이 안 된다면 텍스트 편집기나 다른 파일로 열어서 삭제,,, // Public constant extern "C" const int64_t kFIRFirestoreCacheSizeUnlimited = Settings::CacheS..
-
APNs 를 통한 Push 알림 이해하기iOS 2022. 12. 7. 21:57
오늘은 개개인이 갖고 있는 아이폰 디바이스에 푸시 알림이 오는 과정에 대해 알아보려고 합니다. 앱 개발자의 관점에서 살펴봅니다 :) 먼저 푸시가 전송되는 큰 흐름을 간략하게 보고 블라인드로 남아있는 부분을 하나씩 알아보겠습니다. 흐름 이해하기 개별 디바이스에 직접적으로 푸시 알림을 보낼 수 있는 주체는 오직 APNs 뿐입니다. APNs 란 Apple Push Notification server 의 약자로 즉 애플만이 직접적으로 디바이스에 푸시 알림을 보낼 수 있습니다. 따라서 저희는 APNs 에게 우리 앱에 푸시를 보내줘! 라고 요청해야 합니다. 이 요청이 유효한지 보고 APNs 가 푸시를 보낼지 말지를 판단합니다. 이 요청 또한 정해진 규격에 맞게 APNs 와 연결한 후에 가능하고, 이를 위해 APNs..
-
Xcode 여러 버전 설치 후 git 문제iOS 2022. 5. 13. 14:14
아래와 같은 에러가 나온다면, 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장 주석Clean Code 2022. 1. 14. 22:22
있으나 마나 한 주석을 달려는 유혹에서 벗어나 코드를 정리하라. 더 낫고, 행복한 프로그래머가 되는 지름길이다. 함수나 변수로 표현할 수 있다면 주석을 달지 마라 주석은 나쁜 코드를 보완하지 못한다 코드로 의도를 표현하라! // 직원에게 복지 혜택을 받을 자격이 있는지 검사한다. if ((employee.flags & HOURLY_FLAG) && (employee.age > 65)) 위 코드보단 if (employee.isEligibleForFullBenefits()) 좋은 주석 법적인 주석 정보를 제공하는 주석 의도를 설명하는 주석 의미를 명료하게 밝히는 주석 결과를 경고하는 주석 TODO 주석 중요성을 강조하는 주석 하지만 코드로 설명할 수 있다면 그것이 베스트 위치를 표시하는 주석 반드시 필요할 ..
-
2021년 회고일상/끄적끄적 2021. 12. 23. 13:03
파트 회고를 하기로 해서 급하게 돌아보는 2021 (지금 안 하면 안할 것 같다.) 취업과 함께 뒤늦은 2020 회고를 하고 정신차려보니 반 년의 시간이 흘렀다. 회고를 시작하는 나의 마음: ??? 벌써? 취업 드디어 꿈에 그리던 회사에 취업을 했다. 들어오기 전과 들어와서 본 후의 모습은 약간 차이가 있지만 일하고 싶은 회사라는 건 변함없다. 너무 좋은 동료들과 일하고 있는 것 같아 행복하다. 아직 딱히 단점은 없고 좋은 점이 많은데 뭔가 나보다 주변에서 더 좋아하는 것 같아서 좋다. 9월부터 정직원으로 일하고 있고 인턴 두 달을 포함하면 6개월차에 접어들고 있다. 엊그제 입사한 것 같은데 언제 이렇게 시간이 흘렀는지 모르겠다. 역시 시간이란 괴물은 정신차리고 잡지 않으면 너무 빨리 도망가는 녀석이다...
-
클린 코드 3장 함수Clean Code 2021. 12. 12. 19:57
// 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장 의미 있는 이름Clean Code 2021. 12. 6. 23:21
의도를 분명히 밝혀라 변수나 함수 그리고 클래스 이름은 다음과 같은 굵직한 질문에 모두 답해야 한다. 변수(혹은 함수나 클래스)의 존재 이유는? 수행 기능은? 사용 방법은? 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다. 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장 깨끗한 코드Clean Code 2021. 12. 6. 23:12
깨끗한 코드를 작성하는 방법은 배우기 어렵다. 단순히 원칙과 패턴을 안다고 깨끗한 코드가 나오지 않는다. 고생을 해야 한다. 스스로 연습하고 실패도 맛봐야 한다. 남들이 시도하다 실패하는 모습도 봐야 한다. 그들이 넘어지고 일어서는 모습도 봐야 한다. 결정을 내리느라 고민하는 모습, 잘못된 결정으로 대가를 치르는 모습도 봐야 한다. "나중은 결코 오지 않는다." 기한을 맞추는 유일한 방법은, 그러니까 빨리 가는 유일한 방법은, 언제나 코드를 최대한 깨끗하게 유지하는 습관이다. 프로그래머들이 대충 넘어가는 부분 중 하나가 오류 처리다. 메모리 누수, 경쟁 상태(race condition), 일관성 없는 명명법이 또 다른 예다. 한 마디로 요악하면, 깨끗한 코드는 세세한 사항까지 처리하는 코드다. 깨끗한 코..