일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- parameter
- aduino
- UNO
- memory
- Contour
- file access
- Encapusulation
- Android
- digitalRead
- Binary
- wpf
- inheritance
- atmega328
- Overloading
- java
- sensor
- Unity
- length
- Barcode
- mfc
- Pointer
- APP
- flutter
- preprocessing
- stream
- Read
- Class
- SERIAL
- compare
- public
- Today
- Total
목록분류 전체보기 (287)
폴크(FOLC)
-. Effective C++ # class 의 최적화 방법을 알아본다. -. 클린코드 # 깨끗한 코드 / 나쁜 코드를 알아본다. -. 테스트 주도 개발 # 테스트 코드를 기반으로 개발하는 방법을 알아본다.
# TCP/IP 로 통신을 진행하는 상태 확인 > 1:1, 1:N, N:1 > 통신 연결을 사용하고 있는 PC 의 socket 에 직접 데이터를 전달 - 약속된 파라미터 값을 전달 # Socket 에서 약속된 파라미터 값을 설정된 시간 동안 데이터 송/수신이 없는 경우 socket 을 제거하고 연결 상태를 해제 시킨다. ( 리소스 삭제 ) > 별도의 Thread 로 파라미터를 송신, OnReceive 에서 파라미터 수신 > 비 정상 종료로 인해서 socket 을 사용하지 못하는 경우 ( 예외 처리 용 ) > LanCable 을 제거 했거나 통신 선로 상의 문제가 발생하는 경우 ( 예외 처리 용 ) # 소스 코드 ( CSocket 상속 받은 클래스 ) // 약속된 파라미터 전송 - 3초 간격 UINT CC..
# 특정 영역에 대해서 CPU 가동에 대한 소요 시간을 확인 > QueryPerformanceCounter 를 이용 # 소스 코드 using System.Runtime.InteropServices; class TimeChecker { [DllImport("Kernel32.dll")] private static extern bool QueryPerformanceCounter(out long lpPerformanceCount); [DllImport("Kernel32.dll")] private static extern bool QueryPerformanceFrequency(out long lpFrequency); private long m_freq, m_st, m_ed; public TimeChecker() ..
# Local 폴더를 Zip 파일을 복원 > SharpZipLib 라이브러리 이용 # Nuget 에서 SharpZipLib 설치 # 소스 코드 using System.IO; using ICSharpCode.SharpZipLib.Zip; public void UnZipFileWithDecompress(string src_path, string dst_path) { DirectoryInfo dst_dir_info = new DirectoryInfo(dst_path); if (dst_dir_info.Exists == false) { dst_dir_info.Create(); } FileStream src_file_stream = new FileStream(src_path, FileMode.Open); ZipIn..
# Local 폴더를 Zip 파일로 생성 > SharpZipLib 라이브러리 이용 # Nuget 에서 SharpZipLib 설치 # 소스 코드 using System.IO; using ICSharpCode.SharpZipLib.Zip; public void MakeZipFileWithCompress(string src_path, string dst_path) { DirectoryInfo src_dir_info = new DirectoryInfo(src_path); if (src_dir_info.Exists == false) return; FileStream dst_file_stream = new FileStream(dst_path, FileMode.Create); ZipOutputStream zip_st..
# FTP : File Transfer Protocol은 TCP/IP 프로토콜을 가지고 있어서 서버(HOST)와 모듈(CLIENT) 사이의 파일 송/수신 > TCP/IP 프로토콜 테이블의 응용 계층 > 운영 체제가 그래픽 사용자 인터페이스를 갖추기 이전에 개발된 명령 줄 프로그램 > 대부분의 윈도우, 유닉스, 리눅스 운영 체제에 기본 포함되어 있다. # 소스 코드 public bool FileDownload(string src_path, string dst_path, string user_id, string user_pw) { try { Uri src_file_uri = new Uri(src_path); FtpWebRequest ftpWebReq = WebRequest.Create(src_file_uri..
# FTP : File Transfer Protocol은 TCP/IP 프로토콜을 가지고 있어서 서버(HOST)와 모듈(CLIENT) 사이의 파일 송/수신 > TCP/IP 프로토콜 테이블의 응용 계층 > 운영 체제가 그래픽 사용자 인터페이스를 갖추기 이전에 개발된 명령 줄 프로그램 > 대부분의 윈도우, 유닉스, 리눅스 운영 체제에 기본 포함되어 있다. # 소스 코드 public bool FileUpload(string src_path, string dst_path, string user_id, string user_pw) { try { Uri dst_file_uri = new Uri(dst_path); FtpWebRequest ftpWebReq = WebRequest.Create(dst_file_uri) ..
# WPF 를 이용하는 과정에서 HDD 에 존재하는 파일 ( csv format ) 제어 > Save, Load 형태 - StreamWriter, StreamReader 이용 > exe 파일 위치에 test.csv 파일 생성 # 소스 코드 using System.Collections; using System.Collections.Generic; using System.IO; public class CSVformat { struct CSVData { public string key; public string value; public CSVData(string _key, string _value) { _key= _key.Replace(",", " "); _value= _value.Replace(",", " ..
# 데이터를 보고 직관적으로 빠르게 파악하여 판단하기 위함 # LiveCharts 를 이용하는 방법 > Nuget 에서 Package 설치 - LiveCharts.Wpf 를 설치 하면 LiveCharts 도 같이 설치 된다. > MainWindow.xaml 에 내용 추가 - xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf" MainWindow.xaml.cs 파일에 데이터 값 추가 public partial class MainWindow : Window { public ChartValues Values { get; set; } public MainWindow() { InitializeComponent(); Values = new ChartV..
# 데이터를 보고 직관적으로 빠르게 파악하여 판단하기 위함 # WPFToolkit 을 이용하는 방법 > 솔루션 참조에 추가 - System.Windows.Controls.DataVisualization.Toolkit.dll - WPFToolkit.dll > 아래 관련 파일은 특정 Package 에 묶여 있거나 별도로 찾아야 함. > MainWindow.xaml 에 내용 추가 - xmlns:DVC="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit" MainWindow.xaml.cs 파일에 데이터 값 추가 - ((PieSeries)mcC..
# WPF 사용하는 과정에서 Socket 을 이용해서 TCP/IP 로 데이터를 송/수신 > Socket 을 직접 만들어서 데이터 Send/Receive > Receive 자동으로 발생하는 통신 event 를 이용하여 데이터 연동 # 소스 코드 내용 using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; public class ClientSocket { private Socket m_sock_client = null; public bool ConnectServer(string ipstr, int port) { try { m_sock_client = new Socket(AddressF..
# WPF 를 이용하는 과정에서 HDD 에 존재하는 파일 ( binary format ) 제어 > Save, Load 형태 - List 형태 이용 > exe 파일 위치에 test.dat 파일 생성 # 소스 코드 using System.Runtime.Serialization.Formatters.Binary; public class BINformat { [Serializable] struct Data { public string key; public string value; public Data(string _key, string _value) { key= _key; value= _value; } } public void WriteReadTest() { string path = System.Reflectio..
# WPF 를 이용하는 과정에서 HDD 에 존재하는 파일 ( ini format ) 제어 > Save, Load 형태 - DllImport("kernel32") 이용 > exe 파일 위치에 test.ini 파일 생성 # 소스 코드 using System.Runtime.InteropServices; public class INIformat { DllImport("kernel32")] private static extern long WritePrivateProfileString(string section, string key, string val, string filepath); DllImport("kernel32")] private static extern int GetPrivateProfileString..
# CSocket 을 사용하면서 OnReceive(), OnClose() 함수가 정상적으로 호출이 발생하지 않는 상황 > 윈속 으로 직접 만들어서 데이터 송/수신 > 통신 event 가 발생한 경우에만 데이터 연동 # 윈속 사용하기 위해서 필요한 내용 > #include // MFC 소켓 확장 > AfxSocketInit(); # 소스 코드 내용 CString m_strServerIP = _T("127.0.0.1"); int m_nServerPort = 7000; // 윈속 초기화 WSADATA wsa; int ret = WSAStartup(MAKEWORD(2, 2), &wsa); if(ret != NO_ERROR) { //wprintf(_T("WSAStartup function failed with e..
# OOP(Object Oriented Programming) 객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 > 컴퓨터 프로그램을 여러 개의 독립된 객체들의 모임으로 봄. > 각각의 객체는 서로 메시지를 주고 받고 데이터를 처리한다. # OOP 는 프로그램을 유연하고 변경이 쉽게 만든다. > 대규모 소프트웨어 개발에 많이 사용 > 프로그래밍을 더 배우기 쉽게 하고 개발 및 유지 보수가 간편 > 보다 직관적인 코드 분석을 가능 # 객체의 단위를 대표하는 것은 class, struct > class 와 struct 는 매우 흡사하며 운영 방법은 동일 > 한가지 차이점은 접근 지정자의 적용 방식 - class : private ( 지정자를 설정하지 않으면 기본적으로 반영됨 ) - struct : publ..
# 1982년도에 버클리 대학(University of California at Berkeley)에서 탄생 > BSD(Berkeley Software Distribution) UNIX 4.1에서 처음 소개 됨. > 1986년 BSD UNIX 4.3에서 개정 ( BSD소켓 또는 버클리 소켓이라고 부름 ) # Windows Sockets API의 캡슐화를 상속(CAsyncSocket) 받음. > 높은 추상화 수준을 CAsyncSocket 에서 제공 # 통신을 사용하기 위해서는 기본 함수를 추가 해야 한다. > 프로젝트 생성 시점에 Windows 소켓(W) 추가 > 또는 Application 에서 AfxSocketInit() 함수 추가 # 통신을 위해서 사용하는 기본 함수는 다음과 같다. > HOST : 총 ..
# 프로그램 상시 운영 > 대상1 : 개발 관련으로 주 특기를 갖고 계신 분 ( 직장인, 취업준비 ) > 대상2 : 대전 지역에서 학교를 다니고 있는 대학생 ( 대학생 ) > 대상3 : 대전 지역에서 학교를 다니고 있는 학생 ( 초/중/고 ) # 프로그램 연결 방법 > Open Chat 방 URL : https://open.kakao.com/o/gwiYAiId > Open Chat 방에 내용 기록 # 대학생 > 전공 관련 과정을 졸업(취업준비) / 수료하신 분 : 2년제의 경우에는 1년 과정 수료하신 분 > 비 전공자의 경우 : 기본 학습(교과서)이 되어 있으신 분 또는 기본 학습을 얻고자 하시는 분 # 직장인 > 취업 후 경력 3년 이하 ( 전공 관련 과정을 수료/졸업 하신 분 ) > 비 전공자의 경우..
# TCP/IP 로 통신을 진행하는 상태 확인 > 1:1, 1:N, N:1 > 통신 연결을 사용하고 있는 PC 의 Listen socket 과 연결된 socket 에는 동일한 파라미터가 적용됨. - 각 socket 별로 별도의 파라미터 적용이 가능 # Socket 에서 보유하고 있는 기본 기능( KeepAlive 기능 )으로 설정된 시간 동안 데이터 송/수신이 없는 경우 socket 을 제거하고 연결 상태를 해제 시킨다. ( 리소스 삭제 ) > 기본 2시간 대기 > 비 정상 종료로 인해서 socket 을 사용하지 못하는 경우 ( 예외 처리 용 ) > LanCable 을 제거 했거나 통신 선로 상의 문제가 발생하는 경우 ( 예외 처리 용 ) # 소스 코드 ( CSocket 상속 받은 클래스 ) struct..
# Main 화면에 표시되는 영역의 정보를 페이지 단위로 변경 > 1개 Category ROI 안에 N개 Category Page 로 구성 > Page1, Page2, Page3, ... # Main 화면에서 각 페이지를 선택하여 화면에 표시 > xaml 파일에 3개의 버튼을 생성하고 각 버튼에 Event 를 설정한다. # 소스 코드 ( Form1.cs ) private void Button1_Click(object sender, EventArgs e) { for(int i = 0; i < this.Panel.Controls.Count; ++i) { this.Panel.Controls[i].Hide(); } Page1 form = new Page1(); form.TopLevel = false; this...
# Main 화면에 표시되는 영역의 정보를 페이지 단위로 변경 > 1개 Category ROI 안에 N개 Category Page 로 구성 > Page1, Page2, Page3, ... # Main 화면에서 각 페이지를 선택하여 화면에 표시 > xaml 파일에 3개의 버튼을 생성하고 각 버튼에 Event 를 설정한다. # 소스 코드 ( MainWindow.xaml ) # 소스 코드 ( MainWindow.xaml.cs ) private void Button_Click_1(object sender, RoutedEventArgs e) { PageHome.Source = new Uri("NaviPage\\Page1.xaml", UriKind.Relative); } private void Button_Clic..