본문 바로가기

Back-End

(12)
Learn Golang - Chat Service Preview 최근에 Golang을 공부하기 시작하면서 사이드 프로젝트를 시작하기에 앞서 잘 만들어진 소스코드를 분석해 보기로 했다. 실무에서 채팅 서비스를 개발하고 있기 때문에 채팅 프로젝트에 관심이 생겼다. 단순 분석뿐만 아니라 개선점을 찾아보고 중요한 개념들에 대해 기록을 남기려고 한다. 그리고 프로그램을 분석하며 발견한 이슈들을 좀 해결해보려고 한다. ethan-well/go-chat [GitHub - ethan-well/go-chat: Golang 高并发聊天程序/go chat room Golang 高并发聊天程序/go chat room. Contribute to ethan-well/go-chat development by creating an account on GitHub. github.com]..
[Nodejs] 프로그래머스 우리싸인 API 서버 개발 과제분석[3] 이전 글에 이어 요건 4번부터 진행해 보겠습니다. 요건 4. 보안 문서 정보가 노출되면 안 되기 때문에 보안에 각별히 신경을 써야 합니다. 4.1. 사이트 간 요청 위조 (Cross-site request forgery, CSRF, XSRF) 차단 src/middlewares/csrf.middleware를 구현해 주세요. express-session과 csrf 라이브러리가 이미 설치되어 있습니다. 해당 라이브러리를 이용해서 csrf 미들웨어를 작성해 주세요. csrf 라이브러리 문서는 여기에서 확인할 수 있습니다. 요청이 들어올 때마다 token을 생성해서 응답 해더 x-csrf-token로 내려주세요. /api path로 요청이 오면, secret을 생성해서 세션에 저장해 주세요 /api path가 아..
[Nodejs] 프로그래머스 우리싸인 API 서버 개발 과제분석[2] 이전 글에서는 프로젝트 구조와 이미 구현되어 있는 signup 과정을 맛보기로 둘러보았습니다. 이번 글에서는 실제 요건을 하나씩 해결해보려 합니다. 요건 1. API 응답 포맷 정상처리 및 오류처리에 대한 API 서버 공통 응답 포맷을 아래와 같이 정의합니다. 정상처리 및 오류처리 모두 success 필드를 포함합니다. 정상처리라면 true, 오류처리라면 false 값을 출력합니다. 정상처리는 response 필드를 포함하고 error 필드는 null입니다. 응답 데이터가 단일 객체라면, response 필드는 JSON Object로 표현됩니다. 응답 데이터가 스칼라 타입(string, number, boolean)이라면, response 필드는 string, number, boolean로 표현됩니다. ..
프로그래머스 우리싸인 API 서버 개발 과제분석 Stack NodeJs,Typescript,node-json-db Preview 이번 글은 프로그래머스 과제 테스트 란에 있는 우리 싸인 API 개발 과제에 대한 분석 및 공부를 위해 작성되었습니다. 과제 대략적인 요건은 이렇습니다. 회원가입/로그인/참가자 인증을 하고 문서에 서명하여 데이터베이스에 저장 및 조회 등의 처리를 위한 Back end 로직을 개발합니다. 자세한 요건은 아래 더 보기를 클릭하시면 볼 수 있습니다. https://school.programmers.co.kr/skill_check_assignments/233 더보기 # 우리싸인 API 서버 문서를 관리하고 참가자가 문서에 서명이 가능한 `우리싸인 API 서버`를 개발해야 합니다. `공개용 API(가입/로그인/참가자 인증)`는 개발이..
es6 문법으로 refactoring하기 Preview 레거시 소스를 보면 es5 혹은 그 이전의 문법으로 되어있는 부분이 있습니다. 정상적으로 잘 돌아가고 있는데 이를 꼭 es6로 리팩토링을 해야 할까요? 정답은 없을 것 같아요. 오히려 새로운 문법으로 다 바꾸는 걸 선호하지 않은 개발자도 있을 것이고 모든 걸 새로운 문법으로 바꾸는걸 선호하는 개발자도 있을 겁니다. 저는 좀 새로운 문법 혹은 트렌드에 맞춰 개발하는걸 선호하기 때문에 여러 소스를 리팩토링 하는걸 좋아합니다. 다음은 ES6 문법 이전의 문법으로 구현된 채팅 기능 일부 소스입니다. 채팅 방 객체 ARoom을 생성하고 Prototype 기반의 객체 생성 방식으로 구현되었습니다. 방 객체를 생성하고 해당 객체의 prototype에 필요한 함수 및 변수를 저장합니다. //------..
[Linux Centos] offline 환경에서 redis 설치하기 상황 : npm, yarn 은 가능하여 yarn add redis로 client는 설치. //Redistest.js const redis = require('redis') const client = redis.createClient(); client.on('error', err=>console.log(err)); client.connect(); node Redistest.js connect ECONNREFUSED 127.0.0.1:6379 에러발생 => redis-server 가 해당 포트로 실행되고 있지 않아서임. redis server 를 가동해줘야 하는데, npm package에 있는 redis-server는 무슨 이유에서인지 잘되지 않음.. CentOs package로 설치 진행. *가능한 방법 ..
Installation of Yarn Berry on Network Disconnected Environment Preview 인터넷 연결이 되어있지 않은 서버에 Nodejs 환경을 구성하고 필요한 node_modlues 패키지를 설치해야 하는 상황을 마주했습니다. 다행스럽게 누군가가 npm 과 node는 설치해 놨기 때문에 node modules 만 통째로 옮겨서 어찌어찌 사용하면 되겠지만 node_modules는 조금만 설치를 해도 몇 백 MG를 넘기기 때문에 한번 옮기려면 시간도 오래걸리고 또 새로운 패키지를 설치한다고 할 때도 여간 번거로운 일이 아닙니다. 그렇기 때문에 yarn berry 가 제공해주는 yarn offline install 기능을 사용해 npm_packages(node_modules 보다 훨씬 가벼운, 압축된)를 FTP로 옮겨 패키지 관리를 하면 되겠다 싶었습니다. 문제는 yarn을 설치하..
[Ubuntu] Npm install 에러 Mac에서 React + django 프로젝트를 개발하고 깃허브에 커밋 후 서버 컴(Ubuntu) 에서 Pull 을 받은 다음에 pip install -r requirements 와 npm install 을 사용해 설치된 라이브러리를 설치하려 보니 npm install에서 에러가 잔뜩 발생했다... 찾아보니 node 18버전대는 ubuntu에서 잘 안돌아가는 에러가 있다고 해서 node를 16버전으로 내리니 성공! sudo apt-get update #apt update sudo apt-get upgrade #apt upgrade .. 약간 이런 작업을 할 때 꼭 한번 해주게 되는.. sudo apt-get remove nodejs npm curl -o- https://raw.githubuserconte..