회사에서 사용하고 있는 WebRTC에 대한 개념을 공부하기 위해 블로깅 해봅니다. WebRTC ? Web RealTime Communication 의 약자로 플러그인 설치없이 실시간 소통(비디오, 오디오)이 가능하도록 만들어주는 기술입니다. WebRTC를 사용하는 서비스 Google Meet, Zoom 등 별다른 프로그램 설치없이도 실시간 소통을 할 수 있는것! 통신원리 일반적으로 P2P(Peer to Peer)를 사용하며, P2P란, 두개의 단말이 서로 1:1 통신을 한다는 뜻으로, 서버의 개념없이 동등한 노드들로 구성되어 데이터를 주고받는 형식으로 되어있습니다. RTCPeerConnection WebRTC 컴포넌트로, peer들간의 데이터를 안정적이고 효율적으로 통신하게 도와줍니다. 커넥션이 이루어지..
Key-Value Observing publisher(for:) 단일 변수의 변화를 관찰하려면? KVO(Key-Value Observing)를 준수하는 객체의 모든 속성에 대한 게시자를 제공합니다. ObservableObject 프로토콜은 여러 변수가 변경될 수 있는 경우를 처리합니다. KVO는 Objective-C의 필수 구성 요소였고, Foundation, UIKit 및 AppKit 클래스 대부분의 프로퍼티는 KVO를 준수합니다. 따라서, KVO를 사용하여 변화를 관찰할 수 있습니다. KVO를 준수하는 프로퍼티를 관찰하는 방법 (OperationQueue를 이용) import Combine import Foundation let queue = OperationQueue() let subscriptio..
Timers 타이머를 구현하려면 아래와 같은 방법이 있습니다. RunLoop Timer class DispatchQueue RunLoop NOTE Apple 공식문서에서 RunLoop 클래스는 thread safe 하지 않아, 현재 thread에서만 RunLoop 메서드를 호출해야 한다고 합니다. 아래는 RunLoop를 활용해 1초마다 print를 하는 timer를 만든 예제 입니다. import Foundation let runLoop = RunLoop.main let subscription = runLoop.schedule( after: runLoop.now, interval: .seconds(1), tolerance: .milliseconds(100)) { print("Timer fired") }..
글또라는 커뮤니티를 알게 되고 나서 마침 지원하는 조건중 '삶의 지도' 라는 글을 쓰는게 있는데, 이번 기회에 자신을 돌아보는 글을 남겨 보려고 한다. 사람 만나는걸 즐겼던 호텔리어 고등학생까지 딱히 꿈이없었던 시기여서 대학을 선택할 즈음 '뭘 잘할 수 있을까' 내가 좋아하는걸 고민해봤던 시기였다. 떠올랐던건 사람들과 잘 어울리고, 새로운 사람을 만나는걸 좋아하며, 남 돕는걸 좋아했었고, 어렸을적 엄마 손잡고 따라갔던 호텔결혼식장에서 '이런호텔 경영하려면 어떻게 해야돼?' 라고 했던게 기억이 나 '호텔경영학과' 에 지원하게 되었다. 어떻게보면 아주 간단하게 생각했던것 같은데, 다행히도 서비스업 이라는 직종은 나에게 잘 맞았던것 같다. 하나만 빼고.. 고건 바로.. 영어, 걸림돌이자 디딤돌아무래도 호텔은 ..
Printing events print(_:to:) 디버깅을 할때 print(_:to:) 메서드로 chain메서드 중간중간 상황을 파악할 수 있습니다. import Combine import Foundation let subscription = (1...3).publisher .print("publisher") .sink { _ in } // 1 //publisher: receive subscription: (1...3) // 2 //publisher: request unlimited // 3 //publisher: receive value: (1) //publisher: receive value: (2) //publisher: receive value: (3) // 4 //publisher: recei..
개발자를 시작하고 크고작은 다양한 변화들을 겪었고, 그 과정중에 성장하는걸 느낍니다. 올해도 마찬가지! 2021년 회고 한걸 돌아보면서 많은 다짐과 자극을 받았었던것 같은데 힘들었지만, 그 과정에서 배워가는건 많았던 2022년을 돌아보려 회고글을 적어보려고 합니다. 감사했습니다. 🫑 현재 나는 반려동물 CCTV 앱을 서비스를 하는 회사의 iOS 개발자로 전향해 적응중이다. 이전 헬스케어 회사는 결국 그만 두게 되었고, 여러 일들이 있긴했지만 퇴사했던 가장 큰 이유는 iOS에 집중하고 싶었기 때문이다. 물론 백엔드, 안드로이드 다 하고 싶긴 하지만, 아직은 하나에 집중해서 어느정도 적응이 됐을때, 다른 쪽에 관심을 갖게 될것 같다. 그래도 정말 고마운 회사라고 느끼는건 개발자의 길을 시작할 수 있게 해주었..
요즘 Camera 작업을 하면서 Layer와 View가 많이 보여 둘의 차이점이 궁금해졌다. 검색을 해보다가 간단하게 잘 정리 되어있는곳을 참고하여 글을 작성해보려고 한다. UIView, CALayer 무슨차이? Layer는 low-level의 인터페이스를 제공합니다. 즉, UIView에서 조절할 수 없는 부분을 Layer를 통해 할 수 있다는거죠. 아래 그림을 보면 이해가 좀더 잘될 겁니다. UIView View는 더 복잡한 hierarchy (뷰계층)을 갖고 있습니다. 레이아웃을 배치하기 위해 오토레이아웃(AutoLayout)을 사용합니다. UIView 작업은 main Thread에서 발생하며, CPU를 사용합니다. CALayer UIView 보다 hierarchy (뷰계층)가 간단하며, 화면에 그리..
https://school.programmers.co.kr/learn/courses/30/lessons/120894 문제 사진 내 풀이 import Foundation // 1 var dic = ["zero" : "0", "one": "1", "two": "2", "three": "3", "four": "4", "five": "5", "six": "6", "seven": "7", "eight": "8", "nine": "9"] func solution(_ numbers:String) -> Int { // 2 var result = numbers // 3 for (key, value) in dic { result = String(result.replacingOccurrences(of: key, with: ..
Shifting time publisher에서 방출하는 이벤트를 지연시키는 연산자를 알아보겠습니다. delay(for:tolerance:scheduler:options) upstream 에서 값을 방출할 때마다 잠시 동안 지연시켜 다음 지정한 스케줄러에서 방출합니다. import Combine import SwiftUI import PlaygroundSupport // 1 let valuesPerSecond = 1.0 let delayInSeconds = 1.5 // 2 let sourcePublisher = PassthroughSubject() // 3 let delayedPublisher = sourcePublisher.delay(for: .seconds(delayInSeconds), schedule..
https://school.programmers.co.kr/learn/courses/30/lessons/120912 문제 사진 내 풀이 import Foundation func solution(_ array:[Int]) -> Int { return array.map { String($0) }.joined(separator: "").filter { $0 == "7" }.count } 1. array 요소들을 String으로 변환 2. 변환된 String을 하나의 String으로 합침 (joined) 3. String으로 변환된 결과값들 중 "7"이 들어간요소들의 갯수만 걸러냄 (filter) 다른사람의 풀이 import Foundation func solution(_ array:[Int]) -> Int {..
- Total
- Today
- Yesterday
- swift protocol
- Swift Leetcode
- Swift while
- RIBs tutorial
- swift reduce
- swift function
- Swift 프로퍼티
- 호텔리어 개발자
- Swift joined()
- Swift init
- Swift inout
- Swift Error Handling
- Class
- 원티드 프리온보딩
- iOS GCD
- 2023년 회고
- Swift 프로그래머스
- Swift final
- CS 네트워크
- Uber Architecture
- Swift joined
- Combine: Asynchronous Programming with Swift
- swift 고차함수
- Swift RIBs
- iOS error
- Swift ModernRIBs
- Swift
- ios
- Swift 내림차순
- swift property
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |