
- Категории
- Источники
- Все курсы
- Разделы
- Книги
Узнайте все, что вам нужно знать, чтобы начать практиковать TDD в своих проектах Ruby.
Видео курс Ruby Essential предназначен как для совершенных новичков в программировании, так и для начинающих специалистов, которые уже сталкивались с основами программирования в других языках и хотят познакомиться с базовыми понятиями языка Ruby. Также данный курс будет полезен для тех, кто в дальнейшем хочет углубить свои знания и начать работу в веб-разработке с фреймворком Ruby on Rails. По завершению этого курса вы сможете полностью владеть б
Мы создаем HTTP-сервер, который может обслуживать статические файлы с диска, а также динамические приложения в стиле cgi-bin. Компонент сетевого сервера создается с использованием системных вызовов сокетов (socket, setsockopt, bind, listen и accept), а не с использованием предварительно созданных TCP-серверов, доступных в стандартной библиотеке Ruby.
Мы создаем Shell в стиле оболочки Bourne, Bash, zsh и тд. Она поддерживает (1) выполнение команд с произвольным числом аргументов, (2) цитирование этих аргументов и (3) объединение команд в произвольно длинные конвейеры, вывод одной команды становится входом следующей. Для этого требуется написать парсер, который мы делаем с Parslet, библиотекой парсеров PEG.
Мы создаем текстовый редактор с нуля. Он включает в себя базовое текстовое редактирование: перемещение курсора, ввод текста, backspacing а также крок назад.
Мы создаем автономный компрессор данных и декомпрессор с нуля. Схема сжатия основана на Huffman coding, который используется в gzip, zip и многих других форматах сжатия. Не требуется предварительного знания Huffman coding или сжатия данных. Исходный код, включая вспомогательные файлы, не показанные в скринкасте, доступен в GitHub.
Мы строим небольшой компилятор из стандартных компонентов: токенизатор, анализатор и генератор кода. К концу мы успешно скомпилируем некоторый код на нашем языке, создавая вывод JavaScript, который мы можем выполнить. Большинство компиляторов сильно оптимизированы для скорости, но наши оптимизированы для удобства чтения и понимания.