본문 바로가기
흠야 모바일 개발자한테 회사가 기대하는 퍼포먼스 최대치는 어느정도일까. 그건 어떤 기술로 집약될수있나.. 소프트스킬을 제외하고..생각하려고 했는데.. 결국 회사가 말하는 '좋은 개발자'가 되기위해선 소프트스킬을 무조건 챙겨야겠지. 그래야 회사라는 공동체 안에서 잘 협업하고 그들의 니즈를 잘 맞출 수 있을거니까.. 근데 그냥 단순하게 모바일 개발자라는 직업만 보면 어떤걸 잘해야 잘한다고 생각할 수 있을까?궁금하다3년 뒤 쯤엔 알 수 있으려나 2024. 9. 19.
BM 리스트 보호되어 있는 글 입니다. 2024. 9. 19.
앱 아이디어 리스트 보호되어 있는 글 입니다. 2024. 9. 19.
폴더 구조를 계속 변경하는중... ~ing 앱의 폴더구조란, 앱이 어떤 아키텍쳐 혹은 디자인 패턴을 표방하고 있는지 가장 잘 볼 수 있는 곳이라고 생각한다. 처음에 내 폴더 구조는 이랬다.앱 폴더 구조lib/│├── core/ # 비즈니스 로직, 데이터 관리│ ├── models/ # 데이터 모델 클래스들│ ├── services/ # 외부 API, 데이터베이스 서비스│├── ui/ # 화면 관련 코드│ ├── view/ # 화면 UI 구성│ ├── widgets/ # 공통으로 사용하는 위젯│ ├── viewModel/ # UI와 비즈니스.. 2024. 9. 19.
플러터 프로젝트에서 DI 주입은 어떻게 이루어지는가 이번 프로젝트(리를 가디언) 에서는 DI(Dependency Injection)를 사용해 더 효율적으로 프로젝트를 관리하려고 한다. Firebase가 시그널링 서버로서 작동하지 않을 경우를 대비하고, 앱이 커질 때도 유연하게 대처하기 위해서다. 먼저 간단한 용어설명을 하겠다DI란?DI는 객체들이 서로 의존하지 않고, 외부에서 필요한 객체를 주입하는 방식이다.이를 통해 코드의 결합도를 낮추고, 변경이나 확장이 용이해진다.DI를 사용하는 이유확장성: 앱이 커지거나 다른 서비스로 교체될 때, 코드를 쉽게 수정할 수 있다.테스트 용이성: 의존성 주입으로 Mock 객체를 사용해 테스트를 독립적으로 진행할 수 있다.유지보수성: 객체 간의 강한 결합을 피하고, 코드를 모듈화하여 관리하기 쉽다.흠... 다음과 같은 설.. 2024. 9. 19.
fromMap을 사용해 map데이터 쉽게 사용하기 내가 쓰는 모델 중에 fromMap 이라는 코드가 있다. Map 데이터를 객체로 변환하는데, 이게 무슨말일까? fromMap은 Map형식의 데이터를 객체로 바꿔주는 함수다. Map은 key와 value로 데이터를 저장하는 방식인데, fromMap은 이 데이터를 클래스에 맞게 변환해준다.예를 들어, 서버에서 받은 아이의 정보가 아래처럼 있다면:{ 'id': '123', 'name': '아이 이름', 'photoUrl': 'https://photo.com' }fromMap을 사용해 이 데이터를 Child라는 객체로 변환하고, 그 후에는 child.name, child.id 로 접근해 데이터를 쉽게 사용할 수 있게 된다. 코드를 보며 사용해보자.- models/child.dart class Child { f.. 2024. 9. 19.
1. webRTC 기초 정리 WebRTC의 주요 개념을 쉽게 설명하자면Peer-to-Peer 연결: 두 디바이스가 서버 없이 직접 통신할 수 있게 해준다. 음성, 영상, 데이터 등을 주고받을 수 있다.ICE (Interactive Connectivity Establishment): 최적의 경로를 찾기 위한 프로토콜이다. 디바이스가 서로 연결될 수 있도록 공유 가능한 네트워크 경로를 탐색한다.SDP (Session Description Protocol): 두 디바이스가 어떤 미디어를 주고받을지 약속하는 정보다. 연결 세부 정보(코덱, 포트 등)를 담고 있다.Signaling (시그널링): 서로 연결하기 전에 SDP와 ICE 정보를 교환하는 단계다. WebRTC는 시그널링 서버를 통해 이 데이터를 주고받는다.STUN/TURN 서버: 네.. 2024. 9. 19.
Provider 기초개념정리 + 예제 Provider란?Provider는 상태 관리를 쉽게 하게 해준다. 여러 화면에서 같은 상태를 공유할 수 있고, 상태가 변경되면 UI를 자동으로 업데이트한다.class Counter with ChangeNotifier { int _count = 0; int get count => _count; void increment() { _count++; notifyListeners(); // 상태 변경 알림 }}ChangeNotifier상태가 변경될 때 UI에 알림을 보내 다시 그리도록 한다.class MyModel extends ChangeNotifier { int value = 0; void increment() { value++; notifyListeners(); // U.. 2024. 9. 18.
1. 앱에 어울리는 애니메이션 구현하기 <Lottie편> 버튼을 클릭하고 해당 버튼이 동작함으로써 나 동작하고 있다 ! 라고 유저한테 알려줄 수 있는 방법이 무엇일까 고민해보니 애니메이션! 이 있었습니다. 이 경우 뿐만이 아니라 앱 내에서 애니메이션을 잘 사용하면 사용자 경험을 좋게 만들어 줄 수 있죠~ 애니메이션을 가장 쉽게 구현할 수 있는 방법 중 하나는 Lottie를 이용하는 것인데요. 한 번 천천히 알아보도록 합시다  제가 Lottie로 구현한 화면은 이렇습니다 로띠에는 굉장히 다양한 애니메이션이 있습니다. (+무료로 사용 가능하죠)https://lottiefiles.com/kr/ 무료 로티 애니메이션, 모션 그래픽을 위한 모든 플러그인과 도구를 한 곳에 - 로티파일즈/LottieFi로티파일즈/LottieFiles는 오픈소스 애니메이션 포맷 로티를 제공.. 2024. 9. 16.
Little Guardian 앱 목표 기간 스프린트 구성 현재 작업이 완료 된 아이들을 포함하여 기간을 조정함.후에 달라질 수도 있지만, 다음과 같은 틀에 벗어나지 않도록 함완성 목표 기간 ~ 10/21스프린트 기준모델 설계와 Firebase 연동 완료핵심 ViewModel 및 UI 설계 완료WebRTC 소리 듣기 기능과 Firebase 연동Push 알림(FCM) 연동 및 최종 테스트테스트 및 디버깅 완료앱 배포 준비 및 최종 마무리스프린트별 목표첫 번째 스프린트: 모델 및 Firebase 연동 완료모델 설계 완료 (Guardian, Child 모델)Firebase 연동 (Firestore 컬렉션 설계 및 기본 CRUD 기능 구현)FirebaseManager 초기 설정 및 데이터 연동 테스트두 번째 스프린트: ViewModel 및 UI 설계, Firebase .. 2024. 9. 16.
mainColor를 const로 고정해주고 싶었을 뿐인데 Colors.pink[100]을 mainColor로 설정해주려고하다가 다음과 같은 문구를 발견했다.엥 왜지? 이미 있는 값을 상수값으로 넣어주는건데 왜.라고 생각했지만  MaterialColor 객체에서 인덱싱[]을 통해 색상을 가져오는 과정은 런타임에 하는 것이었다. 왜냐면 일반적으로 인덱싱은 해당 데이터의 구조나 상태에 따라 달라지기 때문에 런타임에 결정이 되는 것이라고.... 이미 const로 정의된 List가 아닌 이상,, 런타임에 정의된다고 한다....  그래서 해결방법은, 런타임 상수인 final로 값을 결정해주거나 const로 쓸거면 이렇게 지정해주기이다. 2024. 8. 30.
핫 리로드는 정말 좋은거구나 스유를 UIkit 보다 좋아하는 이유는 딱 하나였다.내가 만든 화면이 옆에 시뮬레이터로 바로 로드돼서 떴다반대로 UIkit으로 만들 때면 항상 run버튼을 누르고 시뮬레이터를 돌려줘야했다. 앱을 만들면 만들수록 기다리는 시간도 길어지고, 컴포넌트 하나 만들때마다 시뮬레이터 돌리기가 매우 불편하고 괴로웠던 기억이 있다. 🤢 그런데 플러터는 핫 리로드라는 기능 덕에 일단 시뮬레이터를 켜놓고 컨트롤 + s 만 누르면 바로바로 반영이 된다. 흐흐흐 나는 코드만 우다다닥 치는 것 보다 화면이 그려지는게 눈에 보여야 더 집중이 잘 된다.내 코드가 반영되는게 눈에 바로 보이니까 그런듯 하다. 아주아주 특별한 기능 아닌가? 내 코드로 화면 구성이 변화되는걸 바로바로 볼 수 있다니! ~.~(심지어 스유 프리뷰보다 빠르.. 2024. 8. 28.