클라이언트가 요청 데이터를 null로 보내는 경우 대처 클라이언트에서 public RES_LOGIN_DATA RequestLogin(REQ_LOGIN_DATA reqData)을 요청한 경우 reqData을 null로 보낼 수 있음(악의적인 이유로). 그래서 아래처럼 요청 데이터를 null 조사를 해야한다. public class ServerService : IServerService { public RES_LOGIN_DATA RequestLogin(REQ_LOGIN_DATA reqData) { if (reqData...
더 읽기
서버 WCF LIB namespace WCFServerLib { public interface IClientCallback { [OperationContract(IsOneWay = true)] void SendMessageToClient(string message); } } namespace WCFServerLib { [ServiceContract(CallbackContract = typeof(IClientCallback))] public interface IServerService { [OperationContract(IsOneWay = true)] void RegistClinet(string id); [OperationContract] void TestUserData(RequestEcho reqEcho); [OperationContract] string...
더 읽기
예제 코드 [ServiceContract] public interface IServerService { [OperationContract] Task<RES_LOGIN> RequestUserLogin(REQ_LOGIN reqData); } // http://localhost:15501/GameService/RequestUserLogin [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "RequestUserLogin")] public async Task<RES_LOGIN> RequestUserLogin(REQ_LOGIN reqData) { try { var result = await ReqLogin.ProcessAsync(reqData); return...
더 읽기
RESTful 서비스 URI나 표준 동사(POST, GET, PUT, DELETE) 등 HTTP 사양을 강하게 의식한 리소스 베이스의 접근을 제공. 최신의 프레임워크는 대 부분 RESTful 서비스를 만들 수 있는 기능 지원. WCF의 REST 서비스에서는 POX (Plan XML 형식), AJAX 애플리케이션 등에서 사용 되는...
더 읽기
실행 시 동적으로 메모리를 확보하는 영역으로서 스택과 힙이 있다. 스택 메모리는 함수 호출 스택을 저장하고 로컬 변수, 인수, 반환 값도 여기에 둔다. 스택의 Push와 Pop은 고속이므로 객체를 스택 메모리에 저장하는 비용은 작다. 단 함수를 나오면 스택이 Pop 되어 해제되므로 함수의...
더 읽기
캡슐화 Go에서는 구조체와 해당 필드, 함수, 메소드의 범위는 이름의 선두가 대문자, 소문자로 결정된다. 대문자이면 public, 소문자라면 같은 패키지 내로 닫힌 범위로. 그러므로 아래와 같이 쓰는 것으로 캡슐화를 실현할 수 있다. //human.go package class type Human struct { // 필드 이름을...
더 읽기
출처 서두 Allocation Efficiency in High-Performance Go Services · Segment Blog 라는 기사를 읽었다. 좋기 때문에 꼭 일독을 권장한다. 이 글은 나의 이해와 실제로 시험해 본 결과의 메모이다. 가장 중요한 포인트는 go build -gcflags ‘-m’ 같이 옵션을 지정하여 빌드하면 코드의...
더 읽기
GitHub 저장소에 공개하였다.
CMake 기초 설명과 예제 코드가 있다
더 읽기
대전제 프로파일링을 취한 뒤 어떻게 최적화 할 것인가에 대한 이야기 추측하지말고 계측하라 알고리즘이나 데이터 구조는 최적인 것을 선택하고 있다고 가정. 손 재주로 최적화하는 것보다 알고리즘 자체를 바꾸는 쪽이 압도적으로 좋아진다. 이 기사의 각 벤치 마크는 Go 1.4(go version go1.4 linux/amd64)에서...
더 읽기
c++ 생성자와 move constructor 관련해서 궁금한 점이 있습니다. 라는 질문을 보고 알게된 것이다. 처음 질문을 봤을 때는 별거 아니라고 생각했는데 좀 더 보니 예전에 내가 C++11 표준 관련 강연을 했을 사용한 코드와 비슷한데 그때와 다른 결과가 나와서 구글링을 해보았다. 질문의...
더 읽기