오쿠
-
[리팩토링] 유저 가입 코드 수정Project 2021. 7. 15. 23:34
오쿠 프로젝트의 코드를 리팩토링 중이다. 자바스크립트도 공부하고, CS공부도 하고있는데 배운걸 진짜 그냥 코드에 한번 발라보고싶었다.. 배운건 짧아도 다 써먹어보고싶은것이 자연의 이치이다. 분명 내가 짰는데 동작을 헷갈려서 엉뚱한 코드를 짰다. .... 내가 나 자신에게 당하다니.. 똑같이 userEmail, userNickname의 중복 여부를 체크하는 코드였지만, 하나는 클라이언트쪽에서 입력받자마자 확인할 수 있는 api였고 나머지 하나는 회원가입하면서 밸리데이션하는 코드였다. 그런데 이름을 둘 다 checkEmail,checkNickname으로 해놔서.. 한 번 엉뚱하게 코드를 작성해서 시간 버리기..! 취미이자 특기이다. userController.js파일이 너무 방대해졌다. 그래서 클라이언트쪽에..
-
[OKU] 유효성 검사는 어디에서 발생하는가?Project 2021. 7. 2. 00:34
유효성검사 코드를 조금 수정해놓았다. 기존의 코드는 컨트롤러단에서 검사를 하고 있어서 코드를 보기 어렵다고 판단했다. 문득, 유효성검사 코드를 건드리면서 궁금한 점이 하나 생겼다. 유효성 검사는 어디에서 일어나는걸까. 1. 클라이언트 2. 비즈니스 로직 3. DB단 유효성 검사는 클라이언트, 비즈니스로직, 데이터베이스 등 애플리케이션 전체에 골고루 분포될 수 있다. 하지만 유효성 검사가 여기저기 분포될 수록 코드의 관리가 어려워진다. 검사 조건이 변경될 때 마다 찾아서 변경할 수도 없고, 클라이언트와 데이터베이스간의 유효성 검사 조건 맞추는 것도 일일이 비교대조 해야해서 시간이 꽤 걸렸다. 거기에 잘 작동하는지도 일일이 확인해야했다. 비즈니스 로직에서 추가적으로 유효성 검사를 하면 좀 더 튼튼한 웹사이트..
-
채팅 생성하기Project 2021. 5. 27. 18:36
거래가 성사되면, 사이트 내에서 유저들간에 소통을 할 수 있도록 채팅방을 제공했다. 개개인마다 채팅방 목록이 다 다를것이기때문에 어떻게 응답을 해줘야할 지가 참 고민이었고, 또, 어디서 어떻게 데이터를 가져와서 내려줘야할 지도 고민이었는데, 이 때 디비 수정이 용이한 몽고디비를 쓰고있어서 다행히 해결할 수 있었다. 처음에는 거래 성사 이후 낙찰정보에 대한 DB를 따로 생성해야되는것인가? 라고 생각했는데, 그렇게하면 제품명, 판매자 등 이미 오쿠 제품 DB에 있는 정보를 중복으로 저장한다는점을 알게됐다. 그래서 제품DB에 낙찰자 정보를 추가하고, 제품 기준으로 제품명, 판매자, 낙찰자 등의 정보를 이용해서 채팅방을 생성하도록하였다. 정확하게는 채팅 목록을 json 형식으로 응답해주었다.
-
오쿠 기술 소개Project 2021. 5. 26. 12:33
악의적 사용자가 즉시낙찰 기능을 사용할 경우, 제품의 판매상태가 바뀜 -> 즉시낙찰의 경우, 최고가 낙찰의 기능으로 바꿨다. -> 즉시낙찰가에 입찰 한 유저가 있을 경우, 거래대기중 상태로 변경되고 -> 판매자가 거래하기 버튼을 눌러야만 판매상태로 변경되도록 수정했다. 사이트 내 알림 시스템이 있으나, 이용자가 자주 확인하지 않음 -> 문의댓글이나, 거래가 성사될 경우 이용자에게 메일을 보내서 사이트에 자주 들어올 수 있도록하자 입/낙찰 -> 언제 실행시켜야 할 지, 어디서 실행시켜야 할 지 고민 -> MVP단계에선, 글쓰기를 할 때 node-schedule을 이용해서 마감시간이 되면 낙찰 로직을 실행 -> 글쓰기 자체의 로딩시간이 길어지고, 서버가 꺼졌다 켜지면 예약되었던 기능이 사라지는 등 (모듈 자..
-
pm2-slack 이용해서 pm2 log 공유하기Project 2021. 5. 19. 11:12
온라인으로 진행하는 프로젝트이다보니, 로그를 꼭 온라인으로 공유해줘야한다는 생각이 들었다. 세상에 누군가 이미 pm2로그를 슬랙으로 공유할 수 있게 모듈을 만들어놨다니 세상은 넓고 천재는 많고 나는 그저 주워 쓰기만하면 됐다. pm2-slack 사용법도 엄청 간단하다.. 슬랙앱에서 웹훅 주소만 만들어서 공식문서에 나와있는대로 치면 끝.. pm2 install pm2-slack pm2 set pm2-slack:slack_url https://slack_url 완전 쉽죠..? 이걸 하고 얻은것은.. 서버 꺼졌어요? 라는 질문을 안받게됐다.
-
node-schedule, node-cron 이용하기Project 2021. 5. 19. 11:01
오쿠는 경매사이트다. 마감시간 이후 낙찰자를 지정해줘야하는데, 이 때 node-schedule 모듈을 이용했다. Note that Node Schedule is designed for in-process scheduling, i.e. scheduled jobs will only fire as long as your script is running, and the schedule will disappear when execution completes. If you need to schedule jobs that will persist even when your script isn't running, consider using actual cron. 공식문서에서도 볼 수 있듯이, node-schedule은 ..