본문 바로가기

전체 글

(94)
[1일1cs] 패킷교환방식 vs 회선교환방식 회선교환 방식이란, 회선독점을 통한 데이터 전송방식이다. 다음 그림과 같이 정해진 데이터 경로가 있고, 그 경로를 독점해서 사용한다. 그러다보니, 항상 동일한 경로로 전송되기에, 안정적인 통신이 가능하다. 하지만 대역폭들을 낭비하기에 회선 이용 효율이 떨어지고, 통신과정에서 회선문제시 회선할당부터 다시 해야한다. 패킷교환방식은 회선교환방식과 다르게 전용선 이라는 것이 없기에 정해진 경로가 없다. 전송하려는 데이터를 패킷단위로 나누어, 네트워크망에 뿌려주게 된다. 해당 패킷에는 어떤 데이터의 몇번째 데이터인지, 최종목적지가 어디인지 정보만이 들어있다. 이 정보를 라우터가 보고 최종목적지를 향해 잘 분산해서 전달한다. 최적경로는 망의 혼잡도, 연결상태 등에 따라 수시로 변경된다. 즉, 패킷은 최적경로를 여러..
콜백함수(callback) 콜백함수는 쉽게 말하면 파라미터에 들어가는 함수로, setTimeout(function add(){return a + b}, 1000, a,b); 또는 setTimeout(add, 1000, a,b); function add(a,b){return a+b}; 여기서 add가 콜백함수이고 이는 순서를 지켜서 실행하고 싶을 때 사용된다. 하지만 궁금증이 든다. 굳이 순서를 지키고 싶으면, function a()[ // ... } function b(){ // ... } a(); b(); 이렇게 사용하면 되지 않을까 생각이 들었다. 이와 관련된 내용을 찾아보니, 예를들어, 협업시 동료1이 나의 함수 a를 쓰고 console.log를, 동료2도 나의 함수 a를 쓰고 console.log를 쓰고 싶다하면만약 함수 ..
[1일1cs] 프록시 서버란? 프록시 서버란 서버 앞단에 둬서 캐싱, 로깅, 데이터 분석등을 서버보다 먼저 하는 서버를 말합니다. 즉 직접 통신할 수 없는 클라이언트와 서버 사이에서 대리로 통신을 수행하는 기능을 프록시, 그 중간에서 중계 기능을 하는 서버를 프록시 서버라고 합니다. (포트 번호를 달리하여 구분) 이를 통해 사용자가 실제 서버의 포트에 접근하지 못하게 할 수 있으며 공격자의 DDOS 공격을 차단하거나 프록시 서버에 요청된 내용들의 캐싱 처리를 용이하게 할 수 있습니다. 사례 : nginx로 Node.js로 이루어진 서버의 앞단에 둬서 버퍼 오버플로우를 해결 CloudFlare를 둬서 캐싱, 로그 분석
[Web front-end] script 위치와 defer async 브라우저를 렌더링 하는데, 다음과 같은 레이어를 가지고, 각각의 역할은 아래 링크 보기. 렌더링 엔진에 주목할 것인데, 렌더링 엔진은 HTML, CSS를 파싱한 결과물로 페이지를 화면에 표시하고 JS를 해석한다. 그 과정에서 파싱을 진행하는데, 파싱은 가장 작은 단위로 쪼개진 코드(토큰)를 구조화하는 과정이다. 입력받은 문자열이 정해진 문법(grammar) 들을 모두 따르는지를 어휘와 규칙은 맞았는지 확인을 한다. 브라우저는 HTML, CSS, JavaScript 세 종류의 언어를 해석할 수 있고, 그 중에서 JavaScript는 별도의 레이어에서 언어를 해석한다. 따라서 렌더링 엔진에서는 HTML과 CSS만 파싱한다. 1. head 태그 내부에 script 태그 HTML은 파싱 도중, HTML은 파싱 ..
[1일1cs] INNER JOIN과 OUTER JOIN INNER JOIN과 OUTER JOIN의 차이. 먼저 중복이 없다고 가정했을 때, A와 B의 INNER JOIN은 교집합, 그리고, OUTER JOIN은 합집합 이다. A에 1, 2, 3, 4 B에 3, 4, 5, 6 이 있다면, INNER JOIN 시에, 3과 4가 나올 것이며 OUTER JOIN 시에, LEFT OUTER JOIN 이라면, A가 왼쪽에 기재한다면 A는 그대로 남고 B의 5와 6은 NULL이되고, RIGHT OUTER JOIN이라면, B가 오른쪽에 기재한다면, B는 그대로 남게 작성하고 A의 1과 2는 NULL이된다. 즉 LEFT면 왼쪽에 있는 것이 기준, RIGHT면 오른쪽에 있는 것이 기준으로 작성하고 그 외는 싹 다 쳐낸다 (NULL화). FULL OUTER JOIN이라면 원소를..
[클린코드 javascript] 타입 체크 자바스크립트는 동적 타입 언어이다. => 단순히 타입 체크 ( typeof )를 할 경우 오류를 범할 수 있다 자바스크립트에는 원시 타입 변수와 참조 타입 변수가 존재하는데, 단순 타입 체크로 원시 타입 변수를 체크하는 경우에는 문제가 대부분 없다. 하지만 참조 변수의 경우 typeof를 한다면 모두 object로 나올 것이다. 그래서, instanceof를 사용. Const arr = []; Const func = function() {}; Const date = new Date(); Arr instanceof Array // true Func instanceof function // true Date instanceof Date // true 하지만 여기서 instanceof Object를 찍어보면 ..
DNS서버 구성방식 중 DNS Round Robin Round Robin은 CPU가상화에서 사용했던 스케쥴링 방식이어서 익숙할 것이다. 시분할 시스템을 위해 설계된 선점형 스케줄링의 하나로서, 프로세스들 사이에 우선순위없이, 순서대로 시간단위로 CPU를 할당하는 방식의 CPU 스케줄링 알고리즘이다. 즉 각 프로세스에 일정시간을 할당하고, 할당된 시간이 지나면 다른 프로세스에게 기회를 주고, 또 그 다음 프로세스에게 하는 식으로, 돌아가며 기회를 부여하는 스케쥴링 방식이다. 이를 DNS서버에 적용한다. DNS 라운드 로빈 방식은 복수의 IP를 모두 순서를 정해 클라이언트에게 제공하고 클라이언트로 하여금 선택하도록 한다. 결과적으로 웹 사이트에 접속하는 다수의 사용자는 복수의 웹 서버에 나눠 접속하게 되고 서버 부하가 분산된다. (로드 밸런서 역할과 같음.)..
[클린코드 Javascript] 임시변수 제거. 한번도 생각하지 못한 주제였다. 임시변수제거. 알고리즘 문제풀이 할때 임시변수를 못잃는 나였지만, 다시 한번 생각해보게되었다. 먼저 임시변수는 블록 스코프내에서 전역변수와 같이 쓰이는 변수이다. 아래 result 변수를 참고하자. function getElements(){ const result = {}; result.title = 'cleanCode' result.text = 'how_to_make_cleancode' return result; } 다음과 같은 코드는 result를 먼저 선언하고 접근자를 이용해 프로퍼티를 추가했다. 아주 정상적인 나의코드이다. 이는 굳이 선언하고 접근하는 과정을 거쳐서 좋지 못하다. 좀더 명확하게 리펙토링하는 것을 보았다. function getElements(){ c..