일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 |
30 | 31 |
- 스위프트
- flutter
- MVVM
- flutter #state # stateful #stateless
- 오늘의 색상
- WidgetTree
- collectionView
- stanford
- 스터디
- 알고리즘
- colorofdays
- CS193p
- Masil
- 새싹후기
- process
- xcode
- 코딩테스트
- 프로젝트회고
- Swift
- 청년취업사관학교후기
- 백준
- xml
- SwiftUI
- UIKit
- 조건문
- 프로그래머스
- UserDefault
- GIT
- IOS
- ImageSlider
- Today
- Total
목록개발 이야기 (93)
개발을 시작하는 이야기
Flutter에서 새로운 프로젝트를 진행하는데, 위치 기반 음성 녹음을 남기는 기능을 구현중에 있다.이전에는 Location을 담당하는 클래스로 관리했었다면 이제는Provider를 만들어서 관리하게 되었다.아직은 Provider에 익숙해지고 있는 과정중에 있기 떄문에 재대로 작성되지 않을수 있으니 누구든 지나가는 길에 문제가 보인다면 알려주시면 감사하겠습니다.일단 지도는 Google Map을, 위치 정보는 Location을 활용하였다. 일댄 새로이 location_provider.dart 파일을 만들어 위치상태 확인을 위한 Provider를 정의해 주었다.final locationProvider = StateNotifierProvider((ref) { return LocationNotifier();})..

이번에 사이드프로젝트를 진행하며 Supabase를 사용할수 있는 좋은 기회가 있었다. 사이드 프로젝트를 완료하고 Supabase를 활용한 개인 프로젝트까지 완료해서 상용화 출시를 했다. 그러면서 사용했던 것들을 정리해서 남겨두려고 적어본다.Supabase란?쉽고 간단하게 백앤드 서버를 구축해서 적은 노력과 비용으로 서비스를 만들 수 있다. PostgreSQL을 기반으로 SQL 쿼리 및 다양한 데이터베이스 작업을 실행할 수 있다. 그리고 인증, 보안, 실시간 업데이트나 스케일링 같은 기능도 제공하고 있다. Supabase는 오픈 소스로 공개되어 있고, 무료부터 일정량 서비스가 제공되고 있다. Firebase와 Supabase많이 알려진 Firebase와 Supabase는 모두 클라우드 기반의 백엔드 서비스..

이번에는 Freezed에 대해서 살펴보도록 하자. 공식 페이지의 가장 상단에 적혀있는 Motivation에서도 알 수 있듯 Freezed는 다양한 기능을 제공하는 Code Generator이다. Freezed의 대표적인 기능은 Json_Serializable과 Deep Copy 기능이있다.Json_Serializable 기능은 네트워크 통신을 하게 되면 json이나 xml 형태의 데이터를 가져오게 되는데, 이러한 형식의 데이터를 바로 사용할 수 없기 때문에 변환과정을 거쳐야 한다. 이러한 과정을 도와주는 역할을 하는것이다.Deep Copy 기능은 main의 MyApp에서 theme를 설정 해준 값을 가져오면서 세세하게 설정을 수정하며 사용했던 방법으로, 아주 유용했다. Freezed는 annotatio..
Hooks의 몇가지 기능에 대해 자세히 알아보도록 하자useStateHooks를 사용하면서 가장 많이 사용했던 기능으로, 변수를 생성하고 구독한다. 변수의 상태가 변하게 되면 자동으로 위젯을 다시 빌드해준다. setState() {}를 보다 쉽고 직관적으로 제공해준다.다음은 간단한 카운트 동작을 하는 기능이다.class Counter extends HookWidget { @override Widget build(BuildContext context) { final counter = useState(0); return GestureDetector( // automatically triggers a rebuild of the Counter widget onTap: () => ..
Flutter_hooks는 React에 있던 것을 Flutter에서 구현한 라이브러리다. 이름에서 알수 있듯 갈고리로 원래 있던 객체에 갈고리를 걸어 같이 수행하는 역할을 한다. 추상화를 통해 중복을 제거하고 위젯간의 코드 생산성을 증가시켜주는데에 큰 역할을 한다. StatelessWidget과 StatefulWidget을 대신하여 HookWidget을 제공해준다. HookWidget을 사용하면 해당 위젯이 가진 Hook을 사용할 수 있다. StatefulWidget의 큰 단점중 하나는 initState나 dispose에서 로직을 재사용하기가 힘들다는 것이다. 예로 AnimationController를 들 수 있다.class Example extends StatefulWidget { final Du..
Provider란?Provider란 Riverpod에서 가장 중요한 부분으로 상태를 캡슐화하는 객체이자 상태의 변화를 감지하는 역할을 하고, Riverpod은 이런 Provide를 용도에 따라 세분화한 상태관리 라이브러리라고 할 수 있다. Provider는 크게 두가지 클래스로 구성되는데, 하나는 ChangeNotifier 클래스 그리고 Provider 클래스가 있다. ChangeNotifier 클래스는 Mixin을 이용하여 상태를 변경하고, 변경된 상태를 Provider 클래스에 알리는 역할을 한다. ChangeNotifier 클래스를 상속받은 클래스를 만들고, 해당 클래스 내부에서 상태를 변경하면 Provider에 상태 변경을 알린다. Provider 클래스는 StateNotifirerProvide..

Flutter에서는 상태관리를 위해 GetX, BLoC, Provider, Riverpod 같은 상태관리 패키지들이 있다. 상태관리라는 단어가 처음에는 어색했는데, 결국 사용자가 앱을 사용하며 변경되는 데이터를 관리하는, ViewModel과 같은 역할을 하는 것이다. 사용자의 로그인 상태, 화면에 표시될 데이터, 선택한 항목 들을 관리하게 되는데, 이를 효율적으로 수행하지 않으면 상태 반영이 재대로 이뤄지지 않거나, 코드가 복잡해지고 유지보수가 어려워지는 문제가 발생할 수 있다. Flutter에서는 변경된 상태를 UI에 반영하기 위해서는 위젯을 다시 빌드해야 한다. createState()로 위젯 트리를 호출하고 상태를 별도의 State에 저장을 한다. 상태를 변경하기 위해서는 initState() 혹은..
얼마전에 면접을 갔는데 분명 알고 있던건데 설명을 할 수 없었다. 긴장했다고 하지만 이정도도 설명을 못했다면 내가 제대로 알고 있지 않았다는 반증이기도 해서 아주 기본부터 명확하게 정리하고 넘어가려고 한다.절차지향 프로그래밍과 객체지향 프로그래밍절차지향 프로그래밍절차지향 프로그래밍은 데이터를 입력받아 순서대로 처리하고 결과를 도출하는 방식으로 대표적인 예로는 C언어가 있다. 개체를 순차적으로 처리하여 프로그램 전체가 유기적으로 연결되어야 한다. 주로 자동차 제조를 예로 드는데, 자동차를 만들때 엔진, 차체, 핸들, 의자, 바퀴 순으로 차례로 조립을 해야만 한다. 서로 분리되어도 안되고 순서가 달라도 안된다. 객체의 호출과 실행이 직접적이기 때문에, 프로그램의 성능이 빠르다. 하지만 핸들을 교체하기 위해서..

Android에서 Google OAuth 등록을 위해 SHA-1을 추출하는 방법 해당 프로젝트의 Android 폴더 위치에서 다음 명력어를 입력keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android 다음과 같이 나오면 성공

사용기술 및 라이브러리Flutterprovider, hooks, riverpod, freezedcache_manager, cached_network_imageSupabase, Realm, Firebase Crashlytics, Analytics, Cloud Messaging, Github, Figma구현한 기능provider와 Riverpod을 활용한 상태관리hooks 를 활용하여 가독성과 재사용성을 확보cache_manager와 cached_network_image를 활용한 데이터 캐시 관리supabase 를 활용한 데이터 관리freezed를 활용하여 모델 관리기존 앱의 Realm 데이터를 Supabase에 이전Local Notification을 활용하여 사용자 개별 알림 설정Google과 Apple ..