개요SYNC 6기 프로젝트를 진행하면서 Do_Sum과 Hotspot을 같이 사용해야 했다.해당 상황에서 전표 별 합계와 해당 전표의 전표 번호 별 반제 전표를 조회한 결과가 필요했다.이 상황에서 Hotspot이 통계 필드에도 적용되는 문제가 발생했다.이 때 통계 필드의 전표번호를 누르면덤프 발생.....해결 DATA : lv_type TYPE dd01v-datatype. CALL FUNCTION 'NUMERIC_CHECK' EXPORTING string_in = pv_row_id IMPORTING htype = lv_type. CHECK lv_type = 'NUMC'.Hotspot 클릭 이벤트 구현 서브루틴에서 클릭한 Hotspot 라인의 인덱스가 NUMC인지 판..
개요SYNC 아카데미 수업을 들으면서 ABAP Program에서 Data Object 선언 시 사용하는 TYPE과 LIKE에 대해 배웠다.TYPE과 LIKE의 차이에 대해서 JAVA와 다른 생소한 부분이기 때문에 확실히 정리해야겠다.TYPE과 LIKE는 간단하게 비교하면 Data Object와 Data Type중 어느 것을 참조하는가 이다.Data Object vs Data Type특징Data ObjectData Type정의실제 데이터 저장 변수내부 테이블, 상수 등데이터 속성 정의를 위한 설계도역할데이터 저장 or 처리데이터 구조(타입, 길이, 소수점 등) 정의메모리 사용프로그램 실행 시 메모리 할당메모리 사용x (데이터 구조만 정의)예제DATA gv_int TYPE i LENGHT 10TYPE tv_..
지원 이유막학기 졸업을 앞두고 진로에 대한 이런저런 고민이 많았다.일단 취업이 가장 큰 목표였지만 일단 접어두고(상황이 좀 좋지 않다) 기존에 준비하던 백엔드 개발자 부트 캠프로 입과할 것인가 아니면 SAP ERP 개발에 대해 배울 수 있는 SYNC 부트캠프로 가서 완전히 새로운 진로를 준비할 것인지 두가지 선택지에서 큰 고민이 있었다.SAP ERP 개발은 대학교 수업에서 접하면서 관심도 있었고 아버지가 종사하는 부분이라 정보도 많이 받을 수 있다는 것이 장점이었고백엔드 개발 부트캠프는 대학에서 준비하던 진로를 계속 이어나가면서 빠르게 성장할 수 있다는 장점이 있었다.하지만, 결과적으로는 SYNC를 선택했다.가장 큰 이유는 바로 취업 세션 유무였다. SYNC는 바로 취업할 수 있는 SAP 개발자를 양성하..
지원 이유막학기 졸업을 앞두고 이곳저곳 지원서도 넣으면서 더 깊게 학습하고 싶다는 생각이 들었다.아무래도 취업이 힘들어진 만큼 더 배우면서 프로젝트 경험을 쌓아 포트폴리오를 늘리는 것이 1순위였다.나에게 가장 맞는 부트캠프가 무엇인지 기준을 세우고 이에 맞는 부트캠프를 찾아봤다.규모가 어느정도 컸으면 좋겠다.코딩테스트나 입과 시험이 있어야 한다.프로젝트 비중이 커야할 것취업 관련 세션이 있어야할 것해당 기준으로 이곳저곳 찾아보던 중 우리FIS에서 진행하는 우리FIS 아카데미 클라우드 서비스 개발 과정을 알게됐고 해당 과정에서 핀테크 관련 특강과 핀테크 역량 인증서를 발급해준다는 것이 매력적이어서 지원했다.1. 자기소개서지원동기 및 성장계획(최소 50자 이상)아무래도 다른 부트캠프 지원 경험이 없다보니 처..
개요Dktechin 주관 기업실무 프로젝트를 진행하면서 Argument Resolver를 이용해서 컨트롤러에서 조건을 어노테이션으로 받아 조금 더 가독성있고 간단하게 사용하는 방법을 알게되어서 정리해보려고 한다.이 방법을 통해서 검색 조건 파라미터들을 @SearchParam이라는 어노테이션으로 받아서 MemberSearchParam, BoardSearchParam 등 여러 Record 객체로 만들어서 사용했다.HTTP 메시지 컨버터컨트롤러에서 변수 바인딩 처리 방법특정 변수에 바인딩@RequestParam 사용가변 경로 변수 바인딩@PathVariableHttp Body 변수 바인딩@RequestBody(주로 DTO 사용)파일과 같은 Multipart@RequestPart이 때 Argument Resol..
개요이 때까지 Service 테스트는 필수적으로 해왔는데 Controller 테스트는 postman으로 해보고 되면 되는구나하고 넘겼다.과거의 나 반성해라!근데 유닛 테스팅에 대해 공부하던 중 Controller 테스트도 하는 것이 무조건 좋다고 해서(Postman은 http에 비해 상당히 제약이 적기 때문이다.)그래서 Controller 테스트 코드 작성한거랑 발생한 오류들에 대해 정리해볼 것이다. Test 코드Test 코드 어노테이션@WebMvcTest(controllers = EpisodeController.class)@MockBean(JpaMetamodelMappingContext.class)@AutoConfigureMockMvc 먼저 Service 테스트 코드와 다르게 @SpringBootTes..
난이도?사실 내가 찾아봤던 난이도보다 쉽게 나왔다고 느꼈다.작년에는 2시간 6문제에 난이도도 3솔 정도로 어렵다고 했는데 이번 시험을 보면서 생각보다 이해는 되는 문제였다. 떨어져서 문제지 문제1번은 정렬 기준을 만지는 문제였다.여러 정수를 받아서 해당 정수들을 재배열하고 하나로 합쳐 가장 큰 정수를 만드는 문제였다. 2번은 암호화, 복호화 문제였다.조건에 맞게 문자열을 받아서 해당 문자열 조건에 맞게 암호화하거나 복호화하는 문제였다. 3번은 문자열 파싱과 주어진 방식으로 조합하여 만든 유리수 계산이었다.제일 어려웠던듯... 4번은 시간이 없어서 못 봤다. 5번은 체스의 나이트를 움직이는 경우의 수를 구하는 것으로 단순 BFS로 해결했다. 아마 이거는 맞았을 것 같은데... 마무리?꼭 붙고 싶었던 부트캠..
문제 발생?Spring boot랑 React로 웹 애플리케이션을 구현하고 있다.프론트와 서버 간의 기본 정보(로그인 유저 id, 유저 소속 채널 id 등)를 쿠키에 담아서 통신하기로 했다.프론트 api가 작동하는지 확인하기 위해 프론트 개발자 친구의 요청에 따라서 서버를 학교에서 제공한 private VM에 올렸다.당연히 쿠키에 접근이 안된다? 당연하다. 도메인이 다르니까. 쿠키는 도메인에 따라 움직이니까!프론트에서 쿠키를 생성하나 서버에서 쿠키를 생성하나 마찬가지다. 쿠키에 대한 정보를 가져오지 못해서 예외가 발생한다. 해결 방법여러 해결 방법에 대해서 찾아보고 실행해보았다. 쿠키 SameSite 변경SameSite 종류StrictDomain이 완벽하게 같을 때만 쿠키 제공, 불편함Lax기본적으로 St..
개요Spring Boot와 TypeScript 기반으로 웹 애플리케이션을 제작하고 있는데 유저 프로필 이미지를 받아 저장하는로직이 필요했다.이를 위해서 프론트에서 보낸 이미지를 MultiPartFile로 받아서 S3에 저장하는 방식으로 구현하기로 했다.S3 생성이나 키 생성과 같은 AWS 관련 할 일은 생략하겠다.Spring Boot S3 연결연결을 위해서는 AWS의 access키랑 secret키를 등록해야 한다. 오타에 조심하자.. }안써서 1시간 고생했다.cloud: aws: s3: bucket: ${bucket-name} credentials: access-key: ${access-key} secret-key: ${secret-key} region: ..
문제 발생 @Builder를 사용해서 엔티티의 1:N 관계를 정의하던 중 new ArrayList()로 필드를 초기화 해도 NullPointException 에러가 발생했다. List가 Builder 패턴을 이용해서 엔티티를 초기화할 때 Null값으로 된 것이다. Cannot invoke "java.util.List.add(Object)" because the return value of "semicolon.MeetOn_WhenToMeet.domain.when_to_meet.domain.WhenToMeet.getTimeTableList()" is null java.lang.NullPointerException: Cannot invoke "java.util.List.add(Object)" because t..