목록항해99 (65)
Día de Ruru
코딩테스트 1단계 달리기 경주 얀에서는 매년 달리기 경주가 열립니다. 해설진들은 선수들이 자기 바로 앞의 선수를 추월할 때 추월한 선수의 이름을 부릅니다. 예를 들어 1등부터 3등까지 "mumu", "soe", "poe" 선수들이 순서대로 달리고 있을 때, 해설진이 "soe"선수를 불렀다면 2등인 "soe" 선수가 1등인 "mumu" 선수를 추월했다는 것입니다. 즉 "soe" 선수가 1등, "mumu" 선수가 2등으로 바뀝니다. 선수들의 이름이 1등부터 현재 등수 순서대로 담긴 문자열 배열 players와 해설진이 부른 이름을 담은 문자열 배열 callings가 매개변수로 주어질 때, 경주가 끝났을 때 선수들의 이름을 1등부터 등수 순서대로 배열에 담아 return 하는 solution 함수를 완성해주세..
문제점 기존에 사용하던 winston을 사용한 에러로그확인 방식은 서버 컴퓨터에 직접 들어가서 해당 날짜의 에러 로그 파일을 찾은 후 에러 로그를 확인해야 하는 부분이 너무 번거롭고 불편했다. ✔ 해결방법 클라우드 기반의 팀 협업 툴인 Slack을 이용해서 팀원 전체가 실시간으로 서버 에러를 모니터링 할 수 있게 적용했다. ✔ 도입 먼저 Slack에 서버를 추가하고 incomming webhooks 을 설치한 후, URL을 발급받았다. 👉 토큰을 발급 받아서 사용할 수도 있지만 incomming webhooks은 메세지 전송에 특화되어 있어서 더 다양한 기능을 시도해 볼 수 있다. 그리고 애초에 토큰이 없기 때문에 토큰 탈취로 인한 정보 유출의 가능성이 아예 없다. URL 을 발급 받았으면 Slack에서..

문제점 mypage에서 파일 목록을 조회할 때 다중 파일일 경우, 아래의 사진처럼 fileName, fileLocation의 객체로 이루어진 배열로 보내달라는 프론트엔드의 요청이 있었다. 초기에 fileName과 fileLocation 을 조회할 때 아래처럼 GROUP_CONCAT으로 객체 모양의 문자열을 만든 후 Split()으로 배열로 만들어주고 객체 모양의 문자열인 요소들을 map()으로 하나씩 가져와서 JSON.parse()로 진짜 객체로 바꿔주었다. 하지만 이 경우 Sequelize의 문자열 제한 때문에 파일을 여러 개 올리게 되면 GROUP_CONCAT에서 문자열의 뒷부분이 생략되어서 조회되는 문제점이 있었다. [ Sequelize.literal( "(SELECT GROUP_CONCAT('{\..

문제점 우리 프로젝트는 회사를 대상으로 한 b2b 프로젝트이다보니 최초에 회사가 가입하는 부분이 필요하다. 회사가 가입할 때 입력하는 정보를 각각 companies , teams, users 테이블에 정보를 나눠서 입력해주기 위해서 하나의 API에 create 명령어가 세개 들어가게 되었다. 그런데 해당 명령어들이 순차적으로 진행되다보니 3개중에서 하나의 명령어에서 에러가 생겨도 그 전에 실행되었던 명령어는 성공이 된 상태이기 때문에 다시 회원가입을 하려고 할 때, companies에 성공적으로 입력된 값 때문에 이미 가입된 회사라는 에러메세지를 반환하게 된다. 트랜잭션 도입 순차적으로 동작하는 3개의 명령어를 트랜잭션 도입으로 단일 작업처럼 실행되게 하면 문제를 해결할 수 있을 것 같다. 트랜잭션(Tr..
다시 시작한 코딩 테스트... 오랜만에 다시 하려니까 잊어버린게 많다. 코딩 테스트 풀이 정수 배열 numbers 가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요. 입력 예 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 출력 예 5.5 문제 점 배열안에 있는 모든 값을 하나씩 더하고 개수로 나눠야 하는데 배열안에 있는 모든 값을 더하려고 for 구문을 쓰자니 너무 코드가 길어지는 기분이다. 누적되는 값을 reduce()로 구하는 방법이 있었던것 같은데 reduce() 쓰는 방법을 잊어버림.. 해결 방안 아래 코드는 배열안의 값들을 더하는 코드이다. 이 코드를 이용하면 배열의 요소 평균값을 구할 수 있다. const arr = [1..
파이널프로젝트에서 내가 맡은 부분과 각 부분에서 적용해봤던 새로운 기능들 회원가입 / 로그인 대표자 회원가입 API 👉 트랜잭션으로 회원가입 도중 에러 발생 시 rollback 되게 구현 대표자 로그인 , 일반 유저 로그인 API 👉 Joi 라이브러리를 사용해서 입력되는 body 값의 validation 확인 일반 유저 최초 로그인 시 비밀번호 변경 요청 API 이메일 인증 API 👉 nodemailer를 사용해서 이메일 인증을 위한 메일 발송 구현 마이페이지 내가 언급된 일정 전체조회 API 내가 올린 파일 전체 조회 API 팀원들이 올린 회의록, 보고서 전체 조회 API 해당 유저 정보 조회 및 수정 API 👉 multer-s3 를 사용해서 프로필 이미지 등록 및 수정 구현 개인 투두리스트 카테고리,..