-- GROUP CONCAT으로 Tags의 데이터를 가져오는 방법 1. 모든 Tags 출력 SELECT * FROM Tags; 2. postId를 지정해 Tags를 출력 SELECT * FROM Tags WHERE postId = 1; 3. postId를 기준으로 GROUP BY를 지정 SELECT postId FROM Tags WHERE postId = 1 GROUP BY postId; 4. GROUP_CONCAT으로 tag데이터 출력 SELECT GROUP_CONCAT(tag SEPARATOR ', ') FROM Tags WHERE postId = 1 GROUP BY postId; 5. GROUP_CONCAT에서 알파벳 오름차순으로 정렬하기 SELECT GROUP_CONCAT(tag ORDER BY ..
오늘 한일 중간발표의 후유증으로 의욕이 상당히 감소하였습니다. 무언가를 완료했다는 성취감과 함께 안도감을 느꼈고, 그것이 다음 목표를 추구하는 의욕을 상당히 갉아먹은 것 같습니다. 오늘 하루를 성실하게 보냈냐고 물어본다면 아니라고 확실하게 말할 자신이 없습니다. 중간발표에서 받은 질문과 피드백을 최우선으로 수정해야 하는데, 무엇을 해야 할지 확실한 목표 의식이 부족해 오늘의 업무를 상당히 느리게 처리한 것 같습니다. 이번 주의 목표업무를 다시 작성해 의욕을 낼 수 있도록 노력해야 할 것 같습니다. MySQL의 Event Scheduler를 사용하였습니다. 이벤트가 발생하였을 때 추가로 실행되는 Trigger와는 다르게, 이벤트가 발생하였을 때 실행되는 것이 아닌 지정한 시간이 지났을 때 실행되는 것을 E..
Youtube : https://youtu.be/FUEZibcZEkg 서론 실전 프로젝트를 Stateful 하게 구현 해야한다는 생각을 마음속에 간직하고 있었습니다. 2,000ms 기준으로 사용자의 위치를 실시간으로 받아오면서 접속한 반경 이내에 있는 사용자에게 위치를 배포하는데, 이러한 행위를 매번 DB에 저장하고 반환받는 불필요한 행위를 할 이유가 없다고 생각하였습니다. 하지만 어떤 방식으로 Stateful 하게 구현해야 할지 알 수 없었고, 해당하는 기능을 구현한 프로젝트나 발표 자료를 찾아보았습니다. 그러던 도중 NDC2021에서 데브시스터즈의 서버 아키텍처 관련 발표가 있었습니다. 단순히 Stateful 에 대한 자료만 존재하는 것이 아닌 세부적인 로직과 구현하게 된 이유에 대해 들을 수 있었습..
오늘 한일 일주일 만에 집 밖으로 외출했습니다. 바쁜 중간발표 기간 동안 매번 머릿속에서 맴돌던 아이디어와 프로젝트에 대한 걱정이 있었고, 프로젝트 외적으로 생각할 겨를이 없었습니다. 토요일 중간발표가 성공적으로 종료되었고 다음 스텝을 밟기 전 복잡한 마음을 정리하기 위해 1시간 정도의 가벼운 산책을 하였습니다. 3주의 회고록을 되돌아보았습니다. 중간발표 때문에 바쁘다는 핑계로 모든 회의록을 작성하지 않은 것이 안타까웠습니다. 다음 주부터는 모든 회의록을 작성할 수 있도록 하고, 회의마다 각자 현재까지 구현한 코드와 다음 회의를 진행하기 전까지 어떤 업무를 할 것인가 목표를 확실하게 정의해야 할 것 같습니다. 크래프톤 웨이를 읽고 있습니다. 회사가 어떤 방식으로 비전을 생각하는지, 성장하기 위해 어떤 일..
서론 7/23 ~ 9/3의 실전 프로젝트가 진행 중입니다. 갑작스러운 디자이너 회의가 진행되었습니다. 팀장 주간 회의가 진행되었습니다. 중간발표가 진행되었습니다. 보안 및 서버 부하 테스트 가이드 문서가 제공되었습니다. 일정 7/23 (금) ~ 9/3 (금) : 실전 프로젝트 진행 8/11 (수) 20:30 ~ 22:30 : 디자이너 회의 8/13 (금) 13:30 ~ 14:00 : 팀장 주간 회의 8/14 (토) 13:00 ~ 19:30 : 중간발표 실전 프로젝트 4주 차 7/23 ~ 9/3 : 실전 프로젝트 4주 차 진행 중입니다. AWS SES, Auths 테이블에 인증 난수를 SHA 512 해시 함수로 암호화하였습니다. EC2 서버에 HTTPS 적용과 함께 crontab을 이용해 자동 갱신 기능을..
오늘 한일 실전 프로젝트를 시작한 지 벌써 3주 차입니다. 현재까지 작성한 프로젝트의 진행 상황에 대해 모든 팀과 3분의 튜터님들 앞에서 중간발표를 진행하였습니다. 많은 팀이 CI / CD와 코드 안정화에 대해 많은 신경을 쓴 것을 느꼈고, 발표를 진행한 백 엔드 팀원들의 실력이 엄청나게 성장하였다는 것을 느꼈습니다. 다른 팀들의 발표를 들으면서 저희 팀에 접목하면 좋은 기술들이 어느 것이 있는지 생각하였습니다. 저희 팀에서 시간이 부족해 진행하지 못한 Docker를 이용한 CI/CD와 보안을 유지하기 위해 HTTPS, X-XSS-Protection 등 다양한 방법을 사용하였던 것들이 인상 깊었습니다. 저희 팀의 발표는 진행하기 10분 전까지도 프론트 엔드 디버깅을 하였습니다. 테스트하던 이전 버전에서는..
오늘 한일 MySQL의 데이터가 날아가는 것을 방지하기 위해 정기적으로 백업을 실행하도록 셸 스크립트를 작성하였습니다. 기존에는 단순히 시간마다 EC2 서버에서 mysqldump 명령어를 일일이 사용하여 백업하였는데, 이번에는 별도의 셸 스크립트 파일을 작성해 백업과 일정 시간이 지날 경우 파일을 삭제하는 이벤트를 구성하였고, crontab에서 지정한 시간마다 실행하도록 설정해 자동으로 백업 및 파일 관리를 할 수 있게 되었습니다. React를 디버깅하고 있습니다. 배운 적은 없지만, 전반적인 프로젝트의 API 통신에 대한 논리 구조를 이해하고 있어 React의 코드들이 어떻게 동작하는지에 대한 설명을 듣고 현재 발생하는 문제점은 무엇인지, 어떻게 해결해야 하는지를 생각하였고, 코드를 수정하였습니다. R..
정상적인 이메일, 비밀번호 검사 SELECT DISTINCT 1 FROM Users WHERE email = 'dddd@naver.com' AND password = 'SE7vYnBwximuz/hD1hsjM1n83RTUOIn8wLmwwFh2TdDAwQdLAZlqz3Vcfaxg/AtAYMK5+RGpCoIFiImpzzLnCw=='; 사용자의 정보를 조회할 때 모든 정보를 조회하는 것이 아닌, 특정 조건을 만족하는 데이터의 존재 유무를 바탕으로 로그인을 진행합니다. 해당 SQL에서 SELECT DISTINCT 1 부분에서 조건에 만족하는 데이터가 있을 경우 1이라는 데이터가 출력되도록 예시가 구성되어있습니다. 입력 데이터 email : dddd@naver.com password : SE7vYnBwximuz/h..