주제선정시간이 조금 지났지만 한때 앱의 오류가 발생했던 적이 있다.분명 유저가 채팅방을 생성하면 한번만 생성되어야 되는데 짧은 시간에 여러번 터치하게 되면 여러개의 방이 생기는 문제가 발생했다.물론 유저가 악의적으로 해당 사항을 지속했다면 문제가 됐을것이다.특히 내 도메인이 금융쪽이였으면 엄청난 큰 문제가 발생했을 것이다.항상 만들면서 기능만 개발하기에 급급했던 내 잘못이였다.그래서 이걸 해결하고자 했을때 여러 방법이 있었다.처음에 내가 생각했던 방법은 bool 값을 넣어서 try catch final 로 진입자체를 막는방법 이였지만조금 검색하다보니 Debounce 와 Throttle 이라는 라이브러리가 존재하는것 알았고 해당 라이브러리를 사용해서 고쳤다.그래서 이번에는 해당 개념에 대해서 조금 더 자세..
들어가기2025.02.07 - [Flutter] - Flutter 신용카드 예제 Like 카카오페이 1편 Flutter 신용카드 예제 Like 카카오페이 1편주제 선정 [Flutter] 그라데이션으로 만들어보는 광원 효과빛이 반사되는 효과는 어떻게 만들까?velog.io처음에 위의 글을 보고 애니메이션이 기깔난다고 생각을 하고있었다.문득 카카오페이를 들sj-d.tistory.com 해당 글에 이어서 작성하는 내용이다.우선 이전편에서 카드 생성, 토스카드 모양으로 그리기, 기타 애니메이션 등을 했었다. 이제 DB에 저장된 데이터를 받아와서 하단에서 카드를 보여주고, 상단영역에서는 카드 상세정보를 보여주면서유저의 제스쳐에 따라서 카드의 각도가 변하면서 광원효과를 넣어보려고 한다. 카드 목록 보여주기우선 카드..
도입 배경회사 프로젝트에 언어 선택에 따라서 해당 다국어가 적용되는 방식으로 기본적인 다국어 처리는 적용되어있는 상태이다.하지만 이번에 새로 오픈한 기능중에 유저들끼리 대화를 주고받고 관광지를 추천하게 되는 경우가 있는데 유저들이 한국어로 주고받아도 영어, 앞으로 추가될 일본어, 중국어 등의 사용자가 해당 대화를 번역해서 보여주기를 원하는 상황이였다.크게 Google Translate API, Papago API 이렇게 두개의 선택지가 있었는데, 현재 회사에서는 Naver Cloud Platform 을 사용하고 있기 때문에 관리적인 입장에서 봤을때 Papago 가 더 효율적이라고 판단되어 해당 서비스를 이용해보려고 한다.해당 블로그에서 작성되는 내용은 별도 예제를 위해 만들어서 진행할 예정이다. Pap..
주제 선정 [Flutter] 그라데이션으로 만들어보는 광원 효과빛이 반사되는 효과는 어떻게 만들까?velog.io처음에 위의 글을 보고 애니메이션이 기깔난다고 생각을 하고있었다.문득 카카오페이를 들어가봤는데 밑에 내가 추가한 카드들의 이미지가 뜨고 해당 카드들을 스크롤해서 카드의 정보를 확인할 수 있었다.여기서 또 프론트 병이 생겨 궁금하다 이쁘다 만들어보고싶다 심심한데 이거 두개를 접목시켜서 만들어볼까? 라는 생각에서 시작되었다.사실 이맛에 눈에 보이는 개발을 한다. 생각되는 방식과 이번 구현을 통한 나의 목표는1. 새로운 카드 추가 기능(로컬 스트리지로 기기별 저장)2. 리버팟 사용 연습3. 카드 광원효과 적용4. 카드 스크롤을 통해서 변경된 카드정보 확인(상단 흰색 부분에 카드정보 넣을 예정)5...
오늘은 @override 같이 자주 사용하지만 정확하게 어떻게 작동하는지 모르고 넘어가는 annotation 에 대해서 알아보려고 한다. Annotation 이란?사전적 의미로는 주석 이라는 뜻을 가지지만플러터에서 annotation 은 특별할 의미, 기능을 수행한다.프로그램 코드의 일부가 아닌 프로그램에 관한 데이터를 제공하고, 코드에 정보를 추가하는 정형화된 방법이다.annotation 을 사용하면 코드가 깔끔해지고 재사용이 가능해진다.컴파일러에게 코드 검증 정보 제공개발 도구 빌드/배포 관련 정보 제공런타임에 특정 기능 실행을 위한 정보 제공 Annotation의 종료@overridehttps://api.flutter.dev/flutter/dart-core/override-constant.html ..
적용 배경외주를 진행했던 프로젝트에서 앱이 설치된 테블릿은 24시간 켜져있어야 되는데 어느 순간 꺼진다는 문제가 발생했다.처음에 현장에 갔을때 다음 이미지와 같이 오류창이 나오길 기대했었는데 해당 오류창도 안나오고 그냥 꺼져있는 화면이 나를 반기고있었다. 테블릿에 대한 테스트 환경은 마련되었으니까 결과적으로 필요한건 앱이 왜 꺼지는가? 로그를 분석하기위해 Firebase 에서 제공하는 Crashlytics 를 적용해서 꺼지는 이유를 알아보려고 한다. Crashlytics 는 뭘까?https://firebase.google.com/docs/crashlytics?hl=ko Firebase CrashlyticsApple, Android, Flutter, Unity를 위한 강력한 비정상 종료 보고 솔루션으로 앱..
맨 처음 iOS를 공부하면서 가장 어렵게 느껴졌던 개념이 비동기 프로그래밍이었다.내용만 듣고 이걸 왜 쓰는 거지?라는 의문이 들어서 대충 흘려보냈다가 프로젝트에 들어가면서 그 중요성에 대해서 알게 되었다.그렇게 비동기 프로그래밍의 중요성을 알게 되었고 Flutter를 시작하면서도 다행히 iOS와 크게 다른 점이 없어서 적응할 수 있었지만,Flutter, Dart에 특화된 비동기 프로그래밍에 대해서는 자세히 알지 못해서 공부하면서 알아보려고 한다. 비동기 프로그래밍 이란?비동기앞에서 행하여진 사상(事象)이나 연산이 완료되었다는 신호를 받고 비로소 특정한 사상이나 연상이 시작되는 방식. [네이버 국어사전]즉 비동기 프로그래밍이란 특정 코드의 처리가 완료되기 전, 처리하는 도중에도 아래로 계속 내려가며 수행하..
이전에 면접 준비를 하면서 CS 공부를 할 때 SOLID에 대해서 작성했던 적이 있다.https://sj-d.tistory.com/49 객체지향 설계의 5원칙 SOLIDIntro면접때 보면 자격요건 혹은 우대사항에서 제일많이 본 말이 있다.객체지향과 SOLID 라는 단어이다.이번에는 객체지향의 5가지 설계원칙이라고 불리는 SOLID에 대해서 알아보자 What is SOLID? SRP(sj-d.tistory.com 그때 당시에는 SOLID를 공부하면서도 Swift만 적용하고 현재는 내용을 많이 잃고 지내면서 SOLID원칙을 크게 생각하지 않는 것 같다. 근데 Dart도 객체지향 언어인데 이걸 모르면 안되겠다 라는 생각이 들어 다시 공부하면서 알아보려고 한다. 간단하게 요약하면 SOLID는 객체 지향 프로..
원래는 Bloc에 대해서 자세하게 작성하고 싶었지만, Bloc에 대한 내용을 잘 정리하기엔 아직 초보 플러터 개발자의 입장에서 조금 더 내용의 구체화가 필요하다고 생각이 들었다.그래서 Bloc 공식문서 예제에 자주 등장하는 Equtable 이라는 라이브러리가 나오는데 이 라이브러리에 대해서 어떤 역할을 하고 왜 사용하는게 좋은지이 부분도 알고 넘어가면 좋을 것 같아서 자세하게 공부해봤다.1. Equatable이란?Equatable은 Dart와 Flutter에서 객체 간의 값 비교를 쉽게 구현할 수 있도록 도와주는 패키지이다.그냥 값들을 비교하면 되는거 아니야? 라고 생각할 수 있지만 전혀 아니다.Dart에서는 기본적으로 두 객체를 비교할 때 참조 동등성(reference equality)를 사용한다.한마..
모바일 앱 개발자로서 가장 기본이 되는 것은 앱의 생명주기(App LifeCycle)에 대한 이해라고 생각한다. iOS 개발을 시작하면서 이 개념을 처음 접하게 되었다.하지만 Flutter 개발자로 전향한 후에는 이 중요한 개념을 다소 소홀히 했던 것 같다. Flutter의 직관적인 생명주기 덕분에 깊이 있게 들여다보지 않았다.특히 Android의 생명주기는 iOS와는 또 다른 특성을 가지고 있는데, 이 부분에 대해서는 깊이 있는 학습이 부족했다.이런 이해 부족은 실제 프로젝트에서 문제로 이어졌다. 앱이 백그라운드로 전환될 때 Android에서는 동영상의 사운드가 계속 재생되는 반면, iOS에서는 중단되는 현상이 발생했다.이러한 경험을 통해 플랫폼별 생명주기의 차이점을 제대로 이해하는 것이 얼마나 중요한..