image
источник КДПВ

Ранее на Хабре публиковался перевод статьи с Medium'а с подборкой из 8 проектов, которые можно реализовать, изучая новый язык или фреймворк. На мой взгляд, подборка очень неплохая. Проблема в том, что рассчитана она только на фронтендеров и мобильных разработчиков. А я из другого лагеря.

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

1. Движок блога


Да, свой «топ» я решил начать именно с блога. На мой взгляд, это один из простейших вариантов, чтобы изучить тонкости нового ЯП или фреймворка. Посмотрите внимательно на существующие решения и подумайте, что вы бы сделали лучше. Откройте исходники WordPress'а и перечислите, что в нём не так (всё в нем не так...).

Естественно, не стоит пытаться выкатить сразу готовый продукт с кучей фич. Опишите MVP, превратите его в сhecklist и вперёд! Кстати, этот совет относится и ко всем остальным пунктам.

2. IO-игра

image
картинка взята отсюда

Если вы хотите вникнуть в реактивное программирование, веб-сокеты и вот это всё, а чат писать слишком скучно, можно попробовать реализовать бэкенд для: крестиков-ноликов 15x15, морского боя или, даже, гомоку. Плюс перечисленных игр в том, что клиент к ним можно создать даже с минимальными знаниями JS.

Бонусом придется подумать над алгоритмом валидации игрового поля, что тоже не так просто, как кажется.

3. Парсер формата файла


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

Как пример приведу библиотеку на PHP для работы с 3d-моделями формата STL. Описание этого формата есть в интернете. Но, еще 4 года назад в сети была только одна рабочая библиотека, которая умела возвращать габариты и объем модели. Ее продавали по 10$ за копию. И она пользовалась большим спросом.

Если же придумать что-то новое не получается, стоит попробовать сделать свою реализацию уже существующего. Например, на сколько мне известно, до сих пор нету ни одной библиотеки на PHP, которая переварила бы >1GB XML-файл, не съев всю ОЗУ. Хотя, есть мнение, что stream piping, SPL и немного упорства должны решить эту задачу.

4. Telegram, Skype, Slack любой другой-бот


image
картинка взята отсюда
Вариантов тут может быть масса: прогноз погоды, напоминания, калькулятор, карточный «Пьяница», генератор одноразовых паролей для сайта и т.д.

Пусть каждый из них уже кем-то создан. Но, мы ведь с вами хотим научиться чему-то новому и добавить «веса» своему резюме. Не так ли?

5. Движок форума


Плюсы тут те же, что и у первого пункта.
Если вам это кажется банальным и ненужным, почитайте статью о том, как человек написал форум на ассемблере. Зачем? Просто потому что может. Зато теперь он может подтвердить свои знания ссылкой на интересную статью и репозиторий к ней. Это ли не мотивация?
image

6. Клон 10 Minute Mail

image

Наверное, всем известен прекрасный сервис 10minutemail. Он позволяет не светить свою почту при регистрации на неизвестных сайтах. Просто получите уникальный email на 10 минут и вводите его везде, не опасаясь навязчивых рассылок.

Если хочется написать что-то небольшое и несложное — это отличный вариант.

7. Генератор изображений с текстом



Очень часто в социальных сетях объявления публикуют в виде скриншота экрана телефона с открытым приложением заметок.
Можно сделать для этих людей сервис для генерации изображений из текста. В гугле я нашел подобное решение, но, на мой взгляд, здесь слишком много лишнего функционала. Достаточно формы для ввода текста и кнопки: «сделать хорошо!».

Кстати, начинающим фронтендерам предлагаю эту задачу для реализации без сервера.

8. Pomodoro



картинка взята отсюда
Метод «Помидора» — техника управления временем, предложенная Франческо Чирилло в конце 1980-х. Техника предполагает разбиение задач на 25-минутные периоды, называемые «помидоры», сопровождаемые короткими перерывами. — Википедия

Если кратко, то 2 часа работы делятся на 4 отрезка («помидора») по 25 минут, с перерывами в 5 минут. Дабы не засекать все вручную, в интернете есть куча приложений «Pomodoro».

И, я знаю, что этот проект можно создать без сервера. Но я предлагаю сделать это ради фана. И вообще, статья для начинающих бэкендеров, так что, логику пишите на сервере. И прикрутите push-уведомления! И Telegram-бота не забудьте!

9. Пишите свой блог


Нет, не движок блога, а именно технический блог. Один из лучших способов закрепить новые знания — попытаться объяснить их другому. Изучите что-то новое и перескажите это максимально простым и понятным вам языком. Это помогает структурировать в голове новые знания. К тому же, ваша статья может оказаться для кого-то полезной.

Вместо заключения


Когда-то я сам искал подобный список. Надеюсь, что хоть кого-то он вдохновит на написание чего-то свежего и своего. Также, буду рад увидеть продолжение списка в комментариях.

Комментарии (20)


  1. mariner
    20.12.2017 00:16

    про пункт 3 — github.com/alex-oleshkevich/php-fast-xml-parser
    парсит и не ест


    1. berezuev Автор
      20.12.2017 01:34

      Как минимум, у него нужно поправить тесты под PHP 7.x.
      Ну и, лично меня напрягают репозитории, которые не обновляются годами.


      1. mariner
        20.12.2017 01:43

        вы еще питоновские репы не видели, там 5 лет это норма =)


        1. berezuev Автор
          20.12.2017 01:49

          Видел, и не раз. А кто-то начинает новые проекты на Python 2.x, ссылаясь на «а мне его хватает». Но, зачем отталкиваться от плохого?)


    1. berezuev Автор
      20.12.2017 03:15

      Сначала не сообразил, что вы автор библиотеки. И очень удивился, увидев свежий коммит с выпиливанием поддержки PHP5.x )


    1. riky
      20.12.2017 03:57

      был удивлен, но даже simple_xml не жрет память, с большими файлами тоже работает поточно.


  1. foxmuldercp
    20.12.2017 01:21

    Для меня такими проектами стал как ни странно клон простого блога в стиле твиттера, фотогалерея (загрузка файлов, вот это вот всё) и маленькая простая домашняя бухгалтерия ввод доходов, расходов и категории + немного диаграмм для статистики.
    И два учебных проекта ещё по старому asp.net mvc 4 — каталог дисков и простой магазин книг, плюс в процессе распития пару литров чая мне обьяснили идеологию ReactJS на примере простейшего онлайн магазинчика с корзиной товара


  1. vlreshet
    20.12.2017 10:49

    Как ещё один вариант — небольшой интернет-магазин. Только не на CMS, а с нуля. Там будут и пагинация, и работа с сессией, и другие интересные вещи. Даже с биллингом можно поиграться, в dev-режиме!


  1. dzyanis
    20.12.2017 11:32

    Я бы рекомендовал писать свою базу-данных github.com/dzyanis/olyalya


    1. berezuev Автор
      20.12.2017 12:10

      Честно говоря, очень спорная рекомендация. Хотя, может я не прав. Нужно больше подробностей!)


  1. syno
    20.12.2017 13:11

    Я бы еще посоветовал свой хороший CRUD генератор написать — всегда пригодится.


  1. VisualIdeas
    20.12.2017 15:02
    +1

    А я бы посоветовал взять фид алиэкспресса и создал каталог товаров:
    Тут и придется почитать про разбор XML (CSV) большого размера через стриминг, и картинки и их обработка и хранение и поиск по параметрам (EAV и др варианты), сортировки (заодно прокачаетесь о том как работают индексы в БД)… etc


  1. aavezel
    20.12.2017 17:03

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


  1. trapwalker
    21.12.2017 11:35
    +2

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

    • Морской бой на турбо-паскале — да, тема вечная
    • Свой оконный движок а-ля TurboVision в текстовом, а потом и в графическом режиме
    • Свой рендер каркасных, а потом и залитых по гуро и фонгу 3D-моделей (да, это еще когда OpenGL казался чем-то сложным и непонятным, а S3Trio была нормальной видеокартой)
    • Свой фреймворк для 3d-игр (ага, и чтобы всё от афинных преобразований до формирования звуковой сцены)
    • Свой язык программирования с компилятором

    Понимаю, что это скорее про ботанов-энтузиастов, но напомнило.
    А относительно вашего списка я бы всё же посоветовал стараться не писать совсем уж велосипедов, если есть хоть какой-то выбор. Неужели так трудно найти свежую идею? Есть люди. которые генерят такие идеи пачками, а без реализации они ничто. Да хотя бы вот: сайт, где каждый может запостить свою идею с ТЗ и классификацией, а энтузиасты налетят. обсудят и покраудсорсят или форкнут. Чистый гитхаб как есть не совсем годится, нужны гайдлайны и формализация, особенно для новичков.
    Но давайте пробежимся по вашему списку и сделаем его свежее, интереснее:
    • 1. Не просто блог, а, например, пиринговая система дистрибьюции контента на основе блокчейна,
      такая, чтобы нельзя было заблочить
    • 2. Почему сразу морской бой? Можно же замахнуться на коллаборативную рисовалку на бесконечном поле. Если как следует заморочиться с балансом и рейтинговой системой, можно сделать крутое арт-явление масштабом сопоставимое с той самой миллионодолларовой домашней страничкой
    • 4. Просто добавлю: бота для закачек видео с ютуба и аналогов; бота для быстрого поиска мемасов по тегам; бота для анонимного анкетирования и знакомств; обучаемого бота-помощника со своим формальным синтаксисом команд; бота для трекинга почтовых отправлений; бота, выдающего флаги стран и городов по ключевым словам...
    • 5. Форум это будет или трекер или микроблог не важно, но всё это, ведь, можно делать пиринговым, децентрализованным, блокчейновым, шифрованным… — это куда интереснее и новее. И да, это тоже бэкенд. Что с того, что бэкенд у каждого свой и их много?
    • 8. Помидорки! Настоящий бэкендер всегда оправдает необходимость в бэкенде. И действительно, нужно же, чтобы настройки помидорового таймера были в облаке, чтобы таймер пробивался к вам через все ваши девайсы синхронно, чтобы активность трекалась по вторичным признакам (сигналы с клавиатуры и мыши, с камеры, с микрофонов, с геолокации телефона), а помидоры выравнивались и подстраивались под вас сами. Но тут что-то меня понесло.
    • 9. Блог — это здорово, но, например, подкастов по такой тематике сильно меньше. Вообще не хватает чего-то вроде смеси подкаста и твиттера, чтобы в режиме краудсорс-новостей можно было получать интересное везде и всегда.

    Идеи — моё хобби. Идеи связанные с технологиями и IT. Кому нужны идеи — обращайтесь=) Трындеть — не мешки ворочать.


    1. berezuev Автор
      21.12.2017 12:01

      Лучшего дополнения к статье и представить сложно.


    1. unsafePtr
      21.12.2017 12:31

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


      1. akryukov
        21.12.2017 12:44

        Обработка показаний от множества датчиков (например температуры) и построение температурной карты в реальном времени.
        Высокие нагрузки они относительны. При отсутствии денег можно ограничить процесс по ресурсам. Проблема только в поставщиках данных. Кто нагружать то будет?


      1. trapwalker
        21.12.2017 13:43

        Вот видите, тут уже народ подтянулся со своими темами.
        Для ваших запросов я бы посоветовал пиринговый мессенджер с поддержкой недоказуемости факта коммуникации.
        Клиенты через открытые stun-сервера пробивают свои NAT'ы и регистрируются в DHT.
        Идея в том, чтобы пиры постоянно связывались друг с другом случайным образом и пересылали данные, которые выглядят как шум. При этом сеть реализует направленный обмен трафиком, который нельзя ни перехватить, ни проследить, ни доказать что таковой обмен между двумя конкретными пирами вообще был.
        Тут вам и TCP, и hiload, и злободневно.
        Только не пропадайте, если будете делать. Могу советами и архитектурой поделиться…


  1. saege5b
    22.12.2017 13:11

    Вот кто-бы написал аналог покойных Яндекс.Закладок… :)


    1. pudovMaxim
      23.12.2017 00:27

      Яндекс.Закладки — хороший получился бы стартап в сфере наркотеха.