hyun
  • 홈
  • 글쓰기
  • 태그
  • 방명록
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • 분류 전체보기 (103)
      • 1. Computer Science (11)
      • 2. FrontEnd (51)
        • Javascript (10)
        • TypeScript (6)
        • CSS (3)
        • React (17)
        • Next.js (1)
        • Dart (1)
        • Three.js (3)
        • State Management (4)
        • TDD (2)
        • Ag-Grid (1)
        • LeetCode (1)
      • 3. Backend (9)
        • NestJS (9)
      • 4. Git (4)
      • 5. Blockchain (9)
        • Mastering Ethereum (5)
      • 6. Error (16)
      • 7. Infra | Cloud (2)
        • Docker (2)
        • Kubernetes (0)
        • AWS (0)
      • 8. 자격증 (0)
        • CompTIA A+ (220-1101, 220-1102.. (0)
      • Daily (1)
        • 후기 (1)
        • 맛집 (0)
  • 홈
  • 태그
  • 방명록
2. FrontEnd/Dart

[Dart] Why Dart?

dart 는 두 개의 컴파일러를 가지고 있다(JIT, AOT)AOT 컴파일러네이티브(arm, x86, x64), 웹(js)시스템에 맞게 최적화된 바이너리를 생성하므로 컴파일에 많은 시간이 걸린다.최종 배포시 사용.JIT(Just In Time) 컴파일러dart VM 사용코드의 결과를 바로 보여준다. (ms 단위?)가상머신에서 동작중이라 조금 느리지만 많은 디버깅 옵션도 지원.개발중에만 사용하며 배포에는 사용하지 않음.null safety 특성을 가진다.c나 java에서 null 참조하면 오류 발생.Dart에서는 null safety를 도입했고, 프로그램을 더 안전하게 만들어줌flutter, dart 둘 다 google 에서 개발 한 것이다 즉 flutter 의 성능 향상을 위해 dart 를 변경 하는 것..

2025. 5. 18. 16:02
2. FrontEnd/Javascript

[JS] JSON.stringify(…) 스프레드 연산자를 사용하면?

[문제] 프로젝트를 하면서, 배열을 stringify를 하면 마지막값만 저장되는 현상이 있음localStorage.setItem(‘history’, JSON.stringify(…curHistory))return […curHistory][원인]스프레드 연산지 오용 사용JSON.stringify(…curHistory) = 잘못된 문법- …curHistory는 배열을 해체하는 문법인데, JSON.stringify는 하나의 값만 받을 수 있음- 스프레드 연산자는 배열을 개별요소로 해체하기에 올바른 형태가 아님2. 마지막 값만 저장되는 이유- 잘못된 스프레드 사용으로 직렬화가 실패하거나, localStorage.setItem이 유효한 데이터를 받지 못해 덮어쓰기가 발생한 것[해결]배열 자체를 JSON.string..

2025. 2. 27. 15:43
2. FrontEnd/Javascript

[ JS ] 실행 컨텍스트

실행 컨텍스트는 JS에서 코드가 실행되는 환경이다JS엔진이 코드를 실행할때, 그 코드가 실행될 때의 환경을 정의하고 관리하기 위해 존재하는 것이 실행 컨텍스트이다 실행컨텍스트는 크게 전역과 함수 실행 컨텍스트로 나눌 수 있다1. 전역 실행컨텍스트JS가 처음 실행될 때, 생성되는 컨텍스트이다. 이 전역 컨텍스트는 프로그램이 종료될 때까지 유지되며 전역에 선언된 변수나 함수가 모두 포함된다. 전역 컨텍스트에서 선언된 변수와 함수는 프로그램 내 어디서든 접근이 가능하다기본적으로 JS는 싱글 스레드이기에 전역 실행컨텍스트는 1개만 존재2. 함수 실행 컨텍스트함수가 호출될 때마다 생성되는 컨텍스트이다. 각 함수는 자신만의 실행 컨텍스트를 가지며, 이컨텍스트 내에서 선언된 변수와 함수는 해당 함수 내에서만 유효함...

2025. 1. 17. 11:47
2. FrontEnd/React

[ React ] Controlled Component, Uncontrolled Component의 차이점

Controlled Component리액트 상태(state)를 통해 입력값을 제어하는 컴포넌트이다이 방식에서는 입력요소의 값(value)을 리액트 상태와 동기화하고, 사용자가 입력을 변경할 때마다 onChange이벤트 핸들러를 통해 상태를 업데이트합니다useState를 활용한 input valye를 제어하는 상황을 예시로 들 수 있습니다value는 리액트상태로 관리되며, onChange이벤트가 발생할 때마다 상태가 업데이트 됩니다장점은 입력값이 리액트 상태로 관리되므로, 입력값을 쉽게 검증하고 변경할 수 있으며, 복잡한 폼 로직을 처리하는데 유리하다Uncontrolled Component리액트의 상태가 아닌 DOM자체가 입력값을 제어하는 방식이다즉, 입력요소의 값은 DOM에서 직접관리되며, 리액트는 이를..

2025. 1. 17. 11:24
2. FrontEnd/React

[ React ] 리액트의 render phase와 commit phase

리액트의 렌더링 과정은 render phase, commit phase로 나눌 수 있다먼저 render phase는 리액트가 변화된 상태나 props에 따라 어떤 UI가 변경되어야 할지를 결정하는단계이다.이 과정에선 실제로 DOM을 업데이트 하지 않고, 변경사항을 가상 DOM에서 계산하여 비교합니다이 단계는 순수하게 계산과정이기에 성능에 영향을 주지 않도록 중단되거나 다시 실행될 수 있으며 React18에서 도입된 Concurrent Mode를 통해 비동기적으로 처리될 수도 있다다음으로 commit phase는 실제로 변화된 UI를 DOM에 반영하는 단계이다이때 리액트는 가상 DOM에서 계산된 결과를 실제 DOM에 적용하고, 변화된 UI를 브라우저에 렌더링 합니다DOM업데이트 이후는 useEffect와 ..

2025. 1. 17. 11:16
2. FrontEnd/React

[ React ] useEffect와 useLayoutEffect의 차이점

useEffect와 useLayoutEffect는 모두 렌더링된 후에 특정 작업을 수행하기 위해 사용됩니다. 하지만 실행되는 타이밍과 용도가 다릅니다먼저, useEffect는 렌더링이 완료되는 시점에 비동기적으로 실행됩니다즉, 화면이 실제로 사용자에게 그려진 후에 useEffect가 실행되는 방식그래서 useEffect는 보통 데이터를 가져오는 작업이나 이벤트 리스너 추가 등 렌더링 후에 화면에 직접적인 영향을 주지 않는 작업에 주로 사용됩니다.반면에 useLayoutEffect는 렌더링 후 DOM이 업데이트되기 직전의 시점에 동기적으로 실행됩니다. 여기서 동기적이라는 것은 화면에 내용이 그려지기 전에 모든 레이아웃 관련 작업이 완료된다는 의미입니다. 예를 들어, DOM의 크기를 측정하거나 위치를 조정해..

2025. 1. 16. 23:31
2. FrontEnd/React

[ React ] 다국어 처리를 구현할 때, 발생가능성이 있는 이슈들과 해결법

1. 텍스트 번역 관련 이슈(1) 번역 품질문제문제 설명해결방법문맥의 부재단어 단위 또는 문장 단위 번역 시 문맥을 고려하지 않아 부자연스러운 번역이 발생번역 시 전체문맥을 전달하도록 문맥 번역 옵션 지원전문 번역사나 번역 관리시스템 사용전문 용어 관리기술적 용어나 도메인 특화된 용어가 잘못 번역될 가능성용어집과 번역메모리(TM)을 사용해 일관성 유지다의어 처리동일한 단어가 다양한 의미를 가질 때 적절한 번역 선택이 어려움번역 전, 텍스트에 주석을 추가하거나 문맥을 명확히 작성(2) 번역 관리문제문제 설명해결방법번역 누락신규 콘텐츠를 추가했을 때 번역 문자열을 누락하는 문제i18n라이브러리 사용 시, 기본언어와 모든 언어 파일을 비교하는 자동검증도구 사용(i18next-parser, Lokalise)중복..

2025. 1. 16. 22:41
1. Computer Science

[CS] PubSub구조 (발행-구독 모델)

발행-구독 모델은 비동기 메시징 페러다임이다. 발행-구독 모델에서 발신자의 메세지는 특별한 수신자가 정해져 있지 않다.대신 발행된 메세지는 정해진 범주에 따라, 각 범주에 대한 구독을 신청한 수신자에게 전달된다수신자는 발행자에 대한 지식이 없어도 원하는 메세지만을 수신할 수 있다이러한 발행자와 구독자의 디커플링은 더 나이나믹한 네트워크 토폴로지와 높은 확장성을 허용한다1. pub-sub구조에서 수신자는 발행자에 대한 지식 없이 원하는 메세지만을 수신할 수 있다유튜브 개발체널을 구독하고 새로 올릴때마다 정보를 받고싶어하는 수신자가 있다고 가정하자. 이 수신자의 관심사는 '구독한 유튜브 개발체널'이다. 오로지 그것만 필요하다.발행자가 누구인지, 어디에 있는지는 관심이 없다. 그저 유튜브 체널에 새로운 소식이..

2025. 1. 14. 16:52
2. FrontEnd/React

[ React ] 다국어 처리 i18next

다국어 처리(i18n)를 통해 다국적 사용자를 지원합니다.핵심적인 기능은 선택된 언어에 따라 텍스트를 동적으로 변경하는 것입니다.이 기능은 i18next 라이브러리를 사용하여 구현되었습니다. 1. i18next 라이브러리 설치 • i18next는 다국어 처리를 간편하게 지원하는 라이브러리입니다. • React 프로젝트에서는 보통 react-i18next를 함께 사용합니다.npm install i18next react-i18next 2. 번역 파일 준비 • 언어별 JSON 파일로 텍스트 리소스를 준비합니다. • 예: /locales/ko/translation.json (한국어), /locales/en/translation.json (영어).// ko/translation.json{ "welcome": "..

2024. 11. 22. 16:28
2. FrontEnd/React

[ React ] 다국어 코드 중복 제거하는 리팩토링 후기

다국어 할 때, 중복되는 코드를 단순화하는 작업을 했다 {termsSelectedLanguage === 'ko' ? ( !termsContent ? ( ) : ( ) ) : termsSelectedLanguage === 'en' ? ( !termsEnglishContent ? ( ) : ( ) ) : termsSelectedLanguage === 'ja' ? ( !termsJapaneseContent ? ( ) : ( ) ) : null};이 코드를 1차적으로 아래와 같이 리팩토링 했다// 언어 타입을 명시적으로 정의type Language = 'ko' | 'en' | 'ja';cons..

2024. 11. 20. 11:25
2. FrontEnd/React

[ React ] useState 초기값 설정 에러

에러문구Warning: A component is changing a controlled input to be uncontrolled. This is likely caused by the value changing from a defined to undefined, which should not happen. Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components이 에러는 “Controlled input이 Uncontrolled로 바뀌었다”는 경고이는 컴포넌트가 처음에는 입력 필드에..

2024. 10. 11. 13:59
2. FrontEnd/React

[ MUI ] @toolpad/core의 Account slots menuItems 적용 안되는 문제

문제MUI의 @toolpad/core 레이아웃을 사용하다가, Account에 slots을 커스텀해야해서 하는데, 공식문서대로 적용을 해도 적용이 안되는 문제가 발생했다공식문서 : https://mui.com/toolpad/core/react-account/#slots Account - Toolpad CoreA component that renders an account management dropdown for your application.mui.com  해결챗GPT한테도 계속 물어보고 이상한 답변만 받고, 이와 관련된 구글링을 하는데도 하나도 안떠서 뭐지 뭐지 하다가 아래의 링크를 보고 혹시나 해서 아래처럼 적용시켰는데 적용이 되었다https://stackoverflow.com/questions/79..

2024. 10. 10. 16:19
2. FrontEnd/React

[ React ] 로그인 안될경우, 로그인 페이지로 리다이렉트 (+예외처리)

현재 로그인이 안된 상태에 로그인 페이지로 리다이렉트 하는 기능을 넣었다.이 과정 중 로그인 페이지 안에 있는 회원가입페이지, 아이디/비밀번호 찾기 페이지에도 접속이 안되고 바로 로그인 페이지로 이동하게 되는 불상사가 발생이것을 예외처리하는 방법을 기록으로 남기고자 한다.전코드import React, { useEffect } from 'react';import { Route, Routes, Navigate, useNavigate } from 'react-router-dom';import { ROUTES } from './constants/url'; // 방금 주신 ROUTES 정의를 가져옵니다.import AuthProvider from './contexts/AuthContext';import useAu..

2024. 10. 2. 09:20
2. FrontEnd/React

[ React ] 회원약관 두개이상의 토글이 true일때, 다음 버튼 활성화

구현하고자 하는 기능회원약관에 있는 동의함 토글이 모두 동의함일때만 다음버튼 활성화공통적으로 관리할 수 있는 useState의 경우는 하나로 관리환경 : React Typescript MUI  전 코드import React, { useState } from 'react';import { Container, Radio, Box, RadioGroup, FormControlLabel, FormControl, Button, Typography, FormLabel } from '@mui/material';import { useNavigate } from 'react-router-dom'; // useNavigate 훅 추가// SignUpAgreeTerms 컴포넌트에 사용할 props 타입 정의interface ..

2024. 9. 23. 10:22
2. FrontEnd/React

[ React ] 이메일 유효성 검사 후 에러메세지 띄우는 로직 (onBlur 이벤트)

원하는 기능이메일을 입력하고, 유효성 검사를 하여 틀리면 에러메세지를 띄우는 기능을 넣고 싶다나는 React Typescript MUI 를 사용하는 환경이다.1차 결과물import React, { useState } from 'react';import { TextField, Button } from '@mui/material';export default function EmailForm() { // 이메일 상태와 이메일 검증 결과 상태(emailAlert) const [email, setEmail] = useState(''); const [emailAlert, setEmailAlert] = useState(true); // 이메일 형식 검증 함수 const validateEmail = (emai..

2024. 9. 20. 17:37
2. FrontEnd/TypeScript

Tab 삭제 중, 리다이렉트 안되는 경우

문제Tab을 삭제하면 바로 전 탭으로 이동해서 전페이지를 보여줘야하는데 탭만 삭제되고 페이지는 그대로 남는 현상이 생긴다코드를 자세히 보니 전탭 path로 리다이렉트하는 코드가 없어서 생겼다해결전코드 const removeTab = useCallback( (targetKey: string) => { let newActiveKey = activeKey; let lastIndex = -1; tabArray.forEach((tab, i) => { if (tab.key === targetKey) { lastIndex = i - 1; } }); const newPanes = tabArray.filter((tab) => t..

2024. 9. 10. 14:34
6. Error

[ ActiveReportJs ] PDF파일로 저장시, 한글 폰트 깨지는 문제

문제 Uncaught (in promise) SyntaxError: Unexpected token ' 분석경로 이슈 정리리액트에서 경로는 public을 기준으로 처리됩니다.기준이 잡힌 상태로 처리되기 때문에 경로에서 public은 제외해야 합니다.// /public/fontsConfig.json에서 폰트를 가져옵니다.Core.FontStore.registerFonts('/public/resources/fontsConfig.json');만약 위와 같이 경로를 제대로 입력하지 못하면 404에러가 발생하고, 리액트 라우터가 홈 화면으로 리디렉트 시킵니다. → 잘못된 주소를 입력한 경우 리액트 라우터가 home으로 리디렉트 시킴콘솔에서 HTML 문법 오류가 생긴 것도 json 파일 경로가 잘못되어 리액트 라우터..

2024. 9. 9. 11:32
  • «
  • 1
  • 2
  • 3
  • 4
  • ···
  • 7
  • »

공지사항

  • 이메일 = fltxld1@gmail.com / GitHub = https⋯

전체 카테고리

  • 분류 전체보기 (103)
    • 1. Computer Science (11)
    • 2. FrontEnd (51)
      • Javascript (10)
      • TypeScript (6)
      • CSS (3)
      • React (17)
      • Next.js (1)
      • Dart (1)
      • Three.js (3)
      • State Management (4)
      • TDD (2)
      • Ag-Grid (1)
      • LeetCode (1)
    • 3. Backend (9)
      • NestJS (9)
    • 4. Git (4)
    • 5. Blockchain (9)
      • Mastering Ethereum (5)
    • 6. Error (16)
    • 7. Infra | Cloud (2)
      • Docker (2)
      • Kubernetes (0)
      • AWS (0)
    • 8. 자격증 (0)
      • CompTIA A+ (220-1101, 220-1102.. (0)
    • Daily (1)
      • 후기 (1)
      • 맛집 (0)
애드센스 광고 영역
  • 최근 글
  • 최근 댓글

최근 글

최근댓글

태그

  • #pdf다운로드 기능
  • #activereportsjs
  • #CSS
  • #sessionStorage
  • #14버전
  • #useEffect
  • #AppModule
  • #Docker
  • #Next12
  • #이더리움
  • #레포팅솔루션
  • #폴더구조
  • #js
  • #Next14
  • #TDD
  • #test
  • #Nestjs
  • #다국어처리
  • #i18n
  • #반응형
  • #javascript
  • #코드팩토리
  • #react
  • #next
  • #cookie
  • #LocalStorage
  • #AppRoutes
  • #getdocument
  • #gridoptions
  • #typescript
MORE

전체 방문자

오늘
어제
전체

블로그 인기글

Powered by Privatenote Copyright © hyun All rights reserved. TistoryWhaleSkin3.4

티스토리툴바