공변성과 반공변성이란 집합 관계로서 공변성, 반공변성, 이변성, 무공변성 정리 공변성(Covariance): A ⊂ B일 때 ⊂ 인 경우 반공변성(Contravariance): A ⊂ B일 때 ⊃ 인 경우 이변성(Bivariance): A ⊂ B일 때 ⊂ 도 되고 ⊃ 도 되는 경우 무공변성(Invariance): A ⊂ B더라도 ⊂ 도 안 되…
도커? 도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다. 도커는 개발자가 모던 앱을 구축, 공유, 실행하는 것을 도와줄 수 있도록 서비스 운영에 필요한 앱을 격리해 컨테이너로 만드는 소프트웨어이다. 도커는 지루한 설정 과정을 대신해 주므로, 이를 통해 개발자는 코드를 작성하…
소켓 통신 소켓 통신이란 TCP 혹은 UDP 프로토콜을 사용하는 두 기기 간의 연결이다. 이런 열결을 하기 위해 특정한 IP 주소와 포트 번호를 이용해서 통신 연결을 유지한다. 소켓 통신의 커넥션 클라이언트와 서버가 실시간으로 데이터를 주고받기 위해선 특정한 연결이 계속 이어져 있어야 한다. HTTP 통신과는 다르게 연결을 유지하기 위해선 컴퓨터의 자원을…
react, react-dom, NextJS, typescript, eslint, prettier, styled-components 를 사용하는 개발 환경을 create-next-app 사용하지 않고 직접 설정해보자. 라이브러리 설치 tsconfig.json 작성 next.config.js 작성 ESLint와 Prettier 설정 스타일(styled-co…
기존에 만들어진 유명한 ESLint Plugin을 사용만 해봤는데, 나만의 혹은 속한 조직의 코딩 컨벤션을 반영하는 ESLint Plugin을 만들어보고 싶다는 생각이 들었다. ESLint Plugin을 만들기 전에 ESLint를 활용한 정적 코드 분석이란 무엇인지 알아보고, ESLint Plugin을 만들어보자. ESLint를 활용한 정적 코드 분석이란…
1. 변수 다루기 자바스크립트 특성 파악하기 몽키 패치 런타임 중인 프로그램의 내용이 변경되는 행동을 의미한다. 자바스크립트는 여러 언어의 특성이 합쳐졌다. 문법은 자바와 비슷하다. 문자열과 배열 정규표현식은 펄과 비슷하다. 함수는 오크와 비슷하다. 클로저와 스코프화경은 스키마와 비슷하다. 프토토타입 개념은 셀프에서 왔다. 이벤트는 하이퍼토크에서 왔다.…
main 브랜치는 사용자에게 배포된 코드를 위한 브랜치이다. 기능을 개발하는 중에 main 브랜치만 있다면? 기능이 완성되기 전까지 main 브랜치의 소스코드는 불완전한 상태로 존재한다. 협업 시 여러 기능이 동시에 커밋되어 커밋 히스토리가 복잡하게 섞일 수 있다. 문제가 발생했을 때 원하는 시점으로 롤백하기도 어렵다. 브랜치 기능을 사용한다면? 다른 브…
1. (v4) idle 상태가 제거됨 더 나은 오프라인 기능 지원을 위해 라는 새 status를 도입하게 되었고, 이 에 이 포함됩니다. 따라서 기존 에 있던 상태는 제거됩니다. 이제 실제로 data를 fetch하지 않아도 query는 상태가 될 수 있다는 점을 명심해야 합니다. 왜 status 외에 fetchStatus라는 상태가 추가로 필요…
유닉스 true unix 현재 유닉스는 상표이다. mac os 도 비싼 과정을 거쳐 유닉스로 인정받게 되었다. unix like(유닉스 계열) 표준을 대부분 만족하지만, 공식적으로 유닉스로 인정받지 않은 것 리눅스 Operating Systems: Timeline and Family Tree 1971년 유닉스 메뉴얼 리눅스 1980년대 자유 소프트웨어 운…
파일을 vim 텍스트 에디터로 열 수 있다. vim은 명령모드와 입력모드로 구분된다. 입력 모드 수정하려면 입력모드로 변경해야 한다. 를 누르면 입력모드로 변경된다. insert (커서 앞) append (커서 뒤) 문장 시작 문장 끝 명령 모드 저장하려면 명령모드로 변경해야 한다. 키를 누르고 다음 종료 옵션 중 하나를 입력하고 엔터를 누른다…