리눅스환경에서 .NET 프로젝트를 개발하던 중 런타임에서 설정파일을 불러오는 일이 필요했습니다. 위의 소스코드를 사용하면 프로그램의 현재 실행되고 있는 경로에서 config.json파일을 가져옵니다. config.json을 빌드파일경로에 둘 수도 있지만 저는 프로젝트파일과 같은 경로에 config.json을 두고싶었습니다. 이때 프로젝트폴더에 있는 config.json을 수정하면 빌드폴더에 있는 config.json은 수정되지않는 문제가있습니다. 이 문제를 해결하기위해 저는 Symbolic Link를 사용했습니다. Symbolic Link는 리눅스에서 사용하는 윈도우의 바로가기파일과 같은 역할을 합니다. 심볼릭링크를 생성할 위치로 이동해서 `ln -s` 명령어로 원본파일경로와 심볼릭링크이름을 지정해주면됩..
이 글에서는 Google.Cloud.Firestore Nuget Pakage를 사용하여 Firestore를 다루는 방법에 대해 설명한다. 1. Firestore를 사용하기 위해선 먼저 Firebase 프로젝트 설정에 들어간뒤 서비스 계정에서 비공개 키를 생성한다. 2. Visual Studio로 와서 프로젝트에 위에서 생성한 비공개 키를 기존 항목으로 추가한다. 기존 항목으로 추가한 비공개 키는 속성을 아래 사진과 같이 변경해준다. 3. 프로젝트의 Nuget Pakage관리자에서 Google.Cloud.Firestore 를 설치한다. 4. 이제 프로젝트의 Program.cs 로 온뒤 프로그램이 실행될 때 비공개 키를 환경변수에 등록되도록한다. class Program { public Main() { st..
이 글에서는 C# 프로젝트를 관리자 권한으로 실행하는 방법을 설명한다. 프로젝트안에 manifest파일이 있다면 `관리자 권한 요청하기`부터 보면된다. manifest 파일 생성하기 VisualStudio에서 프로젝트 > 추가 > 새 항목 에서 검색창에 기본 이름(app.manifest)으로 매니페스트를 검색한뒤 추가한다. 만일 영문버전을 사용하고있다면 manifest를 검색하면된다. 관리자 권한 요청하기 app.manifest파일을 열어보면 xml형식으로 작성된 데이터들이 보이는데 우리는 requestedPrivileges의 requestedExecutionLevel를 수정한다. requestedExecutionLevel 은 level과 uiAccess라는 두 파라미터를 가지고있다. 관리자 권한을 부여..
이글에서는 SHA256클래스를 통해 데이터를 암호화하는 방법을 설명한다. SHA256클래스를 사용하려면 Cryptography 네임스페이스를 사용해야한다. using System.Security.Cryptography; Crytography 네임스페이스는 데이터의 암호화 뿐만아니라 난수 생성, 메시지 인증 등의 수많은 기능들을 제공한다. 다음의 코드는 SHA256을 통해 데이터를 단방향 암호화하는 메서드이다. public string SHA256Encrypt(string data) { var bytes = Encoding.UTF8.GetBytes(data); var hash = new SHA256CryptoServiceProvider().ComputeHash(bytes); var encryptedData..
이 글에서는 라즈비안 운영체제에 도커와 도커 컴포즈를 설치해 본다. 도커 설치하기 도커는 일반적으로 레포지토리를 사용한 방식으로 설치된다. 하지만 라즈비안의 경우 아직 레포지토리를 사용한 방식이 지원되지 않아 편의 스크립트를 사용한 방식으로 설치해야된다. 또한 docker를 사용하기 위해선 root 또는 sudo권한이 필요하다. 전체 패키지를 업데이트한다. apt-get update curl을 통해 get.docker.com에서 스크립트를 다운로드한다. curl -fsSL https://get.docker.com -o get-docker.sh 다운받은 스크립트파일을 실행하여 Docker의 최신 릴리즈를 설치한다. sh get-docker.sh sudo 없이 docker 명령어를 사용하기위해 현재 사용자의..
라즈베리파이에 사용하던 SD카드에 새로운 운영체제를 다운로드하려고 포맷을 하였는데 32GB 용량이던 SD카드가 248MB로 나오고있다. 1. 윈도우의 검색창에 diskpart를 검색하거나 C:\Windows\System32\diskpart.exe를 실행한다. 2. list disk 명령어를 입력하면 목록이나오는데 32GB SD카드는 디스크2번인것을 알 수 있다. 3. sel disk 2 명령어를 입력해서 디스크 2번을 선택해준다. 4. clean 명령어를 사용하여 디스크를 정리한다. 5. 윈도우 검색창에서 컴퓨터 관리를 실행시키고 저장소-디스크 관리를 들어가서 디스크2에서 새 단순 볼륨을 선택한다. 6. 단순 볼륨 만들기 마법사에서 모두 다음을 눌러 마법사를 마치면 SD카드는 정상적인 용량을 표시하게된다.
람다란? 람다는 익명 메서드를 만들기 위해 사용되는 형식이다. 델리게이트로도 익명 메서드를 만들 수 있지만 람다를 사용하면 코드가 훨씬 간결해진다. 람다에는 두가지 형태가있는데 람다식과 람다문이다. // 람다식 (파라미터) => 식; // 람다문 (파라미터) => { }; 람다는 => 연산자로만 이루어지며 형식 유추라는 기능을 제공하기때문에 데이터 타입을 입력하지않아도되고 파라미터의 개수가 한개일 경우 괄호( ) 를 생략해도 된다. delegate int Calc(int x, int y); /* 실행 : Clac Plus = (int x, int y) => x + y; Console.WriteLine(Plus(10, 20)); Clac Minus = (x, y) => { return x - y; } Co..
메서드란? 메서드는 객체 지향 언어에서 사용하는 용어로, C/C++에서는 함수라고 불린다. (Method는 영어 발음이기 때문에 메서드, 메소드 등 비슷한 이름으로 불린다.) 메서드는 여러 코드 들을 하나의 이름 아래에 묶어놓는 역할을 하는데 이렇게 묶인 코드들은 메서드의 이름을 호출하여 실행할 수 있다. class 클래스명 { 한정자 반환형식 메서드명(파라미터) { /* 여러 코드들.. */ return 반환값; } } 위의 소스코드는 메서드에 대한 선언형식이며, 메서드는 클래스 안에 선언되어야 한다. 왜 메서드가 클래스 안에 선언되어야 하는지와 같은 내용은 객체지향에 대해 알아보면 된다. 한정자 : 메서드의 범위, 정적, 동적 등을 결정하는 것으로 클래스에 대해 배우면 알 수 있다. 반환 형식 : 메..