본문 바로가기

분류 전체보기104

useEffect Hook 의존성 배열 이해하기 useEffect 의존성이란? useEffect Hook의 의존성 배열은 useEffect 함수가 언제 다시 실행될지 결정하는 역할을 합니다. 예시 코드: 여기서 [count] 부분이 의존성입니다. JavaScript const [count, setCount] = useState(0); useEffect(() => { console.log('useEffect 실행!'); }, [count]); const handleClick = () => { setCount(count + 1); }; return ( 카운트: {count} 증가 ); 코드를 사용할 때는 주의가 필요합니다. content_copy 위 코드에서: count는 상태 변수입니다. useEffect Hook은 컴포넌트가 처음 렌더링될 때와 cou.. 2024. 3. 5.
Spring Security - 스프링 시큐리티 활용 방법 Spring Security(스프링 시큐리티) 스프링 시큐리티는 스프링 기반의 애플리케이션의 보안(인증과 권한,인가 등)을 담당하는 스프링 하위 프레임워크이다. 주로 서블릿 필터와 이들로 구성된 필터체인으로의 위임모델을 사용한다. 그리고 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서는 일일이 보안관련 로직을 작성하지 않아도 된다. 보안 용어 접근 주체(Principal) : 보호된 리소스에 접근하는 대상 인증(Authentication) : 보호된 리소스에 접근한 대상에 대해 이 유저가 누구인지, 애플리케이션의 작업을 수행해도 되는 주체인지 확인하는 과정(ex. Form 기반 Login) 인가(Authorize) : 해당 리소스에 대해 접근 가능한 권한을 가지고 있는지 확인하는.. 2023. 8. 28.
도서관리 프로젝트[12] 배포하기 - 리눅스 환경에서 깃허브 가져오기/ 실행중인 서버 중단하기 깃허브 연결 이제 깃허브에 있는 코드를 리눅스 전용 컴퓨터로 가져와야 합니다. 깃허브 주소를 복사해서 명령어를 통해 코드를 가져오겠습니다. * git clone [github 저장소 주소] : 깃허브 저장소 복사하기 Swap 설정 이제 빌드를 하고 실행해야하는데, 지금 무료 컴퓨터기때문에 성능이 좋지 않습니다! 이것에 대한 해결책으로 메모리가 부족한 경우 디스크를 사용할 수 있도록 설정해주어야 합니다. 원래 프로그램이 시작되면 RAM(메모리)을 사용하게 되지만 부족할 경우 속도가 좀 더 느리지만, 장기기억장치인 DISK를 사용하게 할 수 있습니다. 이것을 swap이라고 합니다! swap설정 명령어는 아래와 같습니다. 빌드 * chmod +x ./gradlew : gradlew를 사용하기 위해 실행할 수 .. 2023. 7. 29.
도서관리 프로젝트[11] 배포 - AWS접속, EC2 리눅스 명령어, 배포프로그램 설치 이제 지난 시간에 빌린 컴퓨터에 접속해보겠습니다. 이때 두가지 방법이 있습니다. 터미널을 이용하는 방법, AWS 홈페이지로 직접 접속하는 방법입니다. 저는 두번째인 AWS홈페이지로 직접 접속하는 방법을 이용했습니다. AWS에 접속하기 1) 인스턴스 화면에서 프로젝트를 선택하고 연결을 눌러서 들어갑니다 2) 다음 화면에서 바로 연결 버튼을 누릅니다. 3) 연결 완료! 그러면 아래와 같이 연결이 완료됩니다. 리눅스 명령어 * mkdir : 폴더를 만들기(make directory) * ls : 현재 위치에서 폴더나 파일을 확인하기 * ls -l : 조금 더 자세한 정보 확인하기 -> drwxrwxr-x 의 의미 : folder1은 폴더이다. r : 읽을 수 있는 권한 / w: 쓸 수 있는 권한 / x : 실.. 2023. 6. 30.
도서관리 프로젝트[10] git, github, AWS, EC2, 배포 목표 1. git과 github의 차이를 이해하고, git에 대한 기초적인 사용법을 알아본다. 2. AWS의 EC2가 무엇인지 이해하고, AWS를 통해 클라우드 컴퓨터를 빌려본다. 배포란? 서버에 반영하는 것! 배포할 때, 서버는 보통 리눅스에서 실행하게 되는데, 전용 컴퓨터(리눅스)에 설치한 java/mysql을 실행해야 합니다. 따라서 똑같은 서버 코드를 실행시키지만, 우리 컴퓨터에서 실행할 때는 우리 컴퓨터의 MySQL 전용 컴퓨터에서 실행할 때는 전용 컴퓨터의 MYSQL에서 실행해야 합니다. profile 이처럼 똑같은 서버 코드를 실행시키지만, 실행 장소, 환경에 따라 설정을 다르게 하고 싶을 때 profile이라는 개념이 등장합니다! 지금까지 만들었던 스프링부트 프로젝트에서도 profile을 .. 2023. 6. 28.
JPA 연관관계에 대한 추가적인 기능들 1:1관계 사람과 주소는 1:1 관계입니다. 예시)person이 address id를 가지고 있다고 가정하겠습니다. 두 테이블 중에서 주도권을 가지고 있는 테이블은 person입니다. 즉, person이 연관관계의 주인입니다! 이때, 연관관계를 알려주는 방법은 연관관계의 주인이 아닌 쪽에 (mappedBy = "주인")을 붙여주는 것입니다. 이 연관관계 주인 효과는 바로 객체가 연결되는 기준이 된다는 것입니다! PersonService PersonController 테스트해보기 다시 한번 정리해보면 왜냐하면 address가 연관관계의 주인이 아니기 때문입니다 setter로 해결하는 방법 N:1관계 : 연관관계의 주인이 N이 됩니다. @JoinColumn @ManyToMany : N:M관계 CASCADE .. 2023. 6. 26.