분류 전체보기205 C# 크로스 스레드(Cross Thread)란? (에러 발생 이유 / 해결 방법) 서론 Winform에서 스레드 환경을 구성해서 폼을 제어하다보면 아래의 사진과 같은 크로스 스레드 에러가 빈번하게 발생하는것을 확인 할 수 있을 것이다. 에러 내용 : 크로스 스레드 작업이 잘못되었습니다. 'Textbox' 컨트롤이 자신이 만들어진 스레드가 아닌 스레드에서 액세스 되었습니다. 에러가 발생하는 이유 ? 폼 구동 시 실행되는 하나의 쓰레드에서 Winform 컨트롤을 관리하게 되는데 해당 특정 스레드가 관리하고 있는 컨트롤을 다른 스레드가 액세스하였을 때 발생한다. 다시 말하면 winform 컨트롤을 생성한 스레드가 아닌 다른 스레드가 속성을 바꾸는 작업을 요청했을 때 크로스 스레드 예외가 발생하는 것이다. 근데, 크로스 스레드는 특이한게 Debug모드에서만 실행되고 Release모드에서는 실.. Programming/C# 2021. 12. 29. C# DataTable의 LINQ식을 이용한 Join 방법 정리 (Datatable left Join / Inner Join) 서론 이번 글에서는 C#에서 SQL 연결을 해서 값을 받아와 사용한다면 거의 항시 사용하게 되는 DataTable의 데이터를 가져오는 방법을 정리할 것이다. 가져오는 방법은 단일 테이블 조회 시 datatable.Select("조건")함수를 써서 값을 조회 할 수 있지만 다중 테이블 간의 키 값으로 join을 사용해야되는 경우에는 Select()로 가져오기 힘들기 때문에 LINQ식의 join을 이용한 데이터 추출 방법을 정리해본다. 정리할 내용은 이렇다. LINQ를 활용한 JOIN 사용법 > inner join, left join 용법을 이용한 테이블 및 변수 값 가져오기 LINQ를 활용한 JOIN 사용법 1) LINQ - Inner Join var innerJoin = from alias_tb_a in.. Programming/C# 2021. 12. 28. [Network] TCP/IP , Serial, UDP 통신 테스트 프로그램 추천 평소 tcp/ip 통신 테스트를 할 때 사용했던 프리웨어 프로그램 공유 글이다. 추천 프로그램은 HW-group라는 여러 펌웨어, 소프트웨어를 판매하는 회사에서 무료로 배포해준 프로그램인데, 사용해보니 너무 간편하고 괜찮아서 추천한다. 프로그램 다운 링크 : https://www.hw-group.com/software/hercules-setup-utility Hercules SETUP utility | HW-group.com www.hw-group.com 해당 프로그램 특징 Windows 7, 8, 8.1, 10 지원 바로 실행 가능한 exe 파일로 제공 가상 시리얼 포트(Virtual Serial Port)와 통신 가능 시리얼 포트를 위한 CTS, RTS, DTR, DSR, RI, CD 지원 파일 전송.. Windows 2021. 12. 26. 윈도우 후킹(Window Hooking)이란? ( Win32 API / API 정의) 서론 원격 제어 프로그램을 만들다 보니 후킹이라는 용어가 나오는데 공부하는 김에 해당 내용을 정리해 놓을려고한다. 후킹은 보통 해킹 용어로 많이 사용된다고 하는데, 나는 해킹보단 프로그램 기능 구현 할 때 사용할 것이기에 후킹이 어떤 녀석인지 이해 갈 정도로 가볍게 알아보자. 후킹이란 무엇일까? 위키 백과사전에 등록된 내용은 이렇다. 소프트웨어 공학 용어로 운영체제나 응용 소프트웨어 등의 각종 컴퓨터 프로그램에서 소프트웨어 구성 요소 간에 발생하는 함수 호출, 메세지, 이벤트 등을 중간에서 바꾸거나 가로채는 방법을 말한다. 위의 내용을 토대로 후킹에 윈도우 말이 앞에 붙으면 말그대로 OS에서 제어하는 윈도우의 기능(API)를 중간에 제어권을 가로챈다는 말이다. 이렇게 후킹하여 기존 윈도우에서 제어하는 키.. Computer Science/etc 2021. 12. 26. C# 단위 별 실행 시간 확인 하는 방법 (단위 테스트/UnitTest) 프로그램을 만들다 보면 해당 로직이 다 실행되는데 얼마나 걸리는지 궁금할 때가 있다. 그럴 때 아래의 방법을 사용하면 Start를 하고 End할 때 까지의 시간을 찍어볼 수 있다. // 타이머 시작 System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); /* 시간 체크 할 로직 */ //타이머가 실행중이라면 종료 if (sw.IsRunning) { sw.Stop(); System.Diagnostics.Debug.WriteLine("END TIME :: " + sw.ElapsedMilliseconds.ToString() + "ms"); } 위의 방식을 사용하여 시간 퍼포먼스를 체크할 때 사용하면 좋을 것 같다. Programming/C# 2021. 12. 22. SQLD 자격증 독학 합격 후기 / 응시료 / 합격 기준 / 문항 / 강의 추천 요번에 나의 21년 목표 중 하나였던 SQLD 자격증을 취득하였다 ! 이 자격증을 취득하기까지의 있었던 일과 공부 방식에 대해 정리해볼려고한다. 우선 아래의 사진처럼 SQLD는 1년 4번 이뤄지는 국가공인 SQL개발자 자격증이다. 응시료 5만원이며, 민간자격 시험이라서 비싸다. 시험 응시 시간 90분 (1시간30분)이다. 합격 기준 합격 기준 : 총점 60점 이상 과락 기준 : 과목별 40% 미만 취득 출제 문항 및 과목 배점 총 문항 : 50문제 과목 (총 2과목) 1과목 (데이터 모델링의 이해) : 총 20점, 10문제 2과목 (SQL 기본 및 활용) : 총 80점, 40문제 50문제 중 1, 2과목의 주관식도 있다. (총 16점, 8문제) 시험 준비 문제집 : 이기적 SQLD 개발자 위의 얘로 공부.. Self-Development/Certificate 2021. 12. 21. [Flutter #01] 플러터란 무엇일까? 서론 최근 앱 개발 트렌드 기술을 찾아보다 dart라는 구글에서 개발한 언어로 크로스 플랫폼이 가능한 강력한 프레임워크라고 하여 해당 언어를 공부하기로 마음먹었다. 필자는 웹 개발, 애플리케이션 개발은 해봤지만 앱개발은 한번도 안해본 영역이여서 더 끌렸다. 차근차근 진행하여 최종적으로 배포까지 목표로 진행해보겠다. Flutter로 만든 앱 - 네이버 지식인 - Google Play - Google Pay - Google AdSense - Google Assistant - Ebay Motors (flutter + firebase 통합하여 진행) - BMW App 특징 - 크로스 플랫폼 개발 프레임워크로, 안드로이드 및 IOS 애플리케이션을 구축할 수 있다. - 개발환경 IDE는 VScode와 안드로이드 스.. Programming/Flutter 2021. 12. 21. [Flutter #00] Dart 언어에 대해 알아보자! 플러터의 언어인 Dart란? 플러터를 알아보기 앞서 해당 언어인 Dart에 대해 간략히 알아보자. Dart는 구글에서 javascript를 대체하기 위해 2011년 발표한 신 언어였다. 그렇지만 이 Dart는 나오고 몇년 안 지나 최악의 언어라고 무시받기 일쑤였다. 그 이유는 js의 시장은 이미 jQuery가 장악한 수준이였는데 개발자 입장에서 Dart라는 신 언어를 사용하기엔 러닝 커브가 높을 수 밖에 없고 적은 레퍼런스와 낮은 활용도로 배울 필요가 없는 언어였다. 그래서 그런지 2018년 조사에서는 Dart가 배울필요없는 언어 1위라는 타이틀까지 차지했다고 한다ㅠㅠ 그렇지만 !! 점점 Flutter가 RN(React Native)라는 언어에 대항할만한 앱개발 적수가 되가면서 다시 Dart라는 언어가 .. Programming/Flutter 2021. 12. 21. JIT와 AOT 컴파일러는 무엇일까? (JIT, AOT 방식 / 특징 / 사용언어) JIT(Just-In-Time) 방식 브라우저에서 파일들을 다운로드 한 뒤에 한번 컴파일해서 브라우저 엔진이 실행할 수 있는 저수준 언어로 바꿔준 후 화면을 렌더링 하는 방식이다. > 실행 시점에 바이트코드를 기계어로 번역한다. 특징 - 실행속도가 상대적으로 느리다. (why? 소스코드가 서버에서 컴파일 되는것이 아닌 사용자의 브라우저에서 컴파일 되는 방식이라서) - 앱설치 속도, 설치 용량 등이 AOT에 비해 빠르고 적게 차지한다. - 브라우저에서 여러 에러들을 발생시키고 확인할 수 있으며 디버깅이 가능하다.\ - CPU 사용이 AOT에 비해 높다 사용 - Java에서 사용되는 JVM(Java Virtual Machine) - C#에서 사용되는 CLR(Common Language Runtime) - P.. Computer Science/etc 2021. 12. 21. C# 파일명과 확장자 추출 함수 정리 파일명 전체 추출하기 (확장자도 포함) string filePath = @"D:\img\car\testcar.jpg"; string fileName = System.IO.Path.GetFileName(filepath); //결과 : "testcar.jpg" 파일 확장자 가져오기 string filePath = @"D:\img\car\testcar.jpg"; string fileName = System.IO.Path.GetExtension(filepath); //결과 : ".jpg" 파일명만 가져오기 string filePath = @"D:\img\car\testcar.jpg"; string fileName = System.IO.Path.GetFileNameWithoutExtension(filepath);.. Programming/C# 2021. 12. 15. C# 경로(Path) 함수 정리 파일을 다운받거나 실행할 때 생성되는 파일들의 경로를 지정할 때 사용되는 함수를 정리해놓을려고 한다. 현재 Application이 존재하는 경로 가져오기 > Application.StartupPath + "path" ex : string downPath = Application.StartupPath + "\test" 현재 작업이 실행되는 경로 가져오기 > System.Reflection.Assembly.GetExecutingAssembly().Location 경로 합치기 > Path.Combine(string path1, string path2..) Programming/C# 2021. 12. 15. C# Datagridview 속성 / 기능 정리 이번 글에서는 C# Winform에서 엄청 자주 사용되는 Datagridview의 기능들을 정리해 놓을려고 한다. 1. 컬럼 숨기기 및 표출 (둘 다 가능) this.dataGridView1.Columns[0].Visible = true; this.dataGridView1.Columns["column_name"].Visible = true; 2. Row 인덱스 값 구하기 //1번 방법 int rowidx = -1; rowidx = dataGridView.SelectedRows[0].Index; //2번 방법 int rowidx = -1; if(CurrentCell != null) //CurrentCell이 null이 아닐 때 rowidx = dataGridView.CurrentCell.RowIndex; .. Programming/C# 2021. 12. 7. 이전 1 ··· 12 13 14 15 16 17 18 다음 💲 많이 본 글