전체 글 149

클라우드 컴퓨팅 기술 정리

이번 포스트에서는 클라우드 컴퓨팅에서 사용되는 기술들에 대해 살펴보도록 하겠습니다. 1. Hypervisor (하이퍼바이저) 하이퍼 바이저 (Hypervisor)는 호스트 컴퓨터에서 다수의 운영체제(Operating System)를 동시에 실행하기 위한 논리적인 플랫폼 (Logical Platform) 을 의미합니다. 이를 다른 말로 VMM (Virtual Machine Monitor) 라고도 합니다. 하이퍼 바이저 (Hypervisor)는 대표적으로 두 가지 타입으로 구분되는데 이를 Type1, Type2라고 합니다. 1) Bare Metal Hypervisor (Type 1) Bare Metal은 단어 뜻으로는 그저 맨 쇳덩이라는 뜻이지만 IT 분야에서는 어떠한 Software(소프트웨어)도 담겨있지..

컴퓨터공학 2019.12.03

클라우드 시스템 개요

이번 포스트에서는 클라우드 시스템의 개요에 대해 살펴보도록 하겠습니다. 1. 클라우드 컴퓨팅 (Cloud Computing) 클라우드 컴퓨팅은 하드웨어나 소프트웨어 등 각종 IT 자원을 직접 구축하고 운영하는 기존의 방식과는 달리 네트워크를 통해 접속하여 서비스의 형태로 이용하는 기술을 말합니다. 즉, 어떤 Software를 설치하지 않고 이용하는 것을 클라우드 컴퓨팅(Cloud Computing)이라고 합니다. 비유를 하자면, 예전에는 집집마다 자체 발전기를 구축하여 직접 전기를 생산하여 사용했었다면 현재는 큰 규모의 발전소에서 전기를 생산하여 각 건물로 전기를 공급해주는 방식을 취하고 있습니다. 그리고 전기를 사용하는 사람은 사용한 만큼의 요금을 내게 됩니다. 이것이 바로 클라우드 컴퓨팅과 동일하다고..

컴퓨터공학 2019.12.02

Swift - Error Handling (예외 처리)

이번 포스트에서는 Swift에서 예외를 정의하고 발생하는 방법에 대해 알아보도록 하겠습니다. Swift에서는 예외(Exception)를 Error라고 표현합니다. Swift에서 에러는 Error Protocol을 따르는 타입의 값으로 표현할 수 있습니다. Enum을 사용하여 예외를 정의할 수 있습니다. enum AppError: Error { case invalidSelection case insufficientFunds(coinsNeeded: Int) case outOfStock } 예외를 발생시킬 때는 아래처럼 사용할 수 있습니다. throw AppError.insufficientFunds(coinsNeeded: 4) 예외/에러 핸들링 (Exception/Error Handling) Swift에서는 ..

클라이언트 2019.11.29

Struct vs. Class에 대한 정리

이번 포스트에서는 Struct와 Class에 대하여 정리해보도록 하겠습니다. 아무 생각 없이 쓰다가 문득 이런 생각이 들 수도 있는데요 둘이 비슷한 것 같은데 왜 굳이 만들어 놓았을까? 과연 정말 비슷하면 만들어 놓았을까요? Swift에서는 Value-Type(값 타입), Reference-Type(참조 타입)을 제공하고 있습니다. JAVA에서도 이런 비슷한 이야기를 들은 적이 있을텐데 Call-By-Value, Call-By-Reference 가 그것입니다. 단순히 구조적인 차이부터 시작해서 실제 프로그램이 구동할 때 어떤 차이가 보이는지 알아보도록 하겠습니다. 차이점 1. 구조체는 Value-Type, 클래스는 Reference-Type struct Structure { var structValue ..

클라이언트 2019.11.27

Content Hugging vs. Content Compression Resistance

이번 포스트에서는 Content Hugging 속성과 Content Compression Resistance에 대해 알아보도록 하겠습니다. iOS Application을 개발하다보면 Auto Layout을 적용할 때가 있는데 여기에 Content Hugging Priority와 Content Compression Resistance Priority가 있습니다. Content Hugging : 최대 크기에 대한 제한 Content Compression Resistance : 최소 크기에 대한 제한 즉, Content Hugging은 Intrinsic Content Size를 최대 크기로 하여 제한한다는 것을 의미하고 Content Compression Resistance는 Intrinsic Content ..

클라이언트 2019.11.25

[APP] Notissu - 숭실의 모든 공지사항

2019년 11월 15일 Notissu 앱 출시 심사를 올렸다. 우리 학교의 모든 학부의 공지사항을 한 번에 볼 수 있는 어플리케이션이다. Swift 5 기반으로 구현되었으며 MVP 패턴으로 개발하였다. 조만간 ReactorKit으로 아키텍처 변환을 진행할 예정이다. 정말 정보 제공을 목적으로 한 앱이라 수익 모델 하나 없으며 개인정보를 일체 취급하지 않아 이용자가 부담 없이 사용할 수 있는 어플리케이션이라고 생각한다. 2019년 11월 17일 앱스토어 심사 승인 완료 심사가 나는 대로 스토어 링크를 걸도록 하겠다. GitHub Link (Open Source Application for iOS) https://github.com/della-padula/Notissu della-padula/Notissu..

클라이언트 2019.11.15

Notissu-개인정보취급방침

1. 개인정보의 처리 목적 (‘https://terry-some.tistory.com’이하 ‘개인사이트’) 은(는) 다음의 목적을 위하여 개인정보를 처리하고 있으며, 다음의 목적 이외의 용도로는 이용하지 않습니다. - 고객 가입의사 확인, 고객에 대한 서비스 제공에 따른 본인 식별.인증, 회원자격 유지.관리, 물품 또는 서비스 공급에 따른 금액 결제, 물품 또는 서비스의 공급.배송 등 2. 개인정보의 처리 및 보유 기간① (‘https://terry-some.tistory.com’이하 ‘개인사이트’) 은(는) 정보주체로부터 개인정보를 수집할 때 동의 받은 개인정보 보유․이용기간 또는 법령에 따른 개인정보 보유․이용기간 내에서 개인정보를 처리․보유합니다.② 구체적인 개인정보 처리 및 보유 기간은 다음과 같..

클라이언트 2019.11.15

[라이브러리] Elliotable - 시간표 라이브러리 개발

https://github.com/della-padula/Elliotable della-padula/Elliotable Contribute to della-padula/Elliotable development by creating an account on GitHub. github.com GitHub Star 하나씩 부탁드립니다 :) iOS 개발 시 사용할 수 있는 라이브러리를 개발하였다. 해외 대학교도 비슷하겠지만 강의 정보를 리스트(배열)로 전달해주면 해당 아이템들이 시간표에 추가되어 보여주는 라이브러리다. 선 색, 선 두께, 배경, 각 강의별 폰트 크기, 폰트 굵기, 요일 개수, 요일 구성 등 다양한 커스텀 옵션들을 제공해준다. 언어는 Swift 5.1 버전을 사용하였으며 iOS 11.0이상 버전의..

클라이언트 2019.11.04

중간고사 정리

HDFS(Hadoop Distributed File System) : Cluster에 데이터를 저장 Map Reduce : Cluster의 데이터를 처리 RDD(Resilent Distributed Dataset) - Core data structure in Spark - Distributed, resilient, immutable(수정이 안됨) - lazy evaluated : evaluation command가 나올 때 evaluation된다. - Abstract Data Set - Distribution은 System이 수행함. - Fault가 발생하면 System이 복구함. Big Issues in Distributed System Fault Tolerant : Distributed PC에 고장이..

컴퓨터공학 2019.10.15

RxJava - 스케쥴러 (Scheduler)

스케쥴러는 프로그램의 세부 일정을 주관하는 관리자라고 생각하면 좋습니다. 그 동안 RxJava를 사용하여 구현해온 코드들은 모두 main Thread에서 동작하는 코드입니다. 그런데 실무에서는 요구 사항에 따라 비동기로 동작할 수 있도록 스레드를 지정할 수 있어야 합니다. (메인 스레드로 고정된 것을 바꾸어야 함) 스케쥴러는 스레드를 지정할 수 있게 해줍니다. 새로운 스레드를 생성하거나 기존의 Executors를 활용하는 것을 넘어서 새로운 방식으로 동작이 이루어 집니다. 스레드를 만들면서 경쟁 조건이나 synchronized 키워드를 사용했다면 스케쥴러는 이와 같은 것들을 신경 쓸 필요가 없어집니다. flip()의 기능 보다는 시간 표시줄에 더 집중해서 살필 필요가 있습니다. 위 마블 다이어그램을 코드..