퇴근5분전

 이번 프로젝트를 며칠 진행하면서... 

이런게 있었으면 좋겠다. 라고 생각한게 있다. 

예전 국민은행 프로젝트 할때 BizFlow 인가를 만들었었는데... 

그건 플로우를 그려가면서 소스를 생성하는 거였다. 

 

이번건... 반대로 요구사항을 분석하기 위해 소스를 추적하면서 사용할 프로그램을 만들자. 

 

예를 들면, 로그인! 이라는 처리를 하기 위해

이런 다이어그램을 쉽게 입력하고 그리고 찾고 따라가고 하면... 

업무이해할때 좋지 않을까? C#이라면 그냥 프로그램 돌릴 생각하고 만들면 되는데... 

 java라서... 파서 구현하는게 더 오래걸릴듯... 

 

함수내에서 등록 할 작업(예. 아이디, 비번체크)들은 꼭 기록해야 할 내용들을 간략히 적어가면서 넘어가고...

중요한 로직이 들어있다면 상세히 기술하거나 호출되는 메소드로 바꿔 흐름을 따라갈수 있게 고치면 될듯 하다. 

 

퇴근해서 테스트 해본 것!!

 

Text로 입력받을 것이고

이것을 "FN:메서드,  FILE=경로0/경로1/파일명" 정규식으로 쪼개서 

 식 : fn:(?<fn>\w.*)(\s)*(\,)+?(\s)*file=(?<file>\w.+) 

 

fn=메서드, file=경로0/경로1/파일명  를 얻을 수 있도록 그룹지었다. 

 

Proc 

    - [ fn, comment ]

 각 fn들은 저장할때

  경로0/경로1/파일명 폴더 아래

      메서드.define 파일로 저장하자.

 

자료구조는 설계를 마쳤고, ui도 대략 그렸다. 간단한 데모로 만들고 실제로 프로젝트 분석하면서 써봐야 겠다. 

 

- 목표 : 여기까지 이번주 일요일까지 만들고 다음주 월요일은 실무에서 써보자!!

 

 데모로 전체 프로세스 추적을 하면 그려보고 DB를 호출하는 부분에 해당 테이블과 대상 컬럼들 정보를 기록하고, ERD를 부분조각으로 그릴 수 있도록 업그레이드하면 될것 같다. 

 

 

 

프로시저와 프로시저내에서 사용하는 테이블 정보!

만들어진 배경!!

 

개발하면서 항상 두개의 서버간 비교?가 필요한 상황이 온다.

개발/ 운영 서버, 또는 A개발 / B개발 서버 등... 

 

이때 이 프로그램을 이용하면 좋다. 

임시로 EXPRESS서버를 가동하고 커넥션 문자열을 바꾸어 윈도우 인증모드로 두개의 DB를 만들고 스샷을 찍었다. 

 

1. 두개의 DB에서 프로시저를 조회하여 보여준다.

    DB1에는 있지만 DB2에는 없는 상황.

2. 해당 프로시저가 사용하고 있는 테이블, 함수, 뷰 등을 중간 그리드에 보여준다. 

    DB2에 SP가 없으므로 종속된 테이블, 함수, 뷰등은 보여주지 않는다. 

3. 중간 그리드에 선택된 오브젝트에 대하여 DB1, DB2에 각각 있는지 표시해준다. 

 

기본적으로 수정일자를 표시하여 언제 최신 수정된 위치에 색칠을 해준다. 

* 세번째 그리드의 테이블 정보를 보면 DB2가 최근에 만들어진 것을 알 수 있다.

 

4. 첫번째 그리드에 적용을 누르면 프로시저 내용 및 DB2에 바로 적용이 가능하다. 

 

우측상단에 적용버튼을 클릭하면 반영됨.

.. 반영 후!

반영된 모습.

비교를 누르면!!  WinMergeU 나 비주얼 스튜디오나 Windiff같은 비교가능한 프로그램으로 내용을 보여준다.

비교된 모습

해당 테이블을 더블 클릭하면 테이블 스키마를 비교해서 보여준다. 

두개의 테이블 정보를 비교해 준다.

 

AM_SUPPLY는 DB1에는 있지만 DB2에는 없는 것을 확인할 수 있다.

 

왼쪽 (프로퍼티)추가, (설명)추가 버튼이 두개 보인다.  이걸 클릭하면 DB1 스키마 정보를 이용하여

DB2에 적용할 수 있도록 스크립트 구문이 클립보드로 복사된다. 

 컬럼수정 : ALTER TABLE TB_TEST ADD [AM_SUPPLY] numeric(18,2)

 컬럼설명 : EXEC SP_ADDEXTENDEDPROPERTY @NAME=N'MS_DESCRIPTION', @VALUE=N'금액', @LEVEL0TYPE=N'SCHEMA', @LEVEL0NAME=N'dbo',  @LEVEL1TYPE=N'TABLE', @LEVEL1NAME=N'TB_TEST', @LEVEL2TYPE=N'COLUMN', @LEVEL2NAME=N'AM_SUPPLY'

이 구문을 SSMS를 이용하여 반영하면 된다. 

 

컬럼 수정 된 결과

DB가 1개일때는 한쪽만 연결하고 써도 괜찮다. 다른 DB로 직접 전달하는 부분이 비활성화 되어 사용이 불가해질 뿐.

 

그럼... 이 프로그램 소개도 이만... 

https://youtu.be/yWpb4AxaVGE

내가 SI를 진행할때 항상 사용하는 프로그램 중 하나이다.

 

erp 화면들이라서 그리드가 많이 사용되어진다. 소스코드도 거의 그리드 위주로 작업이 되는데 이걸 타이핑하기는 너무 많고, 기존거 복사해서 수정하자니 오타우려도 있고 시간도 많이 걸린다. 

 그래서 자동으로 코드를 만들어주는 프로그램을 만들었었는데 계속 업데이트하며 UI를 몇번이나 바꿔가면서 여기까지 이르렀다.  최종본!!

 

 영상 촬영을 위해 원고 만들고 읽어보면서 엄청 줄여서 짧게 찍었다. 쉽지 않아.. ㅡ,.ㅡ;;

 셀병합에 약간에 오류가 있어서 조금전에 수정을 마쳤다. 

 

 소스에 주석이 거의 없어서... Git올리기 전에 주석을 좀 추가해놔야 될것 같다.  

- 객체검색 (수정) 이력(30개)관리

   : 일하다보면 객체(테이블, 프로시저, 함수)를 검색하게 되는데 이전 이력을 관리 안해서 다음날 다시 검색할때 이전 이력이 없어서 처음부터 찾아야 해서 불편했던 점을 개선하였음.

 

- 쿼리 저장소 ( 추가 )

   : 비주얼 스튜디오의 확장기능으로 추가했던 코드변환프로그램을 추가하여 살짝 수정하여 sql query를 관리하는 기능을 추가하였다. 파일로 저장하고 열고 하여도 되지만...

 

ssms

   오른쪽 [코드변환 템플릿 목록] 창에서 저장된 쿼리는 더블클릭하면 편집창으로 바로 들어감.

 

- 쿼리 임시백업 ( 추가 )

   : 테스트 중인 쿼리를 임시백업 가능 ( 편집창에서 우측버튼 클릭시 백업(임시저장) 메뉴가 나오며 클릭하면 - 파일로 저장 )

   :  [코드변환 템플릿 목록] 에서 [<] 버튼 클릭시 백업된 쿼리를 편집창으로 바로 들어감.

     - 별도의 관리되어 목록에 표시되지 않음.

  

 

 

JSFW] 변수 사용 흐름 보는 프로그램( 완성 버젼 )

 

JSFW] 변수 사용 흐름 보는 프로그램( 완성 버젼 )

문자열 파싱이 쉽지는 않넹... 주석문관련해서 다양한 형태의 주석문에 대해 처리가 안되어... 변수의 사용 소스를 제대로 못가져올때가 있어서 겨우 수정을 마치고 잘 쓰고 있다.

 

기존에 C#만 지원하던 것을 VB.NET을 추가.

이번 플젝도 VB.NET이라... ( vb.net을 1년을 하게 되다니.. )

추가 안하려다가 시작전에 vb.net을 추가하였는데 스트레스... 오우--

 

C#은 소스자체를 직접 문자열로 탐색하면서 영향이 있는 부분을 찾는데

VB.NET은 로슬린을 이용해보기로 맘먹고 누겟으로 추가함.

 Microsoft.CodeAnalysis.dll  
 Microsoft.CodeAnalysis.VisualBasic.dll

하나의 vsix에 대상 프로그래밍 언어에 따라 각각 동작하게 만들려고 기존 소스에 구겨넣음.

디버깅하면서 이상한 현상이 발생함.

Microsoft.CodeAnalysis.VisualBasic.dll 의 종속된 파일들이 없다고 뜸. ( 참조되어 있는데... )

몇시간 개고생하다가 발견. ( 중간에 엉뚱한 방법도 고민해봄. )

로컬에 웹서비스를 돌려서 대상 소스경로를 보내고 분석을 웹서비스로 결과를 받아서 뿌리는 방식을 고민.

그러다가 디버깅을 띄워놓고 디버깅될때 배치되는 폴더( vs2019 아래 위치 )
C:\Users{사용자계정}\AppData\Local\Microsoft\VisualStudio\16.0_8f3db510Exp\Extensions\지송닷넷\JSFW.VS.Extensibility2019.VariableUsingView\1.0\ 폴더에 dll붙여놓고 기능테스트를 해보니 정상동작!!!

 

 다시 디버깅을 띄우니 dll이 사라지는 것을 발견하고, 구글링~~~

   source.extension.vsixmanifest 에서 Asset에서 dll을 직접 추가.

       https://social.msdn.microsoft.com/Forums/sqlserver/en-US/e59b527b-a683-40ea-9a25-5d7acbb48074/how-to-add-referenced-dlls-to-vsix?forum=vsx

 

How to add referenced DLLs to VSIX?

Hi, thanks for the response. I know about this already, but it has the disadvantage that I need to add all referenced DLLs manually. In contrast, I want Visual Studio to automatically add all dlls (which are marked as "copy local") to the VSIX container. T

social.msdn.microsoft.com

 VB.NET도 잘 되고 C#도 잘되고...

소스상에서 변수가 사용되어지고 있는 부분만을 뽑아내서 보여줌.

 

vb.net 기본소스(좌측)에서 "button1" 사용처를 뽑아서 표시(우측)

 

 

 

 

 

메뉴 관리

 

PL이 일을 요청할때

   "A작업을 A, B, C...N화면에 모두 적용해주세요"

라고 전달해온다.

 

초반에 일을 각 화면별로 등록해서 처리 했었으나... 복잡하고 귀찮네... 그래서 메뉴관리를 추가했다.

해당 작업을 [완료]하게 되면 >> 해당 메뉴별로 작업이력을 쪼개서 저장한다.

 

나중에 메뉴별로 이력조회를 하면 메뉴별로 어떤일들이 차례로 적용이 되었는지 알 수 있다.

 

 일단 ppt변환 개발을 하기전에...

회사에서 20여개 화면을 그려봤다. 굉장히 빠른시간에 볼만하게 그려진다.

 

다 그려놓고... 뭔가 허전한? 생각이 드는데...

 

 분명 목적은 내가 PL이 되면 개발자에게 분석된 개발내용을 쉽게 전달하기 위함이었고, 또 변경을 쉽게 하고자 했는데...

화면정의서의 역할을 제외하고는 정말 쓸모가 있는 것일까???

이거면 정말 개발자가 보고 쉽게 개발을 시작할 수 있을까?

 

 음 PL에게서 온 개발 문서들을 보며 화면을 그려볼까 했는데... 뭐 제대로 온게 있어야지...

온것들은 모두 ToDo 프로그램에 정리 되어 있는 상태이다.

 

그래서 예전에 만들었던 기능 하나를 우선 추가해봤다.

기능목록 관리 모듈을 추가해 넣었다.

 

 설전까지 이런 고민이 계속 될것 같다.

 

 

 

 

 컨트롤 미개발 되었던 , 챠트, 이미지, 트리 개발 끝. ( 툴바는... 템플릿 기능을 추가해서 생성안함 )

. 여러컨트롤 선택후 복사 기능추가

. 템플릿 저장기능

. 그리드 열정보 표시 기능 개발 ( 병합된 행으로 볼수 있게 표시해놓음. 열정보에 대해서는 추가 필요. )

. 메모 번호만 제공하던 기능을 > 더블클릭하면 텍스트형태로 변경되어 반투명으로 화면에 표시!

. 낙서 잠금기능 추가.

 

 

디자이너 사용하는 컨트롤 모음.
낙서, 메모(두가지 타입) 적용 캡쳐.

 화면정의할때 그리드의 컬럼 정보를 어떻게 보여줄까?? 라고 고민을 많이 해봤고

구글에 검색도 많이 해봤지만... 딱히 안떠오르다가 오늘 생각이 나서 만들었다.

 

 구글에서 검색하면 화면정의 관련해서 그리드에 열의 갯수는 딱 화면에 꽉찬 샘플만 보여진다.

스크롤 생길정도로 많이 안보이니까, 그룹웨어나 ERP같은 열이 몇십개씩 되는 화면에 대한 정의에서는

과연 어떻게 표시하는 것이 좋을까???

 

 아래는 구현 결과이다.

  : merge된 열정보를 보여주면서 컬럼과 header명을 원래는 같이 표시하고 있다.(샘플용이라 입력할때 header만 입력)

  : 또한 각 열정보에 맞춰 읽기전용, 필수컬럼, 숨김컬럼, 고정열, 합계 같은 내역도 별도 표시하고 있다.

 

아래는 한글/ 영어/ 숫자 이렇게 잘려서 보이지만. 화면 크기를 계산하여 들어가는 정보대로 뿌려준다.

그리드의 컬럼정보가 보여지는 모습.
화면크기가 커져서 [숫자]가 위로 올라와 옆으로 나열되었다.

 

그리드 컬럼 정보

 

딱 기본적인것만 우선...

 

 아직 챠트나, 이미지, 트리, 툴바에 대해서는 작업 시작을 못했지만...

지금 만들어진 기본적인것들만 우선 수정을 많이 했다.

 

 샘플로 테스트 해보니. 처음부터 모두 만드는 일보다는 있는거 복사해서 수정하는 일이 더 많을 것 같아서

만든 [가져오기],   버튼에 기본적으로 사용하는 이미지추가,

판넬은 기본 판넬로도 쓰지만 그룹판넬로도 사용가능.

텍스트 박스는 입력되는 데이타 타입을 구분해서 선택하도록 했고,

달력은 보통 일자, 년월, 년도 를 받기에 세가지만 우선 추가.

그리드는 그리드 디자이너를 수정해서 dll참조해서 사용했고,

라벨은 기본 색상과 대충 몇가지 색상 찍어서 선택가능하게 제한 걸고,

필수여부 표시를 *로 표시처리했다. 밑줄로 하니... 색상에 따라 좀 눈에 안들어온다.

 

집에오면 잔버그들 잡고... 

오늘도 고생했다. 내일도 힘내자.