전체 글 썸네일형 리스트형 [iOS] SKIP.tools 사용기 SKIP.tools Install사전 설치: Xcode, Android Studio, Homebrew 도 설치가 되어있어야합니다..!저는 Android Studio만 추가적으로 설치해줬습니다 그 다음엔 brew install skiptools/skip/skipskip checkup차례로 진행하면 되는데요checkup 시, 하나라도 체크가 안 되면 다음 단계로 넘어갈 수 없어요..! 저는 안드로이드 스튜디오를 설치만하고 실행, 추가 패키지 설치를 하지 않아서 오류가 났습니다.다시 깔아주고 chekcup하면 이렇게 쫘악 체크표시가 뜬답니다. 그 다음엔위의 폼에 맞게 스킵을 실행시켜주면 됩니다.실행시켜주면..! Wow... 알아서 촤라락 나오는데요.. 코드도 예시코드들이 기본적으로 작성이 되어있습니다.그래서 .. 더보기 [iOS] SKIP.tools? Skip이란? Skip은 Swift 기반의 선언형(declarative) UI 프레임워크로, iOS와 Android 양쪽을 위한 네이티브 앱을 단일 코드베이스(Swift언어, Xcode)로 개발할 수 있게 해주는 도구 SKIP이 말하는 SKIP의 장점 진정한 네이티브 경험- Skip을 통해 생성된 앱은 iOS에서는 SwiftUI를, Android에서는 Jetpack Compose를 사용하여 완전한 네이티브 UI 제공 투명성- Skip의 라이브러리는 오픈 소스로 제공되며, 복잡한 런타임이 없어서 디버깅이 용이 경량성- SkipZero를 사용하면 iOS 앱은 추가적인 Skip 프레임워크에 의존하지 않으며, Android 앱도 최소한의 오픈 소스 라이브러리 필요 메모리 효율성- 추가적인 관리형 런타임이 없으.. 더보기 정렬 알고리즘 정렬 알고리즘원소들을 번호순이나 사전 순서와 같이 일정한 순서대로 열거하는 알고리즘Stable & Unstablestable : 동일한 key값을 갖고 있는 원소들의 순서가 보존 되는 것unstable : 동일한 key값을 갖고 있는 원소들의 순서가 보존 되지 않는 것Inplace & Not-In-Placein-place 알고리즘입력 데이터를 수정하면서 정렬을 수행즉, 추가적인 메모리 공간을 사용하지 않고, 주어진 입력 데이터 내부에서 직접적으로 작업을 수행not-in-place추가적인 메모리 공간을 사용하여, 입력 데이터를 복사하고 정렬을 수행 1. 버블 정렬두 개의 인접한 원소를 비교해 순서에 맞게 교환하여 정렬각 회차가 끝날 때마다 가장 큰 or 가장 작은 수의 자리가 확정func bubbleSor.. 더보기 비선형 자료구조 - 트리 트리- 순환 X, 무방향, 계층적인 구조를 갖는 그래프- 그래프의 표현(인접 리스트/행렬)과 탐색(DFS/BFS) 알고리즘을 그대로 사용 가능 등장 배경- 정보를 계층적이고 체계적으로 관리하고 싶음- 분기를 나눠 탐색 속도를줄일 수 있음 -> 분기로 통해 탐색 방향이 걸러지면 걸러진 분기는 탐색 X 트리의 종류 1. 이진 트리- 모든 노드가 최대 2개의 자식을 가짐ex. 이진 검색 트리, heap, 완전 이진 트리 2. N진 트리- 한 노드가 여러 자식을 가질 수 있음ex. 파일 시스템 디렉토리 구조 3. 균형 트리- 모든 리프 노드가 비슷한 깊이를 갖도록 설계ex. AVL 트리, Red-Black 트리이진 트리각 노드가 최대 2개의 자식을 갖는 트리 1. 정 이진트리- 모든 노드가 0 or 2개인 자식.. 더보기 비선형 자료구조 - 그래프 비선형 자료구조- 순차적으로 나열되는 것이 아닌 앞,뒤의 관계가 1:N, N:N인 자료구조ex. 그래프, 트리 왜 비선형 자료구조를 사용할까?- 더 많은 정보를 담고- 많은 정보를 담은 상태에서 더 빨리 탐색하기 위함 그래프- 노드(정점) + 간선 으로 연결관계를 표현하는 자료구조 그래프 특징 1. 방향성- 간선에 방향성 추가 (기존 A - B, 방향성 추가 A -> B )- 방향성이 추가되면서 한 쪽 방향으로의 접근만 가능해짐- 해당 연결성을 확인하기 위해 Floyd - Warshall 알고리즘 활용 2. 가중치- 간선에 가중치(비용) 추가- 가중치 + 방향 성분이 모두 포함된 그래프 -> 네트워크- 가중치 개념이 추가되면서 기존에 없던 minimum cost 를 확인해야하는 문제 발생 -> 최소 .. 더보기 [iOS] About Swift Concurrency 드디어..!Swift Concurrency에 대해 글을 쓰는 날이 왔습니다..!코드적으로 사용하는 것은 어렵지 않았으나 그 외적인 내용이 굉장히 많더군요..! 1. Swift Concurrency 도입 배경기존 비동기 프로그래밍 - GCD 에서의 문제점 콜백지옥(callback hell) 기존의 비동기 함수 정의 방식- 오래 걸려서 얻는 결과값을 콜백 클로저 형태로 돌려받음// 콜백 함수 형태로 사용func getImage(completionHandler: @escaping (UIImage?) -> Void) { DispatchQueue.global().async { sleep(5) let image = UIImage(systemName: "person") co.. 더보기 동시성 처리 프로세스와 스레드프로세스- 운영체제의 작업 단위- 실행중인 프로그램- 프로세스 실행을 위해 PCB를 생성하며, PCB에는 프로세스의 상태, 메모리 정보 등을 포함스레드- CPU의 작업 단위, 하나의 프로세스 내에서 독립적으로 실행- 모든 프로세스는 기본적으로 하나의 스레드를 갖는데, 이를 메인스레드 라고 함- 스레드가 등장하면서 프로세스 > 자원의 단위, 스레드 > 실행의 단위PCB와 TCB- PCB는 프로세스의 정보를 담고 있고, 각 스레드는 프로세스의 PCB에 연결됨 TCB를 가짐- TCB는 스레드의 프로그램 카운터(PC), 스택 포인터(SP), 레지스터 상태 등 CPU와 관련된 정보를 담아 컨택스트 스위칭을 가능하게 함- 스레드가 많아질 경우, 여러개의 TCB를 갖기도 함 병렬 처리의 두가지 방.. 더보기 [개인출시앱] 모닝글로리 업데이트 과정 이번 게시글에서는 이전에 배포했던 모닝글로리 앱을 개선하기 위해 진행한 업데이트 과정과 그 배경에 대해 이야기해보고자 합니다..! (어떤 문제를 발견하고, 이를 어떻게 해결하여 사용자 경험을 개선했는지?) 문제점1. 사용자에게 친절하지 않는 기능들 고정된 시간과 미션개수- 기존의 모닝글로리는 사용자가 지정된 시간과 미션 개수에 맞춰 활동을 수행하도록 설계 1-1. 고정된 시간 현재 상황- 아침 시간(예: 5시~7시)에 미션을 완료하도록 고정의도- “미라클 모닝”이라는 컨셉을 강조하기 위해 아침 시간을 고정문제점- 사용자마다 생활 패턴이 다르기 때문에 고정된 시간은 비현실적일 수 있음- “아침 시간”이라는 제한이 오히려 사용자들의 부담감을 증가시키고, 앱 사용률을 떨어뜨릴 가능성이 있음고민- 확장성을 열어.. 더보기 이전 1 2 3 4 ··· 8 다음