전체 글: 279개의 글

[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]/93. 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

[Java] 자바에서 오버로드와 오버라이드

Posted by nkjok
2025. 2. 2. 16:09 낙서장[1]/91. Java
반응형

자바에서 오버로드와 오버라이드

자바의 중요한 개념인 오버로드(Overload)와 오버라이드(Override)에 대해, 이 두 개념은 객체 지향 프로그래밍에서 자주 등장하는 개념으로, 메서드의 재사용성과 다형성을 구현하는 데 중요한 역할을 한다. 그럼, 오버로드와 오버라이드의 차이점과 예시를 통해 살펴보겠다

오버로드 (Overloading)

오버로드는 동일한 이름을 가진 메서드를 여러 개 정의하되, 매개변수의 타입, 수, 순서가 다르게 정의하는 것을 의미한다.

특징:

  • 매개변수의 타입, 수, 순서가 다르다.
  • 반환 타입은 오버로드에 영향을 미치지 않는다.
  • 동일한 클래스 내에 존재하거나 상속받은 클래스 내에 존재할 수 있다.

예시:

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
   
    public double add(double a, double b) {
        return a + b;
    }
   
    public int add(int a, int b, int c) {
        return a + b + c;
    }
}

위의 예제에서 Calculator 클래스는 세 가지 add 메서드를 정의하고 있으며, 각 메서드는 매개변수의 타입이나 수가 다르다.

오버라이드 (Overriding)

오버라이드는 상위 클래스에 정의된 메서드를 하위 클래스에서 동일한 매개변수와 반환 타입으로 재정의하는 것을 의미한다.

특징:

  • 매개변수와 반환 타입이 동일하다.
  • 하위 클래스에서 상위 클래스의 메서드를 덮어쓴다.
  • @Override 애노테이션을 사용하여 컴파일러에게 재정의 의도를 명확히 할 수 있다.

예시:

class Animal {
    void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        super.sound(); // 상위 클래스의 sound 메서드를 호출한다.
        System.out.println("Dog barks");
    }
}

위의 예제에서 Dog 클래스는 Animal 클래스의 sound 메서드를 동일한 시그니처로 재정의하고 있으며, super 키워드를 사용하여 상위 클래스의 sound 메서드를 호출한 후 추가 동작을 정의한다.

오버로드와 오버라이드 사용 예시

오버로드 사용하는 경우:

  • 동일한 동작을 수행하지만 매개변수가 다른 여러 형태의 메서드를 정의할 때 사용한다.
  • 예를 들어, 다양한 데이터 타입을 처리하는 add 메서드를 정의할 때 사용한다.

오버라이드 사용하는 경우:

  • 상위 클래스의 기본 메서드 동작을 하위 클래스에서 변경하고 싶을 때 사용한다.
  • 예를 들어, 동물 소리를 내는 sound 메서드를 각 동물 클래스에서 구체화할 때 사용한다.

 

 

오버로드와 오버라이드는 자바에서 메서드의 재사용성과 다형성을 구현하는 중요한 개념이다. 오버로드는 매개변수를 다르게 하여 같은 이름의 메서드를 여러 개 정의하는 것이고, 오버라이드는 상위 클래스의 메서드를 하위 클래스에서 동일한 시그니처로 재정의하는 것이다. 이 두 개념을 잘 이해하고 사용하면 더 유연하고 유지보수하기 쉬운 코드를 작성할 수 있다고한다

반응형