React - React Study2
7. useReducer : 상태 관리 분리
1) useReducer 개념
useState와 같은 역할을 하며, 새로운 State를 생성한다. 또한, State를 업데이트 시키는 함수도 제공한다.
추가적으로 컴포넌트 외부에 State 관리 로직 분리가 가능하다.**
a. useReducer 구조 정리
const [저장 값, dispatch] = useReducer(reducer, 저장 값의 초기화);
dispatch : 어떤 함수를 실행시킬지 설정(트리거) - 어떤 상태 변화를 할지 선택
dispatch 내부의 설정은 action이라는 인수로 ...
React - React Study1
1. Node.js
1) Node.js 실행하기
Node.js 사용 시, pakage.json의 scripts에서 실행 스크립트를 추가 설정하면 Node.js 실행 시, 모든 경로를 다 써주지 않아도 된다.
node src/index.js : 이러한 명령어 같은 것들은 이젠 더 이상 사용하지 않아도 된다.
npm run start : 이제는 이렇게 간단한 명령어로 Node.js 코드를 실행한다.
a. 실습 코드 :
package.json :
{
"name": "section1",
"version": "1.0.0",
"descript...
SpringBoot - JPA Study2
1. JPA 등장 배경
1) JPA 사용하는 이유?**
객체와 RDB(관계형 데이터 베이스)의 패러다임을 줄이고자 사용!!
SQL 중심의 개발에서 객체중심의 개발로 하기위해서
2) queryDSL 사용 이유?
컴파일 단계에서 오류를 잡아줌
변수명이나 쿼리가 길어지기 때문에 이를 줄이고자 등장
3) spring 사용하는 이유?
Bean -> IOC -> DI // filter, AOC, intercept
빈이 객체의 생명주기를 관리해줘서
2. JPA 동작원리
EntityManager 안에 영속성 컨텍스트가 있으며...
Programming - Methodology
1. CleanCode
‘클린코드’(로버트 C. 마틴) 참고
1) 클린코드 규칙
의도를 분명히 밝혀라.
어떤 데이터를 저장하고 있는지 예측
서로 흡사한 이름을 사용하지 않도록 주의 하자
그릇된 정보를 피하라.
널리 쓰이는 의미가 있는 단어를 다른 의미로 사용하지 말자
의미 있게 구분 하라.
발음하기 쉬운 이름으로 정하자.
우리는 혼자 일하지 않는다.
검색하기 쉬운 이름을 사용하라.
타입과 관련된 문자열을 넣지 말아라.
한 ...
SpringBoot - queryDSL Study2
6. 실무 활용 - 순수 JPA와 Querydsl
1) 순수 JPA 리포지토리와 Querydsl**
H2에서 테스트 코드 실행 전, 매번 drop all objects 실행하기
기존 테이블을 지우지 못해서 에러가 발생한다.
a. 순수 JPA 방식
순수 JPA는 JPA Native query를 이용하고, Spring Data JPA는 JPA에서 Spring에 기본으로 제공해주는 메서드를 이용할 수 있다.
Spring Data JPA가 훨씬 간편하지만, 메서드가 제한적이다.(findAll 같은 것)
실습...
SpringBoot - queryDSL Study1
1. Spring Boot 개발 환경
1) spring.io : Spring Web, jpa, h2, lombok, devtools를 설정하여 프로젝트 설정하기
queryDSL은 라이브러리가 아니라 추가로 설정해주어야 한다.
springboot 3.0 이상은 jdk 17, h2 2.1.214 버전 이상
javax 패키지는 jakarta로 변경
2) SpringBoot JPA는 EntityManager에 종속적이라서 싱글톤 패턴으로 멀티스레드 환경에서 문제가 될 것 같지만 SpringBoot에서 EntityManager를 사용하게 되면, 멀티...
Docker - Docker Study3
1. Docker로 다중 컨테이너 애플리케이션 구축하기
1) 각 역할에 대한 컨테이너를 도커화하는 방법
a. MongoDB 이미지 도커화
현재, 이 노드 API가 연결할 때, 데이터베이스와 통신하기 때문에, 데이터베이스를 포함하는 컨테이너를 가동하여 이것이 작동하려면, 이 포트 27017를 노출해야 한다.
도커 컨테이너에서 로컬 머신으로 가동시켜야 한다. 우리 서비스가 로컬 머신을 통해 서비스에 연결할 수 있다.
MongoDB 이미지는 포트번호 27017를 노출시키고 있다.
통신 URL : mongodb://localhost:27017/course-goals
현...
Test - Programmers2
1. Lv.2
33문제 풀기 :
정답률 높은 순서
약 3만명 이상 푼 문제부터 풀고 Kakao 문제는 거의 다 풀기
문제 당, 최대 2시간 고민
1) 최댓값과 최솟값
compareTo는 문자열 정렬 시, 사용! **
import java.util.*;
class Solution {
public String solution(String s) {
String[] sp = s.split(" ");
String answer = "";
int[] num = new int[sp.length];...
Docker - Docker Study2
1. Docker 기본 개념
0) 기본 개념
a. 가상화 기술?
가상 머신 vs 컨테이너 기술
b. 개념 정리 : 컨테이너 기반 기술의 오픈소스 플랫폼
c. 가상머신에서 게스트 OS는 하이퍼 바이저로 자원 할당받음
컨테이너는 게스트 OS를 대신하고, 컨테이너 엔진으로 자원 할당 받음
가상 머신은 매우 속도가 느리고 컨테이너인 도커는 속도가 빠르다.
d. 게스트 OS는 호스트 OS와 비교적으로 상대적인 개념이다.
Windows 위에 VMware로 Linux를 만드는 경우, ...
Test - Programmers1
1. Lv.1
1) x만큼 간격이 있는 n개의 숫자
long 자료형 사용하기!
Why? 유효 범위 때문에 이러한 문제가 발생했다.
class Solution {
public long[] solution(int x, int n) {
long[] answer = new long[n];
long y = (long) x;
for(int i=0; i<n; i++){
answer[i] += y;
y += (long) x;
...
TIL - 26주차 코드
1. Stream API, Linux : 230522
1) Stream API : 전체 코드
Program.java
package main.java.ex4.stream;
import java.io.IOException;
import java.util.regex.Pattern;
import java.util.stream.IntStream;
public class Program {
public static void main(String[] args) throws IOException {
ExamRepository repository = new ExamReposit...
TIL - 25주차 코드
1. 230515
1) JPA
AJAX로 모든 프론트단을 설계하고 도배질하려면, JPA로 구현하면 된다. 쿼리가 길어진다면, 무조건 View 테이블로 만들어서 Join도 최대한 줄이고 동적쿼리도 줄일것
하지만, JOIN을 많이 하려면, Mybatis를 이용해야 한다.
nativeQuery로 설정을 해주면, Mybatis나 MariaDB로 변환되는 것인데 JPA를 쓰는 것은 nativeQuery를 안 된다.
2) 구글 로그인 아이콘 변경하는 방법 :
현재, 기존 Google 로그인 버튼의 코드에서 아이콘을 추가하면, 에러가 발생한다...
전체 글 77개, 7 페이지