Study 33

[MFC] PropertiesWnd

MFC SDI 프로젝트 생성시 기본으로 제공해주는 Property gird 도킹창 관련 코드 (VS2017 기준) PropertiesWnd.h #pragma once class CPropertiesToolBar : public CMFCToolBar { public: virtual void OnUpdateCmdUI(CFrameWnd* /*pTarget*/, BOOL bDisableIfNoHndler) { CMFCToolBar::OnUpdateCmdUI((CFrameWnd*) GetOwner(), bDisableIfNoHndler); } virtual BOOL AllowShowOnList() const { return FALSE; } }; class CPropertiesWnd : public CDockabl..

[Android] 귀찮은 것 정리

Rotation 90, 180, 270은 반시계 방향을 양(+)의 방향으로 계산한다. 여기서 Rotation 0은 기기가 자연스러운 방향 (Default)일 때를 의미한다. 자연스러운 세로방향 : 일반적인 스마트폰 자연스러운 가로방향 : 태블릿 단, 카메라에 찍히는 이미지의 회전 정보는 별도로 취급 https://developer.android.com/training/camerax/orientation-rotation?hl=ko CameraX 회전 사용 사례 | Android 개발자 | Android Developers 이 주제에서는 ImageAnalysis 사용 사례든 ImageCapture 사용 사례든 앱에서 CameraX 사용 사례를 설정하여 올바른 회전 정보가 포함된 ..

Study/Java, Android 2021.08.12

[C#] Helix-toolkit 연구중 (WPF.SharpDX 기준)

github.com/helix-toolkit/helix-toolkit : MIT 권장 사항은 VS2019 Solution file : HelixToolkit.SharpDx.sln VS2017에서 Dotnet을 4.8로 맞추어서 편집은 가능함. 다만, 일부 패키지 종속성, 호환 문제 때문에 2.11.0 버전으로 설치함 프로젝트 명칭이 많이 헷갈린다 -_- GitHub에서 제공되는 예제코드 중에서 WPF 프로젝트는 MVVM(Model View ViewModel) 패턴으로 설계되어 있다. WPF.SharDX는 DirectX 11을 베이스로 설계된 프로젝트이다 Viewport3DX의 배경이 흰색일 경우 border highlight가 작동하지 않는 현상이 존재함. (21년 1월 17일에 수정된 것으로 예상) 관..

[Unity] Windows Magic Leap 초기 설정

정리하고 나니까 겁나 복잡하다..... Visual studio 2017 professional Unity pro 2019.4.13f1 developer.magicleap.com/en-us/learn/guides/develop-setup Developer Portal | Magic Leap developer.magicleap.com (설치 절차는 위 링크에 자세히 나와있다.) 우선 https://developer.magicleap.com/downloads 링크로 접속한다. 만일 계정이 없다면 계정으로 사용할 E-mail 주소를 입력한다. (어짜피 Magic Leap Lab 프로그램을 실행하기 위해서는 계정이 필요하기 때문에 가입해야한다.) 입력한 메일 주소로 인증 ..

[Visual Studio 2017] 최근 항목 (파일, 프로젝트, 솔루션) 삭제

방법 1. 레지스트리 편집기 이용 (1)1) 레지스트리 편집기 실행하여, 아래 두 경로에 있는 곳으로 이동하여 삭제하려는 것을 찾아 삭제 (최근 열어본 파일 목록)컴퓨터\HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0(해당 숫자는 VS 버전명)\FileMRUList (최근 열어본 프로젝트 목록)컴퓨터\HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0(해당 숫자는 VS 버전명)\ProjectMRUList ※ 특정 버전 이후로 레지스트리에 직접 작성하는 방법이 없어졌다고 함.. 방법 2. 레즈스트리 편집기 이용 (2)1) 레지스트리 편집기를 실행하여 아래 경로로 이동한다.컴퓨터\HKEY_CURRENT_USER\..

CUDA를 C++/CLI로 만들어보자

아직 코드 연구중인 부분입니다..... 기준 VS2017 새 프로젝트를 생성한다. Visual C++ → Windows 데스크톱 → DLL(동적 연결 라이브러리) 구성 관리자에 프로젝트 타겟 설정 변경 자신이 설계하고자 하는 목적에 맞게 구성 (Debug, Release 등) 및 플랫폼 (x86, x64 등)을 설정한다. 프로젝트의 빌드설정을 변경한다. 프로젝트 우클릭 → 빌드 종속성 → 사용자 지정 빌드 자신의 버전에 맞는 CUDA를 체크한다.현재 자신의 CUDA 설정 확인해볼 것! 프로젝트의 빌드 순서를 변경한다. 프로젝트 우클릭 → 빌드 종속성 → 프로젝트 종속성 또는 프로젝트 빌드 순서 DLL을 생성하는 프로젝트가 DLL을 사용하는 프로젝트 보다 먼저 빌드되어야 한다. 생성한 프로젝트의 속성 페이..

Study/CUDA 2020.02.04

[C#] 배열 연구

하나의 대괄호([]) 안에 쉼표로 차원을 구분하는 배열이다.대괄호 사용법 예시 1) [ , , , ] ← 4차원대괄호 사용법 예시 2) [ , ] ← 2차원대괄호 사용법 예시 3) [ ] ← 1차원 JAVA의 경우 언어차원에서는 제한이 없으나, JAVA VM에서는 차원을 255까지 지원한다.이에 비해 C#에서 배열은 32차원까지 가질수 있다.차원을 구하는 방법은 (배열변수명).Rank 속성을 이용하면된다. (Dimension인줄 알고 열심히 찾았는데 잘 안나왔다는....) 대괄호([])가 여러 개 중첩한 배열이다.대괄호 사용법 예시 1) [ ][ ]대괄호 사용법 예시 2) [ , ][ ][ , ]대괄호 사용법 예시 3) [ , , ][ , ][ , , ] Jagged Array에는 중요한 특징들이 있다...

[MFC] Modaless Dialog

출처 : http://psmon.x-y.net/maniwiki/doku.php?id=mfc:%EA%B8%B0%EC%B4%88:%EB%AA%A8%EB%8B%AC%EB%A6%AC%EC%8A%A4_%EB%8C%80%ED%99%94%EC%B0%BD mfc:기초:모달리스_대화창 [PSMON WIKI] 모달리스 다이얼로그 와 메모리 리크(Leaks) Cdialog 즉 다이얼로그 창은. 간단하게 메시지를 주고 받을수 있는 가장 간단한 인터페이스부터 미디어 플레이어 같은 매우 복작합 인터페이스까지 쉽게 구현할수 있는 보편적인 인터페이스 입니다. 저두 처음에는 다이얼로그 모드에서 작업을 많이 했죠. 비교적 간단하고, 간편하게 짤수 있으니까요. 그러나 저러나, 다이얼로그는 모달과 모달리스가 있고, 모달 구현은 매우 간단합..

닷넷 프레임워크 복구, 제거 도구

제거도구 복구도구 (완전 최신 프레임 워크에서 동작하지 않는 이야기가 있음) 출처 및 사용방법 (영문) https://blogs.msdn.microsoft.com/astebner/2008/08/28/net-framework-cleanup-tool-users-guide/ .NET Framework Cleanup Tool User’s Guide .NET Framework Cleanup Tool User's Guide Introduction This .NET Framework cleanup tool is designed to automatically perform a set of steps to remove selected versions of the .NET Framework from a computer. ..

Leica BLK360

라이센스를 구매해야 편집이 가능할 듯 합니다... 공통 사항 BLK360을 WiFi Egg 처럼 생각하면 된다. (BLK360기기는 Wi-Fi로 연결한다.) 모바일 앱은 아이패드만 지원함. (안드로이드 제공에 대한 건의가 포럼에서도 많이 제기된 듯 하지만, 개선되지 않는듯 함) 방법 1 : Leica에서 만든 프로그램 이용 (1) BLK360 App - 앱을 이용하기 위해서는 계정이 필요하며 제대로 이용하기 위해서는 인앱결제가 필요함. - 앱을 이용하는 기기는 성능이 좋은 것으로 이용할 것을 권장. - 앱에서 생성한 파일은 AutoDesk 프로그램에서는 import되지 않음. (2) Cyclone REGISTER / REGISTER 360 - 유료 프로그램 (360의 차이는 프로그램 이용기간..

Study/외부장치 2019.10.10

NGIMU 그냥 해본 것...

해당 IMU는 축의 반시계 방향으로 각도가 증가 한다. (보통 기본적인 IMU가 그러한 듯?) 축의 반시계 방향을 정의 하는 방법은 먼저 축의 (+) 방향에 오른손 엄지손가락을 위치시키고, 나머지 손가락으로 축을 감싼다. 축을 감싼 나머지 손가락의 방향이 반시계 방향이되며, 이 방향으로 각도가 (+)가 된다. ※ 물론 각도에 대한 값이니까 일부 구간에서 (-)이다. 하단의 사이트에서 힌트를 얻어 회전 행렬을 유도 한다. https://o-tantk.github.io/posts/derive-rotation-matrix/ tantk land o-tantk.github.io http://planning.cs.uiuc.edu/node102.html Yaw, pitch, and roll rotations A 3D..

Study/외부장치 2019.09.23

[C#] 디렉토리 (폴더) 삭제에 관하여

폴더를 삭제할 일이 존재하여서 웹을 뒤져보았다. Directory.Delete("path",true); DirectoryInfo di = new DirectoryInfo("Path"); di.Delete(true); foreach (string file in Directory.GetFiles(@"c:\directory\")) File.Delete(file); 삭제를 하는 함수들은 여러가지가 존재했지만, 제대로 작동하는 것이 없었다. 그 원인들을 분석해보니 System.IO.IOException : The directory is not empty 경로를 찾지 못함 권한(?) 문제 읽기 전용 .NET 버전에 따라 함수가 다른 기능을 할 수도 있음 이외 여러가지(?) Exception이 발생해서 해당 폴더를 ..

CUDA를 C#에서 사용해보자

방법 1) DLL import http://blog.naver.com/sogangori/220514920009 CUDA와 C# 같이 사용하기 C#에서 CUDA를 사용하는 방법입니다. C#과 CUDA를 같이 사용하는 방법은 많겠지만 저는 그중 몇... blog.naver.com 추가! PTX 파일 만들기 (PTX로 컴파일 된 파일을 라이브러리로 읽음) https://blog.naver.com/pkk1113/221362455788 Visual Studio에서 cuda 파일을 ptx 파일로 바꾸기 (서론) NVIDIA에서 제공하는 Ray Tracing 엔진 OptiX를 사용하기로 하였다. 인터넷에 돌아다니는... blog.naver.com 위 블로그에서 Generate GPU Debug Information ..

Study/CUDA 2019.07.08

거지같은 MS SQL Sever 2014

2014설치 인스톨 파일을 (SQLEXPRADV_x64_KOR.exe) 실행하면 해당 경로에 폴더를 하나 생성한 후, 실제 인스톨 패키지를 압축해제한다. 압축해제와 동시에 경로가 레지스트리에 등록이 되기 때문에 함부로 경로를 변경해버리면, 인스톨 파일이 먹통이 되어 버리는 불상사가 발생한다. 인스톨 파일을 재실행해도 "아무 메시지 없는 빨간 동그라미 엑스표시의 대화 상자"만 뜨게되고, MS에 문의를 해봤지만, 질문 씹었다.... 결국 이 경우 포맷이 답이다. 과거 win7 때 했던 실수를 이번 win10에서 안하기를 기원했지만, 클린 설치 부터 거지 같은 에러가 떴었다. 이 녀석 때문인지는 몰라도 db가 접속이 되지 않는 문제가 발생하게 되었다. 다른 블로그 글에 의하면 서비스를 건드리라고 했지만, 그래..

[링크스크랩] Manage (or Hide) Api Key / 안드로이드 API 키 관리

아래 링크에서는 home 디렉토리에 있는 gradle 파일에 Key를 이용하는 방법을 설명하고 있다. https://medium.com/code-better/hiding-api-keys-from-your-android-repository-b23f5598b906 Hiding API keys from your Android repository Tiny guide to help you avoid leaking your API keys to public through project repository medium.com 아래 링크에서는 각 Flavor 마다 API 를 관리할 것인지에 대해 설명하고 있다. https://medium.com/@enriqueramrezmanzaneda/managing-api-keys..

Study/Java, Android 2019.06.13

[Gradle] Android build variants

build.gradle (보통 Module:app)으로 가서 직접 작성하거나 안드로이드 스튜디오 상단 툴바 메뉴에서 File → Project Structure → Build Variants 에 가면 설정이 가능하다. 왼쪽이 우선 순위가 가장 높음 빌드 변형 (build variant) > 빌드 유형 (build type) > 제품 버전 (product flavor) > 기본 소스 세트 (main source set) > 라이브러리 종속성 (library dependencies) 공통 : Build Types와 Flavors에서 공통적으로 설정할 수 있는 옵션 Application Id Suffix Version Name Suffix ProG..

Study/Java, Android 2019.05.10

Android Theme.MaterialComponents의 button 문제

안드로이드 style에 Theme.MaterialComponents 와 관련된 theme을 적용하면 Button을 커스터마이징 하는데 문제가 생긴다. (필자의 경우 drawable에 정의한 background를 적용하려고 했는데 듣지를 않았다...) https://stackoverflow.com/a/52751122/7017299 when use Theme.MaterialComponents.Light.NoActionBar style, set button background not effect In order to use Chip and ChipGroup , i set Application style extends "Theme.MaterialComponents.Light.NoActionBar" int man..

Study/Java, Android 2019.04.10

[Ubuntu] 찾아보기 귀찮아서 백업하는 명령어

가장 최근 명령 다시 실행하기!명령 : (느낌표와 명령) 예를 들어서 다음 명령어를 순차적으로 실행했다고 하자 cd abc (그냥 임의 디렉토리)resetvi ttttvi tst 여기서 !v 또는 실행하면 v로 시작하는 가장 최근에 명령이 실행된다. (!vi 도 되는 것 같음)그러면 여기서 vi tst가 다시 실행된다. !r을 하거나 !re를 하면 reset명령이 실행된다...단, history -c 명령으로 명령어 히스토리를 삭제해 버리면 안되는 것 같음. 명령어 및 출력 내용 파일에 저장 12345//명령어 실행 및 콘솔화면(표준출력)을 파일로 저장명령어 | tee -a 파일명 //명령어 실행 및 콘솔화면(표준출력)을 오류도 포함해서 파일로 저장명령어 | tee -a 파일명cs 출처 (제타위키) CC..

Study/Linux 2019.03.05

CUDA

CUDA : Compute Unified Device Architecture NVCC : NVIDIA CUDA Compiler 구조 : X(주 개정 Major).Y(부 개정 Minor) compute_XY, sm_XY (Streaming Multiprocessor)하고 넘버링을 같이한다. Toolkit은 API라고 생각하면 헷갈리지 않는다. 확인 방법 : 사이트에서 확인 : developer.nvidia.com/cuda-gpus VS로 확인 : Cuda toolkit 설치시 Cuda sample도 같이 설치 했다면, 1_Utilities에 있는 deviceQuery를 실행해본다. 관련 링크 https://docs.nvidia.com/cuda..

Study/CUDA 2019.02.20

안드로이드 스튜디오 단축키

공식 사이트에 있는 기본 단축키 일부 https://developer.android.com/studio/intro/keyboard-shortcuts?hl=ko 안드로이드 스튜디오 단축키는 왼쪽 상단의 File → Settings로 환경설정으로 진입한 다음 Keymap 메뉴에 가면 된다. 단축키는 자기가 원하는대로 커스터 마이징을 할 수 있다. 여기에 적은 것은 본인이 백업 용으로 정리 한 것이다. 스튜디오 버전 : 3.3.1설정된 Keymap : Default 명령 윈도우 기준 설명 Editor Actions Delete Line Ctrl + Y 한줄 삭제 Delete to Word End Ctrl + Delete 커서부터 오른쪽 방향으로 단어 단위로 삭제 Delete to Word Start Ctrl ..

Study/Java, Android 2019.02.12

Uri를 Intent로 전달 할 때...

폰 내부에 있는 영상을 앱에서 View 띄우기 위해서 Uri를 이용했다. 임시로 Download 폴더에 넣음 → Download 까지 절대경로를 이용하여 파일 객체를 만듬 new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), 비디오 파일 경로) → 파일로 부터 URI를 구함 Uri.fromFile(파일 객체) → URI를 이용하여 영상을 띄움 (VideoView 또는 다른 라이브러리 이용) → Fragment 에서 Activity로 URI를 Intent에 담아서 전송 (startActivity(Intent)) → Activity에서 받은 URI를 활용 intent.getParcelable(키 값) 문..

Study/Java, Android 2018.11.13

[MFC] 도킹 창 등록 관련

Visual studio의 새 프로젝트 생성시 기본으로 세팅되는 도킹 코드 이용 1234567891011121314151617181920212223242526272829// 도킹 창을 만듭니다.if (!CreateDockingWindows()){ TRACE0("도킹 창을 만들지 못했습니다.\n"); return -1;} //도킹하려는 창 각각 EnableDocking 함수 사용m_wndFileView.EnableDocking(CBRS_ALIGN_ANY);m_wndClassView.EnableDocking(CBRS_ALIGN_ANY);m_wndDirView.EnableDocking(CBRS_ALIGN_ANY); //도킹창 하나를 기준으로 잡고, DockPane 함수를 사용하여//프레임 윈도우에 도킹한다. ..

GDI+을 사용하려면 반드시 초기화 구문을 쓰자

GDI+가 경로가 맞음에도 불구하고, 이미지를 불러오지 못해서 찾아봤지만,여러가지 시도를 해봤지만 실패 그러다가 GDI+를 사용하기 전에 초기화가 필요하다는 것을 뒤늦게 알고,선언을 하니까 이미지를 잘 불러오게됨... 기초는 항상 중요하다.... 12345678910111213141516171819202122232425//StdAfx.h#include #pragma comment(lib, "gdiplus")using namespace Gdiplus; //thaApp이 선언되어있는 클래스.h/cpp 파일 쪽 //전역변수 선언ULONG_PTR m_gdiplusToken; BOOL (클래스 이름)::InitInstance(){ GdiplusStartupInput gdiplusStartupInput; if (:..

[C#] 문법 공부중입니다

닷넷 개념 : https://points.tistory.com/25 .NET Framework : MS에서 제공하는 Windows 프로그램 개발 및 실행환경 WPF Win Forms ASP.NET .NET Core : Windows 외의 운영체제가 .NET을 사용할 수 있도록 하는 프로젝트 UWP ASP.NET Core XAMARIN iOS, Android, OS X .NET Standard : .NET Framework와 .NET Core의 표준 using : C언어의 #include와 비슷한 개념 세미콜른 : (코드 여러줄 입력하고) 문장의 끝 부분에 붙이면 된다. 특수한 경우에는 세미콜른을 사용하지 않는다. 네임스페이스 (namespace) : 성격이나 비슷한 일을 하는 클래스, 구조체, 인터페이스..

[C++] Vector<String> 문자열 소트

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253// SortTest.cpp: 콘솔 응용 프로그램의 진입점을 정의합니다.// #include "stdafx.h"#include #include #include #include using namespace std; bool my_compare(string &left, string &right){ for (string::const_iterator lit = left.begin() , rit = right.begin() ; lit != left.end() && rit != right.end() ; ++lit, ++rit) { if (tol..

[MFC] Dialog 기반 프로그램 enter,esc 키 처리에 관해

MFC 대화상자 기반 프로젝트를 설계할 때,Enter, ESC 를 누르면 프로그램이 종료되는 문제가 있다. 이를 개선하기 위해서 함수 OnOK(), OnCancel()를 오버라이딩 하는 방법도 있지만,보통 PreTranslateMessage함수를 많이 사용하는 편이다. (많이 사용하는 편인 것 같다.) 다른 블로그 글에 의하면 해당 키가 감지 되었을 때 return TRUE을 해버리면 된다고 한다.다만 본인은 현재 채팅 프로그램을 학습 중이였기 때문에Enter키 이벤트가 필요해서 꽤나 골치 거리였다. http://mainia.tistory.com/599 해당 블로그 게시글에 힌트를 얻어서 엔터(VK_RETURN)를 눌렀을 경우, 포커스를 찾아서 만일 입력창에서 엔터키를 눌렀을 경우, Send 명령을 실행..

[JAVA] 형변환 연구

> byte[] packet = ByteBuffer.allocate(1).put(command).array(); int >> 123public int byte2Int(byte src) { return src & 0xFF; }Colored by Color Scriptercs ※ 자바에서 byte는 sign이기 때문에 범위 표현이 -128 ~ 127 이다.그래서 (byte) 0xFF를 int에 아무 것도 안하고 그대로 대입하면 -1이 나와 버린다. int >>12345678 public int byte2Int(byte[] source) { int source_1 = source[0] & 0xFF; int source_2 = source[1] & 0xFF; int source_3 = source[2] & 0x..

Study/Java, Android 2018.05.14