- [ 정리/React ][처음 만난 리액트] section 1. 리액트 소개2024-03-23 15:22:191. 리액트는 무엇인가? 📌 리액트란? 리액트란 사용자 인터페이스(User Interface, UI)를 만들기 위한 자바스크립트 라이브러리 🔎 사용자 인터페이스 사용자와 컴퓨터 프로그램이 서로 상호작용을 하기 위해 서로 간에 입력과 출력을 제어해 주는 것 버튼, 텍스트 입력창 등 🔎 라이브러리 특정 프로그래밍 언어에서 자주 사용되는 기능들을 정리해 모아 놓은 것 🔎 프레임워크와 라이브러리 차이 흐름의 제어 권한이 누구에게 있는지 차이, 제어 권한이 개발자에게 있으면 라이브러리이고 프레임워크는 제어 권한이 자신에게 있음 📌 SPA(Single Page Application) 하나의 페이지만 존재하는 웹사이트 또는 웹 애플리케이션 하나의 HTML 틀을 만들어 놓고 사용자가 특정 페이지를 요청할 때 안에 해당..
- [ 정리/Git ][Git] Git Branch 전략 - git-flow2024-02-05 00:53:01📌 브랜치 전략을 배우는 이유 여태 프로젝트를 진행하면서 메인 브랜치에서 모든 작업을 수행했다. 사실 혼자 개발을 진행하면 딱히 엄청 큰 문제가 생기는 건 아니지만 팀 프로젝트라면 문제가 많다.. 잦은 충돌은 당연하고 히스토리가 섞여 추적하기도 어렵다. 또 브랜치가 어떤 목적으로 생성되었는지 어떤 브랜치를 병합해야 하는지 등 혼란이 생길 수밖에 없다. 더 나은 협업을 위해 브랜치를 어떻게 생성하고 관리하면 좋은지 정리해보고자 한다. 📌 브랜치 전략 브랜치는 다른 브랜치에 영향을 받지 않고 독립적으로 개발이 가능하게 해 준다. 여러 명의 개발자가 하나의 저장소를 사용할 때 브랜치를 효과적으로 활용하기 위한 work-flow가 브랜치 전략이다. 브랜치 전략에는 여러 가지가 있는데 프로젝트의 규모나 특성에 따..
- [ 정리/React ][Ajax] Ajax란?2024-01-18 12:44:07HTTP 프로토콜은 클라이언트에서 request를 보내고 서버에서 response를 받으면서 연결이 끊긴다. 화면을 변경할 필요가 있으면 다시 request 하고 response를 받아야 한다. 매번 서버로부터 새로운 HTML을 전송받아 웹페이지를 전체를 렌더링 하게 되는 것. 변경할 필요가 없는 부분까지 매번 새로 렌더링을 하다보니 불필요한 데이터 통신이 발생하고 이로 인해 순간적인 화면 깜빡임이 생긴다. 또한 클라이언트와 서버가 동기방식으로 동작하기 때문에 서버로 부터 응답이 오기까지 다음 작업은 중단된다.(블로킹) AJAX를 이용해 비동기로 통신하게 되면 json이나 xml형태로 데이터를 받아 일부만 갱신하기 때문에 깜빡임 없이 부드러운 화면 전환과 자원, 시간을 아낄 수 있다. 🗂️ ajax(As..
- [ 정리/Git ][Git] gitignore 작성하기2024-01-08 20:45:52📌 .gitignore 프로젝트에서 백업하고 싶지 않는 파일이나 빌드 결과물 등 배제 요소들을 직접 지정해 git에서 제외할 수 있는 설정파일 보안상 위험성이 있는 파일 프로젝트와 관계 없는 파일 용량이 너무 커서 제외해야하는 파일 IDE 관련 파일 사용자가 제외하길 원하는 파일 등 📌 작성 규칙 표현 의미 # 주석의미 *.a 확장자가 a인 모든 파일 무시 폴더명/ 해당 폴더의 모든 파일 무시 폴더명/*.a 해당 폴더의 확장가가 a인 모든 파일 무시 폴더명/*/.a 해당 폴더 포함 하위 폴더에서 확장자가 .a인 모든 파일 무시 /*.a 현재 폴더의 확장자가 .a인 모든 파일 무시 사용자가 제외하기 원하는 파일을 작성할 수 있지만.. 모든 파일을 작성하기엔 어려움이 있다. 조금 더 찾아본 결과! 쉽게 작성..
- [ 정리/Git ][Git] Commit message 규칙2023-12-30 09:04:06개인 프로젝트 마이그레이션 과정 중 중구난방인 커밋메시지로 히스토리 확인이 어렵다.. 그래서 찾아본 커밋 메시지 작성 규칙 목적 커밋 메시지 스타일을 구조화해 일관성 있게 사용하는 이유! 코드 리뷰 시간을 단축하고 능률적으로 처리하기 위해서 변경 사항을 이해해는데 도움을 주기 위해서 코드만으론 설명이 어려운 "왜 이렇게 했을까"를 설명하기 위해서 추후 작업할 사람이 왜/어떻게 변경 사항이 만들어졌는지 이해하는데 도움을 주고 문제 해결과 디버깅을 쉽게 만들기 위해서 Commit message 규칙 ① 제목과 본문을 빈 행으로 구분 ② 제목을 50글자 내로 제한 ③ 제목 첫 글자는 대문자로 작성 ④ 제목 끝에 마침표 넣지 않기 ⑤ 제목은 명령문으로 사용하며 과거형을 사용하지 않는다 ⑥ 본문의 각 행은 72글..
- [ 정리/기타 ]정규식2023-11-23 09:47:421. 정규 표현식 문자열에서 특정한 규칙에 따른 문자열 집합을 표현하기 위해 사용되는 형식 언어 2. Groups and ranges 기호 설명 | 또는 () 그룹화 [] 문자셋, 괄호안의 어떤 문자든 [^] 부정 문자셋, 괄호안에 어떤 문자가 아닐때 (?:) 찾지만 기억하지는 않음 2-1. 또는 | Hi 또는 Hello에 매칭되는 것을 하이라이트 2-2. 그룹화 () 1) 그룹 사용하기 () Hi 또는 Hello에 매칭되는 것을 그룹화 현재 그룹은 1가지만 존재 2) 그룹 여러 개 사용하기 ()() Hi 또는 Hello에 매칭되는 것을 그룹 1로 지정, And와 매칭되는 것을 그룹 2로 지정 3) 그룹 활용() gr로 시작하고 y로 끝나면서 e 또는 a를 가지고 있는 문자 4) 그룹화 미적용 (?:) ..
- [ 정리/Spring ][Spring] 스프링 DB 1편 6) 스프링과 문제 해결 - 예외 처리, 반복2023-11-21 09:42:06스프링 DB 1편 데이터 접근 핵심 원리 Session 6 스프링과 문제 해결 - 예외 처리, 반복 1. 체크 예외와 인터페이스 1) 체크 예외와 인터페이스 서비스 계층은 특정 구현 기술에 의존하지 않고 순수하게 유지하는게 좋음 예외에 대한 의존도 해결해야 함 리포지토리가 SQLException을 런타임 예외로 전환해 서비스 계층에 던지면 서비스 계층을 해당 예외를 무시할 수 있어 특정 구현 기술에 의존하는 부분을 제거하고 서비스 계층을 순수하게 유지할 수 있다. 2) 인터페이스 도입 MemberService는 MemberRepository 인터페이스만 의존, 구현 기술을 변경하고 싶으면 DI를 사용해 MemberService 코드 변경 없이 구현 기술만 변경할 수 있다. 3) 체크 예외에 인터페이스 도..
- [ 정리/Spring ][Spring] 스프링 DB 1편 5) 자바 예외 이해2023-11-20 09:05:50스프링 DB 1편 데이터 접근 핵심 원리 Session 5 자바 예외 이해 1. 예외 계층 1) 예외 계층 스프링이 제공하는 예외 추상화를 이해하기 위해 자바 기본 예외에 대한 이해 필요 Object : 예외도 객체이다. 모든 객체의 최상위 부모는 Object 이므로 예외의 최상위 부모도 Object Throwable : 최상위 예외이다. 하위에 Exception과 Error가 있다. Error : 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다. 애플리케이션 개발자는 이 예외를 잡으려고 해서는 안된다. 상위 예외를 catch로 잡으면 그 하위 예외까지 함께 잡는다. 따라서 애플리케이션 로직에서는 Throwable 예외도 잡으면 안 되는데,, 앞서 이야기한 Err..
- [ 정리/Spring ][Spring] 스프링 DB 1편 4) 스프링과 문제 해결 - 트랜잭션(2)2023-11-19 09:40:22스프링 DB 1편 데이터 접근 핵심 원리 Session 4 스프링과 문제 해결 - 트랜잭션 7. 트랜잭션 문제 해결 - 트랜잭션 AOP 이해 1) 프록시 트랜잭션을 편리하게 처리하기 위해 트랜잭션 추상화를 도입하고 반복적인 트랜잭션 로직을 해결하기 위해 트랜잭션 템플릿을 도입했다. 하지만 서비스 계층에 순수한 비즈니스 로직 외에 트랜잭션 처리 로직이 섞여있다. 스프링 AOP를 통해 프록시를 도입해 해결할 수 있다. 트랜잭션 프록시가 트랜잭션 처리 로직을 모두 가져가고 트랜잭션을 시작한 후에 실제 서비스를 대신 호출, 서비스 계층에는 순수한 비즈니스 로직만 남길 수 있다. 프록시를 도입하기 전에는 서비스의 로직에서 직접 트랜잭션을 시작 프록시를 사용하면 트랜잭션을 처리하는 객체와 비즈니스 로직을 처리하는 ..
- [ 정리/Spring ][Spring] 스프링 DB 1편 4) 스프링과 문제 해결 - 트랜잭션(1)2023-11-18 09:25:04스프링 DB 1편 데이터 접근 핵심 원리 Session 4 스프링과 문제 해결 - 트랜잭션 1. 문제점들 1) 애플리케이션 구조 - 프레젠테이션 계층 UI 관련 처리 담당, 웹 요청과 응답, 사용자 요청을 검증 주 사용 기술 : 서블릿과 HTTP 같은 웹 기술, 스프링 MVC - 서비스 계층 비즈니스 로직 담당 주 사용 기술 : 가급적 특정 기술에 의존하지 않고 순수 자바 코드로 작성 - 데이터 접근 계층 실제 데이터베이스에 접근하는 코드 주 사용 기술 : JDBC, JPA, File, Redis, Mongo 등 2) 순수한 서비스 계층 웹 관련 부분, 데이터 저장 기술을 다른 기술로 변경해도 비즈니스 로직은 최대한 변경 없이 유지되어야 한다. 서비스 계층은 특정 기술에 종속적이지 않게 개발해야함 계층을..
- [ 정리/Spring ][Spring] 스프링 DB 1편 3) 트랜잭션 이해(2)2023-11-17 09:34:26스프링 DB 1편 데이터 접근 핵심 원리 Session 3 트랜잭션 이해 7. DB 락 - 개념이해 1) DB 락 세션 1이 트랜잭션을 시작하고 데이터를 수정하는 동안 커밋을 수행하지 않았을 때 세션 2에서 동시에 같은 데이터를 수정하게 되면 트랜잭션의 원자성이 깨지게 된다. 이 문제를 해결하기 위해 세션이 트랜잭션을 시작하고 데이터를 수정하는 동안 커밋이나 롤백을 수행하기 전까지 다른 세션에서 해당 데이터를 수정할 수 없게 막기 위해 데이터베이스는 락이라는 개념을 제공 2) DB 락 동작 1. 세션 1이 memberA의 금액을 500원으로 변경하고 싶고 세션 2는 memberA의 금액을 1000원으로 변경하고자 함(세션 1이 먼저 시작) 2. 세션 1이 트랜잭션을 시작하면서 memberA의 금액을 50..
- [ 정리/Spring ][Spring] 스프링 DB 1편 3) 트랜잭션 이해(1)2023-11-13 09:42:37스프링 DB 1편 데이터 접근 핵심 원리 Session 3 트랜잭션 이해 1. 트랜잭션 개념이해 1) 트랜잭션 데이터베이스를 사용하는 이유는 트랜잭션이라는 개념을 지원하기 때문 데이터베이스에서 트랜잭션은 하나의 거래를 안전하게 처리하도록 보장해 주는 것 모든 작업이 성공해서 데이터베이스에 정상 반영하는 것을 커밋이라고 하고 작업 중 하나라도 실패해서 거래 이전으로 되돌리는 것을 롤백이라고 한다. 2) 트랜잭션 ACID 원자성 Atomicity : 트랜잭션 내에서 실행한 작업은 하나의 작업인 것처럼 모두 성공하거나 모두 실패해야 한다. 일관성 Consistency : 트랜잭션은 일관성 있는 데이터베이스 상태 유지해야 한다. 격리성 Isolation : 동시에 실행되는 트랜잭션이 서로에게 영향을 미치지 않도..