SSU CLI는 명령줄 인터페이스 도구입니다. 중요한 학부 공지사항을 놓치지 않도록 도와주는 기능과 집중 학습을 위한 뽀모도로 타이머 기능을 제공하여, 학습 습관 형성을 지원합니다.
숭실대학교 소프트웨어학부의 최신 공지사항을 놓치지 않도록 알려줍니다.
- 자동 스크래핑: 숭실대학교 소프트웨어학부 홈페이지에서 공지사항을 자동으로 스크래핑합니다.
- Telegram 알림: 최신 공지사항 7개를 지정된 Telegram 채널 또는 채팅방으로 즉시 전송합니다.
- 상세 정보 포함: 공지사항의 제목, 원본 링크 및 게시 타임스탬프를 메시지에 포함하여 편리하게 확인할 수 있습니다.
- Markdown 형식: Telegram 메시지는 가독성을 높이기 위해 Markdown 형식으로 깔끔하게 포맷팅됩니다.
집중력 향상에 효과적인 뽀모도로 기법을 CLI 환경에서 편리하게 사용할 수 있도록 돕습니다.
- 25/5분 주기: 표준 25분 작업 / 5분 휴식 주기를 따르며, 필요에 따라 조정 가능합니다.
- 시각적 타이머: ASCII 아트를 활용하여 터미널에 타이머의 진행 상황을 시각적으로 표시합니다.
- 컬러 코딩: 작업 세션과 휴식 세션을 명확히 구분할 수 있도록 컬러 코딩을 적용했습니다.
- 동기 부여 메시지: 작업 또는 휴식 세션 중에 무작위로 재미있고 동기 부여가 되는 한국어 메시지를 표시하여 활력을 더합니다.
선택 이유:
- 성능 및 효율성: 웹 스크래핑 및 터미널 UI와 같이 성능이 중요한 애플리케이션에 적합하다 판단
- 동시성 지원:공 지사항 스크래핑 중에도 타이머가 작동할 수 있는 환경이 필요하다 판단
각 크레이트는 특정 기능 구현을 위해 Rust의 강력한 생태계를 활용했습니다.
tokio: 비동기 런타임을 제공reqwest: HTTP 클라이언트scraper: HTML 파싱 및 DOM 조작을 위한 라이브러리crossterm: 크로스 플랫폼 터미널 UI 라이브러리rustyline: 명령줄 입력 인터페이스 구현chrono: 날짜/시간 관리 라이브러리serde_json: `Telegram API와 통신할 때 JSON 데이터를 쉽게 처리
SSU CLI를 실행하려면 다음 환경이 필요합니다:
- Rust 환경: Rust 프로그래밍 언어 및
cargo(Rust 패키지 관리자)가 설치되어 있어야 합니다.
SSU CLI의 fetch-notice 기능을 사용하려면 Telegram 봇 설정이 필요합니다.
-
.env파일 생성: 프로젝트 루트 디렉토리에.env파일을 생성하고 다음 변수를 설정합니다.TELEGRAM_TOKEN=your_telegram_bot_token TELEGRAM_CHAT_ID=your_telegram_chat_idyour_telegram_bot_token: BotFather를 통해 Telegram 봇을 생성하고 발급받은 토큰을 입력합니다.your_telegram_chat_id: 공지사항 알림을 받을 개인 채팅방 또는 그룹 채팅방의 ID를 입력합니다. (예: Get My ID Bot 사용)
-
프로젝트 클론:
git clone [SSU CLI GitHub Repository URL] cd ssu-cli -
의존성 설치 및 프로젝트 실행:
cargo run
cargo run명령어를 실행하면 SSU CLI가 시작되고 명령어를 입력할 수 있는 프롬프트가 나타납니다. -
사용 가능한 명령어: 프롬프트에서 다음 명령어를 입력하여 기능을 실행할 수 있습니다:
help: 사용 가능한 명령어 목록과 간략한 설명을 표시합니다.fetch-notice: 숭실대학교 소프트웨어학부의 최신 공지사항을 스크래핑하여 Telegram으로 전송합니다.timer: 뽀모도로 타이머를 시작합니다.exit: SSU CLI 프로그램을 종료합니다.