Programming

    [C#] gRPC Server(Sevice)

    [C#] gRPC Server(Sevice)

    C# gRPC Server C#에서는 gRPC Server를 ASP.NET과 .NET Core기반으로 지원하고 있습니다. 따라서 비쥬얼 스튜디오를 사용하고 계시다면 ASP.NET, .NET Core를 설치를 해주셔야 합니다. gRPC가 HTTP2를 사용하기 때문에 웹 서버 기반인 ASP.NET, .NET Core를 설치를 해야 합니다. 1. gRPC 서비스 프로젝트 생성 새 프로젝트 만들기 – 템플릿 검색(grpc) gRPC 서비스를 선택하고 프로젝트를 생성해주면 됩니다. 2. gRPC 서버 구현 gRPC 서비스를 생성하게 되면 아래와 같은 파일들이 자동적으로 생성이 됩니다. 가장 신경 써야 할 부분은 서버 측이기 때문에 클라이언트에게 Return해줄 Service의 내부 코드를 작성해주어야 한다는 것과..

    2020 정보처리기사 제3회 필기 합격자 발표

    2020 정보처리기사 제3회 필기 합격자 발표

    2020 정보처리기사 제3회 필기 합격자 발표가 9월 3일 목요일에 공개되었습니다. 큐넷에서 로그인 하시면 조회 가능합니다! http://www.q-net.or.kr/anc001.do?id=anc001011&gSite=Q&gId= 합격자 발표조회 | Q-net 전문자격 시험 응시하신 시험을 선택해주세요. 2020년 제 28회 정수시설운영관리사 1차 2020년 제 28회 정수시설운영관리사 2차 2020년 제 23회 주택관리사보 1차 2020년 제 24회 물류관리사 필기 2020년 www.q-net.or.kr 저는 83점으로 꽤나 높은 점수로 합격했네요 ㅎㅎ 큐넷에서 로그인 하시고, 개인별 득점 조회를 누르시면 확인이 가능합니다. 이번 필기 시험은 개인적으로 조금 어렵게 느껴졌었는데, 합격자가 현재 총 10..

    [C#] gRPC Client

    [C#] gRPC Client

    계속해서 gRPC를 공부하며 포스팅을 진행하는데요. 현재 진행하고 있는 프로젝트가 Client가 C# 기반이고, Server가 Java 기반이어서 Http통신의 REST API를 사용하는 구조이다 보니 서버 측의 모델과 클라이언트 측의 모델을 각각 따로 구현해야 하는 불편함이 생기더라구요. Json이 아닌 proto타입으로 주고 받을 수 있는 RPC 기반의 gRPC를 사용하면 이런 불편함이 조금 해소되지 않을까, 찾아보면서 포스팅을 진행하고 있습니다. 앞에서 포스팅 했던 Java와 같이 C#에서도 gRPC를 구현할 수 있는데, C#이 더욱 쉽습니다(?) 1. Nuget 설치 저는 C# 콘솔 기반의 프로젝트를 생성했구요. (굳이 GUI를 만들것 까지는 없으니까...) 프로젝트에 Nuget 패키지 관리자 콘..

    [C#] nuget package manager console 사용 방법

    [C#] nuget package manager console 사용 방법

    C# 기반으로 프로그래밍을 하면서 외부 라이브러리를 사용할 때가 있는데, nuget 패키지 관리자에서 검색을 해도 검색이 되지 않는 라이브러리들이 있습니다. 웹을 뒤져보면 따로 링크는 안걸려있고, 위와 같은 코드 딸랑 한 줄 뿐... 리눅스를 해보신 분이면 아! 저 코드를 콘솔창에 입력하면 설치가 이루어지는구나! 하고 아시겠지만 단순히 프로그래밍과 GUI에 익숙하신 분들에게는 낯설 겁니다. 이럴 때 nuget package manager console, 패키지 관리자 콘솔을 이용해주시면 됩니다. 어려워 보이긴 하지만 의외로 엄청 쉽다는 점. 도구 - NuGet 패키지 관리자 - 패키지 관리자 콘솔에 들어가 줍니다. 그러면 하단에 패키자 관리지 콘솔 창에 생길 텐데 여기서 설치할 라이브러리의 설치 코드를 ..

    [Java] gRPC Maven

    [Java] gRPC Maven

    gRPC를 실제로 Java 기반에서 구현해보기 위한 순서를 포스팅해봅니다. 다른 분들은 Spring Framework를 사용했는데, 저는 그냥 일반 Maven Project를 사용해서 구현해보았습니다. 결과적으로 Maven을 Build해서 IDL에 해당하는 proto파일을 컴파일 해주는 것은 같습니다. 다음에 기회가 되면 Spring과 일반 Maven Project와의 차이점에 대해서도 공부를 해서 포스팅 하도록 하겠습니다. gRPC를 사용하기 위해 가장 중요한 것은 서버와 클라이언트의 IDL로서 사용하기 위한 proto파일을 컴파일 하는 것입니다.(사실 이부분에 가장 애를 먹었습니다.) gRPC를 검색하면 나오는 자료는 다 github에 올라와 있는데 정작 .proto 파일을 컴파일 하는 부분에 대해서..

    [오류해결] No goals have been specified for this build (Maven)

    [오류해결] No goals have been specified for this build (Maven)

    No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format : or :[:]:. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-c..

    gRPC란?

    gRPC란?

    GRPC(Google Remote Procedure Call) RPC의 개념 먼저 gRPC를 설명하기 전에 RPC의 기본적인 개념부터 알고 가야합니다. RPC는 프로세스간 통신을 위한 기법입니다. 별도의 원격 제어 없이 프로세스 간의 함수나 프로시저를 호출할 수 있도록 하는 통신 기술입니다. - 클라이언트가 서버의 특정 메소드를 호출할때, 마치 같은 컴퓨터에 있는 것처럼 호출할 수 있는 구조 - 클라이언트와 서버간에 각자가 일반 로컬 메소드를 호출하는 것처럼 사용할 수 있음 - 다양한 언어환경에 제약없이, 플랫폼 제약없이 사용할 수 있음 Caller(클라이언트)와 Callee(서버)는 IDL(Interface define Language)를 통해 서로의 인터페이스를 명세합니다. Caller가 RPC + ..

    Netty란?

    Netty란?

    Netty란? 기존의 소켓 프로그래밍은 클라이언트가 접속하게 되면 스레드를 할당해야 하는데(1:1관계), 정말 많은 클라이언트가 접속을 하게 될 경우 그 숫자만큼 스레드를 생성해야 해서 리소스의 낭비로 이루어지고, 문맥 교환과 관련된 문제와 입력이나 출력 데이터에 관련한 무한 대기 현상이 발생하는 문제가 있었습니다. 이러한 네트워크 문제 때문에 개발된 방법이 자바의 NIO 방식(Non-Blocking Input Ouput)입니다. 핵심으로는 네트워크 리소스 사용률을 세부적으로 제어하는 Non-Blocking 호출이 포함되어 있는 것으로, 내부적으로 시스템의 이벤트 통지 API를 이용해 논 블록킹 소켓을 등록하면 해당 소켓의 정보를 확인할 수 있습니다. 즉 무한 대기 현상을 회피할 수 있게 되는 것이지요...

    [C#] Lazy Initialization(지연 초기화)란?

    Lazy Initialization Lazy Initialization이란, 사용자가 실제로 필요할 때만 로딩을 하여 데이터 낭비를 줄이게 하는 방법입니다. 직역하면 개체를 처음 사용할 때까지 생성을 지연시킨다는 의미입니다. 예를 들어, C#이나 Java로 구현한 HMI 화면이 전환될 때 사용자가 요구치 않은 데이터까지 로드를 해버리면 로드될 때마다 응답속도가 느려지게 되어서 효율적으로 데이터를 사용하고 있다고는 보기 어렵습니다. Web에서도 사용자가 특정 웹 페이지를 방문을 했는데, 해당 페이지에 총 80장의 이미지가 있다고 가정을 합니다. 이미지의 크기는 한 5~6장 정도면 사용자가 보는 화면에 꽉 차는 상황이에요. 이 80장의 이미지를 전부 한꺼번에 로딩을 하게 되면 효율성이 있다고 볼 수 있을 까..

    [WPF] Text String Format Binding 사용 방법

    [WPF] Text String Format Binding 사용 방법

    WPF MVVM 패턴을 사용해서 Text를 바인딩 할 때 위처럼 퍼센트나, 3자리씩 끊기 같이 수치적으로 표현을 해야할 때가 있는데 아래와 같이 사용하면 됩니다. Text="{Binding TodayVt2EssSoc, StringFormat={}{0} %}" // 바인딩 한 값 뒤에 % 달기 Text="{Binding TodayVt2EssSocTarget, StringFormat=\{0:N0\} kWh}" // 바인딩한 값이 숫자면 10,000과 같이 세자리 앞에 ,를 추가하고 그 값 뒤에 kWh 달기 Binding 변수는 임의로 지정하면 되고, StringFormat 뒤에 적절하게 정규표현식을 작성해주면 됩니다. private int todayVt2EssSoc; private int todayVt2Es..