안녕하세요. 오늘은 iOS의 생명주기에 대해 알아보는 시간을 가지도록 하겠습니다. iOS 앱을 실행하면 사용자가 iOS 앱을 실행하면 다음과 같은 일이 발생합니다. UIApplication 객체 생성 AppDelegate 객체 생성 Event Lopp를 실행하면서 유저의 이벤트 구독 UIApplication 객체는 싱글톤 객체로 여러 이벤트를 감지하고 AppDelegate에 전달하는 역할을 합니다. iOS 앱 생명주기 NotRunning : 앱이 실행되지 않는 상태 Inactive : 앱이 실행 중인 상태 그러나 아무런 이벤트를 받지 않는 상태 Active : 앱이 실행 중이며 이벤트가 발생한 상태 Background : 앱이 백그라운드에 있는 상태 그러나 실행되는 코드가 있는 상태 Suspened : ..
안녕하세요. 오늘은 분산 버전 관리 시스템인 Git에 대해 알아보는 시간을 가지도록 하겠습니다. 버전 관리 시스템 버전 관리 시스템이란 쉽게 말해 데이터의 과거와 현재를 차례차례 저장하고 관리하는 시스템입니다. 어떠한 소프트웨어를 개발할 때 각 개발 파일의 변화를 저장하고 관리할 수 있도록 제공하며 이를 통해 팀끼리 파일 공유와 협업을 쉽게 할 수 있도록 도와줍니다. 또한 이전 파일을 확인하거나 백업 기능도 수행할 수 있습니다. 분산 버전 관리 시스템 분산 버전 관리 시스템은 한 서버에만 데이터의 변화가 저장되어 있는 것이 아닌 모든 클라이언트에도 저장되어 있는 형태입니다. 이를 통해 모든 상호작용은 클라이언트에서도 일어나며 오프라인에서도 데이터의 변화를 저장할 수 있습니다. Git의 기본 명령어 학습 ..
안녕하세요. 오늘은 WebRTC란 무엇인지에 대해 알아보겠습니다. WebRTC란? WebRTC(Web Real-Time Communications)란 웹, 앱에서 별도의 소프트웨어, 플러그인 없이 영상, 음성, 텍스트, 파일 같은 데이터들을 주고 받을 수 있도록 만든 기술입니다. WebRTC로 구성된 소프트웨어는 별도의 플러그인과 소프트웨어 없이 P2P 화상회의 및 데이터 공유가 가능합니다. P2P 연결을 위해 NAT로 인해 공인 IP와 사설 IP가 달라지게 되는데 이로 인해 각 Client간의 연결이 어려워집니다. 이 때 ICE, STUN, TURN이라는 개념이 들어가게 되는데 먼저 STUN 서버를 이용하여 NAT를 넘어 두 Client간의 연결을 시도하며 NAT의 구조로 인해 실패할 경우 TURN 서..
안녕하세요. 오늘은 Observable의 종류에 대해 알아보겠습니다. 차근차근 천천히 따라오세요! Single Observable의 특수한 형태로 데이터를 무한히 발행하는 기존의 Observable과 달리 Single은 오직 1개의 데이터만 발행할 수 있습니다. Single은 보통 결과가 유일한 서버 API호출을 할 때 유용하게 사용됩니다. Single을 만드는 방법은 just()함수와 Observable에서 Single클래스를 활용하는 방법이 있습니다. //just()를 이용하는 방법 Single.just("data").subscribe(::print) //Single 클래스를 이용하는 방법 //기존의 Observable을 Single로 변환 val source = Observable.just("hel..
안녕하세요. 오늘은 RxJava의 Observable을 생성하는 함수에 대해 소개하는 시간을 갖겠습니다. create() just()와 달리 개발자가 onNext, onComplete, onError와 같은 알림을 직접 호출하여야 합니다. Observable.create{ emmiter -> emmiter.onNext(100) emmiter.onNext(200) emmiter.onComplete() }.subscribe(::print) // 100 200 emmiter을 이용하여 직접 데이터를 넣어주고 완료를 실행하고 에러를 호출하는 모든 작업을 선언하여야 합니다. fromArray() fromArray()는 배열을 Observable로 변환하여주는 생성 함수입니다. 배열의 순서에 맞게 데이터를 발행하는..
안녕하세요. 오늘은 RecyclerView의 LayoutManager의 소개와 종류에 대해 알아보는 시간을 갖겠습니다. LayoutManager란? Android의 Developer에 의하면 "RecyclerView의 아이템의 배치와 재사용에 대한 정책을 결정하면 LayoutManager의 종류에 따라 아이템의 배치가 변경됩니다." 참조 : 안드로이드 Developer - RecyclerView LayoutManager LayoutManager의 종류 LayoutManager의 종류는 총 3가지로 LinearLayoutManager : 수평, 수직의 스크롤 리스트 GridLayoutManager : 행에 표시되는 아이템 갯수가 여러개인 리스트 StaggeredGridLayoutManage : 높이가 불구..
안녕하세요. 오늘은 RecyclerView에 대한 소개 시간을 갖겠습니다. RecyclerView란? Android 5.0때 소개된 리스트 뷰로 기존의 ListView의 단점을 보완한 새로운 레이아웃 요소 입니다. ListView의 단점인 애니메이션 처리와 커스텀 작업, 고비용의 findViewById를 계속적으로 요청하는 문제를 해결했습니다. RecyclerView는 ViewHolder패턴을 강제하는 방법으로 제작되었으며 이를 통해 성능상의 장점을 제공합니다. RecyclerView 사용법 일단 1번째로 gradle을 추가합니다. compile 'com.android.support:recyclerview-v7:26.1.0' 이 후 xml에 필요한 레이아웃에 RecyclerView를 넣습니다. 이제 Re..
안녕하세요. 오늘은 iOS에서 자주 사용하는 기본적인 UI관련 함수나 프로퍼티를 간단하게 정리해보려고 합니다. 잘못된 설명이나 오류는 댓글에 달아주세요. 눈 깜짝도 하기 전에 수정하겠습니다. UIViewController 부분 storyboard.instantiateViewController(withIdentifier:) 현재 뷰가 소속된 스토리보드에서 identifier를 기준으로 ViewController를 가져옵니다. 이를 캐스팅하여 값을 넣거나 화면을 이동할 수 있습니다. present(viewController:, animation:, completion:) 이동할 ViewController, 화면 이동 애니메이션, 완료 후 동작을 파라미터로 넣어 화면을 이동합니다. presentingViewC..
안녕하세요. 오늘은 안드로이드에서 사용할 수 있는 음성기술에 대해 소개하려고 합니다. STT, TTS 이 두가지 기술입니다! STT Speech to Text의 약자로 음성을 텍스트로 바꾸는 기술입니다. 안드로이드에서 기본으로 제공되며 많은 기업에서 유료로 제공하는 기술입니다! (안드로이드는 공짜!) 구현 방법을 Kotlin을 통해 알아보겠습니다. import android.speech.* // 이 패키지가 STT의 모든 기능! val recognizer = SpeechRecognizer.createSpeechRecognizer(context) // 음성 인식기를 생성! recognizer.setRecognitionListener(object: RecognitionListener{ override fun..
안녕하세요. 오늘은 iOS에서 유용한 라이브러리를 소개해드리려고 합니다. 이 라이브러리를 쓰는 이유 사진이나 노래들의 순서를 변경하는 레이아웃을 개발할 때 어떻게 하시나요? 드래그를 통해 리스트의 순서를 변경하는 레이아웃을 사용하고 싶은데 방법을 모르겠고... 이러한 문제를 해결하기 위해 이 라이브러리를 소개합니다. 라이브러리 소개 RAReorderableLayout는 드래그를 통해 리스트의 순서를 변경할 수 있습니다. UICollectionView를 상속받아 구현하였으며 자세한 내용은 하단에서 확인하실 수 있습니다. RAReorderableLayout 간단한 사용법 cocoapods로 라이브러리를 받습니다. use_frameworks! pod 'RAReorderableLayout' 먼저 UICollec..
- Total
- Today
- Yesterday