Идеи проектов для начинающих программистов. Часть 2

0
2106
views

Перевод второй части статьи «Starter Project Ideas for Developers».

Image by kalhh from Pixabay

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

Изучаем экосистему

Хватит писать все самостоятельно. Давайте посмотрим, как в наших проектах можно применить чужой код (и какой именно).

CSV-парсинг

Image by Pexels from Pixabay

Формат CSV (англ. «значения, разделённые запятыми») используется в программах для работы с таблицами (например, в Excel).

Попробуйте написать программу, читающую CSV-файлы и конвертирующую их во что-нибудь, применимое в коде (например, объект или массив). Пусть ваша программа осуществляет какие-нибудь манипуляции с данными, например, умножает каждое значение на два. Результат она должна выдавать в виде CSV-файла. Этот файл должен быть такого качества, чтобы его могли распознавать другие программы для работы с таблицами.

В чем смысл такого проекта

Таблицы и CSV-файлы очень распространены. Умение работать с ними при помощи кода это ценный навык, способный сэкономить вам кучу времени.

Вы можете написать весь код самостоятельно или же исследовать, какие библиотеки вам доступны. Например, если вы используете JavaScript/NodeJS, зайдите на сайт Node Package Manager, введите в строке поиска «CSV» и выберите, что вам по душе. Возможно, вы также захотите воспользоваться библиотекой вроде Lodash.

Занимаясь этим проектом, вы будете осваивать:

  • парсинг данных и манипуляции с данными с использованием CSV-файлов;
  • работу с библиотеками.

Как можно усложнить проект

Тут мало что можно добавить. Возможно, вы захотите создать собственную полномасштабную программу для работы с таблицами, но это будет как-то слишком. Просто найдите способ использовать полученные данные — отображать их на сайте или экспортировать не в CSV, а в XML или JSON.

Конвертер файлов

Хорош пользоваться чужими конвертерами! Напишите собственную программу для изменения форматов файлов. Количество вариантов безгранично. Например:

  • файлы с текстовыми данными: CSV ↔️ JSON ↔️ XML ↔️ пользовательский формат
  • изображения: JPEG ↔️ PNG ↔️ GIF ↔️ SVG
  • аудио: MP3 ↔️ WAV ↔️ OGG
  • видео: MP4 ↔️ WEBM ↔️ MOV
  • электронные книги/документы: PDF ↔️ MOBI ↔️ EPUB

Выберите формат, а затем поищите инструмент, с помощью которого можно его конвертировать. Если вам (не)повезет, может понадобиться написать код для парсинга и конвертации самостоятельно (например, если нужно конвертировать в какой-то пользовательский формат).

Предположим, вы выбираете направление аудио или видео. Популярным инструментом для этих форматов является FFmpeg. Во многих языках есть специальные библиотеки для работы с ним, например, fluent-ffmpeg для NodeJS.

В чем смысл такого проекта

Это проект, которым вы сможете пользоваться сами. Кроме того, его можно расширять, добавляя все новые форматы файлов по мере необходимости.

Занимаясь этим проектом, вы будете осваивать:

  • работу с инструментами, которых, возможно, нет в вашем языке программирования;
  • преобразование файлов;
  • использование файловой системы через код;
  • пересылку аргументов командной строки сторонним программам.

Как можно усложнить проект

  • Добавьте больше видов конвертаций.
  • Создайте варианты приложения для разных платформ.

Примеры:

Текстовый редактор

Image by sandeep darji from Pixabay

Создайте текстовый редактор, поддерживающий либо WYSIWYG, либо какой-то язык разметки (вроде Markdown) для стилизации текста.

В чем смысл такого проекта

Вы можете пользоваться этим редактором сами, например, писать в нем заметки для блога. Или использовать его в других проектах. Но даже если сами вы пользоваться этим редактором не планируете, все равно знание языка разметки вам пригодится.

Занимаясь этим проектом, вы будете осваивать:

  • текстовый input → парсинг с использованием сторонней библиотеки →стилизованный output
  • язык разметки, например, Markdown.

Как можно усложнить проект

  • Добавьте обычный функционал текстовых редакторов — автосохранение, подсчет слов, управление версиями.
  • Используйте еще одну библиотеку или API для проверки грамматики.
  • Добавьте менее распространенные функции, такие как таймер (можете, кстати, использовать тот, что создавали ранее).

Примеры:

  • StackEdit — онлайн-редактор Markdown.
  • Typora — Markdown-редактор с конвертацией текста по мере ввода.
  • Hemmingway Editor — уникальный редактор, помогающий писать более легкие для понимания тексты.
  • Cold Turkey — невероятно простой редактор, имеющий очень полезную дополнительную функцию: блокирование всех других приложений во время работы.

Веб-скрапер

Image by Ahmad Ardity from Pixabay

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

В этом проекте ваша задача — извлечь какие-то данные или из веба, или путем парсинга локальных текстовых файлов. Извлечь и, конечно же, как-то применить. Но прежде чем заняться сбором данных, вы должны усвоить, что веб-скрапинг с точки зрения законности пребывает в серой зоне. То есть, планируя скрапинг какого-то сайта, сначала убедитесь, что сайт это не запрещает. Можете заглянуть на страницу «terms of service» и посмотреть файл robots.txt (например, https://medium.com/robots.txt).

Вот сайт, который разрешает скрапинг и точно может быть использован для вашего проекта: Scrape This Site

Опять же, вы можете сделать все самостоятельно, но это еще та головоморочка…

В общем, процесс работы скрапера выглядит примерно так:

Запросить веб-страницу. → Распарсить HTML-файлы как простой текст или использовать виртуальный DOM, или headless браузер. → Забрать нужные данные и сохранить их. → Повторить.

Все может быть даже еще сложнее, но, к счастью, для веб-скрапинга существует много библиотек (см. примеры).

В чем смысл такого проекта

Не все сайты предоставляют API, и если вы хотите получить их данные, единственный способ — использовать веб-скрапинг.

Порой на страницах сайтов накапливается множество данных, не сохраненных ни в какой базе данных (например, игровые wiki). Тогда владельцы сайтов нанимают кого-нибудь, чтобы собрать и сохранить эти данные (для вас это вариант подработки).

Занимаясь этим проектом, вы будете осваивать:

  • скачивание и парсинг веб-страниц с использованием сторонних библиотек;
  • работу HTTP-запросов и асинхронного кода;
  • обработку ошибок и возобновление работы программы после остановки или ошибки;
  • многое другое, в зависимости от того, насколько сложный сайт вы будете скрапить и как будете использовать данные.

Как можно усложнить проект

Используйте полученные данные! (Да, больше и добавить нечего).

Примеры:

Привлекаем API

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

Прикладной программный интерфейс (API) имеет несколько определений, но для наших целей мы возьмем самое простое. (Мы не так давно публиковали очень доходчивое объяснение, что такое веб-API; рекомендуем ознакомиться. — Прим. ред.).

API это сторонний сервис, предоставляющий доступ к своим данным путем HTTP-запросов. Данные это то, что вы не можете легко написать или получить самостоятельно. Например, курс валют по всему миру или погода (у вас же нет собственных градусников во всех частях света, верно?).

В общем, API прекрасны, и с их помощью вы можете сделать свои проекты куда более интересными.

API-проекты

Image by William Iven from Pixabay

Можно было бы перечислить множество идей проектов, но полезнее будет привести список публичных API, которые вы можете смело использовать. Полистайте его, и у вас появится множество собственных идей проектов.

public-apis/public-apis

Если хотите сосредоточиться на чем-то, что ближе к вашим интересам, обратите внимание на API продуктов, которыми сами часто пользуетесь. Например, API есть у Twitch, Pinterest, Steam и т. д.

В чем смысл такого проекта

Использование сторонних API поднимет ваши проекты на новый уровень, они станут более интересными как для вас, так и для потенциальных пользователей.

Занимаясь этим проектом, вы будете осваивать:

  • использование сторонних данных / конечных точек API;
  • HTTP-запросы;
  • чтение документации.

А также вы осознаете, насколько бесконечны ваши возможности в плане создания проектов.

Как можно усложнить проект

  • Используйте несколько API вместе.
  • Используйте API ресурсов, которые вам нравятся (Steam, Twitch, Pinterest).
  • Постройте собственный API. Как вариант — сделайте так, чтобы он использовал и другие API.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here