MVC 패턴은 GUI를 지닌 프로그램에서 사용하는 디자인 패턴이다.

View는 GUI drawing을
Controller는 버튼 클릭시 발생하는 이벤트에 대한 처리나 작동(Action/behavior)를
Model은 이러한 View와 Controller에 대한 상태머신을 구현한다.

위키피디아의 내용을 보면.. MFC나 JFC 등에서 사용하는
핸들러 기반의 message/event driven progam이라고 해야하나?
GUI 자체는 MFC에서 XML나 별도의 DAO를 통해 구성하게 되고
GUI는 Model의 제어를 통해 Control을 위해 eventhandler로 넘겨주게 된다.

즉..
눈에 보이는 수많은 구현 부분은 View 와 Controller이고
윈도우 시스템을 위한 Win32api 프레임워크는 Model이라고 보여진다.

  • controller can send commands to the model to update the model's state (e.g., editing a document). It can also send commands to its associated view to change the view's presentation of the model (e.g., by scrolling through a document).

[링크 : http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
[링크 : http://msdn.microsoft.com/en-us/library/ff649643.aspx

'Programming > 소프트웨어 공학' 카테고리의 다른 글

코딩 룰 & 정적분석 툴  (0) 2015.05.19
정적분석 / 동적분석  (0) 2015.02.18
디자인 패턴 - singleton  (0) 2014.04.02
매번 느끼는 서글프지만 인정하고 싶지 않은 것  (0) 2012.02.08
간트차트  (0) 2012.01.31
Posted by 구차니
Programming/jsp2014. 4. 18. 19:17
학원에서 배울 commons 패키지...

타입에 맞게 값을 받아오도록 도와주는 패키지
However, there are some occasions where dynamic access to Java object properties (without compiled-in knowledge of the property getter and setter methods to be called) is needed. Example use cases include:
[링크 : http://commons.apache.org/proper/commons-beanutils/]

라이브러리 디버깅등의 목적으로 로그를 남기는 것을 도와주는 패키지
When writing a library it is very useful to log information. However there are many logging implementations out there, and a library cannot impose the use of a particular one on the overall application that the library is a part of.
[링크 : http://commons.apache.org/proper/commons-logging/]

XML에 저장한 값들을 불러 초기화에 쓰기 용이하도록 도와주는 패키지
Many projects read XML configuration files to provide initialization of various Java objects within the system. There are several ways of doing this, and the Digester component was designed to provide a common implementation that can be used in many different projects.
[링크 : http://commons.apache.org/proper/commons-digester/]

'Programming > jsp' 카테고리의 다른 글

tomcat war deploy  (0) 2014.04.23
javax.servlet.http cannot be resolved?!?!  (0) 2014.04.23
maven  (0) 2014.04.18
jsp EL/JSTL 사용법  (0) 2014.04.13
jsp / el과 jstl  (0) 2014.04.13
Posted by 구차니
Programming/jsp2014. 4. 18. 16:50
project object model (POM) 어쩌구 하는데 먼진 모르겠고
'프로젝트 빌드관리를 위한 툴' 이거 하나면 정리 되려나?

아무튼 이녀석이.. 
프로젝트 추가시 빌드할 목록에 자동으로 추가하고
자동으로 이클립스에서 저장하면 빌드하는 등의 역활을 하는 것으로 보인다.

Maven's Objectives

Maven's primary goal is to allow a developer to comprehend the complete state of a development effort in the shortest period of time. In order to attain this goal there are several areas of concern that Maven attempts to deal with:

  • Making the build process easy
  • Providing a uniform build system
  • Providing quality project information
  • Providing guidelines for best practices development
  • Allowing transparent migration to new features
[링크 : http://maven.apache.org/what-is-maven.html
[링크 : http://maven.apache.org/


그리고 이클립스 특유의 프로젝트 폴더 구조인
java / resource / webapps 가 바로 maven에서 관리하는 것으로 보여진다.
(물론 pom.xml은.. 이클립스에서 maven plugin - m2eclipse - 가 알아서 하니까 존재도 몰랐네..)
간단하게 생각하세요. 
maven 의 주임무는 라이브러리(dependency) 목록의 관리가 되겠습니다. (pom.xml) 
여기서 pom.xml은 협업개발자들이 모두 공유하기때문에 신경쓸일없습니다. 
자기 업무에 필요한 라이브러리(dependency)를 추가했을경우 커밋만해주면 끝. 
pom.xml 에 설정한대로 필요한 모든 라이브러리를 관리해준다.(등록/삭제) 

maven 으로 웹프로젝트시 폴더구조가 특이하죠? 
src/main/java => 이곳에 모든 자바소스, 패키지들이 들어갑니다. 
src/main/resource => 이곳에 xml 설정파일들이 들어갑니다. 
src/main/webapps => 이곳에 jsp (프레젠테이션) 부분들이 모두 들어갑니다. 

[링크 : http://www.okjsp.net/bbs?seq=158969]


'Programming > jsp' 카테고리의 다른 글

javax.servlet.http cannot be resolved?!?!  (0) 2014.04.23
apache commons / beanutils , logging, digester  (0) 2014.04.18
jsp EL/JSTL 사용법  (0) 2014.04.13
jsp / el과 jstl  (0) 2014.04.13
jdbc는 DESCRIBE를 지원안해?  (0) 2014.04.11
Posted by 구차니
Programming/C++ STL2014. 4. 16. 17:14
펑터
c++의 객체중 컨스트럭터를 이용하여 마치 함수처럼 사용할 수 있는 객체를 의미하는데..
kdlp문서를 참고하여 고민을 해보니
동적 타입 바인딩일 통해(템플릿?) 타입에 특화되어 더욱 빠르게 타입별 inline으로 변환될 수 있는
특수한 형태의 클래스라고 생각이 되어진다.

[링크 : https://kldp.org/node/58727]
[링크 : http://printf.egloos.com/1807595]
[링크 : http://frompt.egloos.com/2415603]
[링크 : http://en.wikipedia.org/wiki/Function_object]
[링크 : http://en.wikipedia.org/wiki/Functor_(C++)]



람다
원래 함수언어에서 사용하던 녀석인데.. 여전히 멀하는 녀석인지 모르겠지만..
C++에서는 펑터로 사용하는게 귀찮아서 이를 더욱 간편하게 사용하는 용도로
이름이 없는 객체 식으로 운영되는걸로 들었는데... 써보질 않으니 알수가 없다. ㅠㅠ

[링크 : http://frompt.egloos.com/2767144

'Programming > C++ STL' 카테고리의 다른 글

std::endl  (0) 2015.06.24
c++ 현변환 연산자(cast operator in c++)  (0) 2015.01.26
cpp static 변수 및 메소드  (0) 2014.03.18
cpp scope 연산자  (0) 2014.03.18
cpp class에서 변수값을 미리 선언 못하는 이유  (0) 2014.03.15
Posted by 구차니
댓글관련해서
대개 re_level이나 sequence에 깊이 정보를 저장하는데
그게 아니라 1:N으로 구성해서
콤마로 구분해 저장하면 그게 1:N으로 하는걸까? 하는 의구심이 든다.

아무튼 steamTokinzer등으로 콤마 분류해서
글 숫자를 N개 해주면
어떻게 되지 않으려...나?

[링크 : http://www.sqler.com/bSQLQA/451491]
[링크 : http://www.gurubee.net/article/46467]
[링크 : http://database.sarang.net/?inc=read&aid=34711&criteria=oracle]


2014.04.19 추가
예제를 보니.. 이런 1:N 이나 N:M 관계에서는
db table을 새로 만들고
그 테이블 값을 통해 join으로 1:N 관계 값을 추출하는 것으로 생각이 되네...
[링크 : http://stackoverflow.com/questions/3397349/meaing-of-nm-and-1n-in-database-design ]
[링크 : http://stackoverflow.com/questions/8706971/complex-mysql-query-1-n-relationship ]

'Programming > 데이터베이스' 카테고리의 다른 글

데이터베이스 1:n 관계 구현  (0) 2016.02.29
CRUD  (0) 2014.05.17
데이터베이스 - 키 관련  (0) 2014.04.28
카티젼 프로덕트, join  (0) 2014.04.26
3-tier 구성?  (0) 2014.04.14
Posted by 구차니
웹서비스 / 서버 구성 / IDC 센터 인증에 대해서
3 tier라는 용어가 나오는데

원래는 서버 구성에 대한 것에서 파생되어
서비스를 3개의 물리적 서버로 분리하여 미들웨어를 통해 확장성을 꾀하는걸로 용어가 확장/변질된 것으로 보인다.

[링크 : http://blog.naver.com/stkang11/36426893]
[링크 : http://blog.naver.com/image07/60019414768]
[링크 : http://blog.lemonbrain.net/21]
[링크 : http://www.hoons.net/lecture/view/472]
[링크 : http://dpnm.postech.ac.kr/thesis/97/kissok/powerpoint.pdf]



검색하다 보니 IDC에는 인증관련해서 IDC 서비스 품질관련해서 용어가 존재한다.
Tier 1 (99.671%) status would allow 1729.224 minutes
Tier 2 (99.741%) status would allow 1361.304 minutes
Tier 3 (99.982%) status would allow 94.608 minutes
Tier 4 (99.995%) status would allow 26.28 minutes 

[링크 : http://en.wikipedia.org/wiki/Data_center
[링크 : http://en.wikipedia.org/wiki/Teleprocessing_monitor]  

'Programming > 데이터베이스' 카테고리의 다른 글

데이터베이스 1:n 관계 구현  (0) 2016.02.29
CRUD  (0) 2014.05.17
데이터베이스 - 키 관련  (0) 2014.04.28
카티젼 프로덕트, join  (0) 2014.04.26
database 1:N 구성?  (0) 2014.04.15
Posted by 구차니
Programming/jsp2014. 4. 13. 00:28
EL - EL은 ${} 를 변수로 사용한다. 기본적으로 스트링형태로 출력이 되어
jsp 에서 값을 계산후 출력하는 번거로움에서 한단계 해방된다
<%@ page contentType="text/html; charset=euc-kr"%>
<%@ page session="false"%>
<%@ taglib prefix="e" uri="/WEB-INF/el-functions.tld"%>
<%
java.util.Date today = new java.util.Date();
request.setAttribute("today", today);
%>
<html>
<head>
<title>EL 함수 호출</title>
</head>
<body>
오늘은
<b>${e:dateFormat(today) }</b> 입니다.
</body>
</html>  



JSTL - JSTL의 core는 기본적으로 prefix가 c이지만 
EL에서 처럼 사용자가 prefix를 지정해서 사용이 가능하기에 JSTL에서 prefix를 반드시 c로 설정할 필요는 없다.
JSTL은 tag library이기 때문에 EL에서 사용하던 ${} 에서 <>로 바뀌게 된다.
좋게 말하면.. 가독성이 올라가지만 나쁘게 말하면 태그로 바뀌었을뿐
코드인건 여전하기에 html으로 syntax highlight가 되지 않아 큰 장점으로 생각되진 않는다.
<%@ page contentType="text/html; charset=euc-kr"%>
<%@taglib prefix="e" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>if 태그</title>
</head>
<body>
<e:if test="true">무조건 수행<br>
</e:if>

<e:if test="${param.name== 'bk' }">
name 파라미터의 값이 ${param.name } 입니다.<br>
</e:if>

<e:if test="${18 < param.age }">
당신이 나이는 18세 이상입니다.
</e:if>
</body>
</html> 

'Programming > jsp' 카테고리의 다른 글

apache commons / beanutils , logging, digester  (0) 2014.04.18
maven  (0) 2014.04.18
jsp / el과 jstl  (0) 2014.04.13
jdbc는 DESCRIBE를 지원안해?  (0) 2014.04.11
웹개발언어 관련 생각꺼리..  (0) 2014.04.09
Posted by 구차니
Programming/jsp2014. 4. 13. 00:05
el과 jstl을 쓰니 엄청나게 jsp.java 파일이 지저분해진다 -_-a
JSTL은 EL을 확장해서 만든 Jsp Standard Tag Library이다 보니
기본적으로 EL에서 사용하는 기능에 tag library 관련하여 더많은 내용을 초기화 하게 된다.

el 사용시
public final class elEx1_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent {

  private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();

  private static java.util.List _jspx_dependants;

  private javax.el.ExpressionFactory _el_expressionfactory;
  private org.apache.AnnotationProcessor _jsp_annotationprocessor;

  public Object getDependants() {
    return _jspx_dependants;
  }

  public void _jspInit() {
    _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
    _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());
  }

  public void _jspDestroy() {
  }

  public void _jspService(HttpServletRequest request, HttpServletResponse response)
        throws java.io.IOException, ServletException {

    PageContext pageContext = null;
    HttpSession session = null;
    ServletContext application = null;
    ServletConfig config = null;
    JspWriter out = null;
    Object page = this;
    JspWriter _jspx_out = null;
    PageContext _jspx_page_context = null; 
  }

EL 문법은 바로 처리되는게 아니라
Evaluate 되어서 String으로 변환되어 출력된다.
out.write((java.lang.String) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${2 + 5}", java.lang.String.class, (PageContext)_jspx_page_context, null, false)); 


jstl 사용시
public final class use_005fforeach_005ftag_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent {

  private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();

  private static java.util.List _jspx_dependants;

  private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005fc_005fset_0026_005fvar_005fvalue_005fnobody;
  private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005fc_005fforEach_0026_005fvar_005fstep_005fend_005fbegin;
  private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005fc_005fforEach_0026_005fvar_005fend_005fbegin;
  private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005fc_005fforEach_0026_005fvarStatus_005fvar_005fitems_005fbegin;
  private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005fc_005fforEach_0026_005fvar_005fitems;

  private javax.el.ExpressionFactory _el_expressionfactory;
  private org.apache.AnnotationProcessor _jsp_annotationprocessor;

  public Object getDependants() {
    return _jspx_dependants;
  }

  public void _jspInit() {
    _005fjspx_005ftagPool_005fc_005fset_0026_005fvar_005fvalue_005fnobody = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
    _005fjspx_005ftagPool_005fc_005fforEach_0026_005fvar_005fstep_005fend_005fbegin = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
    _005fjspx_005ftagPool_005fc_005fforEach_0026_005fvar_005fend_005fbegin = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
    _005fjspx_005ftagPool_005fc_005fforEach_0026_005fvarStatus_005fvar_005fitems_005fbegin = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
    _005fjspx_005ftagPool_005fc_005fforEach_0026_005fvar_005fitems = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
    _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
    _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());
  }

  public void _jspDestroy() {
    _005fjspx_005ftagPool_005fc_005fset_0026_005fvar_005fvalue_005fnobody.release();
    _005fjspx_005ftagPool_005fc_005fforEach_0026_005fvar_005fstep_005fend_005fbegin.release();
    _005fjspx_005ftagPool_005fc_005fforEach_0026_005fvar_005fend_005fbegin.release();
    _005fjspx_005ftagPool_005fc_005fforEach_0026_005fvarStatus_005fvar_005fitems_005fbegin.release();
    _005fjspx_005ftagPool_005fc_005fforEach_0026_005fvar_005fitems.release();
  }

  public void _jspService(HttpServletRequest request, HttpServletResponse response)
        throws java.io.IOException, ServletException {

    PageContext pageContext = null;
    HttpSession session = null;
    ServletContext application = null;
    ServletConfig config = null;
    JspWriter out = null;
    Object page = this;
    JspWriter _jspx_out = null;
    PageContext _jspx_page_context = null;
  }
 

EL과는 인자가 하나 null 에서 변경된다.
out.write((java.lang.String) org.apache.jasper.runtime.PageContextImpl.proprietarEvaluate("${e:dateFormat(today) }", java.lang.String.class, (PageContext)_jspx_page_context, _jspx_fnmap_0, false)); 

'Programming > jsp' 카테고리의 다른 글

maven  (0) 2014.04.18
jsp EL/JSTL 사용법  (0) 2014.04.13
jdbc는 DESCRIBE를 지원안해?  (0) 2014.04.11
웹개발언어 관련 생각꺼리..  (0) 2014.04.09
jsp model1, model2  (0) 2014.04.08
Posted by 구차니
Programming/jsp2014. 4. 11. 01:39
DESCRIBE는 table의 구조를 알려주는 명령어인데
[링크 : http://docs.oracle.com/cd/B19306_01/server.102/b14357/ch12019.htm]


eclispe+ quantumDB에서 쌩쇼를 해도 안되길래


혹시나 하는 마음에 sqlplus에서 해봤더니.. 헐....
jdbc 특성(?) 상 데이터 빼오는데 특화가 되서 저런 관리용 명령어들은 다 빼버린건가?
$ sqlplus

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Apr 11 01:33:07 2014

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Enter user-name: system
Enter password:

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> desc USER_USERS;
 Name                                      Null?    Type
 ----------------------------------------- -------- ---------------------------- USERNAME                                  NOT NULL VARCHAR2(30)
 USER_ID                                   NOT NULL NUMBER
 ACCOUNT_STATUS                            NOT NULL VARCHAR2(32)
 LOCK_DATE                                          DATE
 EXPIRY_DATE                                        DATE
 DEFAULT_TABLESPACE                        NOT NULL VARCHAR2(30)
 TEMPORARY_TABLESPACE                      NOT NULL VARCHAR2(30)
 CREATED                                   NOT NULL DATE
 INITIAL_RSRC_CONSUMER_GROUP                        VARCHAR2(30)
 EXTERNAL_NAME                                      VARCHAR2(4000)




조금(?)오래된 글이지만 회피법은 있어도 정공법은 없는듯?
[링크 : http://www.coderanch.com/t/299298/JDBC/databases/Oracle-describe-table-jdbc ]

'Programming > jsp' 카테고리의 다른 글

jsp EL/JSTL 사용법  (0) 2014.04.13
jsp / el과 jstl  (0) 2014.04.13
웹개발언어 관련 생각꺼리..  (0) 2014.04.09
jsp model1, model2  (0) 2014.04.08
win7 에서 jsp 구동시 IPv6로 뜨는 문제  (0) 2014.04.08
Posted by 구차니
Programming/web 관련2014. 4. 10. 19:45
jsp 공부하다가 발견한 차이점..

<input type="password" name="password" />
<input type=password name=password />
<input type=password name=password/> 

input을 통해 값을 넘기는데
ie8은 name의 value를 "password/" 로 받아들여 값을 인식못하는 반면
 <input type=password name=password/>

크롬에서는 value를 "password"로 제대로 인식을 한다. 


아마도 IE8에서는 HTML 파싱시
변수값(?) 파싱에 변수이름 파싱용 함수를 쓰는게 아니라
URL 이나 path 파싱에 필요한 함수를 사용하는 것으로 추측된다.

'Programming > web 관련' 카테고리의 다른 글

sql designer(web)  (0) 2014.05.11
호스팅어 / 무료 웹 호스팅  (4) 2014.04.27
NoSQL  (0) 2014.04.09
w3c 규격 번역  (0) 2014.03.17
wan 에서 mac address 얻기  (0) 2013.07.09
Posted by 구차니