SSH root 접속 / password 로그인 방지 sudo nano /etc/ssh/sshd_config sshd_config PermitRootLogin no //root 접속 허용 x PasswordAuthentication no //password 접속 허용 x sshd 재실행 sudo service sshd restart ...
React 프로젝트 배포 삽질기
부스트캠프 멤버십 과정의 3주 팀 프로젝트를 시작하면서 가장 먼저 해야겠다고 생각한 작업은 배포 자동화 작업이었다. 그 이유는 팀 회의에서 배포 전략을 특정 일을 기준으로 작업을 모은 후 배포를 시키는 것이 아닌 기능이 완성될 때마다 꾸준히 지속적으로 배포를 시키는 것으로 정했고, 그러기 위해서는 배포를 쉽고 간단하게 진행할 수 있어야 하기 때문이다....
TypeORM과 Webpack 연동 `Critical dependency: the request of a dependency is an expression` 오류 해결
TypeORM과 Webpack을 연동하고 난 다음 번들링을 했을 때 아래와 같은 디펜던시 관련 오류가 다수 발생했다. WARNING in ./node_modules/typeorm/connection/ConnectionOptionsReader.js 175:14-33 Critical dependency: the request of a dependency...
Git add와 commit 내부동작 확인해보기
1. Object Git은 데이터를 저장할 때 데이터와 헤더로 생성한 SHA-1 체크섬으로 파일 이름을 짓는다. 해시의 처음 두 글자를 따서 디렉토리 이름에 사용하고 나머지 38글자를 파일 이름에 사용하는데 이 파일은 .git/objects 경로 아래에 저장된다. Git의 Object에는 3가지 타입이 있다. 파일의 내용을 담는 (blob)...
ArrayList vs LinkedList
얼마 전 알고리즘 문제를 풀던 중 LinkedList를 이용해 그래프 구조를 만들었는데 시간초과가 발생했다. 그런데 LinkedList를 ArrayList로 변경하니 통과가 됐다. 문제가 되었던 부분의 코드는 아래와 같이 리스트의 i번째 인덱스에 접근하는 코드였었다. LinkedList의 get은 시작 노드에서 시작해서 i번째 노드까지 링크를 타고...
Java - HashMap 정리
1. HashMap 데이터를 Key와 Value로 저장하는 자료구조 효율적인 검색을 위해 사용된다 Key 값을 해시함수로 해싱하여 해당 데이터가 위치한 버킷의 주소값을 찾을 수 있고 이를 통해 바로 찾으려는 데이터에 접근한다. 1.1 자바의 HashMap 현재 사용하고 있는 자바8 버전의 HashMap은 해시 충돌을 체이닝 기법을 ...
Gradle - implementation vs api
Gradle 3.0 에서 complie 키워드가 implementation 과 api 두 가지로 분리되었다. 두 경우의 차이를 구글링해보면 아래와 같이 설명하고 있다. implemetation Gradle은 종속성을 컴파일 클래스 경로에 추가하여 종속성을 빌드 출력에 패키징합니다. 다만 모듈이 implementation 종속성을 구성하는 경...
SSH Config 등록 및 SSH key 인증
SSH 접속 정보 Config 등록 SSH 접속 정보를 config 로 등록해두면 IP를 매번 입력하지 않고 접속할 수 있다. $ sudo nano ~/.ssh/config >> 내용 입력 Host <접속시 사용할 이름> HostName <ip 주소> User <계정 이름> //예시 Host my-re...
async/await
콜백 방식의 단점들을 개선하기 위해 Promise 스펙이 추가되었지만 여전히 아래와 같이 복잡한 구조가 발생할 수 있다. Promise doSomething().then((result) => { afterDoSomething(result).then((result) => { finalDoSomething(result)...
Promise와 이벤트 루프
아래의 코드는 Promise 가 이벤트 루프에서 어떻게 처리되는지 확인해보기 위한 코드이다. const prom1 = () => { return new Promise((resolve, reject) => { console.log('prom1'); resolve(); }); } const prom...