if( 기록 && 꾸준함) return 나의 역사 154

해시맵과 해시 충돌 해결 방법

Hash Map이란 무엇인가? 1. key-value 형태로 데이터를 저장하는 자료구조 2. 하나의 key는 하나의 value 에 맵핑 3. key는 uniqueness를 보장함 그 Key를 해시함수를 통해서 만든다. hash 함수 결과값은 대부분 정수입니다(인덱싱을 위해 만든 값이니 어찌보면 당연) => 만든 이유는 데이터 메모리의 낭비를 줄이기 위해서! GPT야 도와줘🙋‍♂️ 해시맵은 데이터를 저장하고 검색하는 보다 효율적인 방법을 제공하기 위해 만들어졌습니다. 해시맵을 사용하기 전에는 데이터가 배열이나 목록에 저장되는 경우가 많았기 때문에 특히 데이터 양이 증가함에 따라 특정 데이터 조각을 검색하는 데 시간이 많이 걸렸습니다. 해시맵이 해결할 수 있는 특정 문제 중 하나는 중복 데이터 문제입니다. ..

카테고리 없음 2023.03.12

[자료구조] B-tree

B-tree 이진 탐색 트리 (BST) => 모든 노드의 왼쪽 서브 트리는 해당 노드의 값보다 작은 값들만 가지고 모든 노드의 오른쪽 서브트리는 해당 노드의 값보다 큰 값들만 가진다. 자녀 노드는 최대 두 개 까지 가질 수 있음. 그런데 자녀 노드를 3개까지 가지게 하면 어떻게 될까? 라는 궁금증이 생기게 됨 바이너리 서치 방식을 응용해서 3개의 노드가 기준을 가지고 3개로 분류되는 과정이 필요합니다. 제일 좌측의 노드에는 k1보다 작은 값이 들어가야하고, 가장 우측엔 k2보다 큰 값이 그리고 그 사이에는 k1과 k2 사이의 값이 들어가야 합니다. 그러려면 k1과 k2라는 값이 이제 필요해지는데(원래는 그냥 기준 값 2개가 필요했다고 생각하면) 그 k1과 k2라는 값을 부모 노드에 같이 저장할 수 있도록..

블록체인 앱 만들기 (2/n)

메타마스크 앱을 켜고 들어와보았습니다. Account 2 는 제 지갑의 이름이고요 아래 $는 보유한 토큰들의 모든 가치를 USD달러 기준으로 환산한 값이 나오게 됩니다. 여기서 우리는 Send를 할 수 있습니다. send를 하는 과정을 통해, transaction이 어떻게 생겼고 어떻게 보내졌는지 같이 보겠습니다. 일단 토큰이 있는 계정으로 바꾸었습니다 (물론 가짜 돈입니다. Goerli test network라고, 이더리움 네트워크를 테스트용으로 사용할 수 있는 가짜 네트워크입니다. 작동을 똑같이 한다고 보시면 됩니다!) 저의 가짜 이더리움인 GoerliETH를 account 2보내기 위해 'Send' 버튼을 눌렀습니다 그러면 이제 누구한테 보낼 것인지 주소를 입력하는 칸이 나오고요 (계정 간 이동이라..

<블록체인 앱 만들기(1/n)> 간단한 이더리움 토큰 transfer

flutter에는 web3dart라는 라이브러리가 있습니다. 이 라이브러리를 이용해 토큰을 보내는 코드를 짜보면서 하나씩 짚어보도록 하겠습니다 . https://pub.dev/packages/web3dart web3dart | Dart Package Dart library to connect to Ethereum clients. Send transactions and interact with smart contracts! pub.dev web3dart 의 read.me를 보면 import 'package:web3dart/web3dart.dart'; /// [...], you need to specify the url and your client, see example above var ethClient ..

(작성중) BottomTabNav + GoRouter + provider

특정 변화가 있을 때 감지해서 자동으로 라우트를 바꿔주는 기능. Redirect와 Refresh 기능. 특정 URL을 이용할 때, 그 쪽으로 이동시키는 방법. (나중에 웹 링크로 들어왔을 때, 바로 그 스크린으로 가게도 도와줄 것 같음) UserModel 로 로그인 확인하기 riverpod 사용 routerProver 인데 GoRouter 클래스를 리턴해야함. 신기하넹. 그냥 GoRouter 통째로 넣어줌 Routes모두 포함된 버전으로 그러고 Widget에 provider그대로 가져감. 고라우터에서 changeNotifier 혹은 Stream을 이용해서 라우트를 바꿔야함. 프로바이더니까 redirect 로직과 refresh로직을 그래서 Notifier에 새로 만들었음. UserModel logout 메..

개발 |/Flutter 2023.02.11

<블록체인 앱 만들기: 1> 글 계획 및 목차

'Flutter'로 'WEB3'를 위한 '블록체인' 크립토 앱을 개발합니다. 위에 적어놓은 것과 같이, 저는 플러터로 앱을 개발하는 개발자입니다. 현재 이더리움 네트워크와 교류하면서 정보를 얻어오고,또 네트워크에 해시를 작성하고 기록하고 있지만 완벽히 정확한 개념을 짚어보진 못했습니다. 이 글 시리즈를 작성해보면서 이 기회에, 위 문장에 포함된 단어들을 하나씩 풀어가고 설명하면서 또 파생되는 단어들을 하나씩 살펴보려고요. 2주마다 flutter를 통해 개발하면서 지금도 배워가는 것들과 함께, 크립토 씬에서 실제 개발 단계의 코드(trasaction hash)를 만들어 이더리움 네트워크로 전송하는 과정)을 풀어 설명할 것입니다. 아마도 최종 글 묶음은 제가 경험한 개발 일지와 크게 다르지 않을 것 같네요...

빡공 이틀차, flutter

많은 것을 공부하게 되었다. 기본적인거라면, 텍스트나 위젯이 라우팅할때 이상하다면, Scaffold나 BottomTab같은 기본 위젯으로 쌓여있나 확인해봐야하고, constructor 뒤에 이렇게 인스턴스 만들떄 항상 실행시켜주는 함수를 추가할 수 있다. 콜백함수는 아니고 뭐랄까.. 콜포워드함수 같은거랄까. 이게 꼭 필요했는데 좋았다. NotifierProvider할 때, state를 초기화 시켜주는데 이 방법을 사용할 수 있다는 것이 신기했음. 이제 저건 constructor 밑에 class안에 선언된 함수를 적용시킬 수 있다. const MyApp({super.key}){ initFuction() }; Color(0xff 헥스값) 이것도 익숙해졌고 GestureDetector를 doubleTap같은 ..

개발 |/Flutter 2022.12.29