[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기
반응형

분류 전체보기 495

[RxSwift] Rx로 네트워크 통신하기

Rx로 네트워크 통신하기 RxSwift에서 Network를 처리하는 방법은 크게 3가지입니다. Observable 직접 생성하기 RxCocoa가 제공하는 extension 사용하기 외부 라이브러리 사용하기 이들 중 외부 라이브러리를 제외한 두 방법에 대해 알아보겠습니다. Observable 직접 생성하기 enum ApiError: Error { case badUrl case invalidResponse case failed(Int) case invalidData } 에러코드는 위와 같다고 가정합니다. struct Result: Codable { let list: [Model] let code: Int let message: String? static func parse(data: Data) -> [Mod..

[Swift] URL Loading System

URL Loading System URL을 통해 네트워크에 존재하는 서버와 통신하는 기술입니다. 이에 포함된 프레임워크는 높은 수준의 API를 제공하기 때문에 이것만으로 서버연동, 다운로드, 업로드 기능을 구현할 수 있습니다. URLSession 이 시스템에서 가장 중요한 것이 URLSession입니다. 이를 통해 네트워크 연결을 설정하고 요청과 응답을 처리할 수 있습니다. URLSession은 네가지 Session 타입을 가집니다. Shared : 기본 설정을 기반으로 단순한 네트워크 요청을 수행할 수 있습니다. Default : 세션을 직접 구성할 수 있습니다. Degation을 제공하기 때문에 세부적인 제어도 가능합니다. 해당 세션을 통해 전송된 응답은 Disk 및 Memory에 캐싱됩니다. Eph..

🍎 Apple/Swift 2022.05.12

[Swift] CodingKeys / Custom CodingKeys

CodingKeys CodingKeys struct Model: Codable { var name: String var number: Int } // JSON File { "myName" : "Inu", "number" : 5 } 우리는 주로 Codable Protocol을 채택하여 모델을 구성합니다. 이 때 구현하려는 구조체의 속성과 JSON Data의 Key값이 일치해야 정상적으로 Decoding됩니다. 그런데 사실 구현하려는 구조체의 속성과 JSON Data의 Key값이 일치하는 경우는 거의 없습니다. 위의 예시의 name과 myName처럼 다른 것이 일반적입니다. 이 때 사용되는 것이 CodingKeys 입니다. struct Model: Codable { var name: String var nu..

🍎 Apple/Swift 2022.05.12

[Swift] JSON Encoding / Decoding

JSON Encoding / Decoding JSON JavaScript Object Notation의 약자입니다. 네트워크를 통해 데이터를 주고받을 때 사용되는 표준 포맷입니다. 우리는 Swift 데이터를 JSON 데이터로 변환하고, JSON 데이터를 Swift 데이터로 변환할 필요가 있습니다. 이를 Encoding 및 Decoding이라고 합니다. Dictionary와 같이 Key-Value 형태를 가지며, 전체 데이터가 일반 Text로 구성되어 있습니다. JSONEncoder(Decoder) let encoder = JSONEncoder() do { let jsonData = try encoder.encode(instance) } catch { print(error) } let decoder = J..

🍎 Apple/Swift 2022.05.12

[Swift] ATS (App Transport Security)

iOS - ATS (App Transport Security) ATS란 iOS 9에 도입된 보안기능 TLS, AES, SHA-2를 사용하여 구성되어 있습니다. 기본적으로 암호화되지 않은 정보(HTTP)를 허용하지 않습니다. (HTTPS 사용권장) 설정을 수정하면 HTTP 접속을 허용할 수 있지만 앱 심사에 통과되지 못할 가능성이 있기 때문에 일반적으로 권장되지는 않습니다. 이를 수정해야하는 '정당한' 이유가 있어야 합니다. 설정 방법 아래는 ATS 설정을 수정하는 방법입니다. info.plist에서 주로 설정을 관리합니다. info.plist에서 Add Row를 클릭해 새로운 열을 생성합니다. App Transport Security Settings을 입력합니다. 여기에 미리정의된 Key와 Value를 ..

🍎 Apple/Swift 2022.05.12

[2022 카카오 채용연계형 인턴십] 지원 및 코딩테스트 후기

안녕하세요 이누입니다! 이번에 2022 카카오 채용연계형 인턴십에 지원해서 코딩테스트를 보고 왔어요. 다소 아쉽게 시험을 마무리했지만 개인적으로 굉장히 좋은 경험이었기 때문에 정보공유 겸 회고를 위해 후기를 작성합니다. 지원 동기 카카오에서 채용연계형 인턴십을 진행한다는 공고를 보자마자 망설이지 않고 지원했어요. 작년 연말쯤 개최된 카카오의 기술 컨퍼런스인 'if kakao'에 참여하면서 카카오만의 '카카오스러움'에 큰 매력을 느꼈거든요. 특히 세상을 선하게 바꾸겠다는 카카오만의 거창한 포부는 제가 개발자가 되기로 마음먹은 이유와도 많이 맞닿아 있었어요. 지금까지는 아직 학생의 신분이라 지원을 해 볼 기회가 없었지만, 이번엔 학생의 신분으로서도 기간 내 졸업 예정만 되어있다면 방학 때 참여할 수 있는 인..

[알고리즘 연습] 불량 사용자 (프로그래머스 lv3, 스위프트)

문제 https://programmers.co.kr/learn/courses/30/lessons/64064 코딩테스트 연습 - 불량 사용자 개발팀 내에서 이벤트 개발을 담당하고 있는 "무지"는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 programmers.co.kr 풀이 import Foundation func solution(_ user_id:[String], _ banned_id:[String]) -> Int { var bannedList = [[String]]() // 각 banned id 별로 후보군 생성 for bid in banned_id { var temp = [String]() var bidarr = A..

[알고리즘 연습] 합승 택시 요금 (프로그래머스 lv3, 스위프트)

문제 https://programmers.co.kr/learn/courses/30/lessons/72413 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 풀이 import Foundation func solution(_ n:Int,..

[알고리즘 연습] 보석 쇼핑 (프로그래머스 lv3, 스위프트)

문제 https://programmers.co.kr/learn/courses/30/lessons/67258?language=swift 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr 풀이 func solution(_ gems:[String]) -> [Int] { var start = 0 var end = 0 let totalCount = Set(gems).count var gemBox = [String:Int]() var answer = [1, gems.count] while end < gems.count { gemBox[gems[end], default: ..

[알고리즘 연습] 경주로 건설 (프로그래머스 lv3, 스위프트)

문제 https://programmers.co.kr/learn/courses/30/lessons/67259 코딩테스트 연습 - 경주로 건설 [[0,0,0,0,0,0,0,1],[0,0,0,0,0,0,0,0],[0,0,0,0,0,1,0,0],[0,0,0,0,1,0,0,0],[0,0,0,1,0,0,0,1],[0,0,1,0,0,0,1,0],[0,1,0,0,0,1,0,0],[1,0,0,0,0,0,0,0]] 3800 [[0,0,1,0],[0,0,0,0],[0,1,0,1],[1,0,0,0]] 2100 [[0,0,0,0,0,0],[0,1,1,1,1,0],[0,0,1,0,0,0],[1,0,0,1,0,1],[ programmers.co.kr 풀이 func solution(_ board:[[Int]]) -> Int { le..

반응형