728x90

전체 글 715

UnknownFieldSet

UnknownFieldSetGoogle Protocol Buffers(프로토콜 버퍼) 라이브러리의 기능 중 하나로, 메시지 형식의 필드 정의에 포함되지 않은 필드를 처리하기 위한 구조체 또는 클래스이다. 프로토콜 버퍼 메시지를 직렬화하고 역직렬화할 때, 정의되지 않은 필드 또는 알 수 없는 필드가 있을 수 있다. 이러한 필드는 UnknownFieldSet을 통해 관리된다.주요 기능미지의 필드 저장UnknownFieldSet는 메시지를 역직렬화하는 동안 메시지 형식에 정의되지 않은 필드를 저장한다. 이는 메시지 구조가 변경된 후에도 역방향 호환성을 유지할 수 있도록 도와준다. 예를 들어, 메시지 형식이 업데이트되어 새로운 필드가 추가되었지만, 이전 버전의 시스템에서도 해당 메시지를 수신하고 처리할 수 있다..

언어/C# 2024.08.12

GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE

GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODEGoogle Protocol Buffers(프로토콜 버퍼) 라이브러리와 관련된 환경 변수 또는 컴파일러 설정으로, 주로 .NET 환경에서 사용된다. 이 설정은 프로토콜 버퍼 코드가 .NET의 ref struct와의 호환성 모드를 활성화할지 여부를 결정한다.ref structref struct는 C# 7.2부터 도입된 구조체(struct)의 특별한 종류이다. 다음과 같은 특징을 갖는다.스택에 할당힙이 아닌 스택에 할당된다. 따라서 ref struct는 스택 프레임이 유효할 때만 유효한 객체를 나타낸다.ref 나 out으로만 전달ref struct는 참조로만 전달될 수 있으며, ref나 out 키워드를 사용하여 메서드 매개변수로 ..

언어/C# 2024.08.12

Sealed

Sealedsealed 클래스C#에서 클래스 또는 메서드에 적용할 수 있는 키워드로, 주로 상속과 관련된 기능을 제어하는 데 사용된다.sealed 키워드를 클래스에 적용하면 그 클래스를 상속할 수 없게 된다. 상속하려고 하면 컴파일러가 오류를 발생시킨다. 이는 특정 클래스가 더 이상 파생 클래스를 가질 필요가 없거나, 의도적으로 확장을 제한하고자 할 대 유용하다.sealed 메서드sealed 키워드는 메서드에도 사용할 수 있으며, 이 경우에는 override 키워드와 함께 사용된다. sealed 키워드를 사용해서 메서드를 재정의하면, 해당 메서드를 더 이상 하위 클래스에서 재정의할 수 없게 된다.사용 이유보안 및 무결성특정 클래스나 메서드가 더 이상 변경되지 않도록 하여 프로그램의 무결성을 보호할 수 있..

언어/C# 2024.08.12

24.08.09 C#,DEV

C#ProtobufgRPC는 IDL(Interface Design Language)로 Protobuf를 사용한다. Protobuf IDL은 gRPC 서비스에서 보내고 받는 메시지를 지정하기 위한 언어 중립적인 형식이다. Protobuf 메시지는 파일에 정의 .proto 된다.Protobuf 메시지메시지는 Protobuf의 기본 데이터 전송 개체이다. 개념상 .NET 클래스와 유사하다.syntax = "proto3";option csharp_namespace = "Contoso.Messages";message Person { int32 id = 1; string first_name = 2; string last_name = 3;}위의 메시지 정의는 세 필드를 이름-값 쌍으로 지정한다. .N..

젠킨스(Jenkins)

젠킨스(Jenkins)젠킨스는 소프트웨어 개발 시 지속적으로 통합 서비스를 제공하는 툴이다.CI(Continuous Integration) 툴 이라고 표현한다.다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유영역에 있는 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해준다.장점프로젝트 표준 컴파일 환경에서의 컴파일 오류 검출자동화 테스트 수행정적 코드 분석에 의한 코딩 규약 준수여부 체크프로파일링 툴을 이용한 소스 변경에 따른 성능 변화 감시결합 테스트 환경에 대한 배포작업이외 500여가지가 넘는 플러그인을 온라인으로 간단하게 인스톨 할 수 있는 기능을 제공하고 있으며 파이썬과 같은 스크립트를 이용해 손쉽게 자신에게 필요한 기능을 추가 할 수도 있..

Dev 2024.08.09

partial

partial클래스를 정의할 때 사용하는 특수한 키워드로, 하나의 클래스를 여러 파일에 걸쳐서 정의할 수 있게 해준다. 이를 통해 코드를 모듈화하고, 클래스 정의를 논리적으로 구분하여 관리할 수 있다.partial 키워드는 클래스, 구조체, 인터페이스, 메서드에 사용할 수 있다.partial 클래스하나의 클래스 정의를 여러 파일로 분할할 수 있으며, 모든 부분 클래스는 컴파일 타임에 하나의 클래스 정의로 결합된다. 이는 특히 큰 클래스나 자동 생성된 코드를 사용하여 코드 생성과 사용자 정의 코드를 분리하고자 할 때 유용하다.사용 사례자동 생성된 코드와 사용자 코드의 분리예를 들어, Windows Forms 디자이너, WPF 디자이너, Entity Framework 등에서 자동 생성된 코드를 사용자 정의 ..

언어/C# 2024.08.09

GeneratedClrTypeInfo

GeneratedClrTypeInfoProtobuf 메시지 파일을 C#으로 컴파일 할 때 생성되는 클래스들에서 사용되는 메타데이터 클래스이다.이 클래스는 주로 Protobuf 메시지의 메타데이터를 설명하고, 메시지의 필드와 속성에 대한 정보를 제공하는 데 사용된다.Google Protocol Buffers(Protobuf)는 데이터 직렬화 형식으로, 여러 프로그래밍 언어에서 사용될 수 있도록 설계되었다. C#의 경우, Protobuf 메시지를 정의한 .proto 파일을 컴파일러로 컴파일하여 C# 클래스로 변환한다.역할과 기능GeneratedClrTypeInfo 클래스는 Protobuf메시지와 관련된 다음과 같은 메타데이터를 포함한다.CLR 유형 정보Protobuf 메시지에 해당하는 C# 클래스의 이름, ..

언어/C# 2024.08.09

Datatime 연산

Datatime 연산주로 사용되는 연산날짜 간 차이 계산DateTime 객체를 서로 빼면 TimeSpan 객체가 반환된다.DateTime date1 = new DateTime(2023, 1, 1);DateTime date2 = new DateTime(2023, 12, 31);TimeSpan difference = date2 - date1;Console.WriteLine($"Days between: {difference.Days}");날짜에 시간 더하기/빼기DateTime에 TimeSpan을 더하거나 뺄 수 있다.DateTime now = DateTime.Now;DateTime future = now.AddDays(7);DateTime past = now.AddHours(-3);날짜 비교DateTime 객..

언어/C# 2024.08.09

24.08.08 Dev, C#

24.08.08 Dev, C#DevCI/CD 파이프라인CI(Continuous Integration)CI/CD의 CI는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미한다.CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로, 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다.CD(Continuous Delivery / Deployment)CI/CD의 CD는 지속적인 서비스 제공(Continuous Delivery) 및 지속적인 배포(Continuous Deployment)를 의미하며 이 두 용어는 상호 교환..

HasRows

HasRowsSystem.Data.SqlClient.SqlDataReader 클래스에서 제공하는 속성으로, 현재 데이터베이스 쿼리의 결과 집합에 행이 있는지 확인하는 데 사용된다.이 속성은 쿼리 결과가 하나 이상의 행을 포함하고 있을 때 true를 반환하고, 그렇지 않으면 false를 반환한다. 이를 통해 쿼리 결과를 처리하기 전에 결과가 있는지 빠르게 확인할 수 있다.사용 사례존재 여부 확인특정 조건을 만족하는 데이터가 존재하는지 확인할 때 유용하다.결과 처리 최적화쿼리 결과가 없는 경우 데이터 처리를 건너뛸 수 있어 성능 최적화에 도움이 된다.UI 피드백결과가 없는 경우 사용자에게 적절한 메시지를 제공할 수 있다.

언어/C# 2024.08.08
728x90