퇴근5분전

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참조해서 사용했고,

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

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

 

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

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

 

 

 

화면 정의서 : UI디자인 후 저장된 이미지 위에 낙서.. 메모
UI 디자이너. 기본 컨트롤 몇개 ...

 

 디자이너를 이용해서 화면 기획을 할 수 있게 바꿨다.

나름 잘 나왔네...

 남은 일

     - 컨트롤 생성 : 트리, 챠트, 이미지, 툴바

     - 컨트롤 템플릿. ( 주로사용하는 컨트롤 모음을.... 저장?  )

     - 디자인 도우미 화면 ( 사용할 화면 컨트롤 생성 도구 )

     - ppt로 변환 작업

     ... 음... 그리고.. 하다보면 뭐 또 생각이 나겠지.

 

 몇일전부터 이런 저런 방법으로 기획하고 있던 프로그램을 이번에 이틀 쉬면서 만들었다.

원래는 전혀 다른 UI화면이었는데... 그간 만들었던 UI 디자이너의 주요컨트롤 기능이 어느정도 형태를 갖추어

그 내용을 담을 그릇을 결정해서 만들었다.

 

 "화면정의 프로그램"이라고 이름을 정했고. 형식은 ppt에 작성하는 화면정의서 처럼! 만들었다.

왼쪽엔 슬라이드처럼 주요 목록.  오른쪽엔 ppt화면처럼 화면정보.

화면정보에는 [메모(번호)], [설명], [낙서할수 있는 그림판( +페이지 기능 : 같은 페이지에 여러장 낙서가능 )].

   추가될 기능은 낙서판에 배경이미지 삽입기능 : 배경이미지를 배경으로 놓고 위에 그림을 그릴수 있다.

                      화면UI 디자이너 편집기능 : 화면 UI를 손쉽게 그릴수 있게 만들예정.

                                                       + 그려진 UI 요소 정보로 소스변환 기능도 추가할수 있게 만들예정.

 

화면정의 아이템 목록 관리
화면정의 아이템(전표발행) 관련 화면정의
화면정의서 화면에 낙서 기능, 메모기능, 설명

 

+++ 추가로 화면UI 디자이너에 들어갈 컨트롤모형

    각 컨트롤요소 모형임 ( X 는 visible = false일때 ),

   요소설정값들 저장 후 다시 로드하여 아래 그대로 재현성공.

위판넬 > 변환 >> 아래판넬에 다시 재현한 모습.