목록😌 (32)
Development Log
1. 소프트웨어 생명 주기 소프트웨어 개발 방법론의 바탕이 되는 것으로, 소프트웨어를 개발하기 위해 정의하고 운용, 유지보수 등의 과정을 각 단계별로 나눈 것 일반적으로 사용되는 소프트웨어 생명 주기 모형 : 폭포수 모형, 프로토타입 모형, 나선형 모형, 애자일 모형 등 2. 소프트웨어 공학 소프트웨어의 위기를 극복하기 위해 방안으로 연구된 학문 이며 여러가지 방법론과 도구, 관리 기법들을 통하여 소프트웨어의 품질과 생산성을 향상시킬 목적으로 함 여러형태로 정의 1) IEEE의 소프트웨어 공학 표준 용어 : 소프트웨어의 개발, 운용, 유지보수, 폐기 처분에 대한 체계적인 접근 방안 2) Fairley : 지정된 비용과 기간 내에 소프트웨어를 체계적으로 생산하고 유지보수하는 데 관련된 기술적이고 관리적인 ..
1. Simple Homepage 프로젝트 생성 단순 홈페이지 기능 구현시 필수적인 부분만 사용 가능하도록 경량화 된 실행환경을 제공한다. 메인페이지, 사용자관리, 공지사항 관리, 게시판 관리, 안내 관리 기능을 제공한다. 패키지 구조 egovframework:com:v2:init_deploy_file [eGovFrame] 배포파일을 구성할 때에 패키지간의 종속성과 업무적 연관성을 포함하여 구성하였다. 한 개의 배포파일은 독립적으로 설치하여 동작할 수 있으며, 2개 이상의 배포파일을 설치할 때에는 환경설 www.egovframe.go.kr 2. Servers 추가 (Apache Tomcat) 서버 포트 수정 톰캣은 기본적으로 8080포트를 이용해 통신을 수행한다. 접근의 편의성을 위해서 80포트를 사용한..
처음 Template Project를 실행했을 때, URL에 jsessionid이 붙어서 나온다. JSESSIONID 톰캣 컨테이너에서 세션을 유지하기 위해 발급하는 키 상태를 저장하기 위해 톰캣은 JSESSIONID 쿠키를 클라이언트에게 발급해주고 이 값을 통해 세션을 유지할 수 있도록 한다. 사용하는 이유 HTTP 프로토콜은 무상태 특징을 기본적으로 가지고 있다. 요청시마다 새로운 연결이 생성되고 응답후 연결은 끊기게 되므로 상태를 유지할 수 없다. stateless(무상태) 클라이언트와 서버 관계에서 서버가 클라이언트의 상태를 보존하지 않음을 의미한다. 할 일이 끝나면 클라이언트와의 통신을 끊는다. 웹 서버를 사용할 때 자주 사용한다. statefull 방식이 필요할 때는 세션 등을 사용한다. st..
eGovFramework(전자정부 표준프레임워크) 국가에서 관리하며 배포하는 프레임워크이다. 정보시스템 개발을 위해 기능 및 아키텍쳐(구성 방식, 구조)를 제공함으로써 효율적인 개발을 지원한다. 공공사업에 적용되는 개발프레임워크의 표준 정립으로 응용SW 표준화, 품질 및 재 사용성 향상을 목표로 한다. 기존 다양한 프랫폼(.NET, php 등) 환경을 대체하기 위한 표준은 아니며 java 기반의 정보시스템 구축을 활용하실 수 있는 개발/운영 표준 환경을 제공한다. eGovFramework 개발환경 설치 아래의 링크를 통해 최신버전을 다운로드해 실행파일(exe)의 압출을 푼다. https://www.egovframe.go.kr/home/sub.do?menuNo=94 윈도우 환경에서 자바 개발을 하기 위해서..
재귀함수 내부에서 자기 자신을 호출하여 재참조하는 구조의 함수를 말한다. 피보나치 수열, 하노이의 탑 알고리즘이나 1부터 n까지의 숫자 합, 팩토리얼(!) 같은 연산을 할 때 사용한다. 특징 1. 코드의 가독성이 좋다. 2. 스택 메모리를 사용한다. (스택 오버플로우가 발생할 수 있다.) 합병 정렬은 버블 정렬이나 선택정렬보다 뛰어난 알고리즘으로 널리 알려져있다. 합병 정렬(Merge Sort) 병합 정렬 또는 합병 정렬이라고 한다. 원소가 한 개가 될 때까지 계속해서 반으로 나누다가 다시 합쳐나가며 정렬을 하는 방식이다. 합병 정렬 알고리즘 예시 어떤 알고리즘을 얘기할 때, 무언가를 절반으로 계속 나눈다면 로그(log)함수로 표현할 수 있다. 크기 8인 배열을 쪼개서 크기 1인 배열 8개로 만드는데 필..
리스트에 대해 여러번 탐색을 해야하는 경우, 정렬되지 않은 리스트를 탐색하는 것 보다 정렬한 뒤 탐색하는 것이 더 효율적이다. 빠른 검색으로 장기적인 이득을 볼 수 있다. 버블 정렬(Bubble Sort) 두 개의 인접한 자료 값을 비교하면서 위치를 교환하는 방식으로 정렬한다. 정렬하기 위해 너무 많이 교환하는 낭비가 발생할 수도 있다. 버블 정렬 알고리즘 예시 마치 거품이(비교 및 교환이) 터지면서 위로 올라오는 (배열의 옆으로 이동하는) 방식이다. 버블 정렬 의사코드 Repeat n–1 times : n-1번 반복 For i from 0 to n–2 : n-1번 반복 (0부터니까 n-2) If i'th and i+1'th elements out of order Swap them => 바깥 반복문은 n..
선형 검색(Linear Search) 원하는 원소가 발견될 때까지 처음부터 마지막 자료까지 차례대로 검색한다. 찾고자 하는 자료를 찾을 때까지 모든 자료를 확인해야 한다. 자료가 정렬되어 있지 않거나 그 어떤 정보도 없어 하나씩 찾아야 하는 경우에 유용하다. (이 경우에는 무작위 탐색보단 순서대로 탐색하는 것이 효율적이다.) 효율성/비효율성 정확하지만 아주 효율적이지 못한 방법이다. 찾고자 하는 자료가 맨 마지막에 있거나 리스트 안에 없는 경우에 효율성이 매우 떨어짐을 느낀다. (최악의 상황) (반대로 최선의 상황은 처음 시도했을 때 찾고자 하는 값이 있는 경우이다.) 평균적으로 선형 검색이 최악의 상황에서 종료되는 것에 가깝다고 가정할 수 있다. 검색 이전에 정렬을 해줘야 한다. 정렬은 시간이 오래 걸..
알고리즘이 얼마나 잘 설계되어 있는지, 코드가 얼마나 잘 구현되었는지 컴퓨터 과학자들은 알고리즘을 설명하기위해 특정 용어를 사용한다. 가장 일반적으로 Big-O 표기법을 사용한다. Big-O 표기법 빅오란 입력값이 무한대로 향할 때 함수의 상한을 설명하는 수학적 표기 방법이다. O는 "on the order of"의 약자로, "~만큼의 정도로 커지는" 것이라고 볼 수 있다. 알고리즘의 효율성을 표기해주는 표기법이다. 보통 알고르즘의 시간 복잡도(시간 효율성)와 공간 복잡도(메모리 효율성)를 나타내는데 사용된다. 빅오로 시간 복잡도를 표현할 때는 최고차항만 표기한다. 컴퓨터 과학자는 알고리즘의 효율성을 설명할 때 정확히는 O(n/2)일지라도 그냥 O(n)이라고 말한다. 로그의 경우도 그냥 O(log n)이..