C# - binary 데이터 읽고, 쓰기

읽기 BitConverter BitConverter 클래스의 타입 별 함수를 사용한다 var data = new byte[2048]; var pos = 0; Int16 PacketID = BitConverter.ToInt16(data, pos); pos += 2; UnSafe public static unsafe short Int16(byte[] bytes, int offset) { fixed (byte* ptr = bytes)...
더 읽기

MQTT

출처 ##MQTT란? MQTT(MQ Telemetry Transport)는 publish/subscribe 모델을 기반으로 하는 경량 메시지 프로토콜이다. 네트워크가 불안정한 장소에서 동작하기 위한 기능이나 힘이 약한 장치에서 움직이기 위한 경량화 등이 특징이다. MQ라고 이름이 붙어 있지만, 부하를 분산시키기 위한 이른바 Job Queue는 없다 . 그런 용도로는...
더 읽기

C++ - C4100 경고를 없애주는 UNREFERENCED_PARAMETER 매크로

VC에서 경고 레벨 4로 컴파일 하면 자주 볼 수 있는 경고주 하나가 아래와 같은 경고이다. warning C4100: 'argc' : unreferenced formal parameter warning C4100: 'argc' : 참조되지 않은 형식 매개 변수입니다. </br> 선언은 했는데 사용하지 않았기 때문에 나온 것이다. 이런...
더 읽기

golang - CentOS 7에서 Go 설치하기

Go 다운로드 여기에서 다운로드 $ cd ~ $ wget https://dl.google.com/go/go1.12.6.linux-amd64.tar.gz 설치 다운로드한 파일의 업축을 푼다. $ sudo tar -C /usr/local -xzf ~/go1.12.6.linux-amd64.tar.gz 환경 변수 환경 변수에 Go의 path를 추가한다. export PATH=$PATH:/usr/local/go/bin $ vim ~/.bashrc $ source ~/.bashrc 동작 확인 $...
더 읽기

C# - 소켓 옵션

아래 코드는 C#에서 소켓 옵션을 설정하는 예제 코드이다. 출처: https://docs.microsoft.com/ko-kr/dotnet/api/system.net.sockets.socket.lingerstate static void ConfigureTcpSocket(Socket tcpSocket) { // Don't allow another socket to bind to this port. tcpSocket.ExclusiveAddressUse = true; // The socket will linger for 10 seconds after Socket.Close is called....
더 읽기

ASP.NET Core 서버 시작까지 흐름 추적

출처 프로그램 엔터리 Program#Main Program 클래스의 Main 메소드 안은 아래처럼 되어 있다. 이것을 1행씩 따라가 본다. Program.cs WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .Build() .Run(); 1행: .CreateDefaultBuilder(args) WebHostBuilder 인스턴스 만들기 WebHostBuilder 인스턴스를 만든다. 소스 파일: https://github.com/aspnet/AspNetCore/blob/master/src/DefaultBuilder/src/WebHost.cs var builder = new WebHostBuilder(); 환경 변수를 읽도로...
더 읽기

ASP.NET Core 애플리케이션 최소 구현 치트 시트

원본 아래의 설정만 하면 OK. csproj App.csproj <Project Sdk = "Microsoft.NET.Sdk.Web" > <PropertyGroup> <TargetFramework> netcoreapp2.0 </TargetFramework> </PropertyGroup> <ItemGroup> <! - 진짜 최소 구성 -> <PackageReference Include = "Microsoft.AspNetCore.Server.Kestrel" Version = "2.0.3" /> <! - ASP.NET Core MVC (Web API)를 사용할...
더 읽기

C# - Random 유틸리티

.NET 라이브러리의 기본 Random에 기능을 추가한 것이다. 아래 코드는 Unity용인데 조금 고치면 .NET에서도 사용할 수 있다. 출처 using System; using System.Collections.Generic; using System.Linq; using UnityEngine; using Random = UnityEngine.Random; namespace Assets.Scripts.Utils { public static class RandomUtil { /// <summary> ///...
더 읽기

C# - DateTime의 ParseExact, TryParseExact 메소를 이용하여 문자열 변환

ParseExact 메서드의 문자열 변환 DateTime 구조체에는 문자열을 변환하는 방법으로 Parse 메서드와 ParseExact 메서드가 준비 되어 있지만, 전자의 Parse 메서드는 문화권 정보를 사용하여 출력된 문자열을 같은 문화권 정보를 사용하여 DateTime 개체로 변환하는 것이다. 자신의 형식을 가진 문자열을 취급하는 경우에는 후자의 ParseExact...
더 읽기

C# 7.2의 구조체의 성능

출처 C# 컴파일러는 readonly를 따르는 일부 조건에서 구조체의 방어적 복사(defensive copy)를 생성한다. 이 문제는 잘 알려져 있고 문서화 되어 있지만 C# 7.2의 일부 기능과 관련이 있기 때문에 검토 가치가 있다. in및 ref readonly 키워드는 문제의 발생을 높이고 readonly 구조체는 수정...
더 읽기