퇴근5분전

 

  오늘도 하루를 고스란히 날렸네... 

 작업한거 아침에 파일 비교 후에 모두 커밋하고, 다른 분들 작업한걸 받으려고 이클립스에서 update 받았다. 

 

빌드하고 띄울땐 잘 떴는데...  데이타 입력하고 보니 데이타가 한글이 깨져버렸다... 오잉? 

겁나 웃긴게 다른던 멀쩡한데 이름만 깨져서 나온다?... 특정 필드만?.... 왜?? DB업데이트를 해도.. 화면은 여전히 깨진다..

 찾다가 이유를 모르니... svn을 통째로 다시 내려받았다. 일단은 캐시가 구현되어 있는데 이것 때문인것 같다는 추측만... 

 

svn을 통째려 다시 받으면서 부터 또... 톰캣이 말썽이네... 

로딩이 되면서 갑자기 에러가 발생하더니... 건너뛰고 서버가 실행!...

특정 화면들이 오류가 나서 해볼수가 없네... 에러 로그로 구글링을 했지만... 해결이 안되어 

지우고 다시 받고, 프로젝트 클린, 톰캣클린등을 했지만.. 안되었다. 

 

 5시에 결국엔 몽땅 삭제! 처음부터 재 구축... 20분 정도 걸려서 다시 뜨는 것도 확인. 아~ 씨박~ 

뭐가 문제일까? ..... 

 

 이번 프로젝트가 완전히 새로만드는 si가 아니고 있는거 수정하고 신규화면 만드는거라서 더욱 짜증나네. 

코드는 별로 칠것도 없는데... 다른데 시간이 다 날아간다네... 아우 머리아파...... 

 이러다가 야근하게 생겼네... 짜증나네 java..... 

 한달동안 몇차례 본 에런데... 대응이 안되네...... 

 

 

 워~~~ 거의 한달간 소스를 힘들게 살펴봤다. 눈치 겁나보면서... 시간을 한달동안 사용하면서 결과물을 안뽑고 있으니... 

내가 의례 눈치를 보게 됨... 잘려서 나갈까?도 생각해본 프로젝트임...  

 자바개발을 몇년을 한 사람은 이소스가 쉬울까? 라는 생각을 매일 매일 해본다. 

요청사항 하나도 개발도 진행중인데... 내일 트리 하나 팝업해서 붙이면 될 듯... 

이건 있는거 복사는거라 오래 안걸림. 

 

 별에 별 오류를 다 만나봤는데... 너무 빡시다. 

오늘은 maven 오류 휘말려서 2시간정도 날린듯 하다. 

특정 위치의 소스를 고친 시점에서 euc-kr로 인코딩된 소스가 보여준 오류로 인해... 

1시간정도 똥꼬쑈를 하다가...  해결방법을 찾아서 빌드도 잘 되었는데... 이게 맞는지 원래 있던분에게 물었더니...

맞긴한데 원래 그 부분의 소스는 메모장같은데서 수정, 저장하고 이클립스에서 다시 올라오면 빌드해서 개발진행을 한다네... 인코딩 원래 문제가 이클립스 사용하면 많이 문제가 되었나보다. 검색하니 참 많이 나왔지만, 나한테 도움되는건 못찾았다. 해결방법은 해당 파일의 인코딩설정을 euc-kr로 바꾸고 수정/저장하는 것이었다. 

소스에 한글들이 특수문자로 깨져 있던 이유가 그래서였나보다... 어쩐지 메모장으로 열면 한글도 잘 보이더라...

 -> 똥꼬쇼의 시작은... 메모장에서 소스를 열어서 수정하고 한글을 유지시키기 위해 복사해서 이클립스로 붙여넣었다.

 

 다음 똥꼬쇼는 maven 빌드!!!

소스를 고친 후 빌드하고 .jar파일을 다른 프로젝트에 옮겨주면서 부터 갑자기 빌드 에러가 나기 시작했다. 

정말 황당하게도... 딱 그 시점과 맞아 떨어져서...? 슈발~~~~ 

 일단 maven관련해서 아무리 뒤져도 에러날게 없는데? 고쳤던 소스빌드는 정상으로 되었다. 

이 jar파일을 옮겨서 덮어씌운 프로젝트가 에러가... 

 2시간 개고생하다가 안되서 help~ 날렸더니... 다른 분들도 난다? 

 maven이 원격지 pom도 참조가 되는건가? 그 원격지pom 다운로드하면서 빌드오류가 나는데???

결론은 : 저쪽에 서버가 닫혔나보다? 라면서 offline으로 빌드하는 방법을 배웠다. 오~ 이렇게도 되나보다...

 

 이렇게 두번째 똥꼬쇼가 끝나고 개발된 기능을 확인받았으나... 내가 잘 못 이해한것으로.. 기능을 추가해야 한다. 

내일 오전에 마무리 하고... 한달동안 똥꼬쇼의 기록을 회사 위키에 올리면 이번주는 끝날듯 하다. 

 

 이제부턴 구두로 지시 받으면 내가 그려서 컨펌받고... 시작하려 한다. 

더 많이 살펴보거나 할건 DB뿐인데... 미리 설명해 줄 사람도 ERD도 없다. 원래 계시던 분들에게 귓동냥을... 

개발을 신속하게... 후딱 후딱!!! 

 

----------------------------------------------------------------------------------------------------------------------

또 하나의 똥꼬쇼... 

 내 노트북은 8G램을 가졌다. 닷넷개발할땐 전혀 부족함을 느껴본적 없는 그런 노트북이었는데... 

자바 이클립스, sql developer, ppt 두개, 크롬창 두세개, 내 개발 프로그램 2~3개 띄웠더니..

첨엔 6.8G정도 먹었다. 이클립스에서 톰캣을 켜니까.. 7.2 정도 되다가 브레이크 걸고 몇번 돌리니까 

첨엔 괜찮다가... 가끔 톰캣 로그에서 에러가 주르륵 올라갔었다. 에러 내용은 빈을 읽어오지 못해서

어쩌고 저쩌고... 새로고침을 해라? 그런 메세지였다. 거의 한달간 이걸로 시달리다가... 

 

램이 부족한가?? 라는 생각으로 갔다. 가만히 있어도.. 톰캣에서 에러가 한번 떠버리면...

뭐가 망가지는지.. 몽땅 클린하고 다시 빌드해서 띄워야 뜬다. 

 

 8G짜리 램을 하나 사서 꼽았다. 노트북 특성상 4G는 온보드에 있어서 못갈아끼고... 4G빼고 8G넣어 12G가 되었다. 

어제 오늘 해보니까. 위처럼 켜니까 8.5G정도로 그냥 올라온다. 종일 빌드하고 테스트 하면서 지켜보니 10.5G까지 

올라오는데 그래도 톰캣이 꺼지거나 하진 않는다. 다만, 중간 중간 pc가 멈춘다? 라는 느낌? 

마우스가 갑자기 사라진다? ... 그래서 마우스 커서도 빨간색으로 바꿨다. 

 

 자바플젝을 위해 노트북을 바꿔야 되나??

 

 

'--- 취미 > 생각하기' 카테고리의 다른 글

우아... 피곤하다 ㅠㅠ.  (0) 2022.12.21
진보? 업자들... ㅆㅂ....  (0) 2022.12.12
서피스의 활용!!  (0) 2022.11.28
태블릿 거치대...  (0) 2022.11.28
업무 분석중에...  (0) 2022.11.22

 

오늘부터 드디어 자바로 된 프로젝트에 코딩을 시작했다. 

3주간 소스코드 분석하면서 내 프로젝트 툴 관련 소스들 정비하면서도... 

9년만에? 하는 자바프로젝트라 걱정이 되긴 했는데... 

막상 시작하고 삽질로 시작해서 희망이 보였다. 

 

 이클립스에서 톰캣 디버깅 모드에서 수정하고 자동빌드모드로 두니까 좀 기다리니 재배포를 기다리면 알아서 되더랑.. 

VS처럼 빠르진 않지만.. 느릿 느릿... 해도 되는게 어디냥...  어제까지만 해도 안되는것 같아서 포기했는데... 

그래서 소스 수정하면 톰캣 다시 올리곤 했는데... 오늘 몇가지 설정 바꾸니 되더랑 ㅠㅠ;

 

 그간 말썽 부리던 로그 남기는 것도... 추가한 로그도 잘 쌓이고 보이면서... 위에 설명하듯이 톰캣에 자동빌드되어 배포되니까... 느릿 느릿해도... 귀찮은 짓은 안해도 될 것 같았다. 

 

 퇴근전에 확인하다가 걸리는게 하나... 

db 로그를 보다가 하나 실행하려니까 파라미터가 20여개? 즘 되는 쿼리...가 돌았는데...

로그가 가관이었음 ㅠㅠ;

 

쿼리 ~~~~~~~~~~~~ 엄청 길고... 중간 중간 파라미터로 '?' 로 위치 박혀있고... 

별도로 아래라인에 파라미터가 [ x, xx, xxx, ... ] 이렇게 있는 거 보고.. 헉...... 

 일단 순차적으로 손으로 일일이 바꿔서 보고... 쿼리를 돌려서 결과 확인을 했다. 

안그래도 문서도 없는 깜깜이 플젝인데... 쿼리도 쉽게 못돌리면... ?

 

오라클은 프로파일러 거는게... ms같지 않으니... 포기하고... 문자열 치환하자!!!

/////////////////////////////////// 변환 소스 ////////////////////////////////////////

string qry = @"
    -- ?가 박혀있는 로그에 기록된 쿼리 문장.
";

            // 이건 파라미터... n개~
            string strPrms = "AAAA, BBBB, CCCC, DDD, EEEEE, FFFFF, GGGGG";
            string[] prms = strPrms.Split(',');             
            string result = qry;             

            // 생각나는 ? 주변에 있어도 될 문자들..
            string[] validString = new string[] { "", ",", " ", "\n", "\r", "(", ")" }; 

            int index = 0;
            for (int loop = 0; loop < prms.Length; loop++)
            {
                string x = prms[loop];
                int idx = -1;
                do
                {
                    idx = result.IndexOf('?', index );
                    if (0 < idx && idx < result.Length)
                    {
                        if (result[idx] == '?')
                        {
                            //앞, 뒤 체크
                            string pre = $"{result[idx - 1]}";
                            string next = "";
                            if (idx < (result.Length - 1))
                            {
                                next = $"{result[idx + 1]}";
                            }

                            if (validString.Contains(pre) && validString.Contains(next))
                            {
                                result = result.Remove(idx, "?".Length);
                                result = result.Insert(idx, x);
                                index += x.Length;
                                break;
                            }
                        }
                        index = idx + 1;
                    }
                    else
                    {
                        break;
                    }
                }
                while (0 < idx && idx < result.Length);
            }

 

최종적으로 result는 ?와 파라미터가 치환된 쿼리!!!

특별한 예외 없이 잘 된다. 내일 쿼리 스냅샷 프로젝트에 변환 툴로 넣어놔야겠다.

 

-------------- 추가 -------------

로그 검색 프로그램쪽으로 별도 팝업으로 만들어놨다. 

 

쿼리를 돌리면 문자열에 홀따옴표가 없는 채로 들어가니까 에러가 날때가 있는데 

우선은 그때 찾아서 홀따옴표 넣어주는걸로 생각하면서 사용하면 된다. 

 

 

  음 오늘도 열심히 시스템 소스 분석을 하다보니... 

이걸 이렇게 쓰면 좋겠다 싶어서... 

요청을 하는 index에서 서버에 요청을 하면 controller가 받아서 db데이타를 가져다 모델을 만들고 view를 반환 하면.. 

index는 받아서 view를 엘리먼트에 load() 한다... 라는 흐름은 위처럼 표시해주는게 보기 좋을듯 하여... 

-----------------------------------

fn:index, file:메인
...어떤 처리를 하고..
...메뉴중에...
//MVC에서 Controller를 호출하기 위한 클릭!
fn:requestPage, ref:Controller
받은 view를 어느 dom에 Load(html)
fn:생성, ref:View화면
#종료

-----------------------------------

fn:requestPage, file:Controller
//요청받은 파라미터로 모델을 만든다. 
fn:getModel, ref:DataBaseLayer
@모델을 받고
@return View화면!

-----------------------------------

fn:getModel, file:DataBaseLayer
//DB에서 어떤 데이타를 조회하여 
//모델을 만들어 반환한다.
!return 모델

-----------------------------------

fn:생성, file:View화면
!경고...
@주황...
#???
//주석
일반(검정)

-----------------------------------

이런식으로 작성하면... 될 듯하다.

 

 DB 를 어찌 표현해준다... DB를 별도 프로그램에 띄우면 한번에 안보이는데... 

 

 흐름을 쫒아서 view반환이 오른쪽 끝으로 가버리면 컨트롤이랑 레벨이 안맞는것 같다는 느낌이 들었다. 

소스를 추적하면서 간단히 정리하는데만 사용중이지만... 

 기능 자체를 너무 길게 그리면 보기 어려워지는 단점이??

또 한번에 하나만 보이니까... 멀티로 보는 방법을 생각하든가 아니면 LINK: 를 추가해볼까 한다. 

링크로 처리된 부분은 클릭하면 해당 링크가 팝업이나 뷰 자체를 바꿔주는 방법으로... 생각해볼까 한다. 

 

 추가 -------------------------------------------------------------------------------------------- 11-30

 

//테스트 사이트 : http://regexstorm.net/tester

 

.NET Regex Tester - Regex Storm

Home Tester Reference About

regexstorm.net

 //테스트 문자열

 // fn:함수. a!@#$%^&*(()_-+=\\<>,a a , file:파일.111/\ !@#$%^&-=~*()! \fff, ref:r파asdf일, prj:프로젝트, link:기능함


 //fn(\s)*(:|=)(\s)*(?<fn>\w+(\>|\<|\~|\+|\=|\-|\)|\(|\^|\*|\&|\%|\$|\#|\@|\!+|\\+|\/+|\s+|\.*\w*|(?=\,))*)
 //file(\s)*(:|=)(\s)*(?<file>\w+(\>|\<|\~|\+|\=|\-|\)|\(|\^|\*|\&|\%|\$|\#|\@|\!+|\\+|\/+|\s+|\.*\w*|(?=\,))*)        
 //ref(\s)*(:|=)(\s)*(?<ref>\w+(\>|\<|\~|\+|\=|\-|\)|\(|\^|\*|\&|\%|\$|\#|\@|\!+|\\+|\/+|\s+|\.*\w*|(?=\,))*)
 //proj(\s)*(:|=)(\s)*(?<proj>\w+(\>|\<|\~|\+|\=|\-|\)|\(|\^|\*|\&|\%|\$|\#|\@|\!+|\\+|\/+|\s+|\.*\w*|(?=\,))*)
 //link(\s)*(:|=)(\s)*(?<link>\w+(\>|\<|\~|\+|\=|\-|\)|\(|\^|\*|\&|\%|\$|\#|\@|\!+|\\+|\/+|\s+|\.*\w*|(?=\,))*)

 

프로젝트, 링크 등을 추가 할수 있는 정규식.

저녁에 와서 정규식 테스트만 했다. 

전에 쓰던건 fn, ref|file 만 필터링 했던 테스트 문장이었으나... 차라리 문자열에서 위 정규식 5개를 적용해서 값을

꺼내는게 나을듯 하다.  복합적으로 그룹지어서 뽑으려니까 예외상황의 문자열을 못 뽑아내더라...

위 구문도 정답은 아닌듯... 일단 써야지.. 

 

 프로젝트 별로 하위 파일목록을 관리하면 어떨까 해서... 고민중이다. 

회사에서 프로젝트만 구분해서 해봤는데... 

 

------------------------ 22년 12월 08일 추가.

 

 (\s)*(?<=[,])(\s)*  키워드 앞에 추가하였다. 전방탐색!

document.location.href : xxxxxxxxxxxx.jsp

json파일 내용 일부를 붙였더니 함수로 판단을 해서 

함수로 그려버렸다. 

키워드 앞에 콤마(,)를 탐색! 또는 공백(\s)이 있으면 포함해서 찾는다.

다른 기호들이 들어오면 패턴 불일치로 일반 컨텐츠로 판단한다. 

정상적으로 시작하는 fn도 못찾네...

이번에 큰맘 먹고 서피스를 구매했다. 

 

JSFW.FunctionConnection 을 위해서기도 하고...

그동안 미뤄두었던 JSFW.ScreenDefinition 프로그램을 업그레이드 하기 위해... 

터치환경에서 제대로 사용 및 개발을 안해봤기에... 

 

 모바일이나 이런것도 터치위주의 사용성을 체크해보려면 아무래도 하나 있었으면 해서... 

전에 산 레노버2in1 은 윈10깔려있는데 제대로 윈도우뜨는게 기적일정도로 느리다. 

처음부터 느렸는데... 왜 윈10을 깔고 파는걸까?... 이해가 안되네... 너무 느려서 못쓰고 있다. 

 

 서피스 키보드와 펜이 헉 소리날정도로라... 

펜으로 조작하면 손 인식을 안하려나? ... 

 

 무선 블루투스 키보드를 하나 구매해서 같이 들고 다니면서 입력장치로 활용해볼 생각인데... 

마땅한게 없넹... 방향키까지만 있는 블루투스 되는 건 화살표키들이 너무 모여있고... 

기계식처럼 생긴건 안보이넹... 기계식을 사서 써야 하나... 사무실 작은데 그걸로 타이핑하면 너무 민폐되는거 아닌가? 

 

 그나저나... 스프링... log4j2 는 왜 로그가 안남냐... 

ㅡ.ㅡ;;; log4net 으로 수많은 로깅작업을 해왔지만... 

며칠째 감도 못잡고 있넹... 분명 설정은 맞는데... 돌리면 로그가 없엉... 

10초 30초 1분 각각 수정시각 비교해서 추출해서 확인해도 로그가 안보이네...

★ 까지 찍어서 보는데...  이러면 곤란한데... 

 

 12월 1일부터는 개발들어가야 하는데... 아직 이클립스 환경적응이 안되네 ㅠㅠ. 

'--- 취미 > 생각하기' 카테고리의 다른 글

진보? 업자들... ㅆㅂ....  (0) 2022.12.12
자바 플젝하면서의 삽질???  (0) 2022.12.07
태블릿 거치대...  (0) 2022.11.28
업무 분석중에...  (0) 2022.11.22
다음 뉴스에서 또 댓글 차단당했다.  (0) 2022.11.14

http://item.gmarket.co.kr/Item?goodscode=1957288337 

 

G마켓-제우스랩 태블릿 휴대폰 아이패드 핸드폰거...

29,200원

item.gmarket.co.kr

 

이번에 산 서피스가 들어간다. 원래는 포터블 모니터 장착하려고 샀는데... 포터블 사용을 못하고 있어서... ㅠㅠ

 

16~26cm까지 늘어나서 고정이 된다.

 

마감도 깔끔하고 벽에 고정은 안해봤지만... 

 

추가: 색상변경.

 

색상관련해서 ... 조카의 도움을 좀 받고...

배경이나 라인 색상을 좀 바꾸고... 

주의성 문구, 파라미터, 주석, 반환타입관련 색상 수정!! 

-----------------------------------------------------------------------------------------------------------------------------------

 

 일단... 1차 개발로 아래처럼 나오도록 개발은 완료 했다. 

프로젝트 업무 파악하면서 호출 흐름을 기록할 수 있다.

 

입력편의성을 위해 'text' 문자열로만 작성하여 그 데이타를 기반으로 아래처럼 그려준다.

 

입력화면이다. 

텍스트를 작성... 마우스는 필요없고... 소스 보면서 무지성 타이핑으로... 

 

#fn:btnEdit_Click, File:/JSFW.GridDesigner/DesignForm.cs <- fn:{함수명}, file:{파일} 입력 기준
// 파일명 체크
.fn:Edit, ref:/JSFW.GridDesignerCommon/GridSettings.cs <- fn:{함수명}, ref:{파일} 입력 기준 여기서F12를 누르면!!!(1)
// 그리드 정보 초기화.
// 표시되는 그리드에 변경된 내용 적용

 

#fn:Edit,file:/JSFW.GridDesignerCommon/GridSettings.cs
.fn:ShowDialog, ref:/JSFW.GridDesignerCommon/SourceGridDll/GridEditForm.cs
// 그리드 설정을 하고.. 
// [적용]버튼을 클릭
.fn:btnApply_Click, ref:/JSFW.GridDesignerCommon/SourceGridDll/GridEditForm.cs
// 변경된 그리드 정보 적용

...

 

(1) F12를 누르면 작성된 fn: , file: 부분이 있으면 커서 이동.

      작성된 곳이 없으면 새 textBox를 만들고 거기에 fn: , file:을 만들고 커서 이동.

 

file:또는 ref: 를 입력하고 파일명을 치면 우측 리스트 박스에 해당 이름이 포함된 검색결과가 나타난다.

나타난 결과를 더블클릭하거나 [Ctrl + Enter]를 치면 바로 들어간다.

 [파일명 목록 새로고침]에 특정 경로와 파일확장자를 넣으면 대상을 검색해서 가지고 있게 된다. 

 1회만 하면 된다. 

  Dictionary<string, string> targetFolders = new Dictionary<string, string> {
                //{ "경로", "*.cs|*.xml" }
  };

 이런 형태로 등록하면 된다. 

 

입력중에 텍스트 박스에 내용을 모두 지우고 포커스를 빼면, 자동 삭제된다.

 

text 작성 중에는 별도의 마우스 조작이 있으면 안될 것 같아서 단축키를 지원하고, 

마우스 조작을 최소화 하였다. 

 

2차 업그레이드는 현재의 프로젝트가 끝나면(내년 10월 이후) 생각나면??? 

1. Link: 같은걸로 다른 저장된 함수랑 연결해서... 하이퍼 링크 같은걸 지원하면 ... 어떨까? 싶다.

2. 시퀀스 다이어그램 처럼.. 오브젝트를 일렬로 세워?... 

 

이런 형태나... 

이런 형태도... 고민해봤다... 

 

지금은...

시작 ---------> 호출 ----------> 호출 ----------> 호출 ------------> 종료 

이런 형태라서.. mvc에서 클릭요청 이벤트를 따라가면 view반환은 오른쪽에서 보인다. 

호출되는 순서대로 쭉~~ 따라가서 끝에 이르면 원래의 목적의 뷰를 반환해주는 형태로 그려지기 때문에... 

 

 

지금 그려지는 모습은

Controller의 제일 아래보면 ref=생성 >> View화면 쪽으로 화살표...를 그려준다. 

그 View화면에서도 처리 할 일들에 대한 기록을 남겨준다. javascript도 있고. 중요한 화면 이슈도 있을테니...

그리고 ref=생서 앞에는 녹색의 화살표로 원래 Controller.requestPage를 호출한 ref=requestPage쪽으로

되돌아가는 화살표를 그렸다. 

 

몇개의 기록들을 하면서 소스흐름을 따라가보니... 자유도가 높아서 괜찮은듯... 

파라미터와 반환값을 기록 하려다가? 이것도 쓰기 나름인데... 너무 자세히 기록하면 사용감이 피곤해질듯... 

그래도 필요하면!!

fn:함수, file:파일

@param1

@param2

@paramN...

#returnValue

형태로 기록 해두어도 괜찮을 것 같긴하다.

 

!, @, #, //  <-- 각각의 지정한 색상이 있다. 

 

일단 회사에서 소스분석용 데이타를 넣고 보니.. 옅은색이긴 하지만 화살표가 왔다 갔다... 정신없고

색이 너무 많은듯 한데...? 

 

음... 오늘 퇴근전 3시간정도 생쑈하면서 끝내 안되었던게...

 

집에서 검색하다보니 2013년에 내 블로그에 있네?  9년만에 똑같은 일로 또 이러고 있었다뉘... 

 

그래도 그땐 저걸 풀었네? 와~~ 

 

https://aseuka.tistory.com/entry/%EB%B3%80%ED%99%98-Unicode-%ED%95%9C%EA%B8%80

 

변환] Unicode <--> 한글

이번 자바 작업중에 유니코드를 다루는게 있어서... VS Express 설치해서 변환툴을 만들때 사용한 코드임! ## 한글 -> 유니코드 string txt = UniCodeText.Text; string resultUniCode = ""; foreach (char s in txt.ToCharArray(

aseuka.tistory.com

 

이거 자바 할때니까... 똑같은 문제로 개고생하고 있었네 ㅠㅠ; 

이번이 자바 프로젝트가 두번째라는 것!

 

자바의 .properties를 쉽게 찾아서 쓰려고 사전처럼 만들어 검색을 하려고 .net으로 읽어들였더니... 변화도 안되고 

 

이클립스에서 읽은걸 복사해서 써도 되긴한데... 소스에서 변경하면 일일이 붙여줘야 하니까... 

그냥 소스파일을 그대로 읽어서 검색을 만들려 했더니... 

 c#으로 읽어들였더니 한글이 \\uacb0 이런 코드로 보이다니... 인코딩을 별짓을 다 해봐도 안되고... 

 

-- 진짜 황당한 일은... 

str은 파일에서 읽은 것이다. ttt는 직접 박았더니 저렇게 나와서...  갑자기 머리속이 생각을 멈췄다! ...

 

내일은 또 업무파악해야지... 쉽지 않은 프로젝트가 될것 같은데? 

 

추가.. 

사전 처럼 만들었다. 그리고 코드조각 만드는것도 ... 

   <fmt:message var="${}"  Key="xxxx" />

   <spring:message code="xxxx" /> 

이런 식이었는데... 

 

 

 자바 스프링을 보고 있다. 2주 정도 봤는데... 이미 셋팅된걸 가지고 보는거라...

초기 설정을 어찌해야 되는지는 모르겠고...  프론트 쪽 개발을 위해 소스를 따라가는데 복잡하긴 하다... 

이렇게 복잡하게 개발을 해놓을 필요가 있었을까? 또 쪼개서 보다보면 이유를 알것도 같은데... 

초기에 개발할때 일정을 화면 하나에 2주 정도는 줬을까? 2주도 빡실것 같긴한데... 

 

 어쨌든... 함수 연결 프로그램으로 나름 열심히 따라가고 있다. 

친구가 얘기하길 콜그래프? 이런게 있다는데? 이건 메모도 안되는것 같고...

특정 시점부터 잘라서 보는 것도 안되는것 같고... 

 

 오늘부터는 DB를 열어서 이제 쿼리를 보고 있다. 로그 보면서 디버깅을 하고 있는데... 

 

어제 자기전에 생각난게 있다. 화면 UI에서 버튼을 클릭하고 누를때 db의 변화를 덤프떠서

보듯이 한다면 업무이해나 디버깅에 좋지 않을까? 

 1. 프로그램에 조회 쿼리문을 등록한다.

 2. 해당 쿼리로 조회를 할때마다 결과를 기록을 남긴다.

 3. 화면 기능 테스트를 하면서 등록한 쿼리로 결과를 계속 남겨둔다. 

 4. 테스트가 끝났을때 쿼리 데이타 기록을 한눈에 어떻게 변화 한건지 본다. 

  - 필요한 경우 변화된 내용에 대한 메모도 해두면 나중에... 볼 수 있을 것 같다. 

 

 업무 파악하다가 몇가지 더 생각났는데... 주객이 전도될까봐... 나중에 하자.. 나중에..... 

전에 구현했던게 있으니.. 

https://aseuka.tistory.com/entry/%EC%BB%A8%ED%8A%B8%EB%A1%A4-%EB%B0%B0%EC%9C%A8-%EC%A1%B0%EC%A0%95-%EA%B3%B5%EC%8B%9D

 

컨트롤 배율 조정 공식...

ZoomInOut을 구현했는데... int[] factors = { 50, 100, 200 }; 을 combo에 넣고 옛날 값 = 100; 으로 초기값 사용. 현재 선택된 Factor = 50; { float 조정배율 = 현재값/ 옛날값 ; Control.Scale( new SizeF( 조정배율 , 조정배

aseuka.tistory.com

int factorIndex = 4;
float[] factors = new float[] { 0.2f, 0.4f, 0.6f, 0.8f, 1f, 1.2f, 1.4f, 1.6f, 1.8f, 2f, }; // 20 ~ 200%
float oldSizeFactor = 1f;

 

- ZoomOut

factorIndex--;
if (factorIndex < 0) factorIndex = 0;              
pnlBoard.Scale(new SizeF(  factors[factorIndex] / oldSizeFactor,   factors[factorIndex] / oldSizeFactor));

pnlBoard.Invalidate();
oldSizeFactor = factors[factorIndex];

 

// 배율 조정시 스크롤이 있는 상태일때!! 왼쪽상단(left, top)에 판넬을 맞춰줘야 하니까.. 

int hv = pnlOutBorder.HorizontalScroll.Value;
int vv = pnlOutBorder.VerticalScroll.Value;
pnlBoard.Left = -hv;
pnlBoard.Top = -vv;

 

- ZoomIn

 factorIndex++;
 if (factors.Length <= factorIndex) factorIndex = factors.Length-1;             
 pnlBoard.Scale(new SizeF(factors[factorIndex] / oldSizeFactor, factors[factorIndex] / oldSizeFactor));

 pnlBoard.Invalidate();
 oldSizeFactor = factors[factorIndex];          

 

// 배율 조정시 스크롤이 있는 상태일때!! 왼쪽상단(left, top)에 판넬을 맞춰줘야 하니까.. 

int hv = pnlOutBorder.HorizontalScroll.Value;  
int vv = pnlOutBorder.VerticalScroll.Value;
pnlBoard.Left = -hv;
pnlBoard.Top = -vv;

 

** 함수, 호출 화살표등을 직접 드로잉 처리하고 있어서

이에 대한 크기조정도 적용해줘야 한다. 

파일, 함수, 화살표등을 그리기전에... 

 e.Graphics.ScaleTransform( factors[factorIndex], factors[factorIndex] );

배율 조정을 해준다.

 

 

그리고 마우스 다운 이벤트에서 파일과 함수인경우 이름을 복사!

호출하는 함수부분에서는 대상 함수로 화살표의 색을 바꿔주기 때문에... 배율조정시 마우스 다운 위치를 계산해줘야 하는데... 

Point pt = new Point((int)((float)e.Location.X / oldSizeFactor), (int)((float)e.Location.Y / oldSizeFactor));