2022/07

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

    안녕하세요. 오늘은 자바스크립트의 콜스택, 태스크 큐, 이벤트 루프가 무엇인지에 대해 알아보도록 하겠습니다. 먼저 자바스크립트는 단일 스레드입니다. 이 말의 뜻은 한 번에 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을 이용하여 그래프에서 신장 트리를 찾을 수 있습니다. 탐색 도중에 사용된 간선만 모으면 만들 수 있습..

    [바미] 프로세스와 스레드 (Process vs Tread)

    안녕하세요. 오늘은 프로세스와 스레드에 대해 이야기를 포스팅 해보려 합니다. 프로세스와 스레드에 대해 많이 들었지만 뒤돌아서면 까먹기 쉬운 CS 지식이 아닐까? 생각이 들어 저도 리마인드 할겸 포스팅해보게 되었습니다. 제목은 프로세스와 스레드를 썼지만 프로그램, 프로세스, 스레드와 관련된 기초적인 것들을 써보겠습니다. 프로세스(Process)와 스레드(Thread) 먼저 프로세스와 스레드가 무엇인지부터 살펴보죠. 프로세스(Process)란 운영체제로부터 자원을 할당받은 작업의 단위를 의미합니다. 프로세스의 특징 1. 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다. 2. 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다. 3. 각 프..

    [바미] 씽크패드 T16 램브란트 개봉기.

    안녕하세요. 지난 5일에 CTO로 주문했던 T16이 도착했습니다. 예정이 8월 1일이였지만 7월 23일 토요일에 받게 되었네요. 현재 노트북의 스펙은 아래와 같습니다. 처음에 이렇게만 와서 당황했어요. 택배 박스 = 상품 박스 일거라곤 상상도 못했거든요. 거기에 사은품이라도 있을 줄 알았지만 그런거 조차 없었어요. 11번가 같은 쇼핑몰에서 사면 마우스, 가방이라도 주었는데 레노버 공홈에서 사면 주지 않는거 같네요. 패키지는 위와 같은데요. 본체, 충전기, 보증서?가 다네요. 외관의 모습입니다. 우측에 레노버 마크가 상당히 거슬리긴 하지만 그려러니 해야 할 거 같네요. 재미난 건 노트북의 촉감?이 메탈도, 플라스틱도 아닌 것이 뭔가 맨질보들 하다고 해야 할까요? 마그네슘 소재가 원래 이런느낌인지 굉장히 좋..

    [바미] Golang JSON 필수 값 체크하기.

    지난 번에 Golang reflect 함수 사용하여 필수 값 체크 함수 만들기. 를 통해서 JSON 필수값을 reflect함수로 찾는 방법을 포스팅 한 적이 있습니다. 저기서는 for문 2개를 돌려서 찾는 방법이였지만 이번엔 validator을 사용하여 심플하게 처리할 수 있는 방법을 소개시켜드리려 합니다. 먼저 패키지를 다운 받아야 합니다. go get github.com/go-playground/validator/v10 그 후 아래와 같이 구조체를 선언 후, 필수 값으로 지정할 값을 아래와 같이 지정해줍니다. type ExStruct struct { A string `json:"a" validate:"required"` B string `json:"b" validate:"required"` C str..

    [바미] Node - Mysql2

    Node에서 Mysql쿼리를 사용하다보면 다중 쿼리가 필요할 때가 많이 있습니다. 물론 SQL문 함수로 다중쿼리를 처리하는 방법도 있지만 오늘은 Node의 Mysql2을 사용하여 다중쿼리 처리하는 방법에 대해 알아보도록 하겠습니다. Mysql2을 써보지 않은 분들은 'Mysql'은 아는데 'Mysql2'는 뭐야? 하실 겁니다. MySQL과 MySQL2의 차이점은 promise에 있습니다. mysql은 callback기반이기 때문에 promise를 사용하지 못하고 npm에 있는 promise-mysql 모듈을 따로 설치해서 사용해야하지만 mysql2는 promise를 지원하기 때문에 다른 모듈을 설치하지 않고 사용이 가능합니다. 그래서 promise는 pending, fullfilled, rejected ..

    [바미] 티스토리 카카오톡 로그인 시 HTTP ERROR 400 오류 해결.

    안녕하세요. 어제부터 티스토리 로그인 하려는데 자꾸 아래와 같은 창이 뜨더라구요. 처음에 티스토리 서버가 터졌나 싶어 그 다음날 로그인 하려는데 그 다음날에도 아래와 같은 창이 뜨는거 아니겠어요? 그래서 뭔가 이상하다 싶어 찾아봤더니 '쿠키'삭제 를 해야 해결되었던 문제였어요. 크롬에서 쿠키삭제 방법은 크롬 오른쪽위에 위와 같은 점3개 모양의 버튼이 있습니다. 이걸 클릭 후에 '설정'메뉴에 들어가시게 되면 설정 화면이 뜨게 되고, 왼쪽 메뉴에 '개인정보 및 보안'이라는 메뉴가 있는데 그걸 클릭 후, 오른쪽에 '인터넷 사용 기록 삭제' 메뉴를 클릭해줍니다. 그럼 위와 같은 메뉴가 뜰텐데 가운데에 있는 '쿠키 및 사이트 데이터'를 체크 해주신 상태에서 '인터넷 사용 기록 삭제' 버튼을 클릭 후 로그인을 하시..

    [바미] 바벨(Babel)에 대하여

    1. 배경 1.1 크로스 브라우징 사용하는 말이 달라서 바벨탑이 실패했듯이, 브라우져마다 사용하는 언어가 달라서 프론트엔트 코드는 일관적이지 못할 때가 많습니다. 스팩과 브라우져가 개선되고 있지만, 여전히 인터넷 익스플로러는 프라미스를 이해하지 못합니다. 작년까지만 해도 사파리 최신 브라우져는 Promise.prototype.finally 메소드를 사용할 수 없었습니다. 히브리어로 바벨이 '혼돈'이란 뜻인 것처럼 프론트엔드 개발에서 크로스브라우징 이슈는 코드의 일관성을 해치고 초심자를 불안하게 만듭니다. 크로스브라우징의 혼란을 해결해 줄 수 있는 것이 바벨이죠. ECMAScript2015+로 작성한 코드를 모든 브라우져에서 동작하도록 호환성을 지켜주는데 타입스크립트, JSX처럼 다른 언어로 분류되는 것도..

    [바미] 드디어 노트북 질렀습니다.

    T16 AMD로 질렀습니다. 스펙시트는 아래와 같습니다. 이제 기다릴 일만 남았네요 2달 넘게........... 기다려야 하네요... 이건 너무한거 아니냐고!!!!!! * 씽크패드 CTO제품은 1 ~ 2주 이후가 되야 확정 날짜로 변경된다고 합니다. 개봉기는 여기에! [바미] 씽크패드 T16 램브란트 개봉기. 안녕하세요. 지난 5일에 CTO로 주문했던 T16이 도착했습니다. 예정이 8월 1일이였지만 7월 23일 토요일에 받게 되었네요. 현재 노트북의 스펙은 아래와 같습니다. 처음에 이렇게만 와서 당황했어요. codesk.tistory.com