반응형
반응형
막연하게 간단한 기능을 하는 프로그램을 제작할 때까지는 몰랐다.그러나 대량의 파일을, 대량의 데이터를 다루고 처리해야하는 상황에서하루가 지나도록, 아니 시간이 지나면 지날수록 작업 속도가 현저히 느려지는 현상이 발생하였다.분명 테스트할 때는 이상 없었는데...확인해보니 프로그램을 처음 실행했을 때의 메모리는 21메가를 차지하였지만,하루가 지난 상태에서 메모리 사용률은 7기가에 임박했다."무엇이 문제일까?" 파일 디렉토리를 탐색하는 방법을 좀 더 효율적으로!C#에서는 Directory 클래스를 통해 폴더를 다룰 수 있는데 Directory.GetFiles 메서드를 이용하여 폴더 내 파일 목록을 가져오도록 구현했다.하지만 이는 잘못된 선택이였다. Directory.GetFiles 메서드는 분명 사용하기 쉽지..
반년만에 쓰는 씨샵 관련 글인 것 같다.사실 해당 관련 내용은 이미 1년 전부터 글을 쓸까 말까 하다가너무 귀찮아서 미루고 미루다가 이제서야 글을 쓴다. 씨샵 언어를 이용하여 파일을 열어서 읽고,지정한 파일에 내가 작성한 내용을 쓰기(저장)를 하려면 어떻게 해야할까? 오늘은 씨샵에서 파일을 읽고 쓰는 방법에 대해 다뤄보자. 씨샵에서 파일을 읽고 쓰려면?파일을 읽고 쓰려면 StreamReader와 StreamWriter가 필요하다.StreamReader는 말 그대로 스트림 데이터를 읽을 수 있도록 해주는 클래스이고,StreamWriter는 스트림 데이터를 쓸 수 있도록 해주는 클래스이다. 이는 즉, 파일을 쉽게 읽고 저장해주는 역할을 한다. 스트림 리더로 텍스트 파일 읽기 (파일 열기)먼저, StreamR..
해당 서비스는 프로토타입으로, 언제든 기능과 화면 구성이 추가되거나 변경될 수 있습니다.개요개발 배경회사 내에서는 '네이트온'이라는 메신저를 사용하여 업무 내용 및 일정을 공유하고 있습니다.그리고 휴식 시간에도 메신저를 이용하여 직장 동료들과 서로 이런 저런 잡담을 나누는 경우도 많습니다.어느날, 친한 동료들과 점심 식사 중에 '업무용 메신저'라는 주제로 이야기를 나누다 보니,우리 사이에는 휴식 시간에도 업무용 메신저를 통해 대화를 하면 어쩌면 조금은 업무적인 대화라는 느낌을 지울 수가 없다는 공감대가 형성되었습니다.실제로 대화를 하다보면 자연스럽게 업무와 관련된 이야기로 넘어가기 쉽고,이로 인해 휴식 시간에도 마음이 조금 긴장되고 있지 않나 생각해봤습니다.그러다 문득 이런 생각이 들었습니다.'그럼 우리..
개요 여러 개의 라디오 버튼 중, 하나만 선택되도록 하려 한다. 아래와 같이 라디오 버튼을 두 개 추가해서 선택해보면 둘 중 하나만 선택되도록 되어 있다는 것을 확인할 수 있다. 문제는 여기서 생긴다. 만약 총 4개의 라디오 버튼이 있을 때에도 동일하게 하나만 선택된다. 사용자가 원하는 요구가 아래와 같이 정의 되었다면? 라디오 버튼 2개 중 하나 또 다른 라디오 버튼 2개 중 하나 내가 라디오 버튼1을 선택한 상태에서 라디오 버튼3을 또 선택해야된다면? 포스팅에서 설명하는 프로젝트는 깃허브에서 확인 가능합니다. https://github.com/luvris2/CSharp-Winforms-Example GitHub - luvris2/CSharp-Winforms-Example Contribute to lu..
Overview ChatGPT API를 통해 질문과 답변을 하는 기능을 구현해보자. 우선 결론적으로 말하자면 OpenAI의 ChatGPT는 공식적으로 C# 혹은 .NET(닷넷, DotNet) 라이브러리는 없다. 그러기 때문에 사용하기 편한 패키지를 선택해서 사용하면 된다. 이 포스팅에서는 Betalgo.OpenAI 를 통해 ChatGPT와의 API 통신을 한다. 아래는 지속적으로 대화가 가능하도록 애플리케이션의 UI를 구성하여 만든 WinForm 프로그램이다. Dotnet용 ChatGPT API 패키지 설치하기 (Visual Studio에서) 도구 - NuGet 패키지 관리자 - 솔루션용 NuGet 패키지 관리 'openai' 검색 후 'Betalgo.OpenAI' 설치 API 사용을 위한 API 키 설..
구조체 데이터 자체를 저장하는 값 형식 (Value Type) 파라미터의 값 전달 시 구조체의 값이 전달 메모리의 스택(Stack) 영역에 직접 저장 데이터 자체만 스택 영역에 저장하므로 클래스보다 메모리 사용량이 적음 작은 크기의 데이터를 효율적으로 저장하고 전달하는 데 적합 값 형식으로 구성되었기 때문에 값을 복사하여 생성 값이 복사 될 때마다 독립적인 인스턴스 생성 기본 생성자를 정의할 수 없음 모든 멤버 변수에 대한 초기화를 사용자가 직접 수행 null 값을 가질 수 없으나 변수가 선언될 때 해당 값 형식의 기본 값으로 자동 초기화 클래스 데이터에 대한 참조를 저장하는 참조 형식 (Reference Type) 파라미터의 값 전달 시 클래스의 참조가 전달 변수는 실제 데이터가 저장된 위치를 참조하는..