NHControls

  제 홈페이지(http://hwangji.kr)의 소스와 홈페이지를 만드는데 사용한 서버 컨트롤(NHWebCtrls)의 소스 두가지 모두를 풀공개합니다.   별로 좋은 자료는 아니지만 ASP.NET 관련 홈페이지 및 서버 컨트롤에대한 소스가 필요하신 동료분들이나 후배님들이 한분이라도 계실지 모른다는 생각에 이렇게 공개합니다. 소스 내용은 2007.6.25시점의 원본과 같으며 이미지파일만 일부 제거되었습니다.



홈페이지소스     서버컨트롤소스
* 기본조건 Visual Web Developer Express 또는 Visual Studio가 있어야 합니다.
* 이 설명서의 중요용어
-소스 : 여기서의 소스란 서버 컨트롤(NHWebCtrls)의 소스와 홈페이지의 소스 두가지로 구분됩니다.
1. 홈페이지 소스는 마음껏 활용 가능
2. 서버컨트롤 소스는 약간의 제한 사항 존재(라이센스관련 참조)
-출처 : 소스를 제작한 제작자의 최소 정보(이름, 홈페이지) 이상 표기.
* 특  징 * 1. 모든 것을 서버 컨트롤로 제작하여 마우스로 드래그만하면 원하는 위치에 게시판, 배너등을 생성 가능.
2. 게시판등의 컨트롤 주변과 소스내에 제작자인 본인의 로고가 없음.
3. MySQL, MSSQL, Oracle 모두를 지원할 예정이었으나 현재 MySQL, MSSQL만 지원하고 Oracle은 추후 요청자가 있을 경우 업데이트 예정
- MSSQL은 바로 사용가능.
- MySQL은 MySql.Data.dll라는 닷넷용 라이브러리 파일만 bin폴더에 있으면 사용가능(MySQL홈피에서 다운가능)
- Oracle은 오라클클라이언트가 설치되어야합니다. (현재 미완성상태지만 기본 소스가 이미 완성되어 파라메터등과 select문 몇가지만 소스수정하면 사용가능. 아직 쓸일이 없어서 업데이트 안함.)
* 라이센스관련 *
GNU니 뭐니 이런거 상관없이 제방식대로 적어봅니다.
가능: 1. 서버 컨트롤을 사용하여 제작된 홈페이지 소스는 마음껏 재배포 가능.
2. 서버 컨트롤 소스를 개조하셔서 용도에 맞게 사용 가능.
3. 개조하여 빌드된 서버컨트롤 결과물(NHWebCtrls.dll)은 재배포 가능.
(단, 원본의 출처를 재배포 받는 사용자가 알 수 있게 명기할 것. 개조되었다면 원본과 개조자의 출처 동시 명기)
4. 사용자 스킨 재배포 가능.
5. 서버컨트롤(NHWebControls)에 가치를 매기지 않고 음란사이트가 아닌한 어떠한 사이트라도 가능.
불가능: 1. 서버컨트롤의 원본소스 및 개조소스의 재배포 금지.
2. 원본이든 개조든 서버컨트롤소스 자체에 가치를 매겨서 제 3자에게 판매 금지.
(예: 설치를 제3자에게 할경우 직접 제작한 홈페이지 소스에대한 댓가나 수공에대한 설치비는 받을 수 있으나, 서버컨트롤 소스에 가치를 매겨서 설치비에 추가될 수는 없음. ^^ 홈페이지소스의 가치인지 서버컨트롤의 가치인지 명확히 구분하는 기준은 없지만, 형식상 이렇게 합시다.^^ 가치를 매기는 타당성만 있으면 됨.)
* 컨트롤 설치 *
서버 컨트롤 설치는  기본적인 MS의 Visual 계열의 툴을 웬만큼 사용해보신분은 많이들 설치 해보셨을겁니다. 따로 시간내서 웹컨트롤 게시판에 올리도록 하겠습니다.
* 컨트롤 사용법 *
1. 새 웹 사이트를 생성시에 프로젝트 저장위치를 로컬IIS로 하자.
(반드시 그러지 않아도 되지만, 사용자그룹,테이블명등이 자동으로 디자인시에 보이게 하려면 필요하다.)
2. 환경설정이 필요하므로 NHBoardAdmin을 먼저 페이지에 올려놓고 웹브라우저에서 환경설정(DB).
3. 기본설치작업이 나오게되면 설명에따라 데이터베이스, 관리자 암호, 우편번호 설정을 하자.
4. 회원그룹, 게시판 설정을 차례로 하자.(필요한 만큼 추가하면 됨. 회원그룹은 하나만 있어도 되며, 게시판은 필요한 만큼 추가하자)
5. 해당 프로젝트의 Bin폴더에 nhbbs.nhs가 생성되는데 이것이 디자인 모드에서 솔루션 탐색기에 보이도록 기존항목추가로 프로젝트에 넣어 두자.
(이것을 안하면 디자인 모드에서는 컨트롤이 에러발생되어 보인다. 실제 컴파일은 문제 없지만 미관상 해결하자.)
6. 나머지는 구미에 맞게 알아서 컨트롤을 사용하면 된다.
* 서버컨트롤 리스트 *
1.  NHBoardAdmin: 설정관리
2.  NHBoard: 게시판
3.  NHBoardBanner:배너
4.  NHBoardImage: 그림게시판
5.  NHBoardLogIO: 로그인
6.  NHCounter: 카운터(파일)
7.  NHDBCounter: 카운터(DB)
8.  NHMail: 이메일(전송관련만 적용)
9.  NHMenu: 메뉴
10. NHOutLine: 테두리
11. NHOutFrame: 테두리(제목가능)
12. Popup: 팝업창(window형, Layer형등)
13. NHRSSViewer: RSS

이상 13개 기본 서버컨트롤과 이를 보조하는 하위 클래스들이 존재합니다.
  2007년 6월 25일 초기판인 NHWebCtrls 서버 컨트롤입니다. 환경설정과 관리부분이 지저분해서 다듬어 공개하려 하였으나 업무에 차질이 생길까 두려워 여기까지만 합니다. 공부하시는데 많은 도움이 되시길 바랍니다.
  실무에서도 사용할 만한 주요 내용들도 많겠지만, 좋지 못한 부분도 있을겁니다. 그런 부분을 알아채는 것이 바로 공부하시는 분들의 몫입니다. 가령, 전 StringBuilder를 잘 사용하지않고 + + +남발에 버릇이 되어 소스를 보시면 그런부분이 많이 보일겁니다. 어떻게 하면 효율적인지를 공부해보도록 하세요. 하지만, 웬만큼 사용하는 기술은 한번씩 사용해보느라 같은 역할인데도 다른 알고 리즘으로 시도한 흔적도 있을겁니다. 아무쪼록 공부에 도움이 되셔서 나중에 멋지고 재미난 프로그램을 만드시면 저한테도 하나 선사해 주시기 바랍니다.

* 참고로 게시판 에디터부분은 이지에디터를 사용하였으며 RSS의 기본클래스는 인터넷상에 RSS구조를 요약해 놓으신 이름 모르는 어느 기인님과 taeyo.net의 김태영님 강의에서 참조하여 양념을 쳤습니다.
이글을 보실리 없으시겠지만, 이상 세분(?)께 대단한 감사를 이글에서나마 올립니다.
  아울러 홈페이지 소스를 보시고 버그나 보안약점이 발견된다면 홈페이지 해킹할려고 하지 마시고 이메일 주시면 감사하겠습니다. 보안관련 버그가 아니면 버그게시판에 올려 주시면 감사하겠습니다.^^
2007년 6월25일 강원도 태백에서 남상기 올림.