본문 바로가기

분류 전체보기

(45)
[GoRouter] Go vs Push GoRouter는 Flutter의 선언적 라우팅에 널리 사용되는 패키지입니다. Navigator 2.0 API를 기반으로 하며, 사용하기 쉬운 API를 바탕으로 딥 링크 및 기타 일반적인 탐색 시나리오를 지원합니다. GoRouter를 사용할 때는 두 가지 별도의 옵션이 있습니다. go push GoRouter 를 사용한 선언적 Routing 두 개의 하위 경로가 있는 하나의 상위 경로로 구성된 간단한 경로 계층 구조 GoRouter( initialLocation: '/', routes: [ // top-level route GoRoute( path: '/', builder: (context, state) => const HomeScreen(), routes: [ // one sub-route GoRout..
직렬화(Serializable)란 무엇인가? 보통 Java, Json-Serialization 라는 단어들을 사용하여 직렬화를 이야기 하곤 한다. 위키백과에서의 '직렬화'에 대한 설명 컴퓨터 과학 의 데이터 스토리지 문맥에서 데이터 구조 나 오브젝트 상태를 동일하거나 다른 컴퓨터 환경에 저장(이를테면 파일 이나 메모리 버퍼 에서, 또는 네트워크 연결 링크 간 전송)하고 나중에 재구성할 수 있는 포맷으로 변환하는 과정이다. 요약하면 ⇒ 데이터 구조나 Object(객체)를 저장이나 전송에 적합한 다른 데이터 형식으로 변환하는 과정 이러한 과정을 마샬링 이라고도 하는데, 마샬링은 파이썬 표준 라이브러리(Python standard library)에서 "직렬화하다"는 용어와 동일하게 간주되지만, 자바 계열 RFC 2713에서는 동일하게 간주되지 않는다. ..
Flutter 플러터 블로깅 리스트 블로그 기록으로 남겨두어야 한 리스트를 개인저장소에 관리하는 것조차 쉽지 않아 개인 블로그에 작성합니다. 미래의 저에게 더 열심히 노력해야 한다고 이야기 하고 싶네요... 아래의 블로깅 키워드는 계속 변경될수 있습니다. 공개 목록 Unit Test gskinner 플러터에서 자주 쓰이는 Dart 언어 특징들 Dio + Retrofit + JsonSerializable 통한 서버 통신 Flutter Favorite program Dart: isolate 예정 발행 예정 목록 네비게이션 뒤로가기 시점에 무언가 하려면 안드로이드 백버튼 막기 (두번 눌러야 종료) Form을 이용한 로그인 화면 만들기 TextEditingController 를 이용한 텍스트, 커서 제어 Json-Serializeable 의 코드..
2022년 회고 이러한 회고 글은 처음 쓴다. 솔직히 무엇부터 써야 할지 모르겠다. 9월에 퇴사하고 구직 중이 었지만, 좋은 기회가 생겨 구직전에 한번 내가 배워보면서 하고 싶었던 일을 하게 되었다. 잠깐 5월 언저리 까지 이지만, 하고 싶던 일도 하면서, Flutter 개발자로써 조금 부족한 점을 느꼈던 터라 오히려 지금이 기회라고 생각하고 있다. (면접일정이 잡혀 있었으나 취소하게되었습니다. 면접 기회를 주신 각 기업별 담당자님들 감사합니다.) 구직시장에 찬바람이 부는건 맞는거 같지만 그래도 수준높은 수준의 개발자 수요는 줄어 들지 않는것 같다. 사실 이전 직장에서는 제품출시만을 위하여, 그 또한 나를 위한 것이라 생각하고 개발하였지만, 사실 지금 되돌아보면 '아직 그정도 수준으로는 구직시장에서 매력적인 개발 자는 ..
MVP MVC와 유사한 형태를 가지지만, 분명한 차이점이 있다. MVP = Model + View + Presenter Model MVC와 Model과 동일한 개념. 비지니스 모델 개념과 유사하다. 다음의 3가지 개념이 Model 의 핵심이다.(데이터, 상태, 비지니스로직) 만약 당신이 예약 플랫폼 앱을 개발한다면, 예약이 제일 중요한 Model 이 될것이다. 이 예약에는 예약시간 예약하는 사람수 선주문 내역 등등.. 이러한 데이터들을 포함 할것이다. 위의 중 ‘선주문 내역’은 할수도(true), 안할수도(false) 있다. = 상태를 가지고 있다. 위의 중 ‘선주문 내역’은 할지 안할지 물어본다.(비지니스로직) View MVC에서와 마찬가지로 UI 요소를 담당한다. 하지만 이제 Activity와 Fragmen..
Dart : isolate 일반적인 프로그래밍 언어는 순차적으로 코드 실행한다. 그렇게 코드를 실행 중에 처리시간이 긴 작업(특히 UI와 관련된 상황 or 서버통신)을 만나면 프로그램이 기다리는 것처럼 느낄 수도 있다. 이러한 상황을 해결하기 위해, 요청한 작업의 결과를 기다리지 않고 바로 다음 작업으로 넘어감(비동기)으로써 프로그램의 실행을 기다리지 않게끔 한다. 이러한 문제 해결 방식을 비동기 프로그래밍(Asynchronous programming)이라고 한다.⇒ 보통 Sub Thread(서브 쓰레드)를 생성해서 작업을 할당하는 것을 비동기 프로그래밍 이라고 한다. 안드로이드 Kotlin 개발에서는 Coroutine 을 통해 비동기 프로그래밍 (구글 Jetpack에서 적극 권장)Flutter는 Future, Stream 을 통..
JWT 는 만능이 아니다. 이 포스팅은 기본적인 JWT 이해가 있다고 생각하고 글을 작성하였습니다. 우리는 JWT 를 사용할때, JWT의 장점만 생각하고 단점에 대해 크게 고민없이 JWT를 사용하곤 한다. 모든 기술에는 장단점이 존재하며, JWT 에도 단점이 있다. JWT 의 구조 JWT는 HEADER.PAYLOAD.SIGNATURE 이렇게 3가지의 필드가 존재한다. 모든 필드는 JSON으로 표현되며 이러한 JSON 필드들을 각각 Base64 인코딩하고 (.)을 기준으로 하나의 값으로 합친 것이 JWT 이다. JWT 공격 방법 JWT는 Base64로 encoded JSON 값이며, Base64를 Decode하면 누구나 내용을 볼 수 있기 때문에 JWT 안에는 중요한 정보는 없어야 한다. JWT Signature Secret Cra..
Hash • 데이터를 빠르게 저장하고 가져오는 기법 중 하나 해시 함수 (짧게는 그냥 해시)는 임의의 길이를 갖는 임의의 데이터를 고정된 길이의 데이터로 매핑하는 단방향 함수를 말한다. 쉽게 말해, 아무리 큰 숫자를 넣더라도 정해진 크기의 숫자가 나오는 함수이다. 위의 1,3번째 "Hello" 는 hashcode 적용 하더라도 같은 데이터를 추출한다. Hash Table key-value 데이터들의 모음집 ⇒ key 를 이용하여, 데이터를 저장하거나 or 꺼내온다 아래의 예시는 데이터가 Hash Table에 어떻게 저장되는지를 그림으로 표현한다. Key Value John Smith 521-1234 Lisa Smith 521-8976 Sandra Dee 521-9655 Key = (”John Smith”) Key..