분류 전체보기40 [Spring] Lombok @Data 어노테이션 package tacos; import lombok.Data; import lombok.RequiredArgsConstructor; @Data @RequiredArgsConstructor public class Ingredient { private final String id; private final String name; private final Type type; public static enum Type { WRAP, PROTEIN, VEGGIES, CHEESE, SAUSE } } @Data 어노테이션을 지정하면 소스 코드에 누락된 final 속성들을 초기화하는 생성자는 물론이고, 속성들의 게터와 세터 등을 생성하라고 Lombok에 알려준다. 그리고 equals(), hashCode(), toSt.. 2023. 6. 28. [MySQL] 페이징 - LIMIT, OFFSET 지난 프로젝트에서 게시판 페이징을 뒷단에서 구현하지 않고 앞단에서 구현했었습니다. 개발 시점과 테스트시에는 아무런 문제가 없었지만 유저가 유입되고 게시글이 많이 쌓이게 되면 성능에 문제가 발생할 것이 분명합니다.(사실 말도 안 되는 개발쇼를 했던 것이다...) 리팩토링을 위해 MySQL 페이징 처리 관련 학습한 것을 정리합니다. MySQL 페이징은 LIMIT과 OFFSET으로! LIMIT : 가져올 개수 OFFSET : 가져오는 시작점(기입된 숫자보다 +1된 행부터 가져옵니다.) SELECT * FROM post LIMIT 10 OFFSET 0; #(1번째부터 10개를 가져옵니다.) SELECT * FROM post LIMIT 5 OFFSET 2; #(3번째부터 5개를 가져옵니다.) OFFSET을 사용하.. 2023. 3. 30. [ReactJS] 동시에 ajax 요청 여러개하기 Promise.all([ axios.get('/url1'), axios.get('/url2') ]) .then(()=>{ // 위 두 요청이 둘다 성공했을 때 작동 }) .catch(()=> { }) 2023. 3. 6. [MySQL] GROUP BY와 ONLY_FULL_GROUP_BY MySQL로 쿼리를 짜던 중 의구심이 들었다. GROUP BY절에 언급되지 않은 컬럼은 SELECT에 기술할 수 없는데 왜 내 쿼리는 작동하는 거지??? SELECT * FROM meal_pass_serial mps INNER JOIN meal_pass mp ON mps.meal_pass_uuid = mp.uuid WHERE mps.user_uuid IS NULL GROUP BY mps.meal_pass_uuid; chatGPT에게 여쭤보았다. 'ONLY_FULL_GROUP_BY' 모드는 처음 들어보는데 바로 조회해 봤다. SELECT @@SQL_MODE ONLY_FULL_GROUP_BY 모드가 없는 걸 보니 활성화되지 않았던 것이다.... 바로 활성화시키고 표준에 맞게 쿼리 짜도록 해야겠다! 2023. 2. 17. [MySQL] CASE를 알아보자! 주문내역을 관리하는 API를 만들었다. 주문상태 컬럼을 WAITING, RESERVED, CANCELED으로 관리하고 있고 그대로 뿌려준다. FE 개발자분께서 Response body에 추가적으로 WAITING일 때는 1을 나머지일 때는 0을 보내달라고 요청하셨다. 쿼리를 어떻게 수정할지 고민하다 CASE문을 알게됐고 적용할 수 있었다. SELECT *, (CASE WHEN reservation_status = 'WAITING' THEN 1 WHEN reservation_status = 'CANCELED' THEN 0 WHEN reservation_status = 'RESERVED' THEN 0 END) AS reservation_status_number, FROM reservation 2023. 2. 16. [MySQL] JSON_ARRAYAGG로 JSON 데이터 출력하기 MySQL의 JSON_ARRAYAGG 함수는 SQL 쿼리에서 JSON 배열을 생성할 때 사용할 수 있습니다. 용례는 다음과 같습니다. SELECT JSON_ARRAYAGG(column_name) FROM table_name; 위 쿼리는 'table_name' 테이블에서 'column_name' 컬럼의 값을 JSON 배열로 묶어 리턴합니다. 예시) CREATE TABLE fruits ( name VARCHAR(20) ); INSERT INTO fruits (name) VALUES ('apple'), ('banana'), ('cherry'); SELECT JSON_ARRAYAGG(name) FROM fruits; // [ "apple", "banana", "cherry"] 내가 사용한 쿼리 SELECT ur.. 2023. 2. 14. [Javascript] 자리수 만큼 0 채우기 chatGPT님은 대단하십니다!! 2023. 2. 13. ??? : 팀장님 로컬에서는 잘 작동하는데 배포하니까 작동이 안 돼요... 똥 같은 코드로 API를 만들어 FE개발자님께 말씀드렸다. FE 개발자 : API 에러 나는데요?? 문가 : 어? 제 로컬에서는 잘 작동하는데요?? 디버깅을 찍어도 내 로컬에선 에러가 없다. 배포 과정에 문제가 있었나 싶어 젠킨스를 확인했더니 아무 문제 없이 잘 배포됐다. 배포 서버의 로그를 확인하고 싶었으나 방법을 몰랐고 심지어 사수님과 팀장님은 출장...(회사는 자체 서버를 두고 있다.) 결국 혼자서는 해결하지 못했고 다음날 팀장님께 도움을 요청드렸다. 문가 : 팀장님 로컬에서는 잘 작동하는데 배포하니까 작동이 안 돼요... 팀장 : 흠 잠시만요!......!! 이거 at 메서드가 작동이 안 되네요. 문제의 코드를 살펴보자 const userIdentity = user.identity_code.spl.. 2023. 2. 10. [MySQL] JSON 타입과 추출 imp_week 컬럼은 상점의 요일별 예약 가능 여부를 JSON 타입으로 저장하고 있다. JSON 타입으로 저장된 데이터는 MySQL에서 json_extract()로 추출할 수 있다. JSON_EXTRACT(컬럼명, '$[배열번호].Key명')의 형태로 사용한다. SELECT * FROM shop s INNER JOIN shop_reservation sr on s.uuid = sr.shop_uuid AND json_extract(imp_week, CONCAT('$[', WEEKDAY(NOW()), ']')) = 0 AND auth_student = 1 INNER JOIN shop_type st on st.uuid = sr.shop_type_uuid; 2023. 2. 9. Javascript enum 구현 exports._STATS_GRAPH_TYPE = Object.freeze({ daily: Symbol('DAILY'), monthly: Symbol('MONTHLY'), yearly: Symbol('YEARLY') }); Object.freeze()와 Symbol을 통해 구현할 수 있다. 2023. 2. 8. 이전 1 2 3 4 다음