분류 전체보기
-
[Flutter] Flutter Hook에서 WebView가 포함된 비동기 함수를 useEffect에서 선언했을 때 나오는 Zone mismatch 에러에 대해서...Flutter 2024. 9. 3. 18:21
요즘 기존의 Stateful, Stateless, Consumer Widget... 등등을 HookWidget, HookConsumerWidget으로 수정하는 작업을 하고 있는데, 이때 발생한 Zone mismatch 에러에 대해서 정리해보려고 한다. 기존 코드import 'package:project_name/common/const/color.dart';import 'package:desktop_webview_window/desktop_webview_window.dart';import 'package:flutter/material.dart';class WebviewScreen extends StatefulWidget { const WebviewdScreen({super.key}); @overrid..
-
[C++] __attribute__ 에 대해서C++ 2024. 6. 27. 17:15
__attribute__란?단어 그대로 속성을 부여해주는 기능C, C++에서 컴파일러에게 추가정보를 제공하여 코드의 동작을 세밀하게 제어할 수 있도록 하는 기능이다.함수, 변수, 구조체 등에게 사용가능 쉽게 말해서 컴파일러에게 "이것(함수, 변수, 구조체.. ) 좀 이러이러하게 처리해주세요~" 하는 특별한 지시어이다. 주로 사용되는 속성 aligned(n): 변수가 n 바이트 경계에 맞춰서 배치되도록 함packed: 구조체의 멤버 사이에 패딩을 추가하지 않고 연속적으로 배치noreturn: 함수가 반환하지 않음을 알려주는 속성deprecated: 해당 함수나 변수를 더 이상 사용하지 않도록 하는 속성 함수에 사용할 때함수가 반환하지 않음을 컴파일러에게 알려주는 속성인 'noreturn' 의 예시,함수가..
-
[C++] #pragma 란?C++ 2024. 6. 27. 16:20
PragmaC 및 C++ 프로그래밍 언어에서 컴파일러에게 특정 지시사항을 전달하는 데 사용되는 전처리기 지시어 표준화되어 있지 않아서 코드의 안전성 이식성을 보장하기 위해선 #define 등으로 대체하기도 한다.종류1. #pragma once헤더 파일이 여러 번 포함되는 것을 방지하는 pragma#include된 폴더에 같은 헤더가 있으면 무시한다.#pragma once#ifndef MY_HEADER_H#define MY_HEADER_H// 헤더 파일 내용#endif // MY_HEADER_H 2. #pragma pack구조체 멤버 배치를 제어하는 pragma틀정 바이트 경계로 맞추게 한다.메모리 사용을 최적화하거나 특정 메모리 레이아웃을 강제할 때 사용 #pragma pack(push, 1)현재의 메..
-
[C++] Boost MSM(Meta State Machine) 이란?C++ 2024. 5. 24. 11:38
BOOST란?C++ 기반의 템플릿 라이브러리의 집합.오픈소스로 MIT 라이선스와 비슷하게 독자적인 라이선스를 따른다.간단히 얘기해서 C++에서 쓰이는 검증된 오픈 소스 라이브러리의 집합.C++ 개발자는 거의 필수적으로 설치해야됨. #include 이런식으로 헤더 파일을 선언하여 사용 BOOST MSM 이란?Boost.MSM(Meta State Machine) 의 줄임말C++에서 상태 기계를 구현하기 위한 라이브러리.상태 기계(State Machine)이란 다양한 상태와 상태 간의 전이(transition)를 정의하고 관리하는데 사용됨.복잡한 상태 기계의 구현을 쉽게 하게 도와주고 코드의 가독성과 유지보수성을 높혀줌. 쉬운말로 정리하자면, 현실에서 어떤 기계가 있고 그 기계를 C++ 코드로 제어할 때,bo..
-
[Dart] 변수 선언 시 var와 그 외의 타입을 지정하는 경우Flutter 2024. 1. 15. 16:44
Dart의 변수 지정 방식은 크게 2가지가 있다. 첫째로 var name = 'dart'; 와 같이 var로 지정해주는 방식과 둘째로 String name = 'dart'; 와 같이 name의 type을 미리 지정해주고 선언하는 것이다. 물론 var로 해도 dart 컴파일러가 알아서 name이 String 이라는 것을 알고 지정해주기 때문에 상관없다. 그렇다면 언제 var를 쓰고 언제 String같은 타입 지정 방식을 사용하는 것일까? 사실 어떻게 선언하든 코드는 돌아가지만 Dart 공식 스타일가이드의 권장방식은 var는 함수나 메소드 내부의 지역변수를 언선할 때 사용하고 String, double, int, bool 같은 타입 지정은 class 변수나 property를 선언할 때 사용하는 것을 권장한다..
-
[Flutter] private 변수(_)에 대해서...Flutter 2023. 12. 20. 15:10
다른 객체지향 언어를 학습하며 private와 public에 대한 개념이 어느정도 잡혀있다 하더라도 Flutter 개발을 혼자 하다보면 언제 어느 시점에 _를 붙여야할지 고민될 때가 있습니다. 다른 사람들의 오픈소스나 강의의 참고 코드를 봐도 누구는 붙이고 누구는 안붙이고 강의 같은 경우는 편의상 private 선언은 안하는 경우도 많고해서 ... 더 헷갈리더라구요. 또 getter와 setter에 대해서도 학습할 필요를 느꼈구요. 그래서 언제 변수명 앞에 _를 붙여야 할지에 대해 찾아보던 중 잘 정리된 글이 있어 두고두고 보려고 저장하는 김에 공유합니다. https://medium.com/@Toglefritz/embracing-private-variables-in-flutter-5f7fe4983a36
-
[Flutter] Don't invoke 'print' in production code. 뜨는 이유Flutter 2023. 12. 18. 10:54
Andriod Studio로 Flutter 개발을 할 때 변수값 확인을 위해 print를 사용하면 노란 밑줄이 뜨면서 Don't invoke 'print' in production code. (Documentation) Try using a logging framework. 라는 경고문구를 보게 된다. 이는 analysis_options.yaml 파일에 선언되어있는 include: package:flutter_lints/flutter.yaml 패키지 때문에 뜨는 경고문인데, 이 패키지는 Dart & Flutter의 코딩 규칙, 스타일의 일관성 등을 위해 기본으로 설치된 패키지이다. 다시 돌아와서 print 경고문을 번역기로 돌려보면 프로덕션 코드에서 'print'를 호출하지 마세요. (문서) 로깅 프레임..
-
[Flutter] TextFormField 함수 정리Flutter 2023. 11. 14. 16:36
TextFormField는 TextField에 String을 입력 받아 무언가(저장, 전송, 유효성 검사 등)를 할 수 있는 위젯이다. Form(GlobalKey)이나 controller랑 같이쓰게 되니 함수들이 자꾸 헷갈려서 정리해 놓을려고 한다. 이런 느낌으로 선언해서 사용해 준다. initialValue - 초기값 설정 가능 maxLength - 최대 길이 정해주기 decoration - 꾸미기. 이것저것 꾸밀 수 있음. inputFormatters - 입력값을 필터링할 떄 사용. 숫자만 , 정규표현식, 화폐 단위 등등 가능 onChanged - 텍스트를 입력할 때 마다 호출되는 함수. onTap - TextFormField를 Tap하면 호출 onSaved - 입력된 Text에 어떤 행동을 하면 호..