반응형

c# 개발을 시작하면서 api로 데이터교환시 json포맷을 많이 사용하는데

 

그에 따라 json 각 속성들을 하나하나 클래스나 구조체 형식으로 구현해서 파싱을 했었는데

 

이 사이트에 샘플 코드만 넣어주면 해당 속성값으로 클래스가 자동으로 생성된다.

 

참고하면 좋을듯 하여 공유해본다.

 

사이트 주소: https://json2csharp.com/

 

Convert JSON to C# Classes Online - Json2CSharp Toolkit

 

json2csharp.com

 

반응형

c#에서 json object(Newtonsoft.Json 패키지 사용)을 간단하게 DataTable 형식으로 변환하는 방법을 공유한다.

 

이 방법을 알기 전에는 컬럼 하나하나씩 모두 파싱해서 넣어줬는데, 간단하게 끝나니 업무량이 줄어들었다.

 

DeserializeObject함수에 DataTable 형식을 지정해주고 string으로 변환된 json object를 넘겨주면 된다.

string strJson = @"[{'color':'red','value':'#f00'},{'color':'green','value':'#0f0'},{'color':'blue','value':'#00f'},{'color':'cyan','value':'#0ff'},{'color':'magenta','value':'#f0f'},{'color':'yellow','value':'#ff0'},{'color':'black','value':'#000'}]";
DataTable dtTable = JsonConvert.DeserializeObject<DataTable>(strJson);

반응형

다운 받은 파일의 파일명에 배포지의 주소나 광고문구가 앞에 삽입되어 있는 경우가 있다.

 

이럴 경우 Plex나 기타 미디어서비스를 이용할 경우 이러한 미디어를 정상적으로 인식하지 못하거나 파일명 정렬이 엉망이 되는 경우가 있다.

 

검색해 보니 "클리앙" 사이트에서 답을 구할 수 있었다. (원문)

 

쉘스크립트를 이용하여 일괄 변경하는것.

find /volume1/파일경로 -type f | xargs -I{} sh -c 'mv -v "$0" "${0/aaabbb.com@/}"' {} \;

hhd800.com

파일이 있는 경로와 불필요한 문구를 수정하고 이를 쉘스크립트로 Cron이나 직접 실행하도록 하여 작업하면 된다.

 

반응형

갑자기 Visual Studio에서 전체 찾기를 하는데 입력한 영문 간격이 이상하다.

 

Visual Studio 영문 간격 이상

그래서 해당 내용 검색이 안되는 문제가 생겼다.;;

 

구글링 결과 해당 문제는 Visual Studio에만 국한된 내용은 아닌것 같다.

 

해결 방법으로는 Alt+= (Alt키와 '='키 동시)에 눌렀다 떼주면 된다.

 

Alt+= 눌렀다 떼주면 다시 정상적으로 입력이 가능하다.

반응형

via@ https://www.wholetomato.com/features 

 

안 써본 사람은 있어도, 한 번만 써본 사람은 없다는 Visual Assist.

MS사의 Visual Studio 제품군을 이용한다면 한번씩은 들어봤을 터이고, 사용해봤을 범한 편리한 툴이다.

 

C#에서는 사용빈도가 높진 않지만 C++쪽에서는 은근 사용빈도가 높아 정리를 해보았다.

 

자주쓰는 단축키는 공식홈페이지의 문서에서 참조하여 정리하였다.

 

단축키는 기본 설정값 기준이다.

명령 설명 단축키
참조 찾기
(FindReferences)
현재 커서에 선택된 변수/함수가 참조되는곳 모두 찾기 Shift+Alt+F
심볼 찾기
(FindSymbolDialog)
대화상자가 나타나며, 키워드를 포함하는 현재 솔루션내 존재하는 심볼 나열 Shift+Alt+S
정의로 이동
(GotoImplementation)
현재 커서에 선택된 변수/함수 정의로 이동 Alt+G
헤더/소스 파일 전환
(OpenCorrespondingFile)
현재 문서의 헤더/소스 파일로 전환 Alt+O
파일 찾기
(OpenFileInSolutionDialog)
대화상자가 나타나며, 키워드를 포함하는 현재 솔루션 내 존재하는 파일 나열 Shift+Alt+O
리펙터 네이빙 변경
(RefactorRename)
현재 커서에 선택된 변수/함수의 네이밍 변경 대화상자.
(한번에 해당 변수/함수의 이름을 바꿀수 있어 유용)
Shift+Alt+R
스마트 선택영역 확장
(SmartSelectExtend)
현재 커서를 기준으로 여러번 누를시 선택영역 범위를 점차 늘림 (단어->문장->문단->블럭 순) Shift+Alt+]
스마트 블럭 선택영역 확장
(SmartSelectExtendBlock)
현재 커서를 기준으로 여러번 누를시 선택영역 범위를 블럭 단위로 늘림 Alt+]
스마트 선택영역 축소
(SmartSelectShrink)
위의 SmartSelectExtend와 반대되는 기능
선택 영역 범위를 점차 줄임
Shift+Alt+[ 
스마트 블럭 선택영역 축소
(SmartSelectShrinkBlock)

위의 SmartSelectExtendBlock와 반대되는 기능
선택영역 범위를 블럭단위로 줄임
Alt+[
반응형

MFC에서 각 윈도우 핸들간 메시지를  전달하는 방법으로 SendMessage와 PostMessage가 있다.

이 둘은 비슷하면서도 차이가 있다.

가장 많이 쓰는 곳이 쓰레드에서 UI 접근할때가 아닌가 싶다.

 

이 둘의 차이점을 가장 쉽게 표현하자면 비동기화와 동기화 차이라고 할 수 있다.

SendMessage

함수 원형

LRESULT SendMessage(
  HWND   hWnd,
  UINT   Msg,
  WPARAM wParam,
  LPARAM lParam
);

동작

SendMessage를 호출하게 되면 해당 윈도우의 메시지프로시져가 즉각 호출되어 해당 메시지의 처리가 끝날때까지 리턴하지 않는다.

즉, 동기화가 된다.

 

활용

해당 메시지 처리 작업이 길지 않은 곳에 사용하면 될것 같다. 간단한 UI 업데이트 등..

 

PostMessage

함수 원형

BOOL PostMessage(
  HWND   hWnd,
  UINT   Msg,
  WPARAM wParam,
  LPARAM lParam
);

동작

PostMessage를 호출하게 되면 해당 윈도우의 메시지 큐에 추가된다.

메시지 큐(Queue)에 호출 메시지만 삽입하고 바로 블럭을 빠져나온다.(즉시 리턴)

이는 곧, 메시지 처리 결과와 상관없이 다음 코드를 진입한다는 뜻이다. (비동기)

 

활용

메시지 처리작업이 오래걸리거나 처리결과가 중요하지 않는 경우에 사용될거 같다.

+ Recent posts