동기 vs 비동기동기서버에서 아직 처리를 안 해줬으면 동작이 멈추는 것서버에 요청을 보낸 후 기다렸다가 해당 응답을 받아야 다음 동작을 실행 비동기서버에서 아직 처리를 안 해줬지만 클라이언트에서 동작이 멈추지 않음요청을 보낸 후 응답에 관계 없이 순차적으로 다음 코드를 먼저 실행AJAX, fetch, Promise, axios 1. AJAXJavaScript를 사용하여 서버로부터 비동기적으로 데이터를 가져오는 기술XML뿐만 아니라 JSON, 텍스트 등 다양한 데이터를 가져올 수 있음옛날에 쓰던 기술 장점오래된 브라우저에서 동작하기 때문에 호환성 높음단점코드가 길고 가독성이 떨어짐비동기 처리 코드가 복잡해질 수 있음const xhr = new XMLHttpRequest(); // XMLHttpRequest..
분류 전체보기
배열 객체 값 넣기let objList = [];objList.push({ value: 12 });objList.push({ value: 23 });objList.push({ value: 6 });objList.push({ value: 1 }); 배열 객체 정렬objList.sort(); a와 b를 가져와서 이 함수로 실행하는 것객체의 value라는 값을 가져와서 실행해라objList.sort((a, b) => a.value - b.value); 배열 객체 삭제// 배열의 맨 뒤의 값 삭제objList.pop(); 특정 값 포함 여부값이 포함되어 있다면 true, 포함되어 있지 않다면 falselet arr = [1, 2, 3, 4, 5];arr.includes(1); // truearr.inclu..
DOM이란?Document Object ModelHTML 문서를 브라우저에서 JavaScript로 접근하고 조작할 수 있도록 트리 구조로 표현한 것DOM을 활용하면 HTML 요소를 선택하고, 내용을 변경하거나 스타일을 변경할 수 있다.DOM 요소찾기getElement-* 함수 사용// 아이디로 찾기let getTagById = document.getElementById("subtitle");// 태그 이름으로 찾기let getTagByTagName = document.getElementsByTagName("h1");// 클래스로 찾기let getTagByClassName = document.getElementsByClassName("title"); querySelector, querySelectorAll..
변수와 상수 (var, let, const)변수 다루는 법// 변수 만드는 법let 변수;// 변수에 무언가를 저장하는 법변수 = 무언가;// 변수 사용하는 법변수 이름 var함수 스코프과거에 사용하던 변수 키워드중복 선언 가능var x;x = 10;var y = 5; let ES6에 새로 생긴 문법블록 스코프중복 선언 불가능, 재할당 가능let x;x = 10;let y = 5; const블록 스코프선언 후 값을 변경할 수 없음const x = 10;// x = 20; => 에러 발생 데이터 타입 (기본, 참조)변수 타입 확인// typeof 변수이름// type을 알려주는 문자열을 반환한다.let x = 10;console.log(typeof x); // "number" 데이터 타입은 크게 기본 ..
자바스크립트란?자바스크립트는 인터프리터 언어다.JS를 실행하기 위한 인터프리터 = 웹 브라우저nodejs -> 자바스크립트를 실행하기 위한 인터프리터 자바스크립트 코드가 하는 일백엔드에서 데이터를 가져오는 것웹 페이지에서 원하는 태그를 변경하는 것 (렌더링) 자바스크립트 작성 script 태그에 자바스크립트 코드를 넣거나, src로 js 파일을 연결해서 사용한다. 렌더링 때문에 보통 js를 제일 아래에 넣어준다.만약 백엔드에 게시글을 가져와 h1 태그 안에 내용을 DB에 저장되어 있는 제목으로 바꿔주려고 하는데,자바스크립트가 제목 위에 있다면 h1 태그가 아직 안 만들어졌을 수도 있다.그래서 보통 자바스크립트는 body의 제일 밑에 작성한다. html, css, javascript를 한 파일에 다 만들면..
12.9 ~ 12.13 6개월 교육 과정 중에 한 달이 벌써 끝났다 😂 시간 넘 빠른 거 아닌가요??? 멈춰줘 제발............아직 많이 부족하다고 생각하는데 회고 제목을 적으면서 벌써 한 달이 끝났다는 걸 생각하니까 조급해지는 느낌이다할 게 너무 많은데 하루가 너무 짧고... 그렇다고 주말까지 하자니 몸이랑 머리가 못 버티고... 아 그리구 동기 중 한 분이 제 블로그 정리 글을 너무 잘 봤다면서 편지랑 먹을 것들을 제 자리에 놓고 가셨는데감사 인사를 전하고 싶은데 누구신지 몰라서 못 드렸어요 혹시라도 제 회고글을 보고 계시다면.. 정말 감사합니다 ㅜㅅㅜ안 적어놓으면 맨날 까먹어서 제가 보려고 글 정리한 건데 도움이 됐다면 다행입니다 헤헤 그리고 이거 머죠회고 쓰려고 티스토리 들어왔는데 일..
12.2 ~ 12.6 벌써 3주차가 되고 팀을 정해서 첫 번째 프로젝트를 시작했다 !하루하루는 시간이 안 가는데 일주일은 왜 이렇게 빨리 가나 😥 이번 주는 KPT 방식으로 회고를 작성하기로 했다.이번 주에 배운 내용들 SQL 성능 개선 DB 서버 핫 사이트 구성 실습 (Active - Standby) JMeter 부하 테스트 3계층 아키텍처 - 다중화 실습 (1) 컴파일 언어 vs 인터프리터 언어 / 자바 / 자바 환경변수 설정 3계층 아키텍처 - 다중화 실습 (2) TCP, UDP 프로토콜 / 3 Way Handshake DB 클러스터 설정 재해 복구(DR) / DB 서버 Replication 설정 / 미러 사이트 구성 실습 모니터링 환경 구성 (Prometheus, Grafana)..
Prometheus1) hostname 변경모니터링할 서버 컴퓨터의 hostname을 변경 후 재부팅해준다.sudo su - rootvi /etc/hostname 이렇게 이름이 바뀐 걸 확인할 수 있다. 2) 설치apt updateapt -y install prometheus prometheus-node-exporter 3) 실행systemctl restart prometheussystemctl restart prometheus-node-exporter 실행 후 http://프로메테우스IP:9090 으로 접속 4) 모니터링 대상 추가대상 컴퓨터에 프로메테우스 설치 (nginx, tomcat, DB)apt -y install prometheus-node-exportersystemctl restart..
클러스터란?여러 대의 컴퓨터가 모여서 하나의 시스템으로 동작하는 것 클러스터는 왜 홀수로 구성해야 될까?쉽게 말하자면 클러스터 내의 서버들은 대표 서버를 선정하기 위해 투표를 진행한다.만약에 서버가 짝수면, 투표가 동률이 나올 수 있다.서버가 홀수면 투표에서 동률이 나올 수 없다 => 무조건 표를 제일 많이 받는 서버가 뽑힌다.mariadb에서는 투표 = '쿼럼' 이라고 한다.홀수로 구성했을 때 과반수의 개수를 계산하는 게 훨씬 쉬워서 대부분의 클러스터를 구성하는 프로그램 모두 홀수로 구성한다 클러스터 구성 실습 (DB 서버 3대)1) 서버 중지systemctl stop mariadb2) 설정 추가 (3대 중 1대만 먼저 실행)vi /etc/mysql/mariadb.conf.d/50-server.cnf마..
이번엔 아래 그림과 같은 아키텍처를 구성해보자 ! HAProxy로 웹 서버를 부하분산 시키고웹 서버(nginx) 2대, WAS 서버(톰캣) 2대, DB 서버(mariadb) 2대를 구성할 것이다. 여기서 DB는 핫 사이트(Master - Slave)를 구성해서 Master에서만 저장 및 수정이 될 수 있게 하고,keepalived를 통해 Acitve와 Standby 상태로 만들 예정이다. 1. HAProxy 1) HAProxy 설정설정 파일에서 부하 분산시킬 서버 IP 주소를 입력 후 저장해준다.vi /etc/haproxy/haproxy.cfg frontend webserver bind *:80 mode http default_backend nginx-serverbackend nginx..