실무 활용 프로젝트
1. 마크다운 파서 만들기
1.1 프로젝트 개요
마크다운 문서에서 제목, 링크, 강조 구문을 추출하고 HTML로 변환하는 파서를 만듭니다.
1.1.1 요구사항
- 헤더(h1~h6) 변환:
# 제목
→<h1>제목</h1>
- 링크 변환:
[텍스트](URL)
→<a href="URL">텍스트</a>
- 강조 구문 변환:
**텍스트**
→<strong>텍스트</strong>
*텍스트*
→<em>텍스트</em>
1.1.2 테스트용 입력 텍스트
# 메인 제목
## 부제목
이것은 [위니브](https://weniv.co.kr) 튜토리얼입니다.
**중요한** 내용과 *강조할* 내용이 있습니다.
### 세부 내용
추가 설명은 [여기](https://example.com)를 참고하세요.
# 메인 제목
## 부제목
이것은 [위니브](https://weniv.co.kr) 튜토리얼입니다.
**중요한** 내용과 *강조할* 내용이 있습니다.
### 세부 내용
추가 설명은 [여기](https://example.com)를 참고하세요.
2. 로그 파일 분석기
2.1 프로젝트 개요
웹 서버 로그 파일을 분석하여 주요 통계 정보를 추출하는 프로그램을 만듭니다.
2.1.1 요구사항
- IP 주소별 접속 횟수 카운트
- HTTP 상태 코드별 분포 분석
- 시간대별 접속 통계
- 가장 많이 접속한 페이지 TOP 5
2.1.2 테스트용 로그 데이터
192.168.1.1 - - [28/Oct/2023:13:17:10 +0900] "GET /index.html HTTP/1.1" 200 2326
10.0.0.2 - - [28/Oct/2023:13:17:15 +0900] "GET /images/logo.png HTTP/1.1" 200 4662
192.168.1.1 - - [28/Oct/2023:13:17:20 +0900] "GET /api/data HTTP/1.1" 404 1032
10.0.0.3 - - [28/Oct/2023:13:18:10 +0900] "POST /login HTTP/1.1" 500 1205
192.168.1.1 - - [28/Oct/2023:13:19:10 +0900] "GET /about.html HTTP/1.1" 200 3044
192.168.1.1 - - [28/Oct/2023:13:17:10 +0900] "GET /index.html HTTP/1.1" 200 2326
10.0.0.2 - - [28/Oct/2023:13:17:15 +0900] "GET /images/logo.png HTTP/1.1" 200 4662
192.168.1.1 - - [28/Oct/2023:13:17:20 +0900] "GET /api/data HTTP/1.1" 404 1032
10.0.0.3 - - [28/Oct/2023:13:18:10 +0900] "POST /login HTTP/1.1" 500 1205
192.168.1.1 - - [28/Oct/2023:13:19:10 +0900] "GET /about.html HTTP/1.1" 200 3044
3. 데이터 정제 및 변환기
3.1 프로젝트 개요
비정형 데이터를 정형 데이터로 변환하는 프로그램을 만듭니다.
3.1.1 요구사항
- 다양한 형식의 날짜를 표준 형식으로 변환
- "2023/10/28", "28-10-2023", "Oct 28, 2023" → "2023-10-28"
- 이메일 주소 정규화
- 대소문자 통일
- 중복된 점(.) 제거
- 사용자명+태그 처리
- 전화번호 정규화
- 지역 번호 추출
- 국제 번호 처리
- 하이픈 통일
3.1.2 테스트용 데이터
Dates:
2023/10/28
28-10-2023
Oct 28, 2023
2023년 10월 28일
Emails:
TEST.user@EXAMPLE.com
test.test.user@example.com
user+tag@domain.com
user+spam@domain...com
Phone Numbers:
(02)1234-5678
02-123-4567
+82 10-1234-5678
01012345678
Dates:
2023/10/28
28-10-2023
Oct 28, 2023
2023년 10월 28일
Emails:
TEST.user@EXAMPLE.com
test.test.user@example.com
user+tag@domain.com
user+spam@domain...com
Phone Numbers:
(02)1234-5678
02-123-4567
+82 10-1234-5678
01012345678
4. 프로젝트 요구사항
4.1 공통 요구사항
- 주석을 포함한 명확한 코드 작성
- 예외 처리 구현
- 단위 테스트 케이스 작성
- 성능 최적화 고려
4.2 평가 기준
- 코드의 가독성과 유지보수성
- 정규표현식의 효율성
- 예외 상황 처리의 완성도
- 실행 성능