Android, Activity Lifecycle
·
개발 일지
최근에 웹 개발을 하다가 앱 개발로 넘어가면서 Flutter를 다루게 되었는데, Native 코드를 개발하여 Method, Event channel, BLE 등을 다루려면 Kotlin, Swift에 대한 이해도가 있어야 한다는 생각에 안드로이드부터 공부를 시작했다.안드로이드는 주로 사진에 나와있는 것처럼 주요 7단계의 메서드가 있으며, onCreate, onStart, onResume, onPause, onStop, onRestart, onDestroy 등이 있다. 각각 나타내는 바를 이름으로 잘 나타내주고 있지만, 정확한 동작에 대한 이해까지는 속을 봐야 이해할 수 있다.onCreate()onCreate은 생성이라는 의미처럼 처음 Activity를 생성할 때 가장 먼저 호출되는 필수적인 메서드이다. 여..
Dart, Extension으로 역할 확장하기
·
개발 일지
공식 문서를 보면서 Dart 문법을 살펴보는데 기존 클래스에 추가 기능을 작성하는 방법을 알게되었다. Extension이라는 확장 문법인데 다른 라이브러리에 의존할 필요도 없고, 자체적으로 필요한 기존 클래스에 필요한 기능을 추가하여 확장성을 넓히는 방법이다.Extension이란 ?Extension은 앞에서 말했듯, 원본 클래스에 소스 코드를 수정하거나 상속할 필요 없이 새로운 메서드, 프로퍼티, 연산자를 추가할 수 있는 방법이다. 지금은 이해할 필요 없이 사용해 보면서 알아가보면 "아 이런 거구나" 하고 바로 느낌이 올 것이다.기본적인 작성 방법작성 방법은 정말로 간단하다. 확장하고자 하는 기능에 대한 파악을 위해 확장명을 작성하고 대상 타입을 작성해 주면 된다. 예를 들어 확장명은 Text Field..
Flutter / 안드로이드 스튜디오 빌드 에러 [Gradlew]
·
개발 일지
안드로이드 스튜디오로 Flutter 개발을 하는 중에 빌드 오류가 발생했다. 이 오류는 여러번 겪었는데 그때마다 번거롭게 해결을 하고는 했습니다. 이 오류의 원인으로는 명확한데 보통 빌드 중에 취소하거나 강제 종료를 하는 경우에 많이 발생했다. 즉, 빌드 중이였던 android/.gradle 빌드 정보가 깨지게 되는 것입니다.원인 제공원인 제공으로는 회사에서 받은 그램 ( Window ) 환경에서 에뮬레이터를 통해 빌드를 하려고 했는데, 아무래도 Window 환경에서는 에뮬레이터 성능이 좋지 않아 컴퓨터가 멈추게 되었습니다. 다른 동작도 모두 멈춰버렸기 때문에 강제 종료를 할 수 밖에 없었는데 이 이유로 빌드 중이던 프로젝트의 gradle 정보가 깨지게 되었습니다.해결 방법[ Window 기준 ]이 문제..
Flutter/Dart, 선언 키워드
·
개발 일지
웹 개발만 했다 보니, Flutter로 앱 개발을 하면서 기반 언어인 Dart의 키워드가 많이 헷갈린다. 그래서 키워드에 대해 한번 더 살펴보면서 내가 제대로 이해했는지 그리고 어떤 식으로 응용이 가능할 지 한번 살펴보려고 한다.선언 키워드선언 키워드는 값 자체가 아니라 값이 어떻게 생성되고, 어디에 속하고, 언제까지 유지되고, 변경이 가능한지를 정의하는 것.var초기 값을 기준으로 타입을 한번 추론해서 고정하는 선언 키워드이다. 즉, 컴파일러에게 타입 추론을 맡기는 것이다.var controller = AudioController();이렇게 초기 값을 AudioController() 인스턴스로 선언한다면 controller의 타입은 AudioController 타입으로 추론된다.주의할 점사용하다보니, ..
Express + Multer 미들웨어, 음원 PCM 추출하기
·
개발 일지
이전에 자료 조사를 통해 알게된 주파수, FFT를 활용해서 음원 파일로부터 PCM을 추출하고 Visualizer 의 높이 ( Bar ) 가 되는 Magnitudes 값들로 변환하는 API를 만들고 있습니다. 현재 개발 중인 서버의 역할은 클라이언트에 Visualizer 정보와 Canvas에 그리기 위해 필요한 프레임 별 Magnitudes 값, 업로드된 오디오 스트리밍을 담당하고 있습니다. 제공하는 것까진 문제 없이 제 기능을 하고 있는데, 한가지 부족한 점은 파일 업로드를 하려면 직접 파일을 추가하고 파일의 경로를 직접 하드 코딩으로 명시하여 음원 파일 변환에 필요한 함수를 호출하고 그걸 실행까지 해야 한다는 점이였습니다.파일을 쉽게 추가하려면?지금까지 서버가 실행되는 시점마다 추출 함수를 호출하여 직..
Flutter, SNS 화면과 데이터의 책임을 나누자
·
개발 일지
Flutter SNS 게시글 정보들은 Feed ( 홈 ), 내 프로필 혹은 상대방 프로필, 좋아요를 표시한 게시글 등 다양한 상황에서 사용됩니다. 이 과정에서 각 화면 별로 데이터를 불러오고 불러온 시점에 따라 동기화가 어려운 부분도 있고 좋아요 처리, 댓글 처리에 있어 지속적인 API 호출로 서버에 부담이 가는 문제도 있었습니다. 이러한 문제를 어떻게 해결하였는 지에 대해 다뤄볼 생각입니다.게시글 정보 동기화 이슈SNS를 개발하면서 게시글 정보를 다루다 보면 좋아요, 댓글 수 업데이트, 편집, 삭제 등 다양한 이벤트가 발생합니다. 문제는 하나의 게시글이 피드, 상세 페이지, 프로필 등 여러 화면에 동시에 등장한다는 점이였습니다. 이로 인해 특정 게시글에 상태 변화가 발생했을 때, 각 페이지에서 관리하고..
Flutter 그리고 Visualizer를 곁들인 #자료조사
·
개발 일지
이번에 새로 회사에 들어가면서 Flutter 앱 개발을 하게 되었습니다. 하지만, 원래 웹 개발자였던 저로서는 Flutter, Dart에 대한 연구와 실무에 적응할 수 있는 능력이 있어야 한다고 생각이 들었습니다. 따라서 회사에서 주로 운용해야 하는 기술과 지식을 얻어야 한다는 판단이 들었고 추후에 구현이 필요한 visualizer와 Painter 기술을 활용해 화면에 그려내는 작업을 해 보려고 합니다.Visualizer를 구현하기 위해서 필요한 건 ..우선 visualizer를 구현하려면 음원 파일과 PCM, FFT에 대한 이해가 필요합니다. 화면에 시각화 한다는 것은 어떠한 데이터를 가지고 보여주기 위해 시각화하려는 데이터에 대한 원리를 조사하고 변환 혹은 가공하여 화면에 그려내는 작업을 해야 합니다..
Flutter, Riverpod 배우기
·
개발 일지
최근 Flutter 기반의 SNS 앱 서비스를 개발하는 중에 Post, Profile, Session 정보 등을 하나에 모아두고 가져다 쓸 수 있도록 처리하면서 Riverpod의 Provider, Consumer 등을 사용하여 관리하는 방법을 사용하였는데 이 라이브러리에 대해 제대로 알고 가면 더 좋을 거 같아서 이렇게 글을 작성해 보게 되었다.Riverpod이란?Riverpod이란 기존 Provider의 문제점을 개선하고 앱 개발 시 필요한 상태를 관리하는 라이브러리입니다. Provider에서 겪은 제한되던 것을 해소하기 위해 처음부터 다시 설계되어 만들어진 라이브러리이며 위젯 트리 독립성을 가집니다. 복잡한 상태도 쉽게 관리할 수 있고 더 나은 개발 경험을 제공합니다. 개인적으로 아주 강력하고 유연한..