본문 바로가기

전체

(325)
클린아키텍쳐 2부 정리 3장 패터다임 개요1. 구조적 프로그래밍최초로 적용된 패러다임1968 에츠허르 비버 데이크스트라(Edger Wybe Dijkstra)발견goto는 프로그램 구조에 해롭다if/then/else, do/while/until로 대체구조적 프로그래밍은 제어흐름의 직접적인 전환에 대해 규칙을 부과goto와 같은 직접적인 전환을 제공하지 않아서 해결2. 객체 지향 프로그래밍두번째로 도입등장은 1966년 올레 요한달(Ole Johan Dahl), 크리스텐 니가드(Kristen Nygaard)발견함수 호출 스택 프레임을 힙으로 옮길 시 return이후 함수에서 선언된 지역변수가 오래 유지힙으로 옮긴 함수 -> 클래스 생성자함수와 내부의 지역변수가 메모리 해제 전까지 남아있음이것이 객체의 기반이 됌지역변수 -> 인스턴스..
클린아키텍쳐 1부 정리 1장. 설계와 아키텍쳐란?1. 설계와 아키텍쳐의 차이아무런 차이가 없다.저수준의 세부사항과 고수준의 구조는 모두 전체 설계의 구성요소개별로 존재하지 않고 고수준에서 저수준으로 향하는 의사결정의 연속성만이 있음수준? 2. 목표소프트웨어 아키텍쳐의 목표는 필요한 시스템 구축, 유지보수 최소화고객의 요구를 만족시키는데 드는 비용을 최소화, 수명이 다할 때까지 낮게 유지3. 무엇이 잘못되었나?훌륭하고 잘 설계된 코드가 중요하다는 사실을 망각당장 정리되지 않는 코드는 계속 정리되지 않고 생산성은 0으로 수렴지저분한 코드를 작성 시 단기간엔 빠르게, 장기적으로 볼 때만 생산성이 낮아짐빨리 가는 유일한 방법은 제대로 가는 것이럴 때 처음부터 재설계하는 것이 해답이라고 착각자신을 과신한다면 재설계하더라도 원래의 프로젝..
[XCode] break point가 이상하게 뜰때 XCode12로 올리면서 설정을 초기화해서 그런지, 고객사쪽에 셋팅이 안되서 그런지... break point를 걸어서 디버깅을 해보려는데 아래와 같이 뜬다. 왼쪽 콜스택 보면 확실히 그자리가 맞는거 같은데 코드로 안뜨니 전혀 디버깅이 되지 않는다. 이는 XCode위쪽 Debug->Debug Workflow에 Always Show Disassembly에 체크가 되어 있기 때문이다. 이를 한번 더 클릭해서 체크를 해제해주면 위와 같이 원래대로 잘 돌아간다.
[RxSwift] JSON파싱해서 테이블뷰에 뿌리기 이전에 예제에 사용한 JSON을 가지고 파싱해서 테이블뷰에 뿌려보자. 1. JSON 분석 my.api.mockaroo.com/members_with_avatar.json?key=44ce18f0 위 JSON구조를 보면 다음과 같다. {"id":1,"name":"Nalani Ayers","avatar":"https://robohash.org/illumasperioreset.png?size=50x50\u0026set=set1","job":"Staff Accountant IV","age":36} Int타입의 id, String타입의 name, String타입의 avatar, String타입의 job, Int타입의 age다. 2. 데이터 객체 만들기 struct Member: Decodable { let id: ..
[swift] RxSwift Operator(SugarAPI) 2020/09/14 - [공부/swift] - [swift] RxSwift 기본적인 사용법 위 링크에서 사용하던 코드들을 보면, 데이터를 생성하는 쪽이나, 받아오는쪽이나 너무 코드들이 길다. 이런 귀찮은 작업들을 줄여주는 것을 Sugar API라고 한다. 그것들에 대해 알아보자. 1. Just "Hello World"를 보내는 코드를 기존과 같은 방식으로 만들어보자. return Observable.create() { emitter in //Observable 생성 emitter.onNext("Hello World") // Hello World전달 emitter.onCompleted() // 데이터 전달 끝 return Disposables.create() // disposable 생성 후 전달 } 위와..
[swift] RxSwift 기본적인 사용법 저번에 예제가 너무 단순한거 같아서 좀 더 복잡한걸 가지고 만들어보자. 1. 예제 링크 www.youtube.com/watch?v=iHKBNYMWd5I&t=103s 2. 동기/ 비동기 예제 코드는 위에는 타이머 라벨이 돌고 있고 button을 누르면 indicator가 돌아가면서 json을 로드하는 예제다. import UIKit import RxSwift import SwiftyJSON let MEMBER_LIST_URL = "https://my.api.mockaroo.com/members_with_avatar.json?key=44ce18f0" class AsyncJsonViewController: UIViewController { @IBOutlet weak var timerLabel: UILabel!..
[swift] RxCocoa 1. RxCocoa UIKit에 UI다룰때 편한 extention들이 있는 framework 2. 간단히 UITextFiled 값 받아서 처리하기 간단하게 TextField를 추가하고 valid로직을 추가하자. 로그인할때 id에 @랑 .이 존재하는지 판단하는 간단한 valid체크다. 예시라 이렇게 하는거뿐이다. @IBOutlet weak var idField: UITextField! // 스토리보드에서 텍스트필드 가져오기 // 간단한 체크로직 @랑.이 있으면 true반환 private func checkEmailValid(_ email:String) -> Bool { return email.contains("@") && email.contains(".") } 위와같이 선언해주고 textField에서 입력..
[swift] RxSwift 1. Rx란? Reactive X. 홈페이지에는 이렇게 적혀있다. An API for asynchronous programming with observable streams Async한 프로그래밍한다 observe가 가능한 stream들로. 뭔소린지 하나도 모르겠으니 예제랑 같이 봐야겠다. 2. 동기/비동기 예제 출처는 www.youtube.com/watch?v=w5Qmie-GbiA&feature=youtu.be 2.1 동기(Sync) 예제 이미지 로딩과 타이머로 숫자 1씩 증가해서 라벨에 text넣는 것을 같이 해볼 예정 func startTimer() { if #available(iOS 10.0, *) { Timer.scheduledTimer(withTimeInterval: 0.1, repeats: ..