Часть 1. Написание собственного фреймворка

Введение