분류 전체보기: 226개의 글

[React] Axios Interceptor

Posted by nkjok
2025. 2. 5. 15:38 낙서장[1]/1. React
반응형

엑시오스 인터셉터는 HTTP 요청과 응답을 가로채서 처리할 수 있는 기능입니다. 인터셉터를 사용하면 요청 전, 응답 전에 추가 작업을 수행할 수 있습니다. 이를 통해 요청과 응답을 수정하거나, 오류 처리, 로깅 등 다양한 용도로 사용할 수 있습니다.

용도

  1. 인증 헤더 추가: 요청 전에 인증 헤더를 추가하여 보호된 API 요청을 수행할 수 있습니다.
  2. 오류 처리: 요청이나 응답에서 오류가 발생했을 때 처리할 수 있습니다.
  3. 로그 생성: 요청과 응답을 로깅하여 디버깅이나 모니터링에 사용할 수 있습니다.
  4. 헤더 수정: 요청과 응답의 헤더를 수정하여 필요한 정보를 추가할 수 있습니다.

기능 동작 방식

엑시오스 인터셉터는 요청과 응답을 가로채기 전에 실행되는 함수를 정의합니다. 이 함수는 요청이나 응답을 수정하거나, 새로운 작업을 수행할 수 있습니다.

예시

javascript
import axios from 'axios';

// 요청 인터셉터
axios.interceptors.request.use(function (config) {
  // 요청 전 작업 처리
  console.log('Request:', config);
  return config;
}, function (error) {
  // 요청 에러 처리
  return Promise.reject(error);
});

// 응답 인터셉터
axios.interceptors.response.use(function (response) {
  // 응답 전 작업 처리
  console.log('Response:', response);
  return response;
}, function (error) {
  // 응답 에러 처리
  return Promise.reject(error);
});

위 예시에서는 요청과 응답을 가로채서 콘솔에 로그를 출력합니다. 이와 같은 방식으로 인터셉터를 사용하여 요청과 응답을 처리할 수 있습니다.

이 외에도 인터셉터를 사용하여 다양한 작업을 수행할 수 있으며, 커스텀 인스턴스에서도 인터셉터를 추가할 수 있습니다.

반응형

[React] 싱글플레이어 애플리케이션 단점 세션초기화

Posted by nkjok
2025. 2. 5. 12:41 낙서장[1]/1. React
반응형

브라우저 새로고침 시 정보 초기화 문제와 쿠키로 관리하는 방법

싱글플레이어 애플리케이션에서 사용자가 브라우저를 새로 고침할 때 모든 정보가 새로 업데이트되어 초기화되는 문제는 자주 발생하는 단점입니다. 이로 인해 사용자는 로그인 이전 상태로 되돌아가게 되며, 이는 사용자 경험에 부정적인 영향을 미칠 수 있습니다. 이러한 문제를 해결하기 위해 쿠키를 사용하여 정보를 관리하는 방법이 있습니다.

문제 설명

브라우저 새로고침 시 모든 정보가 새로 업데이트되면서 사용자의 로그인 상태와 같은 중요한 정보도 초기화됩니다. 이는 사용자가 다시 로그인해야 하는 불편함을 초래하며, 싱글플레이어 애플리케이션에서 자주 발생하는 문제입니다.

쿠키로 문제 해결

이 문제를 해결하기 위해 쿠키를 사용하여 사용자의 상태 정보를 저장하고 관리할 수 있습니다. 쿠키는 작은 데이터 파일로, 사용자의 브라우저에 저장되어 웹사이트가 사용자의 상태 정보를 유지할 수 있도록 도와줍니다.

  1. 로그인 상태 저장: 사용자가 로그인할 때 쿠키에 로그인 상태 정보를 저장합니다. 이를 통해 브라우저를 새로 고침하더라도 사용자가 로그인된 상태를 유지할 수 있습니다.
  2. javascript
    document.cookie = "username=JohnDoe; path=/; max-age=3600";
    
  3. 쿠키 읽기: 브라우저가 새로 고침될 때 쿠키를 읽어 사용자의 로그인 상태를 확인합니다. 쿠키에 저장된 정보를 기반으로 사용자의 상태를 복원합니다.
  4. javascript
    function getCookie(name) {
        let matches = document.cookie.match(new RegExp(
          "(?:^|; )" + name.replace(/([\.$?*|{}\(\)
    
    
 

\\\/\+^])/g, '\\$1') + "=([^;]*)" )); return matches ? decodeURIComponent(matches[1]) : undefined; }

let username = getCookie('username'); if (username) { console.log("Welcome back, " + username); }

 
3. **로그아웃 처리**:
사용자가 로그아웃할 때 쿠키를 삭제하여 로그인 상태를 초기화합니다.
```javascript
document.cookie = "username=; path=/; max-age=0";

쿠키를 사용하면 브라우저 새로고침 시에도 사용자의 상태를 유지할 수 있어 사용자 경험을 개선할 수 있습니다. 이를 통해 싱글플레이어 애플리케이션의 단점을 보완하고, 사용자에게 일관된 서비스를 제공할 수 있습니다.

이와 같은 방법으로 쿠키를 활용하여 브라우저 새로고침 시 정보 초기화 문제를 효과적으로 관리할 수 있습니다. 쿠키를 사용한 상태 관리는 애플리케이션의 유지 보수성을 높이고, 사용자가 애플리케이션을 더 편리하게 사용할 수 있도록 도와줍니다.

반응형

[React] Promise 객체 비동기 작업의 세 가지 상태

Posted by nkjok
2025. 2. 5. 12:25 낙서장[1]/1. React
반응형

자바스크립트에서 Promise 객체는 비동기 작업을 처리하는 데 유용한 객체입니다. Promise 객체는 비동기 작업의 성공 또는 실패를 나타내는 세 가지 상태를 가집니다. 각 상태에 대해 상세히 설명드릴게요.

1. 대기 상태 (Pending)

Promise 객체가 생성되고 나서 비동기 작업이 아직 완료되지 않은 상태입니다. 이 상태에서는 아직 결과값이 결정되지 않았으며, 성공 또는 실패가 확정되지 않은 상태입니다.

2. 이행 상태 (Fulfilled)

Promise 객체가 성공적으로 작업을 완료하여 결과값을 반환한 상태입니다. 이 상태에서는 then() 메서드의 첫 번째 콜백 함수가 실행되어 결과값을 처리합니다.

javascript
const promise = new Promise((resolve, reject) => {
    resolve('Success');
});

promise.then(value => {
    console.log(value); // "Success"
});

3. 거부 상태 (Rejected)

Promise 객체가 작업을 완료하지 못하고 오류를 반환한 상태입니다. 이 상태에서는 catch() 메서드의 콜백 함수가 실행되어 오류를 처리합니다.

javascript
const promise = new Promise((resolve, reject) => {
    reject('Error');
});

promise.catch(error => {
    console.log(error); // "Error"
});

상태 전이

Promise 객체는 상태가 한 번 정해지면 더 이상 다른 상태로 전이되지 않습니다. 즉, Pending 상태에서 Fulfilled 또는 Rejected 상태로만 전이될 수 있으며, 한 번 Fulfilled 또는 Rejected 상태로 전이되면 그 이후에는 상태가 변경되지 않습니다.

이러한 상태 관리를 통해 Promise는 비동기 작업의 성공 또는 실패를 효과적으로 처리할 수 있습니다.

반응형

[React] 리덕스(Redux)는 JavaScript 애플리케이션의 상태(state) 관리를 위한 예측 가능한 상태 컨테이너

Posted by nkjok
2025. 2. 5. 10:42 낙서장[1]/1. React
반응형

리덕스(Redux)는 JavaScript 애플리케이션의 상태(state) 관리를 위한 예측 가능한 상태 컨테이너입니다. 리덕스는 주로 리액트(React)와 함께 사용되지만, 다른 JavaScript 프레임워크 및 라이브러리와도 함께 사용할 수 있습니다. 리덕스의 주요 기능과 용도는 다음과 같습니다

주요 기능

  1. 중앙 집중식 상태 관리:
    • 리덕스는 애플리케이션의 전체 상태를 하나의 중앙 집중식 스토어(store)에서 관리합니다. 이는 상태가 예측 가능하고 쉽게 추적될 수 있도록 합니다.
  2. 상태 불변성 유지:
    • 리덕스는 상태가 불변(immutable)하도록 합니다. 이는 상태를 직접 변경하는 대신, 새로운 상태 객체를 반환하여 상태를 업데이트하는 방식을 채택합니다. 이를 통해 상태 변화를 추적하고 디버깅하기 쉽습니다.
  3. 액션(action)과 리듀서(reducer):
    • 액션은 상태 변경을 설명하는 객체로, 타입(type)과 페이로드(payload)를 포함할 수 있습니다.
    • 리듀서는 액션을 기반으로 새로운 상태를 생성하는 순수 함수입니다. 현재 상태와 액션을 인자로 받아 새로운 상태를 반환합니다.
  4. 미들웨어(middleware):
    • 리덕스는 미들웨어를 통해 비동기 작업(예: API 호출)이나 로깅과 같은 사이드 이펙트(side effects)를 처리할 수 있습니다. 대표적인 미들웨어로는 redux-thunk와 redux-saga가 있습니다.

사용 용도

  1. 상태 관리:
    • 리덕스를 사용하면 컴포넌트 간의 상태 공유가 쉬워집니다. 모든 컴포넌트가 중앙 스토어에서 상태를 읽고 업데이트할 수 있어, 상태가 일관되게 유지됩니다.
  2. 디버깅:
    • 리덕스 개발 도구(DevTools)를 사용하면 상태 변경 내역을 추적하고 디버깅할 수 있습니다. 이는 상태 변화와 관련된 문제를 쉽게 해결할 수 있게 도와줍니다.
  3. 비동기 작업 처리:
    • 리덕스 미들웨어를 사용하여 API 호출과 같은 비동기 작업을 관리할 수 있습니다. 이는 애플리케이션의 비동기 로직을 더 명확하고 구조적으로 유지할 수 있게 합니다.

리덕스의 작동 원리

  1. 액션 생성: 사용자가 애플리케이션 내에서 어떤 작업을 수행하면, 액션이 생성됩니다.
  2. javascript
    const action = { type: 'INCREMENT', payload: 1 };
    
  3. 액션 디스패치: 생성된 액션은 디스패치(dispatch) 함수를 통해 스토어에 전달됩니다.
  4. javascript
    store.dispatch(action);
    
  5. 리듀서 실행: 스토어는 현재 상태와 액션을 리듀서에 전달하여 새로운 상태를 생성합니다.
  6. javascript
    const reducer = (state = initialState, action) => {
        switch (action.type) {
            case 'INCREMENT':
                return { ...state, count: state.count + action.payload };
            default:
                return state;
        }
    };
    
  7. 새로운 상태 저장: 리듀서가 반환한 새로운 상태가 스토어에 저장되고, 이를 구독하고 있는 컴포넌트들이 업데이트됩니다.

이와 같은 방식으로 리덕스는 애플리케이션의 상태를 효율적으로 관리하고 예측 가능한 상태 변화를 보장합니다. 리덕스를 사용하면 애플리케이션의 복잡한 상태 관리 로직을 더 쉽게 유지하고 확장할 수 있습니다.

반응형

[React] 리액트(React)에서 훅(Hook)

Posted by nkjok
2025. 2. 5. 10:41 낙서장[1]/1. React
반응형

리액트(React)에서 훅(Hook)은 함수형 컴포넌트 내에서 상태(state)와 생명 주기(lifecycle) 기능을 사용할 수 있게 하는 기능입니다. 훅은 다음과 같은 주요 기능들을 제공합니다:

1. useState

상태 관리를 위해 사용됩니다. 함수형 컴포넌트에서 상태를 추가하고 사용할 수 있게 합니다.

javascript
const [state, setState] = useState(initialState);

2. useEffect

생명 주기 메서드를 대체하는 훅으로, 컴포넌트가 렌더링될 때와 업데이트될 때 특정 작업을 수행할 수 있게 합니다.

javascript
useEffect(() => {
    // 작업 수행
    return () => {
        // 정리 작업 수행
    };
}, [dependencies]); // 종속성 배열

3. useContext

컨텍스트를 사용하여 컴포넌트 트리 전체에서 값을 공유할 수 있게 합니다.

javascript
const value = useContext(MyContext);

4. useReducer

useState 대신 복잡한 상태 로직을 처리할 때 사용됩니다.

javascript
const [state, dispatch] = useReducer(reducer, initialState);

5. useMemo

성능 최적화를 위해 사용되며, 특정 값이 변경될 때만 메모이제이션된 값을 다시 계산합니다.

javascript
const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);

6. useCallback

성능 최적화를 위해 사용되며, 특정 값이 변경될 때만 콜백 함수를 다시 생성합니다.

javascript
const memoizedCallback = useCallback(() => {
    doSomething(a, b);
}, [a, b]);

7. useRef

참조를 사용하여 DOM 요소나 변수 등을 접근하고 관리할 수 있게 합니다.

javascript
const myRef = useRef(initialValue);

8. useLayoutEffect

useEffect와 유사하지만, 모든 DOM 변형 후 동기적으로 작동합니다. 레이아웃을 변경하는 작업에 적합합니다.

javascript
useLayoutEffect(() => {
    // 작업 수행
}, [dependencies]);

이 훅들은 리액트의 함수형 컴포넌트에서 상태 관리와 생명 주기 메서드를 사용하는 데 매우 유용합니다. 

반응형

[DataBase] mysql & mariadb 계정생성 및 원격권한

Posted by nkjok
2025. 2. 4. 21:15 낙서장[1]/94. DataBase
반응형

mysql :  

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234';
CREATE USER 'react'@'%' IDENTIFIED BY '1234';
GRANT ALL PRIVILEGES ON *.* TO 'react'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

 

mariadb:

ALTER USER 'root'@'localhost' IDENTIFIED BY '1234';
CREATE USER 'react'@'%' IDENTIFIED BY '1234';
GRANT ALL PRIVILEGES ON *.* TO 'react'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

반응형

[갤럭시탭] 강제 부팅 방법

Posted by nkjok
2025. 2. 3. 22:41 일상/일상 속 이슈
반응형

 

갤럭시탭을 강제 부팅하는 방법은 아래와 같습니다

전원 버튼 볼륨 아래 버튼을 동시에 약 7초간 길게 누릅니다.

만약 이 방법이 작동하지 않는다면, 전원 버튼 볼륨 위 버튼을 동시에 눌러보세요.

 

반응형

[요구사항 확인] 1-1 소프트웨어 개발 방법론

Posted by nkjok
2025. 2. 3. 16:11 낙서장[2]/1. 요구사항 확인
반응형
           
  소프트웨어 개발 방법론  
  (1) 소프트웨어 생명주기 모델   
  ● 소프트웨어 생명주기는 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차이다.  
  ● 시스템이 개발될 때부터 운용과 유지보수를 거쳐 생애를 마칠 때 까지  어떠한 순서를 밟는지에 대한 작업 프로세스를 모델화한 것이다.  
           
  (2) 소프트웨어 생명주기 모델 프로세스    
  ▼ 소프트웨어 생명주기 모델 프로세스    
           
  순서 프로세스 설명 활동  
  1 요구사항 분석 ● 다양한 이해관계자의 상출할 수도 있는 요구사항을 고려하여
새로운 제품이나 변경된 제품에 부합하는
요구와 조건을 결정하는 단계
● 기능 요구사항
● 비기능 요구사항
 
   
   
  ● 개발할 소프트웨어의 기능과 제약 조건, 목표 등을
소프트웨어 사용자와 함께 명확히 정의하는 단계
 
   
  2 설계 ● 시스템 명세 단계에서 정의한 기능을 실제 수행할 수 있도록
수행 방법을 논리적으로 결정하는 단계
● 시스템 구조 설계
● 프로그램 설계
● 사용자 인터페이스 설계
 
   
   
  3 구현 ● 설계 단계에서 논리적으로 결정한 문제 해결 방법을
특정 프로그래밍 언어를 사용하여 실제 프로그램을 작성하는 단계
● 인터페이스 구조
● 자료 구조 개발
● 오류 처리
 
   
   
  ● 프로그래밍 언어 선택, 기법, 스타일, 순서 등을 결정하는 단계  
   
  4 테스트 ● 시스템이 정해진 요구를 만족하는지, 예상과 실제 결과가
어떤 차이를 보이는지 검사하고 평가하는 단계
● 단위 테스트
● 통합 테스트
● 시스템 테스트
● 인수 테스트
 
   
   
   
  5 유지보수 ● 시스템이 인수되고 설치된 후 일어나는 모든 활동 ● 예방, 완전 교정, 적응
유지보수
 
   
           
  (3) 소프트웨어 생명주기 모델 종류    
  소프트웨어 생명주기 모델 종류로는 폭포수 모델, 프로토타이핑 모델, 나선형 모델, 반복적 모델이 있다.    
  ▼ 소프트웨어 생명주기 모델 종류    
  종류 설명  
  폭포수 모델
(Waterfall Model)
● 소프트웨어 개발 시 각 단계를 확실히 마무리 지은 후에 다음 단계로 넘어가는 모델  
  ● 가장 오래된 모델  
  ● 선형 순차적 모형으로 고전적 생명주기 모형이라고도 함  
  ● 모형의 적용 경험과 성공 사례가 많음  
  ● 단계별 정의와 산출물이 명확  
  ● 요구사항 변경이 어려움  
  절차: 타당성 검토 -> 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수  
   
  포로토타이핑 모델
(Prototyping Model)
● 고객이 요구한 주요 기능을 프로토타입으로 구현하여,
고객의 피드백을 반영하여 소프트웨어를 만들어가는 모델
 
   
  ● 프로토타입은 발주자나 개발자 모두에게 공동의 참조 모델을 제공  
  ● 프로토타입은 구현 단계의 구현 골격  
  나선형 모델
(Spiral Model)
● 시스템 개발 시 위험을 최소하하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델  
  절차: 계획 및 정의 -> 위험 분석 -> 개발 -> 고객 평가  
   
  반복적 모델
(Iteration Model)
● 구축대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여
점증 완성시키는 SDLC 모델
 
   
  ● 사용자의 요구사항 일부분 혹은 제품 일부분을 반복적으로 개발하여
최종 시스템으로 완성하는 모델
 
   
           
반응형

'낙서장[2] > 1. 요구사항 확인' 카테고리의 다른 글

[요구사항 확인] 미리 알아두기  (0) 2025.01.23