프로그래밍(Basic)

    [바미] Design Pattern 소개

    📜 원문: patterns.dev - design pattern introduction 📜번역 : https://patterns-dev-kr.github.io/design-patterns/introduction/ 디자인패턴은 소프트웨어를 개발하는 과정의 반복되는 일반적인 문제들에 대해 기준이 되는 해결책을 제공하는 중요한 개념입니다. 디자인패턴은 소프트웨어의 특정 구현을 직접 제공하지는 않지만, 반복되는 문제 상황들을 최적화된 방법으로 해결하도록 돕는 컨셉들 입니다. 지난 몇 년간 웹 개발 생태계는 빠르게 변화했고, 잘 알려진 디자인패턴 중에서도 일부는 쓸모가 예전만 하지는 않지만 다른 일부는 최신 기술들과 함께 현 시대의 문제를 해결할 수 있을 만큼 발전했습니다. 페이스북의 React는 지난 5년간 엄..

    [바미] BROWSER-RENDERING에 대하여

    안녕하세요. 최근에 CS공부를 하고 있던 도중 후임이 HTML 파일이 어떻게 브라우저에 그려지는지 물어보았는데, 제가 그 것을 답변하는 중에 제가 브라우저 렌더링 과정을 정확하게 이해하지 못하고 있다는 걸 알게 되었습니다. 그래서 브라우저 렌더링 과정에 대해서 공부하고 정리해보려고 합니다. 브라우저 브라우저 렌더링 과정을 알아보기전에 브라우저가 무엇인지 먼저 알아보아야 합니다. 우선 브라우저는 우리가 흔히 인터넷에 접속할 때 사용하는 Chrome, Safari, Firefox, Internet Explorer 등을 말합니다. MDN에서는 브라우저에 대해 웹에서 페이지를 찾아서 보여주고, 사용자가 하이퍼링크를 통해 다른 페이지로 이동할 수 있도록 하는 프로그램이라고 설명하고 있는데 여기서 중요하다고 생각하..

    [바미] 관계형 DB VS 비관계형 DB

    관계형 DB 사전적인 의미를 살펴보자면 관계형 데이터베이스란 테이블(table)로 이루어져 있으며, 이 테이블은 키(key)와 값(value)의 관계를 나타낸다. 테이블은 이름을 가지고 있으며, 행(row)과 열(column) 그리고 거기에 대응하는 값을 가진다. 즉, 관계형 데이터베이스는 위와 같이 구성된 테이블이 다른 테이블들과 관계를 맺고 모여있는 집합체로 이해할 수 있습니다. 이처럼 데이터의 종속성을 관계(relationship)로 표현하는 것이 관계형 데이터베이스라고 말합니다. 특징 가장 많이 사용되고 있는 db의 한 종류 (고전적 데이터 베이스) table로 이루어져 있고, table은 키(key)와 값(value)의 관계를 나타냄. 일반적으로 알고있는 Mysqsl, Oracle, Mssql ..

    [바미] REST API에 대하여

    안녕하세요. 오늘은 REST API에 대해 알아보고자 합니다. REST? 흔히 개발을 하셨던 분들이라면 'REST하다.' 라는 표현을 접해보셨을 겁니다. 개발하면서 흔히 접했지만 정확히 얘기하지 못하는 부분 중 하나가 REST-API가 아닌가 싶습니다. REST(Representational State Transfer)의 사전적인 의미들을 요약해보면 'REST라는 아키텍쳐 스타일을 따르는 API'라고 표현 할 수 있습니다. 그러니까 HTTP를 기반으로, 자원을 정의하고, 자원에 접근하는 방식을 정해 놓은 아키텍쳐인데 웹에 존재하는 모든 자원에 고유한 식별자인 URI을 부여해 활용합니다. 여기서 자원은 저장된 데이터(DBMS), 이미지, 동영상, 문서 파일, 서비스 (이메일, 메시지)를 모두 포함합니다. ..

    [바미] Deadlock의 해결방안

    안녕하세요. 오늘은 Deadlock을 어떻게 해결해야 하는지에 대해 알아보도록 하겠습니다. 일단 Deadlock이 무엇인지, 어떤 원인으로 발생하는지는 아래의 글을 참고 하시면 더 좋을 것 같습니다. [바미] Go - DeadLock & channel에 대해 알아보자. 안녕하세요 오늘은 DeadLock에 대해 알아보겠습니다. 여기서 Dead는 '죽었다'의 표현이 아니라 막다른 길을 표현할 때 'Dead end'라고 표현을 하는데 그 때의 'Dead'와 같은 의미입니다. 그래서 Lock이 막 codesk.tistory.com 교착상태를 간단하게 말해보자면 프로세스들의 집합이 더 이상 진행을 못하고 영구적으로 블록(대기)되어 있는 상태를 얘기합니다. 교착상태가 발생하는 조건 교착상태가 발생하기 위해서는 우선..

    [바미] 동적 계획법(Dynamic Programming).

    일반적으로 우리가 사용하는 "dynamic"이나 "programming"라는 단어가 있어 'Dynamic Programming' 과 관련이 있을 것 같지만 실제로는 아무련 관련이 없습니다. 동적 계획법은부분 문제를 통해 큰 문제를 재귀적으로 해결하려고 할 때 중복되는 부분 문제들이 많이 발생하여 불 필요하게 같은 계산이 반복될 때 사용됩니다. 이항 계수를 계산하는 공식은 아래와 같은 공식이 성립하게 되는데 bino(i, j) = bino(i-1, j-1) + bino(i, j-1) 위 식에 대해 생각해보면 알 수 있듯이 주어진 i과 j에 대해 두 문제로 나눠가면서 계산했을 때 밑으로 내려가면서 중복되는 식이 점점 더 많이 발생함을 알 수 있습니다. i과 j의 크기가 커질 수록 중복되는 계산 역시 많아지는..

    [바미] Javascript Micro task queue.

    지난 시간엔 콜 스택, 태스크 큐, 이벤트 루프에 대해 알아보며 호출스택과 테스크큐의 관계에 대해 알아보았는데요. [바미] 콜 스택, 태스크 큐, 이벤트 루프 안녕하세요. 오늘은 자바스크립트의 콜스택, 태스크 큐, 이벤트 루프가 무엇인지에 대해 알아보도록 하겠습니다. 먼저 자바스크립트는 단일 스레드입니다. 이 말의 뜻은 한 번에 1개의 작업만 codesk.tistory.com 오늘은 Micro task queue에 대해 알아보며 지난번에 했던 태스크 큐와 어떤 차이가 있는지 알아보도록 하겠습니다. 태스크 큐와 마이크로 태스크 큐 먼저 마이크로 태스크 큐는 일반 태스크 보다 좀 더 우선순위를 갖는 태스크 큐라고 보면 됩니다. 2개의 큐 모두 콜백함수가 들어간다는 점에서 동일하지만 어떤 함수를 실행하느냐에 ..

    [바미] 콜 스택, 태스크 큐, 이벤트 루프

    안녕하세요. 오늘은 자바스크립트의 콜스택, 태스크 큐, 이벤트 루프가 무엇인지에 대해 알아보도록 하겠습니다. 먼저 자바스크립트는 단일 스레드입니다. 이 말의 뜻은 한 번에 1개의 작업만 할 수 있다는 뜻인데요. 메모리 힙(Memory Heap)이라는 정보를 저장하는 공간이있고, 콜스택(Call Stack)이라는 실행 중인 코드를 추적하는 공간이 있습니다. 자바스크립트는 Heap, Queue와 함께 구성하는 단일 콜스택을 갖게 되는데 메모리 힙은 자바스크립트 엔진이 구동되면서 변수, 함수 저장, 호출 등의 작업이 발생하는 공간을 말합니다. 콜스택은 코드를 읽어내려가며 수행 할 작업들을 밑에서 부터 하나씩 쌓고, 메모리 힙에서 필요한 것들을 찾아서 작업을 수행하는 공간인데요. 이름에서 알 수 있듯이 스택(S..

    [바미] 최소 신장 트리(MST, Minimum Spanning Tree)란

    안녕하세요. 오늘은 최소 신장 트리에 대해 알아보도록 하겠습니다. Spanning Tree란? 그래프 내의 모든 정점을 포함하는 트리를 말합니다. Spanning Tree = 신장 트리 = 스패닝 트리입니다. Spanning Tree는 그래프의 최소 연결 부분 그래프입니다. 최소 연결 = 간선의 수가 가장 적습니다. n개의 정점을 가지는 그래프의 최소 간선의 수는 (n-1)개이고, (n-1)개의 간선으로 연결되어 있으면 필연적으로 트리 형태가 되고 이것이 바로 Spanning Tree가 됩니다. 그러므로, 그래프에서 일부 간선을 선택해서 만든 트리가 되죠. Spanning Tree의 특징 DFS, BFS을 이용하여 그래프에서 신장 트리를 찾을 수 있습니다. 탐색 도중에 사용된 간선만 모으면 만들 수 있습..