Post by Category

.NET (114) AWS (1) Book (3) C (1) C++ (91) Cloud (2) DB (9) ETC (20) Golang (68) Network (37) Node.js (5) OS (7) Rust (1) Visual Studio (37) etc (7) threading (5) 모임 (17) 번역 (20) 사례 (2)

.NET (114)

. NET Core 2.1의 개선 및 신 기능

February 20, 2018

툴 도입이나 확장 기능으로 기존 .NET CLI 툴 대신 “.NET Core 글로벌 툴(Global Tools)”라고 칭하는 새로운 기능이 도입된다. Node의 글로벌 툴과 같은 것으로 구문도 이쪽을 따르고 있다. .NET의 툴에 관한 새로운 에코 시스템이 확립되는 것을 Mi...

.NET - Buffer.MemoryCopy 함수

December 21, 2017

메모리 복사 속도를 올리기 위해서는 Array.Copy 보다는 Buffer.BlockCopy를 사용하는 것이 좋다. 단 Buffer.BlockCopy는 작은 크기(10~30 바이트 이하)의 복사에서는 Array.Copy 보다 뛰어나다고 할 수 없다. 원래 Buffer.Block...

.NET - Enums.NET

May 30, 2018

Enums.NET C#의 enum을 직접 사용하는 것에 비해 Enums.NET을 사용하는 것이 더 빠름. 아래는 비교 코드. 출처 using EnumsNET; using System; using System.Diagnostics; using System.Text; public...

.NET - WCF

October 9, 2018

기초 WCF 기초(한글) http://akj61300.blog.me/80182137426 WCF Step by Step http://blog.naver.com/saeparam/90024967440 WAS에서 호스팅하기 http://blog.ruaa.me/23 W...

.NET Core - .NET Core 2.1에 의한 Microsoft Bing의 고속화

October 13, 2018

출처

.NET Core - Improving .NET Core Kestrel performance using a Linux-specific transport

February 14, 2019

이 글을 구글 번역을 통해 일부 정리했다

.NET Core - RID 카탈로그

October 3, 2018

RID는 Runtime IDentifier(런타임 식별자)의 약어이다. RID 값은 응용 프로그램을 실행하는 대상 플랫폼을 식별하는데 사용된다. Docs의 설명

.NET Core 2.0 Ubuntu에 설치하기

September 27, 2017

공식 설치 문서 우분투에 아래와 같은 명령어를 터미널에 순서대로 입력하면 간단하게 설치가 끝난다. curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg sudo mv ...

.NET Core 2.0 봄에 출시 예정

January 18, 2017

원문 2017년 봄에 출시 예정. .NET Core 플랫폼에 있어서 큰 변화가 있는 버전이다. 버전 2이 되는 것으로 .NET Core 능력을 크게 확대하기 때문이다. .NET Standard의 버전이 2.0 이된다. .NET Standard 2.0 에서는 2배 가까운 AP...

.NET Core 2.0의 Random과 이전 버전(닷넷프레임워크 포함)과의 차이

June 20, 2018

.NET Core 2.0 이전 버전 및 닷넷프레임워크의 Random 클래스는 생성 시 직접 seed 값을 주지 않으면 Environment.TickCount 를 사용한다. 그래서 동시에 복수의 Random 클래스를 생성하면 seed 값이 같아서 복수의 Random 인스턴스에서 ...

.NET Core 2.1 preview2에서 네트워킹 개선

May 8, 2018

원문

.NET Core 설치 및 프로젝트 생성하기

November 29, 2017

원문 설치 Windwos - 다운로드 후 설치 - https://www.microsoft.com/net/core#windowscmd Ubuntu - 패키지 추가 - curl https://packages.microsoft.com/keys/microsoft.as...

.NET Core용 이미지 라이브러리

June 2, 2017

.NET Core를 사용하여 애플리케이션을 개발할 때 개발자가 알아야 할 결점 하나는 영상 기반 API가 없는 것이다. 보급된 API 중의 하나로 훌륭한 System.Drawing 이 있지만 이것은 Windows 기반의 GDI+ 인터페이스에 의존하고 있다. .NET Core에서는 ...

.NET의 모든 병렬 컨테이너는 lock-free 인가?

January 8, 2018

FAQ :: Are all of the new concurrent collections lock-free? 의 글을 일부 번역/정리. (이 대답은 .NET Framework 4를 기반으로 한다. 아래의 세부 정보는 문서화 되지 않은 구현 세부 사항이므로 향후 릴리스에서 변경 될 ...

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

August 27, 2019

출처 프로그램 엔터리 Program#Main Program 클래스의 Main 메소드 안은 아래처럼 되어 있다. 이것을 1행씩 따라가 본다. Program.cs WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>...

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

August 24, 2019

원본 아래의 설정만 하면 OK. csproj App.csproj <Project Sdk = "Microsoft.NET.Sdk.Web" > <PropertyGroup> <TargetFramework> netcoreapp2...

ASP.NET Core 하나의 호스트에서 http와 socket 통신 같이 하기

January 28, 2019

Github ASP.NET Core의 Kestrel을 사용하여 TCP Socket 프로그래밍을 할 수 있다. MultiProtocolAspNetCore 프로젝트의 Program.cs 파일의 내용은 아래와 같다. public static IWebHostBuilder CreateWe...

ASP.NET MVC - 컨트룰러의 다른 뷰 사용하기, View 컨트롤

October 7, 2018

컨트룰러의 다른 뷰 사용하기 // 기본 뷰 public ActionResult Index() { var model = new MailModels(); .... return View(model); } // 핸들러 public ActionResult SendMail(MailM...

C# - AWS S3

April 12, 2019

개요 AWS 공식 문서 S3 객체 만들기 var config = new AmazonS3Config(); config.RegionEndpoint = RegionEndpoint.APNortheast1; var s3Client = AWSClientFactory.CreateAm...

C# - AWS SNS

April 11, 2019

AWS SNS 프로그래밍 디바이스 토큰: 애플리케이션의 식별자. 각 플래폼이 발행. Endpoint Arn: 디바이스 토큰으로 생성하는 모바일 엔드포인터. SNS에서는 이 모바일 포인트를 사용하여 push를 보낸다. 가격: 월 100만 요청은 무료. 100만을 초과하면...

C# - ArraySegment 배열을 새로 할당하지 않고 특정 위치의 내용을 참고 하고 싶을 때

March 2, 2019

배열(예를들면 네트워크에서 받은 데이터를 저장한 버퍼 byte[] buffer)의 특정 위치에서 특정 크기만큼 참고하고 싶을 때 보통 새로 배열을 만든 후 복사해야 원하는 데이터만을 참조할 수 있다. 그러나 ArraySegment를 사용하면 새로 배열을 만들지 않으면서 버...

C# - Async/Await

April 4, 2019

http://csharpstudy.com/CSharp/CSharp-async-await.aspx C# 5.0 이 나온 이후 각 써드파티 라이브러리에서 비동기 메소드 지원 간편한 비동기 프로그래밍:async/await http://www.simpleisbest.ne...

C# - AutoMapper

March 1, 2019

기본 객체간의 복사를 자동으로 한다. 복사되는 객체에 복사한다. Nuget으로 설치 가능. 예 public class SourceType { public int SourceId { get; set; } public string Value { get; ...

C# - C++과 연동

May 19, 2019

꼭 봐야 될 것 http://sj21.wo.to/tt/483 http://sj21.wo.to/tt/484 http://blogs.msdn.com/junfeng/archive/2006/05/20/599434.aspx How to: Marshal Structures U...

C# - ConcurrentQueue, ConcurrentDictionary

March 14, 2019

ConcurrentQueue 자료구조 Queue의 멀티 스레드용 컨테이너 MSDN http://msdn.microsoft.com/ko-kr/library/dd267265.aspx 정의 var queue = new System.Collections.Concurrent....

C# - Dataflow

March 11, 2019

닷넷프레임워크 4.5에 추가 NuGet으로 입수 가능 https://www.nuget.org/packages/Microsoft.Tpl.Dataflow MSDN에 문서는 있지만 정식 닷넷프레임워크에는 추가 되지 않은 상태 MSDN: ht...

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

August 15, 2019

ParseExact 메서드의 문자열 변환 DateTime 구조체에는 문자열을 변환하는 방법으로 Parse 메서드와 ParseExact 메서드가 준비 되어 있지만, 전자의 Parse 메서드는 문화권 정보를 사용하여 출력된 문자열을 같은 문화권 정보를 사용하여 DateTime 개체로 ...

C# - Debug 클래스

February 27, 2019

Debug 클래스 Debug 클래스는 그 이름대로 디버그 정보를 출력하는 클래스이다. Debug 클래스는 System.Diagnostics 이름 공간에 있다. 사용 예 using System.Diagnostics; Debug.WriteLine("Start Met...

C# - Enum

March 16, 2019

Enum의 요소를 foreach로 열거하기 void Main() { foreach (TEST val in Enum.GetValues(typeof(TEST))) { Console.WriteLine("{0} - {1}", val, (int)val); ...

C# - File

March 28, 2019

클래스 단위로 파일에 쓰기 이 직렬화 방식은 꼭 .NET 플랫폼에서 서로 파일을 읽고 쓸 때만 사용 가능하다.만약 .NET으로 만든 프로그램에서 아래와 같이 파일을 만들고 이것을 네이티브에서 읽으면 앞에 다른 값이 들어가 있다( 정확하게는 직렬화 되는 클래스의 메타 정보가 들어가 ...

C# - Fluent Scheduler

April 7, 2019

기본 주 기능: 지정된 시간에 실행해야 할 Job을 등록해 놓으면 해당 시간이 되면 Job을 실행한다. 오픈 소스: https://github.com/jgeurts/FluentScheduler 설치: Nuget으로 쉽게 설치할 수 있다. 예제 코드 1) 현재 등록된...

C# - Http Request

March 13, 2019

닷넷프레임워크에서는 서버로의 동시 접속수가 기본으로 최대 2로 제한되어 있다. 이 때문에 웹서비스 클라이언트에서 웹 서비스등을 호출할 때 처리량을 올리가 위해서는 멀티스레드에서 웹서비스를 호출하여도 액티브한 최대 동시 접속 수는 2로 된다. 싱글 스레드로 통신 할 때와 비...

C# - IDisposable

March 21, 2019

개요 Disposable.Create() 로 IDisposable을 모을 수 있다. 컨테이너(IDisposableContainer)를 만들고 IDisposable한 인터페이스를 .AddTo(container)로 등록한다. public sealed class Resour...

C# - IPC

March 20, 2019

참조에 System.Runtime.Remoting을 추가한다. IPC로 통신할 데이터 객체 public class RemoteObject : MarshalByRefObject { static Queue<string> ClientMessage = new Queu...

C# - Linq

March 19, 2019

기본 Linq는 아래의 2개의 데이터 소스를 대상으로 한다. IEnumerable 주로 온 메모리 데이터 소스를 나타내는 Interface LINQ to Object, LINQ to XML IQueryable 주로 외부 데이터 소스를 ...

C# - List 컬렉션의 데이터를 랜덤하게 섞기

March 13, 2019

public static void Shuffle<T>(this IList<T> list) { Random rng = new Random(); int n = list.Count; while (n > 1) { n--; ...

C# - List, Tuple, Queue, SortedList, SortedDictionary, SortedSet

February 26, 2019

List 정렬 https://msdn.microsoft.com/ja-jp/library/w56d4y5z(v=vs.110).aspx https://msdn.microsoft.com/ja-jp/library/b0zbh7b6(v=vs.110).aspx https://msdn...

C# - NLog

April 1, 2019

특징 오픈소스 닷넷 플랫폼 로그 라이브러리 .NET Compact, mono도 지원 사용이 쉽고, 설정은 설정 파일과 소스 코드를 통한 2가지 방법 제공. 옵션 지정으로 버퍼링, 비동기, 로드 밸런싱, 장애대처 등을 할 수 있다. 출력 옵션 ...

C# - Process

April 6, 2019

실행중인 프로세스트의 디렉토리 위치 string 현재위치 = Environment.CurrentDirectory; 다른 프로세스 실행 System.Diagnostics.Process.Start("실행파일경로\실행파일명.exe",파라메터) System.Diagnostics.P...

C# - Random 유틸리티

August 22, 2019

.NET 라이브러리의 기본 Random에 기능을 추가한 것이다. 아래 코드는 Unity용인데 조금 고치면 .NET에서도 사용할 수 있다. 출처 using System; using System.Collections.Generic; using System.Linq; using Un...

C# - ScriptCs

April 13, 2019

개요 텍스트 파일에 적은 C# 코드를 컴파일러를 사용하지 않고 명령어로 실행할 수 있는 툴이다. Roslyn을 힘을 이용한 것이다. .NET Framework 4.5 이상이 필요하다. 공식 사이트 http://scriptcs.net/ 샘플 사이트 http...

C# - ScriptCs.Request

April 14, 2019

개요 http 요청 모듈 https://github.com/martinobrink/ScriptCs.Request 설치 scriptcs -install ScriptCs.Request 사용법 public class Notification { public st...

C# - ScriptCs.WebApi

April 16, 2019

개요 2015.09.14 현재 WebAPI 2는 ScriptCs 1.5에서 에러 발생 ScriptCs.WebApi2 WebApi를 사용할 수 있게 해준다. 설치 및 간단 사용 Web API script pack을 설치한다. scriptcs...

C# - SharpSVN

March 23, 2019

설명 닷넷에서 SVN을 조작하기 위한 라이브러리 SVN 서버의 버전과 맞추어야 한다. 공식 홈페이지는 http://sharpsvn.open.collab.net/ 1.7, 1.8 용은 NuGet으로 받을 수 있다. SharpSVN 라이브러리는 32비트,64비트로 ...

C# - SharpZipLib을 사용한 복수 개의 파일 압축 및 해제

May 31, 2019

SharpZipLib : http://icsharpcode.net/OpenSource/SharpZipLib/Default.aspx // 압축 void Compression() { try { string zipPath = "test.zip"; ...

C# - Simple Winform Logger

March 24, 2019

로그 클래스. DevLog // public enum LOG_LEVEL { TRACE, DEBUG, INFO, WARN, ERROR } public class DevLog { static System.Collections.Concurr...

C# - SmtpClient로 메일 보내기

May 30, 2019

닷넷의 SmtpClient 클래스를 사용하여 메일을 보내는 방법이다. MSDN의 예제는 빠진 부분이 많아서 그걸 사용하면 제대로 되지 않았다. 삽질하다가 구글링으로 알아냈다. 아래 예제는 구글의 Gmail을 사용하는 것으로 했다. Gmail의 주소는 smtp.gmail.com ...

C# - SuperSocketLite으로 게임 서버 만들기 - 01

June 15, 2019

C#에서 가장 유명한 네트워크 라이브러리로 SuperSocket 이라는 것이 있다. 앞으로 여러 번을 나누어서 SuperSocket을 사용하여 게임 서버를 만드는 방법을 설명하려고 한다. SuperSocket 이란? SuperSocket의 코드는 Github에 있다. https:...

C# - SuperSocketLite으로 게임 서버 만들기 - 02) 에코 서버

June 16, 2019

가장 간단한 서버이다. 클라이언트가 보낸 것을 그대로 클라이언트에게 보낸다. 간단하게 SuperSocketLite를 애플리케이션에서 어떻게 사용하는지 배울 수 있다. 코드는 Tutorials/EchoServer 디렉토리에 있다. 빌드를 하면 Tutorials/00_server...

C# - SuperSocketLite으로 게임 서버 만들기 - 03) 에코 서버 2

June 22, 2019

EchoServer를 좀 더 고도화 한 것이다. SuperSocketLite 프로젝트를 추가해서 참조하지 않고, SuperSocketLite를 빌드한 dll 파일을 참조한다. 00_superSocketLite_libs 디렉토리에 있는 dll을 추가한다. 또 Nuget으로 Sy...

C# - SuperSocketLite으로 게임 서버 만들기 - 04 MultiPortServer

June 25, 2019

서버가 복수의 port 번호를 사용하는 경우에 대한 예제이다. 서버는 클라이언트 이외에 서버간 통신을 위해 연결 하기도 한다(보통 분산 서버를 만드는 경우이다). 이 프로젝트는 서버 객체를 2개 생성해서 하나는 클라이언트와 연결, 또 하나는 서버와 연결한다. 서버와 클라이언트 ...

C# - SuperSocketLite으로 게임 서버 만들기 - 05 채팅 서버

June 27, 2019

방 구조의 채팅 서버이다. 패킷 처리는 1개의 스레드만으로 처리한다. (네트워크 IO는 멀티 스레드) 프로젝트 구조는 아래와 같다. 파일 이름을 보면 대충 어떤 일을 맡고 있는지 알 수 있을 것이다 네트워크 관련 처리를 1개의 스레드에서 하기 위해 MainServer에서 바...

C# - System.Lazy

March 27, 2019

System.Lazy ? System.Lazy 는 지연 초기화를 지원하는 클래스이다. .NET Framework 4.0 에서 추가 사용하는 경우 멀티 스레드 환경에서 공유 리소스의 초기화를 스레드 세이프하게 하고 싶을 때 초기화에 시간이 걸리...

C# - TPL

March 10, 2019

닷넷 프레임워크 4.0에서 추가된 병렬 프로그래밍 라이브러리 여기의 글을 정리 Parallel.ForEach/For Parallel.ForEach using System; using System.Diagnostics; using System.Threading; using...

C# - Thread

March 8, 2019

현재 스레드의 ID 얻기 System.Threading.Thread.CurrentThread.ManagedThreadId 스레풀의 최소, 최대 스레드 개수 알기 int workThreads = 0; int iocpThreads = 0; // 최소 스레드 개수 System....

C# - Thread Local

March 29, 2019

닷넷 프레임워크 4.0 에서 추가 이전에는 비슷한 것으로 ThreadStatic 속성이 있었음 그러나 static 멤버에만 사용 가능. 멤버의 값은 보통 그 타입의 기본 값으로 초기화된다. 초기 값을 설정...

C# - Timer

May 30, 2019

DispatcherTimer 일반 타이머는 메인 스레드가 아닌 다른 스레드를 만들어서 처리 되지만 이것은 실행은 메인 스레드에서 처리 되어 메인 스레드와 동기화가 보장 된다. MSDN의 설명 각 Dispatcher 루프의 맨 위에서 DispatcherT...

C# - Trace

March 7, 2019

Trace 클래스 코드 실행을 추적하는 데 필요한 메서드 및 속성 집합을 제공 네임스페이스: System.Diagnostics 어셈블리: System(system.dll) Trace 클래스의 속성 및 메서드를 사용하여 릴리스 빌드를 측정 할 수 있다. 이렇게 하면 ...

C# - Ubuntu에서 snap으로 dotnet-sdk 설치하기

April 27, 2019

아래 명령어를 실행한다. sudo apt search dotnet-sdk dotnet-sdk 명령어 dotnet-sdk.dotnet 만약 「dotnet-sdk」 명령어로 「dotnet-sdk.dotnet」을 실행하고 싶다면 아래 명령어를 실행한다. sudo snap alia...

C# - Unit Test

March 4, 2019

준비 보통 프로그램이나 라이브러리 프로젝트에 추가 프로젝트로 유닛테스트 프레임워크를 사용하는 프로젝트를 만든다. 이렇게 하면 유닛테스트에 영향을 받지 않으면서 기존처럼 개발을 할 수 있다. 유닛테스트 프로젝트에 테스트 메소드를 만들면 테스트 탐색기에 리...

C# - Unit Test Mock

March 6, 2019

왜 사용하는가? Mock 라이브러리는 단위 테스트를 쉽게 하기 위해 존재합니다. 예를 들어서, 한 클래스 테스트에 데이터베이스를 활용해야 하는 경우가 있다고 가정을 합시다. 이 경우 직접 데이터베이스에 정보를 넣었다 뺐다 하면 상당히 큰 부담이 됩니다. 이런 부담을 주...

C# - WM_COPY_DATA

April 2, 2019

참고 글 http://www.codeproject.com/KB/cs/ipc_wmcopy.aspx http://www.codeproject.com/KB/threads/InterprocessCommunicator.aspx http://www.codeproject.com/K...

C# - WPF - 멀티 스레드에서 컨트롤 조작

May 29, 2019

from : MSDN // 아래의 예는 리스트박스에 새로운 데이터를 추가하는 것이다. private delegate void ListBoxDelegate(string arg); void SetStateText(string state) { this.listBox1.Dis...

C# - Windows Event Log

April 3, 2019

개발 시에 Windows가 제공하는 이벤트 로그를 사용하면 로그 보기/관리가 쉬워진다. C# 을 이용해 Windows Event Log 쓰기 [http://mainia.tistory.com/412] static void Main(string[] args) { W...

C# - XmlTextReader

February 25, 2019

XmlTextReader 로 XML 읽기 예제 1 <?xml version="1.0" encoding="utf-8" ?> <Config> <log4net> <root> <!--로그 레벨 지정. 아래에서는 INFO...

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

September 14, 2019

읽기 BitConverter BitConverter 클래스의 타입 별 함수를 사용한다 var data = new byte[2048]; var pos = 0; Int16 PacketID = BitConverter.ToInt16(data, pos); pos += 2; UnSaf...

C# - config-r

April 5, 2019

개요 scripts와 Roslyn을 사용하여 스크립트 방식의 설정 파일을 사용할 수 있다. 저장소 https://github.com/config-r/config-r NuGet으로 설치 Quickstart NuGet으로 설치 실행 파일과 같은 이름의 .csx...

C# - etc

April 10, 2019

const 배열을 정의 할 수 없을 때 static readonly int[] LEVEL_TABLE = { 1, 2, 3, 4, 5 }; static readonly string[] STR_TABLE = { "NONE", "1", "2", "3" }; 다른 클래스에 있는 co...

C# - http 요청 시 동시 접속 수 제한

March 12, 2019

닷넷프레임워크는 서버로의 동시 접속 수가 기본으로 최대 2로 제한 되어 있다 즉 클라이언트는 한 서버로 머신당 최대 동시 접속 수가 2개로 제한 그래서 웹 서비스 클라이언에서 웹 서비스 등을 호출할 때 출력결과를 올리기 위해서는 멀티스레드...

C# - json 데이터 암호화, 복호화 하기

May 26, 2019

AESEncrypt로 암호화/복호화 하기 public static async Task<RESULT_T> RequestHttpAESEncry<REQUEST_T, RESULT_T>( ...

C# - scriptcs-nancy

April 15, 2019

개요 scriptcs-nancy NancyFX 라이브러리를 사용할 수 있게 해준다. 중요. 2015-09-15 ConcurrentDictionary<string, AgentData> AgentStatus 와 같이 클래스(혹은 구조체)를 컨...

C# - serilog

April 8, 2019

.NET의 많은 다른 라이브러리와 마찬가지로 Serilog는 파일, 콘솔 등의 다양한 저장소로의 로깅을 제공한다. 또한 설정하기 쉬운 깨끗한 API를 가지고 있으며, 다양한.NET 플랫폼으로 이식성을 가지고 있다. 또 다른 로깅 라이브러리와는 달리 Serilog는 강력한 구조...

C# - string

March 25, 2019

문자열의 마지막에 있는 \r\n 제거 하기 Text2.TrimEnd(Environment.NewLine.ToCharArray()); 지정 단어로 문자열 분해 string readLine = "A=B"; string[] word = readLine.Split(new Char[...

C# - tip 모음

June 1, 2019

System.BitConverter byte에서 short로 변환하기 http://msdn.microsoft.com/ko-kr/library/system.bitconverter.toint16.aspx BitConverter.ToInt16 스트링을 바인트로 변환 //the be...

C# - 게임 서버에서 프레임 단위로 클라이언트 요청을 처리한다. async-await 사용

June 2, 2019

출처 /* var thread = GameLoopThreadPool.GetThread(); while (true) { // frameAction 안에서 AI의 행동 선택 처리나 쌓인 커맨드를 기초로 데미지를 주거나 회복 시키는 코드가 동작 var shouldCont...

C# - 꼬리 재귀 최적화

April 19, 2017

// 꼬리 재귀가 아니다 long SumNormal(long n) { if (n <= 0) return 0; return SumNormal(n - 1) + n; } // 꼬리 재귀 long SumTailCall(long n) { return SumTai...

C# - 날짜와 시간

March 21, 2019

MSDN의 날짜 포맷 https://msdn.microsoft.com/en-us/library/az4se3k1.aspx 현재 시간 중에서 시간:분(09:01)으로 얻고 싶을 때 DateTime.Now.ToString("hh:mm") // for non military t...

C# - 다중 스레드에서 컨트롤을 변경 할 때

May 29, 2019

출처: MSDN // 델리게이트를 선언한다. delegate void SetTextCallback(string text); // 컨트롤의 접근은 따로 함수를 만들어서 접근하도록 한다. private void SetText(string text) { // InvokeR...

C# - 닷넷프레임워크의 타이머 관련 클래스

February 24, 2019

인터넷에 있는 글에서 가져온 것입니다. DispatcherTimer 일반 타이머는 메인 스레드가 아닌 다른 스레드를 만들어서 처리 되지만 이것은 실행은 메인 스레드에서 처리 되어 메인 스레드와 동기화가 보장 된다. MSDN의 설명 각 Dispatcher 루프의 맨 위에서 ...

C# - 메모리

March 18, 2019

스택할당 stackalloc 키워드를 사용하면 지역 변수에 한해서 스택 할당을 할 수 있음 해당 함수를 벗어나면 메모리는 삭제된다. unsafe 기능으로 사용할 수 있다. MSDN 문서 http://msdn.microsoft.com/ko-kr/l...

C# - 문자열

May 28, 2019

지정 단어로 문자열 분해 string readLine = "A=B"; string[] word = readLine.Split(new Char[] { '=' }); 문자열 포맷 string CheatString = string.Format("@timeevent1:{0}", t...

C# - 빌드 설정에 따른 플랫폼 설정과 코드 최적화

March 31, 2019

프로그램 플랫폼 설정 코드 최적화

C# - 소켓 옵션

August 31, 2019

아래 코드는 C#에서 소켓 옵션을 설정하는 예제 코드이다. 출처: https://docs.microsoft.com/ko-kr/dotnet/api/system.net.sockets.socket.lingerstate static void ConfigureTcpSocket(Socket...

C# - 속성을 사용하여 항목 체크

February 23, 2018

DisplayName과 StringLength, Required 라는 기존 속성을 사용한다. Attribute.GetCustomAttribut 메소드로 대상( 이 코드에서는 프로퍼티)에서 속성을 얻을 수 있다. using System; using System.Reflection;...

C# - 시스템 프로그래밍

June 1, 2019

다른 프로세스 실행 System.Diagnostics.Process.Start("실행파일경로\실행파일명.exe",파라메터) System.Diagnostics.Process.Start("cmd.exe 명령어"); 프로세스 종료 System.Diagnostics.Close(); ...

C# - 예외 출력 helper 클래스

May 21, 2019

출처: https://teratail.com/questions/24669 public static class ExceptionHelper { public static string ExtractException(this Exception ex, int indent = 2) ...

C# - 자신의 ip 주소 얻기

March 15, 2019

string myIPAddress = ""; var ipentry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()); foreach (var ip in ipentry.AddressList) { if (ip.Addre...

C# - 정규 표현식

April 9, 2019

문자 집합 [] 안에 일치시키려는 문자를 일일이 나열해주거나 범위 지정이 가능할 경우 그 범위만큼만 지정해 주면 된다. [a-z] : 영어 소문자 [A-Z] : 영어 대문자 [0-9] : 숫자 [k-p] : 알파벳에서 k 부터 p 까지만. [4...

C# - 정규 표현식 라이브러리 VerbalExpressions

March 30, 2019

소개 기존의 복잡한 방식의 정규식을 이해하기 쉽도로 해주는 라이브러리. 처음에는 JavaScript용으로 나왔지만 이후 대부분의 언어를 지원하고 있다. 소스 코드는 GitHub에 공개 되어 있다. https://github.com/VerbalExpressions/C...

C# - 콘솔 키보드 입력, 프로그램 종료 키 조사

March 3, 2019

키보드 입력 class Program { static void Main(string[] args) { System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(키보드...

C# - 파일 조작

May 27, 2019

클래스 단위로 파일에 쓰기 이 직렬화 방식은 꼭 .NET 플랫폼에서 서로 파일을 읽고 쓸 때만 사용 가능하다. 만약 .NET으로 만든 프로그램에서 아래와 같이 파일을 만들고 이것을 네이티브에서 읽으면 앞에 다른 값이 들어가 있다( 정확하게는 직렬화 되는 클래스의 메타 정보가 들어가...

C# 7.2의 구조체의 성능

August 7, 2019

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

C# 7.3의 새로운 기능

February 11, 2019

출처 Overload 해결 버전 1.0의 C#에서 overload의 해결 규칙은 의문이 남는 디자인이었다. 어떤 상황에서 두 개 이상의 메소드가 후보가 되는데, 하나 밖에 사용할 수 없다. 우선 순위에 따라 잘못된 방법을 선택하거나 컴파일러가 일치하는 메소드를 찾지 못하거나 일치...

C#에서 LZ4로 압축한 데이터를 다른 언어와 주고 받을 때

August 9, 2018

C#에서 LZ4 압축 라이브러리로 유명한 것으로 lz4net 이라는 것이 있음. 이 라이브러리를 사용하여 압축을 한 데이터를 python에서 압축을 풀 때 압축이 제대로 풀리지 않음. (파이썬에서는 python-lz4 사용. ) 이유는 lz4 라이브러리를 사용할 때 Frame ...

C#에서 async-await를 사용하여 TCP Server 만들기

April 30, 2019

이 글은 여기 글을 번역,정리 한 것이다. 예제 코드는 여기 C# 네트워크 프로그래밍에서 비동기 IO를 사용할 때는 3가지 방법이 있다. 각 방법 별 성능은 아래와 같다. 구현 방법 행수 난이도 초당 요청 수 ...

C#의 클래스를 byte[]로 변환하는 방법

May 17, 2019

패킷 헤더 클래스 [StructLayout(LayoutKind.Sequential)]//[StructLayout(LayoutKind.Sequential, Pack=1)] public class HEADER { public ushort a1; public ushort ...

CPU 사용률이 오르지 않을 때

July 25, 2019

처리하는 것에 비해 CPU 사용률이 오르지 않는 경우 .NET 런타임의 GC 설정을 변경해서 해결 할 수도 있다. .NET의 GC 모드를 서버GC로 변경한다. .NET Core 프로젝트 파일에 ServerGarbageCollection을 추가하고 값을 true로 한다. <P...

GPU를 타깃으로 한 C# 이용

August 25, 2018

원문 NVIDIA GPU를 이용하는 범용 프로그램을 만드는 것은 오랫동안 NVIDIA의 CUDA 플랫폼을 사용하는 것을 의미하고 있었다. CUDA는 몇몇 다른 프로그래밍 언어를 지원하고 있지만 고성능 코드를 기술하려면 보통 C 또는 C++ 이 필요했다. 최근까지 이 상황에 의해서...

NLog - Fluentd 노드로 로그를 보내는 방법

May 3, 2017

NuGet에서 아래 2개를 설치한다 NLog NLog.Targets.Fluentd Fluentd 노드로 로그를 보내기 위한 설정은 NLog.config에서 지정할 수 없으므로 코드 상에서 설정해야 한다. public class Configurator { // ...

NLog - 기존의 설정을 사용하면서 파일 패스만 동적으로 변경하기

April 28, 2017

NLog.config 설정을 사용하지만 파일 패스만 바꾸고 싶다. 파일 경로는 프로세스나 인스턴스 마다 변경하기를 바란다. 프로세스나 인스턴스가 항상 일정하다면 NLog.config에 필요한 수만큼의 설정을 추가하면 되지만, 파일 패스만 다르므로 비슷한 설정 코드를 늘리는 것은...

NLog - 동적으로 로그 파일 이름 설정하기

April 26, 2017

NLog는 동적으로 파일 이름을 설정할 수 있는 기능이 있다. 아래의 방법은 커스텀 플레이스 홀더를 설정하고, 그 플레이스 홀더에 임의의 텍스트를 설정하는 방법으로 파일 이름을 변경한다. NLog.config <?xml version="1.0" encoding="utf-8...

SignalR .NET Core - Realtime cross-platform open web communication

July 3, 2017

MS Build2017에서 발표된 SignalR .NET Core: Realtime cross-platform open web communication 의 간단 요약 ASP.NET Core에 맞추어서 재 작성하고, 재 설계 HTTP 이외에서도 이용(AMQP,MQTT,TC...

SignalR 정리

October 7, 2018

SignalR 정리 http://jacking.tistory.com/1139 self 호스팅 (영어) http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/tutorial-signalr-...

Span 를 사용해야 할 5가지 이유

January 19, 2019

</a></h3>

출처 소개: Hello World 런타임이 .Net Core 2.1 이후라면 표준으로 사용할 수 있다. 그렇지 않으면 Nuget에서 System.Memory 라는 패키지를 넣자. 그리고, 언어는 C# 7.2 이상이 필요하다. Span라는게 뭐야? A. 우선, 배열 같은 것이라...

Span 이용에 따른 최적화

January 16, 2019

</a></h3>

출처 힙 사용량 절감 Span 를 사용하면 빠르게 되는 이유는 간단하게 힙 사용량을 줄아가 때문이다. string.Substring 등으로 새로운 문자열을 만들어 않아도 된다. stackallock욿 임시 버퍼에 힙을 사용하지 않는다 네이티브 메모리를 직접 읽을 수 ...

WCF - AsyncAwait

January 12, 2019

예제 코드 [ServiceContract] public interface IServerService { [OperationContract] Task<RES_LOGIN> RequestUserLogin(REQ_LOGIN reqData); } // http://loc...

WCF - RESTful API

January 10, 2019

RESTful 서비스 URI나 표준 동사(POST, GET, PUT, DELETE) 등 HTTP 사양을 강하게 의식한 리소스 베이스의 접근을 제공. 최신의 프레임워크는 대 부분 RESTful 서비스를 만들 수 있는 기능 지원. WCF의 REST 서비스에서는 POX (P...

WCF - TCP Sample

January 13, 2019

서버 WCF LIB namespace WCFServerLib { public interface IClientCallback { [OperationContract(IsOneWay = true)] void SendMessageToClient(string message); ...

WCF - Tips

January 14, 2019

클라이언트가 요청 데이터를 null로 보내는 경우 대처 클라이언트에서 public RES_LOGIN_DATA RequestLogin(REQ_LOGIN_DATA reqData)을 요청한 경우 reqData을 null로 보낼 수 있음(악의적인 이유로). 그래서 아래처럼 요청 데이터를 ...

rasberry pi zero + C#으로 카메라 조작

June 14, 2017

nuget의 아래 모듈을 받는다. https://www.nuget.org/packages/Unosquare.Raspberry.IO/ GPIO 에 더해서 카메라 모듈도 조작할 수 있다. 이것을 사용하여 public static async Task SendImage() { v...

닷넷 코어 2.1은 어디로 향하고 있는가?

April 4, 2018

원문 Microsoft의 Scott Hunter씨는 .NET Core 2.1에서의 동사의 계획을 발표했다. CLI 툴이 개발자의 편리한 사용을 대폭 향상시키는 것으로 보인다. Microsoft는 매일 50만명에 가까운 개발자의 적극적인 이용을 감시할 수 있다고 Hunter씨는 말...

오래된 버전의 .NET Core 삭제 시 .NET Standard 2.0을 인식하지 못하는 문제

February 12, 2019

컴퓨터 정리를 하다가 여러 버전의 닷넷코어가 설치 되어 있어서 최신 버전(2.2.103)을 제외하고 이전 버전의 닷넷코어를 삭제하였다. 그런데 Visual Studio에서 ‘.NET Standard 2.0’을 찾지 못하는 문제가 발생하였다. 다행히 구글링 해보니 이 문제에 대한 답...

최소한으로 ASP.NET Web API 사이트 만들기

October 6, 2018

Visual Studio의 프로젝트 템플릿으로 만들면 불필요한 코드가 너무 많이 붙어 있음. 특히 Razor은 사용하지 않고 클라이언트 부분은 JavaScript를 사용하고 싶은 경우에 좋지 않음. Building Out a Clean, ...

프로그램을 관리자 권한으로 실행하는 코드

April 21, 2019

출처 권한을 확인하고 관리자 권한이 아니면 다른 프로세스로 관리 권한을 부여하고 다시 시작한다 Thread.GetDomain().SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); var pri = (WindowsPrincipal)Th...

AWS (1)

AWS - 1대의 EC2에서도 ELB을 사용하면 좋은 점

October 11, 2018

인스턴스 교체가 편리하다 운용을 시작한 후 EC2에 대해서 수정을 해야하는 경우 인스턴스 교체가 쉬워진다. DNS 변경을 할 필요 없이 백엔드 교체가 가능하다. ELB의 헬스 체크로 감시 ELB의 헬스 체크를 이용하여 WEB 서버가 죽었는지 감시를 할 수 있다. CloudWa...

Book (3)

책 - Unity 네트워크 게임 개발 실전 입문 UNET/니프티 클라우드 mobile backend(일서)

February 18, 2018

Unityネットワークゲーム開発 実践入門 UNET/ニフティクラウド mobile backend版 책 내용은 크게 두개로 나누어진다. 전반부는 일본의 모바일 백엔드 서비스를 사용하는 방법(즉 한국 독자는 별로 도움 되지 않는다), 후반부는 UNET을 사용하는 방법을 설명한다. 아직...

책 - 러스트 핵심 노트(e-book)

February 6, 2018

출판사: 한빛미디어 한빛미디어 2018년 2월에 읽은 책. 이전부터 미루다가 3~4일 동안에 다 보았다. Go 언어와 비슷한 부분이 있어서 Go 언어를 알면 공부하기 좋을 듯(물론 그 반대도) 원서가 Packt 출판사인데 책 내용이 좀 정리가 안 된 것 같고, 구성이 머...

책 - 모던 C 언어 프로그래밍 IDE, 디자인 패턴, XP, TDD, 리팩터링, 지속적인 통합

February 5, 2018

출판사: 위키북스 yes24 2016년에 읽었던 책이다. C 언어를 기초부터 가르쳐주는 책이 아니다. C 언어를 알고 있는 사람을 대상으로 하고 있다. 오래된(?) 언어인 C 언어를 현대에 맞게 사용할 수 있는 툴과 기법을 알려준다. 특히 C 언어에 디자인패턴을 사용하는...

C (1)

C99의 sizeof와 가변길이 배열

April 12, 2017

C99 에서는 배열의 사이즈 지정에 변수를 사용할 수 있다. void test1( int n ) { int fixed_array[10]; int varlen_array[n]; printf( "sizeof(fixed_array)==%ld\n", sizeof(fixed_...

C++ (91)

AWS Lambda에서 C++ 프로그램 실행하기

December 24, 2018

이 글을 번역한 것이다. re:Invent 2018에서 AWS Lambda의 새로운 기능, Custom Runtime이 발표 되었다. 이 기능은 Custom Runtime을 준비하는 것으로서 임의의 언어로 Lambda를 사용할 수 있다. Custom Runtime은 직접 구현해...

Boost 라이브러리 설치하기

July 1, 2019

설치 Linux Boost 라이브러리 공식 사이트에서 다운로드 후 압축 풀기 압축을 푼 디렉토리로 이동 후 아래처럼 입력 $ ./bootstrap.sh 생성된 b2를 사용하여 Boost 라이브러리 빌드하기 $ ./b2 toolset=gcc link=static ...

Boost.Asio 공부하기

March 17, 2017

나는 2007년부터 Boost.Asio를 온라인 게임 서버 개발에 처음 사용하였다(업무에 사용하는 것을 말한다.그전에 공부는 했었다) 당시 주위의 게임 개발자를 통해서 생각외로 사용하는 곳이 꽤 있었다. 이 후 한국 및 해외의 유명 회사들도 C++ 네트워크 프로그래밍에 사용하고 ...

C++ - 6-tips-to-supercharge-c11-vector-performance

May 19, 2017

NHN Next의 학생이 C++ Advance 수업의 과제로 번역 정리한 것이다. 원문 슬라이드 쉐어

C++ - A simple C++11 Thread Pool implementation

May 25, 2017

NHN Next의 학생이 C++ Advance 수업의 과제로 번역 정리한 것이다. Github의 코드 위 코드를 설명한 문서

C++ - Boost 라이브러리 빌드 링크 모음

November 6, 2017

Windows Boost 라이브러리 빌드 및 설치 - VC++ (VS2012, Boost 1.53) boost 간단 설치기 (Windows환경) - VS 2010 중심 Boost 64비트로 빌드하기 VS2008에서 Boost 빌드하기 버전 별로 이미 빌드된 라이브러리 배포하는 사...

C++ - Boost의 object_pool 사용은 비 추천

September 15, 2017

boost 라이브러리에는 메모리 풀 라이브러리로 object_pool 이라는 것이 있다. 사용법은 아래와 같다. boost::object_pool<int> pool; int* p = pool.construct(10); pool.destroy(p); 사용하면 안 되는...

C++ - C++/CLI

February 1, 2019

클래스(class), 핸들(^) C++/CLI에서 관리 클래스는 ‘ref’라는 키워드를 사용하여 만든다. 비 관리 클래스 class Test { }; 관리 클래스 ref class Test { }; 관리 클래스는 ‘ref’를 제외하고는 외관상으로는 비 ...

C++ - C++03과 C++11 싱글톤 구현 차이

February 1, 2018

C++11에는 ‘C++11 - 블럭 범위를 가진 static 변수 초기화는 스레드 세이프 하다’ 라는 기능이 생겼다. 그래서 아래와 같이 쉽게 싱글톤 인스턴스 생성 가능하다. template <typename T> inline T& Singleton<T&g...

C++ - C++17시대 Herb Sutter씨에게 듣는다

December 19, 2017

원문 Herb Suttrer씨는 소프트웨어 개발의 제일인자로 “Exceptional C++” 이나 “C++Coding Standars”라는 책을 집필했다. ISO C++ 표준 위원회 위원장을 15년간 맡음과 더불어 Microsoft에서는 소프트웨어 아키텍트로서 C++/CLI, C...

C++ - C++의 dangling 검출, 제안 문서 버전 1.0 공개

October 21, 2018

출처 C++의 저명한 개발자, ISO C++ 표준위원회의 위원장 Herb Sutter씨가 dangling(잘못된 영역에 대한 잘못된 참조)의 검출 방법을 제안하는 문서 “Lifetime Safety: Preventing Common Danglng”의 버전 1.0을 공개 했다. C...

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

September 7, 2019

VC에서 경고 레벨 4로 컴파일 하면 자주 볼 수 있는 경고주 하나가 아래와 같은 경고이다. warning C4100: 'argc' : unreferenced formal parameter warning C4100: 'argc' : 참조되지 않은 형식 매개 변수입니다. &l...

C++ - CAtlMap에서 KEY 값을 두 개 사용하고 싶을 때

May 18, 2019

예제 코드 #include <atlcoll.h> #include <boost/functional/hash.hpp> // hash를 만들기 위해 사용 // KEY가 될 유저 정의형 struct FRIENDKEY { union { ...

C++ - CMake 사용법 및 예제 코드

January 2, 2019

GitHub 저장소에 공개하였다. CMake 기초 설명과 예제 코드가 있다

C++ - Delegate 라이브러리

May 20, 2019

상호 참조를 할 경우, 상호 참조 되는 클래스 중 둘 중 하나가 변경될 경우 상호 컴파일이 일어난다 -> 작은 프로젝트라면 모르겠지만 대규모 프로젝트에서는 작은 소스 수정 하나가 큰 짐이 될 수 있다 그리고 설계 상 상호 참조를 하고 있다는 것은 좋지 않다. 상호 참조를 하...

C++ - EASTL

January 24, 2018

GitHub EASTL 게임 회사 EA에서 오픈 소스로 공개한 것으로 C++ STL을 게임 개발에 맞게 고친 STL 이다. 크로스플랫폼을 지원하고 Visual Studio 2017을 지원한다. 빌드는 Cmake를 사용한다. 관련 글 일어로 된 글은 네이버 번역기로 보면 된...

C++ - JSON for Modern C++ 이 버전 3.1로

August 30, 2018

원문 JSON for Modern C ++ 3.1 에서는 Universal Binary JSON(UBJSON) 기능 지원 및 JSON Merge Patch가 새롭게 추가 되었다. UBJSON는 JSON for Modern C++에서 지원하는 여러 가지 형식의 하나로, 인코딩 크...

C++ - PPL 병렬 컨테이너와 Asynchronous Agents

May 23, 2017

NHN Next의 학생이 C++ Advance 수업의 과제로 번역 정리한 것이다. PPL 병렬 컨테이너 슬라이드 쉐어 Asynchronous Agents 슬라이드 쉐어

C++ - Recommendations to speed C++ builds in Visual Studio

May 22, 2017

NHN Next의 학생이 C++ Advance 수업의 과제로 번역 정리한 것이다. 원문 슬라이드 쉐어

C++ - SSO(Small-string optimization)

January 2, 2018

보통 std::string는 문자열을 확보할 때 동적으로 메모리를 확보하지만 작은 크기의 문자열의 경우는 동적 할당은 성능적으로 낭비이므로 동적 할당을 하지 않는 최적화가 구현 되어 있고 이것을 SSO 라고 한다. 아래처럼 std::string 안에 문자열을 저장할 수 있는 버퍼...

C++ - STL function, lambda, bind 사용 예

June 5, 2019

/* * std_function1.cpp * Copyright (C) 2014 kaoru <kaoru@bsd> */ #include <iostream> #include <functional> using namespace std; struct...

C++ - STL map에 함수 포인터 사용

June 5, 2019

#include <iostream> #include <map> #include <string> double Add(double a, double b){ return a + b; } double Sub(double a, double b){ retur...

C++ - State 패턴으로 CSV 파일을 읽자

June 9, 2017

NHN Next의 학생이 C++ Advance 수업의 과제로 번역 정리한 것이다. [원문] State 패턴으로 CSV 파일을 읽자 슬라이드쉐어

C++ - The Observable C++ library

June 8, 2017

NHN Next의 학생이 C++ Advance 수업의 과제로 번역 정리한 것이다. [원문] The Observable C++ library – implementing the observer pattern Observable C++ expressions – using the Obs...

C++ - Ubuntu 18 에서 g++(gcc) 설치

September 16, 2018

출처: https://linuxconfig.org/how-to-install-g-the-c-compiler-on-ubuntu-18-04-bionic-beaver-linux 우분투 18 에서 apt-get으로 설치하는 g++ 버전은 7.3 이다. 7.3 버전은 C++17 표준을 지...

C++ - Ubuntu에 clang, libc++-, lldb 설치하기

October 8, 2018

wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - echo deb http://apt.llvm.org/stretch/ llvm-toolchain-stretch-6.0 main>> /etc/ap...

C++ - VC용으로 빌드된 Boost 라이브러리 얻기

October 27, 2017

VC용으로 빌드된 Boost 라이브러리 Lib 파일을 제공하고 있다. 다운로드 페이지이다. Boost 라이브러리의 다양한 버전 및 VC의 버전 별로 준비 되어 있다.

C++ - Visual C++ 에서의 std::chrono의 고해상도 시계

January 16, 2018

Visual Studio 2015 이전에는 std::chrono(high_resolution_clock을 사용해도)로 시간 측정을 하면 nano 단위로는 측정할 수 없었다. 그래서 VC에서 nano 단위로 측정하려면 이전처럼 Win32 API인 PerformanceCounter...

C++ - Visual Studio 2017 15.7이 C++17 완전 준수

July 5, 2018

원문 Microsoft는 Visual Studio 2017 15.7 일반용 제공을 발표했다. InfoQ는 VS2017의 7번째 메이저 업데이트 개발을 쫓아왔다. 이것에 의해 IDE 전체의 많은 영역이 개선되었다. 이 업데이트는 현재 복사본을 덮어 설치할 수 있지만, 반면에 새로...

C++ - Visual Studio 2017 에서 최신 C++ 기능 사용하기

November 22, 2017

Visual Studio 2017에서는 C++17 및 C++20에 들어갈 기능이 일부 구현 되어 있다. 그러나 이 기능들은 그냥은 사용할 수 없고 컴파일러 옵션에서 사용함을 선언해야 한다. (C++17 기능 중 VS 업데이트를 통해서 구현된 기능은 보통 바로 사용할 수 없다.) ...

C++ - Win32 시스템 정보 얻기(Code)

June 3, 2019

출처 win32_systemInfo.h #pragma once #include <cstdint> #include <vector> #include <string> #include <memory> #include <rapid/uti...

C++ - Windows 에서 hiredis 사용하기

March 2, 2018

MS에서 Windows용으로 redis를 포팅한 것이 있어서 여기서 hiredis 윈도우 버전을 구할 수 있다. 아래 글은 MS가 윈도우로 포팅한 redis 프로젝트를 기준으로 한 것인데 얼마전에 hiredis 부분만 따로 떨어져 나온 프로젝트가 공개 되었다(이 글은 2017년 ...

C++ - Windows 텍스트 인코딩 변환

June 12, 2019

Ansi <-> UTF-8 std::string CGlobal::ToUFT8( const char* pszIn ) { std::string resultString; int nLenOfUni = 0, nLenOfUTF = 0; wchar_t* us...

C++ - [펌] Linux에서 동적 라이브러리 만들기

April 20, 2019

출처: [리눅스 공유라이브러리(동적 라이브러리) 만들어 쓰기 작성자 라온이아부지 선성태](http://blog.naver.com/r2adne/120127832516) 순서 라이브러리로 쓸 함수가 포함된 소스 두 개 작성 ...

C++ - [펌] Linux에서 라이브러리 로딩

April 20, 2019

출처: 라이브러리 로딩 - ld.so.conf 라이브러리 로딩 - ld.so.conf 동적 라이브러리를 호출하기 위해서는 path 지정이 필수이다. 해당 라이브러리가 어디에 위치해 있는지 모든 디렉토리를 탐색하기에는 비효율적이기 때문이다. 우리가 흔히 설정하는 LD_...

C++ - [펌] Linux에서 정적 라이브러리 만들기

April 20, 2019

출처: [리눅스 정적 라이브러리 만들어 쓰기 작성자 라온이아부지 선성태] (http://blog.naver.com/r2adne/120127876141) 순서 라이브러리로 쓸 함수가 포함된 파일 두개 만들기 컴파일 해서...

C++ - httpClient, json, redis 예제 코드

June 24, 2018

C++로 http client 요청, Json 데이터 조작, redis와 통신하는 짧은 예제 코드 들이다. 아래 링크에 가면 코드를 볼 수 있다. curl 라이브러리를 사용하여 http 클라이언트 Post, Get 요청 http 클라이언트 사용 방법 (Post) http 클라이언...

C++ - localtime에서 초 단위의 시간으로 변환 (Code)

June 3, 2019

struct tm timeinfo; memset( &timeinfo, 0, sizeof(timeinfo) ); timeinfo.tm_year = atoi( szYear ) - 1900; timeinfo.tm_mon = atoi( szMonth ) - 1; timeinfo....

C++ - null 객체의 멤버 함수 호출

January 11, 2018

클래스를 메모리 할당(new 생성)하지 않고 생성한 후 멤버 함수를 호출하면 어떻게 될까? 호출된 멤버 함수가 자신의 멤버 변수를 호출하지 않는다면 무사히 호출된다. 당근 멤버 변수를 호출하면 세그먼트폴이 생긴다. 아래 코드는 gcc 8.0 에서 테스트 되었다. VC에서도 문제 ...

C++ - redis 사용하기

July 1, 2018

게임 서버를 개발할 때 사용하는 기술이 모바일 시대 이전에 비해서 많이 다양해졌는데 거의 대부분 꼭 사용하고 있는 것이 redis 이다. 다른 언어들은 redis 사용이 간단한데 C++은 간단하지는 않아서 정리를 해 봤다. boost를 사용하면 아주 쉽게 사용할 수 있고, boos...

C++ - segmentation fault를 보완해주는 로그를 출력하자

December 5, 2018

출처 C++ 서버(Linux)가 크래쉬 되는 버그로 고생해서 segmentation fault를 보완해주는 로그를 출력하는 기능을 만들어 보았다. 코드 CrashReporter.hpp #pragma once class ICrashReporter { public: vir...

C++ - 라이브러리를 사용한 프로그램 고속화

September 6, 2018

tcmalloc, jemalloc, nedmalloc malloc 대체에 의한 고속화. 아래와 같이 실행함으로써 malloc이 대체되어 실행된다. LD_PRELOAD=/usr/lib/libtcmalloc.so ./exefile 상황에 따라 다르겠지만 tcmalloc...

C++ - 메모리 영역

May 29, 2017

메모리 영역에 대해서 5 종류의 메모리 영역 C++ 에서는 다른 특성을 갖는 5 종류의 메모리 영역이 존재한다. (※ 단 c++ 규격에는 스택이나 힙은 명시 하지 않고 Free-Store는 명시 하고 있다) Const Data 컴파일 시 값을 알 수 있는 데이터(예를 들면 sta...

C++ - 분산환경에서의 uniqueId 생성 오픈 소스 snowflake-ModernCpp

October 18, 2017

snowflake ? Twitter에서 만든 오픈 소스 라이브러리로 주 목적은 분산 서버에서 일련 번호를 생성하는 것이다. 자세한 설명은 본인의 문서(https://www.slideshare.net/jacking/twitter-snowflake)를 보기 바란다. snowflake...

C++ - 실수 부에서 짜르기, 가장 간단한 반올림 처리

January 31, 2019

실수 부에서 짜르기 (float)floor( (WeaponShot.nDamage * pow(10.0f,4)) + 0.5 ) / pow(10.0f,4); 가장 간단한 반올림 처리 int nScore = (int)( nCalcuteScore + 0.5 );

C++ - 안전한 문자열 조작 함수

February 3, 2019

문자열 복사 strcpy_s, strcpy, _tcscpy_s, wcscpy, wcscpy_s 대체 추천 함수 strncpy_s(char), _tcsncpy_s(TCHAR) , wcsncpy_s(wchar_t) errno_t wcsncpy_s( wchar_t *st...

C++ - 오픈 소스 라이브러리 A better date and time C++ library

May 18, 2017

NHN Next의 학생이 C++ Advance 수업의 과제로 정리한 것이다. 슬라이드 쉐어 예제 코드

C++ - 온라인 C++ 컴파일러 리스트

December 15, 2017

C++ 공부를 할 때 기능이 어떻게 동작하는지 알고 싶을 때 웹브라우져만 있으면 바로 테스트 해볼 수 있다. List of Online C++ Compilers 생각 외로 온라인 C++ 컴파일러는 많다. VC도 있다. 이런 온라인 컴파일러를 사용하면 지금처럼 막 C++ 새 표준...

C++ - 컴파일러 최적화 copy elision

December 31, 2018

c++ 생성자와 move constructor 관련해서 궁금한 점이 있습니다. 라는 질문을 보고 알게된 것이다. 처음 질문을 봤을 때는 별거 아니라고 생각했는데 좀 더 보니 예전에 내가 C++11 표준 관련 강연을 했을 사용한 코드와 비슷한데 그때와 다른 결과가 나와서 구글링을 ...

C++ - 컴퓨터의 실제 IP 얻기 (code)

June 4, 2019

#include <ws2tcpip.h> bool ServerInfoMgr::GetLocalIP( string& strIP ) { char host_name[256]; if (gethostname(host_name, 256) == SOCKET_ERR...

C++ - 포인터 변수에서 const 위치에 따른 차이

December 26, 2017

변수에 const를 사용하는 이유와 사용 방법은 아주 쉽다. 그런데 포인터 타입 변수에 const를 붙였을 때 포인터의 앞이나 뒤 어디에 붙여야 할지 헷갈릴 때가 있다. 포인터에 const를 붙이는 경우 아래에 따라서 차이가 발생한다. *앞에 const를 붙인 경우는 포인터를 ...

C++ - 함수 핸들러(Funtion Dispatcher) (Code)

June 4, 2019

온라인 서버 제작자 모임의 핵랑님이 만든 것 비공개 카페라서 링크를 눌러도 멤버가 아니라면 접속할 수 없습니다. #pragma warning(disable:4819) #include <boost/bind.hpp> #include <boost/function...

C++ - 헤더 파일로 만드는 actor 모델 라이브러리

May 7, 2019

원문 C++의 표준 라이브러리로만 구현(thread, chrono, mutex, atomic, queue) 성능보다 구성 요소의 작음을 우선 소스 actor 모델? actor 모델은 병렬 계산의 수학적 모델의 일종이다. 병렬 처리 지향이라는 Erlang과 함수형...

C++- Poco 1.8 Net 라이브러리 빌드 하기

November 15, 2017

본인이 집필한 poco 네트워크 프로그래밍 책의 예제가 poco 1.8 에서는 빌드 에러가 난다. 이유는 스태틱 라이브러리 사용, win32 lib 미 추가 문제이다. 아래 그림처러 하면 문제 없이 빌드가 된다.

C++- Poco 라이브러리 Visual Studio 2017 에서 빌드 하기

November 15, 2017

poco 라이브러리를 Visual Studio 2017 에서 빌드하려면 아직 쉽게 되지 않는다. 아래처럼 Visual Studio 2017 설치 메뉴에 있는 콘솔 프로그램을 실행해서 빌드 파일을 실행해야 한다. buildwin.cmd 150 rebuild static_md...

C++- Poco 라이브러리를 VC++에서 static 라이브러리로 사용할 때

September 6, 2017

Poco 라이브러리를 VC++ 에서 static 라이브러리로 사용할 때 lib 파일을 찾을 수 없다는 링크 에러를 만나는 경우는 아래의 선언을 추가하면 된다. #define POCO_STATIC Poco 라이브러리는 default로는 동적라이브러리를 사용하는 것으로 설정 ...

C++11 - _Pragma 전처리 연산자

December 22, 2016

개요 C99 에서 도입된 전처리 연산자 이다. _Pragma 연산자는 매크로에서 처리 계 정의 기능을 사용하기위한 기능이다. 처리 계 정의 기능을 사용하기 위해 기존에는 #pragma 지시자를 사용하여 왔지만 이 기능은 매크로 내에서는 사용할 수 없다. #pragma 지시자를 매...

C++11 - alignas

April 1, 2017

개요 alignas()은 컴파일러에 대한 변수를 메모리 상의 특정 위치에 배치(배열) 하도록 요구하는 키워드이다. 예를 들면 4바이트 경계 위치에 배치할 경우 변수는 4의 배수 주소로 배치되고, 8바이트 경계 위치에 배치할 경우 변수는 8의 배수 주소로 배치된다. 문법 alig...

C++11 - alignof

April 1, 2017

개요 alignof()는 지정한 타입이 메모리의 어느 위치에 배치될지를(배치) 얻는 연산자이다. sizeof()와는 다르고 alignof()는 변수에는 사용할 수 없다. 예를 들면 타입 int가 4바이트 경계 위치로 배치되는 시스템이라면 alignof(int)은 4를 반환한다. ...

C++11 - boost::shared_ptr 에서 std::shared_ptr로 변환 하는 가장 간단한 방법

March 8, 2017

#include <iostream> // std::shared_ptr #include <memory> // boost::shared_ptr #include <boost/shared_ptr.hpp> auto main() -> int { ...

C++11 - long long 타입

December 26, 2016

개요 C99 호환을 위해 long long 정수 타입이 추가 되었다. long long 과 unsigned long long 타입은 64비트 이상의 값을 표현할 수 있는 것을 보증한다. long long 타입의 최대 값 매크로는 LLONG_MAX 이다. long long을 뜻하는...

C++11 - noexcept

February 27, 2017

noexcept 키워드 목적. 1) throw 키워드에 의한 예외 사양 대체. 함수가 어떤 예외를 던질 가능성이 있는지를 열거하는 것이 아니라 예외를 던질 가능성이 있는지 없는지만 지정한다. 예외를 던질 가능성이 있는 함수에는 noexcept(false)을 지정하고, 예외를 던질...

C++11 - std::get_time

February 6, 2017

개요 » get_time(tmb, fmt) 식을 사용하여 현재 입력 스트림에서 전달 받은 로컬 시간 값을 변환 형식 문자열에 맞추어 tm 오브젝트로 변환한다. 문법 template< class CharT > /*unspecified*/ get_time( s...

C++11 - std::put_time

February 3, 2017

개요 날짜 서식을 출력한다. 문법 template <class CharT> unspecified put_time(const struct tm* tmb, const CharT* fmt); tmb 은 유효한 tm 타입 오브젝트를 가리키는 포인터 fm...

C++11 - type_info와 type_index

March 23, 2017

C++에서는 RTTI(Run Time Type Infomation/Identification)라고 불리는 기능이 있다. ( 타 언어의 리플렉션과 좀 비슷한데 기능은 훨씬 떨어짐 ^^;) std::type_info는 타입 정보를 표현하는 클래스이다. type_info 객체는 type...

C++11 - 고정형 정수 타입

March 17, 2019

C++11에서 고정형 길이의 정수 타입이 새로 생겼음. 고정형 길이라는 것은 int8_t, int16_t 등 타입에 숫자가 붙는 것을 말함. 플랫폼에 상관 없이 크기가 고정 되어 있어서 크로스 플랫폼 개발에 사용하면 좋음. 헤더 파일 #include <cstdint&gt...

C++11 - 문자열 리터럴과 wide 문자열 리터럴 결합

January 23, 2017

C99 호환을 위해서 만들어진 기능으로 문자열 리터럴과 wide 문자열 리터럴을 결합하면 wide 문자열로 결합한다. 문자열 리터럴인란 멀티바이트 문자열을 뜻하고, wide 문자열 리터럴은 유니코드 문자열을 뜻한다. C++11 이전에는 문자열 리터럴과 wide 문자열 리터럴 결합에...

C++11 - 블럭 범위를 가진 static 변수 초기화는 스레드 세이프 하다

February 14, 2017

개요 static 변수의 초기화가 완료할 때까지 다른 스레드는 초기화 처리 앞에서 대기한다. class singleton { public: static singleton& get_instance() { static singleton instance; // ...

C++11 - 생성자 상속(inheriting constructors)

January 9, 2017

개요 부모 클래스에서 정의한 생성자들을 자식 클래스에서 그대로 사용할 수 있는 편의 기능이다. 문법 자식 클래스에서 using 키워드를 사용하여 부모 클래스 이름과 부모 클래스의 생성자 이름을 :: 구분으로 호출한다. 자식 클래스는 복수의 부모 클래스를 상속한 경우에도...

C++11 - 예외 지정

March 2, 2017

C ++에서는 함수에 예외 지정이라는 것을 작성할 수 있다. 이것은 C++98에서 부터 있는 기능으로 throw (T1, T2, …)라는 문법으로 함수가 밖으로 던지는 예외를 지정하는 기능이다. // C++98/03 void f() throw( int, double ); 만...

C++11 - 우측값 참조. 함수의 가인수는 좌측값 참조이다

July 7, 2017

#include<iostream> using namespace std; void foo2( string& s) { cout << "lvalue" << endl; }; void foo2( string&& s) { co...

C++11 - 인라인 이름 공간(inline namespace)

January 2, 2017

개요 이름 공간 내에 있는 기능을 투과해서 접근할 수 있는 기능이다. 즉 이름 공간(my_namespace) 안에 또 다른 이름 공간(features)을 inline로 선언하고 있으면 features에 정의된 기능을 my_namespace를 통해서 접근 할 수 있다. #incl...

C++11 - 최근접 짝수 반올림 std::nearbyint

January 12, 2017

개요 실수를 정수로 변환할 때 ceil()로 소수점 올림하거나, floor()로 소수점 버림을 한다. nearbyint는 정수로 변환할 실수의 가장 가까운 짝수로 올림 혹은 버림을 한다. 이러한 방식을 “bankers’rounding” 이라고 부른다 문법 cmath ...

C++14 - recursive_(timed_)mutex의 재귀 lock 상한 수

April 7, 2017

C++11 표준 라이브러리의 recursive_mutex, recursive_timed_mutex 클래스는 동일 스레드에서의 재귀 lock 획득 횟수의 상한은 미정의로(unspecified) 되어 있다. 단 상한 회수를 넘는 try_lock 조작은 실패하고, lock 조작은 예외를...

C++14 - shared_(timed_)mutex가 지원하는 Reader 스레드 수

April 10, 2017

C++14 표준 라이브러리의 shared_timed_mutex 클래스는 적어도 10000 스레드 이상의 Reader 스레드에서의 공유 lock(shared lock) 동시 획득을 지원한다. 또 동시 획득 가능한 공유 lock 수 상한을 넘은 경우도 공유 lock을 획득 할 수 있을...

CMake에서 GoogleTest 사용하기

February 23, 2019

출처 구성은 아래와 같이 되어 있다고 한다. src 폴더 아래가 테스트 대상 코드, test 폴더 아래는 테스트 코드 클래스 단위로 파일이 나누어져 있다고 가정한다. mk.sh을 실행하면 build/src/ 에 응용 프로그램의 실행 파일...

Poco 라이브러리 설치하기

July 10, 2019

Linux 공식 사이트에서 최신 버전을 다운로드 한다. 압축을 풀고, 빌드한다. 아래는 64비트, static 라이브러리, 테스트와 샘플은 제외 하는 설정으로 빌드 한다 $ tar zxvf poco-1.7.8p2-all.tar.gz $ cd poco-1.7.8p2-...

Trip report Fall ISO C++ standards meeting(Albuquerque) Sutter’s Mill

December 1, 2017

Trip report: Fall ISO C++ standards meeting (Albuquerque) | Sutter’s Mill 을 번역한 일본 문서를 일부 번역한 것이다. range-based for 에 초기화자를 쓸 수 있도록 되었다. for( auto res...

Ubuntu에 gcc 8, clang 6 설치하기

June 20, 2019

gcc 8 (Ubuntu 17.04) PPA로 최신 버전 설치 sudo add-apt-repository ppa:jonathonf/gcc-8.0 sudo apt update sudo apt install gcc-8 g++-8 LLVM 설치 Ubuntu 18.04 apt-get ...

Win32API - CRITICAL_SECTION의 OwningThread

June 5, 2017

Windows Vista부터 CRITICAL_SECTION의 내부 구조가 바뀌었다고 한다. 이 중 눈여겨 볼 것은 CRITICAL_SECTION의 멤버 변수 중 OwningThread 인데 이 변수에는 CRITICAL_SECTION을 소유중인 스레드의 ThreadID가 설정된다....

cmake에서 CMAKE_C_FLAGS에 설정한 값이 무시될 때

February 20, 2019

출처 CMakeLists.txt 안에서 컴파일 옵션을 지정하려고 했는데 설정이 무시되는 문제를 만났다. 컴파일 옵션 지정과 add_subdirectory 명령어 기술 순서가 문제였다. 문제 CMakeLists.txt cmake_minimum_required(VERSION 3.1...

epoll을 사용한 echo 서버

June 6, 2019

출처 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <sys/socket....

google benchmark로 C++ 코드 성능 측정하기

December 22, 2018

사용 방법에 대한 글이 있어서 간단하게 정리하고 여기에 공개했다.

posix aio의 네트워크 소켓을 지원에 대해서

July 31, 2019

posix의 비동기 IO의 API인 aio는 파일 조작만 지원하는 걸로 알고 있었는데 소켓 조작에도 사용할 수 있다고 한다. https://koyo.kr/post/posix-aio-socket-server-example/ 그런데 리눅스쪽 서버 개발 관련해서 자료를 찾을 때 소켓 ...

premake

April 29, 2019

CMake와 같은 멀티 플랫폼 오픈소스 개발에 유용한 툴. lua를 통해 스크립트를 작성한다. 루아 파일 이름과 같은 이름의 솔루션 파일을 만들어준다. 현재 premake4와 premake5 두 가지 버전이 있다. Visual Studio 2013 ...

std::codecvt_utf8로 wstring을 utf-8 문자열로 변환 하기

April 4, 2017

std::wstring을 utf-8 문자열로 변환 하는 방법은 아래와 같다. std::wstring wStr = L"우하하"; std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> utf8Conv; auto ...

tm 에서 time_t로 UTC로 변환 하는 함수

March 10, 2017

헤더 파일 time.h 혹은 헤더 파일 ctime 에서 time_t와 tm 구조체와의 변환을 하는 함수를 정리했다.   time_t→ tm 구조체 tm 구조체 → time_t 현지 시각 ...

unorder_set 에서 구조체(혹은 클래스)를 Key로 하고 싶을 때

March 9, 2019

출처 == 오퍼레이터를 오버라이드 한다. hash 함수를 구현한다. // key로 사용할 구조체 struct Point { int x, y; Point(int x, int y) : x(x), y(y) { } // override == ope...

멤버 변수에 대한 포인터를 이용하여 타입의 특성을 판정

April 21, 2017

멤버 변수에 대한 포인터라는 것은 우선, 예로서 단순히 정수를 래핑 한 클래스를 보자 class int_wrapper { public: int data; int_wrapper(int data) : data(data) {} }; 위 코드에서 int_wrapper::dat...

클래스 멤버 함수 포인터 배열 사용하기

December 16, 2016

함수 포인터 관련 검색을 하면 C 버전이 많이 나오고, 배열 타입을 사용하는 경우는 별로 없어서 공유한다. (사실 최신 C++에서는 std::function을 사용하면 되기 때문에 이걸 사용하지 않아도 된다) 선언 bool(TEST::*m_pFunc[4])(const int, ...

표준 C++ 규격이 3년 간격으로 제정 되는 이유

July 17, 2019

Draft FAQ: Why does the C++ standard ship every three years? – Sutter’s Mill 현재 C++ 표준은 3년 단위로 제정 되고 있는데 왜 3년 주기인지 C++ 표준 위원회 의장인 Herb Sutter씨의 설명. C++ 표준...

Cloud (2)

AWS - P2P에서 클라우드로의 전환. For Honor와 Friday the 13th The Game이 어떻게 플레이어 경험을 향상 시켰는가

May 13, 2018

원문 게임 개발자로서 출시에 이르기까지 열정을 잃지 않고 게임 개발과 팬 커뮤니티의 육성에 수 년의 세월 투자 되어 왔다고 생각한다. 최고의 사용자 경험을 제공 할 수 있는 것에 대해서는 예를 들어 네트워크 연결시 플레이어의 대기 시간에 대한 백엔드의 선택 등 백엔드 인프라는 가...

Google Cloud Platform의 15개 서비스를 영구 무료 한도를 제공

March 17, 2017

구글은 2017년 3월 10일 Google Cloud Next 17의 3일째 기조 강연에서 15개 서비스의 영구 무료 쿼터를 발표. 영구 무료 한도 대상 서비스 이름과 월 제한은 다음과 같다(제품에 따라서는 아래 외에도 제한이 있다). Google Cloud Engine(...

DB (9)

MongoDB - C# find

April 26, 2019

모든 도큐먼트 가져오기 클래스 맵핑 var collection = GetDBCollection<DBBasic>("Basic"); var documents = await collection.Find(_ => true).ToListAsync(); return ...

MongoDB - C# insert, update, delete

April 25, 2019

기본 추가 클래스 맵핑으로 새 도큐먼트 추가 var newData = new DBBasic() { _id = "test01", Level = 1, Exp = 0, Money = 1000, Costume = new List<int&g...

MongoDB - C# 프로그래밍

April 24, 2019

MongoDB 공식 C# Driver 1.x와 2.x 라이브러리가 많이 다름. 2.0 드라이버 소개 레퍼런스 온라인 도움 문서 Indexes.CreateOneAsync sample Find & FindAsync sample 아래 예제 코드에서 사용...

MongoDB - wiredTiger

April 23, 2019

wiredTiger 사용 conf 파일 예 // mongodb_wt.conf storage: dbPath: "/data/mongod_wt" engine: "wiredTiger" directoryPerDB: true wiredTiger: ...

MongoDB - 데이터 추출 툴 mongoexport 와 mongodump 간단 비교

September 11, 2017

MongoDB의 데이터를 출력하는 툴로 mongoexport 와 mongodump가 있다. 둘 다 mongodb-tools 패키지에 포함되는 도구이다. mongoexport는 CSV 또는 JSON 텍스트 데이터, mongodump는 BSON 형식의 이진 데이터로 출력한다. 사용...

MongoDB 3.0.6 Windows에서 설치 및 실행

April 22, 2019

이 글은 이것을 정리한 것이다. MongoDB 3.0.6 Windows에서 설치 및 실행 MongoDB 공식 다운로드 에서 ‘Windows 64-bit 2008 R2+’를 선택해서 다운로드 한다. 기본 설치 위치는 C:\Program Files\Mongo...

MySQL의 3가지 lock - Record lock, Gap lock, Next-key lock

September 8, 2017

Record lock(레코드 락): 단일 인덱스 레코드의 락. Gap lock(갭 락): 인덱스 레코드 사이의 갭의 락, 선두 인덱스 레코드의 앞이나 말미 인덱스 레코드의 뒤의 갭의 락 Next-key lock(넥스트 키 락):레코드 락과 이 레코드 직전의 갭 락의 조...

Redis 4.0의 핵심 기능

May 1, 2019

(몇년 전의 글을 블로그에 올린 것임) 참고 redis 4.0은 지금까지와는 비교하면 아마 가장 극단적인 버전 업 중 하나이다. 향후 사용자에 의해 발견된 중대한 문제는 수주일에서 수개월로 패치 발표할 테니 신중하게 이용하자. a modules system redis는 이미 해...

Redis 서비스 전에 조사할 것들

May 6, 2019

Redis 서버의 흔한 실수 법 Redis 서버가 떨어지거나 APP서버가 떨어질지는 상황에 따른다. KEYS 명령과 ZRANGE 명령으로 수만건 이상에 접근하여 I/O대기로 죽는다 데이터 설계를 실패하여 메모리 부족으로 쓸 수 없게 되어 죽는다 Redis 서버에서 장애...

ETC (20)

2018 컴투스 경력직 원클릭 채용

March 29, 2018

4월 한달 동안 간단한 절차로 컴투스에 지원할 수 있습니다~~ 지원하기

MS 기술 문서 번역하기

December 9, 2018

MS의 기술 문서는 예전에는 MSDN을 통해서 제공했지만 몇년 전부터는 https://docs.microsoft.com 을 통해서 제공하고 있다. (이전에 만든 문서는 아직 MSDN에 있다) https://docs.microsoft.com 의 장점은 한글로 번역되어 있지 않는 문...

POCO를 이용한 C++ 네트워크 프로그래밍

June 29, 2017

e-book으로 나온 후 몇 주전에 종이 책으로 나왔습니다. yes24 POCO를 사용하면 C++로 네트워크 프로그래밍을 이전 보다 훨씬 쉽게 할 수 있으니 꼭 한번 공부 해보기를 추천합니다^^

ebook - POCO를 이용한 C++ 네트워크 프로그래밍

May 1, 2017

구입 며칠 전에 나왔습니다^^ NHN Next 에서 일하게 되면서 시간 여유가 생겨서 짧은 분량이지만 책을 집필 할 수 있었습니다. 책 내용은 제목 그대로 POCO 라이브러리 중 Net 부분의 라이브러리를 사용하여 네트워크 프로그래밍을 하는 방법을 설명하고 있습니다. 아직...

svn 에러 E155010 is scheduled for addition, but is missing

May 23, 2019

svn 업데이트를 하니 특정 디렉토리가 삭제가 되었는데 충돌이 나서 수동으로 지웠음. 이 후 커밋을 하려니 위와 같은 에러가 발생. 이런 경우 –force라는 플래그를 사용하여 강제적으로 없애준다. 위에 삭제된 디렉토리가 test1 이라고 하면 svn delete --force...

구인 - 서버 프로그래머

March 9, 2018

저는 현재 가산디지털역에 있는 컴투스에서 일 하고 있습니다. 제가 소속된 회사에서 서버 프로그래머를 구인 중이라서 혹시나 하는 마음에 글 올려봅니다. 스카이랜더스 컴투스의 스카이랜더스 라는 프로젝트에서 서버 프로그래머를 구인 중입니다. 스카이랜더스는 해외 유명 IP로 애니메이션까...

로그 설계 지침

May 4, 2019

원문

마크다운 문법 - Table of contents

March 5, 2019

Table of contents ================= * [gh-md-toc](#gh-md-toc) * [Table of contents](#table-of-contents) * [Installation](#installation) * [Usa...

모델이나 메소드에 이름을 붙일 때는 영어의 품사에 주의 하자

June 7, 2019

모델의 이름은 명사로 한다 예: “지불 정보”를 나타내는 모델을 만들고 싶은 경우 × Pay ○ Payment pay는 동사로 pay의 명사형이 payment 이다. Pay 모델이 아니라 Payment 모델을 만들자. 예: “종교”를 나타내는 모델을 만들고 싶은 경우...

스터디 인원 모집 - Go로 게임 서버 만들기

July 21, 2017

프로그래밍 언어 Go로 게임 서버를 만들기 위해 필요한 기술과 경험을 서로 공유하기 위해 스터디를 시작하려고 합니다. 스터디를 만드는 큰 이유는 이 모임을 통해서 꾸준히 Go를 공부하고, 다른 사람들과 Go 관련 지식이나 경험을 공유하기 위해서 입니다. 아마 Go로 실제 일을...

신입 게임 프로그래머가 될 분들께 간단한 조언

November 27, 2017

아는 내용일 수도 있지만 혹시나 하는 마음에 간단하게 글 적습니다. 큰 회사들은 공채로 신입을 많이 뽑고, 공채는 10월초부터 시작합니다. 요즘은 큰 회사(상장된, 혹은 규모가 큰)들은 신입을 공채로 많이 뽑고 있습니다. 대부분의 회사가 공채는 10월초부터 시작합니다. 그러니 1...

이름 붙이기

June 8, 2019

메소드 이름은 동사로 시작한다 동사 이름 한글 표현 주된 반환 값 Get 취득하다 객체 Set 설정하다 void ...

좋은 에러 메시지 쓰는 법

May 5, 2019

원문 에러 메시지를 2가지로 분류한다 우선, 에러 메세지라고 해도 다음의 2가지 패턴에서 크게 달라진다. (1) 이용자가 보는 에러 메세지 (2) 개발자가 보는 에러 메시지 (1) 이용자가 보는 에러 메세지 내부 구현에 대해서는 적지 않는다 | | | |–|–| |NG | ...

좋은 클래스 이름을 짓기 위한 참고 정보

June 9, 2019

데이터 소스를 취급하는 레이어 이름 보충 예 Client HttpClient 등 Server-Client 의미로 사용하는 TwitterApiClient, QiitaApiC...

좋은 함수 이름을 짓기 위한 참고 정보

June 10, 2019

참 거짓을 돌려주는 메소드 장소 단어 의미 예 Prefix is (오브제그트가)대기 하는 상태가 되어 있나? isChecked ...

참, 거짓을 반환 하는 함수의 네이밍

June 11, 2019

참 거짓 값(Boolean, bool)을 반환하는 함수는 is로 시작하는 것이 일반적이라고 생각한다. 적어도 C++ 에서는… 그러나 영어적으로 is 시작이 어려운 경우도 있다. is로 시작할 수 없는 함수 이름의 명명 방식을 생각해 봤다. 존재 하는가? 가장 하기 쉬운 실패가 “...

추천 프로그램(개발 유틸리티)

November 16, 2018

asciinema https://asciinema.org/ 터미널에서의 입력 기록과 재생, web으로 공유도 가능 사용법 소개 (일어) https://dev.classmethod.jp/tool/intro-asciinema/ ...

컴투스 2019 신입 게임프로그래머 특별채용 - 02/11까지

January 25, 2019

링크

코딩용 폰트

May 24, 2019

source-code-pro https://github.com/adobe-fonts/source-code-pro d2codingfont https://github.com/naver/d2codingfont/releases Fira Code https://github.com/ton...

회고 - 2018년에 본 책(IT)

December 30, 2018

당연히 올해에 본 책들도 다 회사의 도움을 받았다. 대부분의 회사들은 책 구입을 지원할테니 회사 도움을 받아서 가능하면 책을 사 보기 바란다. 2018년에는 아래의 책을 구입해서 보았다. PHP 7 예비학교 예비 웹 프로그래머를 위한 과외 수업 러닝 PHP PHP 입문...

Golang (68)

Go 언어 2017년 조사는 제네릭 및 종속성 관리가 Go 언어에 가장 요구되는 기능임을 밝혔다

April 10, 2018

원문 최신 Go 언어 조사에 의하면 Go 언어는 제네릭 및 종속성 관리 기능이 부족하고, 이것이 이 언어의 양대 문제이다, 라고 개발자가 생각하고 있다는 것을 알았다. 이러한 상황에도 많은 응답자는 Go 언어를 개인 프로젝트가 아니라 전문적으로 사용하고 있다는 것이 조사에 의해 ...

golang - 01) TCP Server 만들기

May 9, 2019

출처 Echo Server 예제 코드 package main import ( "log" "net" ) func handleConnection(conn *net.TCPConn) { defer conn.Close() b...

golang - 02) TCP Server 만들기

May 10, 2019

출처 서버 종료하기 package main import ( "context" "log" "net" "os" "os/signal" "strings" "sync" "syscall" ) const ( listener...

golang - 03) TCP Server 만들기

May 11, 2019

출처 server 패키지 만들기 struct를 이용한다. handleConnection에서 사용하는 속성을 Server 구조체, handleConnection에서 사용하는 속성을 Conn 구조체에 정리한다. main.go package main import ( ...

golang - 04) TCP Server 만들기

May 12, 2019

출처 비동기 Write main.go package main import ( "context" "log" "os" "os/signal" "syscall" "github.com/dmmlabo/tcpserver_go/tcp4/ser...

golang - 05) TCP Server 만들기

May 14, 2019

출처 Graceful Shutdown main.go package main import ( "context" "log" "os" "os/signal" "syscall" "github.com/dmmlabo/tcpserver...

golang - Build

September 28, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 빌드 go build -tags를 사용하여 Release/Debug를 바꾸기 디버깅/릴리스에서 기능을 바꾸고 싶은 경우 Build constrains를 사용하면 좋다. Build Constrains는?...

golang - CLI 툴을 만들 때 편리한 패키지

April 28, 2019

출처 커맨드 라인 옵션 파서 cli.go A small package for building command line apps in Go https://github.com/codegangsta/cli Cobra A Commander for modern Go CLI interact...

golang - CentOS 7에서 Go 설치하기

September 5, 2019

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-am...

golang - Go 애플리케이션을 Supervisor로 대몬화

December 12, 2018

원문 Go는 언어 레벨에서 daemon화가 지원되지 않으므로 Supervisor 이나 systemd로 daemon화 한다. Supervisor 도입 sudo apt-get install supervisor Go 애플리케이션 빌드 go build hoge supervi...

golang - Go 패키지 경로와 패키지 이름은 달라도 좋은가?

December 29, 2018

원문 Go 에서는 패키지 패스의 최후의 요소는 go 파일의 패키지 이름과 같이 하는 것이 관례인데 “서로 다르면 어떻게 될까?” 확인해 보자 경로 트리 $ GOPATH / + - src / + - japan / + - main.go ...

golang - OOP 프로그래밍 하기

January 8, 2019

캡슐화 Go에서는 구조체와 해당 필드, 함수, 메소드의 범위는 이름의 선두가 대문자, 소문자로 결정된다. 대문자이면 public, 소문자라면 같은 패키지 내로 닫힌 범위로. 그러므로 아래와 같이 쓰는 것으로 캡슐화를 실현할 수 있다. //human.go packag...

golang - The Go Playground에서 유닛테스트 하기

August 13, 2018

Go는 온라인 상에서 코드를 실행 해 볼 수 있다. The Go Playground The Go Playground에서는 유닛테스트 코드도 실행 할 수 있다. package main import "testing" func Hello(name string) string { ...

golang - Ubuntu에 최신 버전 설치하기

September 19, 2018

출처: https://medium.com/@RidhamTarpara/install-go-1-11-on-ubuntu-18-04-16-04-lts-8c098c503c5f Step 1  Install Go Language sudo apt-get update sudo apt-get -y...

golang - WebFramework gin

December 20, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 개요 공식페이지 비교적 경량, 간단한 인터페이스를 갖추 프레임워크 벤치마크 설치 go get github.com/gin-gonic/gin hello World package main...

golang - Windows에서 godep 설치 후 godep 명령어를 찾지 못하는 경우

April 29, 2018

godep은 Go언어의 라이브러리가 의존하고 있는 패키지를 관리하는 툴로 node.js의 npm이나 Ruby의 Gem과 비슷한 것이다. godep을 Windows에서 설치 후 실행하면 아래와 같은 에러가 나오는 경우는 설치한 godep 실행 파일이 있는 디렉토리가 path에 들어...

golang - atomic

September 15, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. atomic atomic 패키지는 int32, uint32, int64, uint64, uintptr의 5가지 타입 각각에 Add, CompareAndSwap, Load, Store, Swap 5 종류의...

golang - bcrypt로 패스워드를 hash화 할 때 패스워드의 bytes 수에 조심하자

July 15, 2019

bcrypt는 자주 사용 되고 있는 패스워드의 해시 함수이다. Slack’s hashing function is bcrypt with a randomly generated salt per-password which makes it computationally infeasible ...

golang - binary encoding

November 3, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 바이너리 엔코딩 개요 복수의 값과 바이트 열의 상호 교환을 한다 복수의 값은 고정 길이 값으로 해석된다. 고정 길이 값으로 다룰 수 있는 것 ...

golang - channel 사용하기

November 4, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 채널 사용하기 받기 전용, 보내기 전용 채널 선언 받기 전용 c <-chan int 보내기 전용 c chan<- int 다른 고루틴에 동기적으로 통신하고 싶은 경우 2개의 채널이 서로...

golang - defer

October 29, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. defer 테스트 테스트 1: 마지막으로 쓴 것이 가장 뒤에 쓴 것이 제일 처음 호출된다 http://play.golang.org/p/gb8tbGk4wr package main import...

golang - erning/gorun 패키지 소개

October 1, 2018

출처 Github : https://github.com/erning/gorun 용도는 매우 간단하다. “Go 소스 코드를 Python이나 Ruby 같은 실행 파일로 돌린다.”라는 느낌이다. 아이디어의 승리라는 느낌이다. hello.go #!/usr/bin/env gorun //...

golang - error

November 8, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. Error 스택 상태 출력과 에러 핸들링 github.com/pkg/errors 를 사용하여 error 오브젝트를 랩핑하면 스택 트레이스를 추가할 수 있다. error 중의 스택 트레이스는 “%+v”...

golang - exec.LookPath 커맨드 명령어가 실행 가능한지 조사

November 26, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. os/exec.LookPath를 사용하면 커맨드가 실행 가능한지 조사 할 수 있다. $PATH 를 고려하여 찾아주지만 슬래쉬가 들어가 있으면 $PATH를 고려하지 않는다. package main imp...

golang - goroutine이 교체 되는 타이밍

June 7, 2018

결론 Go언어에서 goroutine은 반드시 스위치 하는 것은 아니다. “for() {}” 같은 비지 루프를 GOMAXPROCS의 지정 수 이상 포함시키면 스위칭 되지 않는다. 경위 처리가 없는 비지 루프가 있으면 goroutine이 교환 되지 않고 처리가 멈추는 것을 알았다. ...

golang - go로 쓴 코드의 힙 할당 여부 확인하는 방법

January 6, 2019

출처 서두 Allocation Efficiency in High-Performance Go Services · Segment Blog 라는 기사를 읽었다. 좋기 때문에 꼭 일독을 권장한다. 이 글은 나의 이해와 실제로 시험해 본 결과의 메모이다. 가장 중요한 포인트는 go bu...

golang - new와 make의 차이

December 3, 2018

원문 정리 차이를 간략하게 설명한다.   new(T) make(T) 대상 임의의 타입 slice, map, channel 만 초기화 ...

golang - nil

November 11, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. nil 타입을 가진 nil nil은 사실 타입이 있다. nil과 nil이 등가가 아닌 것처럼 보인다 nil이 타입 정보를 가지므로 nil==nil 이 true가 된다는 법은 없다. true가 되기 위해...

golang - or-done-channel로 코드 가독성을 높인다

December 18, 2018

원문 Go 병렬 패턴 for-select loop or-channel or-done-channel tee-channel fan-in, fan-out 등이 있다. 어떤 때 or-done-channel을 사용하나 상한 수가 정해져 있는 것 같은 처리를 할 경우...

golang - package의 prefix를 생략

November 27, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. // main.go package main import ( "log" ) func main() { log.Printf("hello") } 에서 “log.”를 생략하려면 import ( . ...

golang - random

November 28, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 공식 문서 일어 0 에서 9까지(포함)의 난수 얻기 import ( "fmt" "math/rand" "time" ) func main() { rand.Seed(time....

golang - serialization benchmarks (2018년 8월)

October 16, 2018

출처: https://github.com/alecthomas/go_serialization_benchmarks 2018-08-19 Results with Go 1.10 on a 2.5 GHz Intel Core i7 MacBook Pro (Retina, 15-inch, Mid 2...

golang - slice의 shuffle

November 1, 2018

Fisher–Yates shuffle 이라는 알고리즘 사용 package main import ( "fmt" "math/rand" ) func main() { n := 30 arr := generate(n) fmt.Println(arr) ...

golang - string

November 24, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. []byte를 string으로 변환 시 널 문자 제거하기 var rawUserID []byte userID := strings.Trim(string(rawUserID), "\x00") byte ar...

golang - string to slice, slice to string, slice to array, array to slice, uint16 to []byte (Little Enddian), []byte to Uint32 (Little Enddian)

June 11, 2018

string => slice 출처: https://github.com/soshi8/GoLangTrans package main import ( "fmt" ) func main() { var aaa string aaa = "sample string" bbb ...

golang - sync.Map

November 22, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. sync.Map의 성능 원문 Golang 동시성은 공유 리소스에 액세스 하는 경우 충돌이 발생하지 않도록 잠금을 준비해야 한다. 예를 들어 표준 맵의 경우 goroutine safe 하지 않기 때문에, ...

golang - sync.pool

May 22, 2018

쉽게 말하면 메모리풀 이라고 생각하면 좋다. Go 1.3 버전에서 표준 패키지로 들어왔다. sync.Pool로 극상의 메모리 효율 의 글 중 일부를 번역 정리 했다.

golang - thread pool과 GOMAXPROCS는 관계 없음

June 4, 2018

golang의 경우 스레드 풀을 사용하고 있으며 블러킹 하는 시스템 콜이라면 다른 스레드로 옮겨서 처리한다. 부족한 경우에는 OS가 허락하는 한도 내에서 만든다. 이 수는 GOMAXPROCS 와는 관계 없다.

golang - time

October 23, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 시간 및 날짜 표준 API 표준 라이브러리 사용 예 현재 날짜 package main import ( "fmt" "time" ) func main() { now := time....

golang - tip. 터미널 입력에서 입력 문자열 표시하지 않기, uintptr을 int로 변환

November 13, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 터미널 입력에서 입력 문자열 표시하지 않기 패스워드 등을 입력 받을 때 화면에 문자가 나오지 않게 하는 방법. 아래 코드는 Windows에서는 동작하지 않음 package main impor...

golang - web

December 4, 2018

시작 기본적으로 필요한 것은 net/http 패키지에 있다. import "net/http" 이것만으로 기본적인 HTTP 리퀘스트와 리스폰에 관한 처리를 실시할 수 있다 http.Handle("/foo", fooHandler) http.HandleFunc("/bar", fun...

golang - webFramework Echo

October 30, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 개요 웹 프레임워크. 경량 고속. 공식 페이지 https://labstack.com/echo 설치 go get github.com/labstack/echo 버전 2부터는 fastht...

golang - 고루틴과 콜스택

December 10, 2018

고루틴이 기동한 시점에서 함수의 콜스택이 분리된다. panic은 고루틴의 콜스택을 돌아간다. 즉 defer & recover는 panic이 발생한 고루틴 내에서 사용해야 한다. 일바 함수 호출 고루틴을 포함한 함수 호출

golang - 구조체

December 2, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 구조체 만들기 package main import ( "log" ) type Money struct { amount uint currency string } func mai...

golang - 구조체 구현 패턴

December 27, 2018

출처 생성자 함수 export에 의한 접근 허가 인터페이스에 의한 다형성 구조체에 의한 다형성 구조체에 의한 서브 클래스, responsibility 구조체에 의한 이양 함수에 의한 이양 생성자 함수 Go 언어는 구조체의 생성자가 없으므로 구조체를 ...

golang - 구조체의 정확한 크기 계산하기

February 8, 2019

golang의 구조체도 c/c++과 같이 패딩이 있다. type PacketHeader struct { N1 int32 N2 int16 N3 int64 } 위 구조체를 unsafe.Sizeof를 하면 패딩 때문에 크기가 16이 나온다. (sizeof가 기본 기능이 아니고...

golang - 기본 문법

September 29, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 지원 기능 tar, zip, zlib, gzip, bzip2 DES, AES, SHA1, SHA256, SHA512 PE, ELF, DWARF BASE64, ASN.1, JSON, XML,...

golang - 길이가 0인 slice는 nil로

July 10, 2018

출처 package main import ( "fmt" ) func testNil(p []byte) { fmt.Printf("p: %v\n", p) fmt.Printf("len(p): %d\n", len(p)) fmt.Printf("cap(p): %...

golang - 랜덤 seed 설정하기

May 22, 2019

출처: https://qiita.com/makiuchi-d/items/9c4af327bc8502cdcdce 시간을 seed로 설정하기 time.Now().UnixNano()를 사용한다. package main import ( "fmt" "math/rand" ...

golang - 배열과 slice 기초

September 9, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 배열 배열 기초 배열 사용 // 크기 4, int 형 배열 var a [4]int // 0번째 요소에 1 대입 a[0] = 1 // 변수 i를 선언하고 a[0]을 i에 대입 i := a[0]...

golang - 버전 1.9

August 30, 2017

“Go 1.9”의 가장 중요한 변경은 타입 앨리어스의 도입으로 type T1=T2 라고 선언함으로써 타입 T2의 앨리어스 이름을 T1으로 정의할 수 있다. 또 math/bit 패키지는 CPU의 특수 명령에 대응한 무부호 정수비트 계수/조작 기능을 갖추고 있으며 sync 패키지...

golang - 변환

November 30, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 출처 문자열 <-> 수치 변환 strconv 패키지를 사용한다. 문자열 → 수치변환 func Atoi(s string) (i int, err error) 문자열을 10 진수 int 타입으...

golang - 브로드캐스팅 하는 에코 서버 예제 코드

May 16, 2019

서버 package main import ( "bufio" "fmt" "log" "net" "os" ) func main() { if len(os.Args) != 2 { log.Fatalf("Usage: %s <p...

golang - 설치와 GoPath

October 24, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 설치 (일어)Ubuntu에 GO 언어(golang)의 최신 버전을 apt로 설치 (일어)Homebrew로 Go 1.6 설치 (일어)Go 언어 개발환경 셋업 (일어)Go 개발 환경/빌드 환경...

golang - 성능 조사 map과 GC

May 25, 2018

테스트 환경: go version go1.7.3 windows/amd64 기본 용량 golang의 map은 용량을 확장 할 때 원 데이터의 복사와 재 해시를 하기 때문에 map을 만들 때 용량을 설정하는 것이 좋다. package main import "testing" fun...

golang - 성능 조사 slice vs array

May 28, 2018

출처 테스트 환경: go version go1.7.3 windows/amd64 package go1_6 const capacity = 1024 //배열 조작 array는 slice 보다 빠르다 func array() [capacity]int { // 배열 처리 테스트 함수 ...

golang - 성능 튜닝하기

January 1, 2019

대전제 프로파일링을 취한 뒤 어떻게 최적화 할 것인가에 대한 이야기 추측하지말고 계측하라 알고리즘이나 데이터 구조는 최적인 것을 선택하고 있다고 가정. 손 재주로 최적화하는 것보다 알고리즘 자체를 바꾸는 쪽이 압도적으로 좋아진다. 이 기사의 각 벤치 마크는 Go 1....

golang - 스택과 힙에 대해

January 9, 2019

실행 시 동적으로 메모리를 확보하는 영역으로서 스택과 힙이 있다. 스택 메모리는 함수 호출 스택을 저장하고 로컬 변수, 인수, 반환 값도 여기에 둔다. 스택의 Push와 Pop은 고속이므로 객체를 스택 메모리에 저장하는 비용은 작다. 단 함수를 나오면 스택이 Pop 되...

golang - 실행 중인 코드의 행 수와 파일 이름 얻기

November 6, 2018

현재 실행 중인 Go의 코드 정보를 로그를 남기고 싶을 때는 코드의 파일 이름과 행 수를 알아야 한다. runtime.Caller 함수를 사용하면 이 정보들을 얻을 수 있다. package main import ( "runtime" "fmt" ) func main() ...

golang - 에코 서버 예제코드

May 15, 2019

클라이언트 관리를 채널 별로 나누어서 처리. distribute 라는 함수를 고루틴으로 동작시키고, 내부에서 채널을 통해서 메시지를 받는다. 클라이언트 접속, 클라이언트 접속 해제, 클라이언트에게 메시지 보내기 채널을 나눈다. 고루틴은 handle, distribu...

golang - 주기적으로 실행하는 패턴

December 13, 2018

main에서는 아래와 같이 ctx를 만들어서 periodicLoop에 넘기고, 멈추고 싶을 때는 cancel()을 호출한다. func main() { ... ctx, cancel := context.WithCancel(context.Background()) ...

golang - 추첨 기능 라이브러리 lottery

December 8, 2018

github 추첨 기능 라이브러리 random을 랩핑 지정한 확률 20%의 확률로 ~ 같은 처리를 하고 싶을 때 lot : = lottery.New (rand.New (rand.NewSource (time.Now () UnixNano ()))) if lot.Lo...

golang - 코드 정적 분석 툴 go vet

October 26, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. go vet go의 표준 패키지에 포함된 코드 정적 분석 툴이다. 공식 문서는 https://golang.org/cmd/vet/ go vet 사용 방법 ・flag 등 go vet packag...

golang - 파일 업로드 하기

October 18, 2018

출처 Go 언어에서 HTML 페이지에서 파일 업로드 된 경우 서버 측의 임의의 장소에 업로드 된 파일을 저장하는 샘플 코드. sever.go package main import (format "fmt"); import ("net/http"); import "os"; imp...

golang - 패닉 발생 시 stack trace 출력

January 29, 2019

아래 코드는 어떤 오픈 소스에서 본 것을 아주 약간 변경한 것이다. 보기 좋게 출력하기 위해 go-spew 라는 오픈 소스 라이브러리를 사용하였다. import ( "fmt" "runtime" "github.com/davecgh/go-spew/spew" ) func Pr...

golang - 패키지 관리와 유용한 라이브러리들

November 29, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 라이브러리 관리 go get 으로 받은 패키지 갱신 go get -u all 로 안된다면 문제의 xx.a 파일을 삭제하고 go run을 실행한다. rm /Users/kjunichi/gocode/pkg/da...

golang - 핸들러 패턴

December 28, 2018

type SpecialFunc func(int) bool SpecialFunc은 int를 받고 bool을 반환하는 함수를 뜻하는 타입이 된다. 이것에 대해서 메소드를 생성하는 것이 가능핟. func (sf SpecialFunc) SpecialMethod() { ... }...

golang - 호출 측의 func 이름 알기

November 20, 2018

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. pc, _, _, _ := runtime.Caller(1) caller_name := runtime.FuncForPC(pc).Name(); 로 할 수 있다. DEBUG 플래그가 있으면: import ...

Network (37)

10GbE 에서는 Jumbo Frame가 효과적, 1G와의 혼재 환경에서는 MTU 사이즈에 주의

January 29, 2018

번역. 원본 10GBASE-T 회선의 성능이 6~7Gbps 정도로 포화 되는 경우가 많다. 이유는 MTU(Maximum Transmission Unit)이다. MTU는 요컨대 최대 프레임 크기로 이 숫자를 넘는 데이터를 전송하는 경우 프레임이 분할된다. Ethernet에서는 최...

APNS/GCM의 리퀘스트 제한

November 8, 2017

번역 글로 2016/10월 기준. 이후 바뀔 수 있음 APNS와 GCM에서 Push 통지를 할 때의 제한 정리 APNS iOS8 미만의 경우 페이 로드 데이터의 상한은 256 바이트까지. iOS8의 경우 페이 로드 데이터의 상한은 2K 바이트까지. iOS9 이후의 경우 페이 로...

Actor 프레임워크의 메시지 전달에서 사용하는 용어

July 14, 2017

at-most-once delivery는 메커니즘에 건네지는 각 메시지에 대해 해당 메시지가 0 번 또는 1 번 전달됨을 의미합니다. 보다 일반적인 용어로는 메시지가 손실 될 수 있음을 의미합니다. at-least-once(최소한 한 번 전달) 메커니즘에 전달 된...

BaaS - GameSparks

November 7, 2017

아래 글의 일부 번역이다. BaaSでゲームサーバを作る話 2016년 7월을 자료이므로 지금과 다른 부분이 있을 수 있다.

C# - proto.actor 프레임워크

July 12, 2017

proto.actor Akka와 비슷한 프레임워크이다. Akka.NET의 개발자가 만든 것이다. Akka.NET 이 있는데 이것을 만든 이유는 Akka.NET은 처음부터 모든 것을 다 만들어서 점차 유지 보수가 힘들었다고 한다. proto.actor는 이미 검증 받은 라이브러리를...

C# 오픈 소스 네트워크 라이브러리 FreeNet

December 1, 2018

FreeNet은 C#으로 온라인 게임 서버 만들기의 저자 이석현님이 Github에 공개한 네트워크 라이브러리이다. 책을 먼저 보면 코드 이해가 쉽다. C# 오픈 소스 네트워크 라이브러리로 SuperSocket이 유명한데 이 라이브러리는 기능이 많은만큼 복잡한데 FreeNet은 필...

C++ http 클라이언트 요청하기 - HappyHttp

April 17, 2018

HappyHttp Visual Studio 2017에서 빌드하면 에러가 난다. 조금 수정이 필요하다. happyhttp.cpp 파일의 상단에 아래의 전처리를 선언한다. #define _WINSOCK_DEPRECATED_NO_WARNINGS 1 #define _CRT_SECURE_N...

C++ http 클라이언트 요청하기 - WinHttpClient

March 14, 2018

Win32 API인 WinHttp를 랩핑한 라이브러리이다. 원 출처는 코드 프로젝트이다. A Fully Featured Windows HTTP Wrapper in C++ 예제 코드 - ConsoleApplicationWinHttp

C++ http 클라이언트 요청하기 WinHttp

March 11, 2018

아직은 기본 C++ 라이브러리로 http 통신을 할 수 없다. (아마 C++ 20 에서는 가능하지 않을까 생각한다). C++로 웹서버에 http 통신을 하려면 외부 라이브러리를 사용하던가 혹은 OS에서 제공하는 API를 사용해야 한다. 이 글에서는 Windows 플랫폼 한정으로 ...

C++ http 클라이언트 요청하기. libcurl, cpp-netlib, cpprestsdk

March 21, 2018

libcurl 개요 공식 사이트. https://curl.haxx.se/libcurl/ 이 라이브러리를 C++ 클래스로 랩핑한 프로젝트도 있다. https://github.com/mrtazz/restclient-cpp VS2017도 지원한다(단 VS...

Cassandra의 스토리지 엔진을 바꾸어서 고속화한 Rocksandra를 Instagram이 오픈소스로 공개

March 18, 2018

원문 Instagram은 NoSQL 데이터베이스 Cassandra에서 발생했던 Java의 가베지 컬렉션에 기인한 지연을 해소한 고성능 개량 버전 Cassandra를 오픈 소스로 공개했다고 발표했다. https://engineering.instagram.com/open-sourci...

DPDK를 이용한 네트워크 스택, 고성능 통신 베이스

February 12, 2018

번역입니다. 원본

HyperV-Switch를 사용하여 Windows 10의 HyperV on-off 하기

October 11, 2017

Windows 10에서 VirtualBox에 linux를 설치할 때 64비트를 설치 못하는 문제가 있다. 이것은 Windows에서 HyperV를 사용하고 있기 때문이다. 해결을 위해서는 HyperV를 종료하면 된다. HyperV를 때때로 사용해야 하는 경우는 HyperV-Sw...

League of Legends Platform의 AWS 이행

March 5, 2018

AWS re:Invent 2017에서의 LoL 세션을 정리한 글. 원문(일본어) 강연자 Rob Cameron씨. Senior Infrastructure Engineer, Riot Games 세션 내용 무엇을 해결 했는가? LoL의 컴포넌트는 크게...

MQTT

September 11, 2019

출처 ##MQTT란? MQTT(MQ Telemetry Transport)는 publish/subscribe 모델을 기반으로 하는 경량 메시지 프로토콜이다. 네트워크가 불안정한 장소에서 동작하기 위한 기능이나 힘이 약한 장치에서 움직이기 위한 경량화 등이 특징이다. MQ라고 이름...

NHN Next 게임서버 수업 실습용 채팅서버 소스 코드

April 17, 2017

NHN Next의 2016 ~ 2017년 게임서버 과정 수업에서 실습으로 만드는 채팅 서버 코드이다. Github Windows 플랫폼만 지원(Linux 지원 어렵지 않음) 64 비트 지원 C++ 로 구현 Visual Studio 2017 select 기반.동...

RPS(Receive Packet Steering)와 RFS(Receive Flow Steering)

April 23, 2018

RPS(Receive Packet Steering) RPS는 수신한 패킷을 처리하는 네트워크 부하를 다중 코어로 분배할 수 있다. 이 기술은 TCP/IP 같은 프로토콜을 패킷으로서 병행적으로 처리할 수 있다. 매핑은 해시 테이블 메커니즘에서 행해진다. 수신한 큐에는 CPU에 대한 ...

TCP 혼잡 제어 알고리즘들

December 7, 2017

원문 TCPの輻輳制御アルゴリズム、どれが一番速い? 의 일부이다. TCP의 중요한 요소로 혼잡 제어 알고리즘이 있다. TCP는 시퀀스 번호를 사용한 응답 확인에 의해 데이터의 확실한 도착을 보장하고 있다. 응답 확인을 하지 않은 패킷에 대해서는 다시 같은 데이터를 송신하도록, ...

Ubisoft 사례 - For Honor에서의 Amazon ECS 사용법

March 8, 2018

AWS re:Invent 2017에서의 Ubisoft 세션을 정리한 글. 원문(일본어) AWS ECS 사전 지식 강연자 Ralf Mueller - Online Technical Architect, Ubisoft Louis-Michel Gélinas - DevOps Team...

Virtual Box 팁과 링크 모음

November 1, 2017

가상머신과 Host간에 클립보드 공유 Ctrl-Alt-Del 누르기 게스트 확장 설치 공유 폴더 만들고 사용하기 가상화 활성화 하기 http://ubuntu.or.kr/viewtopic.php?p=44555 http://www.ibora.net/board/?i...

VirtualBox에 설치한 가상PC를 외부에서 RDP로 접속하기

November 1, 2017

Web 서버에서의 Thundering Herd

December 12, 2017

원문 WebサーバでのThundering Herdは過去の話? Thundering Herd란 하나의 소켓에 대해서 select나 epoll 같이 통신 가능하게 되는 것을 기다리는 시스템 콜을 이용하여 복수의 프로세스(또는 스레드)가 대기하고 있다면, 통신 가능하게 되었을 때 원래...

Win32 API - 대기 체인 분석

November 10, 2017

Windows7 에서 새로 생긴 기능이다. 이것을 사용하면 프로그램을 종료 시켰는데는 프로세스는 죽지 않고 살아 있는 경우 어디서 문제가 되었는지 어느 정도 알아낼 수 있다. 이 프로그램은 내가 집에서 만든 서버 애플리케이션으로 X 버튼을 눌러서 종료시킨다. 그런데 작업...

Windows 10 에서 Unix Domain Socket 사용 가능

June 15, 2018

Windows 10 2018년 봄 대형 업데이트에서 Unix Domain Socket 기능이 추가 되었다. AF_UNIX comes to Windows – Windows Command Line Tools For Developers Unix Domain Socket을 사용하기 위해서...

Windows에서 IOCP를 사용하는 경우의 설계에 관한 문제

July 10, 2017

MSDN에서… 개요 이 자료는 Windows NT IOCP(I/O Completion Port)의 입출력 모델에 대해서 이미 이해하고 관련된 API에 대한 자세한 지식이 있는 유저를 대상으로 하고 있다. IOCP에 대해서는 IOCP의 구현과, IOCP를 사용하기 위해서 필요한 A...

ZeroMQ

September 16, 2019

소개 공식 사이트 http://www.zeromq.org/ Github https://github.com/zeromq 예제 https://github.com/imatix/zguide N-N 통신을 구현하는 socket API풍의 경량 메시지 라이브러리 자동적으...

socket 프로그래밍을 할 때의 SIGPIPE에 의한 문제

July 21, 2019

출처 연결이 끊어진 소켓에 쓰기(send(2) 혹은 write(2) 같은 것)를 하면 SIGPIPE 시그널이 발생하고 프로세스가 종료하기 때문에 제대로 SIGPIPE 시그널을 핸들링 해 두자는 이야기 이다. (Windows OS에서는 상관 없는 이야기이다) SISGPIPE를 받...

socket의 accept에서 발생하는 에러와 의미

September 22, 2018

출처: https://qiita.com/kawasin73/items/3371d35166af733c2ce4

socket의 read에서 발생하는 에러와 의미

September 26, 2018

출처: https://qiita.com/kawasin73/items/3371d35166af733c2ce4

warning C4996 'inet_addr'

June 27, 2017

몇 년전에 만들어진 Winsock API를 사용한 코드를 최신 VC++로 빌드하면 아래와 같은 경고를 볼 수 있다. warning C4996: 'inet_addr': Use inet_pton() or InetPton() instead or define _WINSOCK_DEPREC...

ØMQ (ZeroMQ) 서론

July 28, 2019

출처 https://www.infoq.com/jp/news/2010/09/introduction-zero-mq/ PostRank의 설립자이자 CTO인 Ilya Grigorik씨가 지난주 ZeroMQ의 소개 기사를 썻다 . 버클리 소켓(BSD)는 모든 네트워크 통신의 기...

내 PC에서 실행 중인 VirtualBox에 내트워크 연결하기

October 30, 2017

내 PC에서 실행 중인 VirtualBox에 설치된 애플리케이션에 네트워크로 접속하려면 VirtualBox의 ‘포트 포워딩’을 설정하면 된다. 아래는 VirtualBox에 설치된 MongoDB를 내 PC에서 접속하기 위해 포트 포워딩 설정을 하였다. VirtualBox에 설치된...

네트워크 용어

July 18, 2019

Receive-Side Scaling(RSS) http://minimonk.net/2728 Windows Server 2012의 NIC 티밍(teaming)에 대응. TCP Chimney Offload http://vstarmanv.tistory.com/58 ...

도서 '온라인 게임 서버'의 예제 코드

March 31, 2018

온라인 게임 서버(지은이 강정중) 책의 예제 코드를 리팩토링 한 것이다. Visual Studio 2017(2015도 가능하다) ChatClient와 GameClient는 MFC로 구현되어 있어서 포팅하지 않았다(원본 코드를 보기 바란다) 원본 디렉토리에 원본 코드가 있다.

동영상 전달 서비스에 UDP를 사용하는 Akamai

August 21, 2017

일본의 Akamai 기사 중 동영상 전달 서비스에 UDP를 사용하는 이야기가 흥미로워서 일부 번역했다. 원문 방송국은 지상파, 위성, 케이블 텔레비전을 통해서 프로그램을 전달하고 있다. Akamai로는 이러한 서비스의 IP 전개를 한층 촉진하고 싶다. 첫째 라이브 배급 워크...

잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback

February 19, 2017

C++ Korea와 함께하는 제3회 마이크로소프트 멜팅팟 세미나 에서 ‘잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback’ 라는 이름으로 했던 내 강연의 자료이다. 슬라이드쉐어 github github에는 문서와 예제 코드도 같이 ...

패킷과 프레임의 차이

May 2, 2018

출처 네트워크를 통해 전송되는 데이터는 패킷이나 프레임이라는 단위로 분할되어 회선 위를 왕래한다. 같은 것을 가리키면서 패킷 이라고하거나, 프레임이라고도 하지만 엄밀하게는 다른 것이다. 인터넷 기술 표준화를 추진하는 단체 IETF(Internet Engineering Task ...

Node.js (5)

Debugging Node.js Performance Issues in Production

March 25, 2017

아래 강연의 내용의 일부를 정리 Debugging Node.js Performance Issues in Production 느리게 되는 이유 single thread CPU intensive code Slow I/O Event Loop saturation R...

Node 7.6 에서 async/await를 기본으로 지원

March 13, 2017

Node.js 7.6 이 출시 되었다. async/await 지원이 기본적으로 유효하게 되어 낮은 메모리 디바이스에서의 성능이 개선되었다. Node 7.6의 async/await 지원은 Chromium의 JavaScript 엔진인 V8를 버전 5.5로 업데이트한 데 따른 것이다....

Node.js - TCP Socket

April 17, 2019

간단한 hello world Class: net.Server 이벤트 'listening': server.listen()를 호출 후 서버가 바인드 되었을 때 발생. 'connection': 새로운 연결이 만들어지면 발생. 'close': 서버가 끊어지면 발생. 'error': 에러...

Node.js - UDP Socket

April 18, 2019

데이터 수신 dgram.createSocket(type, [callback]) type 에는 udp4, udp6, unix_dgram 지정 가능. 콜백은 message 이벤트가 발생했을 때의 내용을 기술. function (msg, rinfo) { } 버퍼(msg)와 송...

네이티브 모듈의 ABI 호환성 문제 대처

April 5, 2017

2017년 3월 13일(미국)에 열렸던 ‘Node.js VM Summit’ 에서 Node의 네이티브 모듈의 ABI 호환성 문제에 대해서 회의를 하였다. 회의 동영상 Node의 네이티브 모듈 문제 Node의 네이티브 모듈은 C/C++로 만들었고 V8과 NAN API(Applicat...

OS (7)

AppImage 패키지

December 17, 2018

Linux 배포본 중에서 AppImage 형식으로 배포되는 것이 있다. 설치 방법은 실행 권한을 부여하고, 실행만 하면 되기 때문에 매우 간단하다. 이 패키지 배포 형식이 보급되면 좀 더 Linux에서 앱 설치 및 사용이 쉬워질 것이다. 다운로드 한 파일(예를 들어 exa...

Homebrew 1.9.0에서 Linux/WSL을 실험적으로 지원

January 24, 2019

출처 macOS용 패키지 관리자 “Homebrew」의 최신판인 Homebrew 1.9.0 이 1월 9일에 공개 되었다. 본 버전에서는 Linux 및 Windows10의 “Windows Subsystem for Linux (WSL)”가 베타 버전으로 지원되고 있다. “Homebr...

IDC Japan의 일본의 서버 OS 점유률

October 3, 2018

IDC Japan에 의하면 일본에서 서버 OS 점유률은 Windows Server 52%, Linux 24.8%. 클라우드에 의해 Linux가 높은 성장을 하고 있다고 한다. Windows Server는 대기업의 프라이베트 클라우드나 클라우드 벤더 등의 대 규모 데이터 센터용으로 ...

LinuxBrew

January 21, 2019

특징 macOS의 Homebrew를 리눅스로 이식한 것 http://linuxbrew.sh/ root 권한이 필요 없다. home dir 에 설치 할 수 있다. 배포 package manager 에 의존하지 않는다 패키지 검색은 http://braumeist...

LinuxBrew 설치하기 (CentOS, WSL)

July 4, 2019

Linux (CentOS)에 Homebrew on Linux (Linuxbrew)를 설치하기 전에 출처: https://qiita.com/libra_lt/items/548fcbdfbcf992cba4ed CentOS Linux release 7.6.1810 (Core) Linux...

Linux에서의 최대 스레드 수

October 4, 2018

Linux에서 스레드의 최대 수를 변경하고 싶다면 커널의 파라메터를 조정하면 된다. kernel.threads-max와 kernel.pid_max, vm.max_map_count 수를 늘리면 된다. 예) sysctl -w kernel.threads-max=600000 sysctl...

tar.bz2, tar.gz 파일 압축 풀기 명령어

February 6, 2019

tar.bz2 파일 압축 풀기 tar -xvf test.tar.bz2 tar.bz2 압축 내용 보기 tar -tvf test.tar.bz2 tar.gz 파일 압축 풀기 tar -xvzf test.tar.gz

Rust (1)

Windows에 Rust 설치하기

February 25, 2019

Rust를 Windows에서 사용할 때 C++ 컴파일러가 별도로 필요하므로 먼저 VisualStudio Build Tools를 설치한다.(Visual Studio를 설치하면 된다) Rustup 설치 Rustup 사이트에 가서 rustup‑init.exe 링크를 클릭해서 다운로드 ...

Visual Studio (37)

VS2017 에 포함되어 있는 C++ 컴파일러 버전 매크로

March 20, 2017

VS2017 에 포함되어 있는 C++ 컴파일러의 버전 매크로는 _MSC_VER 1910 참고로 VS 2015는 1900. MSVC 런타임은 2015와 바이너리 호환. 그리고 VS 2017를 설치할 때 옵션 선택에 의해 VS 2015.3의 MSVC도 별도 추가할 수 ...

Visual Studio - C++ 라이브러리 프로젝트 시작하기

September 4, 2017

Visual Studio 2017의 세번째 업데이트 버전이 얼마전에 나왔다. Visual Studio 15.3 이다(이후 또 이버전의 패치 버전이 나와서 지금은 15.3.1 이다). 기존의 Visual Studio 버전 정책과 다르게 메이저 업그레이드도 아닌데 UI 변경이 꽤...

Visual Studio - C++ 솔루션 로딩과 빌드 고속화

September 29, 2017

MSDN에 있는 글 의 번역 입니다. C++ 솔루션 로딩 고속화 C++ 프로젝트를 향해서 “신속한 프로젝트 로딩”이라는 시험적인 기능이 도입되었다. C++ 프로젝트를 처음 열었을 때의 로딩 시간을 단축하는 것으로 2번째 이후에는 더 짧아진다. 이 시험 기능을 사용하는 경우는 아래...

Visual Studio - C++ 코드 분석 시 C++ 코어 가이드 적용하기

August 18, 2017

C++ 표준 위원회에서 C++ 코딩 규칙을 만들어서 깃허브에 공유했는데 이것이 C++ 코어 가이드 이다. VS2017 에서는 코드 분석 기능을 사용할 때 C++ 코드가 C++ 코어 가이드 룰에 맞게 코딩 되었는지 분석할 수 있다. 방법은 아래 그림처럼 설정한다.

Visual Studio - Find All References (모든 참조 검색)

August 14, 2017

코드 중의 변수나 함수가 다른 코드에서 어떻게 참조 되고 있는지 알고 싶을 때 ‘모든 참조 검색’을 사용한다. 단축키는 Shift + F12 이다. VS 2017에서는 이전과 다르게 검색 결과에 마우스를 올리면 해당 코드를 미리 볼 수 있다. 코드 미리 보기는 C++은 아직 되...

Visual Studio - Go To All (모두로 이동)

August 16, 2017

검색 하기 원하는 단어를 선택 후 [Ctrl]+[T] 키를 누르면 아래와 같은 창에 검색 결과가 나온다. 그리고 만약 검색 단어가 타입으로 사용된 것만 찾고 싶다면 ‘t 검색어’를 입력한다. 또 멤버 변수로 사용된 것만 검색하고 싶다면 ‘m 검색어’를 입력한다. 아래 그림에서...

Visual Studio - Go To 관련 키보드 단축키

September 25, 2017

VS에서 코딩 혹은 코드를 분석할 때 Go To 관련 단축키를 기억하고 있어서 편리하다. Go To 관련 키보드 단축키

Visual Studio - JSON, XML 데이터 붙여 넣기로 클래스 만들기

November 20, 2017

소스 코드에 JSON, XML 포맷의 데이터를 붙여 넣기를 할 때 붙여 넣을 데이터 구조에 맞는 클래스를 생성할 수 있다. 이 기능은 C#에서만 사용할 수 있다. 어떻게 사용하는지 아래 그림을 참고하기 바란다. 출처: Did you know – You can automat...

Visual Studio - Lightweight Solution Load

August 28, 2017

Lightweight Solution Load를 활성화 하면 프로젝트 지연 읽기를 할 수 있다. (프로젝트 로딩 시 전체 솔루션이 로딩 다 되지 않아도 활성화 되면서 순차적으로 솔루션을 로딩한다. 즉 모든 솔루션이 로딩 될 때까지 대기하지 않을 수 있다) 이 기능은 솔루션에는 수 ...

Visual Studio - Nuget 패키징 포맷이 packages.config 뿐만이 아닌 PackageReference도 사용 가능

November 10, 2017

Nuget으로 라이브러리를 설치하면 기존까지는 packages.config 파일이 만들어지면 이 파일에 관련 정보가 들어가 있었다. 그러나 VS2017부터는 .NetCore에서 사용 하는 방식처럼 PackageReference도 사용할 수 있다. PackageReference를 사...

Visual Studio - Productivity Power Tools

November 24, 2017

이전 버전의 Productivity Power Tools는 복수의 확장 기능을 모은 패키지로 제공되고 있었지만 VS 2017용 Productivity Power Tools에서는 아래의 기능이 개별 확장 기능으로서 VS Marketplace에서 배포된다(VS 2017의 [도구]-[확...

Visual Studio - Structure Guidelines

September 20, 2017

Visual Studio 2017 에서 추가된 기능이다. 한국어로는 ‘구조 안내선 표시’ 라고 한다. 이 기능은 코드 블록 구조에 맞추어 에디터에 세로 선이 표시된다. 이 세로 선에 커서를 맞추면 그 블록의 모든 부모 블록을 나타내는 힌트가 팝업 표시된다. (본인만의 문제인지 ...

Visual Studio - VC++ 의 디버그 모드 실행이 느린 경우 빠르게 하기

November 13, 2017

VC++에서 디버그 모드로 실행할 경우 프로그램 실행 속도가 엄청나게 느려질 수 있다. (특히 PC 온라인 게임 클라이언트) 이런 경우 컴파일러 옵션을 조정해서 실행 속도를 올릴 수 있다. 디버그 모드에서는 최적화 옵션이 off로 되어 있는데 이것을 on으로 한다. 그런데 최적화...

Visual Studio - VS2017의 성능 강화

July 24, 2017

프로젝트의 읽기를 경량화 하고, 로딩 시간을 단축: 100 종류등 많은 프로젝트가 포함 되어 있는 솔루션에서는 모든 파일이나 프로젝트가 동시에 사용되지 않는다. VS 2017에서는 모든 프로젝트를 읽기 전까지 기다리지 않고 편집과 디버깅을 시작할 수 있다. 확장 기능의...

Visual Studio - Visual Studio에서 버전 관리할 필요가 없는 파일을 정의한 .gitignore

October 15, 2018

출처 ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## ## Get latest from https://github.com...

Visual Studio - cpplint 사용하기

March 28, 2017

cpplint ? cpplint는 python으로 만든 C++ 소스 코드가 Google C++Style Guide를 지키고 있는지 검사하는 툴이다. cpplint 설치 python 2.7에서 pip로 설치한다. Visual Studio에 외부 툴로 cppl...

Visual Studio - editorconfig 사용하기

November 27, 2017

VS 2017에서는 프로젝트 마다 혹은 프로젝트의 특정 폴더마다 에디터 설정을 바꾸기 원한다면 .editorconfig 파일을 사용한다. VS 2015에서는 이와 동일한 기능을 사용하려면 플러그인을 사용해야 했으나 2017에서는 기본 기능으로 들어왔다. .editorconfig ...

Visual Studio - 구성 요소 추가하기

July 31, 2017

VS를 설치 후 추가로 구성 요소를 설치하고 싶다면 아래와 같이 하면 된다. (추가 구성 요소 예로는 MFC 라이브러리 추가 하기 등) VS 실행 후 새 프로젝트 선택 후 아래 창에서 왼쪽 아래의 ‘Visual Studio 설치 관리자 열기’를 선택한다. 설치하고 싶은 요소...

Visual Studio - 더 편리해진 시작 페이지

August 3, 2017

시작 페이지는 VS를 시작하면 첫 화면에 나오는 페이지다. 이 페이지의 유용성 향상은 VS 2015에서 시작되었고 VS 2017에서 더 향상 되었다. 최근에 사용한 항목이 페이지 왼쪽에 크게 표시 페이지 중앙부에서는 VSTS와 GitHub 등의 저장소에서 코드 가져 오기 ...

Visual Studio - 디버깅 기능 모음

December 28, 2017

Visual Studio의 디버깅 기능을 정리하는 글이다. 앞으로 이 글에 계속 업데이트 한다. 7 More Lesser-known Debugging Tactics for Visual Studio

Visual Studio - 디버깅 모드에서 역어셈블리 코드 보기

November 3, 2017

VC++ 에서는 디버깅 모드에서도 역어셈블리 코드를 볼 수 있다. 메뉴에서 “Debug” -> “Windows” -> “Disassembly”를 선택한다. 역어셈블리 코드 창이 나타난다. 이 화면을 보면 코드 바이트는 표시되지 않고 있다. 코드 바이트를 보고 싶다...

Visual Studio - 리팩토링 제안

October 10, 2017

VS2017에서는 리팩토링 기능이 강화되었다. 내가 만든 코드를 더 좋은 코드로 바꿀 수 있도록 새로운 코드를 제안해준다. 이 기능은 C#과 Visual Basic 에서 사용할 수 있다. 출처: http://codezine.jp/article/detail/9861?...

Visual Studio - 모든 프로젝트의 디렉토리 설정

October 16, 2017

VS2008까지는 ‘도구’ – ‘옵션’ 메뉴를 통해서 VC++ 디렉토리를 설정하였다. 이렇게 설정한 정보는 모든 VC++ 프로젝트에 적용된다. 그러나 VS2010에서는 각 프로젝트 별로 VC++ 디렉토리를 설정한다. 각 프로젝트 마다 독립적으로 설정을 할 수 있어서 편한...

Visual Studio - 설치 중인 확장 프로그램

May 2, 2019

viasfora url: https://viasfora.com/ 여러 기능이 있지만 가장 큰 기능은 ‘Rainbow Braces’ 이다. 이 기능을 사용하면 괄호를 중첩할 때 색을 다르게 표시하므로 중첩된 괄호를 구분하기 쉽다. 동작을 보고 싶다면 여기...

Visual Studio - 성능 관리

August 10, 2017

VS 2017의 부팅 속도 및 솔루션 로드, 코드 편집에 악 영향을 미치는 확장 기능의 감시 기능의 도입되었다. (본인도 이전에 확장 기능 설치 후 VS의 시작이 엄청 느려져서 확장 기능을 하나씩 삭제하면서 문제 있은 확장 기능을 찾았다) 성능이 낮은 확장에 대한 통지가 온다. ...

Visual Studio - 솔루션 탐색기에 있는 폴더 중 이 폴더 안의 파일만 표시하기

August 25, 2017

Visual Studio - 업데이트 등에서 에러가 발생했을 때의 대처 방법

September 13, 2017

Open an elevated command prompt. Run: %ProgramFiles(x86)%\Microsoft Visual Studio\Installer\resources\app\layout\InstallCleanup.exe -i 위 조...

Visual Studio - 인텔리센스 필터링(IntelliSense filtering)

September 22, 2017

IntelliSense는 카테고리 마다 일련의 값을 압축함으로써 새로운 API를 재 빠르게 참조할 수 있는 필터링 기능이다. 이 기능을 사용하면 필요한 변수를 많은 타입 속에서 찾아낼 필요가 없어진다. 아래 스크린 샷은 필터를 사용하여 C++ 코드 파일의 IntelliSense의 ...

Visual Studio - 일치한 부분 강조 표시(Match highlighting)

October 20, 2017

VS2017 에서는 C++은 미 지원. 결과를 빨리 얻기 위해서 카멜 케이스 매칭(한 묶음으로 한 합성어의 각 대문자를 입력하여 보완) 등을 할 경우 아이템이 어느 부분에서 일치하는지 판단하기 힘들다. C#, VB, JavaScript, TypeScript의 IntelliSens...

Visual Studio - 자주 사용하는 단축키

March 30, 2017

문자 검색/치환 Ctrl+F: 문자 검색 Ctrl+H:문자의 치환 직사각형 선택 Alt 키를 누른 상태에서 마우스로 원하는 직사각형 모양의 범위를 만든다. 자동 인덴트(indent) Ctrl+K, Ctrl+D: 파일 전체의 인덴트 조정 Ctrl+K, Ctrl...

Visual Studio - 참조 어셈블리와 NuGet 패키지의 타입의 using/Imports를 추가

October 23, 2017

인식되지 않는 타입이 입력된 경우 참조 어셈블리와 NuGet.org를 검색하여 using/Imports를 추가하도록 간단한 수정을 제안한다. 이 기능은 default로는 무효로 되어 있다. 유효화 하려면 [Tools]-[Options]-[Text Editor]-[C#] 또는 [B...

Visual Studio - 커스텀 템플릿 만들기

November 6, 2017

게임 개발에 사용할 프로젝트가 틀이 잡혔다면 다음에도 이와 비슷하게 프로젝트를 만들어서 사용하기 위해 커스텀 템플릿을 만들어서 사용하면 좋다. 먼저 커스텀 프로젝트를 만들 프로젝트는 기본적인 것들만 있도록 정리한다. 이후 아래와 같이 템플릿을 만든다.

Visual Studio - 툴 박스에 코드 보관하기

April 14, 2017

VS의 툴박스에 특정 코드를 보관하고, 이 코드를 선택하여 코딩 시 삽입할 수 있다. 툴박스에 보관하기 바라는 코드를 마우스로 선택 후 툴박스로 드래그 한다. 위에서 드래그한 코드가 툴박스에 들어가 있는 것을 볼 수 있다. 추가한 코드를 마우스 오른쪽 클릭하면 삭제, 수정 ...

Visual Studio - 파일 인코딩 형식을 지정해서 저장하는 방법

September 18, 2017

VS2017 에서는 VS2015 때와 비교해서 파일 인코딩 형식을 바꾸어서 저장하는 방법이 조금 바뀌었다. 하는 방법은 아래 그림을 참고 한다.

Visual Studio - 폴더(디렉토리) 선택으로 열기

July 27, 2017

VS 2017 이전에는 VS 솔루션 파일이 소스 파일은 VS에서 사용할 수 없었다. VS에서 사용하려면 새로 솔루션을 만든 후 수동으로 소스 파일들을 추가해야 했다. 그러나 VS 2017의 새로운 기능으로 폴더 선택 열기만으로 솔루션 파일이 없는 소스 파일들을 사용할 수 있다. ...

Visual Studio - 확장 툴 Code alignment

October 25, 2017

Test.dsdsds = 10; Test.ds = 10; 이런 코드가 있을 때 아래처럼 = 중심으로 코드를 정렬하고 싶을 때가 있을 것이다. Test.dsdsds = 10; Test.ds = 10; 이런 것을 Visual Studio의 확장 툴인 ‘Code alignm...

Visual Studio 제거하기

March 15, 2017

MS가 만든 Visual Studio Uninstaller를 사용하여 제거하는 것이 좋다. 설치 파일은 아래 링크에서 얻을 수 있다. 다운로드 사용법 다운로드 -> 압축 해제 -> Setup.ForcedUninstall.exe 실행 -> 질문에 Y 답변 콘솔 ...

etc (7)

GitHub Awards

January 31, 2017

개요 Github 계정을 갖고 있다면 “GitHub Awards” 라는 Web 서비스를 사용할 수 있다. 자신의 레포지토리에 붙여진 “스타”의 수를 기준으로 전 세계 GitHub 사용자 중 자신의 “랭킹 순위”를 알 수 있다. http://github-awards.com...

GitHub의 markdown 문법의 코드 블럭에서 문법 하이라트 가능한 언어 리스트

August 23, 2017

Github의 markdown 에서 코드를 기술할 때 ``` ``` 라는 블럭으로 코드를 감싼다. 여기에 더해서 코드 블럭에 있는 코드의 문법 하이라이트 기능을 사용하고 싶다면 해당 언어 키워드를 적으면 된다. swift의 경우는 아래와 같다. ```Swift ``` ...

Microsoft MVP가 되었습니다

April 3, 2017

Microsoft MVP 몇 년 전에 2009,2010,2011년 3년 연속으로 Visual C++ 부분 MVP로 선정된 적이 있습니다. 그러나 2012년부터는 MVP 신청을 하지 않았습니다. 이유는 당시에는 MVP 자격 조건이 MS 제품만을 다루고, MS가 운영하는 포럼에 답...

editorconfig 파일

May 16, 2018

이것으로 프로젝트 디렉토리에 .editorconfig 파일을 준비해 두면 설정이 적용된다. (Visual Studio, Atom 등 유명 에디터에서 지원하고 있다) 즉 git의 관리 대상으로 하면 프로젝트에서 통일 시킬 수 있다. .editorconfig 파일의 예 # Edit...

본인이 집필한 C++ 책 리스트

February 2, 2017

본인이 집필한 C++ 책 리스트. 모두 e-Book 이다. eBook 모던 C++ : C++14의 핵심 기능을 중심으로 (한빛미디어) 2015.03.31 eBook 당신의 프로그래밍에 디버깅 더하기 : Visual C++ 디버깅 기초에서 고급까...

이 블로그의 rss 피드 주소

December 15, 2016

나처럼 Feedly 서비스를 사용 중이라면 피드 추가에 이 블로그 url을 입력하면 된다. 이 블로그 주소로 rss 리더에 등록 되지 않는다면 아래의 주소를 사용해 보기 바란다. https://jacking75.github.io/feed.xml

티스토리 블로그에서 이사

December 14, 2016

네이버 블로그 -> 티스토리 블로그를 걸쳐서 이번에는 깃허브로 왔다. 티스토리에 있는 블로그 주소는 http://jacking.tistory.com/ 이다.

threading (5)

Cache Coherence

July 19, 2017

QPI(퀵패스 인터커넥트) 출처: http://www.slideshare.net/kumagi/ss-40688480

Lockless Programming Considerations for Xbox 360 and Microsoft Windows

July 17, 2017

Lockless Programming Considerations for Xbox 360 and Microsoft Windows 라는 글의 결론 플랫폼 별 동작 차이 InterlockedXxx 함수에서 CPU에 의한 읽기/쓰기 순서 변경을 방지할 수 있는 것은 Windows로...

lock-free 알고리즘 - 순차일관성

June 16, 2017

순차일관성(sequential consitency)이란? 순차일관성은 컴퓨터 시스템에 관한 메모리 일관성 모델의 하나이며 정의를 Wikipedia에서 인용하면 “어떤 실행 결과도 모든 프로세서가 어떤 순서로 차례적으로 실행한 결과와 동일하며, 또한 각각의 프로세서의 처리 순서가 프...

병렬프로그래밍 - SMP(Symmetrical Multi Processing) 와 AMP(Asymmetrical multi processing)

April 24, 2017

참고 http://monoist.atmarkit.co.jp/mn/articles/0812/18/news123_2.html

병렬프로그래밍 - 호모지니어스 CPU와 헤테로지니어스 CPU

May 8, 2017

참고 http://monoist.atmarkit.co.jp/mn/articles/0812/18/news123_2.html

모임 (17)

2017년 03월 ‘온라인 서버 제작자 모임’ 정기 세미나

March 26, 2017

한국 MS의 멜팅팟 프로그램 지원을 받고 온라인 서버 제작자 모임 에서 3월 정기 모임을 합니다. 날짜: 3월 30일 (목) 19시 30분 ~ 21시 30분 장소: 토즈 강남점 내용 최흥배: 해외 강연 해설 ‘여기까지 할수 있다! Visual Studio 2015-...

2017년 04월 ‘온라인 서버 제작자 모임’ 정기 세미나

April 20, 2017

한국 MS의 멜팅팟 프로그램 지원을 받고 ‘온라인 서버 제작자 모임’에서 4월 정기 모임을 합니다. 날짜: 4월 26일(수요일) 19시 30분 ~ 21시 30분 장소: 토즈 강남점 내용 Visual Studio 2017 Linux development with C++ (최...

Boost보다 쉽고 빠른 POCO C++ 라이브러리로 채팅 서버 개발하기(9/16)

September 1, 2017

9월 16일 토요일에 ‘POCO 네트워크 프로그래밍’을 주제로 강연을 합니다. 실습도 같이 하기 때문에 오전 10시~18시까지 합니다. POCO를 사용한 네트워크 프로그래밍을 빨리 배우기 원하는 분들에게 좋을 것 같습니다. 그리고 네트워크 프로그래밍을 잘 모르는 분들을 위해 관련 ...

C#으로 대규모 모바일 게임 서버 만들기- ASP.NET Web API와 NoSQL

January 25, 2018

작년에 할 예정이었던 강의이었지만 수강자 부족으로 열리지 못했습니다. (작년에 하반기 예정했던 강의가 수강자 부족으로 모두 열리지 못했습니다) 제가 Next에서의 계약이 끝나서 구직 중이라 지금 잠깐 시간이 날 때 강의를 하려고 합니다. 유료 강의는 진행하기 쉽지 않은 것 같아서...

C#으로 대규모 모바일 게임 서버 만들기- ASP.NET Web API와 NoSQL(8월31일)

August 9, 2017

8월 31일에 2년만에 이전에 했던 ‘C#으로 대규모 모바일 게임 서버 만들기’라는 제목으로 세미나를 진행합니다. 시간의 흐름에 따라서 당연하지만 이전에 했던 것과 내용에 변경이 있습니다. 이전에는 WCF를 게임 서버 프레임워크로 사용했다면 이번에는 ASP.NET Web AP...

C#으로 대규모 모바일 게임 서버 만들기- ASP.NET Web API와 NoSQL(8월31일)

August 1, 2017

8월 31일에 2년만에 이전에 했던 ‘C#으로 대규모 모바일 게임 서버 만들기’라는 제목으로 세미나를 진행합니다. 시간의 흐름에 따라서 당연하지만 이전에 했던 것과 내용에 변경이 있습니다. 이전에는 WCF를 게임 서버 프레임워크로 사용했다면 이번에는 ASP.NET Web AP...

NDC 2018 go로 네트워크 프로그래밍 하기 강연 자료

April 26, 2018

NDC 2018. 4/24일에 강연한 ‘ go로 네트워크 프로그래밍 하기’의 강연 자료입니다. https://github.com/jacking75/conf_ndc_2018 25분짜리 강연이고, 초급자 대상이라 초급 레벨을 넘은 사람에게는 도움 안됩니다. go 공부로는 2년 전부...

강의 - IOCP를 이용한 비동기 IO 네트워크 프로그래밍

November 23, 2018

일시: 2018년 12월 6일(목) 15시~18시(3시간) 주제: IOCP를 이용한 비동기 IO 네트워크 프로그래밍 유료: 토즈에서 공간을 대여하므로 공간 비용을 내야 합니다. Windows에서 IOCP를 사용하여 서버 프로그램을 만드는 방법을 설명합니다. 3시간이라는 시간이 길...

네트워크&게임 서버 프로그래밍 강의를 계획 하고 있습니다.

December 17, 2017

제게는 큰 기술은 아니지만 다른 사람에게는 필요한 기술은 가능하면 공유하려고 합니다. 그래서 2018년 1월부터 네트워크와 게임서버 프로그래밍(프로그래밍 언어는 C++, C#) 중심으로 강의를 할 예정입니다. 교육 기관에서 하는 것이 아니고 개인적으로 하는 것이라서 강의비를 받지...

네트워크&게임 서버 프로그래밍 배우기 - 1

December 20, 2017

온오프믹스에 모임 개설했습니다. 신청 에서 하시면 됩니다.

네트워크&게임 서버 프로그래밍 배우기 - 2

January 9, 2018

온오프믹스를 통해서 참가 신청 받고 있습니다. 신청하기 이 모임에 대한 설명

네트워크&게임 서버 프로그래밍 배우기 - 3

January 22, 2018

온오프믹스를 통해서 참가 신청 받고 있습니다. 신청하기 이 모임에 대한 설명

네트워크&게임 서버 프로그래밍 배우기 - 4

February 9, 2018

온오프믹스를 통해서 참가 신청 받고 있습니다. 신청하기 3회와 같은 내용으로 채팅 서버 실습을 합니다. 3회에 참석하지 못한 분들은 참석해서 모르는 부분 질문 해주세요. 이 모임에 대한 설명

네트워크&게임 서버 프로그래밍 배우기 - 5

February 26, 2018

온오프믹스를 통해서 참가 신청 받고 있습니다. 신청하기 5회에는 IOCP에 대해서 설명하고, echo 서버를 만들어볼 예정입니다. 이 모임에 대한 설명

네트워크&게임 서버 프로그래밍 배우기 - 6

March 22, 2018

온오프믹스를 통해서 참가 신청 받고 있습니다. 신청하기 6회에서는 IOCP 코드 분석 및 실습입니다. 이 모임에 대한 설명

네트워크&게임 서버 프로그래밍 배우기 - 7

April 8, 2018

신청 시간: 4월 15일 (일) 10시 00분 ~ 12시 00분 장소: 투썸플레이스 낙성대역점 이론 공부는 어느 정도 했기 때문에 토즈와 같은 장소를 빌리지 않고 카페에서 모여서 각자 코딩을 하면서 막히는 부분이 있으면 저에게 질문하거나, 참석한 분들과 상의하면서 네트워크 라이...

스터디 - 신입 게임 서버 프로그래머 학습 모임

February 18, 2019

신입 게임 서버 프로그래머를 목표로 하는 분을 도와 드리려고 하다가 이왕 하는 것 좀 더 많은 분들을 도와 드리면 좋을 것 같아서 모임을 만들기로 했습니다. 게임 서버 프로그래머가 되기 위해서 어떤 것을 공부해야 할지 잘 모르는 분들에게 제가 어떻게 공부하고 어떻게 포토폴리오를 만...

번역 (20)

(일본)임베디드 개발자가에 인기 있는 언어와 OS

February 7, 2017

일본의 ‘fabcross for 엔지니어’ 라는 곳에서 제조업에서 임베디드 관련 프로그래밍을 하는 엔지니어를 대상으로 한 설문 조사에서 업무에서 자주 사용하는 언어는 C (36 %) C++ (32.5 %), Java (23.5 %), Visual Basic (21...

Amazon S3의 대규모 장애는 인위적 실수가 원인

March 6, 2017

미국 Amazon.com의 클라우드 사업 Amazon Web Services(AWS)는 “Amazon Simple Storage Service(S3)”서비스에서 발생한 대규모 장애에 관한 조사 보고를 현지 시간 2017년 3월 2일 공개하면서 인위적 실수가 원인이었음을 밝혔다. ...

C 언어의 현대화를 목표로 하는 C2

March 25, 2018

원문 C2는 부트 로더, 커널, 드라이버, 시스템 레벨의 도구와 같은 저 레벨 프로그램에 적합한 C 언어의 진화를 목표로 하는 새로운 프로그래밍 언어이다. C2의 기본 이념은 C 언어의 좋은 부분을 유지하면서 40년 이상을 거친 옛 언어 부분을 버리는 것에 있다고 작자 Bas ...

C/C++에 죽음을

July 20, 2017

역자주: 제목이 자극적이라서 보았는데 핵심은 Rust 사용하자는 글이다. 그런데 아직은 Rust의 개발 환경은 덜 만들어져서 시기 상조라고 생각된다. 프로그래밍 언어 C는 역겹다. 물론 훌륭함 것도 있다. 우리가 사는 세계의 대부분은 C 위에 만들어졌다. 그리고 대부분의 컴퓨터 ...

CTO에게 중요한 3가지 스킬

April 12, 2018

원문 읽는 것: 나는 언제나 날듯이 빠르게 읽어 왔다. 이것은 좋은 일이기도 했다. 왜냐하면 이제 읽어야 할 필요가 있기 때문이다. 기계 학습 논문과 Github의 README, API 문서, 그리고 테크니컬 튜터리얼. 야심적인 설계 문서와 고객의 요청서. e메일과 Slack의 ...

FASTER에 대해서

November 18, 2018

원문 KVS 라이브러리 내장 KVS로 사용이 가능 프로세스간 스토리지 공유는 상정하지 않는 듯? 메모리 이상의 DB 크기를 설정 가능(메모리 + 파일 읽기 및 쓰기) LiteDB와 다소 영역이 겹칠 수도(최종 목표는 다르지...

Google에서 3DCG를 위한 압축 라이브러리 「Draco」를 GitHub에 공개

February 8, 2017

https://github.com/google/draco Chrome Media팀이 개발한 압축 라이브러리로 ZIP 형식보다 효율적으로 데이터 압축을 실행할 수 있는 오픈 소스이다. 압축한 Mesh 파일의 크기 100MB 일 때 ZIP으로는 30MB 이지만, Draco에서는 10...

ISO 드래프트 종류

September 4, 2017

새로운 C++ 표준이 만들어 질 때 공개되는 문서에 ISO 드래프트 라는 단어가 나오는데 이 ISO 드래프트 종류에 대한 간단한 설명이다. 발행까지 6 단계이다. Proposal stage 만들고 있는 규격이 정말 필요한지 확인. Prepar...

LLVM 이란?

March 27, 2018

원문 LLVM 프로젝트는 모듈러와 재이용 가능한 컴파일러와 툴 체인 기술의 집합이다. 이 이름에도 불구하고 LLVM은 기존 VM과는 거의 관계가 없다. LLVM이라는 이름은 머리 글자를 딴 것이 아니라 프로젝트 이름이다. LLVM은 모던하고 SSA 베이스한 임의의 프로그래밍 언...

Microsoft가 클라우드 게이밍 서비스 PlayFab을 인수하여 Azure에 통합

January 31, 2018

원문 Microsoft가 PlayFab를 인수했다. 이것은 개발자들에게 간단한 백 엔드 서비스를 제공하고 타이틀의 기동을 재빨리 할 수 있도록 하는 서비스이다. Microsoft의 Azure 게임 그룹에 통합될 예정이다. 시애틀에 본거지를 둔 이 회사는 투자자로부터 약 1300...

WCF와 ASP.NET Core의 성능 비교

April 14, 2018

원문 Microsoft는 ASP.NET Core 개발에 많은 시간과 개발 능력을 지출했다. 그 결과, 새로운 기능을 가진 오픈 플랫폼이 탄생하고, 큰 개발자 커뮤니티와의 오픈된 노력에서 혜택을 받아왔다. ASP.NET Core는 WCF(Windows Communication Fo...

여성 게이머가 가장 좋아하는 장르

February 10, 2017

해외 컨설팅 기업 Quantic Foundry는 27만명 이상의 세계 게이머를 대상으로 조사 하여 “여성 게이머들이 좋아하는 게임 장르” 라는 리서치 결과를 보고했다. Quantic Foundry의 보고에 따르면 27만명 이상의 샘플 중 여성 게이머는 18.5% 정도이고, 조사 ...

영어로 기술 문의를 할 때의 영작문 Tips

January 5, 2018

첫 번째: 자신이 하고 싶은 것과 문제를 간결하게 설명한다 영어는 짧고 알기 쉽게 간단하게 설명하는 것이 매우 중요하다. 나는 가급적 직접 만든 템플릿에 맞추어 자신의 하려고 하는 것과 발생한 문제를 설명하도록 한다. I tried to $자신의 하고 싶은 일 however $일...

초보 프로그래머를 위한 9가지 조언

March 8, 2017

항상 하나의 일에 집중한다 나는 새로운 것을 배울 때는 언제든지 할 일을 분해하고 임한다. 프로그래밍을 할 때 작업에 따라서는 복잡하게 구조화하여 생각하는 것이 있을 것이다. 1개의 태스크를 소화하기 위해서도 다양한 방법이 있고 선택하는 것만으로 방황한다. 다만 무엇...

프로그래밍 어록 - Microsoft에서(또는 다른 곳에서) 일하기 위한 10가지 힌트

May 11, 2017

Omar Shahine 프로세스는 사고의 대용이 되지 않는다. 사무실에만 있지 않는다. 자신의 제품을 사용한다(당신의 고객이 사용하도록). 뭔가가 고장 나고 있으면 불평만 하지 않고 고친다. 행동은 불평보다 웅변이다. 어려운 문제를 쉽게 보이도록 한다. 간단한...

프로그래밍 어록 - egoless programming 10계명

May 11, 2017

Gerald Marvin Weinberg의 “The Psychology of Computer Programming” 에서 자신이 잘못을 저지른다는 것을 이해하고 받아들이기. 자신과 자신의 코드는 별개이다. 아무리 “가라데”를 배워도 언제든지 당신보다 더 잘 아는 사...

프로그래밍 어록 - 소프트웨어 프로젝트 실패의 10가지 징후

May 11, 2017

http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=a76eab63-70f0-48b4-8b75-66c366a651cd 첫번째 버전에서 너무 많은 것을 하려고 한다. 확립되지 않은 기술에 크게 의존하고 있다. 조직의 주 수입...

프로그래밍 어록 - 안드레 테일러의 10년간의 소프트웨어 개발에서 배운 10가지

May 11, 2017

http://www.globalnerdy.com/2007/03/22/andres-taylor-top-ten-things-ten-years-of-professional-software-development-has-taught-me/ 에서 객체 지향은 생각보다 어렵다. 소프...

함수의 적절한 길이는? 마틴 파울러씨는 길이보다 의도와 구현 분리 그리고 좋은 함수 이름이 중요하다고 지적

February 22, 2017

FunctionLength 내 경력에서 함수의 길이는 어느 정도여야지? 라는 논란을 자주 들었다. 이것은 더 중요한 물음으로 대체할 수 있다. 그것은 어느 정도 길이의 코드가 되면 그것을 함수로 삼아야 하느냐는 것이다. 몇 가지 가이드 라인에서는 한 화면에 잡히지 않는다면, 이...

해외 게임 업계의 아웃소싱

May 15, 2017

여러 인기 작품에 관련있지만 아무도 모르는 게임 회사 Blizzard Entertainment의 인기 작품 “오버 워치”를 조사하고 있을 때 어떤 게임 업체 사이트에 맞닥뜨렸다. 회사 이름은 SuperGenius로 사이트의 톱 페이지에는 “오버 워치”의 친숙한 아트 워크가 큼직하게...

사례 (2)

그랑 블루 판타지를 뒷받침하는 인프라 기술

July 5, 2017

일본의 데브서밋 컨퍼런스에서 그랑 블루 판타지에 대해서 특징 스마트 폰 RPG 브라우저 게임 협력 플레이, 멀티 플레이 시스템 규모 등록 유저 수 1400만명 월간 300억 PV 100만 query/sec 8만 req/sec 트래픽 12Gbps...

일본 소셜 게임 회사 gumi의 서버 사이드 기술 스택

August 20, 2018

출처

</div>