전체 글 217

[C#] Object Pool 패턴

Object Pool 패턴 카테고리 : 생성패턴 개요 : 어떤 객체는 생성 시, 오랜시간이 걸리기도 하며, 그 일 자체가 성능에 영향을 미칠 수 있다. 이런 경우, 재사용한 가능한 객체들을 Object Pool 에 넣어 두고 클라이언트가 객체들을 다시 사용하도록 하는 것을 Object Pool 디자인 패턴이라 한다. 사용할 객체를 그때 그때 생성하고 소멸하는 것이 아니라, Pool에 객체를 저장해두고 이를 꺼내서 사용하는 방식이다. 클라이언트로 부터 객체 요청이 오면, Pool에 사용 가능한 객체가 있는지 보고, 재사용 가능한 객체가 있다면 객체를 리턴하고, 만약 없으면 새로 객체를 생성하여 리턴한다. 클라이언트가 객체 사용을 끝내면, 객체를 소멸시키지 않고, 그 객체를 다시 Pool에 리턴하게 된다. ..

[Python] UFO: A UI-Focused Agent for Windows OS Interaction

AI-PC의 미래를 볼 수 있는 기술, 마이크로스프트의 UFO를 보고자 한다. 논문 https://arxiv.org/html/2402.07939v1 UFO : A UI-Focused Agent for Windows OS Interaction License: arXiv.org perpetual non-exclusive license arXiv:2402.07939v1 [cs.HC] 08 Feb 2024 UFO : A UI-Focused Agent for Windows OS Interaction Chaoyun Zhang, Liqun Li, Shilin He, Xu Zhang, Bo Qiao, Si Qin, Minghua Ma, Yu Kang, Qingwei Lin, Saravan Rajmohan, arxiv...

[Python] Gpt4Free 여러 LLM모델을 무료로 써보기

https://github.com/xtekky/gpt4free GitHub - xtekky/gpt4free: The official gpt4free repository | various collection of powerful language models The official gpt4free repository | various collection of powerful language models - xtekky/gpt4free github.com https://www.aitimes.com/news/articleView.html?idxno=150737 'GPT-4' 무료로 이용할 수 있는 'GPT4Free' 화제 - AI타임스 오픈AI의 결제 시스템을 속여 \'GPT-4\'를 무료로 사용할 수 있도록 ..

[C#] ThreadPool & EventWaitHandle 기초

System.Threading.ThreadPool 스레드 동작 방식은 Thread 타입의 생성자에 전달되는 메서드의 코드 유형에 따라 크게 두가지로 나뉜다. 1. 상시 실행 - 스레드가 일단 생성되면 비교적 오랜 시간 동안 생성돼 있는 유형, 예를 들어 특정 디렉터리의 변화를 감시하는 스레드가 필요하면 이는 그 동작이 필요 없어질 때까지 스레드가 유지돼야 함 2. 일회성의 임시 실행 - 특정 연산만 수행하고 바로 종료되는 유형 상시 실행이 되는 유형을 위해서는 스레드를 생성하는게 당연하지만, 일회성 실행에 있어서 스레드를 생성하는 것은 자원낭비로 이어진다. 임시적인 목적으로 원할 때, 스레드를 사용할 수 있도록 만든 것이 스레드 풀(Thread Pool)이다. 프로그래밍에서 풀(pool)이라는 용어는 일..

[python] 프로그래머스 지도찾기

https://school.programmers.co.kr/learn/courses/30/lessons/17681 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 비트연산을 통해 #또는 공백을 풀어내는 문제였다. format으로 이진수를 변경할 때, n길이 만큼 공백형태를 변경해야 됬는데, 이부분을 format함수의 zfill 메서드를 사용해서 해결할 수 있었다. 아래에 해결코드이다. def decrypt_secret_map(n, arr1, arr2): decrypted_map = [] for i in range(n): # 두 배열의 각 원소를 이진수로 변..

[TensorRT] Tensort 기본개념

AI 서비스를 운영하는데 있어 비용적 측면은 매우 중요한 사항이 아닐 수 없다. AI의 성능은 성능적으로 매우 빠르게 증대되며, 그에 따라 VRAM과 전력소모와 같은 요구사항 스펙이 늘어날 수 밖에 없다. 이것을 상쇄시키기에 비싼 Nvidia Gpu를 많이 사용하고 싶지만, 그 비용은 Nvidia 주식가격(오늘 이 제일 쌉니다 ㅎㅎ) 만큼 비용이 많이 들것이다. 따라서 이 비용을 절감하기 위해서 효율적으로 서비스를 운영하기 위해 모델의 경량화는 필수일 것이다. 엔비디아에서는 이러한 Gpu를 사용하는 기기에서는 최적화 해주는 기능을 제공해주며, 이를 적극적으로 도입할 필요가 있다. TF-TRT(TensorFlow)나 torch2trt(Pytorch) 등을 딥러닝 프레임워크에서 지원해 주지만 최신의 모델이나..

[Python] Yolo-World 실시간 비전언어 모델

SOTA에 방문해서 최신모델들이 어떤것들이 있나 찾아보다가 2024년 1월 31일에 발표된 Yolo-World 모델을 보게 되었다. 텐센트 AI 랩에서 발표한 논문으로, 실시간으로 사용할 수 있는 비전-언어 모델이라고 한다. 이에 대해 살펴보자 (yolo-world 논문) https://arxiv.org/abs/2401.17270 YOLO-World: Real-Time Open-Vocabulary Object Detection The You Only Look Once (YOLO) series of detectors have established themselves as efficient and practical tools. However, their reliance on predefined and tra..

[C#] VSPE를 사용한 Serial통신 구현 - 2

https://datasirup.tistory.com/198 [C#] VSPE를 사용한 Serial통신 구현 - 1 Serial 통신이란? 시리얼 통신(Serial Communication)은 데이터를 한 비트씩 순차적으로 전송하는 통신 방식이며, 컴퓨터나 마이크로컨트롤러 등의 디지털 장치 간에 데이터를 주고받을 때 널리 사용된 datasirup.tistory.com 지난 포스팅에서 VSPE를 이용해서 시리얼통신의 동작을 확인해봤다. 이번에는 C# 콘솔 프로그래밍을 통해서 송신과 수신을 구현해보자 Serial 통신은 C#에서 기본적으로 제공해준다 System.IO.Ports에서 사용이 가능하다. SerialPort_DataReceived 메서드를 통해서 데이터를 읽고 이것을 누적해서 보여줄 수 있도록 한..

[C#] VSPE를 사용한 Serial통신 구현 - 1

Serial 통신이란? 시리얼 통신(Serial Communication)은 데이터를 한 비트씩 순차적으로 전송하는 통신 방식이며, 컴퓨터나 마이크로컨트롤러 등의 디지털 장치 간에 데이터를 주고받을 때 널리 사용된다. 대중적인 장치들은 USB 타입의 연결을 많이 지원하지만 테스터와 같이 산업용 장치들에서는 안전성 때문에 여전히 많이 쓰인다. 시리얼 통신은 주로 두 장치 간에 직렬로 데이터를 전송하는 방식으로 이루어진다. 각 장치는 하나 이상의 시리얼 포트(일반적으로 UART(Universal Asynchronous Receiver/Transmitter) 포트)를 통해 연결되며, 데이터는 일련의 비트로 전송된다. 일반적으로 시리얼 통신에서는 데이터 비트의 길이(일반적으로 8비트), 정지 비트의 수(보통 1..

[C#] WinForm을 활용한 계산기 만들기

WinForm에 익숙해지기 위해 기본적인 사칙연산을 수행하는 계산기 프로그램을 만들어 봤다 구현사항 - 버튼의 이벤트 처리 - 계산 로직 - 결과 표시 - 오류 처리 - 소수점 계산등의 추가기능 나누기 버튼 예시 - 사칙연산 버튼 클릭 시 어떤 계산을 수행할지 currentOperator 변수에 Operator Enum을 설정하고(Add, Sub, Mul, Div 중 하나), 계산과정 창에 수행할 계산 기호 추가함 public partial class Form1 : Form { enum Operators { None, Add, Sub, Mul, Div, Res } Operators currentOperator = Operators.None; } private void ButtonDivide_Click(o..