본문 바로가기

공부 기록

(319)
State VS Ref State(상태) - 컴포넌트의 내부 데이터를 나타낸다. - 업데이트 함수를 통해 변화가 이루어졌을 때 컴포넌트들의 재실행을 야기한다. => UI에 바로 반영되어야 하는 값들이 있을 때 사용한다. => 시스템 내부에 보이지 않는 쪽에서만 다루는 값들이나 UI에 직접적인 영향을 끼치지 않는 값들을 갖고 있을 경우에는 상태를 사용하지 말아야 한다. Ref(참조) - 리액트 요소에 대한 참조를 나타낸다. - 컴포넌트들이 재실행되게 하지 않는다. => 리액트의 렌더링 주기와는 관련 없는 데이터를 관리할 수 있다. (DOM 조작이나 애니메이션, 포커스 관리 등) => DOM 요소에 직접적인 접근이 필요할 때 혹은 외부 라이브러리를 통해 관리하기 어려운 상태를 관리할 때 사용한다.
Attribute props VS Children props Attribute props import TabButton from "./components/TabButton"; function App() { return ( ... ... ); } export default App; - App.jsx에서 TabButton 컴포넌트에 label이라는 props를 정의하고 "Components"라는 값을 할당했다. export default function TabButton({ label }) { return ( {label} ); } // 또는 export default function TabButton(props) { return ( {props.label} ); } - TabButton.jsx 에서의 사용은 위와 같다. Children Props import Tab..
Database Transaction & ACID Transaction 단일한 논리적인 작업 단위(a single logical unit of work) 논리적인 이유로 여러 SQL문들을 단일 작업으로 묶어서 나눠질 수 없게 만든 것 transaction의 SQL문들 중에 일부만 성공해서 DB에 반영되는 일은 일어나지 않는다. J가 H에게 20만원을 송금하는 트랜잭션 > SELECT * FROM acount; > START TRANSACTION; > UPDATE account SET balance = balance-200000 WHERE id='J'; > UPDATE account SET balance = balance+200000 WHERE id='H'; > COMMIT; COMMIT 지금까지 작업한 내용을 DB에 영구적으로 저장 + 트랜잭션을 종료한..
[Node.js] import와 require() 함께 사용하기 ES6 모듈만 지원하는 패키지와 그렇지 않은 패키지를 함께 사용하는 경우, 아래의 1단계인 package.json에 "type" : "module"을 추가하거나 js 확장자를 mjs 확장자로 변경하면 import만 사용할 수 있게 된다. require() 표현도 사용해야 하는 경우, 아래의 2단계 코드를 추가해주면 동시 사용이 가능해진다. 1) package.json 추가 { ... "type": "module", // 추가 "dependencies": { ... } } 2) 하나의 파일에서 import와 require() 함께 사용하기 import { franc } from "franc"; // ES6 모듈만 지원하는 경우 import { createRequire } from "module"; cons..
제대로 이해하는 REST API https://youtu.be/7LbylTMlj8M?si=w1AGt3jfRwc6yRmv REST API - RESTful한 API를 말하며 일련의 특징과 규칙 등을 지키는 API를 일컫는다. REST API의 특징 1. Uniform-Interface : API에서 자원들은 각각의 독립적인(서로 종속적이지 않은) 인터페이스를 가지며 각각의 자원들이 url 자원 식별, 표현을 통한 자원 조작, Self-descriptive messages, HATEOAS 구조를 가지는 것을 말한다. * url 자원 식별 : 자원은 url로 식별되어야 한다. * 표현을 통한 자원 조작 : url과 GET, DELETE 등 HTTP 표준 메서드 등을 통해 자원을 조회, 삭제 등 작업을 설명할 수 있는 정보가 담겨야 한다. *..
Trigger Trigger - DB에서 어떤 이벤트가 발생했을 때 자동적으로 실행되는 프로시저 - 데이터에 변경이 생겼을 때, 즉 DB에 insert, update, delete가 발생했을 때 이것이 계기가 되어 자동적으로 실행되는 프로시저를 의미한다. 사용자의 닉네임 변경 이력을 저정하는 트리거 table => users(id, nickname) / users_log(id, nickname, until) delimiter $$ CREATE TRIGGER log_user_nickname_trigger BEFORE UPDATE ON users FOR EACH ROW BEGIN ㅤㅤinsert into users_log values(OLD.id, OLD.nickname, now()); END $$ delimiter ; ..
[JPA] 7장 - 고급 매핑(1) - 상속 관계 매핑 상속 관계 매핑 - ORM에서 이야기하는 상속 관계 매핑은 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것이다. - 슈퍼타입 서브타입 논리 모델을 실제 물리 모델인 테이블로 구현할 때는 3가지 방법을 선택할 수 있다. => 각각의 테이블로 변환, 통합 테이블로 변환, 서브타입 테이블로 변환 조인 전략 - 엔티티 각각을 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본 키를 받아서 기본 키 + 외래 키로 사용하는 전략 - 조회할 때 조인을 자주 사용한다. - 객체는 타입으로 구분할 수 있지만 테이블은 타입의 개념이 없으므로 타입을 구분하는 컬럼을 추가해야 한다. @Entity @Inheritance(strategy = InheritanceType.JOINED) @Discrimi..
[NHN FORWARD 22] DDD 뭣이 중헌디? https://youtu.be/6w7SQ_1aJ0A?si=fAUjOr_9__NadgRP DDD에 대한 오해 - DDD는 전술적 패턴이다. => DDD에서 전략적 설계가 중요하다. - DDD는 은탄환이다, MSA로 귀결된다, 방법론이다, 기술이나 구현 영역이다 ... 등등 DDD(Domain Driven Design) - 패턴 사용법이나 구체적 방법론이 아닌, 오히려 추상적인 철학이나 접근법이라고 할 수 있다. - 전략적 설계에 근간을 두고 있다! 전략적 설계 - 비즈니스 도메인 : 회사가 고객에게 제공하는 서비스 영역 - 문제 도메인 : 비즈니스 영역 중 일부(또는 전체) 영역을 소프트웨어를 통해 해결하고자 할 때, 해당 영역(문제 해결을 통한 가치 창출) 전략적 설계 과정 1. 비즈니스 도메인에서 문제..