Я годами хранил личный список идей для программных проектов. Эти проекты не являются мечтой о том, как разбогатеть. Нет. Это проекты для обучения. Маленькие проекты. Вещи, которые я хотел бы видеть, существуют. Проекты, которые немного растянут мои навыки, но не требуют дополнительных 20 часов в неделю.

Я знаю, что лучше всего учусь, создавая вещи, пытаясь понять, чего я не знаю, и проводя онлайн-исследования, когда я застрял.

Когда дело доходит до изучения нового языка программирования, библиотеки или фреймворка, знание того, что является подходящим проектом для обучения, может быть ошеломляющим по сравнению с изучением нового! Поэтому я собрал более 100 проектных идей разной сложности и напечатал их в бесплатной книге под названием Projectbook. Это бесплатно и с открытым исходным кодом.

Проекты содержат спецификации, концепции, примеры и макеты, которые я разработал, чтобы вдохновить вас на создание вещей. От интерфейсов командной строки до приложений и игр — я собрал все проекты, которые мне лично интересны.

📺 Предпочитаете видео интро?

Хорошо, давайте углубимся в некоторые примеры некоторых проектов. Я не могу поместить 100 проектов в один пост в блоге, потому что это было бы слишком сложно, но вот несколько примеров того, чего ожидать:

HTTP-интерфейс командной строки

Суть: напишите интерфейс командной строки, который отправляет сетевые HTTP-запросы и отвечает выводом.

curl и wget — это распространенные программы, используемые для передачи данных на сервер или с сервера, например для загрузки файла по протоколу HTTP. Этот проект пишет что-то похожее на них. Начните только с запросов GET, а затем идите оттуда.

Я всегда называю эту идею httpal, потому что это весело. Это ваш приятель для запросов!

Спецификация

Это может выглядеть примерно так:

httpal https://openlibrary.org/books/OL7353617M.json

Это сделает запрос GET к этой конечной точке API для Fantastic Mr. Fox и вернет JSON, который затем можно будет вывести в файл, например:

httpal https://openlibrary.org/books/OL7353617M.json > fmf.json

Концепции

  • Выполнение сетевых запросов, часто доступных в стандартной библиотеке языка.
  • Вывод тела ответа
  • Основные взаимодействия CLI

Дополнительный кредит

  • Следить за перенаправлениями
  • Поддержка различных форм аутентификации и заголовков запросов
  • Поддержка других методов HTTP, таких как PUT, POST и DELETE.
  • Поддержка указания файла тела запроса, например файла JSON, для включения в тело запроса.
  • Поддержка других протоколов! Возможно, лучшим именем было бы reqbud. 😬
  • Что, если программа специально предназначена для тех, кто взаимодействует с API-интерфейсами GraphQL? Это означает, что он всегда будет отправлять POST в одну и ту же конечную точку, но позволяет настраивать запросы и переменные. gqlpal???
  • Что, если бы был способ загружать запросы для проекта из множества файлов спецификаций и легко выполнять эти запросы? Как CLI-версия Почтальона или Лапы.

РецептХаб

Хотите создать полнофункциональное веб-приложение? Хорошо!

Суть: рецепты на GitHub! Но для еды, а не для софта.

Я люблю готовить и печь. Это серьезно так весело и креативно. Я люблю брать рецепты и корректировать их по своему вкусу. Прелесть рецептов в том, что они не защищены авторскими правами! Фотографии, описания и т. д. есть, а реальных ингредиентов и шагов нет. Это всегда заставляет меня думать о том, как здорово было бы, если бы существовало веб-приложение, в котором люди могли бы делиться своими рецептами. Он будет сосредоточен на быстрой загрузке, просмотре по тегам, сборе избранных, а также на копировании и изменении чужих рецептов.

Я голоден и взволнован, просто пишу это!

Мокапы

Есть много функций, которые могут существовать для этого приложения, и смоделировать их все было бы много, но вот суть того, на что могут быть похожи некоторые из ключевых элементов пользовательского интерфейса (просмотр ваших рецептов, просмотр рецепта и форма рецепта):

Спецификации

  • Учетные записи пользователей (аутентификация)
  • Управление рецептами
  • Модель данных для рецепта: Название, Описание, Ингредиенты, Инструкции
  • Просмотр рецептов другого пользователя
  • Разветвите рецепт (создайте копию, чтобы отредактировать и настроить по своему вкусу, но сохранить ассоциацию с оригиналом)

Концепции

  • Аутентификация
  • Разрешения
  • Управление данными
  • Сетевой график

Дополнительный кредит

  • Добавьте возможность добавлять в избранное рецепты других пользователей и просматривать избранное
  • Больше метаданных, таких как время подготовки и время приготовления (и, следовательно, общее время)
  • Загрузка изображения для рецепта
  • Теги для таких вещей, как веганство, завтрак и т. д., где вы можете найти похожие рецепты.
  • Если вы создадите серверную часть с помощью API, вы сможете создать мобильное приложение, которое его использует! Это было бы очень удобно при готовке на кухне.
  • Функция мечты: при просмотре рецепта в мобильном приложении не позволяйте телефону переходить в спящий режим.

Найдите более 100 проектов в Projectbook.

Дайте мне знать, что вы думаете, и вдохновляет ли это вас на создание чего-либо.

Удачного строительства!