Перейти к содержанию

 50+ идей Pet-проектов для программиста часть 1

50+ идей Pet-проектов для резюме и прокачки навыков

Всем привет ! Как известно, научиться чему-либо без практики невозможно и программирование не исключение. Но что именно реализовывать и какие проекты брать ? На самом деле довольно популярный вопрос и единого мнения на этот счет нет. Одни говорят — «Только не создавайте очередную социальную сеть/движок блога или приложение ToDo» или «Создайте какое-то приложение которое нужно именно вам в данный момент времени.» Другие им отвечают — «А какая разница что делать ? Если создавая очередной facebook вы прокачаете нужные вам скиллы, то это именно то что вам и нужно делать !».

Что и до какого состояния доводить.

Самое главное, ваше приложение должно иметь какой-то законченный вид, это очень важно. Приложение должно решать какую-то пусть небольшую проблему и что-то уметь делать. На этом этапе не стоит особо переживать за качество кода. В конце концов, это ведь ваше начало пути как разработчика. Второе, начав реализовывать свой «facebook» не пытайтесь объять необъятное. Если в начале всё кажется вполне простым, «Ну что там, регистрация, авторизация, несколько полей в базе с личной информацией, аватарка». То впоследствии всегда начинают всплывать определенные нюансы и можно уйти в долгострой. Визуально вы может даже получите точную копию «фейсбука», а на деле абсолютно нерабочее приложение. При этом затратите месяцы, не забывайте что в фейсбуке работает более 40 тысяч человек, а вы всего один. Делайте самую простую, самую малую часть, но чтобы всё работало и постепенно можно обрастать функционалом. Очень важно видеть свой прогресс.

Pet-проекты

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

Приложения:
Калькулятор.

Здесь всё понятно. Наверно каждый делал свой калькулятор. Считаете что это слишком просто ? Попробуйте добавить сюда функции инженерного калькулятора. Добавьте логарифмы, факториал, перевод в системы счисления, округления. Попутно решите вопрос как и в каких типах хранить данные, как сделать проверку чтобы в запись дроби нельзя было ввести более 1 точки и прочее. Возможно наткнетесь на случаи когда сложив два числа с плавающей точкой результат вас неприятно удивит. В общем мелкие, не совсем очевидные сначала вещи.

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

Здесь вы можете взять за основу любой текстовый редактор, хотя бы стандартный блокнот. Что здесь именно делать ? Набор текста, сохранение, открытие, создание нового файла. Поиск по тексту. Поиск снизу, сверху, с учетом и без учета регистра. Особым шиком будет написать редактор где, например, будет подсвечиваться синтаксис. В общем возьмите любой текстовый редактор и подсмотрите какой функционал вы бы хотели реализовать у себя.

Системы счисления.

А также перевод между системами. На самом деле, это можно реализовать и внутри обычного калькулятора. Но и в качестве отдельного приложения вполне имеет право на жизнь. Особенно если помимо двоичной, восьмеричной и шестнадцатеричной системы счисления вы добавите ещё и троичную, которая в свою очередь может быть симметричной или несимметричной. А можете и вовсе добавить произвольный выбор системы счисления. Только не используйте готовые библиотеки для перевода между системами.

Шифраторы с помощью различных алгоритмов.

А вот это вообще довольно интересная вещь. Возможностей зашифровать сообщение довольно много, начиная от примитивного шифра Цезаря которая шифруемые символы сдвигаются по алфавиту на какое-то постоянное значение. И до вполне серьезных алгоритмов шифрования. Тема на самом деле довольно глубокая и копать в ней можно бесконечно далеко. Можно также реализовать свой примитивный мессенджер используя данные алгоритмы.

Почтовый клиент.

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

Сканер портов.

Довольно интересный проект. Сканировать все порты на компьютере, определять какие на них висят приложения, номер порта, статус.

Каталогизатор.

Тут на самом деле можно расшоркаться в любую сторону и на столько глубоко, на сколько будет желание. Что именно каталогизировать ? Да что угодно, можете взять музыку, фильмы. Сделать возможность скачивания обложек, получение данных по длине проигрывания файла. Год выпуска произведения, имя артиста или режиссера, акторов, получение рейтинга в случае если это фильм. Где всё это брать ? Например на IMDB, в случае с музыкой думаю тоже есть несколько вариантов. Далее можно создать функции поиска, сортировки, выборки нужных данных на основе каких-то запросов. Заодно прокачаете свои навыки в работе с базами данных.

Банковское приложение.

Думаю многие из вас знают как они выглядят. На мой взгляд, тут можно пойти двумя путями.

Вариант 1: пишем свое небольшое веб приложение, а-ля банк Bank of Petroff. Пробуем спроектировать под это дело базу данных, продумываем как и какие данные нужно хранить. Можно реализовать двухфакторную аутентификацию, разлог через 10-15 минут неактивности и прочее. Далее можно написать свое десктопное или мобильное приложение, которое будет подключаться к вашему веб-приложения через API или ещё каким образом и после аутентификации отображать определенную информацию.

Вариант 2: на сегодня довольна популярна тема с фондовым рынком и акциями. Вы можете написать приложение, веб, десктоп или мобильное. Суть которого заключается в том, что у пользователя создается виртуальный счет, но играет он по реальным котировкам. Это будет довольно таки серьезное приложение. Где брать данные о котировках ? Можно нагуглить несколько сервисов где данные о ценах можно получать через API. Любите крипту ? Сделайте тоже самое с учебным счетом но с криптой на API от coinmarketcap.

Галерея изображений.

Также может быть как desktop, так и мобильное приложение или веб-приложение. Можно сделать какой-нибудь сильно облегченный аналогв ACDSee или irfanview. Просмотр изображений, данные об изображении, изменение имени файла и удаление прямо из приложения. Можно сделать галерею под Android, если она при этом не будет тормозить, будет вообще замечательно.

To-Do лист.

Список каких-то дел или задач. Особо тут даже добавить нечего.

Веб-браузер.

Здесь есть несколько вариантов для реализации:

Во-первых, во многих IDE-шках есть свой готовый веб-браузер который одной командой в коде можно заставить перейти на какую-то страницу. Далее читаем документацию по этой библиотеке/классам и постепенно наращиваем какой-то функционал. Просмотр кода, поиск по странице, сохранение страницы, закладки, да много чего.

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

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

Четвертый вариант, реализовывать всё самому, на самом деле это утопия. Опять же, в качестве учебного проекта вам это надоест уже на этапе парсинга HTML кода. Я даже не говорю по CSS/JS и мультимедиа и про то что это ещё надо как-то выводить, причем корректно. Как пишут при выполнении опасных трюков, «Не пытайтесь повторить это дома». Даже Microsoft годами безуспешно мучился с IE, про который говорили что он нужен только для скачивания другого браузера. А вот первые три варианта вам вполне по силам.

Файловый проводник.

Аналог стандартного проводника Windows или что-то в стиле классического Far manager. С полным набором функций для работы с папками и файлами. Создание, удаление, переименование, копирование. Примерный функционал и меню можете подглядеть у любого файлового менеджера. Впоследствии, на базе этого проекта можно сделать ещё и архиватор.

Архиватор

Архиватор можно попробовать сделать уже на базе своего файлового менеджера. Так получится вдвойне интересно и у вас уже будет готовый интерфейс. Для начала хватит двух базовых функций, запаковка и распаковка в zip формат. Либо объединить несколько файлов в один архив вообще без сжатия. При желании сделать что-то более крутое появляется огромное поле для маневра. Вы можете добавить возможность запаролить архив, зашифровать имена файлов, разбить архив на тома. Можете изучить различные алгоритмы сжатия данных, а их не так уж и мало и добавить поддержку других форматов. Можете реализовать возможность самораспаковывающихся архивов. Ну и прямо самая вишенка на торте, возможно вы придумаете какой-то свой алгоритм сжатия данных. Пусть он будет самый медленный и не оптимальный, вообще не имеет значения.

Клавиатурный тренажер.

Идея приложения заключается в том, чтобы научить человека быстрому набору/вводу данных с клавиатуры. Человек нажимает какую-то клавишу, вы это перехватываете и как-то обрабатываете. Или наоборот, вы поочередно отображаете какие-то символы, а пользователь должен их вводить. Постепенно повышаете сложность добавляете другие буквы/цифры. В нулевых годах в этой области была популярна программа «Соло на клавиатуре», благодаря которой я довольно быстро освоил 10 пальцевый набор текста. А через некоторое время и вовсе начал печатать не глядя на клавиатуру. Кто знает, может и ваше приложение кому-то очень сильно поможет. Как минимум можете протестировать его на своих близких, кто печатает одним пальцем пристально рассматривая клавиатуру.

Календарь.

Здесь тоже на первый взгляд всё понятно и особых сложностей нет. Но помимо календаря, на его базе можно сделать записную книжку с уведомлениями куда угодно. Через месяц у вас намечено что-то не особо нужное, но проигнорировать это будет не вежливо ? Добавьте уведомление о нём за пару дней до события с отправкой по разным каналам.

Учет калорий и физической активности.

Простенькое фитнес приложение. Заносите данные по различным видам физической активности, калорийности продуктов. Пользователь вводит данные, например, творог 200 грамм 9% жирности. А программа сразу подставляет данные сколько это калорий. Можно сделать индикатор на сколько этот продукт полезен. Можно сделать уведомление сколько человек ещё можно съесть сегодня. Само собой человек при регистрации должен как минимум указать свой вес и цель. Можно выдавать в конце дня или на следующее утро отчет.

Например, «За вчерашний день у вас недобор {x} грамм белка».  Или «За последние {x} суток вы не потребляли сложные углеводы». Также дать возможность пользователю вводить активности и сколько калорий он за это время сжег. Можете даже сделать какую-то красивую инфографику или анимацию. Что-то в духе сегодня вы потратили на 90 калорий больше чем потребили и потеряли 10 грамм жира. Вроде смешно, но в плане психологии всегда приятно видеть положительную динамику. А если удастся через API получать данные с фитнес-браслетов, то приложение и вовсе может перейти в разряд коммерческих.

Мессенджер.

На рубеже середины/начала нулевых была огромная масса различных мессенджеров, существенная часть которых крутилась вокруг icq который тогда ещё принадлежал компании AOL. Вы можете сделать простенький мессенджер для обмена сообщениями между двумя приложениями. В плане практики вещь довольно интересная, можно натаскаться в плане работы с сокетами, асинхронными методами, исключениями, запросами. Как реализовывать ? Можно упростить и задавать IP адрес собеседника напрямую. Можно сделать веб-сервис который будет транзитом в передаче сообщений. А можно сделать чтобы при входе в сеть вашего мессенджера вы получали адреса всех своих контактов и далее вели переписку напрямую. По сути используя сервер только для регистрации (вот кстати ещё одна вещь которую можно реализовать) и/или получения IP-адресов по их номером/псевдонимам в сети. Далее можете усложнить проект и добавив какой-то вид шифрования, начиная от шифра Цезаря и вплоть до самых стойких современных алгоритмов.

Эквалайзер.

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

Агрегатор курсов криптовалют.

По сути, это тренировка работы с API. Ключ, а вместе с ним и все данные можно получить на CoinMarketCap.Что с этим делать ? Можете завести базу данных, с определенной переодичностью делать запросы, вести какую-то статистику. Возможно даже какое-то прогнозирование. А уж в плане инфографики и отчетов тут поле непаханное, а заодно  и с базами данных попрактикуетесь.

Сервис сокращения ссылок.

Довольно простой проект даже для новичка. Итак, на вход к нам приходит ссылка любой допустимой для веб-адреса длины. Мы независимо от её длины всегда выдаем что-то типо https://site.rr/dHr81Ja или https://site.rr/link.php?id=dHr81Ja. Второй случай на том же php новичку реализовать на порядок проще. Как пример, приходит ссылка, мы её хешируем, оставляем от хеша первые 7 символов, остальное вырезаем и выкидываем. Записываем в базу данных исходную ссылку и 7 символьный хеш. Далее вместо длинной ссылки выдаем пользователю ссылку вида https://site.rr/link.php?id=dHr81Ja. При клике по ней отрабатывает скрипт link.php который лезет в базу данных и забирает полную ссылку для записи у которой краткая ссылка равна dHr81Ja. Вот собственно и вся реализация. Делать можно на любом языке и в идеале выдавать в таком виде https://site.rr/dHr81Ja. В качестве усложнения задания, можно считать количество переходов или сохранять дату последнего перехода. Может ещё что-то придумаете.

Генератор QR кодов.

Опять же довольно простой проект. С чаем и печенками отвлекаясь на поглажку кота можно сделать за несколько часов. Есть готовые библиотеки которые генерируют QR / Bar коды при передаче строкой данных которые собственно и нужно закодировать. Чтобы хоть немного усложнить задачку, можно задать уровень коррекции ошибок. Опять же, всё это реализовано в готовых классах, нужно лишь реализовать передачу различных аргументов в зависимости от выбора пользователя. Всего есть 4 уровня коррекции. Можно также задать опцию выбора размера кода, можно добавить ненавистную дизайнерам фразу «поиграться с цветами». Можно добавить возможность пакетного создания Bar/Qr кодов, например считывая построчно текстовый файл. И сохранять готовые файлы в какую-то папку.

Аудио/Видео плеер.

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

Антикапча.

Добро пожаловать в мир нейронных сетей. Капчу наверное ненавидят все, но в борьбе со спамом ничего принципиально нового не могут придуть годами. Вы можете попробовать написать простую нейронную сеть которая будет разгадывать какие-то определенные виды капчи. Вы можете написать свой вариант геренации капчи, это довольно простая задача если особо не заморачиваться с фильтрами и прочим. Ну и затем на своей капче можете натренировать нейронную сеть на её разгадывание. Можно также выводить веротяности уверенности в верном распознавании символов.

Определение модели компьютера и возможность апгрейда.

Можно по примеру open source программы Open Hardware Monitor или Aida собирать информацию о компьютере/комплектующих и выдавать общую информацию о системе. Далее на основе эти данных можно получать информацию из открытых источников о возможности апгрейда компьютера. Например, программа определяет что в компьютере установлен двухъядерный процессор Core2Duo E8200 на 775 сокете. При этом материнская плата базируется на чипсете G41 который поддерживает 4-х ядерные процессоры вплоть до Q9550. Или в системе установлено 4 Гб оперативной памяти, но в материнской плате есть ещё 2 свободных слота поддерживающих по 2 Гб памяти.

Где брать эту информацию ? Парсить сайты nix.ru, cpu-upgrade.com и другие. Само собой ручаться за эту информацию нельзя, о чем было бы неплохо указать в самой программе. В целом проект был бы интересен множеству людей желающий провести апгрейд, но не имеющих элементарных знаний. Программа позволила бы дать им хотя бы первичную оценочную информацию об этой возможности и даже указать примерную стоимость комплектующих. Добавьте сюда монетизацию ссылок на подходящие комплектующие и вот вам коммерческий продукт.

Личные доходы/расходы.

Как следует из названия, программа позволит вести учет доходов  и расходов. Можно выводить какие-то отчеты по расходам, средний расход за год, наибольшие траты по секторам и/или каким-то отдельным вещам. Например — «За этот год вы потратили 5% вашего бюджета на сигареты». Собственно, обычная простенькая бухгалтерия для личного пользования. Для облегчения ведения можно помогать пользователю вводить названия покупок, предлагая по первым введенным буквам ранее использованные варианты. Также автоматическое подстановка стоимости, если человек весь год покупает пакет за 5 рублей, зачем ему целый год вводить в поле 5 рублей. Пусть вводится на автомате, если пакет подорожает, пользователь сам впишет туда новую цену.

Калькулятор финансовой независимости.

А вот это уже довольно интересный проект. Как много вы можете придумать вариантов получения пассивного дохода ? На сколько его можно прогнозировать ? Допустим, человек в возрасте 25 лет решает что к 45 годам он хочет выйти на пассивный доход 30 тысяч рублей. Для этого надо во что-то инвестировать, что-то сдавать, что-то развивать, получать деньги с условной рекламы в ютуб. Какие-то показатели считаются элементарно, какие-то можно брать лишь оценочно на основе средних значений. Пример, человек регистрируется, указывает что никаких доходов кроме зарплаты у него нет. Но он каждый месяц покупает акции и облигации. Здесь данные вполне точные, мы знаем сумму получаемого купона по облигациям с горизонтам до десятка лет. Мы примерно знаем сумму по дивидендам на акции. Пусть она и задается в процентах, но зачастую это фиксированная сумма.

Так вот, допустим человек каждый квартал покупает по 2 акции AT&T и по 2 акции Coca Cola. Первые раз в квартал платят 52 цента на акцию, вторые 42 цента на акцию. Итого ежеквартальных доход 1.88$ (налоги пока не считаем) или 45 рублей в месяц. Но в следующем квартале человек купит ещё по 2 акции и на следующий квартал его пассивный доход составит уже 3.76$ или 1.25$ в месяц или ~90 рублей. Так вот, программа может рассчитывать через какое время наш пассивный доход может достичь нужной нам цифры. Сюда же можно добавить реинвестирования прибыли в покупку новых акций. Помимо акций могут быть другие источники дохода, грубо говоря человек может добавить источник — сдача квартиры + 10к руб в месяц. В общем много расписывать не буду, думаю суть вы уловили.

Добавить комментарий

Ваш адрес email не будет опубликован.