본문 바로가기

분류 전체보기202

ERROR /예외 처리 NULL요건을 지키지 않았거나, 문제가 발생했을때는 어떡할까? HTTP MESSAGE 중 배열이 비어있을경우 NULL이 아닌 빈 배열을 응답하게 된다. 404,403등의 수많은 ERROR MESSAGE를 보았다. 그 중에 4XX,5XX과 같은 경우에는 항상 동일한 포멧을 RETURN하는 형태로 ERROR처리가 이루어져야 한다. ERROR에 대한 처리를 MAP 객체를 통하는 방식은, 지양하자. ERRORRESPONSE를, 별도의 CLASS로 선언하여 객체 형태로 RETURN 하는 것이 좋다. 1. ERROR RESPONSE -> 안에 내부 FIELD로 ERRORCODE를 사용한다 . 2. 그 후의 ERRORCODE는 주로 ENUM 형태로, MESSAGE를 전송한다. CONTROLLER ERROR 처리 . .. 2024. 1. 20.
GIT BRANCH BRANCH ? = 나무의 가지라고 할 수 있다. EX) REPORT.XSL이라는 파일이 있다. 이는 1,2,3버전으로 막 수정되었다. 현재 REPORT3.XSL이 되었다! . 이를 고객들에게 제공하려면 REPORT3_CLINET.XSL이 되었다. 그이후, 그건 두고 REPORT3을 REPORT4로 바꾸고 싶다. .. 1) 그렇다면 REPORT3_CLIENT는 수정되면서, REPORT3는 REPORT4로 수정되는 요구가 존재할 것이다. 2) 그러다보면, REPORT3_CLINET+REPORT4 -> REPORT5인 경우도 존재할 것이다. 이 과정에서, 작업이 분기되는 현상 -> REPORT3,REPORT3_CLINET 이걸 BRANCH 라고 한다. --실제 예시 -- 고객들에게 기능은 냅두고, 내 기능을.. 2024. 1. 16.
깃 개념 버전이란, 어떠한 작업이 완결된 상태를 의미한다. GIT INIT (시작을 알리자) GIT ADD (폴더 OR 전체'.')를 통해서 원하는 파일들을 올린다. (이 2개의 파일을, 깃에게 올렸습니다! 란 뜻) GIT ADD는 왜 할까? 수많은 1~200개의 파일을 만들었다. 생각해보니 COMMIT을 까먹었다! 그중 1~50만 ADD를한다면, 그 파일들만 COMMIT이 된다. hello의 생성까지만, add가 되어있고 hello2 는 add되지 않았다. 이는 곧, hello2는 변경되지 않을 것이고, hello는 변경의 대상이다! 라는 뜻이다. 즉, 파일이 변경될때마다, add도 필요하다. GIT CONFIG --GLOBAL user.name 임지혁 -> 임지혁이 해당 git을 사용했다는 것을 표현한다. c.. 2024. 1. 16.
Exception의 종류들 Exception을 control하는게 리팩토링에서 굉장히 중요하기 때문에, Exception의 종류들과 특징을 정리하고자 한다. Exception은 CHECKED, RUNTIME->UNCHECKED이렇게 2가지 종류가 크게 있다고 할 수 있다. ERROR는, OUTOFMEMEORY,SLIDEDEATH 등등 처리하기가 굉장히 힘들다 . 우리는 주로 EXCEPTION에 집중한다. CHECKED EXCEPTION과 UNCHECKED의 차이는, UNCHECKED는 RUNTIMEEXCEPTION을 상속 받는 다는 것이다! CHECKED EXCEPTION의 경우에는 반드시 예외를 처리해야한다. 1. METHOD에 THROWS EXCEPTION 추가 2. TRY -> CATCH방식으로 예외를 처리해야한다 . ROL.. 2024. 1. 16.
오류보단, 예외로 처리하자 주로 Controller에서 발생한다. -> shutdown이라는 method가 있을때, 그 내부에서 exception까지를 모두 control하기 때문. 주로 try,catch에 따라서 처리를 하게되고 . 해당 exception을 control하는 역할을 분리한다. 1. 예외가 발생했는데 catch에서 하는일이 없다? : 이는 반드시 지양하며, 최소한 log라도 발생시켜주는 것이 좋다. 2. try catch를 사용하지 않는 것이 좋기는 좋다 ex) 환율이나 경제 api를 가져올때 -> 신한에서 없으면 하나은행으로 3. 만약에 필요하다면.. 예외를 받아서 더 구체적인 예외를 발생시키자. 이 느낌이다. 만약에 service에서 무슨 일을 한다고 하면. 그때 exception이 발생할 것이다. 이때 발생하.. 2024. 1. 16.
객체를 망치지 않는, Lombok의 사용 여태까지는 모든 공부 과정에서 Lombok을 사용해왔다. 이러한 Lombok은 생성자의 형성 등 간단하고 명료하게 객체의 생성을 지원한다. 허나 Lombok의 오사용은, 객체를 망가뜨릴수 있다. 1. @DATA를 지양해야 할 수 있다. ID,EMAIL,NAME이 있는 TABLE이 있다고 생각해보자 . 무분별하게 모든 FIELD에 대해 생성자를 형성했다고도 가정해보자 . 그렇다면 , 생성자로 들어올 수 있는 EMAIL은 EMAIL의 변경이 가능함을 의미하는 것이 아닌가? 혹은, EMAIL과 NAME이 동시에 바뀌어야 한다면 (즉, 데이터의 쌍이 있다면) SETTER가 이러한 쌍의 변경이 아닌 한 데이터만의 변환을 유발할 수도 있다. @EQUALSANDHASHCODE는 두 객체의 값과 동일성을 비교해준다. .. 2024. 1. 16.
패키지 구조 Layer과, Domain 형 계층이 있다 . Layer는 controller끼리, config끼리 묶이고 domian 같은 경우는 coupon -> controller,domain등으로 묶는 구조이다. Layer구조시는, 전체적인 구조를 쉽게 파악 할 수 있다. -> controller면 거기서 하면 된다. 하지만, 코드의 응집력 (코드끼리 분리되어 있는 것)이 떨어질 수 밖에 없다. Domain : 코드들이 응집되어있어, 상세적인 이해가 가능하다. 하지만 도메인 구조 없이는 이해가 굉장히 힘들다. Domain 구조가 최근에는 가장 권장하는 구조이다. 주로 config,error(exception),service,dto,table,repository등을 포함한 구졸 설계한다. 전체 범위에 적용되는 것도.. 2024. 1. 16.
Multi Thread로 처리하기 주어진 상황 : 사실, 많은 데이터도 아니다. 하지만 더 많다고 가정하고, 이런 데이터를 넣어야 하는 상황이다. 1. 매핑할 데이터가 필요하다! 2. 이를 직접 생성자를 불러서 넣는것보단, field mapping을 하자 : 생성자를 안쓰고 이렇게 설정해준 이유는? 이제, config를 설정하자 3. data를 읽어오는 reader! amountdto를 일겅오며, 그 이름을 지정했다. setmapper는 위에서 설정한대로, 각 라인의 분할은 linetokenizer로 분할하였다. 4. 중간 과정 processor! 사실은 이보다 복잡한 process가 생길 수 있다. (전처리 등등) 5. writer! 이 부분이, 간단한 예시이다. 지금은 outputfile에 저장하는 정도로 마무리 되었지만, 실제로는 .. 2024. 1. 15.
증권 기술 분석 첫번째 https://pololl.tistory.com/14 2024. 1. 15.
Spring Batch Exception 목표 : 문제 발성시 최대한 빠른 exception을 발생. 이와 같이, job을 진행할때 ( step은 chunk단위가 아닌 tasklet으로 초 간단하게 진행했다) 실제 job의 진행중, step 진행 이전 exception을 발생시켜 그 전에 종료되게끔 유도하였다. 목표 : job의 실행 전후로 job상태를 확인하는 joblistener 생성 현재는 로그만을 발생시키게 만들었으며, 여기서 처리도 가능하다 . File의 data를 읽어서 이를 작성하고 삽입하는 방식은 , 해당 블로그께서 잘 정리해 주셨다. https://velog.io/@foodsmith96/%EC%A0%95%EC%88%98%EC%9B%90-%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B0%B0%EC%B9%98-9-Fla.. 2024. 1. 15.