분류 전체보기 (337)

C# 마우스 드래그 이벤트로 폼 이동하기

머리말 프로그래밍 언어를 모두 암기할 수 없다. 본인도 주로 필요할 때마다 검색을 통해 문제를 해결하면서 개발한다. 하지만 검색 결과 조금씩 다른 결과를 가리킨다면 혼란스럽다. 본 포스팅에서는 C# 개발환경에서 마우스 드래그로 폼을 이동시키는 방법에 대해서 설명하는데, 불 필요하게 전역 변수를 사용하지 않는 방법으로 소개한다. 가장 최적화된 방법이라 생각된다. 마우스 드래그로 폼 이동하기 본인의 경우 폼의 타이틀 영역을 비활성화 처리한 뒤, 모든 영역을 드래그했을 때 폼이 이동시키도록 개발을 진행하고 있었다. 그렇기 때문에 메인 폼에 MouseDown, MouseMove 두 개의 이벤트만 사용해서 구현했다. 추가된 각 이벤트에 각각 기능을 코딩해주면 되는데, MouseDown 이벤트에는 현재 마우스의 좌..

Language/C# | 2021. 3. 29. 08:00

C# 트레이 아이콘(Tray Icon) 생성 방법

머리말 컴퓨터에 지속적으로 상주해서 실행되는 프로그램을 개발하다 보면 아이콘이 트레이 영역에 표시되는 게 좋다고 판단되는 경우가 있다. 이를테면 보안 프로그램이나 시스템 모니터링과 같은 프로그램을 예로 들 수 있다. 그러한 프로그램은 대다수 프로그램 화면을 직접 열어보는 경우가 흔치 않으며, Windows 하단의 작업 표시줄에 지속적으로 노출되면 더욱 불편할 따름이다. 본 포스팅에서는 C# 개발 환경의 프로그램을 트레이 영역에 노출시키는 방법을 설명하도록 한다. C# 개발환경은 '디자인 폼'을 이용하는 스타일과 '직접 디자인을 코딩'하는 스타일로 구분할 수 있는데, C#의 강점 중 하나인 강력한 디자인 퍼포먼스를 고려해 디자인 폼을 이용하는 방법으로 설명한다. 직접 코딩하는 방법도 나쁘진 않지만 제공되는..

Language/C# | 2021. 3. 28. 03:11

C# JSON 파싱(parsing): Newtonsoft 및 System.Text.Json

머리말 본 포스팅이 C# 개발환경에서 JSON 사용방법을 설명하는 마지막 포스팅이다. 첫 번째 포스팅에서는 JSON의 배경과 구조에 대한 설명, 두 번째 포스팅에서는 직렬화 및 역직렬화에 대한 설명을 담았다. 필요하다면, 아래의 '도움이 될만한 포스팅' 영역에 링크를 남겨놓았으니 참고하길 바란다. 본 포스팅에서는 Newtonsoft.Json 라이브러리와 System.Text.Json 라이브러리에 대해 간략한 사용 방법을 설명한다. # 도움이 될만한 포스팅 C# JSON 파싱(parsing): 배경과 구조 이해 C# JSON 파싱(parsing): 직렬화 및 역직렬화 개념 C# JSON 파싱(parsing): Newtonsoft 및 System.Text.Json Newtonsoft.Json 라이브러리 Ne..

Language/C# | 2021. 3. 21. 07:40

C# JSON 파싱(parsing): 직렬화 및 역직렬화 개념

머리말 C# 개발환경에서 JSON을 다루기 위한 두 번째 포스팅이다. 첫 번째 포스팅에서는 JSON 배경과 구조에 대해서 설명했는데, 필요하다면 상단의 '도움이 될만한 포스팅'에 링크를 남겨 놓았으니 참고 바란다. 본 포스팅에서는 C# 환경에서 널리 사용되는 JSON 라이브러리를 비교한 뒤, 직렬화 및 역직렬화의 개념에 대해서 설명하도록 한다. 라이브러리 사용에 앞서, 먼저 어떤 라이브러리를 사용해야 될지 고민이 될 수 있다. 자신의 소중한 프로그램에 사용할 라이브러리인데, 아무거나 대충 사용할 수 없다. 대표적으로 사용되는 라이브러리는 두 가지 정도만 기억해도 좋다. NewtonSoft에서 배포하는 Newtonsoft.Json 라이브러리와 .NET Core 개발팀에서 배포하는 System.Text.Js..

Language/C# | 2021. 3. 21. 07:09

C# JSON 파싱(parsing): 배경과 구조 이해

머리말 본 포스팅에서는 C# 개발 환경에서 JSON 데이터를 다루는 방법에 대해 자세하게 소개한다. 다른 블로그의 내용만으로도 어느 정도 자신이 원하는 기능은 구현할 수 있다. 하지만, JSON의 개념을 먼저 이해하지 못한다면 라이브러리를 선택함에 있어서 자유롭지 못하고 특이한 예외 상황에 유연하게 대응하는데 한계가 있다. 그렇기 때문에 총 세 번의 포스팅으로 JSON에 대한 개념적인 내용을 소개할 것이며, 먼저 본 포스팅에서는 JSON에 대한 배경과 구조에 대한 내용을 소개하도록 한다. 만일, 사용 방법에 대한 요점만 필요하다면 상단의 '도움이 될만한 포스팅'의 세 번째 포스팅으로 건너뛰어도 좋다. 수십 년 동안 시스템 간 데이터를 이동하기 위한 데이터 포맷으로 XML을 사용해왔다. XML은 현재도 많..

Language/C# | 2021. 3. 21. 06:43

C# 클립보드(CliepBoard) 복사 및 가져오기: 텍스트, 이미지

머리말 아마도 본인은 처음으로 클립보드를 복사하는 기능을 접한건, 어느 웹사이트에서 목격했던 것으로 기억한다. 지정된 문자열을 클립보드로 자동 복사해준다니 고맙게 생각했었다. 그 후 시간이 흐르고 C# 라이브러리에서도 클립복사 기능을 제공할지 의문이 들었다. 생각보다 너무 쉽게 처리한 클립보드 복사 기능을 본 포스팅에서 소개한다. 클립보드 라이브러리 사용하기 아마도 키워드를 몰라서 검색하다 본 포스팅까지 도달했을 것 같다. 설명할 것도 없이 너무 간단하게 처리가 가능하다. 아래의 예제와 같이 처리하면 너무 쉽게 클립보드로 복사하는 라이브러리를 사용할 수 있다. 'System.Windows.Forms'에서 제공하는 라이브러리를 사용할 수 있는데, C# 프로그래밍에서 기본으로 사용되는 라이브러리라 Clipb..

Language/C# | 2021. 3. 18. 00:34

[C#] WebClient Timeout 설정 방법

머리말 C# 환경에서 개발하다 보면 HTTP 웹 요청을 코딩하는 경우가 발생한다. 웹 객체의 종류는 많지만 지원하는 함수와 프로퍼티는 제각각이라 모두 외우고 있기는 쉽지 않다. 본 포스팅에서는 WebClient 객체에서 Timeout 프로퍼티를 설정하는 방법에 대해서 소개한다. 최대한 간결하고 가볍게 구성하기 위해 고민을 많이 해봤지만, 소개하는 방법이 최선의 방법이라 생각된다. WebClient 객체에서 Timeout 설정 방법 웹을 이용하는 클라이언트에서 주로 사용되는 기능을 모아놓은 것이 WebClient이며, 그렇기 때문에 HttpWebRequest, HttpWebResponse 클래스를 직접 사용하는 것보다 무겁다. 이유는, WebClient 클래스는 HttpWebRequest, HttpWebR..

Language/C# | 2021. 3. 7. 10:33

티스토리 블로그 저품질 원인: 키워드 반복

머리말 대한민국에서 포스팅을 하는 블로거라면 네이버의 검색 유입에서 자유로울 수 없다. 대다수의 블로거라면 검색 유입의 절반 이상이 네이버 유입이라고 생각해도 과하지 않다. 하지만 네이버에서 자신의 블로그에 검색 유입을 유도하는 것은 매우 까다롭다. 하루 사이에도 같은 키워드로 발생되는 포스팅 개수는 헤아릴 수 없을 것이며, 그 포스팅 사이에 우선순위를 선별하는 절차 또한 공개되지 않기 때문이다. 홍보성 글이나 상위 노출만을 위한 단순하고 기계적인 포스팅은 네이버에서 정해진 로직에 따라 일명 '저품질' 블로그로 분류되며, 포스팅된 글의 전부 또는 일부가 노출 제한에 걸리게 된다. 노출이 제한되는 상황에 대해서 해당 포털에서는 피드백이 없으며, 악성 포스팅이라는 것이 그 이유일 것이다. 하지만 많은 블로거..

Blog/Tistory | 2021. 2. 21. 23:50

MySQL 세자리 콤마찍기 및 천단위 콤마찍기: FORMAT 함수

머리말 PHP를 활용해 웹 페이지를 개발하던 중 숫자 값을 MySQL로부터 리턴 받을 경우가 발생했다. 결과 값을 리턴 받아서 웹 페이지에 정상적으로 표현했는데, 숫자 값에 천 단위 구분 콤마가 찍혀있지 않아서 눈에 거슬린다. 당연히 천 단위 구분 콤마를 찍는 방법은 여러 가지 존재한다. 본인의 경우에는 결과 값을 리턴 받아서 JavaScript 함수로 처리할 수 있었겠지만, 웹페이지 접속자 장비의 리소스를 최소화해야 하는 상황이었다. 때문에, 자원이 많이 여유로운 MySQL에서 천 단위 구분 콤마를 처리하는 방법으로 개발을 진행했다. 이와 같이 서비스 종류와 상황에 따라 다양한 방법 중 선택을 해야 하는데, 본 포스팅에서는 MySQL의 FORMAT 함수를 활용해서 천 단위 구분 콤마를 발생시키는 방법을..

Database/MySQL | 2021. 2. 21. 21:01

사이트맵(sitemap) 생성 방법 및 만들기

머리말 본인은 사이트맵을 되도록이면 일주일에 한 번씩 생성한다. 사이트맵을 생성하는 이유는 구글 웹마스터 도구에 본인의 블로그 현황을 갱신하기 위해서다. 매일마다 블로그 현황을 갱신하는 것은 아닐지라도 일주일에 한 번 정도는 자신의 블로그를 수집해가는 검색엔진에게 변경사항을 알릴 필요가 있기 때문이다. 본 포스팅에서는 사이트맵을 생성하기 위해 대표적으로 이용하는 사이트 두 곳을 소개할 것이다. 포스팅을 작성하는 시점에는 사이트맵 생성을 지원하지만, 추후에는 지원을 하지 않을 수도 있으니, 소개된 사이트에 문제가 발생하면 댓글로 신고해주면 포스팅을 업데이트할 예정이다. [+2021.02.20] 티스토리 블로그의 경우 더 이상, 아래와 같은 외부 서비스에 의해 사이트맵을 생성하지 않아도 된다. 티스토리에서 ..

Blog/General | 2021. 2. 20. 22:14