Programming(167)
-
최상위 Navigator와 MaterialApp, 그리고 Navigator.push()와 GetX.to()
FlutterLocalNotification 패키지를 사용해서 푸시 메시지를 터치하면, 특정 페이지로 이동하게끔 구현을 해뒀다. 문제는 사용자가 이미 특정 페이지에 진입해있을 때, 푸시 메시지를 터치하는 경우. 이 경우에는 다른 동작을 처리하게끔 만들어주고 싶었다. navigation_history_observer | Flutter Package 그래서 사용한 것이 바로 NavigationHistoryObserver. 이 친구를 사용하면 MaterialApp이 push(), pop()등을 할 때마다 내부 리스트에 route를 저장해서, 현재 어느 페이지에 위치해있는지 파악할 수 있게 된다. 매번 push()를 호출하기 위해 MaterialPageRoute를 설정하는 것은 귀찮은 일이었기 때문에, 다음과 ..
2022.07.05 -
[Flutter] isolate와 SharedPreferences, 그리고 파일에 대한 접근 2
이전에 isolate에서 SharedPreferences 패키지에 접근 시, 문제가 발생해서 파일에 데이터를 저장한 후 SharedPreferences처럼 사용하는 방법을 기재한 적이 있습니다. 당시 FirebaseMessaging.onBackgroundMessage() 함수에 넘겨준 콜백 함수가 Android에서는 isolate로 동작하고, SharedPreferences 내부 구현은 네이티브로 구현되어있는데, isolate에서 SharedPreferences에 접근이 안되는 원인을 찾지 못해서였죠. 당시에는 path_provider에서 제공하는 getApplicationDocumentsDirectory()함수를 사용해서 처리했고, 당시에는 isolate에서 파일을 읽고 쓰는 걸 확인했었습니다. [Fl..
2022.06.10 -
노션으로 관리하고 있는 Javascript 위클리 뉴스레터 정리 페이지
자바스크립트 위클리 정리 페이지 Javascript A new tool for teams & individuals that blends everyday work apps into one. zerodice0.notion.site 몇 주 전부터 Javascript Weekly를 받아보긴 하는데 바빠서 전부 정독하기에는 시간이 없길래, 대충대충 훑어보고 나중에 좀 천천히 읽기 위해 노션에 글을 정리하고 있습니다. 도움이 될 것 같진 않지만 뜨ㅡ이따에 올려보니 리트윗이 좀 되고 있길래, 혹시 몰라서 블로그에도 공유. ' ㅁ')/ 노션 아이콘은 노티콘에 업로드 된 것을 링크로 사용하고 있습니다. 노션 정리하실 때 아이콘이 필요하다!싶으시면 노티콘을 사용해보시는 것도 좋을 것 같네요. 음식 정리 페이지 물론 위클..
2022.03.23 -
[React] MutableRefObject와 LegacyRef
Input의 onChange에 setState를 할당해서 값이 바뀔때마다 상태값이 변경되도록 설정했더니, 매번 Input에 입력한 값이 변경될 때마다 렌더링이 다시 되는 기염을 토했다. 당연한 얘긴 줄 알고 있었는데 주리님이 보시고 ‘이럴때는 이런 식으로 최적화가 가능해요’라고 말씀해주셔서, react-hook-form, react-final-form, formic같은 애들에 대해 알게됐다. 조금 고민해보다가 ‘엥? 얘는 일단 간단하니까 useRef만 써도 되는거 아닐까?’라는 결론에 도달, Input에 ref를 냅다 꽂아버렸더니 LegacyRef에 MutableRefObject를 할당할 수 없다는 에러가 발생했다. 우선 Input의 ref를 보면 요 녀석은 LegacyRef|undefined를 받게 되..
2022.02.04 -
[Flutter] 백그라운드에서 띄운 푸시 알람 메시지를 터치해서 앱을 실행했을 때, getInitialMessage()가 동작하지 않는다.
꽤 예전에 FirebaseMessaging을 사용해서 전달받은 클라우드 메시지를, FlutterLocalNotifications를 사용해서 푸시 메시지로 띄우는 작업을 했었습니다. 이번에 맞닥뜨린 문제는 FlutterLocalNotifications를 사용해서 화면에 띄운 푸시메시지를 터치해서 앱이 실행됐을 때, FirebaseMassaging에서 제공하는 getInitialMessage()의 실행 결과값이 null로 반환되는 상황입니다. 물론 onMessageOpenedApp() 역시 기대한대로 동작하지 않습니다. private Task getInitialMessage(Map arguments) { return Tasks.call( cachedThreadPool, () -> { if (initialMe..
2022.02.04 -
Onvif 라이브러리 크로스 컴파일 방법 정리
Onvif 라이브러리 크로스 컴파일 방법 정리 이번에는 libOnvif.so 라이브러리 파일을 생성하는 방법에 대해 정리해보고자 합니다. 현대사회를 살아가는 여러분들에게 이미 WSDL이나 SOAP은 거의 잊혀진 기술이다보니, 마치 로스트 테크놀로지같은 느낌일텐데요. 그나마 다행인 점은 검색하면 위키피디아 등에 어떤 기술인지 잘 설명이 되어있다는 점입니다. 물론 크게 도움은 안된다는게 문제지만 말이죠. 이 글에서는 SOAP 프로토콜을 통해 제공되는 Onvif WSDL을 기반으로 C/C++ 코드를 생성해내는 방법과, 오류 대처 요령에 대해 살펴봅니다. 만약 여러분이 Onvif 라이브러리를 빌드해야 할 일이 생겨서 컨플루언스 등에 남겨진 고문서를 찾아본다면 생각보다 쉽게 해결될수도 있지만, 의외로 난항에 부딪..
2022.01.05