전체 글

· C#
JSON은 JavaScript Object Notation의 약자로 가벼운 데이터를 주고받는 용도로 많이 사용됩니다. 또한, 문자를 사용하기 때문에 프로그래밍 언어뿐 아니라 사람이 확인하기도 매우 좋습니다. 그래서 JSON은 데이터 표준 방식 중 하나가 되었습니다. C#에서 JSON을 사용하는 것은 아주 쉬운데 제가 사용하고 있는, 아주 조금 더 편하게 쓰는 방법을 소개합니다. ✅ C# : Newtonsoft.Json Newtonsoft.Json은 nuget에서 가장 많이 설치된 패키지 중 하나로 Visual Studio에서 nuget 찾아보기 탭을 들어가면 항상 상위에 위치하고 있습니다. Newtonsoft.Json 패키지를 설치합니다. class -> JSON 변환에는 Newtonsoft.Json를 ..
· C#
프로그램의 상태를 저장하는 방법으로 INI를 많이 사용합니다. INI는 사용이 간편하고 초기화가 쉽기 때문에 많이 사용하지만 암호화가 제외된 만큼 보안에 취약하기도 합니다. 하지만 간단한 프로그램에서는 여전히 유용한 기능이니 알아두시면 좋습니다. ✅ INI 설정파일 C#에서 INIManger라는 Class로 .ini 파일을 관리하는 방법입니다. INI를 사용하기 위해 WINApi의 kernel32.dll 를 사용합니다. 우선 Kernel32Handler 라는 클래스를 만듭니다. 클래스명과 같은 파일명으로 생성합니다. Kernel32Handler.cs using System; using System.Runtime.InteropServices; using System.Text; namespace INI { ..
· WPF
WPF의 XAML 디자이너는 참 재미있는 녀석입니다. 그리고 종종 아주 분노하게 만들기도 합니다. 보통 디자이너가 활성화 상태면 디자이너 자체에서 프로그램을 실행해 버립니다. XAML의 수정사항이 즉각 반영되는 것은 좋은데 연산량이 많은 프로그램이라면 디자이너가 못 버티고 비주얼 스튜디오가 종료되어 버리는 황당한 상황이 발생하곤 합니다. ✅ Designer 에서 실행 차단 방법 현재 개발 중인 프로그램인데 100 FPS 정도로 Data를 가져와서 화면에 Chart를 그립니다. XAML을 조금 수정하려고 하면 종료되어 버립니다. 물론 소스코드도.. 디자이너에서 프로그램 실행을 막고 싶은데 비주얼 스튜디오 옵션에서는 찾을 수가 없어서 구글링을 했습니다. 디자이너 차단 코드 #if DEBUG if (Desig..
· C#
이 방법은 최신 C# 에서 동작하지 않습니다.조만간 다시 포스팅하겠습니다.      ICloneable 인터페이스는 단 한개의 메서드(Clone) 를 가지는 간단한 인터페이스입니다.이름과 같이 기존 객체의 복사를 위한 Clone()을 구현하면 되는데 얕은 복사 (ShallowCopy)와 깊은 복사 (DeepCopy)를 적절하게 사용해야합니다. 얕은 복사와 깊은 복사에 대해서는 다음 포스팅에서 알아보고 이 포스팅에서는 ICloneable 구현 미세팁을 공유합니다.  ✅ ICloneable.Clone() Return Type    Clone()을 그대로 구현하면 아래와 같은 형태가 됩니다. public class Person : ICloneable{ public string Name { get; set..
· WPF/xaml
Windows의 기본 Window UI, 최소화, 최대화, 닫기 버튼을 Custom 디자인으로 변경해서 사용하고자 할 때 WindowsStyle=None 으로 설정하면 상단에 크기 조절 영역이 흰색으로 남아서 보기 좋지 않습니다. 없애야겠죠? ✅ WindowStyle=None 일 때 상단의 StripBar 삭제 xaml 수정으로 간단하게 해결할 수 있습니다. WindowChrome 속성을 사용한 Style을 적용해서 없앨 수 있습니다. 짧은 팁이었습니다. ✅ WindowStyle=None 일 때 상단의 StripBar 삭제 - 끝 관련 포스팅 WPF: Global Style 적용하기 (xaml) 프로젝트 내의 같은 컨트롤에 동일한 Style을 적용하기 위해서 App.xaml에 Style을 정의하면 모든 ..
지난 포스팅에서는 TreeView의 확장(Expand) 버튼을 클릭했을 때 이벤트를 ViewModel에서 수신받는 방법을 알아봤습니다. 이번에는 확장할 때 현재 노드(디렉토리)의 자식을 추가하는 기능을 추가합니다. 윈도우의 파일탐색기 역시 같은 방식을 사용하고 있습니다. 구현 시 고려해야 할 내용은 노드를 추가할 때 자식 노드를 가지고 있는지 미리 확인해야 한다는 점입니다. ✅TreeView: 확장 시 자식 Directory 추가 Drive 정보 프로그램 실행 시 최초에 Drive 정보를 가져와서 TreeView에 추가합니다. ExplorerMainViewModel() 의 생성자에서 이를 수행합니다. 드라이브 정보를 읽어서 TreeView에 추가하는 코드는 아래와 같습니다. private void Add..
YUNYUN3915
윤윤, DEV