전체 글 483

[Unity] 전처리사용 하여 Log 제한 방법 (#If, Conditional, 심볼)

Unity에 정의된 전처리사용 https://docs.unity3d.com/kr/530/Manual/PlatformDependentCompilation.html 정의 public class Util { public static void Log(string log) { #if UNITY_EDITOR Debug.Log(log); #endif } } Conditional 사용하여 심벌 등록하여 사용하기 정의 public class Util { [System.Diagnostics.Conditional("DEBUG_MODE")] public static void Log(string log) { Debug.Log(log); } } 자신이 원하는 전처리기 명령어를 정하여 위와 같이 등록을 한다. Project Set..

Unity 2023.03.07

[C#] Enum타입 리플렉션(Reflection)사용하여 값 받아오는 방법

정의한 Enum enum TestEnum { test1, test2, test3, } Enum -> string string name1 = Enum.GetName(typeof(TestEnum), 0); string name2 = Enum.GetName(typeof(TestEnum), TestEnum.test1); Console.WriteLine($"{name1}, {name2}"); Enum -> string[] string[] names = Enum.GetNames(typeof(TestEnum)); foreach (string name in names) { Console.Write($"{name}, "); } string -> Enum TestEnum myenum1 = (TestEnum)Enum.Par..

VisualStudio/C# 2023.02.16

[Oracle] DBeaver설치경로 및 설명

DBeaver는 SQL 클라이언트이자 데이터베이스 관리 도구이다. 관계형 데이터베이스의 경우 JDBC API를 사용하여 JDBC 드라이버를 통해 데이터베이스와 통신한다. 그 밖의 데이터베이스(NoSQL)의 경우 사유 데이터베이스 드라이버를 사용한다. 자동 완성과 구문 강조를 지원하는 편집기를 제공한다. 이클립스 플러그인 구조 기반의 플러그인 아키텍처를 제공함으로써 애플리케이션 동작 중 상당수를 수정하여 데이터베이스에 특화된 기능이나 데이터베이스에 독립적인 기능들을 제공할 수 있게 한다. 이것은 자바로 작성된 데스크톱 애플리케이션이며 이클립스 플랫폼에 기반을 둔다. DBeaver는 아파치 라이선스로 배포되는 자유 오픈 소스 소프트웨어이다. https://dbeaver.io/download/ Download..

DB/Oracle 2023.02.09

[C#] Byte와 문자열간 변환 방법과 인코딩 방식 설명

Byte to String1. Encoding 클래스 사용 ( UTF8, ASCII, Unicode)System.Text.Encoding 클래스는 다양한 인코딩 방식을 제공합니다. UTF8, ASCII, Unicode 등을 사용하여 byte 배열을 문자열로 변환할 수 있습니다. 특징텍스트 데이터를 저장할 때 주로 사용한다.byte[] bytes = { 72, 101, 108, 108, 111 };string str = Encoding.UTF8.GetString(bytes);Console.WriteLine(str); // 출력: Hello2. BitConverter 클래스 사용 (16 진수)System.BitConverter 클래스는 byte 배열을 16진수 문자열로 변환하는 방법을 제공합니다. 데이터 디..

VisualStudio/C# 2023.02.09

[C#] Struct를 byte로 변환, byte를 Struct로 변환

static byte[] StructToByte(object obj) { //구조체 사이즈 int size = Marshal.SizeOf(obj); //사이즈 만큼 메모리 할당 받기 byte[] buffer = new byte[size]; IntPtr ptr = Marshal.AllocHGlobal(size); //구조체 주소값 가져오기 Marshal.StructureToPtr(obj, ptr, false); //메모리 복사 Marshal.Copy(ptr, buffer, 0, size); Marshal.FreeHGlobal(ptr); return buffer; } public static byte[] StructToByte(T structure) where T : struct { byte[] buffer..

VisualStudio/C# 2023.02.02

[WPF] WPF와 Unity연동 방법

※Unity 빌드 파일을 Wpf 빌드파일에 넣어야 실행된다. MainWindow.cs에 _process.StartInfo.FileName = ""; 안에 Wpf 빌드파일에 들어있는 Unity 빌드파일 명을 기입하면된다. MainWindow.xaml MainWindow public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer(); dispatcherTimer.Tick += attemptInit; dispatcherTimer...

VisualStudio/WPF 2023.01.20

[IT지식] DRM이란

DRM 이란? 디지털 권리 관리(Digital rights management, DRM)는 출판자 또는 저작권자가 그들이 배포한 디지털 자료나 하드웨어의 사용을 제어하고 이를 의도한 용도로만 사용하도록 제한하는 데 사용되는 모든 기술들을 지칭하는 용어이다. CDM(Content Decryption Module)에 기반한다. 이는 종종 복사 방지, 기술 보호 장치와 혼동하기도 한다. 앞의 두 용어는 디지털 권한 관리 설계의 일부로, 이런 기술이 설치된 전자장치 상의 디지털 콘텐츠에 대해 사용을 제어하는 데 사용되는 기술을 지칭한다. 디지털 권리 관리는 논란의 여지가 있는 분야로 지지자들은 저작권 소유자가 저작물에 대한 불법복제를 막아 지속적인 수입원을 확보하는 데 필요하다고 말한다. 자유 소프트웨어 재단을..

IT지식 2023.01.18

[WPF] Win32 api 사용하여 윈도우 창 제어하기 max창 드레그 및 축소화

public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } [DllImport("user32.dll")] public static extern IntPtr SendMessage(IntPtr hWnd, int wMsg, int wParam, int lParam); private void pnlControlBar_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { WindowInteropHelper helper = new WindowInteropHelper(this); SendMessage(helper.Handle, 161, 2, 0); //DragM..

VisualStudio/WPF 2023.01.09

[WPF] 바인딩(onetime, oneway, twoway, onewaytosource)

C#에서 인터페이스에 나타나는 값을 동적으로 표현할때 데이터바인딩을 사용한다. XAML의 내용이 이렇게 선언하면 TEXTBOX안에 표시되는 내용이 ViewModel이라는 뷰모델 클래스의 name이라는 요소와 연결되게 된다. 여기서 설정하는 MODE는 onetime, oneway, twoway, onewaytosource 중에 하나로 설정하는데, -onetime 만약에 현재 뷰모델의 name이라는 요소가 string타입의 "사과"라고 저장되어 있다고 하자. 만약 MODE를 onetime으로 연결 한다면, 인터페이스의 텍스트블록 안에 "사과"라는 글자가 뜨게 된다. 하지만, 이때 단 한번만 바인딩이 되고 이후로는 연결이 끊어지게 되서 뷰모델 안의 string name을 바꿔도 텍스트 박스의 값이 영향을 받지..

VisualStudio/WPF 2023.01.09

[WPF] 사용자 정의컨트롤 디펜던시프로퍼티(DependencyProperty)

디펜던시프로퍼티 사용자 정의컨트롤을 만들어 사용 할 때 사용자 정의 컨트롤의 속성을 접근하여 get set을 하기 위한 프로퍼티 이다. 사용방법 정의컨트롤 생성 디펜던시 프로퍼티 생성 방법 PROPDP + Tab + Tab 하면 나오는 초기 디펜던시 프로퍼티 public int MyProperty { get { return (int)GetValue(MyPropertyProperty); } set { SetValue(MyPropertyProperty, value); } } // Using a DependencyProperty as the backing store for MyProperty. This enables animation, styling, binding, etc... public static re..

VisualStudio/WPF 2023.01.05

[C#] Action.Invoke() vs Action() 차이

action.Invoke는 action?.Invoke와 같이 action 콜백이 null인지 검사하고 null이 아닐 때에만 Invoke 되도록 사용하고자 할 때 많이 사용한다. 기존 예외처리 if(_action !=null) _action.Invoke(3);// _action(3) 과 같은 코드 ? 키워드를 사용 한 예외처리 _action?.Invoke(3); //if(_action !=null)를 ?키워드를 사용하여 null임을 체크할 수 있다. action(); 는 action.Invoke()와 컴파일과정이 100프로 동일 하다. action이 null이면 NullReferenceException을 뱉기 때문에 위험하다 그래서 invoke를 사용하기 전에 null 검사를 해야 하며 기존 예외처리 처..

VisualStudio/C# 2023.01.05

[C#] nameof()와 default(T)

nameof 변수, 형식 또는 멤버의 이름을 문자열 상수로 생성합니다. string NameOfTest { get; set; } static void Main(string[] args) { string nameofTest = ""; Console.WriteLine(nameof(nameofTest)); Console.WriteLine(nameof(NameOfTest)); } default(T) 기본값 식은 형식의 기본값을 생성합니다. 기본값 식에는 두 가지가 있습니다. 기본 연산자 호출 및 기본 리터럴. Value 일 때는 0을 Ref일 때는 null을 반환한다. public T Test(bool check) { if(check == false) return default(T); return T; }

VisualStudio/C# 2023.01.05