분류 전체보기
- 어린이 색칠공부 2023.05.01
- 기계식 키보드 구매 - COX CK87 게이트론 블랙 키보드 갈축 2020.01.13
- 프로그램 개발 시 필요한 지식 모음 2019.12.12 2
- C# Windows Form - CSV파일을 DataTable로 가져오기 - 영상, 코드, 샘플파일 2019.07.07 2
- C# Windows Form - CSV파일을 DataTable로 가져오기 2019.07.07 3
어린이 색칠공부
기계식 키보드 구매 - COX CK87 게이트론 블랙 키보드 갈축
그동안 키보드는 무조건 로지텍이라고 생각하고 살아왔는데, 다른 분들이 사용하고 있는 키보드들을 보니 화려한 색감, LED, 타격감 등 다양한 키보드 들이 있다는 것을 알았다. 그래서 나도 이러한 조건들을 만족하는 키보드들을 써보기로 하고 인터넷, 유튜브 등을 통해 서치해 보고 1차로 선택한 키보드가 COX CK87 GATERON BLACK 갈축 키보드이다. 아래링크를 통해 구매했다.
우선 하루정도 사용해 봤는데 확실히 타격감이 있고 LED가 있어서 어두운 곳에서도 키보드가 보여서 좋았다. 다만 사무실에서 쓰려고 하는데 기계식 중에서는 소음이 적다고 들었던 갈축을 선택했음에도 불구하고 소음이 이전에 쓰던 로지텍 키보드에 비해 상대적으로 많이 커서 걱정이다. 우선 집에서 좀 더 써보고 사무실로 가져가야겠다.
이 글을 쓰는 이유는 다른거 보다도 단축키를 기록하기 위해서이다. 이 제품의 FN키를 사용하려면 익숙해 지기 전에는 아래 있는 메뉴얼을 참고해야 할 것 같다. 키보드 상에는 단축키에 대한 그림이 없기 때문이다...ㅜㅜ
(아래 그림은 메뉴얼을 스캔 뜬 것이다.)
구매한 제품 광고(공식 홈페이지)
'유용한 정보 > 제품 사용기' 카테고리의 다른 글
고속 무선 충전기 구매 및 테스트 결과 (0) | 2019.05.22 |
---|---|
무선 파일공유(sd카드, USB), 인터넷 라우터, 휴대용 베터리 기능이 있는 만능 파일공유 허브 RAVPower - FileHub Plus (0) | 2018.06.13 |
360 카메라 사용기 - Samsung Gear 360 (0) | 2018.06.08 |
A4 문서, 영수증, CD, 카드를 안전하게 폐기할 수 있는 3in1 문서 파쇄기 (0) | 2018.06.05 |
프로그램 개발 시 필요한 지식 모음
오랜만에 글을 쓰네요.
재취업을 하고 처음으로 현장에서 근무를 할 기회를 갖게 되었습니다.
금융권이고 C# Windows Form 프로그램을 유지관리 하는 역할입니다.
이미 완성되어 있는 프로그램인데 동작이 잘 안되는 부분이 있다면 수정해 가는 단계에 투입이 되었습니다.
이 과정에서 제가 실질적으로 알아야 할 내용들을 간단하게 정리하려고 합니다.
우선은 생각나는 순서대로 적을 생각이며 순서나 내용은 글이 올라간 뒤에도 추가 및 수정될 수 있습니다.
프로그램 코딩을 잘 하려면 아래의 내용들을 공부해야 합니다.
소프트웨어 개발방법론
리팩토링 및 디자인 패턴
인수받은 코드가 가독성이 떨어지고 유지보수가 어려운 상황을 Dirty Code라고 합니다. 이를 Clean Code로 만드는 과정이 Refactoring 입니다. 처음부터 Clean Code로 만드는 것이 중요하고 기존 개발한 코드도 Refactoring 과정을 활용하여 점점 clean 한 code로 만들수 있습니다.
소프트웨어 디자인 패턴(software design pattern)은 소프트웨어 공학에서 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책이다.
참고자료https://ko.wikipedia.org/wiki/소프트웨어_디자인_패턴
사수로 계신 부장님이 추천해 준 사이트 입니다. 시간될때 영어공부도 할 겸 번역하면서 읽어봐야 겠네요...
머리속에 프로그램 개념 및 기본 로직 개발이 되어야 함
그동안 개발할 때에는 인터넷이 되는 환경에서 개발을 하다 보니 기본적인 것도 인터넷으로 예제를 찾아서 복사 후 바꾸는 방식으로 진행을 했었다. 그러다가 현장에 인터넷이 전혀 안되는 환경에서 하다 보니 개발하는 속도가 현저하게 떨어졌다. 대부분의 금융권 회사는 보안이슈로 노트북, 태블릿의 출입 허가가 안나기 때문에 이 환경에서 빠른 개발을 하려면 머리속에 기술 분야 별로 기본적인 코딩은 바로바로 할 수 있어야 한다.
개발도구 - Visual Studio
보통 통합 개발 환경(Integrated Development Environment, IDE)이라고 하는데요 쉽게 말해서 개발을 할 수 있게 도와주는 소프트웨어입니다. C# Windows Form 을 개발하려면 제가 아는 수준에서는 Microsoft Visual Studio가 유일하다고 생각합니다. 특히 모든 메뉴가 한글로 되어 있기 때문에 영어를 모르시는 분에게는 최고에 IDE 입니다.
글 작성 기준으로의 최신버전은 2019 입니다. 하지만 무조건 최신버전이 좋지는 않습니다. 저는 2010으로 시작해서 현재 2017 버전을 사용하고 있습니다. 현장에서는 2015 버전을 사용중입니다.
https://docs.microsoft.com/ko-kr/visualstudio/releasenotes/vs2017-relnotes
소스비교 프로그램 WinMerge
소스병합 또는 기존 소스 컨버팅, 커스터마이징할 때 유용한 프로그램입니다.
https://winmerge.org/downloads/?lang=en
서브버전 - SVN
서브버전(Subversion)은 자유 소프트웨어 버전 관리 시스템이다.
참고자료: https://ko.wikipedia.org/wiki/서브버전
Visual Studio SVN을 사용하였고 플러그인은 AnkhSVN 을 사용했습니다. Git도 사용할 만합니다. 버전관리는 필수입니다.
컴퓨터 사양 - VDI, Zero Client 환경
클라우드 계정을 부여받고 Zero Client 에서 접속해서 사용합니다. CPU i5(Intel(R) Xeon(R) CPU E5-2667 램은 8G, 저장공간은 100기가 정도 주어집니다. 클라우드 환경임에도 Visual Studio로 프로그래밍 하기에는 무리가 없었습니다. 제 생각에 Visual Studio로 프로그래밍만 하는 노트북 또는 컴퓨터 사양으로는 CPU i5급, 램은 8g, SSD 128gb 정도되면 적당하게 사용이 가능해 보입니다. 하지만 1인 사업으로 문서작업, 사진 및 영상편집 등을 같이 하려면 더 높은 사양이 필요할 수도 있습니다.
로컬에서 파일을 저장하는 방법
현장에서는 ini, mdb를 주로 사용하였습니다. ini는 간단한 설정 값의 정보를 쉽게 읽고 쓸 수 있습니다. mdb 는 쿼리문을 사용할 수도 있고 office를 사용하면 access 프로그램으로 쉽게 접근이 가능합니다.
다른 dll 호출방법 - 참조추가, 마샬링
Visual Studio 에서 C# 윈도우폼에서 프로그램에서 다른 솔루션의 기능을 활용하려면 참조추가, 마샬링(marshaling)으로 프로젝트에서 활용할 수 있습니다. ActiveX dll 파일도 가져와 사용합니다.
글꼴
코딩에 좋은 글꼴이 있습니다. 숫자1(일)과 소문자l(엘) 그리고 한글 ㅣ(이) 와 같이 혼동이 올 수 있는 글자들을 구분할 수 있습니다. 아래 링크에서 다운로드 받아서 설치하면 사용 가능합니다. 현장에서는 "나눔고딕코딩"을 사용했습니다.
Visual Studio 기능들 - 명령줄인수, 조건부 컴파일, 단축키 등
명령줄 인수를 사용하면 웹이나 다른 프로그램에서 해당 프로그램을 실행할 때 필요한 정보를 전달해서 실행될 때 사용하거나 명령을 내릴 수 있습니다. 간단한 예를 들면 프로그램.exe "abc" 를 하면 프로그램 시작 시 abc를 가져와서 작업할 수 있습니다.
Visual Studi 프로젝트에서 조건부컴파일은 #if A 와 같이 특정 조건에서 실행되게 할 수 있습니다.
Visual Studio 단축키를 익히면 좀 더 빠른 코딩이 가능합니다. 실제로 쓰면서 유용한 단축키는 추후에 정리해 보겠습니다. 자주 쓰면서 유용하다고 생각했던 단축키 2개만 정리하면 아래와 같습니다.
1. Ctrl + K, R: 선택 부분의 참조 찾기 / 2. Ctrl + -(마이너스): 이전 위치로 돌아가기
그리고 함수(Method)를 작성하고 사용을 한 다음에 다시 해당 함수로 이동을 하면 함수 이름 위에 참조 1개 라고 글씨가 뜨고 그걸 클릭하면 해당 함수를 참조하고 있는 함수들을 볼 수 있습니다. 이 기능이 괜찮아서 집에서 프로그램을 실행해 보니 뜨지 않는 겁니다. 해당 기능을 code lense 에서 참조(references) 기능인데 해당 기능은 무료 버전인 community 에는 없고 프로 이상 버전에만 제공하는 기능인 것 같습니다.
https://stackoverflow.com/questions/20823805/codelens-not-showing-references
DLL 파일 때문에 죽는 문제를 해결하려면... agent 프로그램을 만들어야 함...
아무리 예외 처리를 잘 해도 외부에서 가져온 dll 함수를 수행하다가 오류가 발생할 경우에는 프로그램이 비정상 적으로 종료될 수도 있습니다. 이를 방지하려면 외부 dll 함수를 쓸 경우에 agent 프로그램을 만들어서 호출하는 방식으로 가서 오류가 발생하더라도 agent 프로그램만 죽고 개발 프로그램은 안 죽고 계속 진행할 수 있게 만들 수 있다고 합니다.
ActiveX 디버그하기
C#으로 개발한 ActiveX를 디버그하려면 dll을 디버그 모드로 빌드하고, ActiveX를 실행한 다음에 Visual Studio 프로그램에서 프로세스에 연결프로세스에 연결하기를 하면 디버그할 수 있습니다.
AS-IS, TO-BE
현장에서 이 이야기를 들었을 때 난 이전 프로그램의 이름이 AS-IS(에즈이즈) 이고 현재 진행중인 프로그램 별명이(분명 현재 프로그램 이름은 다른 것이었기에...) TO-BE(투비) 인줄 알았다. 알고 보니 에즈이즈는 이전 프로그램, 투비는 현재 개발 및 유지보수 중인 프로그램을 말하는 것이었다. 해당 프로젝트는 기존 Visual Basic 언어로 개발되어 있던 프로그램을 C# 언어로 컨버전 한 프로그램이었던 것이었던 것이다!!!
https://blog.shovelman.dev/840
소캣 프로그래밍, MCI?
난 소캣 통신, MCI 는 이번 현장에서 처음 경험했다.
MCI는 뭐야?
이전 회사에서는 .net framework, asp.net 등으로 직접 MS-SQL에 접속해서 데이터를 송수신 했기 때문이다. 알고보니 소켓 클래스는 Low Level 클래스이었다. 이전에 개발할 때는 High Level 클레스들을 사용하기 때문에 Low Level 인 소켓을 경험할 일이 없었다.
C# 환경에서 MS-SQL에 접속하려면? 구글 검색 -> 오호 아래 글 보고 하면 되겠다. using System.Data.SqlClient 를 쓰면 되겠군!!
출처: C#에서 데이터 베이스에 연결하고, 쿼리를 실행하는 방법 (Mssql, .net)
https://kinanadel.blogspot.com/2018/10/c-mssql-net.html
현장에서 처음 접하게 된 개념으로 이를 제대로 이해하려면, 소켓, 인터페이스 등 기존 개발 경력에서 잘 사용하지 않았던 개념들을 체계적으로 공부할 필요가 있어 보인다.
로그는 필수!
저는 개발할 때 로그를 남기지는 않았습니다. 대부분 사용자들이 보고 처리할 수 있도록 메시지로만 처리를 했습니다. 현장에서 일 하면서 로그가 중요하다는 것을 알았습니다. 그리고 로그도 레벨을 설정하고 원하는 수준의 로그를 출력할 수도 있습니다. 로그 레벨에 대한 내용은 아래 글들을 참고해 주세요.
백업 및 동기화 프로그램
이전 회사에서 작업했을 때는 처음에는 무식하게 솔루션 버전 별로 전체 zip 파일로 압축을 해서 로컬 컴퓨터, 공유 컴퓨터 2중으로 백업을 했었습니다. 그리고 현상관리 없이 폴더들을 동기화 하는 무료 프로그램인 freefilesync 를 사용했습니다. 이 프로그램을 사용하면 초보자도 쉽게 로컬, FTP 내용을 동기화 할 수 있습니다.
워드, 엑셀 등의 문서는 원드라이브를 사용하고 있습니다. 여기에 자료를 정리하면 집 컴퓨터, 노트북. 태블릿, 휴대폰 등 내가 가지고 있는 어느 장치에서도 내용을 확인할 수 있습니다.
나머지 큰 영상, 사진 등의 자료는 개인적으로 시놀로지 나스를 구매서 사용중에 있습니다. 현재까지 랜섬웨어에 한번 공격을 당해서 하드디스크를 분해 후 암호를 강화했습니다. 보안에 더 신경쓰려면 포트들도 기본 포트를 쓰면 안되고 변경해서 사용해야 합니다.
현장에서는 소스만 클라우드 관리를 하고 문서 등 기타 자료는 공유 드라이브에 두고 메신저로 자료를 공유합니다.
현재 다니기 시작한 회사는 자료 공유가 잘 되지 않는 거 같습니다. 회사 솔루션 자산에 대한 보호(?) 때문일 지도 모른다는 생각을 해봅니다.
개발한 프로그램 배포하기
개발한 프로그램을 배포하려면 셋업 파일을 만들어야죠~ 셋업 파일을 만드는 방법은 다양합니다.
이전에 사용해본 방법으로는 국산 프리웨어인 Install Factory, Visual Studio 플러그인 Microsoft Visual Studio Installer Projects 이렇게 2가지를 사용해 봤습니다.
현장에서는 NSIS로 셋업파일을 만들어서 배포합니다. 아래 언어를 배우면 배포할 때 원하는 방식으로 업데이트 버전을 배포할 수 있습니다. NSIS(Nullsoft Scriptable Install System, 널소프트 스크립터블 인스톨 시스템)는 스크립트 기반으로 동작하는 윈도용 설치 시스템으로, 윈앰프를 만든 것으로 알려져 있는 널소프트가 지원하는 가벼운 설치 시스템이다.
프로그램은 아래 사이트에서 다운로드 받을 수 있습니다.
https://sourceforge.net/projects/hmne/
처음부터 끝까지 프로그램 완성을 하려면 위의 내용들을 체계적으로 공부해야 합니다.
각 각의 부분에 대해서도 시간이 되면 작성해 보도록 하겠습니다.
글 내용 중에서 틀린 부분이 있다면 댓글로 남겨주시면 수정하겠습니다.
감사합니다.
C# Windows Form - CSV파일을 DataTable로 가져오기 - 영상, 코드, 샘플파일
안녕하세요. CSV파일을 DataTable로 가져오기 글에서 동일하게 따라했는데 안된다고 하시는 분들이 있습니다.
원본 글: https://ilbbang.tistory.com/entry/C-Windows-Form-CSV파일을-DataTable로-가져오기
저도 이 점 충분히 이해합니다. 다른 글 보고 따라했는데 안되는 경우가 종종 있습니다. 그래서 전체 코드 및 영상, 샘플 파일을 공개합니다. 위와 같이 따라했을 경우 안되는 경우는 해당 컴퓨터의 환경 문제로 예상됩니다. 절차 코드 등에 대한 설명은 전부 생략했습니다. 설명이 필요하신 분은 위에 있는 글을 먼저 보시기 바랍니다.
우선 제가 처음 실행해서 프로젝트 생성, 화면 및 코드 작성, 디버깅 과정을 영상으로 만들었습니다.
위 영상에서 코드가 필요한 파일은 form1.cs 1개의 파일입니다. 해당 파일의 코드 전부를 아래에 작성했습니다.
using System; using System.Data; using System.Windows.Forms; using System.IO; using System.Data.OleDb; using System.Globalization; namespace WindowsFormsApp2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { string filename = openFileDialog1.FileName; DataTable dt1 = getDataTableFromCsv(filename, false); ; } } private DataTable getDataTableFromCsv(string path, bool isFirstRowHeader) { string header = isFirstRowHeader ? "Yes" : "No"; string pathOnly = Path.GetDirectoryName(path); string fileName = Path.GetFileName(path); string sql = @"SELECT * FROM [" + fileName + "]"; using (OleDbConnection connection = new OleDbConnection( @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathOnly + ";Extended Properties=\"Text;HDR=" + header + "\"")) using (OleDbCommand command = new OleDbCommand(sql, connection)) using (OleDbDataAdapter adapter = new OleDbDataAdapter(command)) { DataTable dataTable = new DataTable(); dataTable.Locale = CultureInfo.CurrentCulture; adapter.Fill(dataTable); return dataTable; } } } } |
이제 마지막으로 샘플 파일입니다. 샘플파일은 아무 csv 파일로 하셔도 상관없습니다.
예제 파일도 엑셀로 랜덤번호 30개 생성해서 숫자로 바꾼것일 뿐 아무 의미 없는데이터입니다.
그래도 혹시 모르니 제가 로드했던 샘플파일을 첨부합니다.
위 내용에 대하여 궁금하신 점 있으면 댓글 남겨주세요.
감사합니다.
'프로그래밍 > 윈도우' 카테고리의 다른 글
C# Windows Form - CSV파일을 DataTable로 가져오기 (3) | 2019.07.07 |
---|---|
파일의 속성 찾아보기(File Identifier) (1) | 2018.06.18 |
C#에서 이미지 파일의 메타데이터 정보 가져오기 (0) | 2018.06.07 |
폴더 내 파일 목록 가져오기(하위폴더 포함여부) (0) | 2018.06.07 |
FolderBrowserDialog 보다 괜찮은 폴더 선택 화면 - CommonOpenFileDialog (3) | 2018.06.04 |
C# Windows Form - CSV파일을 DataTable로 가져오기
Visual Studio 윈도우 폼에서 CSV 파일을 DataTable로 가져오는 내용의 글을 올려보겠습니다.
우선 Visual Studio 프로그램 실행 후 위쪽 메뉴의 "파일" -> "새로 만들기" -> "프로젝트" 를 선택(클릭)합니다.
왼쪽 Visual 템플릿에서 "Visual C#" -> "Windows" -> "Windows Forms 응용 프로그램" 을 선택한 후에 아래쪽에 프로젝트 "이름", "위치" 를 지정하고 오른쪽 아래에 있는 "확인" 단추를 선택(클릭) 합니다.
그러면 기본 Form1이 만들어 지고 응용 프로그램을 만들 준비가 되었습니다.
도구상자에서 OpenFileDialog 를 Form1.cs[디자인] 화면 아무데나 마우스를 드레그하여 놓습니다.
그러면 아래 그림과 같이 Form1 아래쪽에 OpenFileDialog1이 추가된 것을 볼 수 있습니다.
OpenFileDialog1 은 파일을 열때 사용하는 도구이지만 Form 화면에 나타나지 않습니다.
이를 실행시키기 위해서는 버튼 등 화면에 보이는 도구가 필요합니다.
OpenFileDialog1 을 실행시키기 위한 Button을 Form1.cs[디자인] 화면 아무데나 마우스를 드레그하여 놓습니다.
그러면 아래 그림과 같이 Form1 안쪽에 Button1이 추가된 것을 볼 수 있습니다.
Button1 의 속성을 확인하고 Text를 "불러오기"로 변경합니다.
"불러오기" Button1을 마우스 더블클릭하면 다음 그림과 같이 클릭 시 실행될 코드를 입력할 공간이 나타납니다(Button1_Click)
다시 Form1.cs[디자인] 화면으로 돌아옵니다.
이번에는 OpenFileDialog1의 속성 내용을 수정하기 위해 Form1 아래쪽에 있는 OpenFileDialog1 을 클릭합니다.
속성에서 아래 내용대로 수정합니다.
첫번째 그림 Filter 속성은 CSV파일만 보이게 하기 위해 필터링 옵션을 추가합니다.
두번째, 세번째 그림은 OpenFileDialog 가 열릴때 기본으로 출력될 파일 이름입니다. 선택하기 전에는 아무 이름도 없는게 맞기 때문에 기본 입력된 값을 지웁니다.
네번째 그림은 OpenFileDialog 창이 열릴 때 왼쪽 상단에 뜨는 Title 입니다. 기능보다는 보여지는 화면이기 때문에 테스트할 때에는 굳이 안 바꿔도 상관없습니다.
Form1.cs 코드파일로 이동합니다,(Form1.cs[디자인] 화면에서 키보드 "F7" 단추를 선택(클릭)하면 코드파일로 이동합니다.)
버튼 클릭할때의 코드를 다음과 같이 입력합니다.
CSV파일을 DataTable 파일로 변환해 주는 매서드를 아래와 같이 추가합니다.
그리고 테스트를 위해ㅓ DataTable이 완성된 다음줄에 중단점을 걸어 줍니다.
(34줄 바로 옆에 흰 부분을 마우스로 선택(클릭)하면 아래 그림과 같이 빨간색 원이 나타나 중단점이 설정됩니다.)
이제 테스트를 끝낼 준비가 완료되었습니다.
상단 메뉴에서 "디버그" -> "디버깅 시작" 단추를 선택합니다.
디버깅이 시작되고 Form1이 실행되었습니다.
불러오기 단추를 선택(클릭)합니다.
엑셀 파일을 불러올 OpenFileDialog1이 실행되었습니다.
CSV파일 하나를 선택하고 열기 단추를 선택(클릭) 합니다.
그러면 아래 화면과 같이 중단점에서 코드가 중단된 것을 확인할 수 있습니다.
DataTable dt1에 CSV파일의 내용이 잘 들어갔는지 확인해보겠습니다.
여러가지 방법이 있지만 dt1부분을 마우스로 선택(클릭) 후 잠시 기다려 주면 아래 그림과 같이 dt1에 대한 세부 내용을 볼 수 있는 창이 나타납니다.
돋보기 그림을 마우스 선택(클릭) 합니다.
그러면 DataSet 시각화 도우미가 나타나며 CSV에 있는 내용 그대로 들어온 것을 확인할 수 있습니다.
이제 CSV에 있는 내용을 DataTable 로 가져와서 프로그래밍 할 수 있습니다.
이전 글이어서 코드가 그림파일입니다.
더욱 쉽게 따라하실 수 있게 영상, 코드, 샘플파일을 포함한 글을 하나 더 작성했습니다.
아래 글을 확인해 주세요.
https://ilbbang.tistory.com/entry/C-Windows-Form-CSV파일을-DataTable로-가져오기-영상코드샘플파일
감사합니다.
'프로그래밍 > 윈도우' 카테고리의 다른 글
C# Windows Form - CSV파일을 DataTable로 가져오기 - 영상, 코드, 샘플파일 (2) | 2019.07.07 |
---|---|
파일의 속성 찾아보기(File Identifier) (1) | 2018.06.18 |
C#에서 이미지 파일의 메타데이터 정보 가져오기 (0) | 2018.06.07 |
폴더 내 파일 목록 가져오기(하위폴더 포함여부) (0) | 2018.06.07 |
FolderBrowserDialog 보다 괜찮은 폴더 선택 화면 - CommonOpenFileDialog (3) | 2018.06.04 |