'분류 전체보기'에 해당되는 글 189건

  1. 2012.05.23 Midnight Peach 배포
  2. 2011.11.02 Application State 연습
  3. 2011.11.02 뷰스테이트 : 퍼포먼스 오버헤드를 줄이는 다양한 방법
  4. 2011.11.02 ASP.NET 세션 탐험
  5. 2011.11.01 ASP.NET 캐시 탐험
  6. 2011.11.01 ASP.NET 애플리케이션과 페이지 수명 주기
  7. 2011.11.01 웹 애플리케이션 노트 (ASP.NET, AJAX 포함)
  8. 2011.11.01 초보자를 위한 자바스크립트
  9. 2011.02.11 생성된 코드로 보는 Midnight Peach 소개
  10. 2010.11.03 신규사업팀에서 도움을 요청합니다.

Midnight Peach 배포

Midnight Peach 2012. 5. 23. 00:58

 

2012.6.4 업데이트

MP의 소스를 공개하면서 배포 방법도 변경되었습니다. Codeplex 소스 호스팅과 팀 멤버 모집 포스트를 참고하십시오.

3년 이상 필드에서 사용하며 계속 다듬었더니 이제 공개할 만한 수준이 된 것 같습니다.
오래 기다리셨습니다.

현재 버전은 3.0.12 입니다. 그래서 처음 설치하면 3.0.12 버전이 설치가 되는데, 재실행 하면 최신 버전으로 업데이트가 됩니다.

 

Midnight Peach에 관한 예전 포스트들은 1.X대 혹은 2.X대 버전에 맞춰진 것들이 많아, 현재 버전과 맞지 않는 내용이 많습니다.
이제 공식적으로 배포도 시작하고 했으니, 가급적 빨리 업데이트를 하도록 하겠습니다.

:

Application State 연습

카테고리 없음 2011. 11. 2. 11:33
http://www.codeproject.com/KB/aspnet/ApplicationState.aspx

ASP.NET 상태 관리 메커니즘 중 하나인 Application State 에 관한 정리.

:

뷰스테이트 : 퍼포먼스 오버헤드를 줄이는 다양한 방법

RTFM/ASP.NET 2011. 11. 2. 11:16
http://www.codeproject.com/KB/viewstate/ViewStateTricks.aspx

뷰스테이트의 크기를 줄이는 두 가지 방법에 대해서 설명을 합니다.

1) 뷰스테이트를 압축하여 전송하는 방법
2) 뷰스테이트를 서버에 저장하고 클라이언트로는 전송하지 않는 방법

두 방법 모두 Page.LoadPageStateFromPersistenceMedium 메서드와 Page.SavePageStateFromPersistenceMedium 메서드를 각각 오버라이드 하여 구현합니다.

추신 : 두번째 방법의 경우라면, 뷰스테이트는 더 이상 클라이언트 사이드 상태저장 메커니즘이라고 할 수 없겠네요.
:

ASP.NET 세션 탐험

RTFM/ASP.NET 2011. 11. 2. 11:07
http://www.codeproject.com/KB/session/ExploringSession.aspx

역시 세션에 관한 탁월한 정리.
보너스인 웹 가든, 웹 팜, 로드 밸런서와 세션과의 관계에 대한 설명도 유용합니다.
:

ASP.NET 캐시 탐험

RTFM/ASP.NET 2011. 11. 1. 17:00
http://www.codeproject.com/KB/aspnet/ExploringCaching.aspx

ASP.NET 의 캐시에 관한 탁월한 정리
:

ASP.NET 애플리케이션과 페이지 수명 주기

RTFM/ASP.NET 2011. 11. 1. 14:36
http://www.codeproject.com/KB/aspnet/ASPDOTNETPageLifecycle.aspx


ASP.NET 의 페이지 수명 주기에 대해 상세하지만 동시에 (도해를 이용하여) 간결하게 설명을 해 놓았습니다.

ASP.NET 의 요청 처리를 설명하면서 MHPM (Module, Handle, Page and Module event) 라는 신조어를 만든 게 흥미롭습니다.
:

웹 애플리케이션 노트 (ASP.NET, AJAX 포함)

RTFM/웹 일반 2011. 11. 1. 14:27

http://www.codeproject.com/KB/aspnet/NoteOnWebApplications.aspx

1) (데스크탑 애플리케이션에 대비되는 개념으로서) 웹 애플리케이션의 개념, 2) 클라이언트/서버 사이트 프로그래밍 모델, 3) REST 의 개념와 의의, 4) HTTP 프로토콜에 대한 소개 등이 종합적으로 정리되어 있는, 말 그대로 웹 프로그래밍에 입문하는 개발자들이 꼭 알아야 하는 기본 지식이 망라되어 있습니다.

기본에 대한 중요성은 역시 아무리 강조해도 지나치지 않은 법이 아닐까 합니다.

추신 : 웹 개발자를 위한 웹을 지탱하는 기술 과 함게 읽으면 시너지가 있을 듯 합니다.

:

초보자를 위한 자바스크립트

RTFM/웹 일반 2011. 11. 1. 14:03

http://www.codeproject.com/KB/scripting/jsbeginner.aspx

코드 프로젝트의 웹 개발 첫걸음 시리즈 중 하나인 자바스크립트 편입니다.
아주 practical 한 관점에서 정리가 잘 되어 있는 듯 합니다.
(자바 스크립트 언어 자체에 대한 설명은 아닙니다.)
:

생성된 코드로 보는 Midnight Peach 소개

Midnight Peach 2011. 2. 11. 10:19

[주의]
이 글은 MP의 현재 버전 (3.X)에 맞지 않습니다.

단순 참고용으로만 활용하십시오

Northwind의 몇 개의 테이블을 가지고 진행을 해보겠습니다.

아시다시피 Northwind DB에는 고객, 주문, 제품 테이블들이 있는 이들은 아래와 같은 관계를 가지고 있습니다.

그리고 페이징을 지원하며, 제품 이름과 고객 이름을 검색 조건으로 하고 제품 정보를 반환하는 GetForCompany 라는 메서드가 있다고 가정을 해봅시다.

간단하지만 이 쿼리에는 몇 가지 이슈가 포함되어 있습니다.

A. 여러 단계의 조인(inner / outer)을 사용합니다.

B. 검색 조건에 따라 서로 다른 쿼리를 생성하는 이른바 동적 쿼리가 포함되어 있습니다.

C. 엔터티의 모든 멤버가 아니라 특정 멤버만 반환하는 프로젝션이 필요합니다.

D. 페이징을 지원합니다.

통상적으로 윈폼 환경에서는 클라이언트(윈폼)과 서버(DB) 사이에 미들티어(WCF 서비스 등)을 두게 됩니다.

따라서 위 메서드를 호출하기 위해서는 위 메서드를 WCF 서비스로 만들고 클라이언트에서 이를 호출하여야 합니다.

MP를 이용하면 이 메서드를 3 티어 환경에서 사용하기 위한 코드를 자동으로 생성할 수 있습니다.

즉, 서비스 메서드 등을 따로 만들 필요가 없이 아래와 같이 클라이언트에서 바로 이 메서드를 호출하면 됩니다.

MP는 WCF 서비스가 있는 경우와 없는 경우(즉, 클라이언트가 DB 서버에 바로 연결되는 경우)를 모두 지원하며, 아무런 코드 수정 없이 두 경우를 자유롭게 변경할 수 있습니다.
위 코드와 같이 릴리즈 모드에서만 BizRepository.ActivateService 메서드가 호출되도록 구성해놓으면, 디버그 모드에서는 DB에 바로 접속을 하고, 릴리즈 모드에서는 WCF 서비스를 사용하도록 할 수 있습니다.

아래 그림은 각 경우에 있어서 메서드들 간의 호출순서를 표현한 것입니다.

하늘색은 DB에 바로 접속하는 경우이며 주황색은 WCF 서비스를 경유하는 경우인데, ‘경계통과’ 라 함은 각 경우에 있어 실행 흐름이 클라이언트에서 서버로 넘어가는 것을 말합니다.

그림에서 보다시피 두 경우는 ProductBiz에서 갈라지는데, 이는 ProductBiz가 ProductData 객체를 가지고 있느냐, 아니면 ProductData를 상속 받은 ProductServiceData 객체를 가지고 있느냐에 달려 있습니다.

이를 결정하는 것이 바로 BizRepository.ActivateService 메서드가 하는 일입니다.

 

위 그림을 염두에 두고, MP가 생성하는 코드들을 살펴보면 다음과 같습니다.

1. 각 엔터티에 대해 30가지 이상의 기본 메서드를 생성합니다.

A. 조건식과 정렬식과 페이징을 지원하는 Get 메서드 (8개의 오버로드)

예컨데, ‘재고 수가 10개 이상인 상품을 이름순으로 5개를 가져오는 쿼리’는 아래와 같은 람다식을 사용하면 바로 실행할 수 있습니다.

B. 엔터티의 PK를 검색 조건으로 하는 GetSingle 메서드

C. 조건식과 정렬식을 지정하여 첫번째 혹은 마지막 원소를 반환하는 메서드 (각 4개의 오버로드)

D. 조건식에 해당하는 엔터티의 갯수를 구하는 메서드 (4개의 오버로드)

E. 하나의 엔터티를 삽입/수정/삭제하는 메서드 (각 2개의 오버로드)

F. 트랜잭션을 지원하며 엔터티의 컬렉션을 삽입/수정/삭제하는 메서드 (각 2개의 오버로드)

2. 각 엔터티에 대해 다양한 헬퍼 코드를 생성합니다.

A. 기본값이 지정된 생성 메서드

B. 복사 메서드

C. 부분 메서드를 사용하여 재정의가 가능한 ToString 메서드

D. IEditableObject 인터페이스 구현

E. 속성 이름에 대한 상수값과 열거형 타입

F. 엔터티의 PK를 사용하여 엔터티의 동등성을 비교하는 IEqualityComparer 인터페이스를 구현

3. WCF 서비스를 위한 코드를 생성합니다.

A. 서비스 메서드 (ProductService.GetForCompany)

B. 서비스 메서드를 호출 래퍼 (ProductServiceData.GetForCompany)

C. 비지니스 레이어 메서드(ProductBiz.GetForCompany)

:

신규사업팀에서 도움을 요청합니다.

미분류 2010. 11. 3. 21:40

로앤비 툴즈

아시는 분은 아시고 모르시는 분은 모르시는 ‘로앤비 툴즈’ 라는 프로그램이 있습니다.

신규사업팀에서 쎄빠지게 개발하고 사우회에 헌증한, 우리 회사에서 (그럭저럭) 요긴하게 쓸 수 있는 조그만 프로그램들의 모음인데요,

SMS를 보낸다거나, 대량의 비용청구용지를 편리하게 작성한다거나 하는 등의 일을 할 수 있지요.

신규사업팀에서는 왜 이런 걸 만들었을까요?

사우회 사업을 ‘신규’ 사업이라고 착각을 해서? 아님 애사심이 남다르거나 할 일이 없어서?

사실은, 로앤비 툴즈를 개발하는 일은 신규사업팀의 주 업무인 로피스 개발의 일부분이었습니다.

무슨 말인고 하니, 로앤비 툴즈는 로피스의 샘플 애플리케이션이었다는 것입니다.

즉, 로앤비 툴즈를 만들면서 로피스의 근간이 되는 프레임웍을 다듬고, 새로운 기능(SMS 발송, 리포트 등)을 로피스에 탑재하기 전에 먼저 로앤비 툴즈에서 (사용자) 테스트를 해보는 식이지요.

(샘플이라고는 하지만 사실 아키텍쳐 상으로는 로피스 보다 로앤비 툴즈가 더 뛰어납니다. 규모가 작으니까 아키텍쳐나 다른 테크닉에 좀 더 집중할 수 있습니다. 제 경험에 의하면 이런 식의 샘플 애플리케이션을 먼저 작성해 보는 것이 프로젝트의 성공에 큰 기여를 하는 경우가 많았습니다.)

 

안사

그러나 안타깝게도 로앤비 툴즈는 널리 쓰이지 못했습니다.

물론 완성도의 미흡이 가장 큰 이유이겠으나, 그 외에도 로앤비 툴즈를 사용하기 위해서는 먼저 닷넷 프레임웍 이라는 무거운 프로그램을 설치한 후에 다시 로앤비 툴즈를 설치해야 한다는 번거로움도 일조를 하지 않았나 하는 생각이 듭니다.

그래서 이번에는 로앤비 툴즈의 웹 버전을 개발해 보고자 합니다.

(공교롭게도 신규사업팀이 곧 로피스를 위한 쇼핑몰 프로젝트를 시작할 것이라는 별로 중요하지 않은 이야기는 하지 않겠습니다.)

 

이 새 프로그램의 개발 단계에서의 코드명은 "안사” 라고 하는데요.

현재는 프로토타입 정도만 작성이 되어 있습니다.

아직 개발이 들어가지 않은 시점에서 프로토타입을 공유하고, 이에 대해 사우들의 의견을 들어보고자 합니다.

안사의 프로토타입은 아래 링크를 클릭하면 보실 수 있습니다.

http://d.lawnb.com/Ansa.Prototype/default.html

 

프로토타입 개발 도구로는 MS 사의 Sketch Flow 라는 제품( 익스프레션 블렌드에 통합)을 사용하였습니다.

이 도구에 대해서는 따로 설명하기 보다 위에 있는 안사의 프로토타입을 직접 보시기 권장합니다. 아마 좋아하실 거에요.

(그리고 이 시점에서, 앞으로 신규사업팀의 모든 프로젝트는 먼저 샘플 앱부터 만드는 걸 원칙으로 하고, 그 개발도구로는 Sketch Flow를 사용하기로 했다는, 역시 별로 중요하지 애기도 할 필요는 없겠지요.)

 

안사의 주요 기능 소개

image

SMS 주소록

SMS 를 웹에서 바로 보내고, 보낸 내역과 전화번호를 관리할 수 있는 기능입니다.

SMS 발송 화면

image

주소록

image

발송내역

image

오거서

웹 상에서 사내 도서관의 책을 검색하고 대출/반납 기록을 할 수 있습니다.

관리자는 도서의 ISBN을 입력하는 것 만으로 신착 도서의 정보(제목, 저자, 출판사 등)을 편리하게 입력할 수 있습니다.

도서 검색 & 대출

image

도서 상세 화면

image

인회씨

새로 변경된 ‘법인카드 사용내역 및 지급요청서’를 엑셀을 띄우지 않고 웹에서 바로 작성할 수 있습니다.

작성한 목록을 바로 엑셀 파일로 만들어 인회씨의 메일로 쏘아주는 기능이 포함되어 있어 더욱 편리합니다.

로앤비 툴즈에 있던 ‘(간지) 미옥씨’의 업그레이드 버전이라고 할 수 있는데, 즉 ‘미옥씨’가 업그레이드 되어 ‘인회씨’가 됐다고 할 수 있겠습니다.

사족 : 예전 미옥씨에게는 이름 사용에 대한 허락을 득하였는데, 인회씨에게는 아직 득하지 못하였습니다. 혹 프로그램의 이름이 변경될 수도 있다는 점 양해 부탁 드립니다.

[지급요청서 입력]

image

커뮤니티

여기는 그냥 평범한 게시판입니다.

우리 회사 사원들의 문화 생활에 도움을 주기 위한 엔터테인먼트 전용 게시판이라고 할 수 있겠네요.

대충 아래 스샷과 같은 글들이 올라올 것으로 기대합니다.

[중요 : 익명 작성 가능합니다.]

image

 

피드백

본 프로토타입에 대한 의견은 물론 자유로운 형태로 표현하셔도 되지만, Sketch Flow 라는 도구 자체에 피드백을 위한 훌륭한 기능이 내장되어 있습니다.

위 링크를 클릭하여 브라우저에서 프로토타입이 실행된 상태에서, 화면 좌측 하단에 ‘내 사용자 의견’ 이라는 패널이 있습니다.

여기에 사용자 의견을 기재합니다.

image

필요하다면 잉크 혹은 형광펜을 사용하여 화면에 직접 가필을 할 수도 있습니다.

image

의견을 모두 적었으면 ‘사용자 의견 내보내기…’를 선택하여 작성한 의견을 파일로 저장합니다.

image

저장한 파일을 메일 등으로 보내 주시면 되겠습니다.

 

돌발퀴즈

여기까지 긴 글 읽느라 수고하셨습니다.

그 노고에 보답하는 의미에서 돌발 퀴즈를 하나 준비했습니다. 맞추신 분께는 사우회에 특채로 들어오실 수 있는 기회를 우선 제공하겠습니다.

문) 다음의 이 프로그램의 코드명인 ‘안사’가 의미하는 바는?

1. 이 따위 프로그램은 절대 안사

2. 기순 사장님은 용하지 마세요.

3. 기순 사장님 랑해요.

4.Ansa is not ansa

: