목록전체 글 (61)
Earn this, Earn it.
2021년 8월 8일 글 참 아이러니다. 몸이 힘들어지면서 마음이 편해졌다. 그리고 그 동안 쌓였던 고통이 씻겨내려간다. 흔히 몸이 힘들면 마음이 편하고 몸이 편하면 마음이 불편하다고 한다. 아마 군대를 빗대며 들었던 말이었던 것 같다. 나는 몸이 편한 곳을 선택해 의무경찰에 복무했었다. 아직은 악습이 있었을 때라 그 말에 백번 공감할 수 있었다. 나는 한 때 쇼팬하우어 철학에 빠졌던 적이 있다. 흔히들 그를 염세주의자라고 말하지만 오히려 나는 그가 한 말 덕분에 위안을 얻을 수 있었다. 그의 책들과 철학은 부족한 내가 이해하기에는 너무나 어려운 것들이었다. 하지만 나는 나름대로 그의 사상을 접하면서 나만의 철학을 만들어낼 수 있었던 것 같다. 고통이 있기에 행복이 있을 수 있다는 것, 세상은 균형을 이..
2021년 8월 5일 글 비동기 방식이 동기방식과 달리 어떻게 다르게 동작하는지? 나만의 방식으로 간단하게 얘기해보자면, 자바스크립트의 비동기 방식은 프로미스나 프로미스 안의 콜백함수를 테스크 큐에 넣고 콜 스택이 비었을 때 이벤트루퍼가 콜 스택으로 푸쉬해주는 형태로 동작한다. 따라서 setTimeout(()=>console.log('wow'),0); for (let i=0 ; i
2021년 8월 4일 글 🥖 4-way 핸드쉐이크 방식 TCP의 연결을 해제(Connection Termination) 하는 과정 TCP는 연결할 때 3-way handshake를 하며, 연결을 끊을 때는 4-way handshake를 진행한다. 여기서 handshake는 악수로 만나면 3번의 과정을 통해 악수를 하고 헤어질 땐 4번의 과정의 악수를 한다고 생각하면 된다. 절차 A -> B: FIN 프로세스 A가 연결을 종료하겠다는 FIN 플래그를 전송 프로세스 B가 FIN 플래그로 응답하기 전까지 연결을 계속 유지 B -> A: ACK 프로세스 B는 일단 확인 메시지를 보내고 자신의 통신이 끝날 때까지 기다린다. (이 상태가 TIME_WAIT 상태) 수신자는 Acknowledgement Number 필..
2021년 8월 3일 글 😂 비동기에 대해 공부해보자 비동기 함수 동작원리 비동기 함수를 호출하면 함수 내부의 비동기로 동작하는 코드가 완료되지 않았다 해도 기다리지 않고 즉시 종료된다. 즉, 비동기 함수 내부의 비동기로 동작하는 코드는 비동기 함수가 종료된 이후에 완료된다. 따라서 비동기 함수 내부의 비동기로 동작하는 코드에서 처리 결과를 외부로 반환하거나 상위 스코프의 변수로 할당하면 기대한 대로 동작하지 않는다. Promise 요녀석.. Promise는 자바스크립트에서 비동기 처리에 사용되는 객체 (이해가 어려움..ㅠ) Event Emitter에 이벤트를 넣어주고 그걸 프로미스로 받는 아이디어 프로미스의 3가지 상태
2021년 8월 2일 글 💻 프로세스 프로세스? 스레드? 실행 중인 프로그램을 뜻한다. 디스크에 실행 파일 형태로 존재하던 프로그램이 메모리에 올라가 실행되면 비로소 프로세스가 된다. 프로세스 내부에 CPU 수행단위가 여러 개 있는 경우를 말한다. 프로그램 카운터와 레지스터, 스택으로 구성되며, 코드,데이터, 힙을 공유한다. 스레드 이용시 응답성이 좋아지고 자원을 공유할 수 있고 프로세스 단위보다 생성과 문맥 교환시 오버헤드가 적으며 서로 다른 CPU에서 병렬적으로 일을 처리할 수 있다. 멀티 스레드 스케줄링 방식 멀티 스레드 하나의 프로세스 내부에서 하나의 스레드는 하나의 코드 실행 흐름이기 때문에 여러 스레드(멀티 스레드)를 사용하면 동시 작업이 가능한 멀티 테스킹을 할 수 있다. 이 때, 메모리에서..
2021년 7월 29일 글 🚀 DVCS방식 (Distributed Version Control Systems ) 즉, 분산 버전 관리이다. 내부동작 로컬(local) : 현재 프로젝트 폴더에 존재하는 파일 그 자체 인덱스(index) : add 명령어 수행시 해당 변동 사항을 반영하는 곳. 파일명, 파일의 내용을 담고 있는 Blob 파일의 주소가 기록됨. 저장소(Repository) : 버전 관리를 위해 필요한 데이터들을 저장하는 곳. 여러 버전의 파일의 내용이 오브젝트 파일인 Blob 파일로서 저장됨. 오브젝트 파일 Blob 파일 : 파일들의 내용. SHA1 해싱기법 적용. 따라서 내용이 같은 경우 같은 파일로 처리됨. Commit 파일 : 하나의 버전을 생성한다는 것은 하나의 Commit 파일을 만드..
2021년 7월 28일 글 🏓 함수형 코드 함수형 프로그래밍 ? 프로그래밍 패러다임(Programming Paradigm)은 크게 명령형, 절차지향, 객체지향, 선언형, 함수형이 있다. 명령형 : 어떻게 할 것인지를 설명하는 방식 절차지향 : 수행될 순서에 따라 객체지향 : 객체들의 집합으로 프로그램의 상호작용을 표현 선언형 : 무엇을 할 것인지 설명하는 방식 함수형 : 순수 함수를 조합하여 소프트웨어를 만드는 방식 이 중에서 함수형 프로그래밍이란 거의 모든 것을 순수 함수로 나누어 문제를 해결하는 기법으로, 작은 문제를 해결하기 위한 함수를을 통해 가독성을 높이고 유지보수를 용이하게 해준다. 함수형 프로그래밍의 특징 부수 효과가 없는 순수 함수를 1급 객체로 간주하여 파라미터로 넘기거나 반환값으로 사용..
2021년 7월 27일 글 🧀 클래스와 오브젝트, 그리고 인스턴스 클래스(Class) 객체를 만들어 내기 위한 틀 시작 문자를 대문자로 하는 게 암묵적 룰. 오브젝트(Object) 구현 대상 (클래스의 인스턴스) 인스턴스(instance) 구현된 구체적 실체 메모리에 할당됨. 🚀 상속과 다형성 상속 우리는 모두 사람이라는 클래스에서 상속받았다? 어떤 클래스에서 더 확장된 클래스를 만들 수 있다. 쉽게 말해 상위 클래스의 모든 상태(status)와 행동(method)을 그대로 물려 받는 것이다. 그리고 이를 그대로 사용할 수도 커스터마이징 할 수도 있다. 다형성 한 행동을 여러 방법으로 구현하고 상황에 따라 적당한 구현을 선택해서 쓰도록 하는 기능을 제공하는 것을 말한다. 어떤 클래스에서 서로 다른 매개변..