본문 바로가기

전체 글

(129)
[iOS] RxSwift 마스터하기 1. escaping closure swift에서 closure는 일급 객체라서 범위 내에서 캡쳐되는데 만약에 다른 쓰레드에서 closure를 실행하는 코드라면? 안됨... 왜냐면 closure는 downloadJson 함수 안에서만 실행될 수 있는데 이건 비동기로 다른 스레드에서 처리되니까 메서드가 끝나고 난 뒤에 실행되기 때문.. func downloadJson(_ url: String, completion: @escaping (String?) -> Void) { DispatchQueue.global().async { let url = URL(string: url)! let data = try! Data(contentsOf: url) let json = String(data: data, encodin..
Nexters 22기 iOS 파트 활동 회고하기 2023.01~2023.02 즐거웠던 넥스터즈 22기 목차 1. Nexters에 지원하다 2. 8주간의 세션에 참여하다 3. 프로젝트에 참여하다 4. 후기 1. Nexters에 지원하다 나는 예전부터 반드시 넥스터즈에 참여하고 말겠다고 다짐했던 적이 있다. 그 수많은 IT 동아리 중에서도 넥스터즈가 제일 재밌어 보였기 때문이다. 2달 동안 프로젝트를 하는 것은 굉장히 짧은 기간이라 성공 가능성이 희박하지만 그래도 단기간에 많은 것들을 해내야 하는 방식이 나랑 잘 맞다고 생각했다. 하지만 아쉽게도 지난 1년 동안 지원할 수 있는 시간적 여유가 전혀 없었다. 작년 겨울 방학에는 42서울 라피신을 했었고, 작년 여름에는 iOS 개발자 인턴을 했었기 때문이다.. 그리고 드디어! 이번에 여유가 생기게 되어서 바로..
UMC 3기 iOS 파트 활동 회고하기 (+데모데이 우수상까지 🏆) 2022.09~2023.02 UMC 3기 목차 1. UMC iOS 파트장이 되다 2. iOS 세미나와 스터디 진행하기 3. 마스터 코스: 프로젝트 개발하기 4. 기술적 이슈들 5. 데모데이에 참여하다! 6. 책갈피를 소개합니다 7. 후기 1. UMC iOS 파트장이 되다 원래 있던 IT 연합동아리인 MakeUs가 UMC와 CMC로 분리되었다. UMC는 대학 별로 스터디를 운영하고, 워크북이나 프로젝트는 대학교를 합쳐서 지부를 생성해서 관리하는 시스템이다. 내가 UMC를 하게 된 건 학교 별로 운영되기 때문에 개발자들과 좀 더 자주 만나서 스터디와 네트워킹을 진행할 수 있다는 장점 때문이었고 지원해서 경희대 UMC에서 iOS 파트장이 되었다. 사실 면접이 진짜 5분만에 끝났고 기술 질문이 하나도 없었기 때..
[iOS] Kingfisher로 원격 저장소 이미지 캐싱하기 1. iOS UICollectionView, UITableView iOS는 UICollectionView, UITableView를 처리할 때 한번에 데이터 수만큼 cell을 만들지 않는다. 메모리 정책에 기반하여 view에 보여지는 만큼만 cell을 생성하고 나머지는 재사용한다. 이것이 cell 재사용 정책이다. 다음과 같이 cellForItemAt() 안에서 cell을 반환할 때 dequeueReusableCell 에서 구별자로 cell을 가져오는 것을 볼 수 있다. 그런데 이렇게 UICollectionView나 UITableView를 스크롤 하다 보면 이미지를 원격 저장소, 즉 이미지 url에서 이미지를 가져와서 cell에 보여주는 경우 이미지가 잘못 들어가거나 왔다 갔다 제대로 보이지 않는 경우가 ..
[iOS] Alamofire를 사용하여 비동기 서버 통신하기 0. Alamofire iOS 에서는 URLSession이라는 데이터/서버 통신용 프레임워크를 제공하지만 이는 사용하기 매~우 불편하다. Alamofire는 이러한 URLRequest + URLSession를 래핑한 구조를 가진 라이브러리이다. 즉 네트워킹 도구이다. 이 라이브러리를 사용하고자 한다면 기본적인 네트워킹 지식이 필요하다. [iOS] URLSession을 사용하여 POST method 통신하기 HTTP의 기본 구조 HTTP는 요청을 일정한 형식의 텍스트 기반 메세지로 변환한 메세지 형식을 말한다. 크게 요청, 응답으로 구분된다. 메세지는 모두 다음과 같은 구조이다. Line - Header - Body Line은 메 josushell.tistory.com 1. Alamofire 프로젝트에 반..
[C++/14502] 연구소 - using BFS 문제: 연구소 아이디어: BFS 전형적인 BFS 문제다. [특정 map에서 무언가가 퍼져나가는 경우의 수 or 시간 or 집합의 수] 등등의 대부분은 BFS/DFS로 해결 가능하다. 이 문제의 핵심은 어떻게 3개의 벽을 세울 수 있는 경우의 수를 계산하느냐에 달려있다. 나의 경우에는 3개의 벽을 세울 수 있는 모든 가능한 경우의 수를 계산했다. 벽은 빈칸에만 세울 수 있고 어떻게 벽을 세울 때 best 결과가 나올지 모르기 때문에 full search를 하도록 했다. 왜냐하면 애초에 제한 사항에 다음과 같이 map의 크기가 8x8이 최대이기 때문에 가능한 모든 경우의 수를 세어도 무방했다. 다음 로직에 따라 알고리즘을 구성했다. 1. map에서 모든 칸을 확인하며 빈칸일 때 3개의 벽을 세울 수 있는 경..
[iOS] 화면 전환 method Present(_:)와 stack 메모리 보호되어 있는 글입니다.
UIKit + SpriteKit으로 iOS 모바일 레이블링 게임 만들기 2022/04/20~2022/11/25 [주 ZOO 컴퍼니] 프로젝트 목차 1. (주) ZOO 컴퍼니 2. 컨셉 기획과 게임 디자인 3. 개발 과정 4. 각종 크고 작은 이슈들 5. 게임 소개 6. 후기 1. (주) ZOO 컴퍼니 4월 초에 휴학을 하게 되면서 생각만 했던 프로젝트를 직접 해볼 수 있는 시간적 여유가 생기게 되었다. 직접 팀원들을 모아서 기획팀 2명, 디자인팀 2명, 개발은 필자 한명으로 구성된 총 5명의 소규모 프로젝트 팀을 만들었다. 그런데 원래 기획은 모종의 이유로 엎어지게 되었고 이대로면 어렵게 모인 팀원들이 흩어지게 되는 일이 생기게 되었다. 그래서 예전부터 장난식으로 친구와 말을 나누었던 레이블링 게임을 만드는건 어떤지 회의를 했고, 팀원들 모두가 재밌을 것 같다고 하여 함께 ..