2024/10 8

[Swift] Timer + RunLoop, backgroundQueue (swift-corelibs-foundation)

[Swift] Timer + RunLoop, backgroundQueue (swift-corelibs-foundation) 서비스 및 기능에 따라서 RunLoop.main에서 돌아가게 하면 안되는 케이스도 존재. 잘못 설계할 경우 Timer기반으로 동작하는 로그나 기능 등 예상치 못한 결과를 낼 수 있음. RunLoop.main에서 타이머가 아예 방출되지 않거나 RunLoop.main이 아닌 다른스레드에서 돌려야 하는 경우에 대하서 자세히 알아볼 예정 위 케이스들을 내부 구현 코드를 통해 근거 있게 정리해보고자 함. 글의순서 타이머 알아보기 swift-corelibs-foundation내에 Timer 구현 알아보기 Timer 선언부 Timer scheduledTimer 함수 RunLoop 간단히 알아보..

iOS CoreData Relationships

iOS CoreData Relationships iOS CoreData의 Relationship을 공부해보자.연관 포스팅[iOS CoreData 간단한 CRUD](https://rldd.tistory.com/587)[iOS SwiftData in UIKit](https://rldd.tistory.com/588)[iOS CoreData 이론](https://rldd.tistory.com/586)[iOS CoreData Relationships](https://rldd.tistory.com/661) 히스토리2024.10.13CoreData Relationship 정리2024.12.21CoreData Relationship 패키지 모듈화 정리샘플 코드에서 Commnutity Package 참고히스토리샘플코드목..

[Swift] NSCache (swift-corelibs-foundation)

[Swift] NSCache (swift-corelibs-foundation) NSCache 문서를 읽어보다가 `eviction`이란 단어를 보게 되었는데, 대학 수업을 원서로 배울때, `eviction`과 `expiration`에 대해서 깊게 탐구했던 생각이 났음.애플에서 최근에 Foundation 부분을 오픈소스로 공개했는데, NSCache와 관련해서 구현된 코드를 직접 확인하면서 제대로 이해해보고자 함. 글의 순서NSCache OverviewiOS에서 Cache 종류왜 메모리 캐시가 디스크 캐시보다 빠를까?캐시와 관련한 몇가지 정책 및 알고리즘Foundation에서 구현되어 있는 NSCache에 대해서 코드로 알아보기NSCache 선언부NSCache InsertNSCache removeNSCache..

[LeetCode] 11. Container With Most Water

[LeetCode] 11. Container With Most Water https://leetcode.com/problems/container-with-most-water/description/?envType=study-plan-v2&envId=leetcode-75  문제 풀이 접근법투포인터 활용투포인터 접근법은 가장 높은걸 기준으로 가장 멀리 있는것 부터 하나씩 체크해가는 로직왜냐하면 가장 멀리 있는 기둥일수록 가장 면적이 크게 잡히기 때문.면적을 계산한 후 두 기둥 중 더 높은 기둥을 기준 포인터로 남기고 기준 포인터에서 L, R을 옮겨가면서 판단하기이게 가능한 이유는 `거리`가 가중값 없이 존재하기 때문에 거리를 기반으로 L, R을 옮기면서 찾아보면 된다.만약 가중값이 존재한다면 그래프 알고리즘으..

[LeetCode] 334. Increasing Triplet Subsequence

[LeetCode] 334. Increasing Triplet Subsequencehttps://leetcode.com/problems/increasing-triplet-subsequence/?envType=study-plan-v2&envId=leetcode-75     문제 풀이 아이디어증가하는 K(3)개의 수를 찾는 문제로 일반화K개의 값이 증가하는 패턴을 찾기그리디 알고리즘으로 접근K개를 먼저 준비해두고, 0번 인덱스부터 값을 교체해가며 연속하는 배열을 찾아냄  class Solution { func increasingTriplet(_ nums: [Int]) -> Bool {// kLengthArray는 현재까지 발견한 k개의 증가하는 수열을 저장 var k = 3 v..

[LeetCode] 605. Can Place Flowers

[LeetCode] 605. Can Place Flowers  - DP 활용해 누적곱으로도 풀어낼 수 있는데, 특정 조건이 만족하면 그대로 종료할 수 있는 로직을 통해 특정 데이터 조건에서 시간 복잡도 개선이 불가하여, 다른아이디어 적용  문제 링크https://leetcode.com/problems/can-place-flowers/?envType=study-plan-v2&envId=leetcode-75  문제풀이아이디어, 나 자신을 제외한 모든 수를 곱하는 거라서, 이미 모든 수를 다 곱해놓고, 출력 전에 나 자신으로 나누기이 과정에서 특정 조건을 만족한 경우 엣지케이스를 통한 처리로 시간 복잡도 줄임 분석 및 주의점0이 2개 이상이면 모든 자리는 0이므로 전체 곱을 수행하는 도중에 0이 2개 이상이라..

[CI] 로컬 빌드 성공 하지만, Github Action 빌드 실패하던 문제

[CI] 로컬 빌드 성공 하지만, Github Action 빌드 실패하던 문제 문제 상황로컬에서 모든 작업자가 빌드가 잘 되지만,  Github Action에서만 빌드가 실패하는 문제가 발생Process completed with exit code 65.문제 분석에러 파일이 길어서 콘솔에는 나타나지 않아 에러 파일을 다운 받아 분석패키지 의존성에 문제가 있는지 점검테스트 코드 통과하지 못한 영역이 있는지 점검최근 작업한 영역에서 빌드에 영향을 줄 수 있는 부분이 있는지 점검당시 Translation 프레임워크를 도입 iOS 17, 18에서 지원하는 사용할 수 있는 API 가 다름 (18에서 확장됨)Xcode 15와 Xcode 16에 따라 iOS 타겟 범위가 다름 (15는 17버전, 16은 18버전 지..

티스토리 크롤링 포스팅 제목과 링크 추출 자동화 (Python)

티스토리 크롤링 포스팅 제목과 링크 추출 자동화 (Python) 깃헙에 그동안 블로그에 포스팅한 글들을 정리해두려고 함.근데 이걸 아래의 형태로 뽑아내고자 하는데, 하나하나 수동으로 옮기는거 매우 귀찮음.비공개 포스팅을 포함해 포스팅이 654개나 되기 때문! [{포스팅 제목}]({링크}) 하나하나 옮겼으면, 하루 종일 했을 것 같은데, 구조 분석해서 끝내기까지 20분도 걸리지 않았던 것 같음.앞으로 두고두고 쓸 것 같아서 포스팅.  작업 후기자동화를 통해 결과적으로 시간 단축하는건 좋았는데, 데이터를 변환하기 쉽게 바꿔주는 과정이 오래걸림.Swift 쓰다가 Python 쓰니까 에러가 불친절하게 느껴짐. 조금 더 구체적이었으면 좋겠음.Python 정말 쉬움. 목적에 따라 다르겠지만, 이만한 언어가 없는거 ..

AI 및 자동화 2024.10.01