반응형

클립보드를 사용한 다양한 프로그램 제어는 다양한 기능 지원으로 점점 간소화되고 있습니다. 오늘은 MFC 환경에서 자동으로 클립보드 상태 변경을 확인할 수 있는 OnClipboardUpdate 이벤트 설정에 대해서 알아보겠습니다. 클립보드를 사용하기 위해서는 Clipboard 함수를 사용해서 확인이 가능합니다. MFC에서는 이런 클립보드 상태 변경을 이벤트를 이용해서 확인 할 수 있습니다.

MFC 애플리케이션에서 대화상자기반  프로젝트를 생성합니다.

이벤트 창에서 WM_CLIPBOARDUPDATE 이벤트를 클릭해서 이벤트 함수를 생성합니다.

자동으로 생성된 이벤트를 확인할 수 있습니다. 빌드 후 실행하면 대화상자가 출력됩니다. 클립보드 이벤트를 발생하면 아무 반응이 없습니다. 아직 시스템 이벤트 리스너에 등록이 안되어 있어 이벤트를 확인할 수 없는 겁니다.

OnInitDialog() 함수로 이동해서 AddClipboardFormatListener()를 등록합니다.

https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-addclipboardformatlistener

 

AddClipboardFormatListener function (winuser.h) - Win32 apps

Places the given window in the system-maintained clipboard format listener list.

learn.microsoft.com

정상적으로 시스템 클립보드 리스너에 등록되면 자동으로 클립보드 이벤트 감지를 확인할 수 있습니다. 감사합니다.

 

반응형
반응형

Notion에서 사용할 수 있는 인용, 콜 아웃 블록은 일반적으로 줄 바꿈(개행처리)가 안됩니다.

인용 블록 사용 시 Enter을 클릭하면 다른 행으로 넘어갑니다.

콜 아웃 블록도 동일하게 Enter을 클릭하면 다은 행으로 넘어갑니다.

Excel처럼 Alt + Enter를 사용해도 안됩니다.

Notion(노션)은 Alt가 아닌 Shift를 사용해서 줄 바꿈(개행처리)을 처리할 수 있습니다.

Shift + Enter

Notion(노션)에서는 Shift + Enter을 사용해서 인용, 콜 아웃 줄 바꿈(개행처리)이 가능합니다.

반응형
반응형

오늘은 IntelliJ에서 GitHub 연동 방법을 알아보겠습니다. GitHub를 연동하면 다양한 장소에서 손쉽게 소스를 관리할 수 있어 좋습니다. 소스 이력도 관리 가능해서 개발 이력확인하기 편리합니다.

IntelliJ가 설치되어 있는 환경에서 프로그램 실행 후 File->Settings 메뉴를 클릭합니다.

Settings 창이 활성화되면, 우측 메뉴에서 GitHub 메뉴를 클릭합니다.

GitHub 메뉴를 클릭하면 우측에 GitHub 계정 리스트를 확인할 수 있습니다. 등록된 내용이 없으니까, 상단에 있는 "+" 아이콘을 클릭하면 "Log In via GitHub..."을 확인할 수 있습니다. 클릭하면 리다이렉트 되면서 WEB페이지로 이동합니다.

기존에 등록된 사용자면 자동 연결로, 등록이 가능하고, 연결된 기록이 없다면 로그인 화면 및 연동 화면으로 연결됩니다. 로그인 후 연동 화면에서 "Authorize JetBrains"를 클릭하면 정상적으로 연동 메시지를 확인할 수 있습니다.

정상적으로 등록되었다면, 리스트에서 GitHub 계정 정보를 확인할 수 있습니다. 이제 연동 계정으로 소스를 관리할 수 있습니다. 감사합니다.

반응형
반응형

플러터(Flutter)에서 TableCalendar 라이브러리를 사용해서 Calendar를 생성하면 영문으로 출력됩니다. 오늘은 캘린더를 한글로 변경하는 방법을 알아보겠습니다.

한글로 변경하는 방법은 다양하게 있지만 locale 옵션을 사용해서 간단하게 변경해 보겠습니다. 먼저 소스 상단에 import가 필요합니다.

import 'package:intl/date_symbol_data_local.dart';

intl에 포함되어 있는 date_symblo_data_local.dart 파일을 포함합니다.

main 함수에서 앱 실행 전에 DateFormatting 함수를 실행합니다.

initializeDateFormatting().then((_) => runApp(const MyApp()));

이제 TableCalendar에서 옵션으로 locale를 사용할 수 있습니다.

TableCalendar 옵션에서 " locale: 'ko-KR' "을 추가합니다.

앱을 실행하면 정상적으로 캘린더 정보가 한글로 변경되어 있는 것을 확인할 수 있습니다.

감사합니다.

반응형
반응형

플러터(Flutter)를 이용한 달력을 구현해 보겠습니다. 플러터(Flutter)에서 달력을 사용하기 위해서는 먼저 TableCalendar을 설치해야 합니다.

Android Studio Terminal 및 cmd를 사용해서 커맨드를 입력합니다.

Flutter pub add table_calendar

별 문제 없다면 정상적으로 설치되며, 설치되어 있다면 버전을 확인할 수 있습니다.

Project에서 pubspec.yaml파일로 이동 후 dependencies 항목 아래쪽에 'table_calendar: ^3.0.9'을 입력합니다. 처음 설치 시 확인된 버전을 입력하면 됩니다.

이제 패키지를 로드해야 합니다. import를 사용해서 패키지 정보를 입력합니다.

import 'package:table_calendar/table_calendar.dart';

정상적으로 TableCalendar이 설치되어 있다면 패키지가 비활성화됩니다.

main.dart 파일로 이동 후 하단에 있는 build 함수에 TableCalendar을 선언합니다.

 return Scaffold(
      appBar: AppBar(
        // Here we take the value from the MyHomePage object that was created by
        // the App.build method, and use it to set our appbar title.
        title: Text(widget.title),
      ),
      body: TableCalendar(
        firstDay: DateTime.utc(2010, 10, 16),
        lastDay: DateTime.utc(2030, 3, 14),
        focusedDay: DateTime.now(),
        ),
      );

firstDay, lastDay, focusedDay를 기본적으로 입력하면 최대, 최소 기간을 설정할 수 있고, 실행 시 오늘 날짜로 이동합니다.

정상적으로 컴파일되면 Android화면에서 TableCalendar UI를 확인할 수 있습니다. 감사합니다.

반응형
반응형

플러터(Flutter) 실행 시 'No Connected Device Found' 문제가 발생했습니다. 

내용을 확인하면 연결할 수 있는 Devices를 찾을 수 없다고 합니다. ADB 실행 시 잘되던 게 안 되는 겁니다. 그래서 문제를 해결하기 위해서 하나씩 확인해 보겠습니다.

먼저 SDK 설정을 확인해 보겠습니다. File에서 'Project Structure'를 선택합니다.

Project 항목에서 SDK를 선택합니다. ADB에 설정된 SDK를 선택하고 저장을 클릭합니다. 정상적이라면 플러터(Flutter) 컴파일이 실행됩니다. 그런데 안 되는 경우가 있습니다.

'setting' 메뉴에서 Android SDK 항목을 선택하면 선택한 SDK 업데이트가 필요한 경우가 있습니다. SDK 확인하면, 체크가 아닌 업데이트(Update Available)로 변경되어 있습니다.

SDK를 선택하면 체크되면서 업데이트를 준비하게 됩니다. 'Apply' 버튼을 클릭합니다.

SDK 업데이트를 진행하면, 정상적으로 SDK가 체크되어 있습니다. Android Studio를 재실행하고 플러터(Flutter) 컴파일을 진행하면 정상적으로 ADB가 실행됩니다. 감사합니다.

반응형
반응형

Windows 사용 중 C드라이브 용량을 확인하니까. 갑자기 빨간색으로 변경되어 용량 부족을 알리고 있습니다. 처음에는 다운로드 파일이 많아서인 줄 알았습니다. 다운로드 폴더를 모두 삭제해도 용량이 줄어들지 않아 C드라이브 내용을 확인하니까 이상하게 용량이 엄청난 파일을 확인할 수 있었습니다.

hibeffil.sys, pagefile.sys 두개 파일로 이름만 보면 매우 중요한 파일처럼 보입니다. 두파일을 합치면 무려 30GB입니다. 먼저 두 파일에 대해서 알아보겠습니다.

hiberfil.sys 파일
절전모드 및 최대절전 모드 기능으로 컴퓨터를 장시간 사용하지 않고, 켜두면 자동 생성되는 파일입니다. 완전삭제는 안되며 기능으로 ON, OFF 가능합니다.
pagefile.sys 파일
하드디스크의 일부분을 램 처럼 사용할 시 생성되는 파일로 메모리가 부족할 때 하드디스크 용량으로 사용되는 파일입니다. 설정으로 삭제 가능

hiberfil.sys, pagefile.sys 두 파일 모두 일반 삭제는 불가능합니다. 삭제하면 파일이 열려있다는 메시지가 출력됩니다. 그럼 두 파일 모두 삭제하는 방법을 알아보겠습니다.

pagefile.sys 삭제 방법

pagefile.sys는 설정으로 완전 삭제가 가능합니다. 먼저 내 컴퓨터에서 고급 시스텝 설정 메뉴를 클릭합니다.

'시스템 속성'에서 '고급' 탭으로 이동해서 상단에 있는 '설정' 버튼을 클릭합니다. 성능 옵션 창을 확인할 수 있습니다.

성능 옵션 항목에서 '고급' 탭으로 이동해서 아래쪽에 있는 '가상 메모리' 하단에 있는 '변경' 버튼을 클릭합니다.

가상 메모리 창에서 상단에 있는 '모든 드라이브에 대한 페이징 파일 크기 자동 관리' 항목은 언체크 합니다. 아래쪽에 있는 '페이징 파일 없음'으로 변경하고, '설정' 버튼을 클릭해서 모든 설정을 완료합니다. 설정 완료되면 재부팅 후 pagefile.sys파일이 삭제된 것을 확인할 수 있습니다.

hiberfil.sys 파일 삭제 방법

hiberfil.sys 파일은 cmd 명령어로 삭제가 가능합니다. 일반 cmd가 아닌 관리자 권한으로 실행해야 합니다.

명령어 창에 cmd를 입력하고 마우스 우클릭을 사용해서 '관리자 권한으로 실행' 메뉴를 클릭해서 실행합니다.

cmd 창에서 'powercfg -h off' 입력하면 hiberfil.sys 파일이 삭제됩니다.

간단 방법으로  pagefile.sys, hiberfil.sys 파일을 삭제할 수 있어 30GB 용량을 확보했습니다. C드라이브 용량이 갑자기 줄어들었다면, 탐색기에서 pagefile.sys, hiberfil.sys 파일을 확인하고, 용량을 줄여보세요. 감사합니다.

반응형
반응형

오늘은 Windows 환경에서 플러터(Flutter) 설치 및 실행 방법을 알아보겠습니다. 플러터(Flutter)는 구글이 출시한 오픈 소스 크로스 플랫폼 GUI 애플리케이션 프레임워크입니다. 다양한 기능 및 버전업으로 많은 사랑을 받고 있는 프레임워크입니다.

플러터(Flutter)는 Android 및 다양한 개발 프로그램에 사용 가능합니다.  전 Android에 사용하기 위해서 먼저 Android Studio를 설치했습니다.

https://developer.android.com/studio

 

Download Android Studio & App Tools - Android Developers

Android Studio provides app builders with an integrated development environment (IDE) optimized for Android apps. Download Android Studio today.

developer.android.com

위 사이트를 방문해서 Android Studio를 설치합니다. 구 버전이 설치되어 있다면 새 버전으로 변경하는 것도 좋습니다. Android Studio 설치 후 직접적으로 Android Studio를 사용하지 않고 ADB를 실행하려면 반드시 sdk path 등록이 필요합니다.

https://docs.flutter.dev/development/tools/sdk/releases?tab=windows 

 

Flutter SDK releases

All current Flutter SDK releases, stable, beta, and master.

docs.flutter.dev

이제 가장 중요한 플러터(Flutter)를 설치해야 합니다. Flutter SDK 사이트에 방문해서 최신 버전을 다운로드합니다. 다운로드 시 바이러스로 인식하는 문제가 있지만, 전 그냥 해제하고 다운로드했습니다. 정상적으로 다운로드되었다면, 압축을 해제합니다.

환경 설정으로 path를 등록하기 위해서 가장 자주 사용하는 폴더에 압축을 해제하는 게 좋습니다.

정상적으로 압축이 해제되었다면, bin 폴더를 확인할 수 있습니다.

환경설정에서 path 변수에 편집을 클릭해서 압축해제된 플러터(Flutter) bin 폴더를 입력합니다.

환경설정이 정상적으로 등록되었다면, 'flutter doctor' 명령어로 설치 상태를 확인할 수 있습니다.

녹색으로 체크되면 정상이고 빨간색은 오류입니다. 오류 내용을 확인하면 설치 확인 시 Android SDK licenses 동의가 필요하다고 합니다. 친절하게 'flutter doctor --android-licenses'를 입력하라고 합니다. 그런데 입력하면 오류가 발생합니다. 이를 해결하기 위해서 Android studio에서 Tool을 설치가 필요합니다.

Androdi studio 실행 후 'settings' 메뉴에서 'System Settings' 메뉴를 선택합니다.

하위 항목에서 Android SDK 메뉴를 선택하고 SDK Tools 탭으로 이동 후 하단에 있는 "Android SDK Command-line Tools"를 체크하고 설치합니다. 정상적으로 설치되었다면 라이선스 동의 명령어 'flutter doctor --android-licenses' 입력하고 확인하면 정상적으로 모두 녹색으로 체크됩니다. 이제 Android Studio에서 Flutter Plugin 설치가 필요합니다.

Android Studio 실행 후 'Settings' 메뉴에서 하단에 있는 'Plugins' 메뉴를 선택하고, 상단에 있는 검색에서 Flutter를 입력 후 설치합니다.

정상적으로 설치되었다면, File 메뉴에서 'New Flutter Project' 메뉴를 확인할 수 있습니다.

'New Flutter Project' 메뉴를 선택하고 하단에 있는 'Flutter' 클릭하면 왼쪽에 SDK path를 입력해야 합니다. 압축해제된 경로를 입력하고 'Next' 버튼을 클릭하면 Flutter Project를 생성할 수 있습니다.

정상적으로 설치되었다면 Project가 생성되고, IOS, Android, Windows 항목을 확인할 수 있습니다. 플러터(Flutter)는 lib 폴더 아래에 있는 main.dart 파일로 실행할 수 있습니다. const Text 항목을 변경하고 실행하면 'Flutter Demo Home Page' 앱 화면을 확인할 수 있습니다. 감사합니다.

반응형
반응형

오늘은 크롬(Chrome) 브라우저에서 자주 사용하는 즐겨찾기 백업 방법 및 관리 방법을 알아보겠습니다. 기본적으로 크롬(Chrome)은 로그인 동기화를 사용해서 즐겨찾기(북마크) 백업이 가능합니다. 정말 중요한 내용이 있다면 별도 파일로 즐겨찾기(북마크) 백업이 가능합니다.

1. 크롬 즐겨찾기(북마크) 백업 방법

크롬(Chrome) 브라우저는 즐겨찾기(북마크)는 별도 파일로 특정 폴더에 저장됩니다. 파일 위치는 %localdata%를 입력해서 Local\Google\Chrome\User Data\Default 위치로 이동하면 파일 상단에 Bookmarks파일을 확인할 수 있습니다.

Bookmarks 파일을 오픈하면 node 형태로 즐겨찾기 사이트 정보를 확인할 수 있습니다. Bookmarks 파일을 동기화를 통해서 저장되거나 별도 백업으로 관리 가능합니다. 즐겨찾기(북마크) 정보를 별도 파일로 저장하고 싶다면 Bookmarks 파일을 복사해서 저장하면 됩니다.

2. 즐겨찾기(북마크) 관리 방법

즐겨찾기(북마크)를 간단하게 관리하기 위해서는 즐겨찾기(북마크) 위치에서 삭제를 사용해서 정리가 가능하지만 정보를 한눈에 확인할 수 없어 불편합니다. 

크롬(Chrome)에서 간단하게 북마크를 관리하기 위해서는 즐겨찾기(북마크)에서 마우스 우클릭을 사용해서 "북마크 관리자" 메뉴를 클릭합니다.

설정된 북마크 정보를 리스트 형태로 확인 가능합니다. 리스트 형태로 구분되어 있으면서 바로 선택 가능해서 편집하기 매우 편리합니다.

우측에 있는 메뉴 이미지를 클릭해서 편집 및 삭제 기능을 사용해서 북마크를 정리 관리할 수 있습니다. 크롬(Chrome)에서 즐겨찾기(북마크)를 너무 단순하게만 사용해서 정보를 저장하면 즐겨찾기(북마크) 의미가 없어집니다. "북마크 관리자" 기능을 사용해서 크롬(Chrome)을 깔끔하게 정리해 보세요. 감사합니다.

반응형
반응형

PC에서 크롬 브라우저를 많이 사용하고 있습니다. 그런데 어느 날부터인가, 크롬 브라우저에서 구글 검색을 통해서 블로그를 방문하면 HTTP ERROR 400 오류가 발생하면 페이지를 확인할 수 없게 되었습니다. 혹시나 하는 마음에 다른 브라우저 Edge, 웨일 등을 사용하면 정상적으로 블로그 확인이 가능했습니다. 공통적인 내용을 확인해 보니까, 티스트(TISTORY) 블로그 내용만 접근이 안되고 오류가 발생했습니다. 오늘은 크롬 브라우저에서 티스토리(TISTORY) 방문 시 발생하는 HTTP ERROR 400 오류 해결 방법을 알아보겠습니다.

방법은 매우 간단하지만, 크롬 로그인을 이용해서 로그인 동기화를 진행하지 않았다면, 저장된 다른 사이트 기본 정보가 모두 삭제됩니다. 꼭 참고하시고, 로그인 정보가 중요하지 않다면 실행해주세요. 먼저 크롬 브라우저 옵션에서 "설정" 메뉴를 클릭합니다.

설정 항목중에서 "개인 정보 보호 및 보안" 메뉴를 클릭합니다.

개인 정보 보호 및 보안에 따른 메뉴를 확인할 수 있습니다. 최상단에 있는 "인터넷 사용 기록 삭제" 메뉴를 선택합니다.

인터넷 사용 기록 삭제 메뉴에서 "쿠키 및 기타 사이트 데이터"를 선택하고 "인터넷 사용 기록 삭제" 버튼을 클릭하면 그동안 저장된 쿠키 및 사이트 데이터 정보가 삭제되면서 초기화됩니다. 쿠기 및 데이터 정보는 로컬 정보로 개인 PC에만 저장되는 정보로 티스토리 접근시 오류가 발생하는 문제입니다. 정상적으로 초기화되었다면 크롬에서 티스토리 사이트를 정상적으로 방문 확인할 수 있습니다. 감사합니다.

반응형

+ Recent posts