최근 기록
-
C# 선그래프
C# 윈폼을 활용해서 동적차트를 만들어보았다. 차트 내에 여러개의 그래프가 있고, 그래프의 데이터는 List로 관리 데이터 저장 기능까지 구상하고 시작했다. 3종류의 데이터를 받아서, 차트로 표현했다. x축은 총 10개의 데이터가 나타나고 1초마다 값이 업데이트된다. 윈폼이 실행되면, 로딩이 완료된 뒤 Start 이벤트를 발생시킨다. Start이벤트는 차트 관련 설정들을 세팅하고 데이터 생성 스레드를 실행한다. 차트와 관련된 설정들을 기입했다. 아래 사진처럼 윈폼상에서 미리 설정해둬도 되지만, 프로그램을 실행하면서 유동적으로 값을 변경하기 위해, 코드상으로 정의해뒀다. ( 나중에 수정할 부분을 찾기 편하도록 ) GenerateData() 함수는, 랜덤 데이터를 생성하는 함수다. 지금은 데이터가 없어서 임..
2024.04.02 22:31 -
Modbus TCP 제어 ( 패킷 과수신 대비 )
Modbus TCP 통신을 사용해서 실제 장비를 제어하는 로직을 사용중이었다. 하나의 프로그램에 프로세스가 총 3개 동작하고 1.MQTT 패킷을 수신 2.제어부 프로세스까지 전달(Socket) 3.실 제어 및 상태값 검증 위와 같이 제어를 하도록 개발했다. 하지만 곰곰히 생각해보니 내가 개발한 코드는, 단순히 '제어'만을 목적을 둔 단순한 코드고 예외상황을 생각하지 못한 안좋은 코드같았다. 수정 전 간단히 시퀀스 다이어그램을 제작했다. Process A 에서, MQTT 브로커로부터 제어 메시지를 수신받는다. 수신받은 메시지를, Process A & B 를 관리하는 Main Process에게 전달. Main Process 는 실 제어부 동작을 하는 Process B 로 패킷을 전달한다. Process B ..
2024.03.06 21:38 -
자료형 크기
대학생 시절 연구실에서 개발할때는 자료형에 대해 딱히 신경 안썼었다 직접 이슈가 생긴적이 없었고 기능 개발만 우선시 했던 습관 때문이다 오늘 자료형 때문에 발생한 이슈를 정리해야겠다 시퀀스 다이어그램 Process A, Main Process, Process B 는 하나의 exe 내 프로세스다. Process Z 도 하나의 exe 내 프로세스다. 실행 프로그램 별로 색으로 구분했다. Azure Cloud는 상위 서버다. 노란색 프로세스 3개를 가진 프로그램과, 코랄색 프로세슬를 가진 프로그램은 같은 PC 환경에서 동작하고있다. ( local ) 따라서 1번 MQTT 는 local 2번 MQTT는 Azure 서버를 사용한다. 이슈 A구간에서 local 로 받아온 MQTT 데이터 크기가 94326 이었다. ..
2024.02.21 22:36 -
Encoding
개발을 하면서, UTF나 유니코드 등의 용어를 자주 접하지만 깊게 알아보거나 궁금한 적이 없었던 것 같다 오늘 업무하면서 Encoding관련 에러가 발생해서 이참에 궁금해서 알아보았다 유니코드 초창기 컴퓨터는 '영어'와 '특수문자'를 사용했다 시간이 흘러 다양한 국가의 언어를 지원하게 되면서 국제 표준이 만들어졌고, 그게 유니코드 UTF-7, UTF-8, UTF-16, UTF-32 인코딩 방식. 유니코드를 어떻게 컴퓨터에 저장할 것인가에 대한 내용 에러 원인 private void MQTTOnReceived(byte[] recv) { string recvData = Encoding.Default.GetString(recv).Replace("\u0000", System.String.Empty); } MQT..
2024.02.14 22:14
개발
-
C# 선그래프
C# 윈폼을 활용해서 동적차트를 만들어보았다. 차트 내에 여러개의 그래프가 있고, 그래프의 데이터는 List로 관리 데이터 저장 기능까지 구상하고 시작했다. 3종류의 데이터를 받아서, 차트로 표현했다. x축은 총 10개의 데이터가 나타나고 1초마다 값이 업데이트된다. 윈폼이 실행되면, 로딩이 완료된 뒤 Start 이벤트를 발생시킨다. Start이벤트는 차트 관련 설정들을 세팅하고 데이터 생성 스레드를 실행한다. 차트와 관련된 설정들을 기입했다. 아래 사진처럼 윈폼상에서 미리 설정해둬도 되지만, 프로그램을 실행하면서 유동적으로 값을 변경하기 위해, 코드상으로 정의해뒀다. ( 나중에 수정할 부분을 찾기 편하도록 ) GenerateData() 함수는, 랜덤 데이터를 생성하는 함수다. 지금은 데이터가 없어서 임..
-
Modbus TCP 제어 ( 패킷 과수신 대비 )
Modbus TCP 통신을 사용해서 실제 장비를 제어하는 로직을 사용중이었다. 하나의 프로그램에 프로세스가 총 3개 동작하고 1.MQTT 패킷을 수신 2.제어부 프로세스까지 전달(Socket) 3.실 제어 및 상태값 검증 위와 같이 제어를 하도록 개발했다. 하지만 곰곰히 생각해보니 내가 개발한 코드는, 단순히 '제어'만을 목적을 둔 단순한 코드고 예외상황을 생각하지 못한 안좋은 코드같았다. 수정 전 간단히 시퀀스 다이어그램을 제작했다. Process A 에서, MQTT 브로커로부터 제어 메시지를 수신받는다. 수신받은 메시지를, Process A & B 를 관리하는 Main Process에게 전달. Main Process 는 실 제어부 동작을 하는 Process B 로 패킷을 전달한다. Process B ..
-
Encoding
개발을 하면서, UTF나 유니코드 등의 용어를 자주 접하지만 깊게 알아보거나 궁금한 적이 없었던 것 같다 오늘 업무하면서 Encoding관련 에러가 발생해서 이참에 궁금해서 알아보았다 유니코드 초창기 컴퓨터는 '영어'와 '특수문자'를 사용했다 시간이 흘러 다양한 국가의 언어를 지원하게 되면서 국제 표준이 만들어졌고, 그게 유니코드 UTF-7, UTF-8, UTF-16, UTF-32 인코딩 방식. 유니코드를 어떻게 컴퓨터에 저장할 것인가에 대한 내용 에러 원인 private void MQTTOnReceived(byte[] recv) { string recvData = Encoding.Default.GetString(recv).Replace("\u0000", System.String.Empty); } MQT..
-
C# - class & structure
사내에서 지금까지 개발한 데이터 수집 엔진( 프로그램 )이 총 3가지 있다. 요약하자면 A->B->C 순으로 업그레이드 됐는데, 여전히 A, B 엔진이 적용된 곳이 있어서 그 중에서 B 엔진을 C 엔진에 맞게 업그레이드? 병합? 하는 작업을 진행했다. 병합 작업을 진행하면서, 나의 부족한 C# 개발 지식으로 다양한 오류를 접하게 됐다. 참조한 reference가 null 오류 컬렉션 수정 오류 등 너무 오류가 많아서 골치아팠다. 오류의 원인을 찾아보았다. 1. 비효율적인 class 사용 코드를 작성할 때 최소한의 class 단위로 구분해서 작성하라는 입사 초반 지시에 맞게 개발을 진행해왔다. 그러다보니 아무이유없이 무조건 class만 사용해서 개발해왔다. 변수 선언이나 구조를 잡을때도 무조건 class만..
-
소프트웨어 설계 수정
2024.01.01 - [개발/C#] - 모니터링 자동화 - API Parsing 모니터링 자동화 - API Parsing 2023.12.24 - [개발/C#] - 모니터링 자동화 - 비동기 변경 모니터링 자동화 - 비동기 변경 2023.12.21 - [개발 기록/C#] - 모니터링 자동화 - Excel Write 모니터링 자동화 - Excel Write 2023.12.18 - [개발 기록/C#] - 모 iruk.tistory.com 지금까지는 자동화 개발을 할 때 하나의 C# 윈폼 프로그램에서 진행했다 프로그램이 어느정도 개발은 됐는데 고도화를 진행하다보니 많이 수정이 필요해졌다 구조 변경 기존엔 하나의 프로그램에서 API 호출, DB 저장, 조회 등을 수행했는데 지금은 2가지 종류로 분리하려한다. A..
-
모니터링 자동화 - API Parsing
2023.12.24 - [개발/C#] - 모니터링 자동화 - 비동기 변경 모니터링 자동화 - 비동기 변경 2023.12.21 - [개발 기록/C#] - 모니터링 자동화 - Excel Write 모니터링 자동화 - Excel Write 2023.12.18 - [개발 기록/C#] - 모니터링 자동화 - Teamviewer 상태 관리 모니터링 자동화 - Teamviewer 상태 관리 2023.12.17 - [ iruk.tistory.com 지금까지 자동화를 한다고 개발을 했지만 생각해보면 자동화 라는 단어가 어울리지 않는다 프로그램 실행 후, 파일을 선택한 뒤 사용자가 직접 로그인(부정방지 문자, 구글 OTP)을 해야하는 단점을 고치고싶었다. API 호출 및 Parsing 사내 다른 파트에 요청해서 API를 ..
-
C# 반복문 변수 선언과 메모리에 관한 고찰
오늘 회사에서 코드리뷰를 진행했다. 현재 내가 진행중인 프로젝트를 주 2회 코드리뷰를 진행중이다. 코드리뷰를 진행하면서 한 가지 피드백이 있었다. private void WriteGumiIssue(Excel.Worksheet secondSheet) { for(int i = 0;i
-
모니터링 자동화 - 비동기 변경
2023.12.21 - [개발 기록/C#] - 모니터링 자동화 - Excel Write 모니터링 자동화 - Excel Write 2023.12.18 - [개발 기록/C#] - 모니터링 자동화 - Teamviewer 상태 관리 모니터링 자동화 - Teamviewer 상태 관리 2023.12.17 - [개발 기록/C#] - 모니터링 자동화 - 웹 크롤링 모니터링 자동화 - 웹 크롤링 C# Seleniu iruk.tistory.com 자동화에 필요한 메인 프로세스들은 구현이 완료됐고 각 프로세스를 어떻게 관리할지 고민하다가 비동기 & 프로그레스바 로 결정 이유 1. 사용자에게 진행상황을 표현 2. 동기식 사용 시, 프로세스가 끝날때 까지 다른 동작 불가능 ( ex) 프로그램 종료 ) 3. 클린코드 비동기식 로..
디자인
-
Blender - 빛
애니메이션 빨리 만들고 싶은데 단계별로 배울게 너무 많네 ㅎ긓긓ㄱㅎ흑흑ㅎ긓그흑
-
Blender 실습 - 로봇
강좌보고 겨우겨우 단축키 적응중... 재밌네 나중에 익숙해지면 회사 로고 하나 모델링해둬야겠다 PT발표때 애니메이션 만들어서 써야지
-
Blender 입문
얼마전, 사내 성과보고회 PT 1등을 했다. 긴장도 많이해서 100% 준비한걸 못보여줘서 아쉬웠다. 내년 상반기때도 아이디어 및 세미나 관련 PT 기회가 있는데 그 때는 모션그래픽을 추가해서 PT를 해보고 싶다. 그래서 C4D를 알아보고 주변 UI/UX 친구한테 물어봤더니 C4D는 비싸더라 Blender로 입문해서 내년 상반기 안에 자유자재로 다루고싶다. 대학생 때, Creo 3.0 라는 아주 구식의 모델링 툴을 사용한적이 있는데 확실히 셰이더랑 텍스쳐가 블렌더가 훨씬 좋은 것 같다. 애니메이션도 제작도 용이해 보이고 자유도도 높아서 만족스럽다 그림자 & 빛 처리까지 되는게 신기하네 규칙적으로 주 2회 실습 해봐야겠다 근데 재밌어서 당분간 몰아서 쭉 마스터하고 안할거같기도 하고