전체 글 311

Windbg 유용한 명령어

.reload symbol과 source 읽어 온다. .ecxr : (exception context record) 예외가 발생한 컨텍스트 레코드를 보여주고 디버거가 해당 내용을 참조하게 하는 명령 k, kb, kn / ~*k, ~*kb 콜 스택 / 모든 쓰레드 콜 스택 ~2 제어는 2번 쓰레드로 변경 ~ 쓰레드 목록 확인 ~. 현재 쓰레드만 확인 ~[숫자]s ~2s 이면 2번 쓰레드로 변경한다 입니다. ?? 표현식 평가 ??GMemoryManager : 전역 변수를 평가 명령어 설명 .sympath 현재 symbol path 로 설정된 경로를 보거나 설정합니다. .sympath+ symbol path 를 기존 설정 뒤에 새로 추가합니다. !sym noisy 설정된 symbol path 에서 symbol..

칸반 개발

1. 활발한 커뮤니케이션을 토대로 개발자. 지속적으로 팀의 동의를 구한다. Knowledge island를 탈출하라. (자신이 알고있는 지식이 전부가 아니다) 2. 한 번에 한개의 일만 처리 하자. 칸반의 핵심으로 한 번에 한개의 일만 처리하도록 합니다. 개발자의 뇌는 하나 손은 두개이고 손가락은 열개이므로 한 번에 하나의 일만 처리해야 합니다. 한 개의 일이 끝나지 않으면 다음 일을 진행하지 않는 것을 규칙으로 합니다. 3. 업무 예측 시간을 정하자 개발완료시간을 정확히 예측하는 것은 개발자들에게 정말 중요한 능력 중에 하나입니다. 예측하는 습관을 들여서 지속적으로 예측 능력을 높여야 합니다. 이런 습관으로 업무의 예측 능력을 높인다면 그 만큼 성공할 확률도 높아집니다. 4. 더 좋은 방법이 있다면 기..

애자일 개발 2020.07.13

칸반 이란?

칸반이란? 칸반은 연속적 흐름 처리 방식입니다. 이슈는 큐에 입력되고, 개발 프로세스의 단계에 따라 “당겨”집니다. 칸반은 칸반 보드로 시각화되고 각각 단계는 열로 표시됩니다. 이슈들은 “수영 레인(Swimlane)”으로 불리는 행으로 나눌 수 있습니다. 이슈들의 우선순위를 나타내기 위해 수영 레인을 이용하기로 결정하고 우선순위가 낮은 이슈들을 아래에 배치합니다. 칸반의 핵심은 Work-In-Process(WIP)가 동시에 개발이 진행 될 수 있는 아이템의 수를 제한하는 것입니다. 작업자는 WIP에 여유가 있을때만 작업을 왼쪽에서 오른쪽으로 당길 수 있습니다. 스크럼이 스프린트에 이용할 수 있는 작업 시간을 제한함으로써 생산성을 제어하는 반면, 칸반은 동시에 처리할 수 있는 이슈의 수를 제한함으로써 생산..

애자일 개발 2020.07.13

스크럼 개발 적용

스크럼 궁극의 가치 팀원들간의 원활한 소통으로 장애물들을 제거하고 테스트가 가능한 결과물을 지속적으로 만들어 우리가 맞는 방향으로 가고 있는지 체크하며, 이 과정을 반복하여 최종 목표를 향해 달려갑니다. 팀의 스크럼 트렁크 이관 이후 부터 "릴리즈"로 용어 통일 하겠습니다. 서비스 가능한 형태의 결과물을 만드는 시점 릴리즈 구상의 예 소규모 릴리즈 - 소규모 릴리즈 - 대규모 릴리즈 - 소규모 릴리즈 - 소규모 릴리즈 - 중규모 릴리즈 - 소규모 릴리즈 - 소규모 릴리즈 - 대규모 릴리즈 - ... 각 릴리즈 마다 명확한 마일 스톤이 있어야 하며 각 릴리즈 마다 유기적으로 발전하는 형태를 가져야 합니다. Sprint 릴리즈를 위한 작업 단위로 정의 합니다. 4~5주 정도의 기간을 갖습니다. (1) Bac..

애자일 개발 2020.07.13

애자일 소프트웨어 개발 선언

애자일 소프트웨어 개발 선언 https://agilemanifesto.org/iso/ko/manifesto.html 우리는 소프트웨어를 개발하고, 또 다른 사람의 개발을 도와주면서 소프트웨어 개발의 더 나은 방법들을 찾아가고 있다. 이 작업을 통해 우리는 다음을 가치 있게 여기게 되었다: 공정과 도구보다 개인과 상호작용을 포괄적인 문서보다 작동하는 소프트웨어를 계약 협상보다 고객과의 협력을 계획을 따르기보다 변화에 대응하기를 가치 있게 여긴다. 이 말은, 왼쪽에 있는 것들도 가치가 있지만, 우리는 오른쪽에 있는 것들에 더 높은 가치를 둔다는 것이다. Manifesto for Agile Software Development https://agilemanifesto.org/iso/en/manifesto.ht..

애자일 개발 2020.07.13

미라클 모닝

책의 제목만 보면 아침 일찍 일어나면 기적이 일어 난다는 것으로 말하고 싶어하는 책으로 생각되었습니다.아침에 일찍 일어 나는 것이 아니라 가슴 뛰게하는 목표를 정하고 최선을 다해 성공하는 삶을 살아가자가는 것이 더 중요합합니다. 아침 일찍 일어 나는 것은 하루의 시작을 어떻게 시작하느냐가 그 날 하루를 어떻게 보낼지를 좌우하게 됩니다. 목표를 이룰 수 있다는 밝은 기운을 갖고 집중력을 발휘하며 정신적 그리고 육체적으로 건강한 균형을 갖게 하는 자기 개발의 시간으로 아침을 활용하는 것이 효율이 좋습니다. 다른 사람들이 모두 잠들어 있고 오롯이 자신에게 집중 할 수 있는 이 시간이 좋다는 것이지 다른 시간이어도 상관 없습니다."성공의 정도는 자기계발의 정도를 초과하기 어렵다" 목표를 향해 꾸준히 자기계발하여..

독서 리뷰 2020.07.07

인라인 뷰의 활용

단계적 조인을 위한 활용 전체적인 일량을 줄이기 위해 사용하는 방법 - group by 후 조인 내가 추출할 그룹의 레벨인 테이블로 group by 한 후 조인하면 많은 불필요한 조인을 줄일 수 있습니다. select y.상인이름 sum(x.판매수량), sum(x.판매금액) from 상품목록 x, 상인 y where x.상인코드 = y.상인코드 and x.아이템코드 = @아이템코드 group by y.상인이름 상품 목록을 '상인' 레벨로 추출 후 조인하였습니다. select y.상인이름, 수량, 금액 from (select 상인코드, sum(판매수량) 수량, sum(판매금액) 금액, from 상품목록 where 아이템코드 = @아이템코드 group by 상인코드) x, 상인 y where x.상인코드 =..

서브 쿼리 활용

'제공자 역할' 서브 쿼리라면 먼저 수행됩니다. 서브 쿼리의 결과를 메인 쿼리로 제공해주며 메인 쿼리의 인덱스로 잡혀야 겠습니다. 서브 쿼리 안에 메인 쿼리의 컬럼이 없어야 합니다. '확인자 역할' 메인 쿼리가 먼저 실행되고 서브 쿼리가 실행됩니다. 서브 쿼리 내에 메인 쿼리의 컬럼이 있다면 '확인자 역할'을 합니다. - 잘못 사용된 예 REQT 테이블 2000만 건(월 500만건 생성) INDEX는 cust_no + req_ym update reqt x set in_amt = in_amt + @amt where req_ym = '202005' and custno in (select custno from cust y where pay_cust = @cust and x.custno = y.custno) 지..

SQL IN의 특징과 IN의 활용

- OR 연산의 해소 select ... from tab1 x, tab2 y, tab3 z where ... join_conditions... and ((@선택 = 1 and 구분 = 10 코드 = @코드) or (@선택 = 2 and 구분 between 20 and 30 and 코드 = @코드)) in과 case when 으로 가능한한 OR를 해소 시키세요. select ... from tab1 x, tab2 y, tab3 z where ... join_conditions... and 구분 in (case when 선택 = 1 then 10 else 20 end, case when 선택 = 2 then 30) and 코드 = @코드 - IN 연산자의 특성 IN은 n개의 = 입니다. COL1 BETWEE..

SQL 집합의 가공

합집합 : UNION 차집합 : EXCEPT 교집합 : INTERSECT 집합간의 곱(cartesian product) : Join 정의역 : WHERE 조건으로 변경 and : 정의역 범위 줄어듬 or : 정의역 범위 늘어남 치역 : SELECT 항목, group by로 변경 Join 관련된 다른 집합을 찾아 오는 것이 아닙니다. Join은 집합간의 곱으로 생각하세요. "1쪽과 M쪽을 조인한다"는 "1 * M만큼의 데이터가 M쪽을 기준으로해서 1쪽에 복제되서 만들어진다."로 생각해야 합니다. 세로 데이터를 가로로 바꿀때 : sum(case when ...) 가로를 세로로 바꿀때 : 1 x n 을 Join 하여 n건으로 복제해서 얻음 데이터를 복제 : copy_t를 이용하여 묻지마 조인하여 복제 - 카피..

반응형