본문 바로가기
일기, 단문/회고 및 정리와 기록

월간? 회고 ~0131 까지

by SeO.V 2024. 1. 31.

원래부터 고민하던 거긴 했다.

짧게짧게 헷갈렸던 것들에 대해 정리를 해놔야 까먹지 않고 다시 공부할 텐데 키워드만 해놨더니 더 헷갈리기 시작함. 그러므로 공부할 거 일부러 gpt 한테 물어봐서 나온 거로 공부할 거 추가

 

1. Formik과 Yup부분에 대해서

일부러 chatGPT 한테 질문. 분명 when이 condition에 대해서 한 내용에 대해 조건이 is 고 then이 is 가 true일 때가 맞았는데 뭔가 실제 회사에서 쓸 때 안 맞아서 일부러 변수명 바꿔서 물어봄.

 

User

 

Yup에서 when, is, then, otherwise에 대한 설명을 해주고 예시 코드를 보여주세요. 예시는 {movieScenario: {name: "title", detail: {no: 1554, id: "adaw5868aw", counted: 57, code: "0024", fldNmVal : "count"}}} 이라는 obejct 일 때, code 가 0024 일 때, fldNmVal 창이 활성화 되서 사용자가 입력을 할 수 있고, code 가 0024 일 때, fldNmVal는 필수 입력값이 므로 fldNmVal는 null이거나 빈 문자열이어서는 안됩니다.
 

 

ChatGPT

 

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 .[^.]* .[!.]*/

 

  1. .[^.]*: 이 부분은 현재 디렉토리에서 .으로 시작하고 뒤에 문자가 하나라도 있는 숨겨진 파일을 의미한다. 여기서 .은 현재 디렉토리를 나타내며, [^.]*는 . 뒤에 어떤 문자든지 0번 이상 반복되는 것을 의미한다고 한다. 즉, 숨겨진 파일들을 선택하는데 사용됨.
  2. .[!.]*/: 이 부분은 숨겨진 디렉토리를 선택하는데 .으로 시작하고 뒤에 문자가 하나라도 있으며, 뒤에 /가 붙어 있는 디렉토리를 의미하고, [!.]*는 . 뒤에 어떤 문자든지 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