최근 뷰 프로젝트를 마무리하면서 주위의 좋은개발자들과 대화를 하면서 

현재 프로젝트의 문제점에 대해서 그리고 쓰기 어렵게 설계된 이유에 대해서 논의 하였다.

 

모듈: 결재모듈

 

1.함수를 전부 emit으로만 올려줬는데. 이부분이 아쉽다는 애기가 나왔다.

=> 이부분에서 GPT 랑 같이 논의 하였는데. 결재관련 데이터 함수는 스토어 , 페이지흐름  UI상태 등 UI관리는 컴포저블 

그 컴포넌트 자체 동작은 해당컴포넌트에서 사용하는게 좋을것 같다는 애기가 나왔다.

 

2.데이터관리도 많이 아쉬웠다. 스토어를 잘 활용하지 못했다. 거의 대부분이 props 로 올려줬다.

그러다보니 너무 많은 상태값을 하위컴포넌트에서 매번 똑같이 올려줘야했고 추적관리가 힘들었다. 

=>이부분을 pinia를 써서 통합관리 했으면 좋을것같다.

emit는 “결재 전에 호출”, “결재 완료 후 알림” 정도만 보내고,
구체적인 액션(UI 처리)은 부모가 담당한다.

 

구조가 중요

도메인 데이터는 Pinia 스토어(one source of truth)
화면별 묶음/다이얼로그 상태는 컴포저블
컴포넌트는 얇게(그리기 + 이벤트만)

1. 폴더/컴포넌트 구조부터 먼저 정리

2. Pinia로 도메인 상태 한곳에 모으기

Approval 상세에서 공통으로 쓰는 데이터들만 스토어에 모아둬.

 

  • “승인 상세 도메인에서 필요한 모든 데이터”는 여기 한 군데.
  • 댓글 추가/전달/라인 수정 같은 비즈니스 액션도 여기서 처리.
  • 컴포넌트는 store를 사용하는 소비자일 뿐.

 

3. 컴포저블로 “화면 레벨” 로직/다이얼로그 상태 관리

데이터는 스토어에 있지만,
다이얼로그 open/close나,
어떤 버튼 클릭 시 어떤 다이얼로그 띄울지 같은 UI 플로우는 컴포저블로 분리.

 

작년 11월부터 대형 통신사 하이브리드 웹사이트 개발을 진행하고있다.

이번에 조금 다른 프로젝트랑 달랐던점은 프론트앤드만 전문적으로 하는 포지션이다.

여지껏 풀스텍으로만 일하다가 프론트앤드만 하니 일이 좀더 수월할거라 예상했는데. 지금 프로젝트 막바지인데

간단한 리뷰를 하면서 정리할겸 글을 적는다.

 

일단 프론트앤드 전체를 2명이서 개발을 진행했다.

모든 프론트업무는 사원 혼자 도맡아 하고있었으며,

인터페이스 명세서 등 문서작업 및 업무협의 밤11시 까지 야근하면서 하고있었다. 

사용하는 기술은 vue3,composition api,typescript,nuxt3 등 최신기술의 프론트 기술을 사용하고있다.

익숙한 환경이 아니라 처음에 힘들었지만 기술적인 부분은 적응하면 큰 문제없었다.

 

그것보다 가장 문제는 일정이였다. 개발 공수에 비해 무리한 일정이 잡혀있었고

최신 프론트 기술에 대한 이해가 없이  산정한것같다. 피엠이 하는일은

정확히 모르겠지만 프론트개발에 한해서는 기여하는부분이  없고 중간중간에 일정에 대한 푸쉬만 있을뿐,

데브옵스 쪽을 주력으로 하시는것으로 보인다.

 

투입하자마자 이 프로젝트의 문제점 및 체계가 조금 걱정이 됐다.

무리한일정, 체계없는 일하는 방식 등... 하지만 취업시장이 너무 불안해 일단 진행했다.

 

지금 막바지 까지 개발했는데, 프론트앤드 개발자의 고충을 알겠다.

아직 프론트만 개발한 프로젝트는 여기밖에 없지만. 프론트 개발은 백엔드 개발자를 누구를 만나느냐에 

따라 공수가 너무 다르다. 여기는 백엔드 개발자도 체계없이 일한다. 

API 개발이 완료되더라도 검수하는 사람이없으며, 완성도 또한 개발자마다 다르다.

그리고 제일 문제는 책임값없는 태도다. 모든 명세서를 프론트앤드 개발자가 초안을 작성해 백엔드개발자가 

그것을 보고 만드는데, 업무적인 이해도와 영향도를 전혀 고려안한다. 심지어 기획서도 거의 안보며 인아웃값만

맞춰주는 개발자도 있다. 나는 가입 및 개통처리하는 쪽을 개발했는데. 프론트에 딜레이 될만한 부분이 너무많다.

 

서버랑 프론트 둘다 개발해본 입장에서 서버에서 API 내려주는것을 보고있으면 답답한 부분이 많다.

50대 이상 개발자분들 이랑 협업을 했을때 잘하시는분이랑 그렇지 못한 분이랑 갭이 너무 많이 차이난다.

어떻게 개발을 지금까지 해왔을까 의문이드는분도 있다. 정말 답답했다.

 

분명 서버에서 데이터를 만들어줘야하는데. 프론트에서 데이터 지지고 볶고 해서 구현하라는 

어이없는 요청사항도 받아보고 필요한것을 정리해서 문서화해서 정리해서 공유폴더에 넣어놧는데

원본은 지우며 자기가 줄수있는값빼고는 다지우고 문서를 다시 써야하는 상황도 생기고

API 개발을 완료했는데 요청값이 안나온다고 요청드리니 조치가 안되어 직접 자바 설치해서 시큘리티 및 필터쪽

문제지점을 내가 역으로 찾아서 조치해준적도 있다.

 

 

노션사용하다보면 느리게 입력될때 정말 짜증난다.

나도 그것때문에 사용안하다가 간단하게 해결하는 방법을 찾아 공유한다

 

노션 창선택하고 윈도우키2번

 

이렇게 하면 간단하게 해결!!! 

Connected to the target VM, address: '127.0.0.1:57863', transport: 'socket'
FATAL ERROR in native method: processing of -javaagent failed

 

Unexpected error (103) returned by AddToSystemClassLoaderSearch

 

Unable to add C:\Users\�Ӽ���\AppData\Local\JetBrains\IntelliJIdea2022.1\captureAgent\debugger-agent.jar to system class path - the system class loader does not define the appendToClassPathForInstrumentation method or the method failed

 

Disconnected from the target VM, address: '127.0.0.1:57863', transport: 'socket'

Process finished with exit code 1

 

 

 

윈도우 기준 File -> Settings( 쉬프트 + 알트 + S )

 

좌측 경로를 잘확인하고 체크박스가 되어있으면 해제하고 OK 누른후 디버그로 재기동해본다.

그러면 해결!

 

'JAVA' 카테고리의 다른 글

실무에서 사용하는 JSP- JSTL 문법  (0) 2020.07.10
1대다 JSP 파일업로드  (0) 2020.06.28
2025년 SAP ERP 지원중단  (0) 2020.06.26
마이바티스(MyBatis) 실무활용  (0) 2020.06.24
Orange For Oracle PL/SQL Guide  (1) 2020.06.16

인덱스에 포함되지 않은 칼럼에 대한 옵션조건은 어차피 테이블에서 필터링

할수 밖에 없으므로 그럴 때는 OR조건을 사용해도 무방하다. OR조건을 활용한 옵션 조건 처리를 정리하면 

컬럼이면, 18c부터

(Page 213). 
(Page 213). 

1.인덱스 엑세스 조건으로 사용불가.

2.인덱스 필터 조건으로도 사용불가

3.테이블 필터 조건으로만 사용가능

4.단, 인덱스 구성 컬럼 중 하나 이상이 Not Null 컬럼이면, 18c부터 인덱스 필터 조건 으로 사용 가능

WINDOW FUNATION 에서 OVER랑 같이쓰는 구문

1.RANGE UNBOUNDED PRECEDING

2.ROWS BETWEEN 1 PRECEDING AND 1  FOLLOWING

3.RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING

 

 

일단 이기능은 SQL전문가가이드 2과목에서 다루고있어서 알게된 기능인데. 그룹별로 누적된 값을 구할수 있고

여러 옵션값들로 범위에 제한을 둘수도 있다.

 

범위지정옵션으로는 RANGE , ROWS 가 있는데

둘의차이는 RANGE는 ORDER로 정렬된 칼럼중 같은값을 가지는 로우가 있다면 

묶어서 한번에 연산하지만 ROWS는 각로우마다 계산하여 준다.

 

 

1.RANGE UNBOUNDED PRECEDING : 현재 행을 기준으로 해서 파티션 내의 첫번째 행까지 범위를 지정한다.

 

 

위세가지 쿼리는 같은 결과값을 반환한다.

두번째쿼리는 오라클에서 동일하게 해석하고

세번째쿼리는 디폴트값이 적용되어 RANGE UNBOUNDED PRECEDING 가 적용된것이다.

 

쿼리 결과값을 보면 MGR로 파티션을 나눈것을 볼수있는데. 3번째행 JAMES부터 값들이 누적된것을 

볼수있다. WARDM,MARTIN을 보면 누적이 안되고 3450이 출력되었는데 이것은 같은

ORDER로 취급되어 같이 더해버려서 같은값이 출력된것이다. 

 

 

ORDER를 ENAME으로 바꿔서 쿼리를 작성했을때 정상적으로 누계가 되는것을 확인할수있다.

 

 

2.ROWS BETWEEN 1 PRECEDING AND 1  FOLLOWING : 현재 행을 기준으로 파티션내 앞뒤 한건씩을 범위로 지정

쿼리를 보면 MGR로 칼럼을 나누었다. 결과값을 보면 알수있듯이 

첫번째행(앞행) 마지막행(뒷행) 없어서 앞행or뒷행 만 포함되어 나누기 2를 하여 나온 결과값이다. 

 

 

위에것에서 비트윈 값을 바꾸어서 하면 어떻게될까?

동일하게 적용되지만 레코드를 다르게 가지고와 계산값이 달라진다.

TURNER 을 보면 앞행3(2까지밖에없음) 뒷행2인데  전체 평균값이 나온다.

MARTIN도 마찬가지다

 

3.RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING: 같은 파티션내 현재행부터 마지막행까지

 

 

몇가지 포인트를 정리하자면 

 

디폴트값 : RANGE UNBOUNDED PRECEDING 

 

시작어: RANGE or ROWS 

 

*BETWEEN에서 사용하는 구문 ( BETWEEN 을 지정하면 Start AND End 까지 범위지정 )

: CURRENT ROW : 현재 진행로우

: ROW PRECEDING : ROW에 입력된 개수 전 레코드 까지(BETWEEN 앞부분)

: ROW FOLLOWING : ROW에 입력된 개수 후 레코드 까지(BETWEEN 뒷부분)

 

+ Recent posts