원래부터 고민하던 거긴 했다.
짧게짧게 헷갈렸던 것들에 대해 정리를 해놔야 까먹지 않고 다시 공부할 텐데 키워드만 해놨더니 더 헷갈리기 시작함. 그러므로 공부할 거 일부러 gpt 한테 물어봐서 나온 거로 공부할 거 추가
1. Formik과 Yup부분에 대해서
일부러 chatGPT 한테 질문. 분명 when이 condition에 대해서 한 내용에 대해 조건이 is 고 then이 is 가 true일 때가 맞았는데 뭔가 실제 회사에서 쓸 때 안 맞아서 일부러 변수명 바꿔서 물어봄.
Yup의 when, is, then, otherwise 메서드는 Conditional Schema를 정의할 때 사용됩니다. 이를 이용하여 특정 조건에 따라 필드의 유효성 검사를 동적으로 설정할 수 있습니다.
Yup when 메서드
when 메서드는 Conditional Schema를 시작하는 메서드입니다. 첫 번째 인수로는 조건을 나타내는 필드의 경로(문자열 또는 배열)를, 두 번째 인수로는 조건을 평가하는 함수를 전달합니다.
Yup is 메서드
is 메서드는 조건을 평가하는 함수를 받습니다. 이 함수의 반환값이 true이면 해당 필드의 유효성 검사가 활성화되고, false이면 비활성화됩니다.
Yup then 메서드
then 메서드는 조건이 true일 때 적용할 스키마를 정의합니다.
Yup otherwise 메서드
otherwise 메서드는 조건이 false일 때 적용할 스키마를 정의합니다.
이제 예시 코드를 보여드리겠습니다.
예시코드:
const scenarioSchema = Yup.object().shape({
name: Yup.string().required('Scenario Name is required.'),
detail: Yup.object().shape({
no: Yup.number().required('No is required.'),
id: Yup.string().required('ID is required.'),
counted: Yup.number().required('Counted is required.'),
code: Yup.string().required('Code is required.').equals(['0024'], 'Code should be 0024.'),
fldNmVal: Yup.string().when('code', {
is: '0024',
then: Yup.string().required('FldNmVal is required.').nullable(false),
otherwise: Yup.string().nullable(),
}),
}),
});
const data = {
movieScenario: {
name: 'title',
detail: {
no: 1554,
id: 'adaw5868aw',
counted: 57,
code: '0024',
fldNmVal: 'count',
},
},
};
scenarioSchema.validate(data, { abortEarly: false })
.then(() => console.log('Validation succeeded'))
.catch(errors => console.error('Validation failed', errors));
tar -zcvf 숨김파일압축.tar.gz --exclude=숨김파일압축.tar.gz .[^.]* .[!.]*/
2. 리눅스 부분으로 tar 등 명령어..
Rocky Linux 에서 tar를 설치해야한다는 걸 처음 알았다(.. 원래 있는 줄.
sudo yum install tar
위 코드로 설치 하고 나서야 되었고... tar 하려고 보니까 내가 몰라서인지..
tar -zcvf 압축파일명.tar.gz --exclude=압축파일명.tar.gz *
위처럼 하려고 하니까 현재 경로에서 자기 자신과 .와 ..인 경로 디렉토리는 제외 되지만 숨김파일 .git 이런 건 또 제외되더라...
tar -zcvf 숨김파일압축.tar.gz --exclude=숨김파일압축.tar.gz .[^.]* .[!.]*/
- .[^.]*: 이 부분은 현재 디렉토리에서 .으로 시작하고 뒤에 문자가 하나라도 있는 숨겨진 파일을 의미한다. 여기서 .은 현재 디렉토리를 나타내며, [^.]*는 . 뒤에 어떤 문자든지 0번 이상 반복되는 것을 의미한다고 한다. 즉, 숨겨진 파일들을 선택하는데 사용됨.
- .[!.]*/: 이 부분은 숨겨진 디렉토리를 선택하는데 .으로 시작하고 뒤에 문자가 하나라도 있으며, 뒤에 /가 붙어 있는 디렉토리를 의미하고, [!.]*는 . 뒤에 어떤 문자든지 0번 이상 반복되는 것을 의미하고, /는 디렉토리임을 나타낸다.
따라서 이 두 부분을 합쳐서 ., ..을 제외한 모든 숨겨진 파일과 디렉토리를 선택하되, --exclude=숨김파일압축.tar.gz 옵션은 숨김파일압축.tar.gz 파일을 제외하도록 해서 최종적으로 선택된 파일과 디렉토리를 압축하여 숨김파일압축.tar.gz로 만든다. 저걸 &&로 이어서 두개를 보내서 처리하는 무식한 방법을 씀.
3. randomId에 대해서
기존에는 mui/x-data-grid-generator에서 randomId() 함수를 쓰기는 했는데 랜더링 시에마다 바뀐다는 이슈라던가 생겨서 따로 만드셨는데 여기에 그냥 패턴화 추가해놓았던 무식한 함수.
export const randomId = () => {
let id = "";
const alphabets = "abcdefghijklmnopqrstuvwxyz";
// A-A-A-A 형태의 패턴 생성
for (let i = 0; i < 4; i += 1) {
if (i > 0) {
id += "-";
}
const pattern = [];
// 알파벳 2~4자리 생성
const alphaLength = Math.floor(Math.random() * 3) + 2;
for (let j = 0; j < alphaLength; j += 1) {
pattern.push(alphabets.charAt(Math.floor(Math.random() * alphabets.length)));
}
// 숫자 2~4자리 생성
const numberLength = Math.floor(Math.random() * 3) + 2;
for (let j = 0; j < numberLength; j += 1) {
pattern.push(String(Math.floor(Math.random() * 10)));
}
// 배열 요소를 랜덤하게 섞기
for (let j = pattern.length - 1; j > 0; j -= 1) {
const randomIndex = Math.floor(Math.random() * (j + 1));
[pattern[j], pattern[randomIndex]] = [pattern[randomIndex], pattern[j]];
}
id += pattern.join("");
}
return id;
};
대충 unqiue key 에러는 안 뜨더라.
4. 질문하는 법에 대해서
질문을 못하는 편은 아니라고 생각했는데 내가 모르는 것에 대한 질문은 또 할 줄 모르더라.
git 관련 질문이라던가 회사에서도 아예 모르는 걸 질문하려니까 얼타고 이상한 소리 해... 조금이라도 아는 건 알아본 거라던가 모르는 것에 대해 말을 해서 질문을 할 수 있는데 그게 아닌 것은 어떻게 질문하지.. 어렵다.
'일기, 단문 > 회고 및 정리와 기록' 카테고리의 다른 글
2024 Mar 의 회고 (0) | 2024.04.02 |
---|---|
2024 Feb 의 회고 (0) | 2024.03.13 |
2023 회고 세트(? (2) | 2024.01.14 |
2024를 위한 만다라트 (1) | 2023.12.04 |
[후기]2023 인프콘 후기(feat. 신입 프론트엔드) (0) | 2023.08.20 |