Token Login / Auth 구현하기 https://nx006.tistory.com/64 Session VS Token Authentication - feat. JWT 기술 Authentication 앱을 만들 때 회원가입/로그인 기능을 구현해야 할 때가 있습니다. 인증 및 인가된 사용자에게 앱의 기능을 사용할 수 있게 하기 위해서는, 로그인이라는 Authentication(인증) 기능을 거 nx006.tistory.com 이전 글에서 Session 로그인과 Token Login 방식에 대해서 알아봤습니다. 이번 글에서는 어떻게 하면 Flutter에서 Token 로그인 방식을 관리할 수 있는지, 클라이언트 관점에서 구현해보겠습니다. 이 방법은 코드팩토리 님의 Flutter 강의를 듣고서 정리한 글입..
BottomNavigationBar 사용하기 위와 같은 화면을 구성할 때 BottomNavigationBar를 많이 사용하게 됩니다. BottomNavigationBar은 TabBarView와 같이 사용하게 되는데, 사용자의 입력에 따라서 두 위젯의 index가 잘 맞아야 하기 때문에 은근히 구현하기 어려운 부분입니다. 이 글에서 TabBarView와 BottomNavigationBar를 이용해서 위와 같은 UI를 구현해보겠습니다. BottomNavigationBar와 TabBarView 이용해서 화면 전환 구현하기 StatefulWidget 만들기 우선, BottomNavigationBar를 담는 View부터 만들어야 하는데, 이를 TabView라고 하겠습니다. 당연히 사용자의 입력에 따라서 UI가 달..
최근, 한 작은 Flutter 커뮤니티에서, 코드 제너레이션(Code Generation)에 대한 논쟁이 있었습니다. 그래서 이번 글에서는 이 논쟁에서 제시된, 코드 제너레이션을 사용해도 되는지에 대한 갑론을박을 간단히 정리하고, 제가 왜 코드 제너레이션을 쓰기로 결정했는지 작성합니다. 코드 제너레이션이란? 코드 제너레이션(Code Generation), 혹은 코드 젠(Code gen)이나 코드 생성이라고 부르기도 합니다. 말 그대로 코드를 자동으로 생성하는 행위입니다. 그리고 코드를 자동으로 생성해 주는 도구를 Code Generator라고 합니다. 코드 제너레이션은 주로 반복되는 구조의 코드를 자동으로 생성할 때 많이 사용됩니다. 그래서 코드의 복잡성과 반복성을 줄여주고, 개발자가 매 반복되는 구조의..
23년 3분기 회고 항상 한 분기가 끝나면, 회고록을 작성하려고 합니다. 회고록을 작성하는 이유 회고록은 정말 여러 곳에서 작성을 하라고 강조를 하더군요. 그래서 저도 회고록은 놓치지 않고 작성하려고 하고 있습니다. 회고록을 작성하는 이유는 여러가지 이유가 있습니다. 가장 중요한 이유는 과거를 회고하면서 미래를 발전시킬 방법을 찾는 것입니다. 또 시간이 지난 후 내가 이때 무슨 생각을 했고, 어떤 일을 했는지 돌아본다면, 앞으로 무엇을 할 지에 대해서도 더 고민해볼 수 있습니다. 회고록을 작성할 때, KPT 회고법을 사용하면 좋다고 합니다. Keep: 현재 만족하고 있는 부분, 계속 이어나가고 싶은 부분, 잘한 부분을 회고합니다 Problem: 불편했던 부분, 개선이 필요하다고 느끼는 부분을 회고합니다 ..
안녕하세요. 이번 글에서는 여러 정렬 알고리즘의 시간 복잡도를 증명해보겠습니다. 혹시 자료구조를 배우시는 분들이 계시다면, 시험볼 때 참고하시면 좋을 것 같습니다. 이 글은 $\LaTeX$ 문법이 잔뜩 적용되어 있어서, MathJax 스킨이 적용되어야 편하게 보인답니다. 혹시 Tistory 모바일 앱이나, 혹은 모바일 페이지 주소(nx006.tistory.com/m/67)로 접속이 되었을 경우, 인터넷 브라우저(Tistory 앱 X)에서 여기 주소로 다시 접속해주세요: https://nx006.tistory.com/67 정렬 알고리즘의 종류 이번 글은 정렬 알고리즘의 종류에 대해서 다루는 글은 아닙니다. 여기서는 간략하게 소개만 하고 넘어가겠습니다. 가장 대중적으로 많이 사용되는 정렬 알고리즘은 시간 복..
Flutter 소개 자료 B612 동아리에서 모바일 세션으로 참여하고 있는데, 각 세션은 정기 모임 활동에서 세션 발표를 해야 한다. 모바일 세션의 첫 발표는 내가 맡았다. Flutter에 대해서 소개하는 임무를 맡았다. 나름 모바일 세션이고 Flutter를 소개하는 자리인데 심심하게 발표를 시작하고 싶지 않았다. 그래서 Flutter를 소개하는 발표 자료를 Flutter로 만들기로 했다. 발표 자료 기획하기 우선 발표 자료부터 기획해 보자. 다행히 이는 이미 준비가 되어 있다. 지난 2주 동안 정기 모임 과제로 WIL을 작성했기에, 이를 바탕으로 구성하면 된다. 지난 WIL에서의 내용을 압축하면 다음과 같다. Flutter 소개 Cross Platform Framework iOS, Android, We..
연합 DevTalk Seminar 지난 23년 8월 24일, 홍익대학교에 소속된 7개의 학회가 연합하여 연합 데브톡 세미나를 개최했습니다. 그리고 그중에는 제가 운영하는 B612도 포함되어 있습니다. 이전에 B612의 운영진 한 분을 연합 데브톡의 TF 팀으로 출장 보냈는데, 굉장히 잘 준비해주셨답니다. 신청폼이 나오자 마자 바로 신청했답니다. 그렇게 출장보내고 유기해놓고 있었는데, 중간중간 준비되고 있는 소식을 들으면서 굉장히 체계적으로 잘 준비되고 있는 게 느껴져서 많이 기대했습니다. 홍문관 지하 가람홀에서 진행되었습니다. 약 3-4백명 규모의 인원을 수용할 수 있는 시설인데, 사실 생각보다 많은 사람들이 모이지는 않아서 아쉬웠습니다. 약 80-100여 명 정도 모인 것 같았는데, 개강을 바로 앞둔 ..
Debounce와 Throttle 디바운스(Debounce)와 쓰로틀(Throttle)은 둘 다 함수의 연속적인 실행을 제한하는 목적을 갖고서 설계되었습니다. 그 중 Debounce는, 특정 기간 동안 함수의 실행을 모두 취소하고, 마지막 실행만 수행합니다. 반대로 Throttle은 함수 실행 후 특정 기간 동안 추가적인 함수의 재실행을 모두 취소합니다. 이 둘은 매우 비슷해보이지만 서로 다른 특성을 갖고 있는, 정해진 시간 동안 얼마나 많은 함수의 실행을 허가할 것인가에 대한 테크닉입니다. Debounce와 Throttle은 특히 Future와 Stream에 관련된 함수에서 자주 볼 수 있습니다. API 요청 시에 Debounce와 Throttle이 특히 유용하게 사용됩니다. 불필요하게 API 요청이 ..