전체 글

전체 글

    C# 프로그램 배포 시 소스 코드 보호하기 : 난독화와 패킹

    소스 코드 노출C#으로 개발된 프로그램을 배포할 때, 소스 코드가 쉽게 노출될 수 있다는 문제점이 있습니다. 이는 C#이 .NET 프레임워크를 기반으로 하는 관리 코드(managed code) 언어이기 때문입니다. C# 컴파일러는 소스 코드를 직접 기계어로 변환하지 않고, 중간 언어(IL, Intermediate Language)로 변환합니다. 이 IL 코드는 실행 시점에 JIT(Just-In-Time) 컴파일러에 의해 기계어로 변환됩니다. 이로 인해 C#으로 작성된 프로그램의 실행 파일(.exe)이나 라이브러리(.dll)는 디컴파일하기 쉬운 상태로 배포됩니다. 악의적인 사용자가 IL 디컴파일러를 사용하면 원본 소스 코드와 매우 유사한 코드를 쉽게 얻을 수 있습니다.  소스 코드 보호를 위한 방법이러한 ..

    Directory : 디렉토리 관리

    C#에서 디렉토리와 파일을 다루는 작업에는 필수적인 Directory 클래스에 대해 알아보겠습니다. 이 클래스는 디렉토리 생성, 삭제, 이동, 이름 바꾸기, 열거 등 다양한 기능을 제공하며, 파일 관리와 함께 폴더 구조 관리에도 강력한 도구입니다.Directory 클래스 소개Directory 클래스는 System.IO 네임스페이스에 속하며, 정적 메서드와 인스턴스 메서드를 통해 다양한 디렉토리 작업을 수행할 수 있도록 지원합니다.핵심 기능:디렉토리 생성 및 삭제: CreateDirectory, DeleteDirectory디렉토리 이동 및 이름 바꾸기: MoveDirectory, RenameDirectory디렉토리 정보 확인: Exists, GetCreationTime, GetLastAccessTime, ..

    Costura.Fody : 참조 DLL 라이브러리 하나로 합치기

    .NET 개발자라면 누구나 겪는 고민, 바로 프로젝트 배포 시 참조 DLL 라이브러리 관리입니다. 여러 DLL 라이브러리를 따로 배포해야 하는 경우, 사용자들에게 불편을 줄 수 있고, 프로젝트 관리에도 어려움이 발생할 수 있습니다. 이러한 문제를 해결하기 위해 Costura.Fody라는 유용한 도구를 활용할 수 있습니다. Costura.Fody는 Fody라는 .NET 코드 변환 도구를 기반으로 작동하며, 프로젝트에 참조된 모든 DLL 라이브러리를 단일 DLL 파일로 합쳐 제공합니다. 이를 통해 사용자들은 별도의 DLL 설치 없이도 간편하게 앱을 실행할 수 있으며, 개발자는 프로젝트 배포 및 관리를 한층 더 효율적으로 수행할 수 있습니다. 사용 방법 NuGet 패키지 설치: Visual Studio에서 C..

    Unity 화면 꺼짐 방지

    모바일 앱 개발자라면 누구나 경험했을 끔찍한 순간, 바로 중요한 작업 진행 중에 화면이 꺼지는 것입니다. 이러한 불편한 상황을 방지하기 위해 Screen.sleepTimeout 프로퍼티를 사용하여 화면 꺼짐을 자유롭게 제어할 수 있습니다.  Screen.sleepTimeoutScreen.sleepTimeout 프로퍼티는 모바일 앱에서 화면이 꺼지기까지 기다리는 시간을 설정합니다. 기본적으로 이 값은 사용자가 마지막으로 화면을 만진 후 일정 시간이 지나면 화면이 꺼지도록 설정되어 있습니다. 하지만 Screen.sleepTimeout 프로퍼티를 사용하여 원하는 대로 화면 꺼짐 시간을 변경할 수 있습니다. 작동 방식SleepTimeout.NeverSleep는 최대값을 의미하며, 이 값을 Screen.sleep..

    Unity 인터넷 연결 확인하기

    Application.internetReachability란Application.internetReachability는 유니티에서 제공하는 프로퍼티로, 현재 디바이스의 인터넷 연결 상태를 나타냅니다. 이 프로퍼티는 세 가지 값을 반환하며, 각 값은 다음과 같은 의미를 가지고 있습니다:NotReachable: 인터넷 연결이 전혀 없음ReachableViaCarrierDataNetwork: 이동통신 데이터 네트워크를 통해 인터넷에 연결됨ReachableViaLocalAreaNetwork: Wi-Fi 네트워크를 통해 인터넷에 연결됨활용 방법Application.internetReachability는 다양한 상황에서 유용하게 활용될 수 있습니다. 대표적인 활용 사례는 다음과 같습니다.인터넷 연결 필요한 기능 제..

    Cherry-Pick : 특정 커밋 선택적으로 적용하기

    Git 사용자라면 누구나 알아야 할 강력한 기능, 바로 Cherry-Pick입니다! Cherry-Pick은 마치 원하는 체리를 골라서 따는 것처럼, 특정 커밋을 선택적으로 다른 브랜치에 적용하는 기능입니다. 이 강력한 도구를 활용하면, 코드 개발 과정에서 발생하는 다양한 상황을 효율적으로 해결할 수 있습니다. Cherry-Pick란Cherry-Pick은 Git에서 제공하는 명령어로, 특정 커밋의 변경 사항을 다른 브랜치에 복사하여 적용하는 데 사용됩니다. 마치 다른 브랜치에서 맛있는 체리를 골라서 우리 브랜치의 케이크에 올리는 것과 비슷하다고 생각하면 됩니다. Cherry-Pick을 사용하는 이유는 무엇일까요?Cherry-Pick을 사용하면 다음과 같은 다양한 상황에서 유용하게 활용할 수 있습니다.특정 ..

    Git 특정 크기 이상 파일 제외하고 추가하기

    git add 명령어를 사용할 때 특정 크기 이상의 큰 파일을 제외하고 추가하려면, find 명령어와 xargs 명령어를 조합하여 조건에 맞는 파일만 추가할 수 있습니다. 예를 들어, 10MB 이상의 파일을 제외하고 Git에 추가하는 방법을 설명하겠습니다.gitignore가장 간단한 방법은 .gitignore 파일을 사용하여 특정 파일이나 디렉토리를 무시하는 것입니다. 그러나 파일 크기를 기준으로 무시하는 것은 .gitignore로 직접 할 수 없습니다.find와 xargs 명령어 사용find 명령어를 사용하여 특정 크기 이하의 파일을 찾고, xargs 명령어를 사용하여 git add 명령어에 전달합니다. 예제10MB 이상의 파일을 제외하고 Git에 추가find . -type f -size -10M -p..

    SendMessage와 PostMessage

    윈도우 프로그래밍에서 메시지는 윈도우 간 통신과 이벤트 처리의 핵심적인 역할을 합니다. SendMessage와 PostMessage 함수는 윈도우 간 메시지를 전달하는 데 사용되는 두 가지 주요 API입니다.  SendMessage특정 윈도우에 메세지를 직접 전달하고 즉시 결과를 반환합니다. 즉, 메세지가 처리될 때까지 기다립니다.[DllImport("user32.dll")]public static extern IntPtr SendMessage(int hwnd, int wMsg, int wParam, string lParam);// hwnd 메세지를 전달할 윈도우의 핸들// wMsg 잔달할 메세지 ID// wParam 메세지와 함께 전달할 추가 데이터// lParam 메세지와 함께 전달할 추가 데이터//..