크리스의 개발일기

2020-11-04 실무교육 3일차 본문

카테고리 없음

2020-11-04 실무교육 3일차

ChrisJang 2020. 11. 5. 09:51

//2020-11-04

 

//삼항 연산자(Ternary operator)

//(조건)? 명령문1 : 명령문2; 

var ternaryOper1 = (5>4? 50 : 40

console.log(ternaryOper1);

 

var ternaryOper2 = 0;

if(5 > 4){

    ternaryOper2 = 50;

}else{

    ternaryOper2 = 40;

}

console.log(ternaryOper2);

 

/*

[].forEach(callback, thisArg)

    :   for문과 마찬가지로 반복적인 기능을 수행할 떄 사용.

        하지만 for문 처럼 index와 조건식, increase를 정의하지 않아도 

        call back 함수를 통해 기능 수행 가능함

*/

const arr = [0,1,2,3,4,5,6,7,8,9,10];

 

arr.forEach(function(element){

    console.log(element); // 0 1 2 3 4 5 6 7 8 9 10

});

// 혹은 arrow 함수 가능

arr.forEach(element => console.log(element));

 

//홀수 배열 만들어보기

const oddArray = [];

 

arr.forEach(function(element){

    if(element%2==1) {

        oddArray.push(element);

    }

});

console.log(oddArray); // [ 1, 3, 5, 7, 9 ]

 

//callback 함수 인자

arr.forEach(function(element, index, array){

    console.log(`${array}의 ${index}번째 요소 : ${element}`);

});

 

//thisArg

const obj3 = {name: "kim"};

const obj4 = {name: "park"};

 

arr.forEach(function(element){

    console.log(`${this.name} - ${element}`);

}, obj3);

arr.forEach(function(element){

    console.log(`${this.name} - ${element}`);

}, obj4);

 

//object 표기법

//객체 : 유사의 데이터와 함수의 단일 또는 집합 모음

//객체에 속해있는 것을 각각 프로퍼티와 메소드라 칭함

let objTest = {}; // 새로운 객체 선언

 

objTest = { // 객체 값을 새로이 할당

  name: `yeonkor`,

  age: 28,

  sex: `male`,

  interests: [`learning new``workout`],

  profile: function () {

    console.log(`${this.name} is ${this.age} years old `);

  }, // 템플릿 리터럴 사용 , 프로퍼티의 값으로 함수를 할당

  greeting: function () {

    console.log(`Hi ! I,m ${this.name} .`);

  },

};

 

//객체 안에서 갖게되는 변수들은 KEY, 프로퍼티라 부른다

//객체의 값으로 함수를 갖게 될때 메소드라 칭함



//Object : { 

//    A /* key 값 */ : 'A value', 

//    B /* key 값 */ : function(){ 

//          alert(`B value`); // 값이 함수일경우 메소드

//  }

   //  => 이러한 객체를 객체 리터럴이라고 부른다. 




//Object 표기법

//1. 점 표기법

//     : 객체의 내부는 캡슐화 되어있음. 

objTest.name;

objTest.interests[1];

objTest.prifle;

 

//2. 괄호 표기법

//프로퍼티에 접근법

objTest[`name`];

objTest[`interests[1]`];

objTest[`profile`];

 

//객체 맴버 설정

// 객체의 값을 새로 설정(갱신, 할당)이 가능하다.

objTest[`name`= `yeonkorKim`  // name 설정

objTest[`interests[1]`= `prototyping` // interests의 2번째 인덱스 설정

objTest[`profile`= function(){ 

  console.log(`ERROR!!`); // 로그 값 설정

}

 

//this

//this 키워드는 지금 동작하고 있는 코드를 가지고 있는 객체를 가리킴

profile: function this1() {

    console.log(`${this.name} is ${this.age} years old `);

    //  objTest의 메소드인 profile에서 사용되고 있는 this는 원 객체인 objTest와 동일하다.

}; 

greeting: function this2() {

    console.log(`Hi ! I'm ${this.name} .`); 

    // greeting 메소드 또한, objTest에서 속해서 실행되므로 this는 objTest이다.

};

 

// WS, WAS 특징

/*

웹 서버(Web Server)

    - 정적인 파일(html, js, 이미지 파일 등)을 제공하기 위한 서버

    - HTTP 프로토콜에 의해 제공

    - 정적인 파일로만 처리 가능한것은 WAS로 요청을 넘기지 않고 바로 처리

    - 요청이 많을 경우 WS에서는 웹문서를 양분하여 처리함

    - 예) apache, nginx, gws, etc...

 

웹 어플리케이션 서버(Web Application Server)

    - 동적인 데이터를 제공하기 위한 서버

    - 웹서버에서 처리할 수 없는 동적인 정보를 처리하여 웹서버에 정적 데이터 제공

    - 일반적으로 웹서버의 기능을 내제해 WS 없이도 서비스 가능

    - WAS와 DB가 연결되어 WAS에서 필요한 데이터를 꺼내와 원하는 정보로 가공

    - 예) tomcat, jeus, web logic, etc...

*/

 

/*

DMZ((Demilitarized zone) = 비무장지대

    - 내 외부 네트워크 구간사이에 위치한 중간지점으로, 

      침입차단시스템 등으로 접근 제한등을 수행하지만

      외부 네트워크에서 직접 접근이 가능한 영역

*/

 

/*

load balancing?

    - 인터넷 서비스에서 트래픽이 많이 발생할 때 서버가 분산처리하여

      서버의 로드율 증가시키고 부하량, 속도저하등을 고려하여 적절하게

      분산처리 해주는 서비스

*/

 

//JSP, SE는 main이 없는데 어떻게 실행될까??

 

//내장 객체

//https://wickies.tistory.com/25

 

Comments