Code 59

C# Generic: 서로 다른 타입 인수를 가진 제네릭 타입을 한 컬렉션에 담기

얼마 전 공부 중인 지인을 돕다가 예전의 내 경우와 똑같은 문제로 고민하는 것을 보았다. 서로 다른 타입 인수를 가진 제네릭 타입을 하나의 컬렉션에 담고 싶다는 것이다. 문제 어떤 타입이든 상관 없이 하나로 묶고 싶다고 생각한다면 object를 담는 컬렉션를 사용하는 방법을 떠올리기 쉽다. object로 할 수 있는 것은 Equals()나 ToString() 호출 정도이니 원하는 타입으로 캐스팅하여 사용하게 될 것이다. 캐스팅을 이용한 방법에는 크게 두 가지가 있다: 필요한 곳에서 필요한 대로 적당히 캐스팅해서 사용 언제 어디서 예외가 발생할 지 모르며 너무 즉흥적이라 작성한 본인도 의도를 잊어버릴 수 있다. Type 타입의 객체를 저장해 뒀다가 캐스팅하거나 비교해서 사용 장황하고 짜증나는 방식이다. 제..

Code/C# 2023.01.24

VSCode ssh 원격 세션 연결 시 Broken pipe 오류

문제: VSCode ssh 원격 세션 연결 시 Broken pipe 오류와 함께 아무 오류 메시지도 출력되지 않음 해결: 나의 경우 Linux 로컬에서 Windows ssh 서버에 연결할 때 이런 증상이 일어났다. 이는 VSCode가 ssh 서버가 Windows라는 것을 자동으로 인식하지 못해서 발생하는 현상이기 때문에, 서버 운영체제를 수동으로 지정해 주면 해결된다. //settings.json: "remote.SSH.remotePlatform": { "(Host)": "windows" }

Code/VSCode 2023.01.20

Todo Tree와 C# 확장의 충돌로 인한 느려짐

VSCode의 C#(Omnisharp) 플러그인이 눈에 띄게 느려진 것을 문득 깨달았다. 특히 Intellisense의 심볼 목록을 불러 오는 시간이 참을 수 없이 느렸다. 속도 저하의 원인으로 git과 관련된 확장을 의심했었는데, Todo Tree(Gruntfuggly.todo-tree)가 문제였다. https://github.com/Gruntfuggly/todo-tree/issues/689 [Bug] C# Extension causes VSCode to lag · Issue #689 · Gruntfuggly/todo-tree Edit: see comments below I have a 30MB 7zip file in the root of my project folder. Whenever I enabl..

Code/VSCode 2022.11.25

scanf 대신 fread 사용 시 참고

scanf는 null terminate를 해 주고 그만큼의 추가 공간이 필요 fread는 null terminate를 해 주지 않음 -> 배열이나 할당된 공간의 초기화 또는 직접 null terminate 필요 scanf("%[^\n]", str)으로 \n 문자를 입력받지 않을 수 있음 fread는 \n까지 읽어옴 // 100 글자 입력 char str[102] = {}; // null terminate를 위해 +1 int len = fread(str, sizeof(*str), sizeof(str) - 2, stdin); str[--len] = 0; //\n 무시 for (int i = 0; i < len; i++) ...

Code/C, C++ 2022.03.26