오랜만에 글을 쓰네요.
재취업을 하고 처음으로 현장에서 근무를 할 기회를 갖게 되었습니다.
금융권이고 C# Windows Form 프로그램을 유지관리 하는 역할입니다.
이미 완성되어 있는 프로그램인데 동작이 잘 안되는 부분이 있다면 수정해 가는 단계에 투입이 되었습니다.
이 과정에서 제가 실질적으로 알아야 할 내용들을 간단하게 정리하려고 합니다.

우선은 생각나는 순서대로 적을 생각이며 순서나 내용은 글이 올라간 뒤에도 추가 및 수정될 수 있습니다.

프로그램 코딩을 잘 하려면 아래의 내용들을 공부해야 합니다.

소프트웨어 개발방법론

 

소프트웨어 개발 방법론

□ 소프트웨어 개발 방법론 ○ 소프트웨어 개발 방법론이란? 소프트웨어 개발 방법론의 구성 소프트웨어 생명주기 관리 모델에서는 프로젝트가 어떤 순서로 진행될지 그리고 중간에 어떤 산출물을 점검할 지에 대..

multicore-it.com

리팩토링 및 디자인 패턴

인수받은 코드가 가독성이 떨어지고 유지보수가 어려운 상황을 Dirty Code라고 합니다. 이를 Clean Code로 만드는 과정이 Refactoring 입니다. 처음부터 Clean Code로 만드는 것이 중요하고 기존 개발한 코드도 Refactoring 과정을 활용하여 점점 clean 한 code로 만들수 있습니다. 

소프트웨어 디자인 패턴(software design pattern)은 소프트웨어 공학에서 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책이다.

참고자료https://ko.wikipedia.org/wiki/소프트웨어_디자인_패턴

사수로 계신 부장님이 추천해 준 사이트 입니다. 시간될때 영어공부도 할 겸 번역하면서 읽어봐야 겠네요...

 

Refactoring and Design Patterns

Hello, world! Refactoring.Guru makes it easy for you to discover everything you need to know about refactoring, design patterns, SOLID principles, and other smart programming topics. This site shows you the big picture, how all these subjects intersect, wo

refactoring.guru

머리속에 프로그램 개념 및 기본 로직 개발이 되어야 함

그동안 개발할 때에는 인터넷이 되는 환경에서 개발을 하다 보니 기본적인 것도 인터넷으로 예제를 찾아서 복사 후 바꾸는 방식으로 진행을 했었다. 그러다가 현장에 인터넷이 전혀 안되는 환경에서 하다 보니 개발하는 속도가 현저하게 떨어졌다. 대부분의 금융권 회사는 보안이슈로 노트북, 태블릿의 출입 허가가 안나기 때문에 이 환경에서 빠른 개발을 하려면 머리속에 기술 분야 별로 기본적인 코딩은 바로바로 할 수 있어야 한다.

개발도구 - 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

 

Visual Studio 2017 15.9 릴리스 정보

Visual Studio 2017의 향상된 최신 기능에 대한 릴리스 정보입니다. Visual Studio를 사용하여 더 효과적으로 계획하고, 함께 코딩하여 빠르게 제공하세요.

docs.microsoft.com

소스비교 프로그램 WinMerge

소스병합 또는 기존 소스 컨버팅, 커스터마이징할 때 유용한 프로그램입니다.

https://winmerge.org/downloads/?lang=en

 

Download WinMerge - WinMerge

Download WinMerge The easiest way to install WinMerge is to download and run the Installer. Read the online manual for help using it. WinMerge 2.16.4 The current WinMerge version is 2.16.4 and was released at 2019-07-28. For detailed info on what is new, r

winmerge.org

서브버전 - SVN

서브버전(Subversion)은 자유 소프트웨어 버전 관리 시스템이다.
참고자료: https://ko.wikipedia.org/wiki/서브버전

Visual Studio SVN을 사용하였고 플러그인은 AnkhSVN 을 사용했습니다. Git도 사용할 만합니다. 버전관리는 필수입니다.

 

ankhsvn: Subversion Support for Visual Studio

About AnkhSVN AnkhSVN started as Arild Fines' final year development project at the Engineering Faculty of the Oslo College in Norway. Karl Fogel (one of the Subversion “originals”) was Arild’s outside mentor. Arild continued the project while pursuing a m

ankhsvn.open.collab.net

컴퓨터 사양 - 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인 사업으로 문서작업, 사진 및 영상편집 등을 같이 하려면 더 높은 사양이 필요할 수도 있습니다.

 

[노하드 시스템] Zero Client 란?

■ 제로 클라이언트의 정의제로 클라이언트는 중앙처리장치(CPU), 메모리, 하드디스크 등과 같이 PC의...

blog.naver.com

로컬에서 파일을 저장하는 방법

현장에서는 ini, mdb를 주로 사용하였습니다. ini는 간단한 설정 값의 정보를 쉽게 읽고 쓸 수 있습니다. mdb 는 쿼리문을 사용할 수도 있고 office를 사용하면 access 프로그램으로 쉽게 접근이 가능합니다.

다른 dll 호출방법 - 참조추가, 마샬링

Visual Studio 에서 C# 윈도우폼에서 프로그램에서 다른 솔루션의 기능을 활용하려면 참조추가, 마샬링(marshaling)으로 프로젝트에서 활용할 수 있습니다. ActiveX dll 파일도 가져와 사용합니다.

글꼴

코딩에 좋은 글꼴이 있습니다. 숫자1(일)과 소문자l(엘) 그리고 한글 ㅣ(이) 와 같이 혼동이 올 수 있는 글자들을 구분할 수 있습니다. 아래 링크에서 다운로드 받아서 설치하면 사용 가능합니다. 현장에서는 "나눔고딕코딩"을 사용했습니다.

 

naver/d2codingfont

D2 Coding 글꼴. Contribute to naver/d2codingfont development by creating an account on GitHub.

github.com

Visual Studio 기능들 - 명령줄인수, 조건부 컴파일, 단축키 등

명령줄 인수를 사용하면 웹이나 다른 프로그램에서 해당 프로그램을 실행할 때 필요한 정보를 전달해서 실행될 때 사용하거나 명령을 내릴 수 있습니다. 간단한 예를 들면 프로그램.exe "abc" 를 하면 프로그램 시작 시 abc를 가져와서 작업할 수 있습니다.

Visual Studi 프로젝트에서 조건부컴파일은 #if A 와 같이 특정 조건에서 실행되게 할 수 있습니다. 

Visual Studio 단축키를 익히면 좀 더 빠른 코딩이 가능합니다. 실제로 쓰면서 유용한 단축키는 추후에 정리해 보겠습니다. 자주 쓰면서 유용하다고 생각했던 단축키 2개만 정리하면 아래와 같습니다.

1. Ctrl + K, R: 선택 부분의 참조 찾기 / 2. Ctrl + -(마이너스): 이전 위치로 돌아가기

 

자주 사용되는 명령의 기본 바로 가기 키 - Visual Studio

Visual Studio에서 자주 사용되는 바로 가기 키Popular keyboard shortcuts for Visual Studio 이 문서의 내용 --> 이러한 기본 바로 가기 키를 선택하여 Visual Studio의 자주 사용하는 명령에 액세스할 수 있습니다.You can access frequently used commands in Visual Studio by choosing these default keyboard shortcuts. 기본 바

docs.microsoft.com

그리고 함수(Method)를 작성하고 사용을 한 다음에 다시 해당 함수로 이동을 하면 함수 이름 위에 참조 1개 라고 글씨가 뜨고 그걸 클릭하면 해당 함수를 참조하고 있는 함수들을 볼 수 있습니다. 이 기능이 괜찮아서 집에서 프로그램을 실행해 보니 뜨지 않는 겁니다. 해당 기능을 code lense 에서 참조(references) 기능인데 해당 기능은 무료 버전인 community 에는 없고 프로 이상 버전에만 제공하는 기능인 것 같습니다.

https://stackoverflow.com/questions/20823805/codelens-not-showing-references

 

CodeLens not showing references

CodeLens stopped working for some reason in project solution that I'm dealing nowadays. It is not showing references instead "- references". However, when I open up Visual Studio with another pro...

stackoverflow.com

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

 

[삽잡이::etc] AS-IS와 TO-BE

as-is 란, 지금 현재 '있는 그대로'를 의미합니다. 즉, 현재 업무 프로세스에 대한 분석을 의미합니다. to-be란, '미래의' 라는 의미를 가지고 있습니다. 즉, 이 둘은 현재의 상태(as-is)와 미래에 원하는 상태(to..

blog.shovelman.dev

소캣 프로그래밍, MCI?

난 소캣 통신, MCI 는 이번 현장에서 처음 경험했다.

MCI는 뭐야?

 

MCI 좀 더 파기

MCI (Multi Channel Integration) 소개 및 구성1. MCI 및 EAI 배경 몇년전만 해도 금융권 차세...

blog.naver.com

이전 회사에서는 .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

 

C#에서 데이터 베이스에 연결하고, 쿼리를 실행하는 방법 (Mssql, .net)

IT 관련 내용을 포함하여 각종 취미 생활에 대한 블로그 입니다.

kinanadel.blogspot.com

현장에서 처음 접하게 된 개념으로 이를 제대로 이해하려면, 소켓, 인터페이스 등 기존 개발 경력에서 잘 사용하지 않았던 개념들을 체계적으로 공부할 필요가 있어 보인다.

 

Socket을 이용한 HTTP 호출 - C# 프로그래밍 배우기 (Learn C# Programming)

Socket을 이용한 HTTP 호출 Socket을 이용한 HTTP Raw Request C#에서 HTTP Request를 보내는 방법으로 흔히 High 레벨 클래스로서 HttpWebRequest, WebClient, HttpClient 클래스들을 사용하는데, 여기서는 Low 레벨의 HTTP 네트워크 통신을 이해하기 위해 Socket 클래스는 사용하여 HTTP 프로토콜 Raw 데이타를 보내는 방법에 대해 소개한다. 먼저 HTTP Request에 대한 Raw

www.csharpstudy.com

로그는 필수!

저는 개발할 때 로그를 남기지는 않았습니다. 대부분 사용자들이 보고 처리할 수 있도록 메시지로만 처리를 했습니다. 현장에서 일 하면서 로그가 중요하다는 것을 알았습니다. 그리고 로그도 레벨을 설정하고 원하는 수준의 로그를 출력할 수도 있습니다. 로그 레벨에 대한 내용은 아래 글들을 참고해 주세요.

 

Logging Levels: What They Are and How They Help You | Scalyr

Today, we take a look at the idea of logging levels for entries in your logs. What are they, how do they work, and why should you use them?

www.scalyr.com

 

 

log4j logging hierarchy order

What is the hierarchy of log4j logging? DEBUG INFO WARN ERROR FATAL Which one provides the highest logging which would be helpful to troubleshoot issues? Can any one provide the order or hierarch...

stackoverflow.com

백업 및 동기화 프로그램

이전 회사에서 작업했을 때는 처음에는 무식하게 솔루션 버전 별로 전체 zip 파일로 압축을 해서 로컬 컴퓨터, 공유 컴퓨터 2중으로 백업을 했었습니다. 그리고 현상관리 없이 폴더들을 동기화 하는 무료 프로그램인 freefilesync 를 사용했습니다. 이 프로그램을 사용하면 초보자도 쉽게 로컬, FTP 내용을 동기화 할 수 있습니다.

https://freefilesync.org/

 

FreeFileSync

Download FreeFileSync 10.18. FreeFileSync is a free open source data backup software that helps you synchronize files and folders on Windows, Linux and macOS.

freefilesync.org

워드, 엑셀 등의 문서는 원드라이브를 사용하고 있습니다. 여기에 자료를 정리하면 집 컴퓨터, 노트북. 태블릿, 휴대폰 등 내가 가지고 있는 어느 장치에서도 내용을 확인할 수 있습니다.

나머지 큰 영상, 사진 등의 자료는 개인적으로 시놀로지 나스를 구매서 사용중에 있습니다. 현재까지 랜섬웨어에 한번 공격을 당해서 하드디스크를 분해 후 암호를 강화했습니다. 보안에 더 신경쓰려면 포트들도 기본 포트를 쓰면 안되고 변경해서 사용해야 합니다.

현장에서는 소스만 클라우드 관리를 하고 문서 등 기타 자료는 공유 드라이브에 두고 메신저로 자료를 공유합니다.

현재 다니기 시작한 회사는 자료 공유가 잘 되지 않는 거 같습니다. 회사 솔루션 자산에 대한 보호(?) 때문일 지도 모른다는 생각을 해봅니다.

개발한 프로그램 배포하기

개발한 프로그램을 배포하려면 셋업 파일을 만들어야죠~ 셋업 파일을 만드는 방법은 다양합니다.

이전에 사용해본 방법으로는 국산 프리웨어인 Install Factory, Visual Studio 플러그인 Microsoft Visual Studio Installer Projects 이렇게 2가지를 사용해 봤습니다.

현장에서는 NSIS로  셋업파일을 만들어서 배포합니다. 아래 언어를 배우면 배포할 때 원하는 방식으로 업데이트 버전을 배포할 수 있습니다. NSIS(Nullsoft Scriptable Install System, 널소프트 스크립터블 인스톨 시스템)는 스크립트 기반으로 동작하는 윈도용 설치 시스템으로, 윈앰프를 만든 것으로 알려져 있는 널소프트가 지원하는 가벼운 설치 시스템이다.

 

NSIS - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. NSIS(Nullsoft Scriptable Install System, 널소프트 스크립터블 인스톨 시스템)는 스크립트 기반으로 동작하는 윈도용 설치 시스템으로, 윈앰프를 만든 것으로 알려져 있는 널소프트가 지원하는 가벼운 설치 시스템이다. NSIS는 인스톨실드와 같은 상용 사유 제품들을 널리 대체하면서 인기를 끌고 있다. NSIS는 주로 zlib 라이선스인 자유 소프트웨어 라이선스와 결합한 자유 소프트웨어이다.[1] N

ko.wikipedia.org

프로그램은 아래 사이트에서 다운로드 받을 수 있습니다.

https://sourceforge.net/projects/hmne/

 

HM NIS Edit

Download HM NIS Edit for free. HM NIS Edit is the best Editor/IDE for Nullsoft Scriptable Install System (NSIS). Its useful for experts and beginner in the creation of Setup programs with the NSIS.

sourceforge.net

처음부터 끝까지 프로그램 완성을 하려면 위의 내용들을 체계적으로 공부해야 합니다.

각 각의 부분에 대해서도 시간이 되면 작성해 보도록 하겠습니다.

글 내용 중에서 틀린 부분이 있다면 댓글로 남겨주시면 수정하겠습니다.

감사합니다.

안녕하세요. 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개 생성해서 숫자로 바꾼것일 뿐 아무 의미 없는데이터입니다.
그래도 혹시 모르니 제가 로드했던 샘플파일을 첨부합니다.

sample1.csv
0.00MB

위 내용에 대하여 궁금하신 점 있으면 댓글 남겨주세요.

감사합니다.

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로-가져오기-영상코드샘플파일

감사합니다.

이전 글에서 말씀드렸듯이 설명이 포함된 글을 코드와 주석으로 정리해서 올립니다.

이전 글은 아래 링크를 클릭해서 확인해 주세요.
git 으로 버전관리 하기1 - git 사용법 기초 첫번째
https://ilbbang.tistory.com/entry/git-github-로-버전관리-하기1-기초

git bash 실행를 실행하고 아래 명령어를 입력해 주세요.
1. # 뒤의 내용은 주석입니다. 입력 안하셔도 됩니다.
2. 2단계의 경우 본문에서는 윈도우 탐색기에서 파일을 정상적으로 생성했다면 넘어가도 됩니다.

# 2단계. 새 프로젝트 폴더 생성, 그리고 git bash 실행
mkdir /c/Programming/
mkdir /c/Programming/firstgit

# 3단계. git 1 - 폴더 이동
cd /C/Programming/firstgit

# 4단계. git 사용자 정보 입력 (설치 후 한번만 실행)
git config --global user.name "abc" 
git config --global user.email "abc@abc.com"
git config --list    # 입력된 정보 확인

# 5단계. 초기화 git init
git init
git status    # 6단계. 상태 확인0 git status

# 7단계. 작업 시작 - 파일, 폴더 만들기 및 확인
touch index.html
ls    # 파일이 잘 생성되었는지 확인
git status    # 8단계. 상태 확인1 git status, 파일 추적 전...

# 9단계. 변경된 내용 추적하기, git add
git add -A

git status    # 10단계. 상태 확인2 git status

# 11단계. 확정하기 - git commit
git commit -m "index.html 파일 추가"

git log    # 12단계. 확정(commit, 커밋)된 내용 확인하기 - git log

궁금하신 점이나 잘못 표현된 점이 있다면 댓글로 알려주세요. 

감사합니다.

안녕하세요.

이번에는 제가 버전관리 하는 방법과 절차를 간단하게 설명하겠습니다.
저는 윈도우 운영체제 기준으로 설명하겠습니다.

버전관리 기초에서 프로그램은 git bash만 사용합니다. 보통은 Visual Studio Code, Visual Studio 같은 IDE로 작업하고 자체 git 플러그인을 사용하지만 여기서는 git bash 만 사용해서 진행합니다. 나중에 다른 프로젝트 진행할 때 git bash 를 연결하거나 자체 플러그인으로 버전관리 하는 법도 알려드리겠습니다.

github, nas 등의 원격저장소는 다음 글에서 다룰 예정입니다.


1단계. 설치

우선 컴퓨터에 git을 설치해야겠죠? git은 아래 사이트에 들어가서 운영체제에 맞는 버전을 설치하면 됩니다.

 

Git

 

git-scm.com

설치 과정은 생략하겠습니다. 설치 방법이 궁금하시면 아래 링크를 클릭해주세요.

 

Git - Git 설치

이 책은 Git 2.0.0 버전을 기준으로 썼다. 대부분의 명령어는 그 이전 버전에서도 잘 동작하지만, 몇 가지 기능은 아예 없거나 미묘하게 다를 수 있다. Git의 하위 호환성은 정말 훌륭하기 때문에 2.0 이후 버전에서는 잘 동작한다.

git-scm.com

설치가 완료되면 윈도우 버전의 경우 git bash 프로그램을 실행할 수 있습니다. 윈도우 기본 명령 프롬프트(CMD)에서도 실행은 가능하지만 기본 명령어 중에서 맥, 리눅스 명령어와 다른 내용이 있기 때문에 git bash로 따라하는 걸 추천합니다. 

2단계. 새 프로젝트 폴더 생성, 그리고 git bash 실행

윈도우 탐색기에서 프로젝트 폴더를 하나 생성합니다. 저는 "C:\Programming\firstgit" 폴더를 만들었습니다.

새로 생성한 C:\Programming\firstgit 폴더

그리고 아래 아이콘을 찾아서 git bash 프로그램을 실행합니다.

Git Bash 실행 아이콘

그러면 아래 그림과 같이 명령창이 나타납니다.

git bash 실행하면 나타나는 처음 화면

이렇게 되면 버전관리를 할 준비가 완료되었습니다.

3단계. git 1 - 폴더 이동

git bash 명령창에 "pwd" 를 입력하면 현재 폴더 위치가 나타납니다.
(윈도우 프롬프트에서는 기본적으로 현재 위치가 표시됩니다. git bash에서도 원래는 디렉토리가 표시되지만 사용자의 홈 디렉토리인 경우에는 ~로 표시됩니다.) "cd C:/Programming/firstgit" 를 입력해서 새로 생성한 폴더로 입력합니다. 

잠깐! 윈도우 프롬프트에서는 "cd C:\Programming\firstgit" 를 입력하면 됩니다만 git bash 에서는 리눅스 명령어를 사용하기 때문에 \ 표시를 전부 / 표시로 바꿔줘야 합니다. git bash에서 "cd C:\Programming\firstgit" 를 입력하면 아래와 같이 오류가 발생합니다.

첫 실행, 현재 폴더 확인 및 폴더 이동

이제부턴 캡처 화면 대신 글씨로 표현하겠습니다.

따라하실 때는 입력 또는 예시 오른쪽 칸의 $ 뒤에 있는 부분만 입력하시면 됩니다.

4단계. git 사용자 정보 입력 (설치 후 한번만 실행)

설정은 git을 처음 실행하였을 경우에만 하면 됩니다. 다음 프로젝트 부터는 이 과정을 생략해도 됩니다.
작성요령에서 "사용자이름" 대신에 작업하시는 분 이름 또는 별명을 입력해 주세요. "이메일주소" 대신에 작업하시는 분 이메일 주소를 입력해 주세요.

작성요령1 사용자 이름
작성요령2 이메일 주소
$ git config --global user.name "사용자이름"
$ git config --global user.email "이메일주소"
작성요령1의 예시 - 사용자이름은 abc
작성요령2의 예시 - 사용자의 이메일 주소는 abc@abc.com
$ git config --global user.name "abc"
$ git config --global user.email "abc@abc.com"

도움이 필요해... git help

위 내용대로 입력하였으면 잘 입력되었는지 확인해야 겠죠? 아래 명령어를 입력하면 다음과 같이 입력된 내용을 확인할 수 있습니다.

입력 $ git config --list
결과 ...중략...
user.name=abc
user.email=abc@abc.com

위 명령어에 대한 도움이 필요하시면 help 옵션으로 도움말 인터넷 창을 띄울 수 있습니다. (영어페이지로 연결됩니다. 인터넷 연결 없이도 실행됩니다.)

작성요령1
작성요령2
(작성요령1, 2는 같은 결과)
$ git help 알고자하는명령어
$ git 알고자하는명령어 --help

작성요령1의 예시
작성요령2의 예시
$ git help config
$ git config --help
결과 - git 명령어 중 config 속성에 대한 도움말 호출 git-config(1) Manual Page 가 열립니다.(html 파일)

5단계. 초기화 git init

이제 해당 폴더의 버전관리를 시작해 보겠습니다. 간단합니다. "git init" 명령어를 입려하면 버전관리를 시작합니다.

입력 $ git init
결과 Initialized empty Git repository in C:/Programming/firstgit/.git/

iljun@aijmac MINGW64 /c/Programming/firstgit (master)

그리고 폴더 옆에 (master)가 추가된 것을 확인할 수 있습니다. 

git init

6단계. 상태 확인0 git status

현재 폴더 내의 변경된 내용이 있는지 확인하는 방법은 "git status" 명령어를 입력하면 됩니다. 현재 아무 작업도 안했기 때문에 No commits yet, nothing to commit 이라는 결과가 나옵니다.

입력 $ git status
결과 On branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)

저 같은 경우에는 git status 는 작업하고 추가하기 전(8단계), 추가(git add) 후 커밋 전, 커밋(git commit) 후 확인할 때 사용합니다.

7단계. 작업 시작 - 파일, 폴더 만들기 및 확인

이 단계는 git이 아닌 리눅스 명령어 입니다.

이제 파일을 하나 만들어 보겠습니다. "touch index.html" 을 입력하면 입력 폴더에 새 파일이 생깁니다.
이제 파일이랑 폴더가 잘 생성되었는지 확인해 봅시다. "ls"를 입력하면 생성된 파일 및 폴더가 나타납니다.

작성요령1 $ touch 생성할파일이름(확장자포함)
작성요령1의 예시 - index.html 파일 생성
입력 - 생성된 파일, 폴더 확인
$ touch index.html
$ ls
결과 index.html

파일 새로 만들기(touch), 확인(ls)

8단계. 상태 확인1 git status, 파일 추적 전...

이제 다시 git status 를 입력해 보겠습니다. 6단계랑은 다르게 untracked file 목록에 index.html이 나타났습니다.

입력 $ git status
결과 On branch master
No commits yet
Untracked files:
  (use "git add ..." to include in what will be committed)
        index.html
nothing added to commit but untracked files present (use "git add" to track)

git status 입력 및 결과 - untracked

9단계. 변경된 내용 추적하기, git add

이 파일을 추적하려면 git add index.html 을 입력하면 됩니다.

작성요령1 - 하나의 파일 추적 시작 $ git add 추적을시작할파일이름
작성요령1의 예시 - index.html의 변경내역을 추적 시작합니다. $ git add index.html

추적할 파일이 여러개인 경우 하나하나 추가하기 힘들기 때문에 특별한 경우(파일마다 추적하는 내용이 달라서 commit을 따로 하고 싶은 경우)가 아니라면 보통은 git add -A 를 입력하여 모든 변경된 내역을 추적합니다.

입력 $ git add -A

예제에는 추적할 파일이 하나이니 때문에 git add index.html 과 git add -A 는 같은 같다고 보시면 됩니다.

10단계. 상태 확인2 git status

이제 추적할 파일이 잘 추가되었는지 확인해 볼까요? 다시한번 git status 명령어를 입력합니다. 그러면 8단계 결과와는 또 다르게 커밋의 내용과 파일명이 나타납니다. index.html 파일이 추가되었다고 나와있네요.

입력 $ git status
결과 On branch master
No commits yet
Changes to be committed:
  (use "git rm --cached ..." to unstage)
        new file:   index.html

git status 입력 및 결과 ready to commit

 

11단계. 확정하기 - git commit

추적할 파일들을 다 추가하였다면 이제 commit 하여 변경내역을 확정하고 기록합니다. 

작성요령1 $ git commit -m "변경된내용"
작성요령1의 예시 - index.html 파일 추가라는 내용으로 변경내역을 기록하고 확정 $ git commit -m "index.html 파일 추가"
결과 [master (root-commit) e8e62de] index.html 파일 추가
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 index.html

git commit 입력 및 결과

참고]git bash 글꼴 바꾸기 (예민하지 않은 분들은 넘어가도 상관없습니다.)

처음으로 한글이 나왔는데 한글 부분의 장평(글자와 글자 사이의 간격)이 넓게 나옵니다. 이 부분을 좀 더 깔끔하게 보고 싶으시다면 글꼴을 변경해 주면 됩니다. 우선 git bash 프로그램 오른쪽 상단에 있는 아이콘을 클릭하면 메뉴가 나타납니다. Options... 를 선택합니다.

git bash 한글 글꼴 바꾸기1

Options... 를 선택하면 옵션 창이 나오는데요. 왼쪽 메뉴들 중 Text를 선택하면 오른쪽 부분이 아래 그림과 같이 바뀝니다. Font 를 바꿔주기 위해 Font 네모칸 안쪽의 오른쪽에 있는 Select... 버튼을 클릭합니다.

git bash 한글 글꼴 바꾸기2

Select... 버튼을 클릭하면 아래 그림과 같이 폰트를 선택할 수 있는 창이 나옵니다. 한글폰트 중 원하는 폰트를 선택합니다. (해당도가 높고 화면이 작아서 글씨가 잘 안보이실 경우 글자 크기도 원하는 수준으로 키워주셔도 됩니다.) 저는 기존 Lucida Console 폰트에서 굴림체 폰트로 바꿨습니다. 확인 버튼을 클릭합니다.

git bash 한글 글꼴 바꾸기3

확인 버튼을 클릭하면 아래 그림과 같이 선택한 폰트로 변경된 것을 확인하고 아래에 있는 Save 버튼을 클릭합니다.

git bash 한글 글꼴 바꾸기4

Save 버튼을 클릭하면 아래 그림과 같이 한글도 깔끔하게 표시되네요.^^

git bash 한글 글꼴 바꾸기5

12단계. 확정(commit, 커밋)된 내용 확인하기 - git log

수고하셨습니다. 첫번째 버전관리가 기록되었습니다. 이제 내용이 잘 기록되었는지 확인해 봅시다. git log 명령어를 입력하면 변경내역이 나타납니다. 현재는 한개의 commit 만 있습니다. commit 뒤에 있는 e8e6... 은 commit 일련번호입니다. 나중에 특정 커밋을 조회하거나 되돌리기 등의 기능을 사용할 때 필요합니다. 그 외에 작업한 사용자의 이름과 이메일, commit 일자, 내용이 나타납니다.

입력 $ git log
결과 commit e8e62de7dd605f6440a9e65eb9627444e14293f5 (HEAD -> master)
Author: ilbbang7 <ilbbang7@gmail.com>
Date:   Fri May 24 00:42:03 2019 +0900
    index.html 파일 추가

git log 입력 및 결과

 

앞으로의 계획

간단하게 작성한다고 했는데도 글이 생각보다 기네요... 추후에 위 글을 한눈에 실습할 수 있도록 설명 없이 코드만 모아서 올리겠습니다. > 2019년 5월 26일 업로드 완료
git 으로 버전관리 하기1 - git 사용법 기초 첫번째[코드위주]
https://ilbbang.tistory.com/entry/git-으로-버전관리-하기1-git-사용법-기초-첫번째코드위주

12단계 이후에 추가로 작업하고 변경하는 것은 7단계에서 html의 내용을 수정하거나 다른 파일(또는 폴더)을 추가하고 8단계에서 11단계까지 비슷하게 수행하면 됩니다. 12단계는 11단계까지 문제 없이 잘 되었나 확인하는 과정입니다. 우선은 직접 한번 해보세요. 추가 작업해서 2번째 커밋하고 확인하는 과정은 추후에 올리고 링크 남기겠습니다.

현재 작업은 한 장소에만 작업이 저장되어 있어 이 폴더를 지울 경우 버전관리된 내용이 전부 날아가게 됩니다. 따라서 원격 저장소를 생성하여 버전관리도 여러장소에 백업할 수 있습니다. 원격저장소 종류도 여러가지가 있습니다. 이 부분은 추후에 별도의 올리고 링크 남기겠습니다.

저도 아직 전문가는 아니고 공부한 내용을 나름대로 설명하다 보니 부족한 내용이 많습니다. 궁금하신 점이나 잘못 표현된 점이 있다면 댓글로 알려주세요. 

감사합니다.

+ Recent posts