배워서 남주는 개발자 :)
반응형

Web 42

[실시간 통신 / 채팅 기능] Web Socket 과 Socket.io

저희 채팅 기능이 필요해요! 회사에서 미션이 주어졌다. 평소에는 서비스와 관련하여 기능 개발을 하고, 외부 api를 붙이는 작업을 진행했지만, 이번에는 큰 기능이 들어왔다. 채....팅... 언젠가 하게될 거라고 생각했다. 스타트업 특성상 속도가 중요하기 때문에, 처음에는 서비스를 제공하는 외부 업체를 찾아봤다. 그런데 제공하는 기능과 조건들이 우리의 니즈에 부합하지 않았다. 일단 채팅을 구현하기 위해 강의를 지르고 클론코딩으로 형태를 만들어보기로 했다. 그런데 하다보니 왠지 할 수 있을것 같은 느낌이 들었다. 아래는 내가 채팅 관련 강의를 들으면서 공부하고 이해한 내용을 바탕으로 작성한다. (정리 목적이기 때문에 참고만 하길 바란다.) 목차 1. 네트워크 통신 2. 웹 소켓과 socket.io 1. 네..

Web 2023.05.19

EC2에 파일 업로드 하기 ( SCP)

기본적으로 하나의 뎁스씩 파일 업로드가 가능하다. 나의 경우 아래와 같은 구조였다. 로컬 linux - 베스쳔 - Dev SSH - Prod SSH *파일 업로드 명령어 // -i 옵션 : 경로 지정 옵션 sudo scp -i 키파일경로 업로드할파일경로 사용자이름@ip주소:업로드할파일경로 나의 경우 위의 명령어로 로컬에서 베스쳔으로 한 번/ 베스쳔에서 Dev SSH와 Prod SSH로 두번의 뎁스로 파일을 업로드 했다. ** 주의할 점! - ec2가 퍼블릭 인스턴스인 경우 : ip 주소 ➡️ 퍼블릭 IP DNS로 입력!!! - ec2가 프라이빗 인스턴스인 경우 : ip 주소 ➡️ 프라이빗 IP DNS로 입력!! 나의 경우처럼 여러번 파일 업로드를 하면 지나온 경로에 내가 업로드한 파일이 남아있게 된다. ..

Web 2023.04.11

[ 시퀄라이즈 ] sequelize create / update 차이점!

매번 시퀄라이즈를 사용하는데 이번에 create 와 update의 차이점이 궁금해서 알게된 것을 정리해 본다. 1) ProUser.create({}) .then((result) => { result.data // then에 대한 프로퍼티에 접근 가능! }) 2) ProUser.update({}) .then((result) => { result.data // then에 대한 프로퍼티에 접근 불가능! => update에서는 bool 타입으로 성공/실패에 따라서 1/0 값만 리턴함! })

Web 2022.11.02

[ linux ] Log Rotate ( 로그 로테이트 ) 설정 하는 법 / 세팅하기

[logrotate 를 적용하기 위해서 공부하고 적용하는 과정에서 헷갈리고 시행착오를 겪었던 부분을 기록합니다. 오류사항은 댓글 남겨주세요! ] Log rotate 실행 순서 설정 과정 1. 해당 라이브러리 설치확인 및 설치 (위의 명령어로 검색하면 설치가 되어있는지 확인이 가능하다고 하는데 필자는 나오지 않았다.) 그래서 npm install logrotate 명령어로 설치를 완료했다. 위의 명령어로 확인을 해보니 logrotate의 버전이 잘 나온 것을 확인 할 수 있다. 2. man logrotate 로 기본적인 정보 확인 가능 3. Sudo vi /etc/logrotate.conf 에서 기본설정 (기본값) 4. Cd /etc/logrotate.d 로 접근해서 수정 원하는 config파일의 설정 수..

Web 2022.10.27

[ vi Command ] vi 명령어 정리 모음

1. vi 편집기의 전체적인 구조 1) 명령 모드 ( command mode) - 처음 vi 명령어로 시작하게 되면 들어갑니다. 여기서는 방향키로 커서 이동이 가능하며, 'dd', 'yy'로 한줄 삭제 / 한줄 붙여넣기 또는 'x' 명령어로 글자하나를 삭제할 수 있습니다. 2) 입력 모드 (insert mode) - 명령모드에서 'i'나 'a' 명령을 통해서 입력모드로 넘어갈 수 있습니다. 입력모드로 들어가면, 자유롭게 코드나 글을 작성할 수 있습니다. 다시 명령모드로 돌아오려면 'ESC'를 누르면 됩니다. 3) 마지막 행 모드 (last line mode) - 마지막 행모드는 명령모드에서 ':'(콜론)을 입력하면 화면 맨 아래에 :_______ 하며 입력을 할 수 있는 공간이 나옵니다. 여기서 현재까지..

Web 2022.10.25

[ javascript ] Node Cron 으로 스케줄러 설정하기

Cron은 유닉스 계열 컴퓨터 운영 체제의 시간 기반 Job 스케줄러입니다. 소프트웨어 환경을 설정하고 관리하는 사람들은 작업을 고정된 시간, 날짜, 간격에 주기적으로 실행할 수 있도록 스케줄링하기 위해 cron을 사용합니다. 설치 npm install --save node-cron 실행 Node.js 서버가 기본으로 실행하는 파일(app.js 또는 index.js)에 node-cron 모듈을 불러와서 사용하면 된다. 스케줄러에 의해 실행할 작업은 콜백 함수 안에 작성하면 된다. 아래에 콘솔로그를 출력하는 함수를 작성했다. const cron = require('node-cron'); cron.schedule('* * * * *', function(){ console.log('node-cron이 실행되었..

Web 2022.08.21

[ javascript ] encodeURI(), encodeURIComponent() 차이

1. encodeURI() : decodeURI() escape()와 같이 변환을 하지만, 인터넷 주소에서 쓰는 특수 문자 : ; / = ? & 는 변환을 하지 않습니다. 2. encodeURIComponent() : decodeURIComponent() 인터넷 주소에서 쓰는 특수 문자 : ; / = ? & 까지 변환을 합니다. 인터넷 주소를 하나의 변수에 넣을때 쓸 수 있습니다. ★ 덧붙임 : encodeURIComponent() 는 UTF-8 로 인코딩 하는 것과 같음 encodeURI는 알파벳, 0~9의 숫자, ; , / ? : @ & = + $ # - _ . ! ~ * ' ( ) 를 제외한 문자를 인코딩(이스케이프 처리) encodeURIComponent는 알파벳,0~9의 숫자 - _ . ! ~ ..

Web 2022.08.02

알면 좋은 Git 명령어 [rebase, amend, cherry pick, reset, revert stash]

다섯가지의 알면 좋은 깃 기능을 정리해보겠습니다. 1. Rebase When - 주로 병헙 간의 충돌시 사용. 서로 다른 브랜치 간에 병합시, 같은 파일을 수정하거나 공통된 수정사항이 있을 경우 Rebase 사용 (단, rebase는 history를 변경하기 때문에 반드시 혼자 작업하는 브랜치에서만 사용해야 하며 rebase 진행후 '강제 푸시'를 해야 함) 2. Amend When - 커밋은 했지만, 추가적으로 커밋을 하고 싶을 때 사용 3. Cherry Pick When - 원하는 커밋만 가져올 때 사용 ex) 운영중인 서비스(main branch)에 버그가 발견되고, 해당 버그를 수정하기 위해 브랜치를 develop 브랜치에서 feature를 생성함. 해당 버그에 대한 수정은 되었지만, 기존에 개발..

Web 2022.06.30

Error: connect ETIMEDOUT 에러

에러코드 그대로 연결이 timeout 되었다는 말인데, 이 에러는 주로 서버와 연결을 시도할 때 제한시간 안에 연결이 진행되지 않으면 나오는 에러다. 1. 서버의 정보를 잘못 기입한 경우 대부분은 이 경우에 해당할 것이다. DB와 연결하는 경우 host, name, password, port number 같은 정보를 잘못 입력하면 해당 서버와 연결이 되지 않기 때문에 ETIMEDOUT 에러가 생길 수 있다. 이 경우에는 간단히 본인이 입력한 정보를 다시 확인함으로써 에러를 해결할 수 있다. MySQL 같은 경우 3306번 포트와 연결을 시도했는지 확인해주는 것이 좋다. 추가적으로 연결하려는 서버가 방화벽에 의해 블락이 되는 경우도 에러가 나오기 때문에 이 경우도 확인해주는 것이 좋다. 2. 권한이 없는 ..

Web 2022.06.02
728x90