728x90
전체 글
544

[RAM] 디스크 페이징, 스왑

RAM의 용량을 보조하기 위하여 더 대용량인 HHD, SSD를 통해 일부 영역을 메인 메모리 용도로 전용하여 사용하게 되는데 이를 디스크 페이징, 스왑, 스와핑 등 으로 부른다. (가상메모리라고도 한다.) 현재 시중에서 많이 쓰이는 DDR4 SDRAM 2666 Mbps의 메모리 대역폭은 21300 MB/s인데 PCIe를 사용하는 M.2 NVMe방식의 SSD의 대역폭이 최소 1200~2000 MB/s이고 일부는 최대 3000 MB/s 이상을 지원하니 적게는 6배 많게는 10배 이상의 차이가 난다. 윈도우에서 설정된 이 스왑 용량을 확인하거나 수정하는 방법은 간단하다. 설정 > 시스템 > 고급 시스템 설정 > 고급 > 성능-설정 > 고급 위 경로로 들어가면 다음과 같이 가상 메모리 용량을 확인할 수 있다. ..

Temp 2023.02.19

[RAM] RAM이란?

Random Access Memory 사용자가 자유롭게 내용을 읽고 쓰고 지울 수 있는 기억장치로 컴퓨터가 켜지는 순간부터 CPU는 연산을 하고 동작에 필요한 모든 내용이 전원이 유지되는 내내 이 기억장치에 저장된다. 또한 일반적으로 전원이 차단되면 내용이 지워지는 휘발성 기억 장치이다. 물리적 특성에 따라 조금씩 차이가 있는데 SRAM은 전원이 차단되자마자 즉시 데이터가 지워지지만, DRAM은 전원이 차단되자마자 그 즉시 데이터가 지워지는 것은 아니며 대략 5분 정도의 시간이 걸린다고 한다. (그래서 DRAM은 액체 질소등으로 냉각시킬 경우 1주일 정도는 데이터가 저장 가능하다고 한다.) 그 밖에 종류도 다음과 같이있다. STT-MRAM: 자기를 이용하는 특성 때문에 읽기/쓰기 수명이 반영구적이며 비교..

Temp 2023.02.19

[Dart] PublishSubject와 BehaviorSubject

PublishSubject final subject = PublishSubject(); // receive all data and done events (1, 2, 3 모두 출력) subject.stream.listen(print); subject.add(1); subject.add(2); // only receive 3 and done event (3만 출력) subject.stream.listen(print); subject.add(3); subject.close(); 위 코드에서는 간단하게 listener를 print로 지정했으며 모든 값들을 출력해준다. 맨 처음에 지정한 listener기준으로 1, 2, 3을 보내면 차례대로 모두 출력해주고 중간에 지정한 listener는 이후에 3만 보냈으니 3..

Dart & Flutter 2023.02.19

맥북 모델명(부품번호) MGNxxx과 Z12xxxx의 차이

Apple 2020 맥북 에어 13 COUPANG www.coupang.com 쿠팡에 맥북 에어 M1 기준으로 검색해보면 Apple 2020 맥북 에어 13, 실버, M1, 256GB, 16GB, Z127000BL Apple 2020 맥북 에어 13, 실버, M1, 256GB, 8GB, MGN93KH/A ,로 구분하여 순서대로 제품명, 색상, CPU, SSD, Memory, 모델명(부품번호)가 작성되어있다. 그런데 애플 공식 사이트에서 맥북 에어 2020의 부품번호는 다음과 같이 "MGN63xx/A, MGN93xx/A, MGND3xx/A, MGN73xx/A, MGNA3xx/A, MGNE3xx/A" 또는 "MVH22xx/A, MVH42xx/A, MVH52xx/A, MWTJ2xx/A, MWTK2xx/A, M..

Temp 2023.02.17

[Flutter] 빈 공간을 tap했을 때 textfield focus 해제

다음과 같이 unfocus를 사용하라는 solution을 찾았다. FocusScope.of(context).unfocus() 사용법은 간단한데 Scaffold를 GestureDetector로 Wrap하고 onTap에 적용하면 된다. GestureDetector( onTap: () => FocusScope.of(context).unfocus(), child: Scaffold( ... Scaffold 내의 child(Column과 같은)에 GestureDetector로 Wrap하고 적용하면 onTap이 적용되는 영역이 child 영역이므로 당연히 안된다. [Reference] https://github.com/flutter/flutter/issues/51621 https://stackoverflow.com/..

Dart & Flutter 2023.02.16

[Dart] ValueChanged

flutter의 doc에서는 다음과 같이 설명되어있다. Signature for callbacks that report that an underlying value has changed. typedef ValueChanged = void Function(T value); 간단히 말하면 value 값이 변경되면 함수가 실행된다는 의미이다. 아래 코드를 예시로 확인해보면 onToggleCompleted가 ValueChanged로 사용되는 부분이다. return CupertinoScrollbar( child: ListView( children: [ for (final todo in state.filteredTodos) TodoListTile( todo: todo, onToggleCompleted: (isCom..

Dart & Flutter 2023.02.16

[Flutter] Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'List<String>?' in type cast

이 에러는 아마도 dynamic을 String으로 type cast해달라는 말인 것 같다. 예를 들어 다음과 같은 코드가 있다면 keywords 부분에 에러가 뜬다. KeywordCategory _$KeywordCategoryFromJson(Map json) => KeywordCategory( id: json['id'] as String?, category: json['category'] as String, keywords: json['keywords'] as List? ?? [], ); json['keywords']이 List[dynamic]이기 때문인데 이것을 .cast()으로 type cast해주면 해결된다. KeywordCategory _$KeywordCategoryFromJson(Map json..

Dart & Flutter 2023.02.15

[Flutter] BLOC: state management

Stream bloc에 대해 알기 전에 우선 stream을 알아야한다. stream을 처음 접한다면 파이프 안에 물이 흐르는 것을 생각하면 된다. 이때 파이프가 Stream이고 물이 비동기 데이터이다. 다음과 같이 stream을 사용하여 간단한 함수를 작성할 수 있다. Stream countStream(int max) async* { for (int i = 0; i < max; i++) { yield i; } } async*와 yield를 사용하여 지정한 max 파라미터 값만큼 반복해서 stream integer 값이 반환된다. 앞서 비유한 것처럼 마치 물흐르듯이 값이 나오는 것이다. 만약 stream 값들의 합을 반환하고 싶다고 한다면 다음과 같이 async와 await를 사용할 수 있다. Future..

Dart & Flutter 2023.02.07

[Flutter] The number of method references in a .dex file cannot exceed 64K.

"The number of method references in a .dex file cannot exceed 64K." 이 에러는 method가 64K를 넘었을때 나오는 에러이다. 안드로이드 기준 해결 방법은 다음과 같다. 1. build.gradle 수정 android>app>build.gradle defaultConfig { ... multiDexEnabled true } dependencies { ... implementation 'com.android.support:multidex:2.0.1' } defaultconfig에 multiDexEnabled true 를 추가해주고 dependencies에 implementation 'com.android.support:multidex:2.0.1' 를 ..

Dart & Flutter 2023.02.04

[Flutter] setstate 없이 Button 사용

ElevatedButton을 클릭하여 값을 바꿀때마다 setstate를 사용하는 경우가 있다. setstate는 refresh & reload를 해주기 때문에 다른 child widget에도 영향을 준다. 예를 들어서 child widget에 random으로 list에 있는 값을 뽑는 함수가 있다면 이 값이 버튼을 누를때마다 바뀌게 된다. 이러한 문제를 해결하기위해 ValueNotifier, ValueListenableBuilder를 사용할 것이다. 먼저 button의 initialize value 값을 정의하기위해 ValueNotifier를 사용한다. ValueNotifier dropdownValue = ValueNotifier(timeTypeList.first); List timeTypeList 그리..

Dart & Flutter 2023.01.30
728x90