@RequestParam

: 값을 입력하지 않은 변수에 오류를 출력하는 것이 아니라 default값 지정해주기

 


 @RequestParam()


 * Controller의 매개변수를 재정의하는 용도
 * 만약 client에서 보내는 변수 이름과 Controller에서 사용하는 변수 이름을

   다르게 하고 싶으면 '@RequestParam(name="변수") String 내이름'
 * client에서 해당 변수값을 빼먹고 전송했을 때 오류를 최소화 하기 위해선
   '@RequestParam(name="내이름", required=false, defaultValue="홍길동") String 내이름'
 * client에서 '내이름'변수에 값을 보내지 않으면 기본값인 '홍길동'문자열을 '내이름'변수에 할당한다.

// required=false : 필수가 아님을 의미(=값이 안와도 됨)
// defaultValue="500" : 값을 500으로 할당

 

+) int로 선언한 변수에 정수가 아닌값을 넣으면?

 

html에서 js를 포함할 때

어떻게 포함하는 게 가장 효율적일까?

 

위와 같이 <head>에 <script>를 추가하는 경우,

HTML을 parsing하다가 <script>태그를 만나면 parsing을 멈추고 main.js를 다운받는다

그리고 js파일을 실행한 뒤, parsing을 이어간다.

 

parsing HTML → [blocked] fetching js → executing js →parsingHTML → [page is ready]

 

위와 같은 방법의 단점은 무엇일까?

 

만약 js파일의 크기가 어마어마하게 크고, 인터넷이 느리다면

사용자가 해당 웹사이트를 보는 데까지 많은 시간이 소요된다.

좋은 방법아님!

 

그래서 다음으로 많이 하는 방법이 <body>안에 <script>추가하기!

parsing HTML → [page is ready] fetching js → executing js

js를 받기 전에 이미 페이지가 준비되어서 사용자가 페이지를 볼 수 있다.

 

이 방법의 단점은 무엇일까?

만약 웹사이트가 js가 매우 의존적이라면, 사용자가 정상적인 페이지를 보는 데에 어려움이 있다.

 

다음 방법으로는 <script> 태그 안에 async라는 속성 사용하기!

async는 boolean 타입이기 때문에 이렇게 선언하는 것만으로 true로 설정되어

async옵션을 사용할 수 있다.

 

html과 js파일을 병렬로 다운로드받는다.

js파일의 다운로드가 끝나면 그때 parsing을 멈추고

다운로드된 js파일을 실행한다.

그 후 나머지 html파일을 parsing한다.

 

이 방법의 장점은?

다운로드 시간을 줄일 수 있다.

 

단점은?

parsing되기 전에 실행되기 때문에 원하는 html 요소가 아직 정의되어 있지 않을 수 있다.

사용자가 페이지를 보는데 여전히 시간이 걸린다.

 

그렇다면 defer속성을 사용해보자

html을 parsing하다가 defer를 만나면 'main.js를 다운로드받자~' 명령만 시켜놓고

끝까지 parsing을 수행한다.

그리고 parsing이 끝난 다음에 다운로드된 js를 실행한다.

가장 좋은 방법!

 

async와 defer의 차이를 좀 더 알아보자

async는 js파일이 다운로드되는 순서대로 실행하기 때문에(정의된 순서가 아니라)

만약 웹사이트가 순서에 의존적이라면 문제가 될 수 있다.

defer는 정의한 순서대로 실행된다.

 

defer을 사용하는 것이 가장 효율적이고 안전하다!

 

추가적으로 js를 사용할 때는

가장 윗부분에 'use strict;' 를 쓰는 게 좋다

 

js는 flexible!

flexible 하다는 것은 dangerous하다는 것!

use strict를 써놓으면 선언되지 않은 변수 사용 등을 막을 수 있다.

또한 strict모드를 사용하면 js엔진이 조금 더 효율적으로 js를 분석할 수 있다. 

 

 

 

 

 

유투브 보고 정리했습니다~!

 

[ 출처 ]

https://www.youtube.com/watch?v=tJieVCgGzhs

 

'Web Develop > JavaScript' 카테고리의 다른 글

Hello World! 콘솔에 출력하기  (0) 2020.08.31

텍스트에디터(vsCode와 같은)에서 js파일 만들기

위의 파일을 실행하기 위해 node.js를 다운로드하자

https://nodejs.org/ko/download/

 

다운로드 | Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

node.js에는 js엔진이 있어 브라우저 없이도 js파일을 실행할 수 있다.

 

 

앞으로 web api를 배울 것이기 때문에 이제 vsCode를 이용하여 html과 js를 연결해보자

 index.html를 만들고, <title> 밑에 <script>태그를 추가하자

index.html 파일과 main.js 연결하기

index.html 을 실행시켜보자

 

콘솔창에 main.js의 내용이 출력된 것을 확인할 수 있다

 

API(Application Programming Interface)

 

https://developer.mozilla.org/ko/docs/Web/API/Console_API

 

Console API

Console API는 코드의 특정 지점에서 값이나 변수를 기록하고, 작업의 소요 시간을 알아내는 등 개발자가 사용할 수 있는 디버깅 기능을 제공합니다.

developer.mozilla.org

브라우저에서 제공하는 dev tool(Elements, Console 등)을 잘 활용하면 좋다

브라우저의 Console 탭에서는 직접 코드를 입력하여 결과를 확인할 수 있다.

 

Source 탭은 break point를 사용하여 디버깅할 때 유용하다.

Network 탭에서는 네트워크가 어떻게 오고 가는지, 데이터의 사이즈가 어떻게 되는지 알 수 있다.

 

자바스크립트의 공식사이트

https://www.ecma-international.org/

 

Welcome to Ecma International

  Welcome Ecma International is an industry association founded in 1961, dedicated to the standardization of information and communication systems. We are also here: Since 1961 and continuing in full force today, Ecma International®facilitates the timely

www.ecma-international.org

모든 언어를 공부할 때는 공식사이트를 이용하는 것이 좋지만

Ecma의 경우 공부하는 데에는 부적합..(난해..)

 

MDN을 통해 공부하자

https://developer.mozilla.org/ko/

 

MDN Web Docs

MDN 웹 문서 사이트는 HTML, CSS, 및 웹 사이트와 프로그레시브 웹 앱을 위한 API를 포함한 오픈 웹 기술에 대한 정보를 제공합니다. 또한 Firefox 개발자 도구와 같은 Mozilla 제품을 위한 개발자 지향 문

developer.mozilla.org

w3schools를 추천하기도 하지만

간혹 w3schools와 MDN에서 같은 내용이지만 다르게 설명하는 경우가 있고,

MDN이 훨씬 설명도 잘 되어있고 예제들이 많다.

또한 최신정보도 빠르게 반영을 하기 때문에 MDN을 추천!

많은 개발자들이 MDN을 공식사이트처럼 이용하고 있다.

 

 

유투브 보고 정리했습니다~!

 

[ 출처 ]

https://www.youtube.com/watch?v=tJieVCgGzhs

 

'Web Develop > JavaScript' 카테고리의 다른 글

async VS defer  (0) 2020.08.31

*SELECT [열명] FROM [테이블명] WHERE [조건식] ORDER BY [열명]

 

1. ORDER BY

: SELECT 명령에 ORDER BY 구를 지정하면 검색 결과의 행 순서를 바꿀 수 있음.

 

-WHERE 구 뒤에 지정

-WHERE 구 생략시 FROM 구 뒤에 지정

 

2. 내림차순 정렬하기(ORDER BY DESC)

*SELECT [열명] FROM [테이블명] WHERE [조건식] ORDER BY [열명] DESC

 

-DESC : descendant(하강)

 ASC : ascendant(상승)

-오름차순은 내림차순과 달리 생략 가능(default). ASC로도 지정 가능.

 

3. 대소관계

- 수치형 데이터, 날짜시간형 데이터 :숫자크기로 판별

- 문자열형 데이터 :사전식 순서로 판별

                         알파벳, 한글 순(자음,모음 순)

- 문자열형 열에 숫자를 저장하면 문자로 인식되어 대소관계 계산법이 달라짐.

 

4. ORDER BY는 테이블에 영향을 주지 않음.

: SELECT 명령은 테이블의 데이터를 참조만 할 뿐이며 변경은 하지 않음.

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

패턴매칭(부분 검색하기)  (0) 2019.03.23
조건 조합-AND,OR,NOT  (0) 2019.03.23
조건 지정하여 데이터 검색  (0) 2019.03.16
DESC 명령  (0) 2019.03.14
'SELECT * FROM 테이블명' 실행  (0) 2019.03.12

* [열] LIKE [패턴]

 

- 패턴 매칭(부분 검색)

  : =연산자로 검색하는 경우는 셀의 데이터 값이 완전히 동일한지를 비교.

    특정 문자나 문자열이 포함되어 있는지를 검색하고 싶은 경우 '패턴매칭' 사용.

 

1. LIKE로 패턴 매칭하기

 

- 열 값이 부분적으로 일치하는 경우에도 참이 됨.

- 왼쪽에는 매칭 대상을, 오른쪽에는 패턴을 문자열로 지정.

- 단, 수치형 상수는 지정 불가.

- 패턴을 정의할 때는 메타문자(% 와 _) 사용 가능. (여러 개 사용가능)

- *는 LIKE에서 사용 불가

- 복잡한 패턴을 매칭하는 경우는 정규 표현식(Regular Expression) 사용.

  

ex)

 No

Text

 1

꽃은 예쁘다

 2

숲에는 나무와 풀이 많다

 3

여러 꽃들 또한 숲에 존재한다 

 

 ▶SELECT * FROM sample WHERE Text LIKE '꽃%';   ←No=1 행만 검색됨.(전방일치)

 ▶SELECT * FROM sample WHERE Text LIKE '%꽃%';   ←No=1 행, No=3 행 검색됨.(중간 일치)

 

 * 메타문자(와일드카드)

    : 패턴 매칭 시 '임의의 문자 또는 문자열'에 매치하는 부분을 지정하기 위해 쓰이는 특수문자.

      %(퍼센트) = 임의의 문자열, _(언더스코어) = 임의의 문자 하나. .(%는 빈 문자열에도 매치)

    

2. LIKE로 % 검색하기

 

- '%'와 '_'를 검색하기 위해서는 '이스케이프'라는 방법으로 처리.

   ex) WHERE Text LIKE '%/%%'

   ex) WHERE Text LIKE '%/_%'

 

3. 문자열 상수 ' 검색하기

 

- 문자열 상수: '문자열'과 같이 '로 둘러싸 표기.

- '를 2개 연속해서 기술하여 이스케이프 처리 함.

   ex) She's  →  'She''s'

   ex) '  → ''''

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

정렬하기(ORDER BY)  (0) 2019.04.07
조건 조합-AND,OR,NOT  (0) 2019.03.23
조건 지정하여 데이터 검색  (0) 2019.03.16
DESC 명령  (0) 2019.03.14
'SELECT * FROM 테이블명' 실행  (0) 2019.03.12

* [조건식1] AND [조건식2]

   [조건식1] OR [조건식2]  

   NOT 조건식                   

 

- 두개 이상의 조건식을 조합해 검색하는 경우가 많음.

 

1. AND로 조합하기

 

- 논리곱을 계산하는 논리 연산자.

- 이항연산자.

- 모든 조건을 만족하는 경우 조건식은 참이 됨.

      ex) WHERE a<>1 AND b>5

            → a는 1이 아니면서 b는 5보다 큰 행을 검색.

 

2. OR로 조합하기

 

- 논리 연산자.

- 이항 연산자.

- 어느 쪽이든 하나만 참이 되면 조건식은 참이 됨.

     ex) WHERE a<>0 OR b<3

            → a가 0이 아니거나 b가 3보다 작은 행을 검색.

 

3. AND와 OR 함께 사용

 

- 열이나 상수만을 지정해도 에러 발생하지 않음.

   → 때문에 주의해야 함.

        ex) No 열의 값이 2 또는 5인 행을 추출할 경우

              : SELECT * FROM sample WHERE No = 2 OR 5; (X)  ☜ 상수 '2'는 논리연산으로 항상 참. 모든 행 반환.

                SELECT * FROM sample WHERE No = 2 OR No = 5; (O)

 

4. 연산자의 우선순위

 

- ex) 'a<>0 AND b<>0' 과 'a=1 OR A=2 AND b=1 OR b=2'의 결과는 다름.  ☜  AND가 OR보다 우선순위 높음.

- '(a=1 OR A=2) AND (b=1 OR b=2)'로 바꿔주면 'a<>0 AND b<>0'와 결과 같음.

   → OR조건식은 괄호로 묶어 지정하는 경우 많음.

 

5. NOT으로 조합하기

 

- 단항 연산자.

- 오른쪽에 지정한 조건식의 반대 값을 반환.

    ex) NOT a<>1

 

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

정렬하기(ORDER BY)  (0) 2019.04.07
패턴매칭(부분 검색하기)  (0) 2019.03.23
조건 지정하여 데이터 검색  (0) 2019.03.16
DESC 명령  (0) 2019.03.14
'SELECT * FROM 테이블명' 실행  (0) 2019.03.12

- WHERE 구: 행을 선택할 때 사용

- SELECT 구: 열을 선택할 때 사용

 

1. 열 지정하기

 

SELECT [열1], [열2] ... FROM [테이블명];

 

ex) SELECT no FROM sample;

    : sample이라는 데이터베이스에서 no 열만 결과값으로 표시됨.

 

- 열을 전혀 지정하지 않으면 구문 에러 발생함.

- 테이블에 존재하지 않는 열 지정하면 에러 발생함.

- 열 지정 순서는 임의로 정할 수 있음.(테이블에 정의된 순서와 동일하지 않아도 됨)

   → 결과는 지정한 열의 순서대로 표시.

- 동일한 열을 중복해서 지정해도 무관.

 

2. 행 지정하기

 

SELECT [열] FROM [테이블명] WHERE [조건식]; 

 

- WHERE 구는 FROM 구의 뒤에 표기.(구의 순서 바꿀 수 없음)

- 조건식은 '열, 연산자, 상수'로 구성.

   ex) no = 5

        : no 열 값이 5일 경우에 참.

- 조건식에 따라 하나 혹은 복수의 행 반환.

- 조건식에 일치하는 행이 없으면 아무것도 반환되지 않음.

- 문자열형을 비교할 경우 싱글쿼트('') 사용하여 표기.

   ex) name = '이태선';

- 날짜시간형에도 싱글쿼트 사용. 연월일을 하이픈(-), 시분초를 콜론(:)으로 구분하여 표기.

  ex) '2019-03-16 07:18:00'

 

*리터럴(literal): 자료형에 맞게 표기한 상수값.

 

3. NULL값 검색하기

- =연산자로 NULL 검색 불가.

  ex) no = NULL; (x)

- 'IS NULL' 사용.

  ex) no IS NULL;

- NULL값이 아닌 행을 검색하려면 'IS NOT NULL' 사용.

 

4. 연산자

 

ⓐ =연산자: 좌변과 우변의 값이 같을 경우 참

ⓑ <>연산자: 좌변과 우변의 값이 같지 않을 경우 참

ⓒ >연산자: 좌변의 값이 우변의 값보다 클 경우 참

ⓓ >=연산자: 좌변의 값이 우변의 값보다 크거나 같을 경우 참

ⓔ <연산자: 좌변의 값이 우변의 값보다 작을 경우 참

ⓕ <=연산자: 죄변의 값이 우변의 값보다 작거나 같을 경우 참

 

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

패턴매칭(부분 검색하기)  (0) 2019.03.23
조건 조합-AND,OR,NOT  (0) 2019.03.23
DESC 명령  (0) 2019.03.14
'SELECT * FROM 테이블명' 실행  (0) 2019.03.12
RDBMS의 클라이언트/서버  (0) 2019.03.10

1.4 소프트웨어 공학의 접근 방법

 

- 소프트웨어가 다루는 문제가 점점 커지고 변화가 많아지지만

  '높은 품질'과 '생산성'이 일관적으로 성취하여야 할 목표임.

-프로젝트를 수행하는 동안 얻은 품질과 생산성은 여러 가지 요인에 좌우됨.

-'품질'을 좌우하는 세가지는 인력, 프로세스, 기술임.

 

*삼각 균형(triangle seesaw)

: 좋은 프로세스나 방법이 사용되고 작업을 수행하는 인력이 적절히 훈련되어야

 좋은 품질의 소프트웨어를 적기에 공급할 수 있음.

 

-소프트웨어 공학의 초점은 주로 프로세스에 있음.(프로세스: 체계적인 접근법)

-프로세스는 도구와 방법과 함께 소프트웨어 공학에서 핵심을 이룸.

 

-소프트웨어 공학의 기본 접근 방법

 : 소프트웨어를 개발하는 프로세스를 개발된 제품, 즉 소프트웨어와 분리하는 것.

-적절한 소프트웨어 프로세스의 설계와 관리는 소프트웨어 공학의 중요한 연구 목표.

 → 알고리즘, OS, DB 등은 소프트웨어 제품 자체에 초점을 두고 있지만, 소프트웨어

     엔지니어링은 소프트웨어 제작 과정에 집중

 

-소프트웨어 엔지니어링 작업의 종류

ⓐ 소프트웨어 개발 프로세스

    : 시스템에 대한 비젼과 개념을 목표로 하는 컴퓨터 환경에 실행되는

      소프트웨어로 바꾸는 작업.

     비즈니스 요구를 파악하고 타당성을 검토하며 시스템이 제공하여야 할

     요구와 성능을 정형화함. 또한 설계하고 구현하고 테스팅하여 목표환경에 설치함.

 

ⓑ 품질 보증

    : 소프투에어 품질 보증(SQA, Software Quality Assurance)은 개발 작업이 적절히

      수행되었는지 확인하는 작업.

      개발 작업에 의한 산출물이 요구와 일치하는지 품질 수준에 맞는지 검사함.

 

ⓒ 프로젝트 관리

    : 개발과 품질 보증 작업을 관리하고 감독하는 일.

      노력 예측, 프로젝트 계획, 일정, 리스크 관리, 행정 등.

      소프트웨어 시스템이 정해진 일정과 예산 내에 인도될 수 있도록 확인하는 작업. 

 

 

 

 

[출처]소프트웨어공학론(최은만 저, 정익사)

 

+ Recent posts