본문 바로가기

CS

(143)
Pagination Pagination 많은 데이터를 부분적으로 나눠 불러오는 기술 특징 - 쿼리에 해당되는 모든 데이터를 한번에 다 불러오지 않고 부분적으로 쪼개서 불러온다 - 클라우드 시스템은 데이터 전송에 돈이 든다 - 돈이 안들더라도 수 억개의 데이터를 한번에 보내면 분명 메모리가 터질 것이다 - 메모리가 터지지 않더라도 데이터 전송에 상당히 오랜 시간이 걸릴 것이다 Page Based Pagination - 페이지 기준으로 데이터를 잘라서 요청하는 Pagination이다 - 요청 보낼 때 원하는 데이터 갯수와 몇번째 페이지 가져올지 명시한다 - 페이지 숫자 누르면 다음 페이지로 넘어가는 형태의 UI에서 많이 사용된다 - Pagination 도중 데이터베이스에 데이터 추가되거나 삭제될 경우 저장되는 데이터가 누락되거..
Session, Token, JWT, Access Token, Refresh Token Session 유저의 정보를 데이터베이스에 저장하고 상태를 유지하는 도구 - 세션은 특수한 ID값으로 이루어져 있다 - 세션은 서버에서 생성되며, 클라이언트에서 쿠키를 통해 저장된다 - 클라이언트에서 요청을 보낼 때 세션 ID를 같이 보내면 현재 요청하는 사용자가 누구인지 서버에서 알 수 있다 (요청할 때마다 아이디와 비밀번호 물어볼 필요 없다) - 서버에 데이터베이스가 저장되기 때문에 클라이언트에 사용자 정보를 노출할 위험이 없다 Session 단점 - 세션 ID는 데이터베이스에 저장되기 때문에 요청 있을 때마다 데이터베이스를 확인해야 한다 - 데이터베이스에 세션을 저장해야 하기 때문에 Horizontal Scaling이 어렵다 Token 유저의 정보를 Base64로 인코딩된 String 값에 저장하는..
Tab bar, DefaultTabController, Bottom Navigation Bar DefaultTabController() 사용시 Controller없이 Controller 사용 가능하다 일반적으로 탭바 사용하는 상황에서는 DefaultTabController()로 Controller를 자동으로 구현하는 방식보다는 Controller를 직접 넣어서 제어하는 상황이 훨씬 잦다 tab controller를 직접 구현할 때의 장점 : 좀 더 자유도 높게 tab 구현 가능하다 파란색 블럭은 이전 예제와 같은 스타일링 부분이다 Bottom Navigation Bar
미세먼지 측정 앱 #2 - Hive Hive NoSQL 데이터베이스면서 동시에 인메모리 데이터베이스다 데이터를 파일에 저장하기 때문에 앱의 생명주기와 관계없이 데이터가 유지되지만 앱이 실행되는 순간 파일에 저장돼 있던 모든 데이터가 메모리에 올라온다 -> 빠른 속도 자랑! import 'package:hive_flutter/hive_flutter.dart'; 플러터 하이브를 import 해줘야 더 많은 기능 사용 가능하다 void main() async { await Hive.initFlutter(); main.dart에서 하이브 초기화 Hive box SQL의 테이블처럼 똑같은 타입의 데이터를 모아두는 공간이다 특정 데이터를 저장하고 다루기 위해서는 박스를 열어야 한다 박스를 열 때는 어떤 타입의 데이터를 저장할지, 박스 이름을 지정해준..
SQL, NoSQL, Hive SQL (Structured Query Language) 데이터 구조 정형 데이터를 다루는 데에 최적화되어 있다 데이터 스키마를 미리 정의하고, 데이터의 구조가 고정되어 있다 데이터 일관성 ACID (원자성, 일관성, 고립성, 지속성) 트랜잭션을 지원하여 데이터 일관성을 보장한다 이는 데이터의 무결성을 유지하는 데 도움이 된다 스케일링 수직 스케일링이 주로 사용되며, 서버를 업그레이드하여 성능을 향상시킨다 수평 스케일링은 더 복잡하고 비용이 많이 든다 쿼리 언어 SQL 쿼리 언어를 사용하여 데이터를 조작하며, 다양한 조인 및 집계 작업을 수행할 수 있다 NoSQL (Not Only SQL) 데이터 구조 다양한 데이터 형식을 다룰 수 있으며, 스키마가 유연하다 데이터 구조를 나중에 변경할 수 있다 데이터 ..
HTTP, REST API, RESTful API HTTP (Hypertext Transfer Protocol) 기기 간 통신하는 법에 대한 일종의 약속 웹에서 데이터를 주고받는 데 사용되는 프로토콜이다 클라이언트(일반적으로 브라우저)와 서버 간에 데이터를 요청하고 응답하는 데 사용된다 주로 두 가지 메서드를 사용한다 GET (데이터를 가져오기 위해) POST (데이터를 서버로 보내기 위해) 예를 들어, 웹 페이지를 열면 브라우저가 웹 서버로 GET 요청을 보내고 해당 페이지의 데이터를 수신한다 URL 주소와 URL Query로 이루어짐 Body Header 요청에 대한 데이터 REST API (Representational State Transfer API) HTTP를 사용하는 법에 대한 일종의 약속 REST는 웹 서비스 아키텍처 스타일 중 하나로, ..
미세먼지 측정 앱 #1 - 레이아웃 너무 귀여운 .. 미세먼지 측정 앱 💘 아직 실시간 데이터 받아오기 전이라 임의로 구성해주었다 큰머리 이모지에 통통 튀는 애니메이션 넣어도 좋을 거 같다 (플러터에서 가능한 부분이려나?) 여기서부터 주요 코드만 살짝쿵.. drawer (서랍)을 구성했다 메인이 되는 부분은 앱바로 구성했다 앱바 아래에 CategoryCard와 HourlyCard가 순서대로 위치한다 DrawerHeader와 ListTile로 각각 만들어준다 플러터에 기본적으로 구현되어있는 기능도 이미 세련되어 맘에 든다 조금만 손봐주면 됨.. LayoutBuilder( builder: (context, constraint) { LayoutBuilder를 이용하면 constraint를 사용할 수 있어서 width: constraint.max..
RefreshIndicator RefreshIndicator 아래로 스크롤 가능한 하위 항목이 오버스크롤되면 애니메이션 원형 진행률 표시기가 사라져서 표시된다 스크롤이 끝날 때 표시기가 완전히 불투명해질 만큼 충분히 드래그된 경우 onRefresh 콜백이 호출된다 콜백은 스크롤 가능 항목의 내용을 업데이트한 후 반환되는 Future를 완료할 것으로 예상된다 콜백의 Future가 완료된 후 새로 고침 표시가 사라진다 https://api.flutter.dev/flutter/material/RefreshIndicator-class.html RefreshIndicator class - material library - Dart API A widget that supports the Material "swipe to refresh" idio..

Tiny Star