프로그래밍
-
C/C++ 콘솔창에서 커서를 변경해보자 (GetConsoleScreenBufferInfo, SetConsoleCursorPosition)프로그래밍/C/C++ 2023. 1. 19. 09:40
콘솔창에서 메뉴 입력을 받는 영역을 만들고 커서를 제어하여 특정 위치에서 입력을 받게 하고자했다. 위에 이미지와 같이 이미 명령어를 소개하고, 입력값을 소개 테이블 안에서 작성을 하고 싶었다. 일반적으로 콘솔 커서 관련 키워드로 찾아보다가 다음과 같은 코드를 찾을 수 있었다. COORD Cur; CONSOLE_SCREEN_BUFFER_INFO a; // 현재 커서 정보를 가져온다 GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &a); Cur.X = a.dwCursorPosition.X; Cur.Y = a.dwCursorPosition.Y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), C..
-
Spring Boot 테스트코드 동작시 CommandLineRunner 중복 문제프로그래밍/Spring Boot 2023. 1. 9. 22:54
Spring Boot 에서 테스트코드를 작성하다가 다음과 같은 문제가 발생했다. 테스트 코드 내, @SpringBootTest, @ContextConfiguration 을 사용하여, 테스트코드를 작성해야하는 상황이 생겼는데, 이때 CommandLineRunner의 구현체를 만들어서 @Component 와 함께 사용하는 코드들이 있었다. 이 코드들을 그대로 다 @Component 를 주석처리 해주기에는 너무 부담이였다. 그래서 자료를 찾아봤는데 다음과 같은 레퍼런스를 찾을 수 있었다. https://www.baeldung.com/spring-junit-prevent-runner-beans-testing-execution 방법은 간단하다, CommandLineRunner의 구현체 부분에, @Profile("..
-
C/C++ Struct Memory Padding프로그래밍/C/C++ 2022. 12. 28. 10:53
C언어 기반으로 Struct를 사용하여 구조체를 생성 했을 경우 다음과 같은 문제를 본적이 있을 것이다. 일반적으로 내가 할당한(할) 타입의 메모리 크기를 보기위해 다음과 같은 코드를 작성한다. #include struct MyStruct { char ch; // 1바이트 char * pCh; // 4바이트 int integer; // 4바이트 }; int main() { struct MyStruct custom_type; size_t size = sizeof(custom_type); printf("Size [%d]Byte ", size); } 구조체를 만들고 해당 구조체의 크기를 알아보기 위해 sizeof(struct MyStruct) 또는 sizeof(custom_type) 을 할시 해당 구조체의 할..
-
JPA 타임스탬프(TimeStamp) 자동저장 하는 방법프로그래밍/JPA 2022. 12. 23. 23:05
JPA를 사용하는 중에 필요한 기능으로, DB상에 저장된 시간을 기록하고 싶었다. (훗날, 히스토리를 갖고 원하는 날짜의 데이터를 찾을 방법이 이것뿐 .. ) 하지만 몇몇 자료를 찾았으나 제대로 나오는건 없어 제대로 나온걸 기록한다. @Column @CreationTimestamp @Temporal(TemporalType.TIMESTAMP) Date createTime; @Entity 어노테이션이 작성된 클래스의 필드변수에 다음과 같이 사용한다. 반환 타입은 Json인 변수를 만들고, 해당 변수는 DB상의 컬럼으로 등록하기 위해 @Column 어노테이션을 사용한다. @Temporal 어노테이션을 사용하여 해당 데이터가 타임스탬프를 저장한다는 것을 의미한다. 해당 어노테이션은 java.util.Data, ..
-
Spring Boot 3.0 + Spring Security 6.0.0 FilterChain 작성 방법프로그래밍/Spring Boot 2022. 12. 18. 23:27
IntelliJ에서 기본적으로 스프링부트 프로젝트를 만들어주는 Spring Initialize가 있어서 항상 편하게 사용하는 편이다. 이번에 Spring Boot 3.0.0을 사용하고, Dependency Module을 항목에서 Spring Security를 사용 했더니, Spring Security 6.0.0 버전으로 설치가 된 것이다... 뭔가 앞자리가 6이고 뒷자리가 0.0 이라서 불안하긴 하지만... 열심히 리서치를해서 그나마 설정은 끝낸 것 같다. @ComponentScan @Configuration public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws E..
-
RestAPI PathVariable 부분에 여러개의 파라미터를 매핑하기프로그래밍/Spring Boot 2022. 12. 18. 17:54
지금 진행하는 프로젝트 특성상, 다음과 같은 시나리오가 필요하였다. 데이터베이스상에 기록된 다음과 같은 파라미터들이 현재 요청으로 들어오는 파라미터 들과 일치하는가 ? 를 보는것이 문제였는데, 일반적으로 사용하는 RequestMapping PathVariable 의 경우에는, @RestController @RequestMapping("/route/{member}/{route}") public class CustomRouiteController { @GetMapping public Object GetCustomRoute( @PathVariable(value = "member") String memberId, @PathVariable(value = "route") String route ) { Map map..