@ css는 덮어쓴다는 느낌으로 작업해야 한다. 중요한 부분.

@ 자식이 float 되어 있으면 부모는 자식들을 안품고 있는거로 인식. 


- 기본 css 적용되는 태그들은 기본 css를 없애주는 것이 좋다. 브라우저마다 기본 css가 다르기 때문.

ex) border : none; , outline : none; 등


- 색상표는 RGB라고 하는데 빨강초록파랑 순으로 앞글자르 딴 것. 이걸 hex표기법이라 한다.


- background : no-repeat;

:: width나 height가 변하면 빈 공간에 이미지가 반복해서 채워지도록 되는데 반복 채워짐을 막는다.

:: 이건 백그라운드 작업시 사용

:: 이거 해도 다른 이미지가 채워지면 이미지용 span을 따로 두고 작업


- background-position : -4px -10px 4px 10px;

:: 앞에 -를 붙이면 왼쪽 위쪽, -가 없으면 오른쪽 아래쪽 으로 width와 height를 줄 수 있다.


- background-image : url( 주소 또는 경로);

:: 해당 주소나 경로에 있는 이미지를 백그라운드에 적용


- background : url(주소 또는 경로) -4px -10px no-repeat; // 위의 3개 코드를 한번에 적용


- text-decoration : none;

:: a 태그의 밑줄 제거

 

- box-sizing : border-box

:: 컨텐트 사이즈를 margin,border,padding까지 합친 크기로 계산하도록 함

:: *로 지정해서 사용


- box-sizing: content-box

:: 컨텐츠 사이즈를 margin,border,padding을 제외한 컨텐츠 사이즈 크기로 계산하도록 함

:: *로 지정해서 사용


- *{} (에스터레스크)

:: 모든 태그에 속성 지정을 할 수 있다.


- vertical-align :

:: 세로 정렬로 display가 inline이나 inline-block일 경우에만 지정 가능.


- list-style : none

:: ul의 점을 없애줌


- clear : both

:: 위에서 적용된 설정 제거


- 태그 : after or before

:: after는 태그 뒤에 가상 엘리먼트를 적용

:: before는 태그 앞에 가상 엘리먼트를 적용


- @ media screen and (min-width: 700px)

:: 모바일 반응형 코드로 화면 크기가 700픽셀이 넘어가게 되면 

내부의 코드가 실행되도록 하는 속성


- display: flex 

:: 기본 동작은 자식들의 배치 상태를 inline, inline-block처럼  배치


- flex-direction : row or colum

:: 가로로 배치할지 세로로 배치할지 배치 방향 지정


- flex-direction : row-revers or colum-revers

:: 세로 or 가로로 배치하면서 기존 배치에서 반대로 배치


- flex-wrap : nowrap

:: 인터넷 창이 컨텐츠보다 줄어들었을 경우 밑으로 안떨어지고 overflow됨

:: display:flex 되면 기본 지정됨


- flex-wrap : wrap

:: 인터넷 창이 컨텐츠보다 줄어들었을 경우 내용이 밑으로 떨어짐


- flex-wrap : wrap-revers

:: 떨어지는 순서가 wrap의 반대


- flex : 숫자

:: 기본 값으로 flex-basis : 0; 이 적용됨

:: 전체 여백을 지정한 비율로 나눔


- flex-grow : 숫자

:: 남은 여백을 지정된 숫자 비율로 나누어 가짐

:: 화면이 늘어날 때의 비율을 지정


- flex-shrink : 숫자

:: 남은 여백을 지정된 숫자 비율로 나누어 가짐

:: 화면이 줄어들을 때의 비율을 지정


- flex-basis : 0

:: 전체를 여백으로 치고 컨텐츠를 grow에서 지정한 비율대로 나눔


- flex-basis : auto

:: 전체를 여백으로 치지 않고 grow상태처럼 나눔


- justify-content : flex-start

:: 지금 현재 축 방향으로 위치를 시작지점으로 정렬


- justify-content : flex-end

:: 끝 지점으로 정렬


- justify-content : flex-center

:: 가운데 지점으로 정렬


- justify-content : space-between

:: 각 컨텐츠 사이에 동일한 여백을 부여


- justify-content : space-around

:: space-between에서 양끝에도 여백을 부여


- align-items : stretch

:: justify의 축 반대방향으로 정렬

:: 기본값


- align-items : flex-start

:: 시작지점으로 붙음


- align-items : flex-end

:: 끝 지점으로 붙음


- align-items : center

:: 가운데 지점으로 붙음


- align-content : flex-start

:: flex-wrap: wrap인 상태에서 밑으로 떨어지는 컨텐츠를 시작 지점으로 모아줌


- align-content : flex-end

:: flex-wrap: wrap인 상태에서 밑으로 떨어지는 컨텐츠를 끝 지점으로 모아줌


- align-content : center

:: flex-wrap: wrap인 상태에서 밑으로 떨어지는 컨텐츠를 가운데 지점으로 모아줌


- align-content : space-between

- align-content : space-around

'프로그래밍 > HTML_CSS' 카테고리의 다른 글

html 레이아웃  (0) 2020.05.12
html 가상요소  (0) 2020.05.11
HTML5  (0) 2018.07.22

[ DIV ]

:: 영역을 구분지을 수 있게 해주는 엘리먼트


[ 속성 ]


position

static

 css로 특별한 값을 지정해 주지 않아도 지정되는 값

중첩되지 않는 div를 여러개 지정하면 블럭처럼 쌓이는 기본 형식

relative 

하나만 지정할 경우 static과 별 차이가 없지만, 두개 이상 지정할 경우 하위 div는 absolute를 지정할 수 있다. 

absolute 

top, left, right, bottom 을 지정하여 원하는 위치에 지정하여 고정시킬 수있다. 

fixed 

absolute와 같다.  absolute는 스크롤을 내리면 따라 내려가고 올라가지만, fixed는 스크롤에 상관없이 지정한 위치에 고정한다.

inherit 

상위 div의 지정값을 상속받는다. 


float

left 

 left에 설정된 엘리먼트가 html 코드에서 바로 다음 엘리먼트의 왼쪽에 위치하게 된다.

right 

다음 엘리먼트의 우측에 위치하게 된다. 

none 

속성을 부여하지 않는다. 자연스럽게 쌓이는 형태 

inherit 

상위에서 지정한 값을 상속받는다. 

clear

위에서 지정한 float속성들은 아래에도 영향을 받기 때문에 초기화가 필요한데 그 역할을 하는 속성

left, right 를 clear : left; 이런식으로 설정하며 both로 지정하면 둘다 초기화 시킨다. 



overflow

 visible

내용을 자르지 않고 밖까지 넘어가도록 허용 

hidden 

박스를 넘어갈 경우, 넘어가는 부분을 숨긴다.

잘림부분의 크기와 모양은 clip속성에 의해 결정된다 

scroll 

기본적으로 박스에 스크롤을 제공 

auto 

박스는 고정하고 컨텐츠의 양이 박스를 넘어갈 경우 스크롤을 만든다. 



'프로그래밍 > HTML_CSS' 카테고리의 다른 글

css 속성  (0) 2020.05.13
html 가상요소  (0) 2020.05.11
HTML5  (0) 2018.07.22


요소 

내용 

::first-line 

요소의 텍스트에서 첫 줄에 스타일 적용 

::first-letter 

요소의 첫 번째 끌자에 스타일 적용

::before 

요소의 콘텐츠 시작 부분에 생성된 콘텐츠 추가 

::after 

요소의 콘텐츠 끝부분에 생성된 콘텐츠 추가 

::selection 

요소의 텍스트에서 사용자에 의해 선택(드래그)된 영역의 속성을 변경 

::placeholder 

Input 필드에 힌트 텍스트에 스타일 적용 



<content=>

속성 

내용 

normal 

아무것도 표시하지 않는 기본값 

string 

문자열 생성 

image 

이미지, 비디오를 불러올 수 있고 크기 조절 불가능함 

counter 

순서를 매길 수 있다.

counter-increment,counter-reset 함께 사용 

none 

아무것도 표시하지 않음 

attr 

해당 속성의 속성값 표시 


'프로그래밍 > HTML_CSS' 카테고리의 다른 글

css 속성  (0) 2020.05.13
html 레이아웃  (0) 2020.05.12
HTML5  (0) 2018.07.22


[ BOM(browser Object Model),브라우저 객체 모델 ]

:: 웹 브라우저와 관련된 객체의 집합으로 window라는 최상위 객체에서 파생된 수많은 하위 객체를 포함

:: 각각 하위 객체들은 계층 구조에 의해 정의되어 있고 접근할 수 있다.

:: 브라우저 창 하나에는 각각 하나의 window 객체가 있다.


- window 객체 내 포함된 객체들

:: location, navigator, history, screen, document 등


- 내장 객체

:: Date, Math, String, Array 등


- 사용자 정의 객체

:: 자바스크립트에는 많은 객체들이 내장되어 있지만 보다 효율적인 작업을 위해 객체를 직접 정의해서 사용하기도 한다.

:: 생성자(Constructor)와 new keyword를 이용하여 만든다.



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


:: 기본 타입을 제외한 모든 값은 객체

:: 배열,함수,정규 표현식 등도 모두 자바스크립트 객체

:: 객체(참조 값)란 특정 '참조 타입'의 인스턴스


- 객체

:: 이름(value) : 값(name) 형태의 프로퍼티들을 저장하는 컨테이너

:: 기본타입은 하나의 값을 가지지만 참조타입인 객체는 여러 개의 프로퍼티들을 포함할 수있고,

기본 타입의 값을 포함하거나 다른 객체를 가리킬 수 있다.


:: 이런 프로퍼티의 성질에 따라 함수도 포함할 수 있고, 이것을 메서드라 한다.



'프로그래밍 > Script' 카테고리의 다른 글

javascript 함수  (0) 2020.05.08
javascript 문법  (0) 2020.05.08


< 함수 >

:: 특정 작업을 수행하는 각 코드를 하나로 묶어 놓은 것

:: 자바스크립트에서 함수는 객체

:: 모든 함수는 Function 타입의 인스턴스로 다른 참조 타입과 마찬가지로 프로퍼티와 메서드가 있다.


* 함수 정의

:: 함수의 생성방법 3가지가 존재


- 함수 선언문(function statement)

- 함수 표현식(function expression)

- Function() 생성자 함수


* 함수 리터럴

:: 객체 리터럴, 배열 리터럴 방식으로 생성할 수 있는 것처럼 자바스크립트 함수도 함수 리터럴을 이용해 함수 생성 가능

:: 함수 선언문이나 함수 표현식 방법 모두 이런 함수 리터럴 방식으로 함수를 생성


- 함수 선언문 방식으로 함수 생성

:: 함수 선언문 방식은 함수 리터럴 형태와 같다

:: 함수명이 반드시 정의되어 있어야 한다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function 함수명([parameter1, parameter2,...]){
    //....
}
 
:: 함수를 선언할 때 function키워드 사용
:: 함수 선언부에 함수의 리턴타입은 명시하지 않음
:: parameter를 사용하지 않으면 괄호 안을 비운다
:: 함수를 <body>태그 내에서 호출할 때 <script>~</script>내에 하도록 한다.
:: parameter를 선언할 때 var 키워드를 사용하지 않는다.
:: 함수에서 값 전달 방식은 passing by value 방식을 취한다.
:: 페이지의 head에 모든 함수를 정의하는 것이 일반적이고, 이는 페이지가 읽혀질 때 이 함수들이 먼저 읽혀짐
:: 함수에서 문장은 현재 페이지에서 정의한 다른 함수를 호출할 수도 있다.
:: 함수는 재귀 호출, 즉 자기 자신을 호출할 수 있다.
:: return 문을 만나면 자바스크립트 코드는 더 이상 수행되지 않는다.
 
// a() 함수 선언문
 
function a(x,y){
    return x + y;
}
console.log(a(10,20)); 



- 함수 표현식 방식으로 함수 생성

:: 자바스크립트는 함수도 하나의 값으로 취급

:: 함수도 숫자나 문자열 변수에 저장하는 것이 가능

:: 함수 리터럴로 하나의 함수를 만들고 여기서 생성된 함수를 변수에 저장하여 함수를 생성하는 것을 함수 표현식이라고 한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
함수명 = function([parameter1, parameter2,...]){
    //....
}
 
// a() 함수 표현식
 
var a = function(x,y) { //익명함수
    return x + y;
};
var p = a;
console.log(a(1,2)); // 3
console.log(p(1,2)); // 3
 
:: 함수 표현식 방법에서 함수 이름이 선택 사항이며, 함수 이름이 없으면 익명 함수라고 한다. 
이를 익명함수를 이용한 함수 표현식 방법이라고 한다
:: 함수 이름이 포함된 함수 표현식은 기명 함수 표현식이라고 한다.
 
// 기명함수 표현식
 
var a = function sum(x,y){
    return x + y;
}
console.log(a(1,2));
console.log(sum(1,2)); //error: sum is not defined
 
:: sum()함수를 정의하고 a함수 변수에 저장.
:: 함수 표현식에서 사용된 함수 이름은 외부 코드에서 접근이 불가능하기 때문에 error 발생
:: 사용된 함수 이름은 정의된 함수 내부에서 해당 함수를 재귀적으로 호출하거나 디버거 등에서
함수를 구분할 때 사용
 
// 기명함수 표현식을 이용한 재귀적 호출
// 팩토리얼 함수
 
var fact = function factorial(n) {
     if(n <= 1){
        return 1;
    } else {
            return n * factorial(n-1);
    }
};
console.log(fact(4)); //24



- Function() 생성자 함수를 통한 함수 생성

:: 자바스크립트 함수도 Function()이라는 기본 내장 생성자 함수로부터 생성된 객체다

:: 함수 선언문,함수 표현식 방식은 함수 리터럴 방식으로 함수를 생성하지만, 내부적으로는

Function() 생성자 함수로 함수가 생성됨

1
2
3
4
5
6
// Function() 생성자 함수를 이용한 a()함수 생성
 
var a = Function('x','y','return x+y');
console.log(a(1,2)); //3
 
:: 하지만 function() 생성자 함수를 이용한 방식은 잘 쓰이지 않음




* 함수 호이스팅(hoisting)

:: 함수 선언문에서의 함수 호이스팅

:: 함수가 정의되지 않은 시점에서도 정의되기 이전의 함수를 호출하는 것이 가능

:: 함수가 자신이 위치한 코드에 상관없이 함수 선언문 형태로 정의한 함수의 유효범위는 코드의 맨 처음부터 시작

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
console.log(plus(1,1)); //2
 
function plus(a,b){
    return a + b;
}
 
:: 함수 표현식 형태로 정의되어 있으면 호이스팅이 일어나지 않는다.
 
console.log(plus(1,1)); // uncaught type error!
 
// 함수 표현식 방식
 
var plus = function(a,b){
    return a+b;
}
console.log(plus(1,1));



* 함수 객체의 기본 프로퍼티

- name

:: 자바스크립트 함수의 name 프로퍼티는 함수의 이름을 나타냄

- caller

:: 자바스크립트 함수의 caller 프로퍼티는 자신을 호출한 함수를 나타냄

- arguments

:: 자바스크립트 arguments 프로퍼티는 함수를 호출할 때 전달된 인자 값을 나타냄


1
2
3
4
5
6
7
8
function list(){
    for(var i = 0; i < list.arguments.length; i++)
        document.write("<li>"+list.arguments([i]);
}
list(1"경기도","서울",3);
 
:: length 프로퍼티는 함수가 넘겨받을 것으로 예상하는 이름 붙은 매개변수의 숫자로
함수가 정상적으로 실행될 때 기대되는 인자의 개수를 나타냄



* 자바스크립트 함수의 다양한 종류


- 콜백 함수

:: 익명 함수의 대표적인 용도가 콜백 함수

:: 코드를 통해 명시적으로 호출하는 코드가 아니라, 개발자는 함수를 등록하기만 하고 어떤 이벤트가 발생하거나 특정 시점에

도달했을 때 시스템에서 자동으로 호출되는 함수를 말한다.

:: 특정 인자(매개변수)로 너겨서 코드 내부에서 호출되는 함수도 콜백 함수

:: 대표적 사용 예가 @이벤트 핸들러 처리

1
2
3
4
5
6
7
8
9
// 페이지 로드 시 호출될 콜백 함수
 
window.onload = function(){
    alert("안녕하세요");
}
 
:: 웹페이지가 로드 되거나 마우스가 클릭되는 등의 DOM 이벤트가 발생한 경우
브라우저는 정의된 DOM 이벤트에 해당하는 이벤트 핸들러를 실행 시킨다.
:: 이벤트 핸들러에 콜백 함수가 등록돼있다면 콜백 함수는 이벤트가 발생할 때마다 브라우저에 의해 



- 즉시 실행 함수

:: 함수를 정의함과 동시에 바로 실행하는 함수

1
2
3
4
5
6
7
(function(name){
    console.log(name)
})('test'); //test출력
 
:: 함수 리터럴을 괄호()로 둘러싸준 다음 함수가 바로 호출될 수 있게 ()을 추가해주어 만든다
:: 괄호 안에 값을 추가해주면 즉시 실행 함수의 인자(매개변수)로 바로 넘길 수 있다.
:: 최초 한 번의 실행만을 필요로 하는 초기화 코드 부분에 자주 사용됨



- 내부 함수

:: 자바스크립트에서는 함수 코드 내부에서도 다시 함수 정의가 가능

:: 함수 내부에 정의된 함수를 내부함수라고 한다.

:: 기능을 보다 강력하게 해주는 클로저를 생성하거나, 부모 함수 코드에서 외부에서의 접근을 막고

독립적인 헬퍼 함수를 구현하는 용도 등으로 사용


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// parent() 함수 정의
 
function parent(){
    var name = '엄마';
    var age = 50;
 
// child()함수 정의
 
function child(){
    var name = '나';
    console.log(name);
    console.log(age);
}
 
// parent()함수에서 child()함수 호출
    child();
}
parent();
child(); //오류
 
:: child() 내부 함수에서는 변수 age가 선언되지 않아도 child()함수가 호출됐을 때 값이 출력된다.
:: 변수 name은 child() 함수에 선언이 되어 있어 parent() 함수의 변수 name이 아닌 child() 함수의 변수 name의 값이 출력됨
:: 이게 가능한 이유는 자바스크립트의 스코프 체이닝 때문. 



- 함수를 리턴하는 함수

:: 자바스크립트에서는 함수도 객체이므로 일반 값처럼 함수 자체를 리턴할 수 있다.


1
2
3
4
5
6
7
8
9
function a() {
 console.log("animal");
 
return function(){
    console.log("tiger");
    }
}
var zoo = a(); // 출력값 "animal"
zoo(); // 출력값 "tiger"



* 자바스크립트 클로저

:: 자신의 범위(scope) 밖에 있는 변수들에 접근할 수 있는 함수

:: 자바스크립트의 모든 함수들은 클로저


- 클로저

:: 범위에 제약을 받지 않는 변수들을 포함하고 있는 코드블록이다. 이런 변수들은 코드 블록이나 글로벌 컨텍스트에서

정의되지 않고 코드 블록이 정의된 환경에서 정의된다.

:: 실행할 코드블록(자유 변수의 관점에서 변수 레퍼런스와 관련하여 폐쇄적이지 않는)과 자유변수들에 대한 바인딩을 제공하는 평가 환경(범위)의 결합에서 탄생


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
var sequencer = function() {
    var s = 0;
    return function(){
        return ++s;
    }
};
 
/*
    seq 함수는 이런 구조를 가지고 반환될 것
function seq(){
    return ++s;
}
*/
seq(); // 1
seq(); // 2
seq(); // 3
 
:: 보통 언어의 seq() 결과는 모두 1 이지만 자바스크립트는 다른다
:: 이미 sequencer 내부의 s변수는 다른 언어에서는 유효범위를 벗어난 쓸 수 없는 변수로
자바 같은 가비지 컬렉터를 가진 언어에서는 가비지 컬렉팅의 대상이 된다.
:: 자신이 선언된 환경에 대해 연결을 갖고 예제에서 반환된 함수는 자신이 선언될 때의 환경인 sequencer의 유효범위에
대한 연결을 갖게 되고, ㅗ출하게 되면 그 연결을 통해 s 변수에 "직접" 접근한다.
하지만, 변수를 복사 하는게 아니라 변수가 있는 객체를 참조하는 것.
:: s변수를 복사했다면 반환되는 값은 항상 1 이어야 한다.
 
// 모든 li 태그를 클릭할 때 자신의 순번을 표시하는 예제
 
var items = document.getElementsByTagName("li");
for(var i=0; i<items.length; i++){
    items[i].onclick = function(event){
        alert("My Sequence is " + (i+1)); //자신의 순번 출력
    }
}
 
:: 여기서 우리가 기대한 ㅏㅄ은 li태그를 클릭할 때 자신이 문서에 사용된 순서를 출력하는것
:: 여기서 출력하는 값은 li의 제일 마지막 순번의 값에 1을 더한 값만이 출력된다.
:: 값이 복사된 것이 아닌 변수에 직접 접근하고 있기 때문
:: for문이 종료되는 시점의 i값은 4 이며, 핸들러는 그것에 직접 접근하여 1을 더한 값만을 출력하게 되는 것
 
// 위의 함수가 제대로 동작하도록 수정
 
var items = document.getElementsByTagName("li");
forvar i = 0; i < items.length; i++){
    (function() { //새로운 스코프 선언
        var idx = i; //클로저가 접근할 변수 선언
        items[i].onclick = function(event){
            alert("My Sequence is " + (idx+1));
        }
    })(); //함수 생성과 동시에 호출(즉시 실행 함수)
}
 
:: 이벤트 함수인 클로저가 참조하는 대상이 i가 아닌 새로운 스코프의 idx가 되었다.
:: 막강한 문법이긴 하지만 주의할 점이 있는데, 함수가 메서드로 호출될 때 외부 함수의 this 키워드와 특수한 변수인 arguments에
는 정상적인 접근이 되지 않는다. 정확하게는 저 둘에 대해서는 메서드를 소유한 객체의 this에 연결되지 못한다.
 
// 아래 코드를 보면
 
window.name = "window";
var object ={
        name:"object",
        getName: function(){
            function findName(){
                return "my name is " + this.name;
            }
            return findName();
        }
}
object.getName(); // my name is window
 
:: 위의 코드는 의도와는 다른 동작을 보인다.
:: my name is object가 아닌 my name is window가 출력된다.
:: 메서드 내부의 함수가 실행될 때 this가 메서드를 소유한 객체에 연결된 것이 아닌, 글로벌 객체에 연결되었기 때문.
 
// 따라서 위 코드에서 getName 부부을 수정한다.
window.name = "window";
var object ={
        name:"object",
        getName: function(){
            var that = "this"// this를 따로 변수에 할당해둬 내부 함수가 접근 가능하도록 한다.
            function findName(){
                return "my name is " + that.name;
            }
            return findName();
        }
}


* 자바스크립트 내장 함수

:: 자바스크립트 자체적으로 제공되는 함수


- 타이머 함수

:: 특정한 시간에 특정한 함수를 실행


-) setTimeout(function, millisecond)

::일정 시간 후 함수를 한 번 실행

-) setInterval(function, millisecond)

:: 일정 시간마다 함수를 반복 실행

-) clearTimeout(id)

:: 일정 시간 후 함수를 한 번 실행하는 것을 중지

-) clearInterval(id)

:: 일정 시간마다 함수를 반복하는 것을 중단


- 인코딩과 디코딩 함수

1) 인코딩

:: 문자를 컴퓨터에 저장 또는 통신에 사용할 목적으로 부호화하는 방법

2) 디코딩   

:: 부호화 된 문자를 원래대로 되돌리는 것


-) escape()

:: 영문 알파벳과 숫자,일부 특수문자(@,*,-,_,+,.,/)를 제외 문자만 인코딩


-) unescape()

:: 영문 알파벳,숫자,일부 특수문자(@,*,-,_,+,.,/)를 제외 문자만 디코딩


-) encodeURI(uri)

:: 인터넷 주소에 사용되는 일부 특수문자(:, ;, /, =, ?, &)를 제외 문자만 인코딩


-) decodeURI(encodedURI)

:: 인터넷 주소에 사용되는 일부 특수문자(:, ;, /, =, ?, &)를 제외 문자만 디코딩

-) encodeURIComponent(uriComponent)

:: 알파벳과 숫자를 제외한 모든 문자를 모두 인코딩

-) decodeURIComponent(encodedURI)

:: 알파벳과 숫자를 제외한 모든 문자를 모두 디코딩


- 코드 실행 함수

:: 문자열을 코드로 실행 할 수 있는 특별한 함수

:: eval() 함수로 실행 된 코드에서 정의한 변수도 활용 가능


-) eval(string)

:: string을 자바스크립트 코드로 실행


- 숫자 확인 함수

:: 변수에 숫자가 무한한지, number인지 확인


-) isFinite()

:: number가 무한한 값인지 확인, 유한한 수이면 true를 리턴


-) isNaN()

:: number가 숫자인지 확인, 숫자가 아니면 true를 리턴


- 숫자 변환 함수

:: Number() 함수의 단점(숫자로 바꿀 수 없으면 NaN으로 변환)을 보완한 숫자 변환 함수 제공

:: parseInt() 함수와 parseFloat() 함수는 앞에서부터 숫자로 변환할 수 있는 부분까지는 모두 숫자로 변환

:: 0으로 시작하거나 0x로 시작하면 10진수가 아니라 8진수, 16진수로 생각하고 변환

:: parseInt() 함수의 두 번째 매개변수에 진법을 입력하면 앞의 수를 해당 진법의 수로 인식


-) parseInt(string)

:: string을 정수로 변환

-) parseFloat(string)

:: string을 소수로 변환


* 자바스크립트 경고창 및 입력


- alert() 메서드

:: 사용자에게 필요한 정보를 디스플레이 하는 독립된 메시지 윈도우를 만들며 ok버튼만 존재하는 모달 대화상자.


1
alert("message"// message는 텍스트 문자열 




- prompt() 메서드

:: 문자열을 입력할 때 사용


1
2
3
4
String prompt([String message], [String defaultValue])
 
:: 첫 번째 매개변수는 입력 창에서 띄워줄 메시지
:: 두 번째 매개변수는 입력 부분의 기본 값 



- confirm() 메서드

:: boolean 값을 입력 받을 때 사용

:: 확인을 누르면 true를 리턴

:: 취소를 누르면 false를 리턴

1
2
var input = confirm('작성하시겠습니까');
alert(input);




* 예외 처리(Exception handling)

:: 프로그램이 실행되는 동안 문제가 발생할 때 대처할 수 있게 처리하는 것


- 예외(Exception)

:: 프로그램 실행 중 발생하는 오류

- 에러(Error)

:: 프로그래밍 언어의 문법적인 오류


- 예외 처리

:: try 키워드, catch 키워드, finally 키워드로 예외 처리

:: try 구문 안에서 예외가 발생하면 catch 구문에서 처리, finally 구문은 필수 사항은 아니고 예외 발생

여부와 상관없이 수행돼야 하는 작업을 처리


1
2
3
4
5
6
7
8
9
try{
    // tryCode;
}
catch(e){
    // catchCode;
}
finally{
    //finallyCode;
}



- 예외 객체

:: try~catch 구문을 사용할 때 catch 괄호 안에 입력하는 식별자

:: e 또는 exception 식별자를 사용

:

-) 예외 객체의 속성

:: message = 예외 매시지

:: description = 예외 설명

:: name  = 예외 이름


- 예외 강제 발생

:: 예외를 강제로 발생시키는 throw 키워드 사용

:: 에러와 다르게 예외는 try~catch 구문으로 처리할 수 있다.


* 동적 HTML 관련 함수 및 속성(JavaScript HTML DOM - Changing HTML)


- object.getElemantsByName(elementid)

:: id 애트리뷰트 값에 맞는 처음 객체를 반환


- object.getElementsByName(name)

:: name 애트리뷰트의 값에 기초하여 객체들의 컬렉션을 반환


- document.write(text)

:: HTML 출력 스트림에 직접 출력


- object.innerHTML

:: innerHTML 속성을 지원하는 객체의 시작 태그와 종료 태그 사이에 있는 HTML을 설정하거나 가지오 올 수가 있다.

:: innerHTML 속성은 해당 웹 문서를 완전히 읽어들인 후(onload 이벤트 발생 후)에 사용할 수 있다.

:: innerHTML, innerText, outerHTML, outerText 속성은 <table>,<td>,<div>,<span>,<p> 등에서만 사용 가능하고

<input>,<img> 태그에서는 사용할 수 없다.


- object.innerText

:: innerText 속성을 지원하는 객체의 시작 태그와 종료 태그 사이에 있는 텍스트를 설정하거나 가지고 올 수 있다.

:: HTML 태그를 삽입하여도 태그 자체를 텍스트로 인식


- object.outerHTML

:: 해당 텍스트를 포함하고 있는 태그 요소까지 모두 새로운 내용을 새로운 HTML항목으로 바꿀 때 사용


- object.outerText

:: 해당 텍스트를 포함하고 있는 태그 요소까지 모두 새로운 텍스트로 변경되어 진다.


'프로그래밍 > Script' 카테고리의 다른 글

javascript 객체  (0) 2020.05.08
javascript 문법  (0) 2020.05.08

< 브라우저 개발자도구를 이용한 로그 출력 >

- console.log("message") [ IE9 이하는 작동하지 않을 수 있다]

:: var console = window.console || {log:function(){}; 를 상단에 추가하면 에러가 나지 않고 서비스가 가능.


- console.dir(object)

:: 지정한 객체를 콘솔 창에 보내고 객체 시각화 도우미에 표시

:: 시각화 도우미를 사용하여 콘솔 창에서 속성을 검사할 수 있다.



[ 기본 문법 ]


< 프로그램 구성 요소 >


* 키워드(Keyword)

:: 미리 정의된 단어들로 사용자가 다른 목적으로 사용될 수 없다.

:: 예약어(reserved word)라고 표현

:: 키워드로 정의되어 있는 것을 변수로 사용하면 javascript는 키워드로 인식하므로 변수의 역할을 할 수 없다.


* 식별자(Identifier)

:: 사용자에 의해 정의되고 사용되어 지는 것으로 Object명, 변수명이나 함수명 등을 들 수 있다.

:: 특수한 목적으로 사용되는 변수나 함수명은 다른 변수나 함수와 구분해야 하므로 자기만의 독특한 이름을 가져야 한다.


* 리터럴(Literals)

:: 변수는 프로그램 실행 중 변할 수 있는 값인 반면, 리터럴 또는 상수(Constant)는 변할 수 없이 고정되어 있는 값.


* 연산자(Operator)

:: 프로그램 수행 중 연산을 처리하기 위해 사용되는 것으로 산술연산자, 논리연산자, 비교연산자, 대입연산자 등이 있다.


* 주석(Comment)

:: 프로그램의 설명을 위해 들어가는 문장

:: 프로그램 실행 외에 아무런 영향을 주지 않음

:: 다른 사람이 프로그램을 이해하는데 도움을 주기 위해 사용

-단문주석( //내용)

-여러줄주석( /* 내용 */


* <!-- -->

:: 자바스크립트를 지원하는 브라우저를 제외한 다른 브라우저는 <script>태그를 무시하게되어 <script>태그 안의 코드가

그대로 화면에 나타나게됨

:: 이 주석태그를 이용하여 코드를 보이지 않게 한다.


* ,(콤마)

:: 변수 선언에서 연속적인 식별자들을 구분


* ()(괄호)

:: 함수 정의와 호출 시 매개변수 목록을 보유

:: 표현식 우선순위를 변경하기 위해 사용하거나 제어 문장과 자료형 변환에서 표현식을 수용한다.


* {}

:: 배열을 초기화하거나 함수,지역 영역(local scope)을 설정하기 위해 사용


* .(dot)

:: Object의 메소드나 속성을 접근하기 위해 사용


* []

:: 배열(matrix) 자료형을 정의하거나 매트릭스에 있는 값을 참조


* ;(semicolon)

:: 한 문장의 끝을 의미

:: 한줄에 여러 문장을 기술할 수 있고 생략가능


* 공백문자(white space)

:: 프로그램의 구성 요소를 구분하는 기능을 가짐

:: 공백에 space,tab문자 포함


< 상수(Literal) or 변수(Variable)>


* 상수

- 정수

:: 10진수형 : 숫자 0~9로 구성된 자연수

:: 8진수형 : 0~7로 구성되며, 상수 앞에 0을 붙임

:: 16진수형 : 0~9,A~F 이내로 구성되며 상수 앞에 0x 를 붙임


- 실수

:: 소수점 이하의 수치를 다룰 수 있는 숫자 자료형


- 논리형

:: 비교연산이나 논리연산에 사용되는 값인 참과 거짓을 나타내는 true,false 두 가지 값만을 갖는 자료형


- 문자열(String)

:: 0개 혹은 그 이상의 문자들로 구성된 "" 혹은 ''로 묶여진 문자들의 나열

:: 길이가 0개인 문자열도 존재할 수 있다.

- null

:: 지정되지 않은 값

:: 정의되지 않은 상태를 나타내는 값을 나타낼 목적으로 특수하게 사용되는 자료형

:: 값이 정해지지않은 변수의 값이나 prompt대화상자에서 취소 버튼을 눌렀을 때 반환되는 값 등을 나타내는데 사용

:: javascript의 null은 길이가 0인 문자열, 즉 ""와는 다르다.

* 변수

- 형식

:: var 변수명[= 초기값][, 변수명 ..]


- 변수 선언 예

:: var a, b;

:: var a = 1;


% 세미콜론은 생략 가능하나 일반적으로 붙여서 사용


- 변수, Object, 함수명 작성규칙

:: 알파벳이나 _ 로 시작해야 한다

:: 대문자와 소문자 구분

:: 스페이스, 콤마, 물음표, 인용부호 사용 불가능

:: 예약어 사용 불가능

:: 한글이름 사용 불가능


* 자바스크립트 데이터 타입


:: 기본타입과 참조 타입으로 구분

- 기본 데이터 타입

:: 숫자, 문자열, boolean, undefined, null

- 참조 데이터 타입

:: 객체, 배열


* undefined 와 null


:: 값이 비어있음을 나타냄

- undefined

:: 값이 저장되지(초기화되지) 않은 변수

:: 변수 자체의 값이 undefined

:: 타입이자 값

- null

:: 개발자가 명시적으로 값이 비어있음을 나타내는데 사용

:: 변수의 값은 결과가 null이 아니라 Object

:: 빈 객체를 참조하는 특별한 값

:: null타입의 변수를 확인해야할 때 typeof 연산자를 사용하지 않고 일치연산자(===)를 사용해 확인


< 자바스크립트 자료형 검사>


* typeof 연산자

:: 자료형을 확인 할 때 주로 사용

:: a = typeof( 값 );


< 자바스크립트 자료형 변환 >


* 자동 자료형 변환

:: 숫자와 문자열을 덧셈 연산 할 경우 문자열이 우선

:: 그 외 사칙 연산자는 숫자가 우선


* 숫자와 문자열 자료형 변환

:: 자동으로 자료형이 변환되는 것 이외에 강제로 자료형을 변환하는 방법

:: 문자열로 변환 - String()함수

:: 숫자로 변환 - Number()함수


1
2
3
4
5
6
7
8
var inputString = "123";
console.log(typeof(inputString)); // string
 
var numberInput = Number(inputString);
console.log(typeof(numberInput)); // number
 
var stringInput = String(inputString);
console.log(typeof(stringInput)); // string



* 불린 자료형 변환

:: 불린으로 변환 : Boolean()함수

:: 아래 5가지 제외한 모든 경우 true

:: 문자열 '0'과 문자열 'false'는 문자열이므로 true


1
2
3
4
5
= Boolean(0); 
= Boolean(NaN);
= Boolean('')
= Boolean(null);
= Boolean(undefined);


 


< 연산자 >


* 산술 연산자 

- + : 덧셈 연산자

- - : 뺄셈 연산자

- * : 곱셈 연산자

- / : 나눗셈 연산자

- % : 나머지 연산자

- - : 부호의 반전

- ++ : 증가 연산자

- -- : 감소 연산자


* 문자열 결합 연산자

:: 문자열을 대상으로 하는 기본적인 연산자 기능은 병합

- + : 두개의 피 연산자 문자열을 병합한 문자열이 결과

- += : 문자열 병합기능을 가진 대입 연산자


* 비교 연산자

:: 오퍼랜드가 두 개인 이항 연산자로 수식을 오퍼랜드로 취하여 결과 값이 참인 경우 true, 거짓이면 false를 반환

- < : ~보다 작다

- <= : ~보다 작거나 같다

- > : ~보다 크다

- >= : ~보다 크거나 같다

- == : ~와 같다

- === : 동치

- != : ~와 같지 않다

- !== : 동치 아님


* 논리 연산자

- && : AND(논리곱)

- || : OR(논리합)

- ! : NOT(논리 부정)


* 비트 연산자

- ~ : 해당 비트를 반전( 0->1, 1->0)

- & : 비트 단위 AND

- | : 비트 단위 OR

- ^ : 비트 단위 Exclusive OR

- >> : 산술적 우측 Shift 연산자

- << : 산술적 좌측 Shift 연산자

- >>> : 논리적 우측 Shift 연산자


* 대입 연산자

:: 대입 연산자 '='는 좌우의 값이 서로 같다(equal)는 수학적인 의미가 아닌, 우측의 값을 좌측에 대입(assign) 한다는 의미를 갖고 있다.


- = : 우변의 값을 좌변에 대입

- += : 덧셈 연산자

- -= : 뺼셈 연산자

- *= : 곱셈 연산자

- /= : 나눗셈 연산자

- %= : 나머지 연산자

- <<= : 산술적 좌측 Shift 연산자

- >>= : 산술적 우측 Shift 연산자

- >>>= : 논리적 우측 Shift 연산자

- &= : 비트 단위 AND

- ^= : 비트 단위 Exclusive OR

- |= : 비트 단위 OR



*  조건 연산자 

:: 삼항 연산자 또는 선택연산자라 한다.

:: 자바 언어중 유일하게 피연산자(operland)가 3개 필요한 연산자


- 형식

:: 변수 = 조건식 ? 값1 : 값2;

:: 조건이 참이면 값1, 거짓이면 값2를 갖는다


< 문장 및 제어 구조 >


* if문

:: 다음 조건이 참일 경우 특정 문장을 수행하고자 할 때 사용되는 문장


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//[형식1
 
if(조건식)
    문장1;
    문장2;
 
:: 조건식이 만족할 경우 문장1을 수행한 후 문장2를 수행
만족하지 않을 경우 문장2를 수행
조선식이 만족할 때 수행되는 문장1이 두개 이상이 오면 중괄호로 묶어서 블록 처리
 
// 형식2
 
if(조건식)
    문장1;
else
    문장2;
문장3;
 
:: 조건식이 만족하는 경우 문장1을 수행한 후 문장3을 수행
만족하지 않을 경우 문장2를 수행한 후 문장3을 수행
문장1이나 문장2가 두개 이상이 오면 중괄호로 묶어서 블록 처리
 
// 형식3
 
if(조건식1)
    문장1;
else if(조건식2)
    문장2;
else
    문장3;
 
문장n
 
:: 조건식1이 참이면 문장1 수행하고, 거짓일 경우 조건식2로 넘어간다
조건식2가 참이면 문장2를 수행하며, 모두 만족하지 않을 시 문장3을 수행
모든 조건 수식을 수행한 후 문장n을 수행\



* switch~case문

:: 다중 선택문이라 하고 switch문 다음의 수식 값에 따라 실행 순서를 여러 방향으로 분기할 때

사용되는 문장


1
2
3
4
5
6
7
8
9
10
// 형식1
 
switch(수식){
    case 상수 1 : 문장1; break;
    case 상수 2 : 문장2; break;
    default : 문장 n; break;
 
:: 수식 결과값과 case문의 상수가 일치하는 곳의 문장을 실행
:: 만족하는 상수가 없으면 default의 문장n을 수행
:: break가 case문 뒤에 없을 경우 다음 case문의 문장을 계속해서 수행



* while문

:: 조건식을 먼저 비교하여 조건식이 참일 경우 특정 영역을 반복 수행하는 문장

:: 반복 횟수가 정해져 있지 않거나 반복횟수가 많은 경우 사용


1
2
3
4
5
6
7
8
9
10
// 형식1
 
while(조건식){
    
    실행문;
}
 
:: 실행문이 하나인 경우 중괄호 생략 가능
:: while(true)와 같이 조건식을 true로 설정하면 무한루프(infinite loop)가 된다.
:: 조건식이 거짓일 경우 한 번도 수행하지 않는다.



* do ~ while문

:: 특정한 영역을 반복 수행하는 반복문으로 조건식을 나중에 비교


1
2
3
4
5
6
7
8
9
// 형식1
 
do {
    실행문;
 }
while(조건식);
 
:: 실행문을 먼저 수행한 후에 조건식을 비교하기 때문에 조건식을 만족하지 않아도 
루프의 몸체에 해당하는 실행문은 적어도 한번은 실행



* for문

:: 정해진 횟수만큼 반복해야 하는 경우 유용하게 사용되는 반복문

:: 반복 실행해야 하는 실행문이 하나인 경우 중괄호 생략 가능


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 형식1
 
for(수식1; 수식2; 수식3){
    실행문
}
 
:: 수식1은 루프 변수의 초기화를 위해 사용되어지며 한 번만 실행되며 ,(콤마)를 이용해 동시에 여러 
변수의 초기 값을 설정할 수 있다.
 
:: 수식2는 조건식을 나타내는 것으로 수식2가 만족하면 루프를 반복 수행하며 
수식2가 참이면 실행 문을 실행하고 수식3을 실행한 후 수식2의 조건식을 검사한다.
처음에 수식2가 거짓이면 for문은 루프를 한 번도 실행하지 않는다.
 
:: 수식3은 루프 변수의 재초기화를 위해 사용되어지며 ,(콤마)를 이용해 여러 문장을 동시에 수행할 수 있다.
:: for(;;;)처럼 조건식에 아무것도 기술하지 않으면 무한루프가 된다.



* break문

:: 반복문이나 switch문 내의 블록으로부터 제어가 빠져나오기 위해서 사용되어진다.

:: break ;

:: while, do~while,for,switch문과 함께 사용되어지며 반복문에 사용되는 경우 한 번에 하나의 반복문을 빠져나올 수 있다.

:: if()문에 의한 블록에서는 적용되지 않는다.


* continue문

:: 반복문(while,do~while,for) 와 함께 사용됨

:: 반복문의 제어식(조건)으로 실행제어를 옮기는 문장

:: continue;

:: 반복문 실행도중 continue문을 만나면 반복 구역 중 continue문 이후의 문장은 수행되지 않고 조건식으로 제어를 옮긴다.

:: 한 번에 하나의 반복문의 제어식으로 실행 제어를 옮긴다.


* return문

:: 함수의 실행을 끝내고 함수의 호출한 부분으로 되돌려주기 위해 사용됨

:: return; OR return 반환값;

:: 함수내의 나머지 부분의 실행과 상관없이 함수의 실행을 강제로 종료하고 제어를 호출한 쪽으로 

넘기기 위해 사용되어 진다.

:: return이 생략된 경우 메서드의 마지막 문장을 수행한 후 제어권을 넘긴다.

:: return 반환값;은 반환될 내용을 호출한 곳으로 반환한 후 제어를 호출한 쪽으로 넘긴다.



'프로그래밍 > Script' 카테고리의 다른 글

javascript 객체  (0) 2020.05.08
javascript 함수  (0) 2020.05.08

[@변수] 

:: 행이 바뀔 때마다 1씩 증가시키는 행 번호를 부여하기 위한 변수


[ DELIMITER ]

:: 명령의 끝을 알려주는 종료문자를 변경할 때 사용

:: 스토어드 프로시저 내에서 많은 세미콜론을 포함하기에 프로시저의 끝을 정확히 알 수 없어 별도의 구분자를 지정하여 사용

:: 종료문자 $$로 바꾸려면  DELIMITER $$



'프로그래밍 > MariaDB' 카테고리의 다른 글

함수 작성하기  (0) 2020.03.06
MariaDB Case문  (0) 2020.02.22
MariaDB JDBC 연결  (0) 2020.02.17
MariaDB 계정생성,권한 및 기본 명령  (0) 2020.01.27

CREATE FUNCTION "FUNCTION명" (변수값1 타입, 변수값2 타입) RETURN 타입
BEGIN

DECLARE 변수명 타입 // 변수선언
// 아래에는 조회할 SELECT 문장

SELECT

조회할 컬럼 A
INTO 변수명 // 조회할 컬럼 값인 A를 변수에 넣는다.

FROM 테이블명

WHERE 컬럼 = '변수값1'

AND 컬럼 = '변수값2'

RETURN 변수명

END


'프로그래밍 > MariaDB' 카테고리의 다른 글

Mariadb 메모  (0) 2020.03.06
MariaDB Case문  (0) 2020.02.22
MariaDB JDBC 연결  (0) 2020.02.17
MariaDB 계정생성,권한 및 기본 명령  (0) 2020.01.27

:: 모델2 패턴에서 DAO클래스는 Model 기능을 수행하고 있다. 하지만 실제로는 Service클래스를 만들어

  DAO클래스를 가기전 Service클래스를 거치도록 구현한다. 그 이유는 DAO클래스는 데이터베이스에 접근하는 기능을 수행하고

  Service클래스는 실제 프로그램을 업무에 적용하는 사용자 입장에서 업무 단위(단위 기능, 하나의 논리적인 기능), 즉 트랜잭션으로 작업을 수행한다.


:: 유지보수나 시스템의 확장성 면에서 유리하다.


[ 단위 기능 ]


- 게시판 글 조회 시 해당 글을 조회하는 기능과 조회 수를 갱신하는 기능

- 쇼핑몰에서 상품 주문 시 주문 상품을 테이블에 등록 후 주문자의 포인트를 갱신하는 기능

- 은행에서 송금 시 송금자의 잔고를 갱신하는 기능과 수신자의 잔고를 갱신하는 기능


* 단위기능 하나는 DAO의 n개의 sql문을 묶어 하나의 단위기능을 수행 할 수 있다.



'프로그래밍 > JSP' 카테고리의 다른 글

JSP DAO작성(Model)  (0) 2020.03.05
JSP 모델1과 모델2  (0) 2020.03.04
HTML5와 제이쿼리  (0) 2020.03.03
JSP 파일 업로드  (0) 2020.03.01
JSP 문자열 처리 함수  (0) 2020.02.28

[ 작성 예시 ]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public class MemberDAO {
    private DataSource dataFactory;
    private Connection conn;
    private PreparedStatement pstmt;
 
    public MemberDAO() {
        try {
            Context ctx = new InitialContext();
            Context envContext = (Context) ctx.lookup("java:/comp/env");
            dataFactory = (DataSource) envContext.lookup("jdbc/mariadb");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    public List<MemberVO> listMembers() {
        List<MemberVO> membersList = new ArrayList();
        try {
            conn = dataFactory.getConnection();
            String query = "select * from  member order by joinDate desc";
            System.out.println(query);
            pstmt = conn.prepareStatement(query);
            ResultSet rs = pstmt.executeQuery();
            while (rs.next()) {
                String id = rs.getString("id");
                String pwd = rs.getString("pwd");
                String name = rs.getString("name");
                String email = rs.getString("email");
                Date joinDate = rs.getDate("joinDate");
                MemberVO memberVO = new MemberVO(id, pwd, name, email, joinDate);
                membersList.add(memberVO);
            }
            rs.close();
            pstmt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return membersList;
    }
}



'프로그래밍 > JSP' 카테고리의 다른 글

JSP Service클래스를 두는 이유  (0) 2020.03.05
JSP 모델1과 모델2  (0) 2020.03.04
HTML5와 제이쿼리  (0) 2020.03.03
JSP 파일 업로드  (0) 2020.03.01
JSP 문자열 처리 함수  (0) 2020.02.28

+ Recent posts