개발일지
-
2019-09-23 개발일지개발일지 2019. 9. 23. 17:20
오늘은 프론트 서버를 운영 서버에 배포 테스트를 했다. 기존에 나는 apache 웹 서버나 tomcat WAS를 사용해왔는데 프론트 팀은 nginx를 쓰기로 결정했다고 한다. 프론트 팀이 리눅스를 모르기 때문에 nginx에 대한 설정은 프론트 팀이 담당하고 내가 OS 및 명령어, 기존 환경을 서포트하는 형식으로 진행했다. 정적 파일 위치 변경, 방화벽 포트 허용 설정, 테스트용 도메인 설정, SELinux 설정, 디렉토리 권한 설정 등을 서포트했다. 테스트용 도메인을 연결해서 접속해본 결과 정상적으로 작동했다. 이제 운영 용 DB를 세팅하고 운영용 백엔드 서버 세팅을 진행할 예정이다. 백엔드 프로젝트를 빌드하기 위해서 웹팩을 도입했는데 Node.js 프로젝트에 대한 빌드 관련 글이 없었다. 그래서 걍 일..
-
2019-09-20 개발일지개발일지 2019. 9. 20. 17:15
오늘은 수정사항 반영과 개인 학습으로 패스포트를 이용하여 로그인 로그아웃, 에러 핸들러를 만들었다. [수정 사항 리스트] 게임 가이드 목록 화면 페이지당 게시글 수를 10개에서 20개로 수정 패스포트를 이용하여 로그인 로그아웃을 만들어봤다. 예전에 학습해서 블로그에 포스팅했을 때는 모듈화를 하지 않고 app.js에서 모두 처리했었는데, 이번엔 TS + 모듈화 환경에서 작업해봤다. 어제 개발일지에서 작성한 코드를 기반으로 수정했다. passport.ts import User from 'models/userModel'; import passport = require('passport'); export default (passport: passport.PassportStatic) => { ... passpor..
-
2019-09-19 개발일지개발일지 2019. 9. 19. 17:37
오늘은 이슈 수정과 개인 공부로 passport를 통한 로그인 기능을 TS에 맞게 작업하면서 공부해봤다. [이슈 리스트] 1:1 문의 목록 API 중 응답 객체에 답변 여부 판단을 할 수 있는 값이 누락됨 ① 해당 내용은 내가 응답 객체에 빼먹어서 발생했다. exports.list = async (req, res) => { try { ... const response = []; model.rows.forEach(row => { response.push({ ... answer: row.getDataValue('answer') === null ? false : true }); }); } catch (e) { ... } } 답변을 체크할 수 있는 속성을 하나 만들어서 boolean 타입으로 작성해줬다. pas..
-
2019-09-18 개발일지개발일지 2019. 9. 18. 15:36
오늘은 이슈 수정과 시퀄라이즈-타입스크립트 개인 공부를 하고 있다. [이슈리스트] 공지사항 목록 응답 객체에 댓글 갯수 값 누락 이슈 게시판 목록 오늘 등록한 게시글 시간 표현이 HH:MM 문자로 표현되는 문제 ① 어제 이슈 수정 전에는 잘 줬다고 하는거 보니 내가 수정 사항 반영하다가 지워버린거 같다. -_- exports.list = async (req, res) => { try { const notices = await Model.findAndCountAll({ subQuery: false, attributes: [ ..., [ sequelize.literal('(SELECT COUNT(no) FROM comment_table WHERE "parentId" = parent.id)'), 'commen..
-
2019-09-17 개발일지개발일지 2019. 9. 17. 15:27
오늘은 이슈하나와 수정사항을 작업했다. (이슈) 1:1 문의 라우트에서 잘못된 쿠키에 접근하여 목록을 응답 받을 수 없는 문제 게시판류 목록 화면 시간 포맷 변경하기 (yy.mm.dd) 게시판류 상세보기 화면 시간 포맷 변경하기 (yy.mm.dd HH:MM) 게시판류 댓글 목록 시간 포맷 변경하기 (yy.mm.dd HH:MM) ① 라우트에서 쿠키에 담겨있는 토큰 정보를 확인하여 다음 요청으로 연결시킬지 아니면 요청을 중단할 지 핸들링하는 토큰 미들웨어가 존재한다. const controller = require('controller'); const handler = require('handler'); module.exports = (app) => { app.get('/cont', (req, res) =>..
-
2019-09-16 개발일지개발일지 2019. 9. 16. 17:42
오늘은 이슈들을 수정했다. 이슈 리스트 각종 게시판의 상세보기 및 댓글 보기에서 시간 포맷에 AM / PM이 표현되지 않음 글을 등록하거나 댓글을 등록하면 등록 시간이 아닌 백엔드 서버가 실행된 시간으로 고정되어 들어감 ① 현재 나는 프로젝트의 데이트 포맷을 컨트롤하기 위해 dateformat 패키지를 사용하고 있다. 소개: https://www.npmjs.com/package/dateformat dateformat A node.js package for Steven Levithan's excellent dateFormat() function. www.npmjs.com dateformat(Date.now(), 'yyyy.mm.dd hh:MM:ss TT') 이런 형식으로 뒤에 TT를 붙이면 AM / PM ..
-
2019-09-11 개발일지개발일지 2019. 9. 11. 16:22
어제 올린 글 검토하는데 움짤이 짤리더라. 보니까 티스토리에서 업로드 되는 gif 움짤 파일에 대해서 최적화 작업을 진행하는 것 같은데 해당 기능에 문제가 있나보다. 그래서 열받아서 그냥 움짤은 스킵하기로 했다. 오늘은 채팅 화면에서 목록 메뉴를 클릭하면 선택한 채팅방으로 입장하는 것을 완성해보자. 엘리먼트나 디자인은 이전 개발일지에서 모두 리뷰했으므로 동적인 기능과 서버 통신을 리뷰합니다. 클라이언트 스크립트 부터 보자. /** * 채팅방 입장 액션 * @author Johnny */ roomsEl.forEach(room => { room.addEventListener('click', e => { // 활성화 태그 제거 & 메뉴 클릭 방지 해제 document.querySelectorAll('.room..
-
2019-09-10 개발일지개발일지 2019. 9. 10. 17:40
어제 마무리한 채팅 프로그램을 리뷰해보자. 데이터 베이스는 사용하지 않았다. 가볍고 빠르게 만들기 위해서 변수에 저장하여 사용하는 방식으로 만들었다. (굳이 간단한 프로그램 디비 붙여서 자원낭비 하기 싫다...) 우선 로그인 및 회원가입 화면을 만들어보자. 최초로 사이트를 접속했을 때 로그인 폼을 보여준다. 이후 좌측에서 메뉴를 변경하면 그에 해당하는 폼을 보여준다. 공통적으로 input 태그에 대한 데이터 검증을 시도해야하고, 로그인에서 존재하지 않는 계정으로 로그인을 시도할 경우 회원가입 폼으로 이동시켜주자. 템플릿을 하나 만들고 아래의 코드를 작성하자. html head title script(src = '/js/socket.io.js') body div(id = 'wrapper') div(id =..