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

분류 전체보기 495

[RxSwift] ControlProperty, ControlEvent

이번엔 RxCocoa의 ControlProperty와 ControlEvent에 대해 알아보아요. ControlProperty ControlProperty는 Subject처럼 프로퍼티에 값을 주입할 수 있고 동시에 값의 변화도 관찰할 수 있는 타입입니다. 이는 (UIElement).rx를 통해 접근할 수 있습니다. ControlProperty를 사용하면 해당하는 프로퍼티의 변경사항을 데이터 시퀀스로 받아올 수 있습니다. 아래 UITextField+Rx.Swift의 구현 예시를 봅시다. extension Reactive where Base: UITextField { ... public var text: ControlProperty { return value } ... } 내부에 존재하는 text가 Contr..

[RxSwift] Trait (Single, Completable, Maybe)

이번엔 RxSwift의 Trait들에 대해 알아보았습니다. Trait Trait은 Observable을 좀 더 안정성있고 의미있게 표현하기 위한 일종의 Syntax Sugar입니다. 그 종류로는 Single, Completable, Maybe가 있습니다. Observable을 좀 더 좁은 범위로 제한하여 제공함으로써 코드를 더 명시적으로 표현하는 것이죠. 일반적으로 Trait은 아래와 같이 단순히 read-only Observable의 wrapper 형태로 구성되어 있습니다. 이렇게 Observable에 대한 접근을 제한해놓고 내부에 존재하는 Observable를 조정하여 일부 기능에 특화된 형태로 사용자에게 제공합니다. struct Single { let source: Observable ... } S..

[RxSwift] Scheduler

RxSwift의 Relay나 Trait들을 공부하다보니, Scheduler에 관련된 언급이 많더라구요...? 그래서 이번엔 Scheduler에 대해 공부해봤습니다! Scheduler란 Scheduler는 프로세스가 작동하는 context를 추상화한 것입니다. 즉, Cocoa의 GCD와 비슷한 개념이라고 생각하시면 됩니다. 아래는 Scheduler 중 하나인 MainScheduler의 구현 코드입니다. public final class MainScheduler : SerialDispatchQueueScheduler { private let mainQueue: DispatchQueue let numberEnqueued = AtomicInt(0) /// Initializes new instance of `Ma..

[알고리즘 연습] 양궁대회 (프로그래머스 lv2, 스위프트)

문제 https://programmers.co.kr/learn/courses/30/lessons/92342 코딩테스트 연습 - 양궁대회 문제 설명 카카오배 양궁대회가 열렸습니다. 라이언은 저번 카카오배 양궁대회 우승자이고 이번 대회에도 결승전까지 올라왔습니다. 결승전 상대는 어피치입니다. 카카오배 양궁대회 운영위원 programmers.co.kr 시도 import Foundation func solution(_ n:Int, _ info:[Int]) -> [Int] { var ascore = 0 var rscore = 0 var n = n var point: Float = 10 var ap: [(Int,Float)] = info[0...10].map { var result = $0 > 0 ? (Int(10..

[알고리즘 연습] 조이스틱 (프로그래머스 lv2, 스위프트)

문제 https://programmers.co.kr/learn/courses/30/lessons/42860?language=swift 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 풀이 import Foundation func solution(_ name:String) -> Int { let name = Array(name) let aValue = Int(Character("A").asciiValue!) let zValue = Int(Character("Z").asciiValue!) //..

[RxSwift] Subject

저번 게시글( [RxSwift] Observable & Operator )에 이어 오늘은 Subject에 대해서 공부해봤어요. Subject Subject는 Observable이자 Observer인 존재입니다. 값을 수동으로 추가할 수 있고, 해당 값을 이를 구독중인 Subscriber에게 발행할 수 있습니다. 아래 예시를 봅시다. example(of: "PublishSubject") { // 1 let subject = PublishSubject() // 2 subject.onNext("Is anyone listening?") // 3 let subscriptionOne = subject .subscribe(onNext: { (string) in print(string) }) // 4 subject.o..

[Network] HTTPS의 동작방식

안녕하세요 이누입니다!🐶 일반적인 브라우저는 HTTPS가 아닌 HTTP만으로 구성된 사이트에 접속하려하면 경고 메세지를 띄웁니다. 해당 사이트가 신뢰할 수 있는 사이트가 아닐 수 있기 때문입니다. HTTPS는 HTTP와 무엇이 다르길래 이를 확인하고 경고 메세지까지 띄우는 것일까요? HTTPS 기존의 HTTP 방식은 전송중인 데이터를 가로채면 누구나 데이터를 읽을 수 있었습니다. 가령 고객이 특정 쇼핑몰에서 신용카드 정보를 작성하여 서버에 전송하면, 해당 내용이 전혀 암호화되지 않은 채로 인터넷을 돌아다니게 되는 것입니다. HTTPS는 HTTP의 이런 보안적 문제를 해결한 프로토콜입니다. HTTP를 SSL(Secure Sockets Layer) 프로토콜 위에서 돌아가도록하여 클라이언트와 서버가 주고받는 ..

[RxSwift] Observable & Operator

앞선 포스팅( [RxSwift] Reactive Programming & RxSwift )에서는 RxSwift가 무엇인지 그 본질에 대해 알아보았습니다. 제가 저번 포스팅을 하면서 느낀 것은 결국 RxSwift는 Rx를 Swift로 구현한 것일뿐, 절대 Rx와 별개의 것이 아니라는 것입니다. 그래서 오늘부터 그냥 Rx의 공식문서를 읽어보며 Rx 그 본질을 학습하는 시간들을 가져볼까합니다. (그래서 사실은 RxSwift보다는 Rx 학습에 가까울 수는 있습니다... 그래도 RxSwift의 예제도 함께 확인하면서 공부할거예요!) 오늘은 Observable과 Operator과 Operator에 대해 읽고 정리했습니다. Observable Observable은 특정 형태의 데이터의 snapshot을 전달하는 일련..

[알고리즘 연습] 행렬 테두리 회전하기 (프로그래머스 lv2, 스위프트)

문제 https://programmers.co.kr/learn/courses/30/lessons/77485?language=swift# 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr 풀이 import Foundation func solution(_ rows:Int, _ columns:Int, _ queries:[[Int]]) -> [Int] { var matrix = [[Int]]() var answer = [Int]() for i in 0..

[Network] TCP의 흐름제어와 혼잡제어

네트워크 통신과정 도중에는 네트워크 혼잡성 및 receiver의 overload 등의 사유로 데이터가 손실되거나, 전달 순서가 바뀌는 등의 문제가 발생할 수 있습니다. 이런 문제를 해결하고 통신의 신뢰성을 보장하기 위해 TCP/IP에서 사용하는 것이 흐름 제어와 혼잡 제어입니다. cf. TCP 버퍼 : 전송 및 수신 전 TCP 세그먼트는 보관하는 곳입니다. 송신 측은 버퍼에 TCP 세그먼트를 보관한 후 순차적으로 전송하고, 수신 측은 도착한 TCP 세그먼트를 애플리케이션이 읽을 때까지 버퍼에 보관합니다. 이 크기에 너무 작으면 당연히 손실되는 데이터가 많아지겠죠? 흐름 제어 수신 측이 송신 측보다 데이터 처리 속도가 느릴 경우 데이터를 손실할 위험이 존재합니다. 흐름 제어는 이런 송신 측과 수신 측의 데..

반응형