 Apple Lover Developer & Artist

영속적인 디자인에 현대의 공감을 채워넣는 공방입니다

반응형

전체 글 116

[Computer Vision] Image Processing - Part 1

개요 지난 시간에는 컴퓨터 비젼이라는 것이 다양한 전처리 기술과 특징 추출이라는 low level processing을 거쳐 인식, 분류, 구분의 해석 행위를 하는 High level processing으로 이루어진다는 것을 배웠다. 이번 시간에는 영상처리(Image Processing)가 무엇이며 어떻게 이루어지고 있는지에 대해 알아본다! Eye and Camera 카메라를 이해하기 위해 카메라가 모방한 사람의 눈이 어떻게 동작하는지 생물학적으로 이해하는 과정 Image Formation 3차원 공간상의 데이터가 2차원 이미지로 투영되면서 어떤 물리적, 수식적 관계가 있는지 이해하는 과정 Camera model 3차원 공간의 물체를 2차원 영상으로 이어주는 카메라가 어떻게 생겼는지 이해하는 과정 디지털..

Lecture 7 Review Part 1: ViewModifier Animation

Animation SwiftUI에서 애니메이션이 어떻게 동작하는가? 모바일 UI 측면에서 애니메이션은 중요한 요소이기 때문에 SwiftUI에서는 이를 쉽게 구현할 수 있도록 설계해두었다. 애니메이션을 구현할 수 있는 방법으로 Shape를 활용해 보는 방법이 존재한다. 예를들어 Memorize 앱에서 카드의 뒷쪽에 파이 모양의 카운트 다운 타이머를 사용하는 경우가 해당된다. 이 때에는 Angle을 활용하여 애니메이션을 구현하였다. 또다른 방법으로 ViewModifier를 사용하는 방법이 존재한다. 그렇다면 ViewModifier은 무엇인가? 우리는 이미 ViewModifier를 사용해본 경험이 있다. 예를들어 aspectRatio, padding, foregroundColor, font와 같은 것들이 해당..

[보안프로토콜] 1주차 - 2강

보안 프로토콜이 제공하는 정보 보호 서비스인 기밀성, 무결성, 검증, 인증, 부인 방지를 제공해주는 암호 기술에 관하여 공부하고 어떻게 이러한 정보 보호 서비스를 제공해 줄 수 있는지 이해해보도록 한다. 우리는 온라인 통신상에서 메시지를 주고 받는 경우가 많다. 예를 들어 온라인 상에서 이메일을 주고 받거나 채팅을 하는 경우도 있을 것이며 특정 사이트에 로그인하기 위하여 아이디나 패스워드를 입력하는 경우, 검색창에 다양한 내용을 검색하여 원하는 답을 얻는 경우가 해당될 것이다. 위 동작이 수행될 때 컴퓨터는 사용자와 서버 사이에 메시지를 주고 받게 된다. 기밀성 [상황] 앨리스(송신자)가 밥(수신자)에게 메시지를 보낼 때 중간에 이브(도청자)에 의해서 패킷 캡쳐를 통한 도청을 당할 수 있다. 도청을 예방..

[보안프로토콜] 1주차 - 1강

보안 프로토콜은 우리말로 보안 통신을 의미한다. 정보 보호 관점에서 보안 프로토콜을 바라보며 여러 정보 보호 서비스를 제공하는 기술적인 측면인 암호 기술을 학습해보고자 한다. 정보 보호는 스마트 환경(iOT 사물 인터넷 환경)에서 많이 사용된다. 스마트 환경 시간 장소에 구애됨 없이 저비용 고성능 컴퓨팅 기능을 사용해 인간의 삶을 편리하게 하고 즐겁게 영위하도록 만드는 환경이다. 스마트 환경은 어떤 특징을 지늬고 있는가? -> 사람들을 편리하게 만들어주는 특징을 지늬고 있다. 수월한 원격 장치 제어 원활한 네트워크 원활한 정보수집 및 배분 편리한 서비스 제공 정확한 예측 및 의사결정이 가능한 시스템 스마트 환경의 대표적인 시스템: 스마트 워크 스마트 워크 사무실 개념을 탈피하여, 언제 어디서나 편리하게 ..

[Computer Vision] Overview

Introduction 카메라를 통하여 입력된 사진/동영상을 컴퓨터가 이해(understand)하기 위한 분야 인간에게는 5가지 감각기관이 존재하며 아래와 같은 대응관계를 생각해볼 수 있다. 시각 => 눈 => 카메라 청각 => 귀 => 스피커 촉각 => 피부 미각 => 혀 후각 => 코 위 감각기관 중에서 시각은 가장 강력한 인지기능을 갖고 있다. 컴퓨터 비전은 컴퓨터(두뇌)를 이용하여 시각기능을 갖는 기계장치(카메라,눈)를 만드는 기술분야이다. 다시 정리하자면 카메라에서 들어오는 정보를 컴퓨터에서 이해하고 판단하고 패턴을 분류하는 분야가 컴퓨터 비전 분야이다. 현대에는 인공지능 기술과 융합하여 발전하고 있다. 다음과 같은 문제를 풀고자 한다. 이 영상이 어떤 종류의 영상인가? 주어진 영상에대한 의미론..

Lecture 6 Review Part 3: Protocols Shapes

Shape Protocol Shape 프로토콜은 View를 상속받고 있는 프로토콜이다. 즉, Shape도 View의 일종이라는 것이다. SwiftUI에서 이미 Shape를 사용해본 적이 있다. RoundedRectangle Circle Capsule etc... 위에서 언급된 도형을 기본적으로 사용한다면 foreground color를 사용하여 View 내부 색깔을 채우게 될 것이다. 하지만 stroke 혹은 fill modifier 를 사용하여 윤곽선만 그리거나 내부에 색깔을 채우도록 설정할 수도 있다. 생각해보면 뭔가 이상한게 있다. stroke를 쓰던 fill을 쓰던 메서드의 인자로 Color가 넘어가거나 Gradient가 넘어가는 등 타입을 가리고 있지 않기 때문이다. 위와 같이 동작할 수 있었던..

Lecture 6 Review Part 2: Protocols Shapes

이전 강좌에서 배운 사항을 실제로 Demo를 통해 이해해보는 시간이다. 가장 좋은 방법은 SwiftUI에서 사용되는 ScrollView나 LazyVGrid의 인자로 View가 들어가는 원리에 대해 파악해보는 것이다. 구현 목표는 화면 크기에 맞추기 위해 모든 카드를 올바른 크기로 유지하는 View Combiner를 정의하는 것이다. 새로 구현할 Combiner가 이미 구현되었다고 가정하고 사용하고 있다. 주석처리한 코드의 역할을 수행하는 Combiner이며 아직 정의되지 않았기 때문에 오류가 뜨고 있음을 확인할 수 있다. 지금바로 새로운 AspectVGrid를 만들어보도록 하자! AspectVGrid라는 새로운 Swift 파일을 생성하였다. 우측에 정의한 것처럼 이 View Combiner를 사용할 때 ..

Lecture 6 Review Part 1: Protocols Shapes

Protocol 프로토콜은 구현 내용이 제거된 struct 혹은 class이다. 함수나 변수가 정의되었지만 내용이 없는 코드는 다음과 같이 생겼다. protocol Moveable { func move(by: Int) var hasMoved: Bool { get } var distanceFromStart: Int { get set } } 프로토콜을 정의해두면 다른 struct나 class가 해당 프로토콜을 포함하여 명세에 대한 구현을 할 수 있다. struct PortableThing: Moveable { // must implement move(by:), hasMoved and distanceFromStart here } 결국 어느 struct나 class가 어느 프로토콜을 포함하여 정의된다는 것은 다..

Lecture 5 Review Part3: Properties Layout @ViewBuilder

Property Observers "Watching" a var and reacting to changes 이전 데모 영상에서 computed property 개념을 다루었는데 많은 사람들이 property observer와 computed property의 개념을 혼동하는 경우가 많다고 한다. 이번 기회에 두 개념을 양옆에 두고 차이점을 이해해보는 시간을 가져보자! 두 개념은 완전히 다른 개념이기 때문이다. 이전에 우리는 Swift가 struct의 변동 여부를 알 수 있다는 점을 여러 측면에서 봐왔다. 그중 가장 중요한 두 지점이 있는데 ViewModel에서 struct로 선언된 model이 연결될 때 @Published 키워드를 선언함으로써 model이 변경될때마다 @Published는 자동으로 세계..

Lecture 5 Review Part2: Properties Layout @ViewBuilder

Code Refactoring 지난 강좌에 이어서 기존에 작성된 Code 들을 Review 해보는 시간을 가져보도록 하자! 기존에 작성된 Model 코드를 살펴보면 다음과 같은 게임 logic 구현부를 찾을 수 있다. struct MemoryGame where CardContent: Equatable { private(set) var cards: Array private var indexOfTheOneAndOnlyFaceUpCard: Int? mutating func choose(_ card: Card) { if let chosenIndex = cards.firstIndex(where: { $0.id == card.id }), !cards[chosenIndex].isFaceUp, !cards[chosen..

반응형