본문 바로가기

분류 전체보기

(97)
[UIKit] CompositionalLayout으로 당근마켓 게시글 상세보기 뷰 구현하기 CompositionalLayout으로 셀 중첩 대체하기 최근 셀 중첩 방식의 UI 구성이 데이터 전달 및 delegate 사용 측면에서 오버헤드라고 생각하여 CompositionalLayout으로 당근마켓 게시글 상세보기 뷰를 구현했습니다. 해당 뷰가 CompositionalLayout을 적용할 수 있는 양질의 예시는 아니지만, 연습의 의미에서 한 번 구현해 보았습니다. 완성된 뷰는 아래와 같습니다. 실제 당근마켓 앱과 다른 부분이 존재하니 유의해주세요! 먼저 이 뷰에는, 스크롤이 되는 부분과 스크롤이 되지 않는 부분이 있습니다. 네비게이션바와 가장 아래쪽 뷰는 고정하고, 사이에 있는 영역을 스크롤 가능하게 만들어야 합니다. 그리고 그 안쪽에 페이지컨트롤과 함께 스와이프로 페이징을 할 수 있는 뷰가 존..
[Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (2편 - Services, Routers 구현) https://jazz-the-it.tistory.com/25 [Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (1편 - Foundation Setting) URLSession, Alamofire, Moya 간의 선택 지금껏 iOS 앱 개발을 하면서 서버통신 시에 Moya Library를 주로 사용해 왔습니다. Moya는 Alamofire 라이브러리를 한층 더 Wrapping하여 사용하기 편리하도록 한 라이.. jazz-the-it.tistory.com 지난 편에서는 Alamofire를 Moya처럼 사용하기 위한 기초가 되는 Foundation 폴더의 요소들에 대해서 알아보았습니다. 2편에서는 Router와 BaseService를 채택 또는 상속하여 endPoi..
[Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (1편 - Foundation Setting) URLSession, Alamofire, Moya 간의 선택 지금껏 iOS 앱 개발을 하면서 서버통신 시에 Moya Library를 주로 사용해 왔습니다. Moya는 Alamofire 라이브러리를 한층 더 Wrapping하여 사용하기 편리하도록 한 라이브러리입니다. Wrapping은 사용의 편의성이라는 장점도 제공하지만 URLSession에 접근하기 어렵다는 한계 또한 가지고 있습니다. 최근 이를 느끼고 한 계층 낮은 Alamofire 라이브러리를 사용할지, 아니면 순수 URLSession을 Module화하여 사용할지 고민하다가, 그래도 조금은 Module화가 되어있는 Alamofire 라이브러리를 사용하는 것이 돌발상황 대처에 좋을 것 같아 Alamofire를 사용하기로 결정했습니다. 개인적으로 Moy..
[TIL] #2 - ALU 제작, 백준 2751번(정렬), 이산수학(function, counting, algebras) ALU 만들고 FPGA에 Implement하기 논리설계 과제로 ALU(Arithmetic and logical unit)을 Verilog code로 구현하고 FPGA 보드에 Implement해 보았다. ALU : Control(Operation) Input으로 AND, OR, XOR, ADD와 같은 논리연산의 종류를 정하고, 각 Input에 따른 결과값을 구하는 조합 논리 회로이다. FPGA : Field programmable gate array, 설계 가능한 논리 소자와 프로그래밍이 가능한 내부 회로가 포함된 반도체 소자 - 라고 정의되어 있다. 논리값에서 새로운 논리값을 얻는 것을 논리연산이라 하고, 논리연산의 기본이 되는 소자를 논리소자(logic element)라 한다. AND, OR소자 등이 ..
[TIL] #1 - 스택으로 Infix to Postfix 계산기 만들기(Java) 학교 자료구조 수업 과제로 스택 자료구조를 이용하여 Infix to Prefix 계산기를 만들어 보았다. 오늘 새벽부터 시작해서 먹고 쉬고 자고 하면서 집중한 시간만 치면 한 10시간? 정도 소요된 것 같다. 구현 과정 Infix에서 Postfix로 식을 만들어야 하는 이유는, 컴퓨터가 Operator의 우선순위를 구분하지 못하기 때문에 한 줄로 주어지는 식의 값을 내기 위해서는 Postfix 형태로 전환한 후 계산시켜야 하기 때문이다. 처음에는 왜 스택으로 이러한 기능을 구현하려고 할까 하는 의문이 들었는데, 스택의 peek(), push(), pop()은 순서대로 주어지는 연산자를 비교하여 우선순위를 정해주고, 우선순위에 따라 언제 스택에 쌓아둔 다음 순서대로 꺼내서 postfix에 위치시킬 수 있다..
[TIL] #0 - Today I Learned Clean Architecture를 읽다가 빨리 가는 유일한 방법은 제대로 가는 것이다. -Rober C. Martin 개발자들의 필독서로 유명한 'Clean Architecture'의 추천사에 나오는 내용이다. 본문도 아니고 추천사에 있던 말이 내 마음을 움직였고, 본문 7페이지까지 읽는 시간은 TIL을 시작해야겠다고 결심하기에 충분한 시간이었다. 어느 때보다도 정신없이 바쁜 학기를 보내고 있는 4학년 1학기인데, 한 달여 전 과제를 하던 새벽녘의 시간에 스스로에 대한 의심이 든 적이 있었다. 때아닌 우울에 깊은 고민에 빠졌다. 몇 시간 만에 내린 결론은 시간의 흐름에 말려서 내 스스로를 잊고 있었다는 점이었다. 분명 언제보다도 열심히 살고 있다고 생각하고 있던 시기였지만, 과연 행복한가, 또는 잘 하..
[RxSwift] RxSwift 기본 (1편 - Observable, Observer, Subject) RxSwift: Reactive Programming with Swift RxSwift: Reactive Programming with Swift Leverage the power of RxSwift in your reactive apps! This book is for iOS developers who already feel comfortable with iOS and Swift, and want to dive deep into development with RxSwift. Start with an introduction to the reactive programmi www.raywenderlich.com 전반적으로 위 교재를 참고하여 작성했습니다. 1️⃣ Rx Swift가 뭘까요? https://gi..
[Java] Comparable과 Comparator : 비교를 위한 인터페이스 ✳️ Comparable 인터페이스 Comparable은 자기 자신과 매개변수 객체를 비교할 수 있도록 만들어주는 인터페이스이다. 이 인터페이스를 채택하여 구현하면 compareTo메서드를 통하여 객체간에 비교가 가능해진다. ✳️ Comparable 인터페이스와 Comparator 인터페이스 Comparable과 비슷한 기능을 하는 인터페이스로 Comparator가 있다. 둘의 차이점은 다음과 같다. 1) 구현해야 하는 메서드의 차이 Comparable은 compareTo(T o1)을 구현해야 한다. Comparator는 compare(T o1, T o2)를 구현해야 한다. 매개변수가 2개이다. 2) 사용 방법의 차이 Comparable은 자기 자신과 다른 객체를 비교한다. Comparator는 매개변수..
[Swift] URLSession(1) - 개념 모아보기(URLSession, URLSessionConfiguration, URLSessionTask) ✳️ URLSession 개요 📌 URLSession이란? class URLSession : NSObject An object that coordinates a group of related, network data transfer tasks. 네트워크 데이터 전달 작업에 연관된 일련의 일을 처리하는 그룹 오브젝트이다. URLSession 클래스 및 관련 클래스들은 URLs에 의해 표현되는 엔드포인트에 데이터를 업로드하거나, 다운로드할 수 있도록 하는 API를 제공한다. 또한 URLSession을 통해 iOS 앱이 실행중이지 않을 때에도 백그라운드에서 데이터를 다운로드할 수 있다. URLSessionDelegate나 URLSessionTaskDelegate를 사용하여 일의 완료(task completio..
[Swift 문법] Error Handing(오류처리), try-throw와 do-catch, rethrow, defer ✳️ Error Handling(오류처리) ✨ try-throw / do-catch를 이용한 오류 처리 오류처리란? 프로그램이 실행되는 중에 발생한 오류를 감지하고 각 오류에 알맞은 처리를 부여하여 프로그램을 바른 방향으로 제어하는 것 오류가 발생하는 이유 개발자의 실수, 서버로부터 잘못된 데이터 전달, 데이터에 접근하는 자원이 많을 경우 등등 다양한 이유로 프로그램에 오류가 발생할 수 있다. 오류가 발생했을 때 오류의 유형과 성격에 맞게 처리하여 프로그램이 문제없이 작동할 수 있도록 할 필요가 있다. Swift에서 오류처리의 구조 (1) enum: Error : 발생 가능한 오류를 예상하여 오류를 표현한다 Error 프로토콜을 채택한 열거형으로 주로 표현 (2) try - throw : 오류가 발생함을..