일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 자바
- 고속도로
- Qt OpenGL
- Qt4
- 알람프로그램
- 안드로이드
- FFI
- 양평역
- 마영전
- android SAF
- Qt 소켓프로그래밍
- 디자이어HD
- QT
- 오토바이
- 정성하
- 엑티브엑스
- 바이크
- 잡담
- HTML
- 자료구조
- vuejs
- 스타2
- Java
- QTcpServer
- 재귀함수
- c언어
- qt 설치
- 이륜차
- 윈도우7
- 스타크래프트2
- Today
- Total
목록프로그래밍/C# (4)
프로그래밍과 잡담
일단 C# 인거 같으니까 C#으로 범주를 셋팅함. 다른 언어도 비슷할거 같은데, 실험은 안 해봤으니까 일단 잊기 전에 적어 놓는다. C# 에서는 Parallel 이라는 병렬 처리 기능이 있음. 이름부터 병렬이라는 뜻이니, 병렬연산을 할 때 사용 하라고 마소에서 만든거다.. 근데 이거를 사용하면 30초 걸리는게 5~6초 줄어든다. 내꺼 cpu에서 말이지. 내 cpu는 5900x라 24쓰레드까지 지원한다. 그러니 8코어는 더 걸리겠지. 여하튼 이게 중요한게 아니라, Parallel을 사용 하고 그대로 끝나는 경우도 있지만 대부분 결과 값을 어느 한곳에 집어 넣고 결과를 처리 할 것이다. 근데 말이야 그게 결과들을 리스트에 집어 넣는 경우에 문제가 되는거 같음. 멀티쓰레드에서 발생하는 문제 말이다. 데이터 경..
이거 어이가 없네. 시리얼통신을 통해서 정보를 가져오는 프로그램을 만들어서 윈도우에서 돌릴 때는 메모리 오류가 없는데 이게 라즈베리 파이로 올라가서 돌으니까 메모리릭이 발생하네. 이런 골때리게 동작을 해서 실수한 부분인데, 결국은 내 실수 였음. 여하튼 문제점이 뭐였는지 이제야 찾았네 SerialPort 클래스를 열고(Open) 계속 Write를 하니까 버퍼에 데이터가 계속 쌓이는 문제였던거 같음. 이 빌어먹을 마소놈들이 윈도우는 버퍼를 플러시를 하는거 같은데 리눅스에서는 안하는거 같음. 여하튼 그래서 전송 방식을 아래와 같이 변경하였다. 전송 시 SerialPort를 열음 데이터를 수신 받으면 닫음 (내꺼 같은 경우에는 여러 기기에 던져야하므로 시간 셋팅해서 안오면 닫음) 위의 과정을 반복하니까 메모리..
인터넷 찾아보면 WPF MVVM 패턴을 구현한 거보면 대부분 이해하기 쉽다. 근데 그 예제들은 이해하기 쉬우라고 쉽게 만들어 놓은거지만 실제 사용 할려면 여러가지가 짬뽕되서 사용해야한다는거지. 일단 나도 공부하는 중이라서 여기다 적어 놓는다. 유저컨트롤 - 유저컨트롤 간의 데이터 교환을 할려면 결국 인터페이스든 이벤트든 간에 연결이 필요하다. 컨트롤A가 있는데 이건 그냥 유저를 추가하는 기능 밖에 없음. 대충 아래와 같이 생김. xaml 코드 그리고 컨트롤 B는 컨트롤 A에서 추가한 유저 목록을 표시함. 소스는 아래와 같음. xaml 하는 일은 간단함. 컨트롤 A에서 유저를 입력하면 B에 추가되서 표시되는거지. 그러면 MainWindow에서는 아래와 같이 처리함. 소스는 그냥 제외 처리한다. 그냥 유저컨..
C#에서는 Java의 final 과 같은 로컬변수를 고정하는 기능이 없다. 그래서 아래 처럼 제네릭 클래스를 만들어서 써야한다. 다만 이것도 단점이 있다. java의 final은 다시 new가 안돼지만 이건 new 하면 덮어 쓸 수 가 있다. 뭐 다만 이미 셋팅된 값을 변경 할려고 하면 에러나니까 그냥 대충 써야지 뭐. çlass Const { public T value { get; private set; } public Const(T data){ value = data; } }