일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 경기도 버스정보시스템
- delegate
- 버스 API
- 공공 데이터 포털
- DrawEllipse
- WPF
- GDI+
- 디자인 패턴
- TDD
- Winform
- eventargs
- NUnit
- C# MDB
- MDB Select
- Json.NET
- JSON
- C# 파일 암/복호화
- c#
- 시
- 경기도 버스
- solid
- MVC
- eventhandler
- sqlite3
- 객체지향
- MDB Connect
- DrawRectangle
- C# MDB Handle
- Excel Cell Format
- Cell Border Style
- Today
- Total
목록분류 전체보기 (169)
White Whale Studio
객체지향 개발을 위해서는 캡슐화를 잘 하라고 합니다. 캡슐화는 내부적으로 기능 구현을 어떻게 한건지 숨기는 것을 말합니다.메서드 내부에 기능구현이 변경되더라도 해당 메서드를 호출하는 코드에서는 영향을 받지 않도록 또는 최소화하기 위함입니다. 절차지향적 구현방법과 객체지향적 방법으로 살펴보겠습니다. 123456789101112 // 절차지향 // item.getExpiryDate() => 만료 일자 데이터를 가져옴 if (item.getExpiryDate() != null && item.getExpiryDate().getDate()
템플릿 메서드 패턴은1. 실행 과정을 구현한 상위 클래스2. 실행 과정의 일부 단계를 구현한 하위 클래스로 구성됩니다. 1.번의 상위 클래스는 기능 구현 시 필요한 각 단계를 정의하며, 일부는 추상 메서드로 구성됩니다.이 추상 메서드는 하위클래스에서 구현됩니다. 간단하게 그림으로 살펴보면, 요런 모양이 되겠네요. 정리 해보면,상위 클래스는 공통기능을 구현한 템플릿 메서드와 하위 클래스에서 개별적으로 기능 구현을 할 수 있도록 규약을 지정하는 추상 메서드로 구성이 됩니다.하위 클래스는 이 상위 클래스를 상속받아서 공통기능인 템플릿 메서드는 상위 클래스의 흐름을 따르고 하위 클래스에서 개별적으로 작성해야하는 추상 메서드의 실제 구현을 수행하게 되겠네요.우선 예제로 음료를 만드는 과정으로 해당 패턴을 살펴볼까..
전략 패턴의 중점- 알고리즘을 추상화 -> 전략(Strategy) - 알고리즘을 사용하는 책임을 가지고 있는 콘텍스트(Context)에서 알고리즘(전략)을 분리하는 설계방법- 흐름 : Client가 전략을 고른다.(어떤 전략을 쓸까나~) → 선택된 전략을 Dependency Injection으로 Context에 넘겨준다. → Context는 전달받은 전략으로 초기화하여 필요한 자원(프로퍼티, 메서드 등)을 사용한다. 전략 패턴을 사용해서 콘텍스트 코드의 변경없이 새로운 전략을 추가, 수정이 용이하다는 점이다.필요한 전략을 직접 선택해서 Context에 넘겨주기 때문에 Context에서는 전략과 관련된 부분에서는 코드를 수정하는 수고를 하지 않아도 되는 것이다.주로 if-else를 사용하면서도 비스무리한 ..
Nunit은 프로그램 개발 시 유닛테스트를 위한 닷넷 테스트 툴입니다. Visual Studio의 버전이 높아짐에 따라서 Addin 방식으로 이쁘게 프로그램에 올라가서 연결이 되는데기존 버전인 2010은 지원이 안되더군요. 기존에 사용하던 방식에 대해 상세하게 설명된 곳이 없어 이렇게 포스팅을 해봅니다..우선 Nunit 홈페이지에 들어가서 설치 파일을 다운받아 설치합니다.http://www.nunit.org/index.php?p=download저는 2.6.4버전을 받았습니다.설치를 하게 되면 C:\Program Files (x86)\NUnit 2.6.4 경로에 설치가 기본으로 되고 해당 폴더 하위에 툴, DLL 과 문서가 포함되어 있습니다.VS2010에서 사용을 하기 위해서는 우선 DLL을 추가해야합니다..
MyBatis(iBatis)는 MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results. MyBatis can use simple XML or Annotations for configuration and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to database records.라고 ..
인터페이스(Interface)에 대한 탐구를 진행합니다. 인터페이스는 많이 들어보기는 했습니다만, 실제적으로 사용하기에는 개념자체가 접근하기가 어렵고 작은 프로젝트로 구현되는 프로그램에서 굳이 사용하지 않아도 되었기에 주먹구구식으로 진행되는 개발시에는 굳이 사용하지 않았습니다. 그러나 객체지향프로그래밍(OOP)을 위해서 이것저것 학습을 하던 차에 인터페이스에 대한내용을 재확인하고 그 유용성에 대해 깨닫게 되었습니다.우선 인터페이스의 장점은 여러가지가 있다고 하는데부끄럽게도 제가 알고 있는 장점은 겨우 2가지 정도입니다.1. 개발자들간의 개발 규약2. 인터페이스를 상속받는 클래스는 형식이 무엇이 되든간에 인터페이스 형식으로 타입 캐스팅이 되어서 클래스 사용하기가 엄청 쉽다. 우선 인터페이스의 특징을 살펴보..
가끔 C#에서 UI를 설정할 때 ProgressBar를 사용하거나 UI를 동적으로 구성하는 경우에 기존 부모 컨트롤에서 자식컨트롤을 소유하고 있어서 UI 우선도 순위에서 밀림으로 인해 UI의 변경사항이 제대로 적용되지 않는 경우가 있습니다.이런 경우 Dispatcher를 사용하여 우선순위를 우선으로 하여 필요한 작업을 수행하는 방법을 사용할 때 다음과 같은 코드를 사용합니다. 우선 using System.Threading; 추가 해주셔야 합니다. Dispatcher.Invoke(new Action(delegate { _progressBar.Value = percent; lbl_progress.Content = percent + "/" + 100; System.Windows.Forms.Application..
가끔가다 프로그램 실행시 나타나는 오류입니다. 위와 같은 메시지를 뿌리는데 해결방법은 패치를 설치하는 방법이 있습니다. 마이크로 소프트 홈페이지에서 버전 별로 다운로드 가능한데http://www.microsoft.com/ko-kr/ Microsoft Visual C++ 2010 재배포 가능 패키지 로 검색하시면 됩니다.버전을 맞추시고 OS Bit 수에 맞는 버전을 찾으시면 됩니다.파일명은 vcredist_x86_vS2010 와 비슷하게 구성됩니다. 2008 버전과 2010버전은 첨부합니다.
C# 에서 이벤트 핸들러를 만들때는 아래와 같이 public delegate void OnClickEventHandler(bool _Click); // 핸들러를 선언하고 public event OnClickEventHandler OnClickEvent; // 해당 핸들러를 사용하는 이벤트를 또다시 선언합니다. 그리고 해당 클래스에서 사용할때는 if (OnClickEvent != null) OnClickEvent(_Click); 위와 같은 방식으로 이벤트에 파라미터를 넘기거나 해서 이벤트를 핸들링합니다. 안드로이드에서 사용하는 이벤트 리스너 또한 비슷합니다.저같은 경우는 달력을 구성하는 MonthView 내에 DayView가 여러개 포함이 되는데 DayView에서 OnClickEvent를 설정하면Custo..
해당 포스팅에서는FTP 서버에 있는 파일을 삭제하는 방법을 살펴볼겁니다..소스는 다음과 같습니다.겁나 간단합니다. public bool DeleteFiles(string filename) { try { string URI = server + "/" + filename; // 서버와, 파일명이 조합된 URL을 넘기고 System.Net.FtpWebRequest ftp = GetRequest(URI); ftp.Method = System.Net.WebRequestMethods.Ftp.DeleteFile; // Method를 파일 삭제로 변경하고 FtpWebResponse response = (FtpWebResponse)ftp.GetResponse(); // Response 호출!! Console.WriteL..