Я годами хранил личный список идей для программных проектов. Эти проекты не являются мечтой о том, как разбогатеть. Нет. Это проекты для обучения. Маленькие проекты. Вещи, которые я хотел бы видеть, существуют. Проекты, которые немного растянут мои навыки, но не требуют дополнительных 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.
Дайте мне знать, что вы думаете, и вдохновляет ли это вас на создание чего-либо.
Удачного строительства!