본문 바로가기

전체 글

(102)
11. TEAM 프로젝트: 캘린더 기능 구현 - TO DO List 상세한 개발 내역을 작성할려고 했으나, 여러 번의 디버그가 있었고 개발 단계에서 변경되는 점 또한 많았다. 때문에 완성된 캘린더를 기능 별로 정리하고, 개선점을 작성하려고 한다. (TimeLine에 작성해 봤으나 글이 한눈에 들어오지 않는다는 단점이 있어서 방법을 바꿨다.) 1. TO DO LIST TO DO LIST 에 필요한 기본 요소는 '중요도' 그리고 '완료 여부' 이다. 세부 정보 또한 있으나 완료된 상태와 중요도에 따라 데이터를 표현할 수 있어야 한다. 기본적으로 체크와 체크되지 않은 상태는 DB에서도 관리가 가능하도록 변경시 AJAX를 이용해 DB와 통신이 진행되어야 한다. 한번에 삭제는 현재 삭제해야할 (완료된) 상태의 데이터를 배열로 전달하여, 해당 넘버를 Delete 하면 된다. 2. ..
10. TEAM 프로젝트: 캘린더 기능 구현 - 그룹 (2) 상세한 개발 내역을 작성할려고 했으나, 여러 번의 디버그가 있었고 개발 단계에서 변경되는 점 또한 많았다. 때문에 완성된 캘린더를 기능 별로 정리하고, 개선점을 작성하려고 한다. (TimeLine에 작성해 봤으나 글이 한눈에 들어오지 않는다는 단점이 있어서 방법을 바꿨다.) 그룹 및 To Do List 에서의 기본 기능은 스케줄과 유사하다. 결국 프로그램은 DB에 어떻게 데이터를 넣고, 꺼내고, 보여주냐의 차이이기 때문에 각각의 기능은 사실상 레이아웃의 기능 차이나 유저 편의성의 적용 차이이다. 때문에 각각의 코드에 주석을 달기보다는 동일한 동작은 코드만 게시하는 방식으로 정리하려 한다. 1. Servlet 및 AJAX 1) 기본 설정 // Group 대한 XmlHttpRequest var XHRGrou..
9. TEAM 프로젝트: 캘린더 기능 구현 - 그룹 (1) 상세한 개발 내역을 작성할려고 했으나, 여러 번의 디버그가 있었고 개발 단계에서 변경되는 점 또한 많았다. 때문에 완성된 캘린더를 기능 별로 정리하고, 개선점을 작성하려고 한다. (TimeLine에 작성해 봤으나 글이 한눈에 들어오지 않는다는 단점이 있어서 방법을 바꿨다.) 1. 그룹 기능 구현 그룹에 관련된 전반적인 기능은 삭제 및 추가를 비롯하여 스케줄에 대한 권한 부여와 그룹 원을 삭제하는 기능이다. DB 또한 GroupData의 고유키를 기반으로 구조화된 상태이며, 수정자나 그룹원 삭제 또한 각각의 테이블을 기반으로 기능을 작동한다. 그룹 기능에 필요한 세부 기능은 다음과 같다. 그룹 추가, 수정, 삭제, 보기 기능 그룹 멤버(그룹에 속한 자신을 제외한)를 추방하는 기능 그룹 멤버가 그룹을 탈퇴하..
8. TEAM 프로젝트: 캘린더 기능 구현 - 스케줄 (2) 상세한 개발 내역을 작성할려고 했으나, 여러 번의 디버그가 있었고 개발 단계에서 변경되는 점 또한 많았다. 때문에 완성된 캘린더를 기능 별로 정리하고, 개선점을 작성하려고 한다. (TimeLine에 작성해 봤으나 글이 한눈에 들어오지 않는다는 단점이 있어서 방법을 바꿨다.) 1. 스케줄 추가 기능: 신청 양식 스케줄을 추가하기 위해서는 다양한 정보를 삽입해야한다. 때문에 별도의 폼을 구현하여 해당 정보를 가져오고, 전송할 수 있어야 한다. 일간 모양과의 호환을 위하여 날짜와 일에 대한 데이터를 수정할 수 있도록 했다. 셀렉트로 시간을 설정하면 해당 설정에 따라 설정 불가능한 시간을 안보이게 설정하고, '종일'을 누르면 종 00시~23시 45분까지 설정되게 만들었다. // 스케줄 Form에서 추가 버튼을 ..
7. TEAM 프로젝트: 캘린더 기능 구현 - 스케줄 (1) 상세한 개발 내역을 작성할려고 했으나, 여러 번의 디버그가 있었고 개발 단계에서 변경되는 점 또한 많았다. 때문에 완성된 캘린더를 기능 별로 정리하고, 개선점을 작성하려고 한다. (TimeLine에 작성해 봤으나 글이 한눈에 들어오지 않는다는 단점이 있어서 방법을 바꿨다.) 1. 스케줄 기능 구현 스케줄은 계정을 기반으로 하되, 그룹에 따라 표현되는 스케줄의 모양이 다르다는 차이점을 가진다. 또한 날짜에 따라 모양이 표현되어야 하므로, 영역에 따른 표시 알고리즘이 필요하다. 단순한 수를 비교하는 알고리즘이지만, 날짜는 년도, 월, 일을 포함하기 때문에 if 문을 여러 차례 사용하여 데이터를 검증해야 한다. 때문에 우선 스케줄에 대한 기본 기능을 먼저 작성하고 날짜 표시 알고리즘에 대해서는 '캘린더 기능 ..
6. TEAM 프로젝트: 캘린더 기능 구현 - 레이아웃 기능 상세한 개발 내역을 작성할려고 했으나, 여러 번의 디버그가 있었고 개발 단계에서 변경되는 점 또한 많았다. 때문에 완성된 캘린더를 기능 별로 정리하고, 개선점을 작성하려고 한다. (TimeLine에 작성해 봤으나 글이 한눈에 들어오지 않는다는 단점이 있어서 방법을 바꿨다.) 1. 레이아웃의 기능 정의 캘린더의 레이아웃에는 위와 같은 헤더 외에 '스케줄', '그룹', '할일 목록'이 있다. 해당 레이아웃은 각 기능에 대한 포스트에 다루고, 우선 해당 포스트에서는 헤더에 대한 전반적인 기능을 정리한다. 가장 좌측부터 명칭을 정하자면 다음과 같다. 메뉴: To Do List 및 Group 항목을 안보이도록 한다. 캘린더 영역의 넓이가 늘어난다는 장점이 있다. 오늘 날짜로 이동: 해당 아이콘을 누르면 오늘 날짜..
5. TEAM 프로젝트: 캘린더 기능 구현 - 모양 표시 상세한 개발 내역을 작성할려고 했으나, 여러 번의 디버그가 있었고 개발 단계에서 변경되는 점 또한 많았다. 때문에 완성된 캘린더를 기능 별로 정리하고, 개선점을 작성하려고 한다. (TimeLine에 작성해 봤으나 글이 한눈에 들어오지 않는다는 단점이 있어서 방법을 바꿨다.) 1. 캘린더 모양 표시를 위한 기반 함수 캘린더의 모든 모양과 기능은 Java Script (Ecma Script)를 기반으로 한다. 마크업을 직접 진행하고 이를 조작하면 개발 초기에는 편할 수 있으나, 실제로 데이터를 표현하고 수정할 때 제약 조건이 발생할 수 있다. 연 단위 스케줄은 적어도 1000~2000개 사이의 엘레먼트의 조작이 필요한데, 이를 마크업으로 조작하여도 결국 Node 단위로 데이터를 수정해야 년도별 데이터를 정확..
4. TEAM 프로젝트: 역할 분담 및 기능 단위 선정 1. 개발 영역 설정하기 우리는 해당 프로젝트에 의의에 맞게 개발자 협업 도구에 맞는 프로그램을 개발하려고 했다. 이에 반드시 필요한 것은 다음과 같았다. 준수한 에디터 질문과 답변이 오가기 때문에 커뮤니티로서 관리기능 협업에 필요한 스케줄러 각각 개발 단위를 나누는 기준은 자신이 안해본 기능, 그리고 흥미있는 것으로 정했다. 관리 기능은 세부적으로 분석하면 다양한 기능이 있어야하고, 에디터는 에디터 자체를 만드는 과정이 쉽지 않다. 나는 개인 포트폴리오에서 에디터를 제작해봤기 때문에 큰 흥미가 없었고, 멤버 관리는 이후 진행할 프로젝트에서 필연적으로 진행해야만 했다. 이에 따라, 팀원들의 동의를 구하고 스케줄러에 대한 개발에 진입하였다. 나하고 같이 개발을 하게된 팀원은 M이라는 친구였는데, 알고리즘을..