펭귄집

모델2에서 Front Controller패턴으로


Front Controller 적용원인

1. 각 컨트롤러 사이의 중복적인 코드의 문제

2. 개발자의 개발패턴의 차이

=> 이로인해 모델2방식은 좀 더 강제적인 형태인 Front Controller방식을 적용


Front Controller패턴의 가장 중요한 변화는 전체 로직의 일부만을 컨트롤러가 처리하도록 변경 == '위임' (Delegation)

전체로직의 일부를 컨트롤러에게 위임하고 모든 흐름의 제어는 앞쪽의 Fornt Controller가 담당
-> 이런 구조를 사용하게 될 경우
     1. 개발자가 작성하는 컨트롤러는 전체 로직의 일부분만을 처리 => 개발자가 작성해야 하는 전체코드가 줄어듬
     2. 모든 컨트롤러는 Front Controller의 일부분을 구현한느 형태이므로, 좀 더 규격화된 코드 구현 가능




<참고문헌 : 코드로 배우는 Spring 웹 프로젝트>

'전공서적 > 코드로 배우는 Spring 웹 프로젝트' 카테고리의 다른 글

모델2패턴의 이해  (0) 2017.10.24

델2패턴의 이해


스프링 MVC는 모델2방식 구조르 이요하기 때문에 이론적으로 모델2방식에 대한 이해가 필요하다


최근의 모든 웹 개발은 거의 모델2방식을 사용한다.


모델2방식은 흔히 MVC구조를 응용하는 것이라고 생각하는데 가장중요한것 

 -> 화면과 데이터 처리를 분해해서 재사용이 가능하도록 하는 구조


모델2구조에서는 다음과 같은 용어들이 사용된다

 모델(Model)

데이터 혹은 데이터를 처리하는 영역을 의미한다 

뷰(View) 

결과 하면을 만들어 내는 데 사용하는 자원이다 

컨트롤러(Controller) 

웹의 요청(request)을 처리하는 존재로 뷰와 모델사이의 중간 통신 역할을 한다   


컨트롤러는 모델계층과 연동해서 필요한 데이터를 처리하고, 결과를 뷰로 전송하게 된다.


모델2에서 모든 요청은 기본적으로 컨트롤러를 호출한다.
각 컨트롤러는 자신을 호출하는 특정한 URL경로를 가지고 있다.


  모델2방식의 장점

 개발자와 웹 퍼블리셔의 영역을 분리할 수 있다 

 컨트롤러의 URL을 통해서 뷰를 제어하기 때문에, 뷰의 교체나 변경과 같은 유지보스에 유용 




<참고문헌 : 코드로 배우는 Spring 웹 프로젝트>

함수 호이스팅



함수를 생성하는 3가지 방법이 있는데 동작방식이 약간의 차이가 있다. 

=> 그 중 하나가 함수 호이스팅(Function Hoisting)


함수표현식만을 사용할 것을 권장하는데 그 이유는 함수 호이스팅때문

//함수 선언문 방식과 함수 호이스팅

//1번
add(2,3);  // 5

//함수 선언문 형태로 add() 함수 정의
//2번
function add(x,y) {
     return x + y;
}

//3번
add(3,4);  // 7


1번
이 시점에서 add()함수가 정의되지 않았음에도 2번에 정의된 add()함수를 호출하는 것이 가능하다.
-> 이것은 함수가 자신이 위치한 코드에 상관없이 함수 선언문 형태로 정의한 함수의 유효범위는 코드의 맨 처음부터 시작한다는 것을 확인할 수 있다.
=> 이것이 함수 호이스팅

3번

2번에서 정의된 add() 함수가 정상적으로 호출


이러한 함수 호이스팅은 함수를 사용하기 전에 반드시 선언해야한다는 규칙을 무시하므로 코드의 구조를 엉성하게 만들 수도 있음
-> 함수 표현식 사용 이유

함수 표현식으로하면 위의 결과가 달라


//함수 표현식 방식과 함수 호이스팅
//1번
add(2,3);  //uncaught type error

//함수 표현식 형태로 add()함수 정의
//2번
var add = function(x,y){
     return x + y;
}

//3번
add(3,4);  //7


1번
add()함수는 2번에서 함수 표현식 형태로 정의되어 있어 호이스팅이 일어나지않는다.
-> 따라서 3번과 같이 함수가 생성된 이후에 호출이 가능.
1번에서는 add()함수를 호출한 시점에서 아직 add()함수가 생성되기 전이므로 uncaught type error 에러가 발생

3번

add()함수가 생성된 후에는 함수가 정상적으로 동작한다는 것을 확인 가능


이러한 함수 호이스팅이 발생하는 원인은 자바스크립트의 변수생성(Instantiation)초기화(Initialization) 작업이 분리돼서 진행되기 때문


<참고문헌 : 인사이드자바스크립트>

'전공서적 > 인사이드자바스크립트' 카테고리의 다른 글

배열  (0) 2017.10.26
객체비교  (0) 2017.10.25
자바스크립트 참조타입(객체타입)  (0) 2017.08.30
null 과 undefined  (0) 2017.08.30
문자열  (0) 2017.08.30

자바스크립트 참조타입(객체타입)



자바스크립트에서 숫자, 문자열, 불린값, null, undefined 같은 기본 타입으 제외한 모든 값은 객체다.
-> 따라서 배열, 함수, 정규표현식 등도 모두 결국 자바스크립트 객체로 표현된다.

자바스크립트에서 객체는 단순히 '이름(key) : 값(value)' 형태의 프로퍼티들을 저장하는 컨테이너로서, 해시라는 자료구조와 유사하다.

자바스크립트에서 기본타입은 하나의 값만을 가지는데 비해, 참조타입인 객체는 여러개의 프로퍼티들을 포함할 수 있으며, 이러한 객체의 프로퍼티는 기본타입의 값을 포함하거나, 다른객체를 가리킬 수 있다.

-> 이러한 프로퍼티의 성질에 따라 객체의 프로퍼티는 함수로 포함할 수 있으며, 자바스크립트에서는 이러한 프로퍼티를 메서드라 부른다.



<참고문헌 : 인사이드자바스크립트>


'전공서적 > 인사이드자바스크립트' 카테고리의 다른 글

객체비교  (0) 2017.10.25
함수 호이스팅  (1) 2017.08.31
null 과 undefined  (0) 2017.08.30
문자열  (0) 2017.08.30
참조타입의 특성  (0) 2017.08.25

null과 undefined



이 두타입은 모두 자바스크립트에서 '값이 비어있음'을 나타낸다.

자바스크립트 화경 내에서 기본적으로 값이 할당되지 않는 변수는 undefined타입이며, undefined타입의 변수는 변수 자체의 값 또한 undefined이다.
=> 이처럼 자바스크립트에서 undefined는 타입이자, 값을 나타낸다는을 주의해야 한다

emptyVar변수에는 아무런 값이 할당되지 않으므로 undefined타입이 출력된 것이고,

이에반해 nullVar 변수와 같이 null 타입 변수의 경우는 개발자가 명시적으로 값이 비어있음을 나타내는데 사용한다.


여기서 주의할 점은 null 타입 변수인 nullVar의 typeof결과가 null이 아니라 object라는 것이다.
-> 자바스크립트에서는 null타입 변수인지를 확인할 때 typeof 연산자를 사용하는게 아니라 일치연산자(===)를 사용해서 변수의 값을 직접 확인해야 한다.


//null타입 변수 생성

var nullVar = null;

console.log(typeof nullVar == null);  //(출력값) false
console.log(nullVar === null); //(출력값) true




<참고문헌 : 인사이드자바스크립트>

'전공서적 > 인사이드자바스크립트' 카테고리의 다른 글

함수 호이스팅  (1) 2017.08.31
자바스크립트 참조타입(객체타입)  (0) 2017.08.30
문자열  (0) 2017.08.30
참조타입의 특성  (0) 2017.08.25
for in 문과 객체 프로퍼티 출력  (0) 2017.08.10

문자열



문자열은 작은따옴표나 큰따옴표로 생성

자바스크립트에서는 문자 하나만을 별도로 나타내는 데이터 타입은 존재 X


var str = 'test';

console.log(str[0], str[1], str[2], str[3]);  //(출력값) test

안돼는코드
str[0] = 'T';
console.log(str);  //(출력값) test


문자열은 문자배열처럼 인덱스를 이용해서 접근할 수 있다.
여기서 주목할 점은 str[0] = 'T'로 변경했을 때 에러가 발생하지 않았으나 원래 문자열은 'test'가 출력된다.

=> 즉, 자바스크립트에서는 한 번 생성된 문자열은 읽기만 가능하지 수정은 불가능하다.



<참고문헌 : 인사이드자바스크립트>


'전공서적 > 인사이드자바스크립트' 카테고리의 다른 글

자바스크립트 참조타입(객체타입)  (0) 2017.08.30
null 과 undefined  (0) 2017.08.30
참조타입의 특성  (0) 2017.08.25
for in 문과 객체 프로퍼티 출력  (0) 2017.08.10
Javascript 문자열  (0) 2017.08.06

참조타입의 특성



자바스크립트에서는 기본타입인 숫자, 문자열, 불린값, null, undefined 5가지를 제외한 모든 값은 객체

배열이나 함수 또한 객체로 취급
-> 이러한 객체는 자바스크립트에서 참조타입이라고 부른다. 
=> 이것은 객체의 모든 연산이 실제 값이 아닌 참조값으로 처리되기 때문


//1번

var objA = {

val : 40;

};


//2번

var objB = objA;


console.log(objA.val);  //(출력값) 40

console.log(objB.val);  //(출력값) 40


//3번

objB.val = 50;

console.log(objA.val);  //(출력값) 50

console.log(objB.val);  //(출력값) 50



1번

objA 객체를 리터럴 방식으로 생성

여기서 objA변수는 객체 자체를 저장하고 있는 것이 아니라 새성된 객체를 가리키는 참조값을 저장


2번

변수 objB에 objA값을 할당.

objA는 1번에서 생성된 객체를 가리키는 참조값을 가지고 있으므로 변수objB에도 이같은 객체의 참조값이 저장

-> 즉, 아래 그림같이 objA와 objB 변수가 동일한 객체를 가리키는 참조값을 가지게 되는 것

=> 따라서 a.val과 b.val값이 40


objA ->

val : 40

objB ->


3번

변수 objB가 가리키는 객체의 val값을 40에서 50으로 갱신

이때 변수 objA도 변수 objB와 동일한 객체를 참조하고 있으므로 a.val값이 50으로 변경




<참고문헌 : 인사이드자바스크립트>


'전공서적 > 인사이드자바스크립트' 카테고리의 다른 글

null 과 undefined  (0) 2017.08.30
문자열  (0) 2017.08.30
for in 문과 객체 프로퍼티 출력  (0) 2017.08.10
Javascript 문자열  (0) 2017.08.06
Javascript 기본타입  (0) 2017.08.06

애자일 정리

기타2017. 8. 19. 09:00

애자일 정리



프로젝트를 실패하는 이유

  • 같은 목표라도 생각의 차이가 있기 때문에 일의 우선순위 or 기능을 생각하는 가치의 차이

  • 서로가 다른 목표와 문제점을 갖고 있기때문에 핵심이 모호해짐


애자일 등장배경

( 우선 애자일을 사용한다고 해서 생산성이 높아지는 것은 아님 )

  • S/W개발의 환경변화
  • 결과물의 배포시기가 중요해짐 (얼마나 완성됐는지 한눈에 볼 수 있어서 애자일 선택)
  • 개발 생산성 저하
  • 폭포수형 개발 방법론에 대한 반대 운동으로 시작


『폭포수 모델』

장점 

단점 

 낮은 복잡성

진행과정을 세분화하여 관리가 용이

전체과정에 대한 이해 용이

 소프트웨어 거대화 및 요구사항 구체화가 어려움

시스템이 개발완료되는 시점에야 완성가능

각 진행단계에서 문제 시 그 이전단계로 피드백되는 경우발생

 기존 방법론의 한계

 문서 및 절차 위주의 방법론 -> 변화대응에 어려움
개발자의 개발능력의 차이로 인한 불안정


애자일 방법론 정의


  • 더 나은 의사소통
  • 지속적인 변화관리 
    ex)
        만들다 보니 추가, 변경된 기능 or 고객변심
  • 우선순위에 다라 중요한 것 먼저 ㄱㄱ
    ex)
        우리조는 백로그작성 후 각자 개발할 것 중 우선순위대로 포스트잇붙임



애자일 기본가치 (애자일 선언문)


  1. 프로세스와 도구중심이 아닌, 개개인과의 상호 소통을 중시한다(자주 보여주는 피드백)

  2. 문서중심이 아닌, 실행 가능한 소프트웨어를 중시한다

  3. 계약과 협상 중심이 아닌, 고객과의 협력을 중시한다

  4. 계획중심이 아닌 변화에 대한 민첩한 대응을 중시한다

  5. 단순함, 해도되고 안해도되면 최대한 안하게하는 기교 (일을 단순화 시킬 수 있어야 한다)



'기타' 카테고리의 다른 글

mbti  (0) 2021.12.09

메일발송 시스템 에러



에러 종류


com.sun.mail.smtp.SMTPSendFailedException

메일 발송 시 from쪽 로그인이 안되어 있는 경우


또는


메일 발송하는(ex. gmail)메일가서 보안 수준을 낮추는 방법


이 외에도 방법이 있겠지만

난 이 방법으로 오류해결



개발자 면접 질문




http://ktko.tistory.com/m/44 


참고