· 성취/개선/학습한 내용 🏆 오랜만에 SwiftUI를 학습하였다. SwiftUI는 막상 처음 코드를 구현할 때는 쉬워 보이지만, 구성 요소를 뜯어보면 생각보다 어려운 것들이 많았다. 예를 들자면 Opaque Type이라든지, body 프로퍼티를 some View 형태로 타입을 선언하는 이유라든지, body 프로퍼티에서 변수를 바로 수정할 수 없는 이유가 뭔지 등이 있다. 우선 OpaqueType은 불투명한 타입으로 '역 제네릭 타입'이라고 생각하면 된다. 제네릭 타입은 구현할 때엔 타입을 모르지만 메서드를 호출할 때 타입을 지정하는 특징을 가지고 있다. 이와 반대로 역 제네릭 타입은 구현할 때 타입을 알지만, 사용할 때는 숨겨서 알 수는 것이 불투명한 타입이다. 또 body 프로퍼티를 some View..
· 성취/개선/학습한 내용 🏆 오늘은 크게 두 가지를 공부했다. 알고리즘 부분에 있어서는 델타 탐색과 모듈러 연산을 이용해서 이차원 배열을 다루는 알고리즘을 공부했다. 이 두 가지 이론을 사용하는 알고리즘이 흔히 초급자 절단기로 불리는 '달팽이'인데, 모듈러 연산을 통해 방향을 설정하고 델타 탐색을 활용해서 이차원 배열을 채워서 해결하는 방법이다. 단지 두 가지 이론을 공부한 것만으로도 알고리즘을 바라보는 눈이 달라졌다는 게 체감이 되었고, 바로 문제를 풀 수 있었다. 또 한가지 배운 것은 백앤드 서버가 있는 상태에서 서버로 데이터를 post 하는 것을 주로 공부했다. 이때 가장 의외였던 점은 게시글을 작성한다고 가정할 때, 게시글에 사진을 업로드하는 경우 서버로 먼저 사진을 올리고, 저장된 위치를 받아..
· 성취/개선/학습한 내용 🏆 알고리즘에서는 투 포인터와 그리디를 학습했다. 투 포인터는 두 곳의 위치를 기억하며 연산하는 알고리즘이다. 물론 포인터를 하나만 사용할 때보다 코드적으로 더 복잡할 수 있지만 시간복잡도를 줄일 수 있다는 것을 알게 되었다. 이 투 포인터를 활용하면 회문 같은 문제를 시간초과 없이 풀이도 가능하다. 그리고 토큰이라는 개념을 배웠는데, 로그인을 할 때 보안적인 측면을 위해서 서버에서 제공해주는 인증코드 같은 것이다. 근데 이 토큰은 일정 시간마다 만료가 돼서 갱신을 해주는 게 필요하며, 이 토큰을 어떻게 저장해서 사용할 때마다 어떻게 가져와서 써줄지 등 잘 관리하는 게 중요하다. iOS 같은 경우에는 UserDefaults를 활용해서 간단하게 저장하고 가져와서 사용할 수도 있지..
· 성취/개선/학습한 내용 🏆 RxSwift Stream Alamofire Router Pattern associatedtype API 명세서 실습 · 궁금한 내용과 부족한 내용⁉️🤔 사설 서버를 사용해서 어떤 서비스를 만들어볼까 생각을 하고 있다. 그런데 API를 보니 백앤드는 어떻게 구현하는지, 어떻게 서비스에 맞는 서버를 구현하는지가 궁금해졌다. 여러 용도로 사용할 수 있는 API를 활용해서 어떤 차별화된 서비스를 만들 수 있을까 고민이 된다... · 느낀점 🌟 실제로 서버를 활용해 서비스를 만드는 작업은 꽤나 실무에 가까울 것이라고 생각이 된다. 그렇기에 좀 더 기대가 된다. 다만 회원가입부터 토큰 갱신, 회원 탈퇴 등 여러 가지를 고려해줘야 하니 제대로 된 서비스를 구현하기 위해 생각해야 할..
· 성취/개선/학습한 내용 🏆 rx Single asSingle Single asObservable flatMap vs Map RxSwift Catch · 어려웠던 내용 😵😵💫 flatMap이 도대체 언제 쓰일지 정확하게 모르겠다. 정확하게 말하자면 flatMap을 활용하면 rxSwift를 사용할 때, 데이터 타입을 rx Stream에 사용할 수 있게 바꿔준다는 것을 알지만, map과 정확한 차이점을 모르겠고, 마블 다이어그램으로 봐도 아직 정확하게 이해가 되지 않는다. · 궁금한 내용과 부족한 내용⁉️🤔 Single 이렇게 Result Type을 활용하는 경우 success와 failure를 어떻게 rx로 처리해야 하는지 모르겠다. 이 부분에 대한 학습이 좀 더 필요하다. rx에서 input 구조..
· 성취/개선/학습한 내용 🏆 rx Operator Create share Subscribe vs bind vs drive 알고리즘 이진탐색, logN 재귀함수, 시스템 스택 피보나치수열과 메모이제이션 · 어려웠던 내용 😵😵💫 이진탐색 알고리즘은 알고 있었다. 그런데 이진탐색 알고리즘의 가장 큰 어려운 점은 그 문제를 이진탐색으로 푸는 문제란 걸 파악하기 어렸다는 점과 그리고 어떤 것을 기준으로 이진탐색을 할지 모르겠다는 것이다. · 궁금한 내용과 부족한 내용⁉️🤔 아직 rx에서 subscribe, bind, drive를 언제 사용해야 할지 정확하게 모르겠다. 파이썬에서는 알고리즘을 쉽게 풀 수 있는 메서드들이 많다. 그러나 스위프트에서는 어떻게 해야 할지 모르는 부분이 많다. 그리고 구현을 직접 해야..