Project
12 posts
LOTTERY 🍀 (복권 당첨 정보 구독형 서비스)

LOTTERY 🍀 1. 개발 목적 개인적인 취미(?)로 매주 복권을 구매하고 있다. 로또는 QR코드로 당첨 결과를 손쉽게 제공해주지만, (배아프지만) 당첨 금액 정보를 찾고자 할땐 네이버나 동행복권 사이트로 접근해서 당첨 결과를 찾아봐야 했다. 또한, 스피또 복권도 종종 판매점 입고율과 남은 당첨 매수를 확인하고 전략적(?)으로 접근해서 구매하고 있는데 이를 확인하고자 동행복권 사이트 접속이 점점 많아졌다. 이런 행위가 비효율적이라 생각했고 이는 “구독 형태로 받아보게하면 되겠는데?”라는 생각으로 이번 프로젝트를 진행하게 되었다. 2. 구조 설계 우선 간단한 서비스이고 혼자 개발하고 인프라를 구축하고 운영해야하기 때문에 손쉽게 서비스들을 한데 모아 관리할 수 있는 구조로 구현하고 싶었다. 따라서, Kubernetes를 새로 학습해서 인프라를 구축하는 방향보다는 익숙한 Docker Compose 방식으로 간단하게 여러 서비스들을 정의하고 배포하고자하였다. AWS EC2를 사용해서 인…

July 01, 2024
Project
SLACK 앱 개발하기 (사내 도서관)

슬랙 앱(봇)이란 🤔? 현재 사내 메신저는 슬랙을 사용하고 있다. 여러 이유로 슬랙을 사용하지만 다른 메신저와 차별화된 큰 강점중 하나는 서드파티 앱(슬랙 앱)을 통한 확장성이라 생각한다. 별도 앱을 사용하면 메신저를 통해 발생한 특정 액션을 외부 서비스 혹은 DB에 전달을 할 수 있으며, 반대로 외부에서 발생한 이벤트를 메신저 내부로 가져올 수도 있다. 참고로 현재 우리팀에서 자주 사용 중인 슬랙 앱은 아래와 같다. Polly: 투표 기능을 가진 슬랙 앱 Simple Poll: 간단한 서베이 기능을 가진 슬랙 앱 Jira Cloud: 지라 ISSUE 알림 슬랙 앱 기타 기재한 외부에서 개발된 슬랙 앱들을 업무 효율 증진 및 점심식사 메뉴 추천(??) 용도로 잘 활용중이다. 1. 개발 목적 1-1. 사내 도서 히스토리 추적의 어려움 이번 도서관 앱을 개발한 가장 큰 이유는 “히스토리 관리”이다. 이것이 가장 큰 이유이자 앱 개발을 시작한 근본적인 이유이다. 사내 복지 중 훌륭한 복…

May 01, 2023
Project
ALL-CON Refactoring 8일차 - Timezone 수정

⚒️ Refactoring 현재 ALL-CON 프로젝트의 DB 서버는 AWS RDS를 사용하고 있다. DB의 서버시간이 맞지 않는 문제가 계속 발생하고 있다. DB 서버에 저장되는 포르테 디 콰트로 콘서트 메타포닉-부산의 (티켓오픈일) 값은 다음과 같다. open_date title 2022-02-22 23:00:00 포르테 디 콰트로 콘서트 <메타포닉> - 부산 하지만 인터파크 티켓에서 기재된 티켓오픈일 정보는 아래와 같다. 스크린샷, 2022-02-16 17-21-00 안맞는 시간을 클라이언트에서 강제로 조정해주어서 우선 도메인에서는 정상적으로 보이지만, 근본적인 해결책은 아니였기 때문에 DB 시간문제를 해결하기로 결정하였다. 1. 보완이 필요한 사항 1-1. DB Server 시간 안맞음 위에서 언급한 대로 DB의 시간 설정이 9시간 맞지 않는다. mysql에서 현재 서버의 시간을 가져오는 함수인 를 사용시 다음 아래와 같은 서버시간이 출력된다. (현재 시간은 2월 16일 1…

February 16, 2022
Project
ALL-CON Refactoring 7일차 - 티켓 오픈 임박예정 콘서트 정보만 보여주기

⚒️ Refactoring 현재의 콘서트 정렬 방식은 조회수순, 임박예정순, 최신순 3가지이다. 그 중, 임박예정순 경우 티켓오픈일이 가까운 순으로 정렬을 하고 있는데 모든 콘서트가 아닌, 티켓팅이 가능한 콘서트들로만 추려서 보여주는 방식으로 바꿔보려 한다. 1. 보완이 필요한 사항 near 현재는 티켓 오픈이 임박한 콘서트 외에도 너무 많은 콘서트 정보들이 불필요하게 보여지고 있다는 피드백을 전달 받았다. 현재 기준으로 티켓팅이 가능한 상태의 콘서트 데이터들로만 추려서 보여지게끔 바꾸어보려 한다. 2. 문제 해결 2-1. Sequelize Op 연산자를 이용한 데이터 추출 우선 콘서트 DB 정보중 는 아래와 같이 날짜객체로 저장하고 있다. 스크린샷, 2022-02-16 11-19-24 그렇기에 티켓 오픈일자가 지났는지 여부를 비교하려면 같은 날짜 객체끼리 비교해야 유의미한 비교 결과가 나온다. 비교를 위해서는 에서 조건문을 통하여 필요한 데이터를 추릴 수 있으며, 를 사용하면 보…

February 15, 2022
Project
ALL-CON Refactoring 6일차 - Articles 테이블 스키마 수정(2)

⚒️ Refactoring ALL-CON에서는 한달간의 콘서트 정보만 배열에 담아 보여주고 있다. 한달이 지나게되면 콘서트 정보중 이 으로 비활성화되어 서버에서 보여주지 않고 있다. (콘서트 삭제는 관련 댓글 및 게시글들이 모두 삭제되므로 비활성화를 선택) 스크린샷, 2022-02-15 17-45-59 기존에는 콘서트가 비활성화 될 시 관련 게시글은 조회수를 음수값으로 강제로 할당하여 조회수로 검색시 맨 뒤로 나열되게끔 수정해주었으나 만약 불순한(?) 목적으로 조회수를 올리거나 시간이 오래지나 조회수가 이상의 양수값으로 전환된다면 올바르지 않은 결과가 초래되므로 테이블에도 컬럼값을 추가해 비활성화 해주기로 했다. 1. 보완이 필요한 사항 테이블의 현재 스키마는 다음과 같다. 스크린샷, 2022-02-15 17-44-23 해당 테이블 컬럼중 컬럼값을 추가하고, 서버에서 을 통하여 1일 1회 티켓 발매 후 한달이 지난 콘서트들은 비활성화를 시키는데 해당 콘서트에 종속된 게…

February 14, 2022
Project
ALL-CON Refactoring 5일차 - Articles 테이블 스키마 수정(1)

⚒️ Refactoring 어제~오후까지 어제부터 이어온 Task인 로그인이 검증이 필요한 API 요청시 유효하지 않은 로그인 상태라면 메인페이지로 강제 이동 후 로그인 창 팝업으로 다시 로그인을 유도하는 로직으로 서버와 클라이언트를 다시 설계하였다. 생각보다 로그인 검증이 필요한 API 요청이 많아서 작업시간이 오래걸렸다.. ===main page=== 알람 요청 : [post] concert/:concertid/alarm 알람 취소 : [delete] concert/:concertid/alarm 알람 조회 : [get] concert/alarm 콘서트 댓글 작성 : [post] concert/:concertid/comment 콘서트 댓글 수정 : [patch] concert/:concertid/comment/:commentid 콘서트 댓글 삭제 : [delete] concert/:concertid/comment/:commentid ===concert page=== 없음 ===co…

February 11, 2022
Project
ALL-CON Refactoring 4일차 - 유효하지 않은 로그인 상태 검증

⚒️ Refactoring 어제 발생한 에러는 미들웨어 함수를 수정하여 핸들링하였다. 오늘은 전반적으로 유효하지 않은 로그인 상태를 검증하여 메인페이지로 이동 후 로그인을 유도하는 방향으로 프로젝트를 리팩토링해볼 예정이다. 1. 문제점 현재 ALL-CON 프로젝트는 로그인중 웹 브라우저 쿠키가 삭제되거나 쿠키의 유효기간이 지난 이후에도 로그인을 계속 하고 있다면, 로그인이 필요한 API 요청을 시도시 만 반환하고 자동으로 로그아웃 처리가 된다던지, 페이지가 이동한다던지의 상태변화는 이뤄지지 않는다. 이렇게 서비스가 유지가 된다면 이용자가 직접 유효하지 않은 로그인 상태를 감지하기는 어려우니 당연히 ALL-CON 서버 측의 문제가 있다고 생각이 들것이다. 만약 유효하지 않는 로그인 정보로 로그인 검증이 필요한 API 요청 사용시에는 메인페이지로 강제로 이동 시키며, 로그인을 유도하는 방면으로 프로젝트를 리팩토링 해 볼 예정이다. 2. 문제 해결 2-1. LoginRedirect 모…

February 10, 2022
Project
ALL-CON Refactoring 3일차 - 하나의 요청에 두개 이상의 응답시 발생하는 에러 핸들링

⚒️ Refactoring 민감정보 암호화 Task는 모두 끝냈다. 다음 가져갈 Task로 로그아웃시 발생하는 에러 핸들링을 해보려한다. 문제점 현재 로그인 방식은 에 JWT Token을 담아 인증하는 방식으로 로그인검증이 이루어지고 있으며, 로그아웃시에는 로그인 여부를 검증한 뒤, 쿠키를 만료시키는 방식으로 로그아웃 처리를 구현하였다. controller/authentication/logout.js 스크린샷, 2022-02-09 11-31-35 로그아웃시 에러가 발생하는 대표적인 경우는 다음과 같다. 웹이나 모바일 환경에서 강제로 쿠키를 삭제 후 로그아웃시 발생 스크린샷, 2022-02-09 11-28-57 우선 위의 크롬환경에서 쿠키를 강제로 삭제하는 경우 에 담긴 JWT Token값이 날아가기 때문에, 로그인 검증이 이뤄지지 않아 발생하는 에러이다. 스크린샷, 2022-02-09 11-24-50 검색 결과 우선 에러의 원인은 “서버가 클라이언트에 둘 이상의 응답을 보내려고 할 …

February 09, 2022
Project
ALL-CON Refactoring 2일차 - 민감정보 암호화

⚒️ Refactoring 어제 오후까지 프로젝트 리팩토링 우선순위를 정하여 각자 Task를 선별하였다. 팀 프로젝트 Repository를 이제는 더이상 수강생이 아니기 때문에 Private ⮕ Public으로 전환을 하였다. 그 과정에서 기존 Repository에서 새로운 Repository로 이전을 해야해서 오늘은 시간을 소비하였다. 우선 어제 혼자 학습한 내용은 블로그 후기로 정리를 해두었다. Crypto 모듈로 비밀번호 암호화하기 오늘은 문제점 2~3을 마저 해결해보려한다. 1. 미처 해결하지 못한 문제점 1-1. 문제점 2 비밀번호 찾기 & 콘친인증시 발송되는 6자리 난수코드 또한 암호화 하지않고 그대로 서버에서 DB로 저장을 한다. 스크린샷, 2022-02-07 13-41-06 물론 DB에 저장된 난수코드 값은 3분 이후 값으로 초기화 되게끔 셋팅을 해두었기 때문에 비밀번호를 그대로 DB에 저장하는 경우 보다는 위험성은 낮다. 하지만 위험의 여지가 있다는 사실은 변함이 없…

February 08, 2022
Project
ALL-CON Refactoring 1일차 - 서버 리팩토링 우선순위 선정

⚒️ Refactoring 우선 ALL-CON Final Project만 대상이며 리팩토링 기간은 정해두지 않았다. 수료 이후 너무 헤이해지지 않도록 09:00 ~ 18:00 일정으로 팀원들과 다시 모여 프로젝트 결과물을 최소 보름~몇달간 재정비할 계획이다. 리팩토링 우선순위를 정해보았으며 다음과 같다. 1️⃣ 1순위 [클라이언트] useEffect 중복 실행 현상 (콘서트 조회시 조회수가 1회 이상씩 올라가는 현상) 비동기 처리 구현 (ex. Loading 중인 표현) [클라이언트] TypeScript 문법 체크 어색한 문법및 Type 누락 코드 유지보수 필요 [서버] 서버 보안 회원가입 등 비밀번호를 다룰때 암호화 과정이 없이 클라이언트와 서버와 DB간 작동을 하고 있다. 특히 비밀번호 변경시 발송되는 인증코드와 새로운 패스워드로 비밀번호 변경된 값 그리고 회원가입의 경우 클라이언트에서 입력한 민감한 정보가 그대로 담겨서 서버로 전달되며 별다른 가공없이 DB로 저장되고 있다. 보안에…

February 07, 2022
Project
[ALL-CON] 콘서트 예매정보부터 콘서트 친구까지 찾아주는 콘서트 종합 정보 플랫폼 🎟

🔥  👉 ALL-CON 바로가기   👉 Github 바로가기   👉 Project 회고 바로가기  ALL-CON은 각 사이트들의 콘서트 정보를 한 눈에 볼 수 있는 콘서트 종합 정보 플랫폼이에요. 각 사이트들의 단독 판매 콘서트까지 한눈에 보고 비교해보세요!🤩 콘서트를 가고 싶은데 같이 즐길 친구가 없어 망설이셨나요?😢 콘서트의 감동을 함께 나눌 콘친을 찾아 보세요!🤼‍♂️ 🤔 ALL-CON은 무슨 뜻인가요? 🤔 ALL-CON에서는 무엇을 할 수 있나요? 👉 각 사이트들의 콘서트 정보(단독 콘서트 포함)를 한 눈에 볼 수 있어요. 👉 현재 인기 많은 콘서트, 오픈이 임박한 콘서트, 최근 등록된 콘서트 정보를 한눈에 볼 수 있어요. 👉 문자 알림 또는 메일 알림 기능을 이용해서 내가 원하는 콘서트의 예매 오픈시간을 놓치지 않을 수 있어요. 👉 콘서트 정보를 조회해서 콘서트장의 위치정보를 알 수 있어요. 👉 콘친 인증을 하면 콘서트에 함께 갈 콘친을 찾을 수 있어요. 👉 콘친이 될 유저…

January 26, 2022
Project
[6699] 목표와 다짐들을 글로 적고 실천하며 소통하는 동기부여 커뮤니티 ✍️

🔥  👉 6699 바로가기   👉 Github 바로가기   👉 Project 회고 바로가기  6699는 명언을 보는 것에 그치지 않고 실천까지 이어질 수 있도록 도와주는 동기부여 커뮤니티 입니다. 동기부여 글을 보고 타올랐던 열정🔥이 금방 사라진 경험이 있으신가요? 명언을 보는 데에 그치지 않고 실천까지 모두와 함께해요🏃‍♂️🏃‍♀️🏃 🤔 6699는 무슨 뜻인가요? 🤔 6699에서는 무엇을 할 수 있나요? 👉 모두와 실천할 수 있는 명언을 만들 수 있어요. 👉 명언에 맞는 게시물을 올려서 모두와 공유할 수 있어요. 👉 나를 자극하는 명언과 게시물들을 분야별로 모아서 볼 수 있어요. 👉 내가 만든 명언과 나의 게시물을 모아서 나의 명언을 실천한 순간들을 모아서 볼 수 있어요. 👉 다른 사람의 게시물에 댓글을 달아서 소통할 수 있어요. 👉 다른 사람의 명언에 좋아요를 눌러, 내가 영감을 받은 명언을 모아서 볼 수 있어요. 👉 다른 사람의 게시물에 좋아요를 눌러, 나에게 자극을 주는 게시물들을…

December 25, 2021
Project