Dart Timer에 대해 알아보자 Timer는 특정 시간 동안의 경과 시간을 측정할 수 있는 도구입니다. Timer를 사용하면 애플리케이션 내에서 이벤트를 예약하고 Timer가 만료될 때 경고를 표시할 수 있습니다. Timer를 사용하려면 먼저 앱에 Timer 패키지를 추가해야 합니다. 패키지를 추가한 후 다음 코드를 사용하여 타이머를 생성할 수 있습니다 // dart:async import 필요 함 import 'dart:async' Timer(Duration(seconds: 10), () { // 타이머가 만료된 후 수행할 작업 }); 위 코드는 10초 후에 Timer를 시작합니다. Timer가 만료되면 지정된 작업이 수행됩니다. Flutter Timer는 다양한 방법으로 사용자 정의할 수 있습니다..
Hero 위젯에 대해 알아보자 Flutter Hero 위젯은 두 화면 사이의 애니메이션 전환을 쉽게 제공하는 위젯입니다. 일반적으로 이미지와 같은 요소를 다른 화면으로 전환하는 데 사용됩니다. Hero 위젯은 전환을 적용할 위젯을 감싸고 태그가 할당됩니다. 전환을 끝낼 위젯에서는 동일한 태그가 사용됩니다. 사용자가 첫 번째 화면의 위젯을 탭 하면 두 번째 화면으로 이동하고 동일한 태그가 있는 위젯 사이에 전환 애니메이션이 적용됩니다. Hero 위젯을 사용하려면 두 개의 매개 변수(태그, 자식 위젯)가 필요합니다. 태그는 전환을 적용해야 하는 위젯을 식별하는 데 사용되며 자식 위젯은 전환을 적용해야하는 위젯입니다. 예를 들어, GridView를 사용하여 이미지를 표시하는 경우 이미지는 동일한 태그를 가진 ..
Stack 위젯에 대해 알아보자 Flutter Stack은 위젯을 겹쳐서 보여줄 수 있는, 쌓는 방식의 위젯입니다. Stack은 가장 큰 child의 사이즈를 따라가며, 가장 먼저 들어온 객체가 가장 아래에 쌓이는 구조입니다. Stack 위젯 역시 children에 나열한 여러 위젯을 순서대로 겹치게 합니다. children 프로퍼티에 정의한 순서대로 쌓이기 때문에, 가장 먼저 정의한 자식 위젯이 가장 아래에 놓입니다. Stack 위젯을 사용하여 이미지 위에 텍스트를 겹치게 하거나, 여러 위젯을 겹쳐서 보여줄 수 있습니다. Flutter에서 대표적으로 위젯을 순서대로 배치할 수 있는 클래스는 Column과 Row입니다. Column과 Row는 각각 세로, 가로 방향 순서대로 위젯들을 배치합니다. 두 클래..
PercentIndicator (ProgressBar) 만들기 percent_indicator 패키지를 이용하면 원형 또는 선형의 프로그래스바를 쉽게 만들 수 있습니다. CircularPercentIndicator는 원형 프로그래스바를, LinearPercentIndicator는 선형 프로그래스바를 나타냅니다. 두 위젯 모두 percent, backgroundColor, progressColor, lineHeight, animation, animationDuration.. 등과 같은 다양한 속성을 사용자가 정의할 수 있습니다. 1. percent_indicator 패키지 추가 1) 터미널 창에서 아래 명령 실행 (아래 이미지 A 참조) 2) Pub Get 버튼 클릭 (아래 이미지 B 참조) 3) 추가된 ..
소수점 처리 하기 소수점 자릿수 고정 숫자 계산을 위해서는 toStringAsFixed() 함수를 사용합니다. 이 함수를 사용하면 소수점 이하의 자릿수를 고정할 수 있습니다. 예를 들어, double 타입인 amount 변수를 소수점 둘째 자리까지 고정하고 싶다면 다음과 같이 작성합니다. // 소수점 이하자리 고정 String result = amount.toStringAsFixed(2); 소수점 올림 처리를 하기 위해서는 ceil() 함수를 사용합니다. 이 함수를 사용하면 소수점 이하의 숫자를 무조건 올림 합니다. 예를 들어, double 타입인 amount 변수를 소수점 첫째 자리에서 올림 하고 싶다면 다음과 같이 작성합니다. // 올림 double result = amount.ceilToDouble..
멀티바이트 문자열을 유니코드 문자열로 변경하는 방법 1. MultiByteToWideChar() 함수를 사용하는 방법. 이 함수는 Windows API의 일부이며, 다음과 같은 매개 변수를 사용합니다. - CodePage: 변환할 멀티바이트 문자열의 코드 페이지 - dwFlags: 변환 방법을 지정 (일반적으로 0으로 설정) - lpMultiByteStr: 변환할 멀티바이트 문자열의 포인터 - cchMultiByte: 변환할 멀티바이트 문자열의 길이 (-1로 설정하면 자동으로 계산됨) - lpWideCharStr: 변환된 유니코드 문자열을 저장할 버퍼의 포인터 - cchWideChar: 변환된 유니코드 문자열의 버퍼 길이 (MultiByteToWideChar 함수는 변환된 문자열의 길이를 반환함) voi..
싱글턴 패턴 동기화 처리 싱글턴 패턴은 애플리케이션에서 특정 클래스의 인스턴스가 오직 하나만 만들어지도록 보장하는 디자인 패턴입니다. 이 패턴을 사용하면 클래스의 인스턴스를 전역 변수로 사용할 때와 같은 편리함을 누릴 수 있으면서도, 전역 변수와 같은 문제점 (모듈성 파괴 등)을 회피할 수 있습니다. C++11 이전까지는 정적 변수를 초기화하는 순서가 보장되지 않았기 때문에 멀티스레딩 환경에서는 동기화 문제가 발생할 수 있었습니다. 그러나 C++11부터는 이 문제가 해결되었으므로, C++11 이상에서는 정적 멤버 변수를 사용하는 것만으로도 스레드 안전성을 보장할 수 있습니다. 다음은 싱글턴 패턴을 사용하여 클래스의 인스턴스를 만드는 예시입니다. 이 예시에서는 정적 멤버 변수를 사용하여 인스턴스를 만들고,..
Spacer 이용하기 Flutter에서 Spacer는 유연한 빈 공간을 만들기 위해 사용되는 위젯입니다. 이 위젯을 Row나 Column과 같은 Flex container 안에 배치하면, 이전 위젯과 다음 위젯 사이에 자동으로 공간이 생성됩니다. Spacer는 생성자에 flex 값을 지정할 수 있습니다. 이 값은 Spacer와 다른 위젯 사이의 비율을 나타냅니다. 예를 들어, Spacer(flex: 2)는 Spacer(flex: 1)과 다른 위젯 사이의 비율을 2:1로 만듭니다. Row( children: [ Container( width: 100, height: 100, color: Colors.redAccent, ), Spacer(flex: 2,), Container( width: 100, heigh..
InkWell 버튼 만들기 주로 화면 배치등 UI작업에 사용되는 Container widget을 Ink, InkWell widget으로 감싸 안으면 (~~ 그렇게 우리... 이 밤의 끝을 잡고...ㅎ 불현듯 옛날옛적 노래가사가...) 모서리를 둥글게(UI), 그리고 사용자의 이벤트를 받을 수 있는 버튼을 만들 수 있습니다. (물결(리플) 효과는 기본이요, 마우스 포인터가 버튼 위에 있을 때 색깔 변화 등 여러 옵션을 줄 수 있음.) - hoverColor : 버튼 위에 마우스 포인터 있을 때의 색깔 - borderRadius : 모서리 둥글하기, 값이 높아질수록 동글동글해짐 - onTap() : 버튼이 클릭되었을 때 처리 함수(여기에 어떤 작업을 할지 코딩해 줌.) 아래 전체 소스 및 실행영상입니다. 오..
1. MFC에서 문자열 작성 후 파일에 저장 시 한글 깨져있을 때 체크 사항 - setlocale(LC_ALL, "Korean"), setlocale(LC_ALL, ""): 시스템 설정에 따름 - 프로그램 시작 시등 필요한 곳에 한 번 실행 2. MFC 현재 시간 구하기 - CTime time = CTime::GetCurrentTime(); -> time.Format(_T("%Y_%m_%d_%H.log"))); ( OK ) - CTime time = GetCurrentTime(); -> time.Format(_T("%Y_%m_%d_%H.log"))); ( Failed ) 3. boost asio read_some() 함수 호출 시 0으로 바로 리턴될 때 체크 사항 buffer를 vector로 사용할 경우..