4달 전 · 익명 님의 질문
cpp 에서 enum class 복사가 가능한가요 ?
안녕하세요 ! 질문 제목이 좀 명확하지 않아서 죄송합니다 ㅠㅠ 다름이 아니라 새로운 enum class 를 구현할 때 이미 구현된 타 enum class를 그대로 가져올 수 있는지 궁금합니다 ! 예를 들어 아래 코드와 같이 (당연히 error 발생하는 코드인 것은 알고 있지만.. 제가 궁금한 부분을 설명 드리기 위해...) enum class ONE { AA, BB }; enum class TWO = ONE; // error.. TWO 라는 enum class 를 새로 구현할 때 이미 구현된 ONE enum class 를 그대로 복사해오도록 구현하는 방법이 궁금합니다 ! 그냥 ONE enum class 사용하면 될 것이지 굳이 새로운 TWO enum class를 생성할 필요가 있나 ~ 라고 당연히 생각하시겠지만... 현재 저의 상황을 설명드리긴 좀 기네요 ㅠㅠ Qt/qml 구조도 설명드려야 되고... 몇시간 째 구글링을 해봐도 답을 못찾겠네요 ㅠㅠ 답변 주시면 무척 감사하겠습니다 !
개발자
#c++
#enum
#질문
답변 0
댓글 0
조회 40
일 년 전 · 백승훈 님의 답변 업데이트
Recoil Atom Effect 적용 기: 팀 내 설득 및 구현 조언
안녕하세요!! 현재 진행 중인 프로젝트에서 회원가입 시 필요한 정보를 입력하는 중 새로고침 시 session 및 localstorage를 이용하여 상태유지를 하려고하는데 recoil과 관련하여 atom effect를 사용하면 우아하게 처리할 수 있음을 알았습니다. 따라서, 각 atom에 effect를 하나하나 추가하는 방법을 생각했는데 동일한 logic을 행하는 코드의 양이 방대해지고 localstorage에 각 atom에 해당하는 key-value로 저장되므로 가독성 측면에서 좋지 않다고 판단하여 아래와 같은 과정을 생각했습니다. 각 atom을 하나로 묶어 객체로 관리하자. 객체로 관리하게 되면 불필요한 re-rendering이 촉발되므로 객체로 선언한 atom의 각 property에 접근 및 수정을 위한 selector를 정의하자. 객체에 내의 property에 1대1로 selector를 정의하면 객체로 묶기 전 atom의 갯수만큼 selector를 선언해주어야 하므로 selectorFamily를 사용하자. 이것저것 찾아보면서 1 → 2 → 3 단계로 생각을 정리했습니다. 아래는 현재 사용되는 atom입니다. <ATOM> // signup.store.ts 👇 회원가입에 대한 user state들 - SignUpProfileTypeAtom - SignUpProfileRentalTypeAtom - SignUpProfileRegionsAtom - SignUpProfileDepositPriceAtom - SignUpProfileTermAtom - SignUpProfileMonthlyPriceAtom - SignUpProfileSmokingAtom - SignUpProfilePetAtom - SignUpProfileAppealsAtom - SignUpProfileGenderAtom - SignUpProfileMatesNumberAtom - SignUpProfileMateAppealsAtom // 👇 위의 atom들을 한 번에 access 및 update - SignUpProfileSelector 하지만, 다른 팀원이 저렇게 atom을 구성한 상황 제 생각을 그대로 적용하고자하면 팀원의 코드를 마음대로 바꾸는 거 같아서 조심스럽습니다. 협업함에 있어 설득도 하나의 중요한 스킬임을 갈수록 깨닫게 됩니다.(다들 어떻게 설득하시나요?) 팀원이 기존의 코드는 안 바꿨으면 좋겠다 하면 각 atom에 effect를 추가하는 것이 맞겠죠???? 현재 현업에 계신 분들은 이러한 상황에서 어떻게 설득하며 어떻게 하는 것이 좋을까 자문을 구하고 싶어서 글 올려봅니다!!🥲🥲 짧지 않은 글이지만 읽어주셔서 감사하고 많은 의견 주시면 감사하겠습니다!!😄😄😄 ```typescript import { SignUpType } from '@/types/signUp.type'; // ? type 집 유형 0: 원룸/오피스텔, 1: 빌라/연립, 2: 아파트, 3: 단독주택 @number export const SignUpProfileTypeAtom = atom<SignUpType['type']>({ key: 'signUpProfileTypeAtom', default: undefined, }); // ? rental_type 집 대여 유형 0: 월세, 1: 전세, 2: 반 전세 @number export const SignUpProfileRentalTypeAtom = atom<SignUpType['rental_type']>({ key: 'signUpProfileRentalTypeAtom', default: undefined, }); // ? regions 유저가 찾는 지역 >도시 (region) + 구(district) 형태의 배열 @string[] export const SignUpProfileRegionsAtom = atom<SignUpType['regions']>({ key: 'signUpProfileRegionsAtom', default: [], }); // ? deposit_price 보증금 (전세 혹은 월세) 범위 [최소 금액, 최대 금액] (0만원~10000만원) @[number, number] export const SignUpProfileDepositPriceAtom = atom<SignUpType['deposit_price']>({ key: 'signUpProfileDepositPriceAtom', default: [0, 10000], }); // ? term 유저가 살 기간 [최소기간, 최대 기간] (0 ~ 24)범위 @[number, number] export const SignUpProfileTermAtom = atom<SignUpType['term']>({ key: 'signUpProfileTermAtom', default: [0, 24], }); // ? monthly_rental_price 월세 [최소 금액, 최대 금액] (0만원, 500만원) @[number, number] export const SignUpProfileMonthlyPriceAtom = atom<SignUpType['monthly_price']>({ key: 'signUpProfileMonthlyPriceAtom', default: [0, 500], }); // ? smoking 흡연 여부 @boolean export const SignUpProfileSmokingAtom = atom<SignUpType['smoking']>({ key: 'signUpProfileSmokingAtom', default: undefined, }); // ? pet 펫 여부 0: 상관없음, 1: 좋음, 2: 싫음 @number export const SignUpProfilePetAtom = atom<SignUpType['pet']>({ key: 'signUpProfilePetAtom', default: undefined, }); // ? appeals 유저의 어필할 매력(배열형태) @string[] export const SignUpProfileAppealsAtom = atom<SignUpType['appeals']>({ key: 'signUpProfileAppealsAtom', default: [], }); // ? gender 상대방의 성별 0: 상관없음, 1: 남성, 2: 여성 @number export const SignUpProfileGenderAtom = atom<SignUpType['gender']>({ key: 'signUpProfileGenderAtom', default: undefined, }); // ? mates_number 인원수 0: 상관없음, 1: 1명, 2: 2명, 3: 3명이상 @number export const SignUpProfileMatesNumberAtom = atom<SignUpType['mates_number']>({ key: 'signUpProfileMateNumberAtom', default: undefined, }); // ? mate_appeals 유저가 원하는 상대방의 매력 (배열형태) @string[] export const SignUpProfileMateAppealsAtom = atom<SignUpType['mate_appeals']>({ key: 'signUpProfileMateAppealsAtom', default: [], }); ```
개발자
#프론트
#협업
#recoil
답변 1
댓글 0
조회 92
일 년 전 · qweradfzcvcvcv 님의 질문
Edge에서 카메라 디바이스 아이디 가져오기
navigator.mediaDevices.enumerateDevices() javaScript로 해당 함수를 사용해서 카메라의 디바이스 아이디를 가져오려 하는데 FireFox나 chrome에서는 정상적으로 디바이스 아이디를 가져오는데 Edge에서만 못 받아오는거 같습니다. 해결 부탁드립니다,,ㅠㅠㅠ
개발자
#웹-개발
답변 0
댓글 0
조회 42
일 년 전 · 다형 님의 새로운 답변
Enum vs 객체
안녕하세요. 최근 개발을 진행하다 의문이 생겨, 다른 개발자분들의 의견을 듣고자합니다. 값이 정해진 것에 대해 ( 예) 승패여부, 타입 등...) 에 대해서 그동안 Enum타입으로 선언해왔습니다. 그런데 숫자야구의 결과값 같이 조합이 정해진 경우에는 경우의 수가 늘어날수록 Enum타입 선언이 기하급수적으로 증가할 것 이라는 생각이 들었습니다. 예를들어 숫자 3개로 게임을 진행하는 경우에는 8개 , 4개로진행할경우 14개, 5개로 진행할경우 더 늘어날 것 입니다. 이 경우 확장성을 위해서 객체로 선언해서 유효성 검사를 진행해 확장성을 늘리는게 좋은지 , Enum으로 선언해 안정성을 늘리는것이 좋은지 궁금합니다. 긴글 읽어주셔서 감사합니다.
투표
개발자
#java
#개발-공부
답변 1
댓글 0
조회 151
2년 전 · 김도열 님의 새로운 답변
mysql에서 값을 제한할 수 있나요
CREATE TABLE uesr_into( id SMALLINT AUTO_INCREMENT PRIMARY KEY, name MEDIUMTEXT NOT NULL, sex ENUM('M' ,'F') NOT NULL, job MEDIUMTEXT age MEDIUMINT NOT NULL if(age>20 AND age<100, NOT NULL, '입소가 불가능 합니다.') ); if문에서 값을 못게 할 수 없나요?
개발자
#mysql
답변 1
댓글 0
조회 71
2년 전 · 박병석 님의 새로운 답변
프론트엔드 파트에서 서버 데이터를 화면에 매핑시켜줄때
예를 들어,데이터 필드를 화면에 렌더링할때, 1. 서버에서 MALE | FEMALE, enum 값으로 내려오는 필드를 화면에서 매핑하여 한글로 처리 2. 서버에서 처음부터 string으로 남, 여 내려주는 방식 둘 중에 어떤 방법으로 보통 하시나요? 선호하시는 방식과 이유가 궁금합니다 추가적으로 한 프로젝트내에서 하나의 방법을 정해서 일관성있게 나아가는게 좋겠죠?
개발자
#frontend
#프론트엔드
답변 1
댓글 0
조회 101
2년 전 · 오규민 님의 새로운 댓글
[TS] 백엔드에서는 enum 써도 되나요?
타입스크립트에서 enum 쓰지 않아야 하는 이유가 IIFE로 변환되서 트리 쉐이킹이 잘 안 된다는 이유인 걸로 알고있는데 그럼 백엔드에서는 써도 되나요?
개발자
#typescript
#enum
답변 1
댓글 1
추천해요 16
보충이 필요해요 2
조회 3,695
2년 전 · 김인후 님의 새로운 답변
멀티게시판 스프링부트
혹시 멀티게시판을 구현하는 책이 있을까요? 게시판 총3개는 같은기능 나머지 한개는 다른기능을 수행해야해서 테이블 한개더 팔것같은데 보통 같은기능을 가진 게시판은 속성을 추가하거나 enum으로 구별해서 하나요?
개발자
#멀티게시판
#스프링부트
#스프링
답변 1
댓글 0
조회 88
2년 전 · psmon 님의 답변 업데이트
DB테이블 컬럼에 대해 질문드립니다
문의사항 이란 테이블에 어떤 문의사항인지에 대한 컬럼( 결제 문의, 시스템문의 등 )있다 가정 하겠습니다. 그 컬럼의 데이터 타입을 ENUM으로 잡고 한글로 값을 넣는게 잘못된건가요? 제가 볼땐 문의사항 내용도 한글인데 타입값은 한글로 넣으면 안되는 건지 궁금해서요.. 고수님들 답변 부탁드립니답!
개발자
#mariadb
#sql
답변 1
댓글 1
추천해요 1
조회 190
2년 전 · 손정현 님의 답변 업데이트
react axios 로 api호출시 recoil value 전달 실패
회원가입 마지막 단계 페이지인 관심태그 페이지입니다. 이미 nickName, email, phoneNum, pwd, subGroup, workYear는 recoil의 userState에 저장된 상태입니다. 다음 코드를 실행하면 api 호출에는 성공하는데, isSuccess가 false가 되면서 '이메일을 입력해주세요'라는 message가 뜨고 회원가입 실패 alert 창이 뜹니다. 아무래도 recoil value의 전달에 실패한 것 같은데 왜 그럴까요? 참고로 api 주소는 가짜로 적었습니다. function InterestTag() { const [user, setUser] = useRecoilState(userState); const [interestIdx, setInterestIdx] = useRecoilState(userState); const [buttonColor, setButtonColor] = useState("f1f4f7"); const nickName = useRecoilValue(userState).nickName; const email = useRecoilValue(userState).email; const phoneNum = useRecoilValue(userState).phoneNum; const pwd = useRecoilValue(userState).pwd; const subGroup = useRecoilValue(userState).subGroup; const workYear = useRecoilValue(userState).workYear; const handleTagClick = (interestIdx) => { setInterestIdx(interestIdx); setUser({ ...user, interestIdx: interestIdx, isLogin: true, }); setButtonColor("#36f"); }; console.log(interestIdx); const navigate = useNavigate(); const handleSubmit = () => { axios .post("https://abcd.shop/users", { data: { nickName: nickName, email: email, phoneNum: phoneNum, pwd: pwd, subGroup: subGroup, workYear: workYear, interestIdx: interestIdx, }, }) .then((response) => { console.log(response.data); if (response.data.isSuccess === true) { alert("회원가입 성공"); navigate("/"); } else { alert("회원가입 실패"); } }); };
개발자
#react
#axios
#recoil
답변 1
댓글 0
조회 354
2년 전 · 쭈니 님의 새로운 댓글
라라벨 enum 타입 havingRaw절 사용방법 도와주세요ㅠㅠ
안녕하세요 :) 현재 라라벨로 프로젝트를 하고있습니다. havingRaw을 사용하는데 다른 타입들의 데이터들은 다 잘 작동하는데 데이터타입이 enum인 것만 작동을 안합니다. 그러나 아래의 sql문은 하이디sql 에서 실행이 잘 됩니다. SELECT order_id AS cnt FROM test_table WHERE mall_id = 'test_mall' AND user_id = 'test_user' GROUP BY order_id HAVING MIN(type) = 'p' 데이터 타입은 아래와 같습니다. order_id = varchar mall_id = varchar user_id = varchar type = enum $row= DB::table("test_table") ->select(DB::raw('order_id as cnt')) ->where("mall_id", $test_mall) ->where("user_id", $test_user) ->groupBy('order_id') ->havingRaw('MIN(type) = p') ->get(); 해당 쿼리빌더에 잘못된 점이 있을까요??
개발자
#라라벨
#php
#sql
#laravel
#mysql
답변 1
댓글 1
조회 156
2년 전 · 익명 님의 새로운 댓글
typescript enum은 지양해야하나요?
프로젝트 진행 중에 typescript enum 관련해서 팀원들과 의견이 갈려서 질문드립니다. 우선 기존 코드부터 설명드리면, enum Categories { Value, Value2, Value3 } 와 같은 형태가 있고 또 const categoryDataMap = { [Categories.Value]: { name: "카테고리1", }, [Categories.Value2]: { name: "카테고리2", }, [Categories.Value3]: { name: "카테고리3", } } const getCategoryDataByCategory = (category: Categories) => { return categoryDataMap[category] } 와 같은 mapper 오브젝트와 유틸 함수도 존재합니다. 저는 typescript 관련 공부를 했을때 enum 보다는 object as const를 사용하라고 배웠었는데요. 예를 들면 위의 코드를 const Categories = { 1: { name: "카테고리1" }, 2: { name: "카테고리2" }, 3: { name: "카테고리3" } } as const type CategoryKeys = keyof typeof Categories; const getCategoryDataByCategory = (category: CategoryKeys) => { return Categories[category] } 이렇게 바꿔줄수 있는데요. 저는 이 방법이 getCategoryDataByCategory를 사용했을때 category 인자의 타입이나 해당 함수가 리턴하는 타입이 더 명시적으로 나와서 편하다고 느꼈었습니다. 하지만, 팀원들은 다른 견해를 가지고 있었어요. 굳이 enum을 저렇게 바꿔야하는가? 라는 의문을 제기해주셨는데요. ---- 저도 typescript enum을 지양해야한다라고 어렴풋이 알고 있어서 "왜 굳이 enum인 친구들을 더 가독성이 떨어지는 후자의 방법으로 바꿔야하지"라는 궁금증이 생겨서 여쭤봅니다. 흔히 얘기하시는 enum 사용시 발생하는 treeshaking 문제는 enum을 cont enum으로 선언해주면 어느정도 해결되는 것 같은데, 굳이 const 형태로 바꿔줘야하는 이유가 있을까요? typescript에서 enum을 지양하라는 맥락에 대해 좀 더 구체적인 이유를 알고 싶습니다. 긴글 봐주셔서 감사합니다
개발자
#typescript
답변 3
댓글 3
추천해요 2
조회 926
3년 전 · 손정현 님의 답변 업데이트
관계형 DB 설계 시 카테고리 같은 것은 어떻게 저장하시나요?
안녕하세요. 이번에 기능을 구현하다가 문득 궁금해져서 질문납깁니다. 요구사항은 게시글에 카테고리가 추가되고, 해당 카테고리에 따른 게시글을 모아보는 페이지와 네비게이션을 생성하는 작업입니다. 네비게이션에서 게시글 카테고리를 클릭하면 해당 카테고리의 게시물들을 보여주는게 주 목적입니다. 게시글이 post로 MySQL에 저장되고 있는데 여기에 category라는 값을 추가하려고 하는데요. 질문은 카테고리를 어떤 형태로 저장하는게 좋은가 입니다. 기존 코드와 DB 설계 (다른 유사한 테이블)를 살펴보면 category라는 값을 숫자로 저장시키고 사용하는 서비스에서 각 숫자에 맞는 설명?타입을 선언하는 방식이더라구요. 예를 들면, DB에 category = 1로 저장된 post는 사용하는 서비스 (서버)에서 enum 또는 const로 선언해서 category = 1이면 PostCategory.Article 타입을 같는 형태입니다. 이후 사용자가 보게되는 프론트에서도 유사하게 category에 따른 카피를 보여주고 있어요. 특이사항이 있다면, 프론트에서 category에 따라 보여지는 카피는 수시로 바뀔 수 있을 것 같아요. 예를 들면, category = 1인 Article 타입이라면 카피 문구가 “논문”이라고 했을때, 나중에 카피가 “기사” 같은 것으로 바뀔 수 있어요. 이렇게 category 처럼 데이터의 속성이 잘 안바뀌는 값은 숫자로 정의하고 사용하는 위치마다 그에 맞게 타입을 선언하는게 좋을까요? 아니면 category를 DB에 만들때 문자열 형태로하고 “article”이라는 값을 바로 DB에 저장하는게 좋을까요?
개발자
#sql
답변 1
댓글 0
추천해요 2
조회 1,567
3년 전 · 익명 님의 새로운 댓글
query param을 사용한 초기 선택값이 이상합니다.
React와 Next.js 사용해서 사이트를 만들고 있습니다. 라우터는 next/router를 사용하고 있고요. 라우터를 사용해 사이트의 query param으로 initialItem 값을 받아와서 item 상태의 초기값을 지정해주려고 하는데, 초기값 선택이 이상하게 됩니다. 각 item 값은 enum으로 선언해 사용하고 있고 query param을 lodash의 toNumber를 사용해 숫자로 변환하고 있습니다. query param이 없는 경우 전체가 선택되게 하고 싶은데 계속 A가 선택되네요. 왜 그런지 아시는 분 계실까요? 충분할지 모르겠지만 초기값 지정하는 부분과 관련된 코드 첨부합니다.
개발자
#react
#프론트엔드
답변 1
댓글 1
추천해요 1
조회 106