전체 글
[Linux] nohup 사용법
개요 nohup 명령어는 리눅스에서 프로세스를 실행한 터미널의 세션 연결이 끊어지더라도 지속적으로 동작 할 수 있게 해주는 명령어. 기본적으로 터미널에서 세션 로그아웃(logout)이 발생하면 리눅스는 해당 터미널에서 실행한 프로세스들에게 HUP signal 이 전달하여 종료시키게 되는데, 이 HUP signal을 프로세스가 무시(ignore)하도록 하는 명령어라서 nohup 이라는 이름인 것. 그래서 결과적으로 터미널에서 연결이 끊기거나 터미널을 종료해도 실행했던 프로세스들이 계속 실행될 수 있다. 또한 nohup 명령어는 표준 출력(standard output)을 nohup.out 파일로 재지향(redirection) 한다. 터미널이 종료되어도 표준 출력은 nohup.out 파일에 계속해서 기록되기 ..
CSS3 - HTML img 태그에 넣은 svg 파일의 색상 바꾸기
1. svg 파일 구해서 img 태그로 넣어주기 2. 원하는 색의 hex 값 알아내기 https://www.color-hex.com/ 3. filter 값 계산하기 https://codepen.io/sosuke/pen/Pjoqqp 위의 페이지에서 Target color 에서 hex 값 넣고, filter 값 알아내기 4. img 태그나 선택자를 이용하여, css filter 속성에 3번에서 알아낸 값 붙여넣기 #img-front { filter: invert(45%) sepia(63%) saturate(1946%) hue-rotate(162deg) brightness(95%) contrast(101%); }
Node.js/socket.io 소켓 서버 구현시 Nginx SSL 리버스 프록시 설정 방법
upstream upstream-nodejs { server 127.0.0.1:3000; } upstream upstream-socket { server 127.0.0.1:8080; } server { listen 80; server_name mydomain.com www.mydomain.com; rewrite ^(.*) https://$host$1 permanent; } server { listen 443 ssl; ssl on; server_name mydomain.com www.mydomain.com; access_log /var/log/nginx/access-ssl.log; error_log /var/log/nginx/error-ssl.log; ssl_certificate /etc/nginx/ssl..
NestJS aws-EC2 프리티어 micro 배포 에러 및 해결방법
aws 프리티어 micro를 사용하면 RAM이 1GB로 아주 작기 때문에 NestJS의 build 과정이 몹시 오래걸리거나 멈춰 버릴 수 있다. (npm install 자체도 힘든 경우가 많다) 해결 방법은 여러가지가 있다 내가 해결한 방법 몇가지 1. Swap File을 이용해 EC2 메모리 부족 현상을 해결 2. 로컬환경에서 build 후 배포 (pm2 사용) 3. Docker를 사용하여 배포 1. Swap File을 이용해 EC2 메모리 부족 현상을 해결 실제 디스크의 용량을 이용하여 부족한 메모리를 대체할 공간을 swap memory(스왑 공간)이라 한다. Swap 메모리는 완전히 RAM을 대체하는 것이라 보기 어렵다. 실제 디스크 용량을 할당하여 RAM을 대체하는 것이기 때문에 RAM으로 접근하..
Docker 환경에서 MySQL 로그인시 Access denied for user... Error 해결하기
Docker 환경에 설치한 MySQL에 계정을 생성할때 도메인을 일반적인 localhost로 지정하면 에러가 발생한다. 그렇기 때문에 에러 메세지에 나오는 Docker 가상 IP로 지정을 해서 계정을 생성해야 한다. 1. MySQL 콘솔 접속하기 $ docker exec -it mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 360 Server version: 8.0.21 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights re..
[CS] 프록시(Proxy)란
프록시(Proxy)란 프록시(Proxy)는 "대리"의 의미로, 인터넷과 관련해서 쓰이는 경우, 특히 내부 네트워크에서 인터넷 접속을 할 때에, 빠른 액세스나 안전한 통신등을 확보하기 위한 중계서버를 "프록시 서버"라고 일컫는다. 클라이언트와 Web서버의 중간에 위치하고 있어, 대신 통신을 받아 주는 것이 프록시 서버이다. 프록시(Proxy)의 사용 목적 1. 개인정보 보호 프록시 서버 X - 사용자가 네이버에 들어갈 때 IP 주소가 전달 프록시 서버 O - 프록시 서버의 IP를 전달. 즉, 사용자의 IP를 보호할 수 있다. 2. 속도 향상 - 캐시 사용 사용자가 특정 페이지를 요청할 때, 프록시 서버를 통해 웹 페이지를 가져온다. 가져온 웹 페이지를 프록시 서버의 DB에 저장하고 사용자에게 전달. 같은 ..
[Mac] - node, npm 완전삭제 및 재설치
1. node 완전 삭제 sudo rm -rf /usr/local/lib/node sudo rm -rf /usr/local/lib/node_modules sudo rm /usr/local/lib/dtrace/node.d sudo rm /usr/local/share/man/man1/node.1 sudo rm -rf /usr/local/share/doc/node sudo rm -rf /usr/local/share/systemtap/tapset/node.stp sudo rm -rf /usr/local/include/node sudo rm /usr/local/bin/node sudo rm /usr/local/bin/npm sudo rm /usr/local/bin/npx //아래는 경우에따라 필요하면 입력한다. ..
[LeetCode] Group Anagrams
const groupAnagrams = function(strs) { const data = {}; // 단어를 키로, anagram 단어들을 값으로 가진다. const result = []; // 리턴할 결과를 저장하는 배열 for(let str of strs) { // 주어진 단어 배열을 반복문으로 돌린다. const word = str.split('').sort().join(''); // 주어진 단어를 쪼개고 정렬하고 합쳐서 key가 될 값으로 만든다. if (!data[word]) data[word] = []; // data에 없다면 초기화를 해주고, data[word].push(str); // 추가한다. } for(let key in data) { result.push(data[key]); //..
[백준 1339] 단어 수학 / Node.js
https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 첫번째 풀이 ( 실패 ) let [N,...input] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map((v) => v.split('')) input.sort((a,b) => b.length-a.length) let map = new Map(); let num = 9; let result = input...
[CS] OOP의 특징 (추상화/캡슐화/상속/다형성)
OOP 객체지향 프로그래밍 기본의 만들었던 내용을 재사용할 수 있다는 장점이 있다. 프로그램을 독립된 단위인 객체들의 모임으로 보고 각각 객체는 메시지를 주고 받고 데이터를 처리함. 추상화(Abstraction) 어떤 실체로부터 공통적인 부분이나 관심 있는 특성들만 한곳에 모은 것 구현 세부사항 대신 기능 측면에서 클래스의 모델링을 목적으로 한다. 인터페이스와 구현을 분리한다. 캡슐화(encapsulation) 데이터 보호 비슷한 역할을 하는 속성과 메소드들을 하나의 클래스로 모아, 접근 지정자를 통해 제어하는 것 은닉화 : 객체의 세부 내용이 외부에 드러나지 않아 외부에서 데이터를 직접 접근하는 것을 방지한다. 캡슐 내부의 로직이나 변수들을 감추고 외부에는 기능(api)만을 제공하는것 상속(inheru..