UML (Unified Modeling Language) 이란? - 시스템 개발 과정에서 개발자와 고객 혹은 개발자 상호간의 원활한 의사소통을 위해 표준화한 객체지향 모델링 언어 - UML을 사용 시 6개의 구조 다이어그램, 7개의 행위 다이어그램 작성 가능 - UML의 구성 요소 : 사물, 관계, 다이어그램 사물 (Things) - 다이어그램 안에서 관계가 형성될 수 있는 대상을 말함 - 구조사물, 행동사물, 그룹사물, 주해사물 관계 (Relationships) - 사물과 사물 사이의 연관성을 표현하는 것 - 연관관계, 집합관계, 포함관계, 일반화관계, 의존관계, 실체화관계 등 연관관계 - 양방향 관계인 경우 실선으로 표현, 아니면 화살표 - 연관에 참여한는 객체의 수(다중도)를 표기함 집합관계 - 포..
처음 문제를 읽을 때에는 쉬워보이는데 막상 풀어보면 이것저것 예외도 많고 어떤 방식을 써야할지 난감해 생각보다 어려웠다. 정렬 - 가장 큰 수, 문제 확인 문제 자체는 간단한데 양의 정수가 담긴 배열 numbers가 주어질 때, 가장 큰 수의 조합을 구하는 문제이다. 0 또는 양의 정수가 담긴 배열 numbers가 주어짐 순서를 재배치해 만들 수 있는 가장 큰 수를 문자열로 바꾸어 리턴 정렬 - 가장 큰 수, 문제 풀이 처음에는 별생각 안하고 자리수를 0으로 채워 맞춘 후에 큰 수대로 정렬, 하나씩 붙이면 된다고 생각했다. 그 중에 3, 30과 같이 같은 크기가 되는 경우는 실제 수 3, 30을 비교하는 방식으로 예외처리를 하는 방식으로 했다. 그런데 이렇게 하니 주어진 테스트케이스는 통과했지만 코드 채..
스크럼(Scrum) 기법 스크럼은 팀이 중심이 되어 개발의 효율성을 높이는 방식으로 팀원 스스로 스크럼 팀을 구성, 개발 작업에 대한 모든것을 스스로 해결할 수 있어야 한다. 스크럼팀의 구성 - 제품 책임자 : 개발 의뢰자나 사용자가 담당, 제품에 대한 요구사항을 작성하는 주체, 백로그 작성 - 스크럼 마스터 : 스크럼팀의 가이드 역할을 수행함, 개발 과정에서의 장애 요소를 공론화해 처리함 - 개발팀 : 제품 책임자와 스크럼 마스터를 제외한 모든 팀원 백로그란 : 제품 개발에 필요한 요구사항을 모두 모아 우선순위를 부여한 목록을 말함 (제품 책임자가 작성) 스크럼 개발 프로세스 1) 제품 백로그 - 백로그를 기반으로 릴리즈 계획을 수립함 릴리즈 : 몇개의 요구사항이 적용되어 부분적으로 기능이 완료된 제품..
정렬 - K번째수, 문제 확인 이번 문제는 정말 간단하다. 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때 k번째있는 수를 구해야 함 배열 array와 [i,j,k]를 원소로 갖는 2차원 배열 commands가 주어짐 정렬 - K번째수, 문제 풀이 commands를 기준으로 반복문을 돌면서 먼저 array를 tmp에 복사한다. 그리고 i(v[0]), j(v[1])대로 tmp를 자른 후 정렬하고 k번째(v[2]-1) 값을 answer 리스트에 추가해주면 된다. def solution(array, commands): answer=[] for v in commands: tmp=array tmp=tmp[v[0]-1:v[1]] tmp.sort() answer.append(tmp[v[2]-1]..
시나공책 기준, 개정된 2020 정보처리기사에서 소프트웨어 생명주기 모형은 폭포수, 프로토타입, 나선형, 애자일로 기존의 폭포수, 프로토타입, 나선형, 4GT에서 4GT가 빠지고 애자일이 추가되었다. '소프트웨어 생명주기' 란 소프트웨어 생명주기란 소프트웨어 개발을 하기 위한 정의, 운용, 유지보수 등의 각 과정을 단계별로 나눈 것을 말한다. 폭포수 모형 - 소프트웨어 개발 각 단계를 확실히 매듭짓고 그 결과를 철저히 검토해 승인 과정을 거침 - 이전단계로 돌아갈 수 없음 - 가장 오래되고 폭넓게 사용된 전통적인 소프트웨어 생명 주기 모형 - 선형 순차적 모형 - 개발 순서 : 타당성 검토 -> 계획 -> 요구분석 -> 설계 -> 구현 -> 검사 -> 유지보수 장점 단점 - 모형의 적용 경험과 성공 사례..
페이스텔(Feistel) 암호란 페이스텔 암호는 대칭 블록 암호 알고리즘으로 암복호화 과정에서 '라운드 함수'가 사용된다. 대표적인 블록 암호화 방식인 DES, SEED 등이 페이스텔 구조를 갖고 있다. 페이스텔 암호에서 라운드 수는 원하는 만큼 늘릴 수 있으며 라운드 수가 늘어날수록 보안성이 강화된다. 일반적으로는 16라운드를 사용한다. 그리고 페이스텔 암호의 제일 큰 특징은 암복호화 알고리즘이 동일하다는 것이고 라운드 함수 F의 역함수가 존재할 필요가 없다는 것이다. 이는 아래 그림을 보면 쉽게 알 수 있다. 사실 정보보안기사에서는 페이스텔 암호 자체에 대한 문제가 서술형으로 나오는 경우는 거의 없지만, 페이스텔 구조에서 암복호화가 어떻게 이루어지는지 좀더 살펴보자. PPT로 그림을 그릴까 하다가 손..
석사 졸업논문을 쓸 때 OLE 기반의 여러 파일들에 대한 특징을 추출해야 할 일이 있었는데 그 때 데이터를 좀 축소시켜볼까 해서 썼던 방법 중 하나가가변 길이의 데이터를 같은 차원으로 압축?축소? 시키기 위해 사용할 적당한 알고리즘을 찾다가 LSH(Locality Sensitive Hashing)라는 것을 발견했다. 결론적으로 사용하진 않았다. LSH는 고차원 데이터의 차원 확률에 기반한 차원 축소 방법론이라고 할 수 있다. 하나의 문서가 100여개의 단어로 이루어져 있다면 이를 벡터로 표현하면 100차원이다. 이것을 제한된 크기 n차원으로 줄이는 기술이다. 간략히 공부하면서 어떤 저자가 Coursera 강좌를 듣고 Minhash 알고리즘에 대해 정리해 놓은 글을 봤는데 해당 글을 다시 정리해보았다. M..
TEB(Thread Environment Block)는 쓰레드정보를 담고 있는 구조체이고 PEB(Process Environment Block)은 프로세스 정보를 담고있는 구조체이다. 옛날에 덤프 분석할 때, PEB 정보 확인을 안해서 중요 정보를 놓쳤던? 적이 있다. 어쨌든 덤프 분석할 때도 잘 알아야 하고 안티리버싱에도 많이 사용되고 기타 등등 중요한 구조체들이기 때문에 잘 알아둘 필요가 있어서 여기에 정리한다. +추가되는 정보가 있다면 계속 채워나갈 예정이다. EPROCESS, ETHREAD, PEB, TEB 차이먼저, 같은 프로세스, 스레드 정보를 담고 있는 구조체이지만 EPROCESS, ETHREAD 구조체와 PEB, TEB 구조체가 어떻게 다른지를 알고 넘어가야 한다. EPROCESS, ETH..
힙(Heap) - 라면공장, 문제확인 개인적으로 우선순위 큐를 어떻게 활용해야 하는지 전혀 감이 잡히지 않아 헤맸던 문제이다. 일단, 문제 설명은 아래와 같다. 라면 공장은 하루에 밀가루 1톤 사용 k일 이후에 밀가루 공급 가능, 해외 공장에서 수입해야 함 해외 공장에서는 밀가루 공급이 가능한 날짜와 수량을 알려줌 라면 공장에서는 운송비를 줄이기 위해 최소한의 횟수로 밀가루를 공급받고자 함 현재 공장에 남아있는 밀가루 수량 : stock 밀가루 공급 일정 :dates (dates[i] " i번째 공급 가능일) 해당 시점에 공급 가능한 밀가루 수량 : supplies (supplies[i] : dates[i] 날짜에 공급 가능한 밀가루 수량) 원래 공장으로부터 공급받을 수 있는 시점 : k 밀가루가 떨어지..
힙(Heap) 자료구조에 대해 자료구조에서 힙(Heap)은 최대힙과 최소힙이 있는데 최대힙의 경우 모든 부모 노드의 값이 자식 노드의 값보다 크거나 같은 값을 갖는 이진 트리를 말한다. 이런 힙을 배열을 통해 표현하게 되는데 힙 배열에서의 부모 노드와 자식 노드의 관계는 부모의 인덱스를 x라고 했을 때, 왼쪽 자식의 인덱스는 x*2, 오른쪽 자식의 인덱스는 (x*2)+1이 된다. 그리고 이러한 힙의 특징을 사용하면 우선순위 큐를 구현할 수 있게 되는데, 스택이 제일 마지막에 들어온 값을 먼저 꺼내는 자료구조고 큐가 제일 먼저 들어온 값을 꺼내는 자료구조라면 우선순위 큐는 가장 우선순위가 높은 값이 먼저 꺼내지는 자료구조이다. 즉, 최댓값 및 최솟값을 찾아내는 연산을 빠르게 하기 위해 고안된 자료구조라고 ..
분산 서비스 거부 공격 (DDoS) 분산 서비스 거부 공격, 일명 DDoS(Distributed Denial of Service) 공격은 분산된 다수의 좀비 PC(봇)에 의해 공격대상 서버의 서비스를 마비시키는 공격을 말한다. C&C 서버는 공격자(봇마스터)로부터 직접적으로 명령을 전달받는 서버이며 전달받은 공격명령을 좀비PC(봇)에 전하게 된다. 좀비PC는 C&C 서버로부터 전달받은 명령을 실행해 공격대상에 실제로 공격을 수행하는 PC를 발한다. 봇(bot) vs 봇넷(botnet) 봇은 로봇에서 파생된 단어로 보안상 결함을 사용해서 원격 제어가 가능하게 한 프로그램을 말하고 이 봇에 감염된 PC를 좀비 PC이다. 보통 좀비 PC를 갖고있는 사용자들은 자신의 컴퓨터가 감염된 줄 모르는 경우가 대부분이라..
프로그래머스 스택/큐 마지막 문제인 주식가격문제를 풀어보도록 한다. 스택/큐 - 주식가격, 문제확인 문제 설명은 아래와 같다. 초 단위로 기록된 주식가격이 담긴 배열 prices가 변수로 주어짐 가격이 떨어지지 않은 기간이 몇초인지를 리턴 요번 문제 설명은 심플한 편이다. 예를 들어 [1,2,3,2,3] prices 배열이 주어졌을 때, 리턴값이 [4,3,1,1,0]이 되는 과정은 아래와 같다. 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다. 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다. 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다. 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다. 5초 시점의 ₩3은 0초간 가격이 떨어지지 않았..