20 продвинутых проектов для освоения сложных концепций программирования

Проекты  —  это лучший способ учиться.

Создайте что-нибудь сами, и вы узнаете намного больше, чем написано в книгах и руководствах. При выполнении проектов легче запоминаются концепции и приходит понимание, что делать, когда что-то идет не так.

В интернете есть много идей проектов для начинающих разработчиков. Опытным они тоже пригодятся!

Вот список из 20 проектов для развития навыков разработки ПО.

  1. Используйте библиотеку для создания сервера авторизации OAuth 2. Реализуйте потоки согласно спецификации OAuth.
  2. Извлеките данные со страниц веб-ресурсов, очистите и загрузите в инструмент анализа данных. Затем создайте визуализации, например облака́ слов из статей «Википедии».
  3. Создайте Dockerfile и docker-compose.yml для веб-приложения с базой данных, слоем кеширования, сервером nginx/Apache, API серверной части и клиентской частью JavaScript.
  4. Напишите скрипт bash/zsh для обзора каталогов, перебора файлов, выполнения команд в этих файлах и с возможностью принимать аргументы и флаги параметров.
  5. Разработайте клиентский компонент для открытия всплывающего окна, приема данных от пользователя и выдачи информации на главную страницу, а также iframe, встраиваемый на сайт для получения с него данных.
  6. Установите куки защищенного сеанса (только для сервера) в качестве JWT с информацией о разрешенных действиях пользователя.
  7. Реализуйте передачу конфиденциальной информации между двумя API, используя для подписи данных HMAC.
  8. Сделайте решатель судоку, используя конкурентность/потоки для быстрого заполнения матрицы.
  9. Реализуйте очередь с возможностью удаления слева и справа, используя ручное выделение памяти на низкоуровневом языке.
  10. Запустите регрессионные модели по данным переписи для прогнозирования численности населения.
  11. Реализуйте на Raspberry Pi простой веб-сервер для включения/выключения света с помощью API-запроса.
  12. Напишите и оркестрируйте в Airflow задачи по извлечению новых твитов (используя расписание или команду) одновременно для разных дескрипторов Twitter. Сохраните твиты в хранилище данных. Бонус  —  добавление этапа анализа «отображение-свертка».
  13. Создайте базу данных временных рядов и API для приема и хранения логов из приложения. Обрабатывайте одновременные запросы чем-то вроде очереди. Для быстрого поиска реализуйте Elasticsearch.
  14. Напишите и установите собственную программу для командной строки. Добавьте ее в $PATH. Бонус  —  размещение программы в сети и поддержка wget, curl или даже brew install.
  15. Разверните любой из этих проектов  —  или их все  —  у крупного облачного провайдера (AWS, GCP, Azure, Digital Ocean и др.) и узнайте о совместной работе различных облачных служб, предоставлении ими виртуальных вычислительных узлов и т. д. Настройте в облаке CI/CD. Но это может быть дорого, поэтому обязательно все изучите!
  16. Пишите тесты для приложений: модульные, интеграционные и сквозные. Используйте заглушки, параметризацию и запускайте небольшие, быстровыполняемые тесты на сервисах непрерывной интеграции CircleCI, TravisCI, Jenkins и др.
  17. Изучите PostGIS и запускайте SQL-команды с геопространственными данными. Формат возвращаемых данных  —  GeoJSON. Для отображения результатов подойдет MapboxJS.
  18. Используйте для набора данных GraphQL API. Или добавьте в проект клиентской части слой данных Apollo, чтобы помещать в буфер запросы к REST API.
  19. Создайте средство ИИ для беспроигрышной игры в крестики-нолики с простым алгоритмом минимакса. Протестируйте API программно со всеми вариантами пользовательского ввода, то есть пройдите все возможные варианты игры.
  20. Напишите программу поиска преобладающего цвета на изображении, заливки методом «наводнения» этого цвета другим и записи результата. Реализуйте возможность работы программы одновременно с несколькими изображениями.

Пробуйте свои силы. Возможностей  —  масса!

Читайте также:

Читайте нас в TelegramVK и Дзен


Перевод статьи Bennett Garner: 20 advanced coding projects to expose you to complex concepts

Предыдущая статьяКак работает маршрутизация Express
Следующая статьяКак быстро создать PDF-файл с помощью Python