최근 밑에 있던 차석 직원이 퇴사를 하면서... 새로운 직원을 뽑았는데... 거의 띠동갑에 가깝다 보니... 생각하는 방향이 많이 틀리다. 그런다고 회사 자체가 그렇게 딱딱한 문화는 아니라.. 큰 문제는 없는데.... 소통에는 조금 큰 문제가 있는 것 같다. 나도 요즘은 이 문제로 머리가 복잡하네.... 그런데.. 회사에서 우리의 존재 사유는 일을 하기 위해서가 아닌가.... 자체 개발을 하고 있다 보니.... 개발 지식 및 데이터베이스 관리 지식이 아주 많이 필요하다. 그래서 반년 가까지 교육만 시키고 있는 상황인데... 이것도 버거워하니... 참 어려움이 크다.
시키는 부분만 빠르게 습득해서 따라와도 모자랄 판에... 계속 뒤처지는 모습을 보고 있자면... 그냥 모든 걸 포기하고 그냥 혼자 할까라는 생각도 가끔씩 든다. 이게 내가 직접 일하는 거보다 가리키는 게 몇 배는 힘들다는 것은 다들 알 것이에요. 전에 직원은 그래도 나이 차이가 크지 않아 같은 세대를 살아오다 보니 소통에 큰 문제가 없었는데.... 아무래도 나이 차이가 많이 나다 보니 이 정도는 이렇게 설명하면 이해하겠지라고 하는 부분이.... 잘 먹히지가 않는다. 물론 나도 많이 바꾸어 쉽게 설명하려고 노력하지만.... 반대로 그 직원도 적응하기 위해 많은 노력을 해야 되지 않을까?
참 커뮤니케이션 힘든 것 같다. 세대차이라는 의미를 못 느끼고 살다가... 요즘 아주 뼈저리게 느끼고 있다. 그냥 기간 포기하고 경력자를 추가로 뽑아야 될는지... 머가 정답인지 모르겠네요. ^^;; 글이라도 쓰며 스트레스를 풀어 보네요...
최근 퇴사자가 발생하면서... 정신없는 상황이라... 글 올리는 것도 몇 달간 계속 미루어지네요. 자체 개발을 하는 전산팀이다 보니.... 프로그램 개발 경력자를 뽑아야 되는데... 하아..... 참 사람이 정말 없는 것 같다. 거의 2달간 충원을 하다가... 결국은 프로그램 경력은 아주 짧지만 전산 인프라 경력이 있는 친구로 뽑았다. 몇 년 만에 초급자를 새로 뽑다 보니.... 어떻게 가리켜야 되는지도 가물가물 하네요. 그리고 결국은 커리큘럼을 완전히 새로 짜야되었다. 기존 경력자 뽑아 인수인계부터 시작하는 구조로는 불가능하다고 판단이 되었다. ^^;;; 휴.... 참 오랜만에 삽질을 하는 것 같다.
자체 시스템 개발 능력을 교육하기 위해....
1) 개발 툴 기초 교육... 2) 데이터베이스 기초 교육과정.... 3) 데이터베이스 연계하여 샘플 프로그램 개발을 통한 개발기술 고도화... 4) 기존 시스템 분석작업을 통한 업무파악 및 기존 프로그램 문제점 분석 5) 분석한 문제점을 검토하여 개선 작업
이렇게 5가지 과정으로 올해 말까지 커리큘럼을 진행 중이다. 7개월 과정을 거치고 나면 내년부터는 개발에 참여할 수 있을 것으로 생각된다. ^^;; 하지만 내 뜻대로 과연.. 잘 될까 라는 두려움도 엄습한다. 그래도 잘 되지 않을까.... 희망을 가져 봐야겠죠.....
다들 어떻게 직원들 교육시키시나요??? 이게 맞는 방법인지.. 의문이 들지만.. 그래도 내 생각에 이게 최선이라 생각이 드니.. ^^ 열심히 해야겠죠!! .
두 수의 입력을 받아 계산해주는 프로그램을 작성하였으나, 아래와 같이 두 수를 문자열 형식으로 더해주는 프로그램이 완성되었다. 버그 확인 후 처음의 의도대로 두 수의 계산을 출력하는 프로그램으로 수정해보려고 한다.
2. Sources 패널 확인하기
개발자 도구를 켜고 (Command+Option+I (Mac) or Control+Shift+I ) Sources 패널을 클릭한다.
Sources 패널은 크게 3개 영역으로 구분할 수 있다. 1. 파일 시스템 : 현재 페이지에서 요청하는 모든 리소스들이 트리 형태로 나타난다. 2. 코드 에디터 : 파일 시스템에서 선택한 파일의 내용을 보여준다. 코드 에디터를 통해 소스 코드를 편집할 수도 있다. 3. 자바스크립트 디버거 : 해당 페이지의 자바스크립트 디버깅을 위해 필요한 다양한 기능을 제공한다.
(만약 Sources 패널에서 파일 시스템이나 디버거 패널이 안보인다면 파란색으로 표시된 영역 클릭)
이제 자바스크립트 디버거의 다양한 기능을 알아보자.
3. 중단점 설정하기 - breakpoint
✨ 중단점 : 코드 내에서 자바스크립트의 실행이 중단되는 지점, 해당 지점의 변수 값 등을 파악할 수 있다.
페이지 내의 소스코드가 어떻게 동작하는 지 자세히 알아보려면 중단점을 설정해줘야 한다. 코드의 라인 번호를 클릭해서 중단점을 설정할 수 있다. (코드에서 확인하고 싶은 줄마다 중단점을 설정해줘야 한다.)
중단점을 여러 개 설정한 경우 위 사진과 같이 디버거 패널의 체크박스를 통해 중단점을 활성화/활성화 할 수 있다.
✨ 혹은 다음과 같이 스크립트 내부에degubber명령어를 추가해 중단점을 설정할 수 있다.
위에서 발견한 버그의 경우 값을 입력하는 과정까지는 별다른 문제가 없으므로 계산을 위해 버튼을클릭하였을 때 작동하는 과정에서 문제가 생겼을 것이라는 추측 할 수 있다. 따라서 버튼 클릭 이벤트가 발생했을 때의 코드 동작을 확인하기 위해 디버거 패널의Event Listener Breakpoints를 이용해야 한다. 해당 메뉴에서 이벤트 리스너와 관련된다양한 중단점을 간편하게 설정할 수 있다.
중단점 설정 후 다시 웹 페이지에서 Add 버튼을 클릭해보았다. click이벤트에 중단점을 설정했기 때문에 버튼을 클릭하자마자 코드가 중단되고, 에디터에서 해당 지점, 즉 onClick() 부분에서 중단되었음을 표시되는 것을 확인할 수 있다.
4. 본격적으로 검사(디버깅)하기
중단점에서 코드가 멈추면 한 줄 한 줄, 혹은 함수 단위로 실행을 조절해가며 변수, 실행 순서 등이 예상대로 진행되고 있는지 확인한다. 의도와 다르게 흘러가는 부분을 찾아내는 과정이라고 할 수 있다. 특히 디버거 패널에서WatchCall StackScope패널들의 변화를 파악하는 과정에서 버그를 발견할 수 있을 것이다.
4.1 디버깅 패널 버튼 확인
Resume (F8) : 직접 설정한 중단점에서만 중단하며 디버깅 스크립트 다시 실행 시작. 추가 중단점이 없는 경우, 디버거 동작 없이 실행이 이어진다.
Step (F9) : 문 단위로 다음 명령어 실행, 비동기 동작은 무시.
Step into (F11) :Step과 비슷하게 동작하지만Step into는 비동기 동작을 담당하는 코드로 진입하고, 필요하다면 비동기 동작이 완료될 때까지 대기한다. (비동기에 대해 배우고 내용을 추가하려고 한다.)
Step over (F10) : 함수 내부 진입 없이 다음 명령어 실행. Step과 비슷하게 다음 문을 실행하지만, 만약 다음 문이 함수일 경우 함수 내부로 진입없이 코드가 실행된다. 함수 내부에 진입하고 중단하는 과정을 생략할 뿐, 함수가 실행되지 않는 것은 아니다. 함수 실행이 끝난 위치에서 멈추기 때문에 함수 내부의 동작 과정을 알 필요 없을 경우 사용할 수 있다. (Step명령어의 경우 함수 내부로 들어가 함수 바디 첫 번째 문에서 실행을 멈춤)
Step out (Shift + F11) : 함수 내부 진입 없이 다음 명령어 실행. 현재 실행 중인 함수를 계속 실행하다가 함수 본문 마지막 줄에서 멈춘다. 실수로Step을 눌러 중첩 함수로 진입한 경우, 현재 함수 실행을 끝내고 싶은 경우 사용한다.
모든 breakpoint 활성/비활성화 : 모든 breakpoint를 일괄적으로 활성/비활성 시킬 때 사용.
4.2 디버깅 패널 정보 확인
Watch : 표현식을 평가하고 평가 결과를 나타낸다. +모양의 Add Expression 버튼을클릭해 원하는 표현식을 입력한 후 Enter를 누르면 현재 중단점의 값을 확인할 수 있다. 설정한 표현식은 직접 삭제하기 전까지 새로고침해도 지워지지 않는다.
Scope : 현재 중단점을 기준으로 정의된 모든 변수 정보를 나타낸다. Local: 지역 변수와 관련된 정보 확인. Global: 전역 변수와 관련된 정보 확인.
Call Stack : 코드의 실행 경로를 나타낸다. 현재 중단점으로 오기까지의 실행 경로가 역순으로 쌓인다. 콜 스택을 클릭할 경우 해당 코드 위치로 디버거가 이동된다.
5. 오류 발견
위에서 코드를 한 줄 씩 실행해가는 과정을 통해 updateLabel() 함수 내에서 두 값의 더하기 연산이 일어날 때 문제가 있음을 발견했다. Watch패널에서typeofsum 을 입력해 각 식별자들의 데이터 타입을 확인해보니 문자열로 평가되어 문자열을 더한 결과가 반영되고 있었다.
6. 오류 수정
버그(오류)의 원인을 올바르게 파악했는지 알아보기 위해코드 에디터에서 문자열을 숫자로 바꿔주는 코드를 추가한 뒤 다시 디버깅 해보았다.
원하는 대로 숫자들의 덧셈으로 결과를 반환하는 것을 확인할 수 있다.
( 주의 : 이때 수정한 코드는 저장되지 않기 때문에 새로고침 할 경우 지워지게 된다. 이를 방지하기 위해 로컬의 소스코드와 연동시켜 수정할 수 있는 크롬 개발자 도구 워크 플레이스, VS Code 연동 기능도 있다.)
7. 마무리
console.log VS 웹 디버깅 툴 1. 디버깅 툴을 사용하면 코드 구성을 정확히 몰라도 원하는 시점에서 중단하고 확인 할 수 있다. 2. console.log()를 이용할 경우 검사할 값을 명시적으로 지정해야하는 반면, 디버깅 툴을 이용할 경우 해당 중단점의 모든 변수 값을 확인할 수 있다.
위에서 말했듯이 평소 console.log()를 자주 사용했었는데 개발자 도구의 디버깅 툴을 통해서 이러한 불편을 어느정도 해소할 수 있을 듯 하다. 특히 버튼 클릭, 값 입력 등의 이벤트가 발생할 때 상태를 자세히 관찰할 수 있기 때문에 유용하게 활용할 수 있을 것 같다.
그러면서 생각이 든 것이.... Rsync 방식으로 동기화를 하는데.... 쓸 줄만 알았지 이게 머였지???
그래서 결국 자료를 검색해 보고 정리해 놓게 되었다.
Rsync(Remote Synchronization)는 원격에 있는 파일과 디렉토리를 복사하고 동기화하기 위해서 사용하는 툴이며 동시에 네트워크 프로토콜이다. 리눅스와 유닉스에서는 백업용도로 가장 널리 사용하는 툴일 것이다. ( 윈도우와 애플에도 포팅됐다. ) Rsync는 CLI툴로, 커맨드 라인의 옵션들을 이용해서 배치 프로그램을 개발하기 쉽다는 장점이 있다. 이 스크립트를 cron등에 올리는 걸로 간단하게 백업 혹은 미러(Mirror) 시스템을 구성할 수 있다.
^^;;; 고로 저는 이걸로 원격지 소산 백업을 했다는 거네... 가끔가다 자세히 알지도 못하면서 이렇게 쓰는 거야... 하고 쓰는 게 있는데.. 가끔씩은 각성해서 이렇게 공부를 하네.. ㅎ 프로그래밍 쪽은 정말 모르는 거 하나 없이 모두 확인하려 드는데.. 이쪽 분야까지는 정말 힘드네... ^^;;;
간만에 후배가 들어와서 프로그램 교육을 시키고 있는데.... 개발 툴에 사용되는 컴포넌트가 오래된 거라서 도움말도 예전 파일로 되어있는데... ( HLP 확장자로 되어 있음 )
윈도우 10에서 열어보니 열리지 않는다.. -_-;; 아 난감하네....
여러 가지 방법을 찾다가 결국은 해결 방법을 찾았네.... 결론은 hlp 파일을 보여주는 뷰어가 있는데... 그게 XP 까지만 지원을 했었나 보다. 아래 파일을 다운로드하여 압축을 풀고 C:\Windows\System32 폴더에 복사해 넣는다. ( 윈도우 버전에 맞추어 사용 )
^^;;; 최근에 팀원을 다시 뽑았다. 게임업체나 IT업체에서 인력을 얼마나 끌어갔는지.... 사람이 없긴 없다. 결국은 사람에 집중하기로 하고 면접을 보고 사람을 뽑게 되었다. 다시 1~2년간 교육시키는 일이 어렵긴 하지만..... 경력이 많은 직원을 뽑아도 이쪽 산업을 모르면 비슷한 상황이기에... 기간만 좀 단축이기에.... 조금 긴 호흡을 가져가기로 했다. 그리고 이번 일로 인해 인력관리에 필요성을 느껴... ^^;;; 회사에서 인원 확대에 대한 필요성을 느낀 게.. 그나마 다행인 듯.... 요즘 개발자 뽑기가 얼마나 힘든데... ^^;;; 머. 나름 이번 일을 겪으며... 인내도 많이 느는 듯.. ㅎㅎㅎ 그래도 나이 차이가 있음에도 잘 따라 주는 직원이 고맙기도 하네.. ^^ ㅎㅎ 사회생활하며 느낀 거지만.. 실력도 기술도... 다 두 번째고.. 인성이 첫 번째인 것 같더라... 이번 친구도 잘해주겠지 ㅎㅎㅎ
이번에 오랫동안 같이 일한 친구를 보내며 많은 생각이 드네요. 지난 6년간 같이 재밌게 일했던 친구인데.. 새로운 꿈이 있는지... 드디어 둥지를 떠나네요. 나 또한 많은 이직을 통해 발전했기에... 이 친구에게도 필요한 기회라는 생각이 드네요. 시원섭섭한 느낌이라고 해야 되나... ^^;;;
이런 문제로 그동안 글도 작성할 틈 없이 바빴네요 ^^;;; 핑계인가.. ㅋ 최근 인력 구하기가 힘든 상황이라 좀 힘들긴 하지만... 보내 줄 때는 또 기분 좋게 보내주어야겠죠. 당분간 일이 많아지는 거야 어쩔 수 없겠지만... 그 또한 내가 당연히 해내야 하는 일이기에..... 그것보다 6년간 묵묵히 잘해준 것에 감사하죠 ^^ 오늘이... 마지막 근무하는 날인데.. 아 전에 제가 모시던 팀장님도 이런 기분이었겠구나...라는 생각이 드네요. 나 또한 그때의 이직으로 큰 발전을 했으니... 앞으로 큰 발전이 있기를 기원해줘야죠.... 저 또한 새로운 친구를 받아들이고 가리키며 또 발전을 해야겠죠!! 마지막 날이라... 출근하며 두서없이 글을 남겨 보네요~~!! ^^
보통 윈도우서버 연결을 하면 시스템 상태를 한눈에 보기 위에 작업 관리자를 항상 띄워놓는데.... 디스크 IO 상황도 바로 보고 싶다. 그래서 항상 작업 관리자에 올려두는데.. 하도 오랜만에 세팅을 하다 보니.. 기억이 가물가물....
내가 보고 싶은 건 위에 표시된 부분과 같이 서버 디스크에 I/O 현황을 한 번에 보고 싶은데.. 세팅 방법이 기억이... 기억을 더듬어 보니... 휴... 기억이 나서 기록해 둠.... cmd 실행 후 diskperf -Y 명령을 실행하면 아래와 같이 카운터가 추가됩니다.
ㅎㅎㅎ 이제 작업 관리자를 띄우면 위에 그림과 같이 disk i/o 현황을 바로 확인이 가능합니다. 이상 끝~~!! ^^;