1. AI-Pacman 휴리스틱 : Project Pacman 1에서 Pacman 에이전트는 미로에서 경로를 검색하여 특정 목적지에 도달하고 음식을 효율적으로 수집합니다. 다양한 종류의 Pacman 시나리오를 충족하기 위해 일반 검색 알고리즘이 구현되었습니다. 우리는 이 게임을 모델로 사용하여 다양한 검색 알고리즘이 어떻게 작동하는지 이해합니다. 이 과제에서 팩맨 에이전트는 특정 위치에 도달하고 음식을 효율적으로 수집하기 위해 미로 세계를 통과하는 경로를 찾습니다. 이 과제는 Python3에서 구현되었습니다.
2. Bit-Torrent-Mechanism : 프로그램은 다른 피어로부터 파일의 모든 다른 청크를 다운로드하고 이를 결합한 다음 파일을 노트북/로컬 디렉터리에 저장합니다. 이 과제의 목적은 BitTorrent의 메커니즘을 이해하는 것입니다. BitTorrent는 파일을 호스팅하는 피어 목록이 포함된 토렌트 파일을 얻고, 다른 피어로부터 파일의 다른 청크를 다운로드합니다. 여기서 사용되는 소프트웨어는 python3과 linux 환경입니다.
3. 클라이언트-서버-네트워크 : 서버는 포트를 수신하고, 포트 번호를 입력으로 서버 프로그램이 실행되고, 클라이언트는 TCP 연결을 만들고 서버는 클라이언트에게 파일을 보냅니다. 서버 역할 외에도 서버는 클라이언트에게 파일을 보냅니다. 프록시처럼 작동할 수도 있습니다. 클라이언트와 서버 프로그램은 모두 Python3으로 구현되었으며 서버에서 동시 연결을 지원하기 위해 소켓 프로그래밍, 다중 스레딩을 사용했습니다.
4. 더미 항공사 관리 시스템 프로토타입 : 이 프로젝트에서 우리는 공항, 항공사 및 항공편과 관련된 데이터를 저장하고 검색하는 더미 항공사 관리 시스템을 개발했습니다. 기본적으로 이 아이디어를 선택한 동기는 다음과 같은 시스템을 개발하는 것이었습니다. 시각적으로 매력적이고 사용하기 쉽습니다. 이 시스템에는 두 가지 유형의 사용자가 있습니다. 1) 고객 및 2) 관리 페이지와 관리자는 새 항공편 등을 수정할 수 있는 액세스 권한을 부여했습니다. 이 프로젝트에서 사용된 데이터의 기본 소스는 2015 항공편 데이터세트만 해당하며 다음에서 찾을 수 있습니다. 이 프로젝트에 사용된 Kaggle 소프트웨어는 쿼리를 위한 MY SQL 워크벤치, 웹 애플리케이션을 생성하는 데 유용한 도구와 기능을 제공하는 Python 웹 프레임워크, 프런트엔드 웹 페이지를 위한 HTML입니다.
5. 교통 밀도 추정-opencv : 주로 이 코드에는 두 부분이 있습니다. 교통 모니터링에 필요한 기본 것은 실제 도로에 배치되는 카메라 피드이지만 도로와 같이 좋은 위치에 배치되는지 확인할 수는 없습니다. 시청할 대상은 완벽한 직사각형이고 카메라는 평면도를 수신합니다. 알고리즘의 효율적인 작업을 위해 제거해야 할 다른 것들이 그림에 많이 있을 수 있습니다. opencv는 직사각형 프레임에 가장 적합하므로 교통 밀도 추정과 같은 작업의 경우 먼저 소프트웨어에서 카메라 각도를 수정하고 그림을 잘라서 추가 항목을 제거하는 것이 중요합니다. 저장소 중 하나에는 카메라 각도 수정 및 프레임 자르기 코드가 포함되어 있습니다.
하위 작업2: 배경으로 사용되는 비디오에서 추출된 이미지입니다. 추가 부분에서는 유틸리티 런타임 트레이드오프 분석이 수행되었습니다.
6. 클라우드 컴퓨팅 프로젝트 : 간단하게 설명하자면, 가상 머신을 사용하는 사람들에게 도움이 되는 도구를 만드는 프로젝트였습니다. 가상 머신은 다른 컴퓨터 내부에서 실행되는 컴퓨터와 같습니다. 사람들이 각각 별도의 컴퓨터를 사용하지 않고도 다양한 운영 체제나 소프트웨어를 실행할 수 있다는 점에서 유용합니다.
우리가 만든 도구는 스냅샷 API라고 불렸습니다. 특정 시점에 가상 머신의 사진을 찍는 카메라와 같습니다. 이 사진을 스냅샷이라고 합니다. 스냅샷은 사람들이 가상 머신의 상태를 저장하고 나중에 다시 돌아올 수 있도록 해주기 때문에 유용합니다. 예를 들어, 누군가가 가상 머신에서 프로젝트를 진행하고 있는데 잠시 쉬고 싶다면 진행 상황을 잃지 않고 스냅샷을 찍어 나중에 다시 돌아올 수 있습니다.
우리는 Rust라는 프로그래밍 언어를 사용하여 스냅샷 API를 만들었습니다. Rust는 안전하고 빠르기 때문에 이런 종류의 프로젝트에 적합한 언어입니다. 이는 API에 버그나 보안 문제가 발생할 가능성이 적고 빠르게 작동한다는 것을 의미합니다.
우리는 프로젝트를 5개의 주요 단계로 나누었습니다. 첫 번째 단계는 테스트에 사용할 수 있는 기본 가상 머신을 만드는 것이었습니다. 두 번째 단계는 사람들이 가상 머신을 일시 중지하고 재개할 수 있는 기능을 추가하는 것이었습니다. 세 번째 단계는 스냅샷 API를 더 작고 효율적인 프로그램으로 만드는 것이었습니다. 네 번째 단계는 여러 가상 머신을 동시에 실행할 수 있는 웹 서버를 만드는 것이었습니다. 마지막 단계에서는 중복 제거라는 기술을 사용하여 스냅샷 API를 더욱 효율적으로 만드는 것이었습니다. 즉, 두 스냅샷이 매우 유사한 경우 서로 다른 부분만 저장하면 됩니다.
우리가 만든 스냅샷 API는 프로젝트의 여러 부분에서 사용되었습니다. 예를 들어 로드 밸런서는 이를 사용하여 가상 머신을 이동하고, 프런트엔드는 이를 사용하여 기본 이미지에서 새 가상 머신을 생성하며, 부정 행위 방지 시스템은 이를 사용하여 누가 가상 머신을 사용하고 있는지 모니터링했습니다.
전반적으로 프로젝트는 성공적이었습니다. 우리는 마감일 이전에 모든 목표를 완료했고, 안전하고 빠르며 효율적인 스냅샷 API를 만들었습니다. 자세한 내용은 저장소를 살펴보세요.