본문 바로가기

Programming/Tips(C++,C#)142

C#에서 List를 Dictionary로 (feat. LINQ) C#에서 List를 Linq를 사용하여 Dictionary로 만들기. 예를들어 아래와 같은 class가 있다고 하자. public class MemberInfo{ public int Level{get; set;} public int Score{get; set; } public string name{get; set;} } 이러한 List 를, 등급을 기준으로 묶어서 보고싶다면.. 다음과 같이 작성하면 된다. private Dictionary convertToDictionary(List list){ var result = list.OrderBy(x => x.Level) .GroupBy(x => x.Level) .ToDictionary( x=> x.Level, x); return result; } 만약 저 목.. 2023. 3. 31.
이미지 특정부분에 링크걸기 (html) 이미지 특정 부분에 링크걸기. C++, C#은 아니지만, 나름 tip이므로.. 이미지 특정 영역에만 링크를 걸 수 있는 방법이 없나.. 찾아보다가 발견! (원글 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=kimsheep1030&logNo=220298611611 ) 여기에 나온 map과 area 태그를 이용해서 찾다보니.. https://www.w3schools.com/tags/att_area_coords.asp HTML area coords Attribute W3Schools offers free online tutorials, references and exercises in all the major languages o.. 2022. 8. 18.
CustomURI - Web에서 클라이언트 실행하기 오랫동안 WebPage에서 Client프로그램을 실행하기 위해서 ActiveX를 썼었다. ActiveX를 요청하면 걔가 Client를 구동하는 형식. 이런거 요즘 다 막힌다. 보안문제로.. (하지만 여러 악성 ActiveX가 난립하던 환경이 사라져서 환영하는 1인) 근데 웹에서 Client를 실행할 수 있는 방법이 있다. 특정 URI로 전달하면 윈도우가 레지스트리를 찾아서 그 URI가 있으면, 해당 URI에 정의된 클라이언트 프로그램을 실행하는 방식이다. 이 방법은 ActiveX보다 더 안전한것 같다. 먼저, ActiveX는 서버가 클라이언트에 프로그램을 배포하고, 그 배포된 프로그램이 동작한다. -> 뭘 배포할지 어떻게 아냐 CustomURI는 클라이언트에 프로그램을 설치하면서, 특정 레지스트리에 값을.. 2022. 7. 27.
VC++. 디버그모드 메모리의 값의 의미 VC++에서 디버그모드에서만 해당된다. (릴리즈는 해당안됨. 그리고 이 메모리 주소는 VisualStudio를 사용해서 VC++라고 할뿐 C++에는 다 해당되는 이야기) 메모리 주소에 값이 들어가있다. 이 의미는? 어느 주소를 바라볼지, 어느값이 들어가있는지가 의미지.. 하지만, VC++디버그 모드에서는 특정한 메모리에 대해서는 특정한 값으로 메모리 상태를 알려준다. Release에서는 괜찮은데 Debug시에만 Access Violation이 발생하는경우라면.. 메모리 상태값이 들어가서 발생하는경우다. (사실 위험한 코드인건데 Release에서는 운좋게 프로그램이 살아남았다고 보면 된다.) 예를들어.. 다음과 같은 코드를 보자.. public CString myClass::GetName(){ CStrin.. 2022. 7. 25.
VC++ Release모드로 디버깅하기 Visual Studio에서 VC++로 실행하면, Release와 Debug가 있다. 둘의 차이는? 1. PDB파일의 생성여부 2. 최적화 여부 3. _DEBUG 전처리기 정의여부 실행중인 프로세스에 연결하면.. 디버그 모드로 연결은 된다. 근데 중단점 설정이나 소스코드 위치는? 많이 다르다. 중단점 설정에 필요한거 : PDB파일 프로젝트 -> '속성' 에 들어가보자. 구성속성 중, '링커' -> '디버깅' 선택해보면.. 위와 같이 디버그 정보 생성이 되어있어야 PDB파일이 생성된다. (VS2022에서는 Release도 생성하게 해주는 것이 default로 된듯? VS2018인가까지는 생성안함이 Default였는데..) 여튼.. 저 옵션이 되어있으면 PDB파일이 생성되고, 해당 프로세스에 붙여서 디버깅이.. 2022. 7. 25.
C++ 메모리 누수 탐지. 원글 (마소독). 오.. 많은 기법이 추가되었다. C++에 손놓은지 벌써 근 10년.. (그동안 C#에 가있었어요) 그사이에 많은 기법이 추가되었다. 우선 공통적인건.. 메모리 누수를 찾기 위해 정보를 달라고 선언해야한다. 뭐.. '추적을 할테니 준비해달라' 이정도 선언? #define _CRTDBG_MAP_ALLOC #include #include 그리고 디버그 정보를 추적할 준비해달라고 했으니 이제 정보를 캐야지. 프로그램 시작점 (전체 프로그램의 시작점. ) _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); 위 함수를 호출하여 디버그 플래그를 찍는다. 그리고 프로그램의 종료지점 (클래스 소멸자나 함수 끝이 아니다. 프로그램 종료다.).. 2022. 7. 21.
728x90