[Flutter] RiverPod - Loading 상태 처리하기(with Lottie & Skeleton)
·
Flutter
Progress 사용 이유프로젝트(풀밭)에서 네트워크 통신을 하거나 혹은 시간이 걸리는 기능을 실행할 때 언제 기능이 종료되는지 모르기 때문에 만약 아무런 반응도 보여주지 않으면 사용자는 애플리케이션이 렉이 걸렸거나 혹은 기능 실행이 안되고 있다고 판단할 것이다. 그러면 유저의 입장에서는 좋지 않은 경험을 받기에 어플에 대한 안좋은 감정을 갖게 된다.그렇다면 시간이 소요되는 작업을 할 때 어떠한 반응을 보여줘야 하냐면 우리가 흔히 볼 수 있는 로딩창 즉, progress를 보여주면 된다.Progress 화면Fluttter에는 CircularProgressIndicator가 존재한다.이것을 사용하여 Data가 Loading 상황일때 CircularProgressIndicator를 보여주면 유저에게 현재 기..
[Computer Science] 컴퓨터구조 & 운영체제 기술면접 준비
·
Computer Science/기타
지난 시간동안 컴퓨터 공학을 공부하면서 컴퓨터 구조와 운영체제에 대해서 학습을 하고 정리를 해봤다.이번에는 기술 면접에서 자주 나오는 질문들을 공부해보자.복습하고 공부한 내용을 면접에서 어떻게 말할 것인지 생각해보려고 한다.프로세스란내가 아는 프로세스는 실행 중인 프로그램의 운영체제의 실행 단위이다.보조기억장치(SSD, HDD)에 저장된 프로그램이 실행되면 생성된다.프로세스는 부여받은 PCB(Process Control Block)을 갖고 CPU에 할당되는 순서가 정해지고 상태를 가지며메모리 상에 코드, 데이터, 스택, 힙 영역을 포함하는 독립적인 메모리 공간을 할당 받는다.이때 영역들은 연속적으로 할당되어 있지 않고 불연속적으로 할당한다.스레드란스레드는 위에서 이야기 하였던 프로세스의 작업 단위이다.일..
[Flutter] RiverPod - Data 상태 관리하기
·
Flutter
Onboarding 화면지난 번에는 Riverpod의 공식문서를 보며 Riverpod 예제에 대해서 공부했다.이번에는 직접 구현하면서 개인 프로젝트에 적용했다.프로젝트의 OnboardingView를 보면 아래와 같이 기획을 하였다.왼쪽은 화면(UI)이고 오른쪽은 화면은 각 위젯(widget)에 대한 기능 설명이다.시작하기 버튼은 course와 campus에 초기값이 아닌 다른 값이 들어가면 활성화되면서 색이 변경된다.Data State Management(campus)그러면 나는 저번에 배운 Data State management Tool인 Riverpod을 사용하여 Data 상태관리를 해보겠다.final campusProvider = StateNotifierProvider( (ref) => Campu..
[Flutter] Riverpod 학습 - Performing side effects & Passing arguments to your requests
·
Flutter
Performing side effects이전 글에서는 provider로 네트워크 요청 하는 방법을 학습하였다.GET HTTP 요청만 사용해서 개발을 하였는데 POST 요청과 같은 side-effect가 발생하는 경우는 어떻게 처리할지 학습해보겠습니다.일반적으로 업데이트 요청은 로컬 캐시를 업데이트 해야 한다.로컬 캐시도 업데이트하여 UI에 새 상태가 반영되도록 하는 것이 일반적이다.conusmer내에서 provider의 상태(state)를 어떻게 업데이트 할 수 있는지 알아보자.Notifier 정의하기간단한 GET API 요청을 통해 알아보자.아래 코드는 할일 목록을 가져오는 코드이다.@riverpodFuture> todoList(Ref ref) async { // 네트워크 요청을 시뮬레이션합니다. ..
[Flutter] RiverPod - provider 알아보기(with 네트워크 요청)
·
Flutter
[Flutter] RiverPod 학습지난 시간에 데이터 상태관리(Data State Management)에 대해 학습을 해봤다.선언형 UI와 명령형 UI의 차이점, Flutter에서 데이터 상태관리하는 방법, 데이터 상태 관리 도구(Data State management Tool)를 사용하는 이유 등그러면 이제 RiverPod에 대해 학습해보자.RiverPod의 공식문서를 보면 필수 사항등이 있다.첫 번째 provider/네트워크 요청 만들기부가 작업 수행(Performing side effects)요청에 인자 전달하기웹소켓 및 동기 실행요청 결합하기캐시 지우기 및 상태 폐기(disposal)에 반응하기providers의 빠른 초기화(Eager initialization)providers 테스트하기로깅..
[JAVA] List 알아보기
·
알고리즘/List
List Interface와 구현체간의 비교일단 List를 알기전 Array를 알아보자.Array(배열)정의동일한 타입의 여러 원소를 선형 집합으로 관리하는 정적 데이터 구조선형: 데이터가 순차적으로 저장되는 구조, 순서가 있는 데이터의 집합정적: 생성과 동시에 크기가 고정되어 늘릴 수 없다.메모리상에 일렬로 저장되어 Random Access가 가능하다.Random Access: 데이터의 위치(인덱스)를 알고 있다면 한 번에 접근이 가능한 특성메소드특징원소에 접근하고 변경하는 것은 빠르다.중간 원소를 추가/삭제시 연속적인 상태를 유지하기 위해 원소를 옮기는 작업이 필요하다.List동일한 타입의 여러 원소를 선형 집합으로 관리하는 동적 데이터 구조동적: 원소가 추가/삭제됨에 따라 크기가 변경 될 수 있음...
[Computer Science] [운영체제] 파일 시스템
·
Computer Science/Operating System
운영체제에 파일 시스템에서 학습해보자. 파일과 디렉터리를 관리해주는 시스템.파일과 디렉터리(폴더)를 관리하는 커널의 한 부분다양한 파일 시스템이있고,여러파일시스템을동시에사용할수있음파일보조기억장치의 의미있는 정보의 집합구성요소이름실행하기 위한 정보부가정보(속성, 메타데이터)유형 (확장자)크기생성날짜마지막 접근 날짜마지막 수정 날짜생성자소유자위치파일(+ 디렉터리) 접근 단위: 블록(block)운영체제가 파일의 접근하는 단위(읽고 쓰기)디렉터리계층적인 구조루트디렉터리 / 최상위폴더절대경로와 상대경로많은 운영체제는 디렉터리를 파일과 동일하게 간주한다(중요함)디렉터리 구성 정보파일이름위치를유추할수있는정보파일 시스템의 종류에 따라 (파일 속성)디렉터리 테이블 파일 유형파일 시스템이 만들어지기까지파일 시스템파일과 디..
[Computer Science] [운영체제] 가상 메모리 관리
·
Computer Science/Operating System
스와핑(swapping)프로세스를 보조기억장치의 일부 영역(스왑 영역)으로 쫓아내고 당장 필요한 프로세스를 적재하는 메모리 관리 기법스와핑을 이용하면 좋은점은 현재 메모리의 크기보다 더 많은 프로세스를 적재할 수 있는 장점이 있다. 아래 이미지를 보면 프로세스 B를 보조기억장치로 스왑 아웃 시킨다. 당장 필요하지 않는 프로세스를 보조기억장치로 스왑 아웃할 수 있다.스왑 아웃프로세스를 보조기억장치의 일부 영역으로 쫓아내는 것스왑 인(swap-in)스왑 아웃된 프로세스를 메모리에 적재하는 것스왑 영역스왑 아웃된 프로세스가 적재되는 보조기억장치 영역운영채제가 메모리를 관리하는 방법연속 메모리 할당보통은 생각하는 프로세스가 메모리에 적재되는 방법이 아래와 같지 않을까? 라고 생각한다.(연속 메모리 할당) 아니다..
[코딩테스트] [16472] 고냥이
·
알고리즘/Two Pointer
[16472] 고냥이시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율1 초512 MB63432645189640.085%문제고양이는 너무 귀엽다. 사람들은 고양이를 너무 귀여워했고, 결국 고양이와 더욱 가까워지고 싶어 고양이와의 소통을 위한 고양이 말 번역기를 발명하기로 했다. 이 번역기는 사람의 언어를 고양이의 언어로, 고양이의 언어를 사람의 언어로 바꾸어 주는 희대의 발명품이 될 것이다.현재 고양이말 번역기의 베타버전이 나왔다. 그러나 이 베타버전은 완전 엉망진창이다. 베타버전의 번역기는 문자열을 주면 그 중에서 최대 N개의 종류의 알파벳을 가진 연속된 문자열밖에 인식하지 못한다. 굉장히 별로지만 그나마 이게 최선이라고 사람들은 생각했다. 그리고 문자열이 주어졌을 때 이 번역기가 인식할 수 있는 ..
[Flutter] RiverPod 학습 - State management
·
Flutter
RiverPod 학습 이유오늘은 개인 프로젝트에서 RiverPod을 사용하여 데이터 상태관리하는 방법을 학습하려고 한다.왜 많은 데이터 상태 관리하는 방법 중 RiverPod인가? 거창한 이유는 없다.나는 프레임워크(SwiftUI , Flutter) 개발을 하였지만 데이터 상태관리에 대한 식견이 부족하다.그래서 솔직히 다른 개발자분들이 말씀하시는 “어떤 상태관리 패키지(혹은 라이브러리)는 무엇이 좋다.” 혹은 “무엇이 별로다” 이야기는 내가 경험해봐야 이해할 수 있다고 생각한다.그리고 회사마다 자격요건에 상태관리 툴도 모두 다르다. 하지만 데이터 상태관리 툴 하나를 깊게 공부하였다면 다른 상태관리를 쉽게 학습할 수 있을 것이다.데이터 상태관리 툴RiverPod을 바로 학습하기전에 Data State To..
[회고록] 2024년
·
기타/후기
2024년 회고록오늘은 새해로 지난 2024년을 한 번 되돌아 보려고 한다.2024년은 정말 많은 변화가 일어났던 한 해이다. 간단하게 요약 해보자2024년 요약23년 12월, AppleDeveloperAcademy(아카데미)를 수료했다.24년 1월, 아카데미에서 진행했던 프로젝트들 중 iWaver의 대표로서 유료 계약 및 최적화를 준비했다.24년 2월, iWaver 유료 판매를 준비하며 여러 프로젝트(Toucher, 피플 교육 강사, 몽글)를 준비했다.24년 3월, 몽글, 취업 준비(이력서 제출), 학교를 진행했다.24년 4월, 100% 서류 탈락을 경험하고 몽글을 진행하며 학교 중간고사를 진행했다.24년 5월, 몽글을 개발하고 리딩하며, 개발자에 더 다가가기 위해 여러 공모전(DND 해커톤, 국토·교..
[Computer Science] [운영체제] 동기화와 교착상태
·
Computer Science/Operating System
동기화와 교착상태동기화동시다발적으로 실행되는 프로세스와 스레드의 실행 순서와 자원의 일관성을 보장해야 한다.운영체제가 제공하는 동기화의 의미실행 순서 제어: 프로세스를 올바른 순서로 실행하기 (실행 순서 제어를 위한 동기화)Book.txt가 없다면 파일을 만들고 값을 쓰고 저장하는 프로세스Book.txt를 읽어들이는 프로세스여기서 2번은 Book.txt가 있다는 조건이 만족되어야만 실행 가능즉, 1 → 2 순으로 실행해야만 올바르게 실행된다.상호 배제: 동시에 접근해서는 안되는 자원에 하나만 접근하기2만원 입금 프로세스잔액을 읽어들인다잔액에 2만원을 더한다더한 값을 저장한다  5만원 입금 프로세스잔액을 읽어들인다잔액에 5만원을 더한다더한 값을 저장한다  문제의 근본적인 발생 원인동시에 접근해서는 안되는 ..
[코딩테스트] [17609] 회문 & [15831] 준표의 조약돌
·
알고리즘/Two Pointer
[17609] 회문시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율1 초 (추가 시간 없음)512 MB315558988663429.094%문제회문(回文) 또는 팰린드롬(palindrome)은 앞 뒤 방향으로 볼 때 같은 순서의 문자로 구성된 문자열을 말한다. 예를 들어 ‘abba’ ‘kayak’, ‘reviver’, ‘madam’은 모두 회문이다. 만일 그 자체는 회문이 아니지만 한 문자를 삭제하여 회문으로 만들 수 있는 문자열이라면 우리는 이런 문자열을 “유사회문”(pseudo palindrome)이라고 부른다. 예를 들어 ‘summuus’는 5번째나 혹은 6번째 문자 ‘u’를 제거하여 ‘summus’인 회문이 되므로 유사회문이다.여러분은 제시된 문자열을 분석하여 그것이 그 자체로 회문인지, 또는..
[Computer Science] [운영체제] CPU 스케줄링
·
Computer Science/Operating System
프로세스 우선순위와 스케줄링 큐스케줄링여러개의 프로세스가 동시다발적으로 실행된다.모든 프로세스는 실행하기 위해 자원이 필요하다.운영체제가 공정하고 합리적으로 자원을 배분하는 방법이 스케줄링이다.모든 프로세스(및 스레드)는 실행되기 위해 CPU를 필요로 한다여러 프로세스들이 CPU를 나눠 사용하는 방법?정해진 시간 동안 돌아가면서 CPU를 사용하는 것이 가장 좋지 않을까?아니다. 프로세스마다 우선 순위가 다르다프로세스 우선순위는 PCB에 명시 된다.CPU 우선순위가 높은 프로세스는 더 많이 할당받아 실행이 자중하다.PRI, NI : 낮을수록 높은 우선순위, PRI는 운영체제, NI는 사용자우선순위의 차이를 보이는 대표적인 프로세스 유형I/O bound process, CPU bound processI/O ..
[코딩테스트] [11728] 배열 합치기
·
알고리즘/Two Pointer
[11728] 배열 합치기시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율1.5 초256 MB46953224241492846.484%문제정렬되어있는 두 배열 A와 B가 주어진다. 두 배열을 합친 다음 정렬해서 출력하는 프로그램을 작성하시오.입력첫째줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000)둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거나 같은 정수이다.출력첫째 줄에 두 배열을 합친 후 정렬한 결과를 출력한다.문제풀이이 문제는 정렬된 두 배열을 주고 하나의 배열로 합치는데 다시 정렬하면 된다.처음에는 TreeSet을 사용하여 문제를 풀었지만 중복을 제거하면 안된다.0. 입력받..