"파이썬 모듈과 패키지 - 파이썬 배우기(Python)" 에 이은 포스팅입니다. 파이썬의 내장 라이브러리 모듈은 다양한 분야에 걸쳐서 충분한 테스트를 거친 좋은 코드임에도 불구하고 이를 모르거나 접해 보지 못하면 이미 만들어져 있는 훌륭한 코드가 있음에도 불구하고 똑같은 또는 유사한 기능을 다시 코딩하는 우를 범할 수 있습니다. 본격적인 파이썬 프로그래밍에 앞서 구현하려는 기능이 파이썬 라이브러리 모듈에 있는지 꼭 확인해 볼 필요가 있습니다. 이미 잘 만들어 놓은 라이브러리를 최대한 활용해서 효율적이고 효과적인 프로그래밍을 누려 보세요. 파이썬의 내장 라이브러리 모듈은 모듈 단위의 문서화 자료를 참조해도 되고 import 모듈명 이후에 help(모듈명)하면 자세한 설명을 확인할 수 있습니다. 아래는 re..
파이썬은 지금까지 다룬 다양한 타입과 기본 제공 함수들을 통해서도 다른 프로그램밍 언어에서는 볼수 없는 상당히 유연한 모습을 보여주고 있는데 확장 모듈을 통해서 이보다 좀더 복잡한 문제들을 간편하게 해결하거나 기타 유용한 기능들을 활용 할 수 있습니다. 모듈은 파이썬의 클래스, 함수, 전역 변수 등을 묶어 놓은 것으로 용도에 따라 코드의 재사용성을 극대화 시켜 줍니다. 모듈을 사용하게 되면 얻는 유익을 정리해 보면 다음과 같습니다. 연관성이 있는 모듈만을 로드하여 프로그램 시작 시간을 최소화.필요한 모듈을 손쉽게 추가하여 사용할 수 있습니다.별도의 네임스페이스를 가지고 있어서 다른 모듈과 독립적으로 작업할 수 있습니다.특정 모듈을 필요에 따라 대치시킬 수도 있습니다. ■ 모듈(module)의 정의와 사용..
"파이썬 클래스 1 - 파이썬 배우기(Python)"에 이은 포스팅 입니다. ■ 상속(Inheritance) 상속은 클래스 핵심 개념중 하나로 슈퍼 클래스를 두고 슈퍼 클래스의 모든 속성을 상속 받으면서 전문적인 부가정보를 갖는 서브 클래스를 정의하는 방식 입니다. 한개 이상의 슈퍼 클래스로부터 상속을 받을 수 있고, 시스템 내장 클래스도 상속 받아 기능을 확장할 수 있습니다.생성자(__init__)는 서브 클래스 부터 슈퍼 클래스로 계층적으로 이동하면서 한번만 호출 됩니다. 즉 서브 클래스에 __init__가 정의되어 있으면 서브 클래스의 생성자만 호출되고 서브 클래스에 없고 슈퍼 클래스에 있으면 슈퍼 클래스 생성자가 호출 됩니다. 따라서, 서브 및 슈퍼 클래스에 모두 생성자가 있는 경우에는 서브 클래..
클래스는 데이터(속성, attribute)와 그에 대한 처리를 하나로 정의한 것으로 파이썬 오브젝트들은 특정 클래스의 인스턴스들 입니다. 클래스의 인스턴스인 오브젝트는 다음와 같은 생애주기를 갖습니다. 정의 class 문을 통해 클래스를 정의.(시스템 클래스도 마찬가지)생성 정의한 클래스 정의에 따라 오브젝트를 생성하고 __init__를 호출하여 속성을 초기화.작업 메쏘드 또는 메쏘드 함수를 통하여 작업을 수행.정리(Garbage Collection) 더이상 사용하지 않는 오브젝트를 정리. ■ 클래스 정의 클래스 정의는 아래와 같은 문형을 갖습니다. class 클래스명(부모 클래스):코드 블럭 클래스명은 변수명 규칙을 따르지만 클래스명은 첫문자를 대문자로 해서 혼란을 방지 하는 것이 좋습니다. 메쏘드나 ..
프로그램을 보다 효율적으로 작성하기 위한 방법은 좋은 함수 작성에서 시작한다고 해도 과언이 아닐 정도로 함수를 잘 활용하면 프로그램의 가독성 향상과 효율화를 가져올 수 있습니다. 파이썬의 함수는 입력 파라미터 타입의 제한이 없고 리턴되는 값 또한 자유로워서 뛰어난 확장성을 갖습니다. 함수의 정의는 아래와 같은 형식을 취합니다. def 함수명(파라미터 리스트):코드블럭 함수명은 변수 작성에 따라 제한없이 작성할 수 있지만 추후 클래스명 등과 혼동되지 않도록 되도록 소문자로 시작 합니다. 파라미터 리스트에 기술하는 변수들은 적용 범위가 해당 함수 내부로 한정되는 로컬 변수로 취급 합니다. 변수명=값의 형식으로 기술한 파라미터는 기본값을 가지는 파라미터로 함수를 호출하는 곳에서 해당 파라미터를 지정하지 않으면..
"파이썬 제어구조 1 - 파이썬 배우기(Python)"에 이은 글입니다. 파이썬의 흐름 제어를 다루는 기본적인 문장들을 다루고 있습니다. ■ 주석문과 기타 제어문 프로그램이 커지고 복잡해지면 가독성이 떨어지게 마련인데 이를 보완해 줄 수 있는 방법 중의 하나가 코드에 주석을 달아 놓는 것입니다. 파이썬에서는 # 문자로 주석을 표시 합니다. 줄의 맨처음에 #를 표시하면 해당 줄은 모두가 주석이고 줄의 중간에 오면 그 이후가 모두 주석 입니다. 단, 따옴표 바깥에 표시해야 합니다. 코딩 스키마 주석 프로그램의 첫줄이나 두번째 줄에 기술하며, 코드의 인코딩을 기술 합니다. 코드중에 한글 인코딩(euc-kr)이 있을때는 다음과 같이 기술 합니다. # -*- coding: cp949 -*- UTF-8 인코딩을 사..
프로그래밍 언어가 제공하는 핵심 기능중 하나는 제어 흐름을 기술 할 수 있도록 하는 것으로 제어 흐름에는 해야할 작업을 차례대로 나열하는 순차적 흐름, 특정 조건에 따라 True 또는 False로 흐름을 변경하는 조건적 흐름, 일정한 조건을 따르는 반복 흐름을 대표적인 것으로 들 수 있습니다. 이런 흐름 제어의 중심에 비교 연산이나 논리 연산이 자리 잡고 있으며 앞선 "파이썬 스칼라 타입, 논리(Boolean) - 파이썬 배우기(Python)"에서 기본적인 내용을 다루었습니다. 몇가지 꼭 기억할 사항 옮겨보면 아래와 같습니다. 파이썬에서는 True와 False라는(대소문자 주의) 특별한 값을 제공하고 있으며 False, 0, None, '', "", (), [], {} 등을 모두 False로 처리 합니다..
사전 타입은 인덱스로 개별 항목에 접근하는 배열과 달리 키 값으로 접근할 수 있는 리스트 타입 입니다. 사전은 {키:값, 키:값...}의 방식으로 선언 합니다. 사전 타입의 타입명은 dict인데 dict()함수로 리스트를 사전으로 만들수도 있습니다. dict 로 전달할 인수는 키,값 쌍으로 구성한 리스트들을 원소로한 리스트를 넘겨주면 됩니다. 예제처럼 zip 함수로 키 리스트와 값 리스트 두개로 사전 배열을 작성할 수도 있습니다. {}는 빈 사전을 의미 합니다. 키는 스트링을 비롯한 어떠한 타입으로도 가능하며 아래의 예제 처럼 배열을 키로 가질 수도 있습니다. 또한, 사전은 내부적으로 해시 테이블을 사용하기 때문에 사용자가 입력한 순서로 저장하는 것이 아닙니다. 다시 말해서 항목간 순서가 존재하지 않습니..
참과 거짓의 두가지 값 만을 가지는 타입으로 타입 이름은 bool 입니다. 파이썬에서는 True와 False라는(대소문자 주의) 특별한 값을 제공 합니다. >>> 7 == 7True>>> 7 == 8False>>> a = 7==7>>> type (a)>>> print aTrue ■ 연관 연산자 bool 타입과 연관된 논리 연산자는 True 또는 False만을 리턴하며 그 내역은 아래와 같습니다. == 양쪽이 같으면 True. ==와 =는 서로 다른 연산자로 = 하나는 대입 또는 치환을 의미하므로 주의 합니다.= 우측 보다 크면, 크거나 같으면 Truea> 1 > 3 > 1 > 1 != 3True>>> 1 != 1False>>> 1 1Falseand 양쪽이 모두 True 이면 T..
문자열 표현으로 파이썬에서의 타입 이름은 str 입니다. 작은 따옴표('), 큰 따옴표(") 모두 사용 할 수 있는데 작은 따옴표(')로 시작한 문자열은 반드시 작은 따옴표(')로 끝나야 하고 중간에 작은 따옴표(')를 문자열로 표현할 때는 \'와 같이 Escape합니다. 그렇지만 중간에 큰 따옴표가 올 때는 Escape할 필요가 없습니다. 이 표현법은 큰 따옴표(")에도 동일하게 적용 됩니다. r' '의 방식으로 Raw 스트링을 기술할 수 있는데 r다음의 스트링을 Escape하지 않고 기술한 그대로 처리하기 위한 방식 입니다. 인접한 스트링은 하나의 스트링으로 간주 합니다. 예를 들어 "aa" "bb" "cc"로 기술하면 "aabbcc"와 동일 효과를 냅니다. 여러줄에 걸친 스트링을 표현할 경우에는 따..
가장 기본이 되는 데이터 타입으로 값의 표현 방식은 아래와 같습니다. 숫자 상수 앞 또는 끝에 영문자를 붙여서 진수 표현이나 데이터 타입을 지정할 수 있는데 상수 표현에 사용하는 B, X, L, E, J 등의 영문자는 대문자와 소문자 모두를 사용할 수 있습니다. ■ int 정수형 데이터 타입. 0으로 시작하면 8진수, 0x로 시작하면 16진수, 0b로 시작하면 2진수를 나타 냅니다. >>> 10 - 33-23>>> 0Xff - 1 #ff=255254>>> 070 + 1 #70=5657>>> 0b1010 + 10 #1010=10 ■ long 긴 정수형 데이터 타입. 상수 값 뒤에 L을 붙입니다. C언어와는 달리 길이 제한이 없습니다. >>> 2**324294967296L ■ float 부동소숫점 표현으로 ..
프로그래밍 언어 배우기를 시작 할 때 가장 추천하고 싶은 학습 방법은 손으로 직접 입력해 보고 그 결과를 확인하면서 한단계씩 프로그래밍 언어를 몸으로 체득하는 것입니다. 아주 오래전 생전 처음 8비트 퍼스널 컴퓨터를 가지고 베이직 언어를 접하며 컴퓨터를 배울 때를 떠올려 보면, 선생님이 칠판에 쓰신 따라서 코드를 직접 입력하여 결과를 확인하는 것으로 시작했던 기억이 있습니다. 처음에는 그저 따라하는 것이었지만 결과를 확인하며 즐거워 하는 친구들도 있었고 다양한 원인으로 헤매는 친구들도 있었습니다. 오타나 기타 이유로 원하는 결과가 나오지 않았을 때 그 원인을 찾아 수정하는 디버깅 과정에서 이해하고 배우는 효과는 프로그래밍 실력 향상의 첩경이라 하겠습니다. 첫 결과를 만난 다음에는 조금씩 나만의 의도를 적..
"파이썬 프로그램의 형태 1 - 파이썬 배우기(Python)"에 이어지는 글입니다.웹브라우저를 통해서 정보를 제공하는 사용자 인터페이스로 웹서버측에서 프로그래밍이 필요하고 아래와 같이 다양한 적용 방법이 있습니다.(참고 자료 http://docs.python.org/2/howto/webservers.html) CGI(Common Gateway Interface)mod_pythonFastCGI, SCGImod_wsgiTemplatesFrameworks ■ CGI(Common Gateway Interface) 웹서버와 파이썬 프로그램간의 가장 전통적인 인터페이스로 속도 및 기타 문제로 사용 할 수는 있지만 추천하지 않습니다. 되도록 WSGI(Web Server Gateway Interface)를 사용하도록 ..
어떤 프로그래밍 언어로 프로그램을 제작하더라도 본격적인 프로그램 제작 이전에 어떤 형태의 프로그램을 만들 것인지 방향성을 결정하는 것은 상당히 중요 합니다. 프로그램의 동작방식, 연관 범위, 인터페이스에 따라 프로그램의 구현 방식과 규모 등에 있어 큰 차이가 있기 때문에 파이썬을 배워나가는 사람의 입장에서도 이 부분에 대한 이해가 필수적이다 하겠습니다. 결론을 먼저 말한다면 파이썬은 단순 배치 프로그램 부터 시작하여 GUI 프로그램 및 웹 서비스까지 모든 분야에서 사용할 수 있는 매력적인 프로그래밍 언어 입니다. 다음은 사용자와의 인터페이스 관점에서 바라본 프로그램의 종류 입니다. ■ 일괄 작업 프로그램 배치(Batch program) 프로그램이라고도 부르는 것으로 콘솔창 또는 명령행(command li..
파이썬을 스터디하면서 궁금한 것을 그때 그때 구글링을 통해서 해결할 수도 있지만 미리 준비되어 있는 자료를 활용하면 더 효과적인 프로그래밍에 도움이 될 수도 있습니다. 아래의 글들에 이어지는 포스팅입니다. 파이썬 학습 환경 설치 - 파이썬 배우기(Python)파이썬 맛보기 - 파이썬 배우기(Python) ■ 문서화 자료 보기(Module docs) 파이썬 학습 환경을 설치하고 프로그램 메뉴에 있는 "Module docs"를 실행하면 자료를 이용할 수 있습니다. "Module docs"는 pydoc.py 가 문서화 서버가 되어(TCP 7464포트 사용) 파이썬 각종 모듈의 문서화 자료를 검색 및 제공 합니다. pydoc 스스로가 작은 웹서버 역할을 하는 셈입니다. "Search for" 입력창에 단어를 입..
"파이썬 학습 환경 설치 - 파이썬 배우기(Python)"에 이은 글입니다. 파이썬 학습 환경을 설치한 이후 실제로 파이썬 소스 코드를 실행하여 파이썬의 효과적인 학습을 위한 맛보기를 진행합니다. IDLE는 Integrated DeveLopment Environment의 약자로 비쥬얼스튜디오나 이클립스 같은 파이썬의 통합 개발 환경(IDE) 입니다. 물론 비주얼스튜디오나 이클립스 수준의 통합 개발 환경이라고 하기에는 한계가 있습니다. 그렇지만 나름 통합 개발 환경이 가지고 있는 기능들을 조금씩은 가지고 있습니다. 차이점이 있다면 비주얼스튜디오 처럼 편집-컴파일-실행-디버깅하는 전형적인 IDE의 모습과 함께 위의 그림과 같은 파이썬 인터프리터 환경이 함께 제공된다는 점 입니다. ■ 인터프리터에서 직접 실행..
직장이나 집에서 사용하는 컴퓨터에서 수행하는 대부분의 프로그램들은 많은 경우 C/C++, C#, Java등의 프로그래밍 언어로 제작 합니다. 어셈블리나 베이직등의 언어를 사용하기도 하지만 대부분의 응용 프로그램들이 이들 언어로 제작되고 있다고 해도 과언이 아닙니다. 그런데, 이런 환경에서 파이썬이란 언어가 등장한 배경에는 바로 "개발 생산성"에 있습니다. 쉽고 빠르게 개발할 수 있고 라이브러리 활용성, 확장성 및 재사용을 극대화 하면서도 시스템 독립성 확보로 어떤 시스템에서나 제한 없이 사용할 수 있는 그러한 언어를 만들자는 의도로 1980년대말에 네덜란드 출신의 개발자 귀도 반 로섬(Guido van Rossum)에 의해 시작 되었습니다.(http://en.wikipedia.org/wiki/Python..
프로그램을 제작하다보면 특정 좌표에 대해 지정한 각도로 회전을 한 새로운 좌표를 구해야 하는 경우가 있습니다. 이럴때는 유용한 것이 회전 행렬 입니다. (x1, y1)은 회전 시킬 점의 좌표라 하고 (x2, y2)를 회전 이후의 좌표라 하면 회전 행렬을 이용해서 다음과 같이 표현할 수 있습니다. 위의 수식을 풀어 보면 아래와 같습니다. x2 = Cos θ * x1 - Sin θ * y1 y2 = Sin θ * x1 + Cos θ * y1 double 라디안 = 각도 * (float)(Math.PI / 180); double x2 = Math.Cos(라디안) * x1 - Math.Sin(라디안) * y1; double y2 = Math.Sin(라디안) * x1 + Math.Cos(라디안) * y1; 위의 ..
웹서비스와 같은 대몬 프로그램을 개발하다보면 스레드가 나뉘어지는 등 프로그램의 처음부터 디버깅하는 것은 적절치 않을 뿐만아니라 디버깅을 걸기도 쉽지 않습니다. 이런 경우 일단 프로그램을 실행시켜두고 서비스 수행중에 실행 될 수 있는 특정 함수에 중단점을(Break point) 설정하여 해당 요청이 있을 경우 프로그램이 어떻게 흘러가는지 분석해 볼 수 있습니다. 이런 작업은 이미 완성형태를 갖추고 있는 서비스를 처음부터 새롭게 분석해야 할 경우나, 오픈 소스 형태로 배포되는 서비스 프로그램을 분석할 때도 요긴하게 사용할 수 있습니다. 내가 프로그램을 처음부터 개발한 것이 아니니 핵심 처리 루틴에 대하여 실제 동작 흐름을 파악할 수 있다면 분석에 큰 도움이 되는 것은 두말 하면 잔소리임을 누구나 동의할 수 ..
단축키를 잘 사용한다 것은 해당 도구가 몸에 익었다는 의미 이기도 하고, 사용하는 단축키의 범위 만큼 도구가 제공하는 기능들을 잘 이해하고 있다는 의미 이기도 합니다. 많은 변화가 있었던 비주얼 스튜디오의 단축키 목록을 통해서 비주얼 스튜디오의 주요 기능을 정리해 봅니다. ■ 검색 및 치환 검색 및 치환 : Ctrl+F, Ctrl+H 솔루션내 전체 파일 검색 및 치환 : Ctrl+Shift+F, Ctrl+Shift+H 파일 검색 결과는 결과창을 1,2로 구분해서 받을 수 있고, F8, Shift+F8로 결과 내부에서 이동할 수 있습니다.정규식, 와일드카드 작성 법 : 검색 및 치환 화면에서 정규식이나 와일드카드 사용을 체크하고 선택후 정규식이나 와일드카드 둘중에 하나를 선택한 다음 "찾을 내용"이나 "바..
Boost 라이브러리는 C++ 라이브러리 중에서 안정성과 성능, 라이선스의 자유로움등 여러 측면에서 개발자에게 도움이 되는 라이브러리 입니다. 윈도우 응용 프로그램에서 레지스트리에 각종 환경 정보 또는 프로그램 설정 정보를 저장하면 간단하지만, 환경 파일의 단순성이라는 장점을 바라보면서 개별 응용의 설정을 XML 파일에 저장하거나 예전의 INI 파일 형태로 저장하는 사례가 여전한데, Boost 라이브러리를 활용해서 이 문제에 대안을 찾아보고자 합니다. Boost 라이브러리에서 제공하는 여러 훌륭한 기능을 사용하고 싶지만 어떻게 하면 좋을지 갑갑한 분들을 위해 라이브러리 설치와 사용, 그리고 XML 파일에 설정 정보를 저장하고 읽는 예제까지 간단하게 다루어 보고자 합니다. ■ 윈도우용 라이브러리 설치하기 ..
가장 인기 있는 독립형 DBMS중의 하나인 SQLite를 비주얼스튜디오 개발 환경에서 편리하게 사용할 수 있도록 준비하고 C#을 기반으로 SQLite를 이용하는 과정을 다룹니다. ■ SQLite DBMS 소개 C# .Net 환경에서 응용 프로그램을 개발하는데 있어 검토해야 할 중요한 아키텍처 요소들은 사용자 인터페이스, 네트워크, 데이터베이스 등을 들 수 있습니다. 그중에서도 시스템을 확장성 있고 깔끔하게 만들 수 있는 핵심 요소는 자료를 저장하고 관리하는 데이터베이스라고 할 수 있을 것입니다. 통상 데이터베이스라고 하면 SQL Server, Oracle, MySQL, CUBRID, Firebird, PostgreSQL등의 DBMS를 떠올리지만 오늘 소개할 데이터베이스는 라이브러리 형태로 응용 프로그램에..
과거 오래된 문서화 자료나 기타 패키지의 폴더 내용을 쭉 트리 구조로 리스팅 해 놓으면 검색 및 분석에 용이한 경우가 있습니다. 개발자에 따라 여러 방법이 있겠지만 검색 및 분석 방법으로 생각나는 것을 대충 정리해보면 윈도우 탐색기로 폴더를 클릭 하면서 찾아보거나콘솔에서 cd 명령을 입력하면서 보거나find나 grep 기타 검색도구로 특정 단어로 검색할 수 도 있습니다. 다음의 방법들은 전체적인 디렉토리 및 폴더의 그림을 확인하는 방법들 입니다. ■ 윈도우 환경 윈도우 환경을 쓰는 분은 간단히 tree /F라고 입력 하면 위의 그림과 같이 트리구조로 파일명까지 출력합니다. 결과를 파일로 저장하시려면 tree /F > result.txt 와 같이 명령을 이용하면 됩니다. ■ 리눅스 환경 리눅스 환경에서도 ..
무텍스(Mutex)는 MUTual EXclusion(상호배제)의 의미이며, 특정 시점에 프로세스 또는 스레드 간에 특정 자원이나 역할에 대해 우선권을 갖는 문제를 교통 정리하기 위해서 시스템에서 제공하는 자원 입니다. 유닉스/리눅스나 윈도우 모두 대표적인 IPC(Inter Process Communication) 자원으로 공유메모리, 메시지 큐, 세마포어를 제공하는데 세마포어와 유사한 개념이라고 할 수 있습니다. 자원의 우선권을 획득하기 위해 줄서고, 자원 사용이 끝나면 반환하는 형태는 Mutex나 세마포어나 유사하다고 볼 수 있습니다. 여러 프로세스나 스레드가 동시에 작업을 할 수 없는(동시에 작업을 한다면 문제가 생기는...) 부분에 Mutex를 배치함으로서 시스템 전체적으로 정확한 작업을 할 수 있..
파이썬이나 C#은 딕셔너리 타입을 지원하는데 딕셔너리 타입은 C# 프로그래밍의 유연성을 높여 주는 상당히 유용한 도구입니다. Dictionary cntlidx = new Dictionary(); if (cntlidx.ContainsKey(idxname) && cntlidx[idxname] >= 0) // control exist { cntlidx[idxname] = (short)Allclient.Count; //...... } 위의 예제는 String 타입의 키와 short 타입의 값을 가지는 딕셔너리를 정의하고 사용하는 코드입니다. 딕셔너리를 정의한 다음에는 cntlidx["A001"] = 10; 처럼 딕셔너리에 값을 저장하거나 갱신할 수 있습니다. 만약 딕셔너리에 키가 존재하지 않는 데이터를 rst ..
C#에서 딕셔너리, 큐, 리스트 등 다양한 데이터 집합 클래스를 지원하지만 배열만큼 성능을 보장하는 데이터 타입은 없습니다. 한가지 데이터 타입을 가지고 인덱스로 각 원소를 접근하는 단순한 사용법을 가집니다. 배열을 다양한 용도로 사용하다 보면 초기화 필요성이 생기는데 그 필요성을 크게 두가지로 나누면배열을 상수처럼 정적인 데이터로 사용하기 위해서 실제 데이터 입력하는 경우가 그 첫번째이고 다른 한가지는 동적으로 배열을 사용하는 경우 0이나 널 값등으로 초기화하는 사례를 들 수 있습니다. String[] statstr = new String[] { "설정", "설정 오류", "시작하지 않음", "정상 동작중", "연결중", "비정상 종료" }; public class DICObj { public stri..
server=localhost;database=testdb;port=33000;user=public;password=pubpubserver=127.0.0.1;user id=root; password=wservice; database=mysql; pooling=falseUser=workuser; Password=pw!@;Database=c:\tmp\mydb.fdb;DataSource=localhost;Port=3050;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE)));User Id=system;Password=SYSPASS;Server=myServerName\m..
배열을 인수로 전달받아 기준이 되는 배열과 동일한지 검사하는 방법은 함수를 통해서 처리하는 방법과 시스템에서 제공하는 메소드를 통해서 수행하는 방법이 있습니다. - 두 배열의 길이가 동일한지 비교- 배열의 길이 만큼 각 원소가 동일한지 비교 위의 방법을 수행하는 간단한 함수를 만들어도 되지만 타입이 달라지는 것에 대응하기 어렵고 굳이 시스템에서 제공하는 메소드가 있는데 별도의 작업을 할 필요는 없지요. using System.Security.Cryptography; byte[] conf_md5 = null; bool md5check(byte[] confmd5) { using (MD5 md5Hash = MD5.Create()) { conf_md5 = md5Hash.ComputeHash(Encoding.UT..
프로그램의 종류를 살펴 보면 아파치 웹서버나 크롬 브라우저, 윈도우 운영체제 처럼 서로 다른 언어 환경에도 불구하고 사용자 인터페이스만 다를뿐 동일한 기능과 성능을 발휘하는 범용 프로그램이 있는 반면 프로그램 로직 구성에 있어서 언어별 전문 용어가 사용 될 수 밖에 없는 프로그램들이 있습니다. 다양한 수식이 적용되는 회계 프로그램이나 대형 플랜트 관리 프로그램, 회사 업무 관리 프로그램등을 예로 들 수 있습니다. 이런 프로그램들의 내부를 살펴보면 업무 흐름을 표현하는 비즈니스 로직은 코드를 처음 보는 사람들에게는 거의 암호 수준이라해도 과언이 아닐 정도입니다. 콩글리시를 최소화하고 변수명, 함수명을 정확한 영어로 기술하여 그나마 가독성 있게 작성한 경우라면 다행이지만 이런 경우 마저도 영어를 읽을줄 아는..
웹 페이지에서 다양한 서식을 개발자가 의도하는대로 화면에 표시하려면 통상 HTML 태그 중에서 태그를 활용해서 테이블 형태로 페이지를 작성합니다. 행은 열은 태그를 사용하여 표현하죠. 윈도우 폼에서도 웹페이지의 테이블 형태로 표현하는 것과 같은 방식을 사용할 수 있는데 테이블 레이아웃을 사용하는 것입니다. HTML 처럼 폭 지정을 백분율로도 할 수 있고 고정값으로 설정하거나 자동 조정하도록 할 수도 있습니다. 폭을 자동 조정해주므로 다국어 언어를 적용하더라도 양식이 크게 흐트러지지 않고 실행되도록 할 수 있습니다. 비주얼스튜디오의 오프라인 매뉴얼 중에 "연습: 데이터를 입력할 수 있는 크기 조정 가능한 Windows Form 만들기" 참조해서 진행했습니다. 상단의 .NET Framework 4를 확인하면..