즐겁게 개발을...

개발보다 게임이 더 많이 올라오는 것 같은...

전체 글 271

노트: Evernote > Notion > Joplin

1년 전까지 에버노트를 계속 써오다가 업데이트 되면서 기존 메모들이 깨지기 시작하면서 Notion으로 옮겼었다. 약 6개월을 무료로 쓰다가 한달에 5달러 씩 내고 있는데 아까워서 이번에 Joplin이라는 것을 찾아 또다시 옮기고 있다. 옮기고 있다지만 각 노트마다 장단점이 있어서 아예 버린 것은 아니다. 에버노트는 다운그레이드를 한 후, 표 작성 및 디자인이 너무 쉬워서 아직 주간보고 작성용으로 사용 중이다. 노션도 표가 있기는 한데 너무 기능이 많고 복사 붙여넣기(복붙)이 어렵다. 한 줄마다 태그가 달려서 Ctrl+A(전체선택)이 먹지를 않는다. 순수 마우스 드래그로 전체선택을 해야하는 불편함. 그러고보니 에버노트 업그레이드 버전이 노션과 닮아 있다. 조플린은 어떤가? 심플하다. 마크다운을 기반으로 하..

FM2023 축구감독 생존기 (본머스편) #1

게임패스를 통해 FM2023을 접하고 있습니다. 일기형태로 지속적으로 업데이트 할 예정입니다. 게임 조건 DB 대형 : 대륙별 국가별 대표, 상위구단 선수 포함 리그: 대한민국 2부, 잉글랜드 3부, 독일 2부, 이탈리아 2부, 스페인 2부 이상 감독가능 초반 감독이 있는 팀은 맡을 수 없다. 스트레스 없이 하기 위해 게임 버그(계약, 이적)는 사용합니다. (나중에 팀에 돈이 남아돌면 가끔 제대로 이적예정임) 대륙권 코치자격이 있는 전 조기축구회 선수 전술도 자체 제작이 아닌 FMkorea.net에 있는 전술을 가져다 씁니다. 잉글랜드 리그 시작일자로 시작 잉글랜드 프리미어 본머스만 감독이 없어서 선택 (올해 20위 순위예상) 2022.11.09(수) 22.06.27 조기축구회 선수 출신이라 그런지 생존..

[2022.11] Enum Display name옵션으로 처리하는 방법

[2021.05] Enum을 Combobox에 값을 넣을 때 Foreach 문 활용방법 자주 사용하는 구문인데 맨날 기억이 나지 않아 예전 소스를 찾아 헤매는 것을 방지하기 위해 간단하지만 올립니다. foreach (string item in Enum.GetNames(typeof(PRODUCT_CATEGORY))) { cboProduct.Properties.Items.Add(it endev.tistory.com 요거의 확장 개념입니다. 위처럼 처리할 경우 상수를 그대로 표시하기 때문에 보기 좋지 않죠. DevExpress의 콤보박스의 경우 CustomDisplayText라는 이벤트를 통해 처리하는 것도 있는데 이 방법은 그 방법을 통하지 않는 일반적인 방식을 설명드리고자 합니다. 제가 사용하는 스킨 상수..

개발/C# 2022.11.07

[2022.10] 형식 이니셜라이저에서 예외를 Throw했습니다.

'Npgsql.TypeMapping.BuiltInTypeHandlerResolver'의 형식 이니셜라이저에서 예외를 Throw했습니다. 오늘은 이런 오류가 발생했을 때 조치사항을 알아보겠습니다. 본 사례에 대한 내용을 먼저 설명드립니다. 제품의 솔루션이 따로 있었고, A도구 프로젝트를 별개로 개발했습니다. Json파일 역직렬화를 위해 System.text.json을 Nuget으로 설치했는데 솔루션의 버전을 확인하지 않고 최신 안정화 버전인 6.0.0.6으로 개발을 진행했죠. 솔루션의 DLL을 참조하다가 DLL프로젝트에서 자꾸 오류가 나서 솔루션에 A도구 프로젝트를 병합했습니다. 그때부터 다른 프로그램들이 맨 위에 저 오류를 내 뿜으면서 동작하지 않는 현상이 발생하기 시작합니다. A도구는 별도 경로를 가진..

개발/C# 2022.10.24

[2022.09] UTC시간을 현재 시간으로 변환하는 구문

예전에는 이런 문제가 없었던 것 같은데 신기하네요. 저는 Postgresql DB를 사용하고 있습니다. DBMS 도구인 pg-admin에서 조회하면 현재시간으로 잘 나옵니다. 그런데 C#에서 Dapper를 이용해 쿼리하면 9시간이 빠진 UTC시간으로 조회되어 나옵니다. Postgresql의 연결객체에 Timezone을 설정하는 건지 아니면 Dapper에 처리하는 건지 찾아봐도 나오지 않아 그냥 가져와서 변환하는 방법을 택했습니다. (이 부분 아시는 분 알려주세요. T_T) TimeZone.CurrentTimeZone.ToLocalTime(DateTime.Parse(item.RunAt)).ToString("yyyy-MM-dd HH:mm:ss") Timezone이라는 클래스를 이용하는 방식입니다.

개발/C# 2022.09.30

[2022.09] 버전 관리의 고찰

기본 프로젝트를 생성하면 "1.0.0.0"으로 빌드된다. 차례대로 Major, Minor, Build, Revision이라는데 예전 VB 6.0 시절로 되돌아가면 빌드할 때마다 리비전 번호를 자동 증가시켜서 빌드할 때마다 아무짓 하지 않아도 배포될 때 해당 리비전 이력만 관리하면 됐었는데 요즘 VS에서는 안된다. [C#] Version 자동 설정 및 BuildDateTime 구하기 Assembly의 Build된 일시를 구하기 위한 방법을 설명 드립니다. 먼저 [Properties] 폴더에 [AssemblyInf.cs]를 엽니다. 다음과 같은 부분을 찾습니다. 보통 최 하단에 위치하고 있습니다. // You can specify all.. nsinc.tistory.com 요런 게 있다. 프로젝트 밑에 Pr..

개발/C# 2022.09.29

[2022.09] 이중실행 방지

사용자 실수로 인해 두번이상 실행을 막는 구문입니다. 자세한 내용은 주석을 참고해주세요. // 클래스 밖에서 선언해주세요. [DllImport("user32.dll")] public static extern bool IsIconic(IntPtr hWnd); [DllImport("user32.dll")] public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); [DllImport("user32.dll")] public static extern bool SetForegroundWindow(IntPtr hWnd); public static int SW_RESTORE = 9; // Program.cs 메인함수 내에 추가해주세요. 메인폼 들어가기..

개발/C# 2022.09.26

[2022.09] 현재 경로 가져오기 고찰

보통 현재폴더를 가져올 때 Directory클래스의 GetDirectoryName()을 이용해서 가져왔습니다. 탐색기에서 직접 실행하면 정상적으로 현재 폴더를 가져옵니다만, 다른 폴더에 있는 프로세스에 의해서 WorkingDirectory를 지정하지 않고 실행될 경우 Current Directory는 그 다른 프로세스의 경로가 현재경로가 되어 위 함수로는 현재폴더를 가져올 수 없습니다. string CurPath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); 위 구문으로 해야 정상적으로 현재폴더를 가져올 수 있습니다.

개발/C# 2022.09.26

[2022.09] Dapper 클래스 고도화

안녕하세요. 오늘은 기존에 올렸던 블로그의 클래스를 고도화해서 다시 올려봅니다. [2021.03] SqLite + Dapper(ORM) 사용방법 환경: Visual Studio 2017, C#, 닷넷 4.6.1 검색능력이 떨어진 건지 제대로 된 게시물이 없는 건지 국/내외 게시물을 다 뒤져도 안나와서 짜집기 + 자작으로 작성해보았다. Node.js에서 Squelize로 작년까지 endev.tistory.com 고도화 주제는 다음과 같습니다. 1. 인터페이스를 통해 클래스를 사용하는 위치에서 외부 참조를 사용하지 않게 한다. 2. 불특정 객체를 반환할 수 있도록 한다. 외부참조 사용하지 않게하기 IDBConnection은 범용적으로 모든 DB에서 인터페이스로 사용할 수 있습니다. 다만 DB별로 Connec..

개발/C# 2022.09.22

[2022.09] 비프 음을 Stop시킬 때까지 내게 하기

보통 오류 발생할 때 비프음을 넣을 때까지 많은데 이번 팁은 지속적으로 어떤 행위를 하고 있는 중에 지속적으로 비프음을 발생시킬 때까지 있습니다. 이때 사용하는 팁을 공유합니다. 제가 원하는 것은 삐~~~~~~~~~~~~~~~~~~~~~~~~~익인데, 삐삐삐삐삐삐삐삐삐삐삐삐삐삐삐삐 형태로 나옵니다. Duration을 길게 잡으면 되는데 이럴 경우 Beep함수에서 빠져나올 수가 없네요. 기본 제공되는 Beep클래스를 직접 구현한다면 가능할 것도 같습니다. 이것은 좀더 찾아보고 추가하겠습니다. 쓰레드 방식으로 구현한 다음 클래스를 추가합니다. public class BeepSound { private int _ToneHz; private int _gapMiliseconds; private bool _stop..

개발/C# 2022.09.21