본문 바로가기

전체 글97

UIGestureRecognizerDelegate [ios] Handling UIKit Gestures [ios] Handling UIKit Gestures Handling UIKit Gestures Gesture recognizer를 사용하는 것은 뷰에서 발생하는 Touch나 Press 이벤트를 다룰수 있는 가장 간단한 방법입니다. 어떤 뷰든간에 한 개 혹은 복수 개의 Gesture에 대한 recognizer를.. baked-corn.tistory.com iOS ) ScrollView에서 위아래 Gesture를 감지하고싶다면? / UIGestureRecognizerDelegate iOS ) ScrollView에서 위아래 Gesture를 감지하고싶다면? / UIGestureRecognizerDelegate 안녕하세요 :) Zedd입니다. 알아두면 좋은 .. 2020. 3. 5.
비동기 반환 (Async Result) 연산이 오래 걸리거나, 네트워크를 통해서 결과를 얻거나, 딜레이가 포함되어 있는 내용은 비동기(async) 방식으로 결과는 나중에 생길 때 전달받기로 하고 프로그램의 수행을 멈추지 않는 방식으로 함수를 구현하는 것이 좋습니다. // 동기 func syncFunc(_ nums: [Int]) -> Int { sleep(1) let sum = nums.reduce(0, +) return sum } // 비동기 func asyncFunc(_ nums: [Int], _ result: @escaping (Int) -> Void) { print("sleep......3") DispatchQueue.main.async { sleep(3) let sum = nums.reduce(0, +) result(sum) // 결과.. 2020. 3. 5.
ReactorKit으로 단방향 반응형 앱 만들기 - 전수열 ReactorKit으로 단방향 반응형 앱 만들기 - 전수열 ReactorKit으로 단방향 반응형 앱 만들기 Massive View Controller를 피하기 위해 Why? 뷰와 로직의 관심사 분리 뷰 컨트롤러가 단순해짐 RxSwift의 장점을 모두 취한다. ReactorKit은 RxSwift를 기반으로 함 모든 RxSwift 기능을 사용 가능 상태 관리가 쉽다. 단방향 데이터 흐름 중간 상태를 reduce() 함수(pure function)로 관리 pure function(순수 함수) 상태 관리가 간결해짐 View 사용자 입력을 받아서 Reactor에 전달 Reactor로부터 받은 상태를 렌더링 뷰 컨트롤러, 셀, 컨트롤 등을 모두 View로 취급 Reactor View에서 전달받은 Action에 따라.. 2020. 3. 4.
[UIKit] 'App' and 'Scenes' 개요 iOS 13이상에서는 유저가 앱UI의 여러 인스턴스를 동시에 만들고 관리 할 수 있으며, app switcher를 통해 전환도 할 수 있습니다. app Switcher란 홈버튼 더블클릭, 인디케이터바를 위로 스와이프 해서 나오는 화면을 말합니다. iPad에서는 유저가 여러개의 인스턴스를 나란히 표시 할 수도 있습니다. UI의 각 인스턴스마다 다른내용, 다른방식으로 표시됩니다. 예를 들어 캘린더 앱은 특정 날짜와 특정 달에 대한 약속을 동시에 보여줄수 있습니다. 이전에는 한 앱을 동시에 켜는 것이 불가능 하였습니다. UIkit은 UIWindowScene객체를 이용하여 앱 UI의 각 인스턴스를 관리합니다. Scene에는 UI의 한 인스턴스를 표시하는데 필요한 windows와 view controller.. 2020. 3. 4.
UINavigationController push 할 때 이미지 확대/축소 전환효과주기 (+ interactive) masamichiueta/FluidPhoto Create transition and interaction like iOS Photos app I. class 구조 만들기 class ZoomTransitionController UIViewControllerTransitioningDelegate 또는 UINavigationControllerDelegate를 구현하고 전환을 관리합니다. class ZoomAnimator UIViewControllerAnimatedTransitioning 및 줌 애니메이션 논리를 구현합니다. ZoomAnimator는 ZoomTransitionController의 속성입니다. 두 클래스에서 ZoomAnimator 와 ZoomTransitionController 를 분리 한 이유 .. 2020. 1. 26.
'RxSwift 4시간에 끝내기'를 듣고 RxSwift 4시간에 끝내기 오프라인 강좌 링크 iamchiwon/RxSwift_In_4_Hours ReactiveX 공식 ReactiveX RxSwift Github ReactiveX/RxSwift operator 마블 그림으로 볼 수 있는 곳 RxMarbles: Interactive diagrams of Rx Observables RxSwift 4시간에 끝내기 유투브 RxSwift 4시간에 끝내기 시즌0 - YouTube Moya ('나중에줄게' 를 single로 준다)(Alamofire 다음으로 유행하는 swift 네트워크 라이브러리) Bolts (옵씨 리엑티브 유행) PromiseKit (JS 리엑티브 유행) ipthread : POSIX C API → Thread : obj-c,.. 2020. 1. 26.
Dependency Injection(DI: 의존성 주입) [DI] Dependency Injection 이란? - Clint Jang - Medium Dependency Injection 높은 재사용성 테스트 용이 코드 단순화 종속적인 코드 줄여줌 코드 의도 파악 수월. 종속성 감소 구성 요소의 종속성이 감소하면 변경에 민감하지 않습니다 결합도(coupling)는 낮추면서 유연성과 확장성은 향상 객체 간의 의존관계 설정 객체 간의 의존관계를 없애거나 줄임 의존성 class AClass { var number: Int = 1 } // AClass와 의존관계가 있는 클래스 class BClass { // 내부에 변수로 AClass를 사용 var internalVariable = AClass() } let b = BClass() print(b.internalVari.. 2020. 1. 26.
let us: Go! 2019 Summer let us: Go! 2019 Summer let us: Go! 2019 Summer let us: GO! iOS Developers Korea [2019 Summer] let us: Go!에 관심을 가져주셔서 감사드립니다. let us: Go!(前 비정상 토크모임)는 2016년 10월에 처음, 세미나를 열게 되었습니다. 세미나라고 하기보단, 서로 가지고 있는 지식을 공유하며 소통하고 같은 개발자끼리 어울려 친해질 수 있는 편한 자리로 생각해주시면 좋겠습니다. let us: Go! 참가신청은 아무 조건이 없습니다 iOS 개발자로 현업에서 letusgo.app Note 각 세션마다 2~30분의 시간이 주어져서 대부분의 스피커가 말하기나 진행을 빠른 속도로 진행하는 경향이 있었다. 이번 컨퍼런스는 장소 특성.. 2020. 1. 26.
데이터 타입 기본 데이터 타입 기본 데이터 타입 - 야곰의 스위프트 프로그래밍 Bool true와 false만을 값으로 가지는 타입 Int, UInt Int 정수 타입. 현재는 기본적으로 64비트 정수형. UInt 양의 정수 타입. 현재는 기본적으로 64비트 양의 정수형. Float, Double Float 실수 타입. 32비트 부동소수형. Double 실수타입. 64비트 부동소수형. Character, String Character 문자 타입. 유니코드 사용. 큰따옴표("") 사용. String 문자열 타입. 유니코드 사용. 큰따옴표("") 사용. 여러줄 문자열은 큰따옴표 세 개 사용. 생각해보기 다음 코드에서 integer, floatingPoint, apple 상수는 각각 어떤 타입이 될까요? 상상해보고 확인해.. 2020. 1. 26.
티스토리 Letter스킨 다크모드 적용된 CSS 코드 공유합니다. 관리 > 스킨 편집 > html 편집 > CSS 로 이동한 뒤 CSS 맨 아랫줄에 붙여넣기 하세요 /*다크모드*/ @media (prefers-color-scheme: dark) { .area_head,input,body,.area_menu,.area_menu .list_cate { background: #111; color: #686868; } body, button, input, select, table, textarea { color: #bbb; } #header { border-bottom: 1px solid #222; } .area_menu { border-right: 1px solid #222; } .sidebar { border-top: 1px solid #222; } a { color: #.. 2020. 1. 25.
함수형 프로그래밍 : 합성 (Composition) 함수의 반환값이 다른 함수의 입력값으로 사용되는 것 func f1(_ i: Int) -> Int { return i * 2 } func f2(_ i: Int) -> String { return "\(i)" } let result = f2(f1(100)) /// 1급개체로서의 함수를 합성하는 예제 func ff(_ pf1: @escaping (Int) -> Int, _ pf2: @escaping (Int) -> String) -> (Int) -> String { return { i in // i == 100 // 100 -> 200 -> "200" return pf2(pf1(i)) } } let f3 = ff(f1, f2) let result2 = f3(100) // 합성된 함수를 한번에 사용 /// ge.. 2020. 1. 25.
OpenCV OpenCV개요OpenCV(Open Source Computer Vision)은 주로 실시간 컴퓨터 비전을 목적으로 한 프로그래밍 라이브러리이다. 원래는 인텔이 개발하였으나 현재는 손을 뗀 상태다.실시간 이미지 프로세싱에 중점을 둔 라이브러리이다. 인텔CPU에서 사용되는 경우 속도의 향상을 볼 수 있는 IPP(Intel Performance Primitives)를 지원한다. 이 라이브러리는 윈도, 리눅스 등에서 사용 가능한 크로스 플랫폼이며 오픈소스 BSD 허가서 하에서 무료로 사용할 수 있다. OpenCV는 TensorFlow , Torch / PyTorch 및 Caffe의 딥러닝 프레임워크를 지원한다.영상 관련 라이브러리로서 사실상 표준의 지위를 가지고 있다. 조금이라도 영상처리가 들어간다면 필수적으.. 2019. 1. 14.
Let’s Encrypt Let’s Encrypt개요Let's Encrypt는 보안 웹사이트를 위한 인증서의 수동 생성, 유효성 확인, 디지털 서명, 설치, 갱신 등 종전의 복잡한 과정을 없애주는 자동화된 프로세스를 통해 전송 계층 보안(TLS) 암호화를 위해 무료 X.509 인증서를 제공하는 인증 기관이다.이 프로젝트는 어디에서든 접근 가능한 월드 와이드 웹 서버들에 대한 암호화된 연결을 생성하는 것이 목적이다.지불, 웹 서버 구성, 유효성 확인 이메일 관리, 인증서 갱신 작업을 제거해주는데 이는 TLS 암호화를 구성하고 유지보수하는 복잡도를 상당히 낮추어준다는 것을 뜻한다.리눅스 웹 서버에서 HTTPS 암호화를 구성하고 인증서를 인수하고 설치하는데에는 단지 두 개의 명령어만 실행하면 된다.몇 가지 TLS 인증서 종류 중에서 .. 2019. 1. 14.
SendGrid란? SendGrid개요SendGrid는 사용자 지정 통합을 쉽게 만드는 유연한 API와 함께 신뢰할 만한 트랜잭션 전자 메일 배달, 확장성 및 실시간 분석을 제공하는 클라우드 기반 전자 메일 서비스입니다.사용 사례고객에게 영수증 또는 구매 확인을 자동으로 전송고객에게 매달 전단지 및 홍보 메일을 보내는 메일 그룹 관리차단된 메일과 같은 작업에 대한 실시간 메트릭 및 고객 참여 수집고객 질문 전달수신 메일 처리제공하는 언어C#GoJavaNode.jsPHPPythonRuby 2019. 1. 14.
GraphQL Ruby GraphQL Ruby개요GraphQL 은 페이스북에서 만든 어플리케이션 레이어 쿼리 언어입니다. 기존의 웹 혹은 모바일 어플리케이션의 API 를 구현 할 때는, 통상적으로 REST API 가 사용됩니다. 기존의 REST API 를 사용하여 API 를 구현을 한다면, 우리가 클라이언트사이드에서 어떠한 기능이 필요 할 때마다 그때 그때 새로운 API를 만들어주었어야했습니다.예를들어 여러분의 어플리케이션에 Account 라는 모델이 있고, /accounts 라는 endpoint 가 있다고 가정해봅시다.만약에 특정 id 를 가진 계정의 정보를 가져오려면 다음과 같이 하겠죠.GET /accounts/1 { "account": { "id": "1", "username": "velopert", "email": "p.. 2019. 1. 14.
Docker for AWS Docker for AWS개요Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼입니다. Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있습니다. Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며 코드가 문제없이 실행될 것임을 확신할 수 있습니다.AWS에서 Docker를 실행하면 개발자와 관리자가 어떠한 규모에서든 매우 안정적이며 저렴한 방식으로 애플리케이션을 구축, 제공 및 실행할 수 있습니다. AWS에서는 두 가지 Docker 라이선싱 모델, 즉 오픈 소스 Docker Community .. 2019. 1. 14.
RxJS의 기본 RxJS개요JavaScript 용 반응형 확장 라이브러리RxJS는 Observables를 사용하여 비동기식 또는 콜백 기반 코드를보다 쉽게 작성하도록하는 리 액티브 프로그래밍 용 라이브러리입니다. RxJS는 관찰 가능한 시퀀스를 사용하여 비동기 및 이벤트 기반 프로그램을 작성하기위한 라이브러리입니다.Observable, 위성 유형 (Observer, Schedulers, Subjects) 및 Array#extras (Map, Filter, Reduce, Every 등)에 영향을받는 연산자를 사용하여 비동기 이벤트를 콜렉션으로 처리 할 수 있습니다.ReactiveX는 Observer 패턴과 Iterator 패턴을 결합하고 컬렉션을 사용한 함수형 프로그래밍을 통해 이벤트 시퀀스를 관리하는 이상적인 방법의 필.. 2019. 1. 14.
TypeScript TypeScript개요TypeScript는 Microsoft에서 개발하여 2012년에 발표한 오픈 소스 프로그래밍 언어입니다. 대규모 JavaScript application 개발을 목적으로 만들어졌습니다.TypeScript를 활용하여 개발하여도 기존의 소프트웨어 컴포넌트와 자바스크립트 라이브러리의 동작 방식과는 충돌하지 않는다. 또한, 동적인 모듈 로딩을 지원하여 네이밍 충돌 문제를 줄일 수 있게 해주며, 추가된 타입 체계를 바탕으로 생산성을 높여주는 여러가지 툴과 사례(정적 타이핑, 심볼 기반 네비게이션, 구문 완성, 코드 리펙토링 등)를 활용할 수 있다.특징TypeScript는 JavaScript ES5(ECMAScript 5) 문법의 상위 집합(Super set)입니다. TypeScript는 Ja.. 2019. 1. 12.
Ruby on Rails Rails개요Ruby on Rails는 Ruby를 사용하는 웹 프레임워크로 덴마크의 David Heinemeier Hansson이 오픈 소스로 만들었다. 줄여서 Rails나 RoR이라고도 부른다. 풀 스택 웹 프레임워크이고, non full-stack 웹 프레임워크로는 Sinatra 등이 있다.Python의 Django나 PHP의 Laravel과 비슷한 존재인데, Rails 이후 등장한 거의 모든 풀스택 웹 프레임워크는 Rails의 디자인에 영향을 받았다고 해도 과언이 아닐 정도이다.MVC 모델 패턴을 채택하고 있다. 일단 사용하는 언어가 Ruby인지라 고급지고 간결한 코드를 작성 할 수 있다는 장점을 어필, 애자일 프로세스에 초점을 맞추는 많은 스타트업 기업들이 채택하고 주가도 오르려는 찰나 Node... 2019. 1. 12.
Sass SassSass (Syntactically Awesome Style Sheets : 문법적으로 짱 멋진 스타일시트) 는 CSS pre-processor 로서, 복잡한 작업을 쉽게 할 수 있게 해주고, 코드의 재활용성을 높여줄 뿐 만 아니라, 코드의 가독성을 높여주어 유지보수를 쉽게해줍니다.CSS pre-processorCSS 를 확장하는 스크립팅 언어로서, 컴파일러를 통하여 브라우저에서 사용 할 수 있는 일반 CSS 문법 형태로 변환합니다컴파일하는 방법오리지널 Ruby Sass 사용하기gem install sass 로 설치하고, sass style.scss style.css 로 컴파일한다.GUI 앱 사용하기Koala, Hammer, Compass 등libsass 사용하기이는 C언어로 작성된 매우 빠른 S.. 2019. 1. 12.