All(294)
-
[Dart] Isolate에 대해 알아보자
#1. Dart와 동시성Dart는 기본적으로 싱글 스레드 환경에서 동작합니다. Javascript에 익숙하다면, 여기까지만 들어도 '엥? 그럼 혹시 Dart도 비동기 처리는 Javascript처럼...?'이라는 생각이 들 텐데요. 그렇습니다. Javascript와 마찬가지로 Dart 역시 이벤트 루프를 가지고 있으며, 비동기 처리를 진행하는 방식은 Javascript와 비슷합니다. 이벤트 루프에 대해 자세히 설명되어있는 글들은 여러가지가 있겠지만, Dart의 이벤트 루프에서는 Dart 문서에 기재되어있는 Dart의 동시성 항목을 참고해주세요. 대충 설명하면 Dart로 작성된 프로그램이 실행되면 이벤트들이 저장되는 이벤트 큐가 있고, 우리가 Dart로 작성하지 않아도 이벤트 큐에서 대기하고 있는 이벤트들을..
2024.07.29 -
Pigeon을 사용해서 여러개의 인터페이스를 생성할 때 발생할 수 있는 에러 정리
2024.06.21 - [Programming/Flutter] - Pigeon을 사용하여 Type-safety한 네이티브 코드 작성하기에서 Pigeon을 사용해 코드를 Type-safety한 네이티브 코드를 작성하는 방법에 대해 살펴봤다. 하지만 네이티브 코드가 많아져서 두 개의 플랫폼 코드를 작성한다고 가정하자. 이런 경우 Pigeon을 사용해서 두 개의 인터페이스를 생성하면, 위와같이 FlutterError 클래스를 재선언했다는 에러가 발생하게된다. 이런 경우에는 @ConfigurePigeon 어노테이션의 kotlinOptions에서, errorClassName을 별도로 지정해주면 간단하게 해결할 수 있다. 아래와 같이 KotlinOptions의 인자값에 errorClassName으로 문자열을 넘겨..
2024.06.24 -
Pigeon을 사용하여 Type-safety한 네이티브 코드 작성하기
가끔씩 Flutter를 사용해서 앱을 작성할 때, 성능이 필요한 부분은 네이티브 코드로 작성해야 할 일이 있습니다. 이 내용에 대해서는 Flutter 공식 문서의 Writing custom platform-specific code에서 찾아볼 수 있는데요. 예전에는 MethodChannel을 사용해서 네이티브서 호출할 메서드를 문자열 형태로 넘겨주고, 인자값이 필요할 때는 dynamic 타입으로 정의되어있는 arguments에 필요한 값을 넘겨줬습니다. 플랫폼에서 작성한 네이티브 코드 역시 문자열을 통해 실행할 함수를 결정하고, Any타입(안드로이드 기준)으로 전달된 값들을 형변환하여 작성해야했죠. 이 방법에는 몇가지 문제가 있습니다. 채널명을 정하고 MethodChannel을 설정해야하며, MethodC..
2024.06.21 -
Provider의 ChangeNotifier와 Dispose와 비동기 함수
Flutter를 사용해서 코드를 작성하는 도중, 다음과 같은 에러가 발생했다.{Provider} was used after being disposed. notifyListener()를 호출하는 비동기 함수를 실행한 뒤, 함수 실행이 완료되기 전에 다른 페이지로 이동했기 때문에, dispose()가 호출된 다음 notifyListener()가 호출되어 발생한 에러 문구다. State에는 mounted라는 상태값이 있어서 dispose()가 된 이후에는 setState()를 호출하지 않을 수 있었으나, Provider는 기본적으로 dispose()가 실행됐는지 확인할 방법을 알려주지 않는다. 비동기 함수를 다루다보면 쉽게 만날 수 있는 문제여서 그런지, 에러 문구를 구글링해보니 쉽게 대응 방법을 찾을 수..
2024.06.20 -
[VSCode] 동일한 작업영역을 새 창에 띄우기
VSCode를 사용해서 코드를 작성하다보면, 하나의 프로젝트를 메인 모니터와 서브모니터에 각각 띄워서 모니터를 좀 넓게 쓰고싶을때가 종종 있다. 이런 경우 단순히 새 창(CMD+SHIFT+N)을 띄운 뒤 이미 열려있는 폴더를 다시 열려고하면, 실행중인 VSCode창으로 포커스가 이동하게된다. 기본적으로는 하나의 창을 띄워둔 상태로, 동일한 프로젝트를 여는 것은 막아둔 모양이다. 어떻게하면 좋을까 검색해보니, 비슷한 생각을 하고 있는 사람들이 꽤 있는 모양인지 VSCode에서 문의글(https://github.com/Microsoft/vscode/issues/2686)을 발견할 수 있었다. 방법은 간단했다. CMD+SHIFT+P(윈도우의 경우 CTRL+SHIFT+P)을 입력한 뒤, Workspaces: D..
2024.06.18 -
IRIS CE 키보드 구매 및 조립기
IRIS Rev.7 키보드를 회사용/집용/휴대용으로 각각 세 개를 주문한지도 시간이 꽤 지나, 어느덧 펌웨어를 만들어 다섯개의 레이아웃을 오가며 타이핑하는데도 익숙해졌다. 그렇다고 IRIS 키보드가 없으면 타이핑을 못하는 그런 정도는 아니지만, 아무래도 IRIS 키보드를 사용하다가 다른 키보드를 사용하고 있노라면, 타이핑을 하는 도중 묘하게 흐름이 끊기는 경향이 있다. ‘아… 이게 안되네… 그렇지, 내 키보드가 아니지.’같은 느낌. 아무튼 전에 휴대용으로 만들어놓은 IRIS 키보드는 묘하게 수납이 힘들어서 들고다니지 않게된지 오래였는데, choc 스위치를 사용해서 휴대하기 쉬워진 IRIS CE 키보드가 출시됐다. 구매가 가능하다는 이메일이 오자마자, 바로 주문했다. 혹시나 관세가 들까봐, 스위치와 키캡은..
2024.06.07