소프트웨어 및 프로그래밍
-
Spring-Security소프트웨어 및 프로그래밍/Spring 2025. 2. 13. 18:23
spring-security를 통해 로그인이 되는 방식이 궁금했다.spring-security에서는 어떻게 로그인 처리가 될까? 1. Spring Security 설정(SecurityConfig) @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.formLogin(loginForm -> loginForm // 커스텀 form 방식 로그인 사용 .loginPage("/login") .defaultSuccessUrl("/index", true) ..
-
Spring JPA에서 연관관계 맵핑소프트웨어 및 프로그래밍/Spring 2025. 1. 11. 01:06
JPA는 데이터베이스의 테이블 간의 관계를 객체들 간의 관계로 추상화 해준다.JPA에서는 @Entity라는 어노테이션을 통해 객체를 하나의 테이블로 형상화할 수 있다. 그런데 테이블간의 관계는 객체간 관계와 동일하지 않기 때문에 연관관계를 이해하고 이를 적용해야 한다. 아래에 아주 간단한 예시를 통해 이러한 연관관계를 이해해 본다. 그림1과 같은 ERD가 있다. Order: 주문 정보가 담긴 테이블OrderItem: 주문에 포함된 상품 정보Delivery: 주문의 배송 정보 Order는 OrderItem과 1대 다 관계로 OrderItem이 Order의 id를 FK로 가지고 있다. 즉, OrderItem 측에서 order_id에 대한 조작이 가능한 '주인'이다. 그래서 Order와 OderItem을 ..
-
gRPC 클라이언트 서비스를 생성할 때 채널 상태를 우선 파악해야 할까?소프트웨어 및 프로그래밍/네트워크 프로그래밍 2024. 12. 6. 19:23
gRPC로 클라 프로그램을 작성할 때 든 생각이다. gRPC는 채널을 생성하고 stub에 서비스를 실행하니, 채널이 정상인지 아닌지 먼저 확인해야 되지 않을까? 채널 상태를 파악하고 서비스를 호출해야 조금 더 최적화 된 코드가 아닐까? 위와 같은 생각이 들어 구글링을 하던 중 좋은 글을 발견하였다 >> 글의링크 결론적으로 말하면 채널의 상태를 우선 파악할 필요가 없다.우리가 사용하는 gRPC의 Channel은 어플리케이션 레벨에서 추상화한 무엇이다. 실질적인 tcp 커넥션을 의미하지 않는다. 그러므로 아무리 Channel이 Ready 상태여도 서비스 호출에 무조건 100% 전달된다는 보장이 없다. 그러므로 우선 RPC 호출을 해봐야 서버의 상태로 실패를 하든지 네트워크로 실패를 하든지 RPC를 호출을 해..
-
Spring(벡엔드)가 최종적으로 제공하는 것소프트웨어 및 프로그래밍/Spring 2024. 10. 14. 19:04
Spring 혹은 일반 벡엔드 개발자가 최종적으로 제공하는 것1. static 응답 - file, image, string...2. Http api 응답 - json3. 동적 응답 - 동적으로 Html 생성 더 알아둘 것두 가지 렌더링SSR - 서버 사이드 렌더링 동적 응답CSR - 클라이언트 사이드 렌더링자바스크립트를 사용해서 웹 브라우저에서 동적으로 생성해서 적용. ex) 네이버 지도동작 방식웹브라우저 >> 서버웹브라우저 sample.htmlHTML 내용X자바스크립트 링크웹브라우저 >> 서버Javascript 클라이언트 로직 요청HTML 렌더링 코드웹브라우저 >> 서버HTTP API 데이터 요청웹브라우저 Json 데이터 응답
-
Spring-Bean Container에 대한 예제와 이에 대한 후기소프트웨어 및 프로그래밍/Spring 2024. 10. 14. 16:18
예제에 대한 다이어그램은 아래와 같다SampleService 인터페이스와 ServiceA 인터페이스가 존재하고 SampleService의 구현체 SampleServiceImpl와 ServiceA의 구현체 ServiceAImpTypeOne, ServiceAImplTypeTwo 존재한다.SampleService에 대한 구동은 SampleServiceImpl에 구현되어 있고 SampleServiceImpl는 ServiceA를 멤버로 소유하고 있다. SampleServiceImpl의 멤버인 ServiceA에 대해 구현체를 new를 통해 바로 할당해서 사용해도 되지만, 아래와 같이 SampleServiceImpl이 ServiceA의 구현체에 의존하기 보다는 인터페이스인 ServiceA에 대해서만 의존하기 위해 코..
-
Spring SOLID 원칙소프트웨어 및 프로그래밍/Spring 2024. 9. 24. 15:08
Spring은 OCP, DIP 기능 지원 DI - 의존관계, 의존성 주입 - 클라이언트 코드 변경 없이 SOLID SRP - 단일 책임 원칙 무언가 코드 상의 '변경'이 있을 때, 이 파급 효과가 적으면 이 원칙을 잘 따른것 예) MVC를 통해 model와 control, view를 각각의 역할을 분리 OCP - 개발-폐쇄 원칙 주관적으로 가장 중요한 원칙 소프트웨어 요소는 확장에는 열려있고 변경에는 닫혀있어야함 >> 다형성 MemberRepository m = new MemoryMemberRepository(); // 기존 MemberRepository m = new JdbcMemberRepository(); // 변경 확장을 하려면 코드를 '변경'해야만 함 이를 자동으로 해주려면 누군가가 개입이 ..
-
DNS 레코드소프트웨어 및 프로그래밍/기타 2024. 8. 9. 13:05
dns 레코드란도메인 이름과 관련된 정보를 저장하는 데이터베이스 항목 DNS는 인터넷에서 도메인 이름을 IP 주소로 변환하는 시스템으로, 다양한 유형의 레코드를 통해 여러 가지 정보를 제공, DNS 레코드 종류는 아래와 같음 A 레코드 (Address Record): 도메인 이름을 IPv4 주소에 매핑AAAA 레코드: 도메인 이름을 IPv6 주소에 매핑CNAME 레코드 (Canonical Name Record): 한 도메인 이름을 다른 도메인 이름으로 매핑, 주로 별칭을 만들 때 사용MX 레코드 (Mail Exchange Record): 이메일을 수신할 메일 서버를 지정NS 레코드 (Name Server Record): 도메인을 관리하는 네임서버를 지정TXT 레코드: 도메인에 대한 임의의 텍스트 정보를 ..
-
mutex & condition variable소프트웨어 및 프로그래밍/동시성 프로그래밍 2023. 12. 28. 13:52
mutex와 condition variable은 모두 쓰레드를 제어하기 위해 사용된다.그럼 mutex는 뭐고 condition variable 무엇을 뜻하면 이들의 차이점은 무엇일까? mutex는 thread가 코드를 사용할때 해당 코드 블럭의 소유를 하나의 쓰레드에게 부여하게 해준다.그럼으로 멀티 쓰레드환경에서 하나의 변수에 여러 쓰레드가 서로 값을 읽고 쓰려는 race condition 상태를 배제하게 해준다. 그럼 condition variable은 무엇일까?condition variable 을 사용하면 mutex 또한 사용하게 되는 condition varibale은 언제 사용하는 걸까?condition variable은 publisher - subscriber 구조에서 많이 사용된다. 멀티 쓰레..