우선 장고를 설치할 가상환경을 만듭니다. 가상환경을 만들어서 프로젝트별로 독립된 환경을 만들어주면 여러 프로젝트 간의 python 버전 관리와 패키지 충돌 방지를 할 수있습니다.자세한 내용은 아래 Reference에 링크한 글들을 참고해주세요 저는 가상환경을 설치할 수 있는 도구들 중, 아나콘다를 이용하겠습니다. [1] 아나콘다 설치 1. 아나콘다 홈페이지를 들어가서 다운로드 받아주세요 2. bash가 아니라 zsh로 터미널을 쓰고 계신분들은 한 스텝을 더 해주셔야합니다. (맥 카탈리나는 기본이 zsh라고 하네요) zsh shell에서 아나콘다 다운받았는데도,conda -- version을 하면 conda를 찾을 수 없다고 나오기 때문입니다. option + space를 눌러서 Spotlight 검색을 ..
iOS에서 로컬데이터베이스를 쓸 때 보통 SQLite, CoreData, Realm 을 사용합니다. 이중에서 CoreData는 애플이 제공하는 것이고 SQLite와 Realm은 써드파티 라이브러리 입니다. SQLite는 sql문을 써야하는 반면, CoreData와 Realm는 sql문을 안써도 됩니다. CoreData와 Realm은 데이터를 Object로 다루기 때문에 더 편하고 간단하게 느껴집니다. (하지만 2020년에 올라온 SQLite 좋다는 글. 아직 안읽어봄.) https://www.raywenderlich.com/6620276-sqlite-with-swift-tutorial-getting-started SQLite With Swift Tutorial: Getting Started In this..
iOS에서 서버와 통신할때 주로 Alamofire를 많이 씁니다. 얼마전 저의 블로그 첫글을 찾아봤는데, Alamofire와 관련된 내용이더라구요..! 😱 이렇게 Alamofire는 iOS 시작할때 많은 사람들이 기본적으로 쓰는 네트웤 라이브러리라고 할 수 있는 것 같아요 하지만 Alamofire 를 안쓰면 보통 URLSession.shared.dataTask을 통해 이런식으로 코드를 작성합니다. Alamofire의 내부를 살펴보기전에, URLSession과 URLSessionDataTask에 대해서 살펴보려고 합니다 :-) URLSession URLSession 은 특정한 URL를 이용하여 데이터를 다운로드하고 업로드하기 위한 API를 제공합니다. 관련 Delgegate는 URLSessionDelega..
Date 연산을 구현할때, 까먹어서 구글링해서 찾아보고 구현하고... 이렇게 했는데 이제 이렇게 안하려고 SPM에 넣었습니다 :-) 제가 필요해서 구현했던 것을 공유합니다 :-) [1] 특정 Date에서 정보를 얻기 1. Date에서 Year, Month, Day를 구할때 > Date의 year, month, day 프로퍼티를 이용해주세요 2. Date에서 Month Name를 구할때 (ex. January, February, March) > Date의 monthName 프로퍼티를 이용해주세요 [2] 원하는 Date를 만들기 1. year, month, day, (hour, minute, seconds) 를 넣어서 Date를 만들때 DateHelper의 date 함수를 이용해주세요 2. 특정 Date에서..
저는 얼마전에 Unit Test를 돌리면 objc[60376]: Class _TtC4RIBs6Worker is implemented in both ~/Library/Developer/CoreSimulator/Devices/3A6725C3-27B5-4AD4-AE45-74695DC574BD/data/Containers/Bundle/Application/EEED6AE8-0469-42AD-84F2-B470FFB6CFCE/SimpleMemo.app/Frameworks/RIBs.framework/RIBs (0x104851920) and ~/Library/Developer/Xcode/DerivedData/SimpleMemo-gpgaamoyiqvqbnaehzbepweorlts/Build/Products/Debug-ip..
수열님은 의존성 그래프, 우버(RIBs)에서는 의존성 트리 라는 용어를 주로 쓰시던데 같은 용어인 것 같습니다. 의존성 트리란 이렇게 의존 관계이지만 흩어져있는 앱 내의 상태들 혹은 클래스들을 이렇게 예쁜 트리형태로 만들어주는 것을 의미합니다. 이렇게 모든 클래스가 의존성 트리에 속하게 되면 Unit Test도 편하고(Stub을 주입해주기 편하니까) Layering도 확실하게 되어서 각 클래스는 자신이 알아야할 데이터들만 딱 알게 되는 아름다운 그림이 펼쳐집니다. iOS에서 이런 의존성 그래프를 만들어주는 방법(또는 라이브러리)를 정리해보고자 합니다. [1] RIBs 천재 우버가 만든 RIBs....!! (강제) 프로토콜 지향 RIBs을 도입해서 컴파일 에러를 쭉쭉 해결하면서 코딩해가면 아름다운 RIB ..
Dependency Injection의 개념과 장점 뿐만아니라 SOLID의 D인 의존관계 역전 원칙(DIP)을 어떻게 따르게 해줄 수 있을지 설명해주는 아주 좋은 글 입니다 :-) https://medium.com/@jang.wangsu/di-dependency-injection-이란-1b12fdefec4f [DI] Dependency Injection 이란? 디펜던시 인젝션, 의존성 주입에 대해 간단하게 작성해 봅니다. medium.com 그럼 DI를 해주는 세가지 방법을 정리해보겠습니다. [1] Constructor Injection (생성자 주입) [2] Property Injection [3] Method Injection
[1] ReactorKit https://eunjin3786.tistory.com/100 [ReactorKit] ReactorKit 예제 따라하기 ReactorKit으로 단방향 반응형 앱 만들기(전수열) 의 라이브 코딩 예제를 따라해본 것을 정리 -- !! 우선 ReactorKit에 대한 개념은 미디엄 과 슬라이드 에 잘 설명되어있습니다. 간단히 플로우만 보자면 1. View.. eunjin3786.tistory.com [2] RIBs https://github.com/eunjin3786/SimpleMemo-RIBs eunjin3786/SimpleMemo-RIBs SimpleMemo를 RIBs로 바꿔보자 :-). Contribute to eunjin3786/SimpleMemo-RIBs developmen..
[1] Podfile.lock을 여는 명렁어 open podfile.lock [2] cocoapod 버전 업그레이드 아래 명령어로 현재 버전을 확인하고 pod --version 원하는 버전으로 업데이트 시켜주세요 sudo gem install cocoapods -v 1.9.1 ruby 버전이 너무 낮아서 에러가 날 때가 있습니다. 그럴때는 이 블로그를 참고해서 ruby 버전 업 해줍니다. [3] 로컬 캐쉬를 지울때 아래 명령어로 로컬 캐쉬리스트를 출력할 수 있습니다. pod cache list 그리고 아래 명령어로 로컬 캐쉬들을 모두 지울 수 있습니다. pod cache clean --all (www.stackoverflow.com/questions/46428752/how-to-clear-or-clean..
'iOS Test Driven Development by Tutorials' 라는 책으로 스터디를 진행하면서, 샘플프로젝트에 있는 참고할 만한 코드와 테스트 코드를 저의 SPM으로 옮겨오려고 합니다. 개인프로젝트할때 SPM을 써서 더 효율적이고 편하게 개발하기 위함입니다. 이 포스팅은 그 중, extension 관련 코드를 다루고 있습니다. 폴더 구조, 파일 이름, 코드의 출처는 모두 🍑raywenderlich🍑 님이심을 밝힙니다 (저는 테스트코드만 조금씩 바꿨을뿐...!) [1] UITableViewCell + Identifier 첫 extension의 주인공은 UITableviewCell의 identifier입니다...! 1.1 코드작성 Extensions > Identifiers 밑에 다음과 같은 ..
- Total
- Today
- Yesterday
- 플러터 얼럿
- flutter 앱 출시
- 장고 URL querystring
- drf custom error
- Django FCM
- Flutter 로딩
- Flutter Text Gradient
- 장고 Custom Management Command
- Dart Factory
- Django Firebase Cloud Messaging
- Flutter Spacer
- METAL
- cocoapod
- flutter build mode
- Python Type Hint
- flutter dynamic link
- Flutter Clipboard
- DRF APIException
- 플러터 싱글톤
- SerializerMethodField
- ribs
- Sketch 누끼
- flutter deep link
- PencilKit
- 구글 Geocoding API
- Django Heroku Scheduler
- github actions
- ipad multitasking
- Flutter getter setter
- Watch App for iOS App vs Watch App
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |