6 идей проектов выходного дня
Идеи небольших, но серьезных проектов, которые могут одновременно и развлечь, и открыть незнакомые области программирования.
Кратчайшее расстояние между двумя точками – прямая. Скорейший способ освоить язык программирования или фреймворк – создать работающий проект. Доцент Университета Теннесси Остин Хенли собрал в своём блоге идеи подходящих проектов, которые он советует студентам и профессиональными разработчиками:
- Текстовый редактор.
- Двумерная игра.
- Компилятор.
- Маленькая операционная система.
- Электронная таблица (задача со «звёздочкой»).
- Эмулятор консоли видеоигры (тоже трудно).
Пост получил 300 откликов на Hacker News и 100 комментариев на Reddit. Хенли дополнил подборку идеями из комментариев. Они перечислены в конце публикации.
Текстовый редактор
Мы используем текстовые редакторы ежедневно, но как они работают? Забудем на время о навороченных функциях. Как вывести окно с текстовым полем? Как создать мигающий текстовый курсор? Чтобы он перемещался и выделял текст. Чтобы вставлял и удалял новые символы. Без готовых текстовых компонентов, где всё придумано другими разработчиками.
Память. Как сохранить текстовый документ в памяти? Первая мысль – использовать массив. Но у массива ужасная производительность. Если только пользователь не робот, добавляющий текст лишь в конец документа. Изучите другие структуры данных и решите, какая подойдёт лучше.
Поведение курсора. Пусть маркер курсора мигает в середине текстового поля. Если нажать клавишу со стрелкой вверх ↑
, куда он переместится? В тот же столбец символов? Не обязательно: если строка короткая, нужно поставить курсор в конец строки. Но как только встречается строка подлиннее, маркер должен возвратиться к исходному столбцу. Иначе при движении вверх указатель будет смещаться к левому краю.
В коммерческих редакторах курсор «помнит» исходное положение по горизонтали, и как только это возможно, возвращается на ближайшую позицию. Такие детали не замечаешь, пока не берёшься за дело.
Расширяем набор функций. И вот мы печатаем и удаляем в редакторе текст, выделяем строки и слова, курсор мигает и носится по экрану. Что ещё попробовать? Две задачи: 1) отмена и повтор действий, 2) перенос слов по слогам.
Как вести запись действий с минимальными затрами памяти? Сразу и не додумаешься. Хенли описал как шел к решению. Сначала пытался хранить состояния в массиве, затем попробовал шаблон проектирования Хранитель (англ. Memento). Наконец, остановился на Команде (англ. Command).
Задача переноса слов по слогам заставит задуматься о том, как строка хранится в памяти, и как она представляется.В каких темах вы разберётесь:
- Структуры данных для хранения текста: массив, rope, буферное окно, piece table.
- Поведение и реализация текстового курсора.
- Паттерны проектирования для undo/redo.
Для дальнейшего чтения:
Космические захватчики
Чтобы создать даже примитивную игру, нужно выбрать структуру данных и шаблон проектирования. Не увязая в игровом дизайне, реализуйте от начала и до конца двумерную игру. Например, клонируйте Space Invaders (рус. Космические захватчики). Лучше взять библиотеку 2D-графики: SDL для С, PyGame для Python или SFML для Java, C#, Go. Иначе мощный игровой движок скроет всё интересное.
Отрисовка. Научитесь рисовать движение персонажей. Чтобы создать эффект движения объектов, изображения на экране должны быстро сменять друг друга.
Игрок атакует. Как считать однократный и двойной щелчок? Если пользователь зажал клавишу со стрелкой, должен ли объект ускорить движение? Как часто проверяется пользовательский ввод?
Логика игры. Поведения персонажей описывается логикой игры. Как динамически обновлять количество врагов? Подойдёт фабричный метод. Когда и как меняются позиции пуль? Как узнать, что враг повержен? Когда игра заканчивается?
А ещё? Готова основа игры – добавьте меню и титульный экран. Убедитесь, что игра с одинаковой скоростью работает на разных компьютерах. Создайте врагов поинтереснее с помощью искусственного интеллекта. Добавьте шейдерные эффекты, звук и многопользовательский онлайн-режим.
Для дальнейшего чтения:
Больше идей – в теге Разработка игр.
Компилятор для Tiny BASIC
Напишите свой компилятор простого языка, например, Tiny BASIC. Пусть компилятор транслирует его в симпатичный вам язык. Например, напишите на Python компилятор Tiny BASIC, который выводит код C#. Не нужно создавать сборку. Тем более если вам это неинтересно. Сосредоточьтесь на трансляции.
Порядок действий. Создавайте компилятор в том же порядке, в котором он будет работать с исходным кодом. Каждый этап подразумевает собственный инструмент и свой набор алгоритмов.
1. На стадии лексического анализа токенизатор группирует элементы исходной последовательности по заранее известным категориям.
2. Парсер приводит последовательность токенов в структурированный формат.
3. На этапе семантического анализа программа проверяет, что код имеет смысл и соблюдены правила языка. Если всё в порядке, создаётся промежуточное представление.
4. Генератор кода из промежуточного представления порождает код на целевом языке.
Как улучшить? Чтобы улучшить компилятор, между пунктами 3 и 4 нужно добавить этап оптимизации. Нужно исключить излишние конструкции и упростить код с сохранением его смысла. Как только сделаете базовый компилятор, научите программу работать со стандартной библиотекой. И пусть компилятор не только находит ошибки в случае неверного кода, но и выводит содержательные сообщения.
В каких темах вы разберётесь:
Для дальнейшего чтения:
Маленькая операционная система
Алгоритмы и структуры данных операционных систем кажутся абстрактными и бесполезными только в пределах учебной аудитории. Создав операционную систему, вы уверенно освоите на практике всё, что происходит внутри. Особенно приятно запускать собственные программы в операционной системе, которую вы сами создали с чистого листа.
Вот краткий список тем, в которых вы разберётесь:
Для дальнейшего чтения:- Как работают операционные системы
- Вики-ресурс OSDev.org
- Создание операционной системы с использованием Rust (англ.)
Электронная таблица
Задача создания приложения для электронных таблиц сочетает элементы двух описанных выше проектов: текстового редактора и компилятора.
Текстовый редактор. Количество информации в ячейках может быть различным. При выделении отдельной ячейки представление информации должно учитывать не только ее содержимое, но и ссылки, подсвечивать функции и операторы.
Пример табличного приложения с добавленной функциональностью PythonДля реализации собственных электронных таблиц вам могут пригодиться эти статьи:
Эмулятор консоли видеоигры
Продолжим идею проекта с двумерными играми. Где мы могли встречать такие игры кроме автоматов? На игровых консолях. Особый фан представляет написание эмулятора консоли, которая умеет запускать игры, придуманные другими разработчиками. Такой проект объединяет в себе создание компилятора и операционной системы.
Эмулятор – виртуальная машина, которая притворяется, что функционирует так же, как аппаратные компоненты игровой консоли. Поэтому он может запускать игры, предназначенные для приставки.
CHIP-8. Хенли рекомендует начать с эмуляции CHIP-8. Это простая виртуальная консоль, для которой легко найти примеры эмуляции. Потом можно перейти к эмуляции реальных консолей, как Dendy или Sega. В них придётся учитывать особенности конкретного оборудования.
Пример работы с эмулятором PICO-8PICO-8. Раз уж эмулятор – это виртуальная машина, то необязательно, чтобы консоль существовала в действительности. Полторы тысячи игр написано под 15-долларовый эмулятор PICO-8. Попробуйте создать свободную версию эмулятора и посмотреть, как запустятся виртуальные картриджи. Если у вас есть дети, написание кода игр к таким эмуляторам –возможность заинтересовать их программированием.
Примеры эмуляции для разных языков и консолей:
Заключение
Пользователи HackerNews, Reddit, Twitter и другие прислали Остину Хенли следующие идеи проектов:
Идеи других проектов, предложенных или реализованных в статьях Библиотеки программиста, найдутся по тегу Проекты.
О каких проектах вы хотели бы узнать подробнее?
9 учебных проектов для бэкендера / Habr
источник КДПВ
Ранее на Хабре публиковался перевод статьи с Medium’а с подборкой из 8 проектов, которые можно реализовать, изучая новый язык или фреймворк. На мой взгляд, подборка очень неплохая. Проблема в том, что рассчитана она только на фронтендеров и мобильных разработчиков. А я из другого лагеря.
Покопавшись в своих заметках, я собрал для вас подборку идей на тот случай, если чешутся руки сделать что-нибудь своё. Все эти «проекты» уже существуют в том или ином виде, но, иногда интересно написать свой бэкенд-велосипед и проехать на нем по граблям.
1. Движок блога
Да, свой «топ» я решил начать именно с блога. На мой взгляд, это один из простейших вариантов, чтобы изучить тонкости нового ЯП или фреймворка. Посмотрите внимательно на существующие решения и подумайте, что вы бы сделали лучше. Откройте исходники WordPress’а и перечислите, что в нём не так
Естественно, не стоит пытаться выкатить сразу готовый продукт с кучей фич. Опишите MVP, превратите его в сhecklist и вперёд! Кстати, этот совет относится и ко всем остальным пунктам.
2. IO-игра
картинка взята отсюда
Если вы хотите вникнуть в реактивное программирование, веб-сокеты и вот это всё, а чат писать слишком скучно, можно попробовать реализовать бэкенд для: крестиков-ноликов 15×15, морского боя или, даже, гомоку. Плюс перечисленных игр в том, что клиент к ним можно создать даже с минимальными знаниями JS.
Бонусом придется подумать над алгоритмом валидации игрового поля, что тоже не так просто, как кажется.
3. Парсер формата файла
Это тот случай, когда вы можете сделать что-то действительно полезное для сообщества вашего любимого языка программирования. Посмотрите, с какими файлами (медиа, документы, данные, и т.д.) вы регулярно работаете и сделайте для них библиотеку на вашем ЯП. Только не пишите обёртку над существующим расширением, а изучите спецификацию файла. И руками, по хардкору.
Как пример приведу библиотеку на PHP для работы с 3d-моделями формата STL. Описание этого формата есть в интернете. Но, еще 4 года назад в сети была только одна рабочая библиотека, которая умела возвращать габариты и объем модели. Ее продавали по 10$ за копию. И она пользовалась большим спросом.
Если же придумать что-то новое не получается, стоит попробовать сделать свою реализацию уже существующего. Например, на сколько мне известно, до сих пор нету ни одной библиотеки на PHP, которая переварила бы >1GB XML-файл, не съев всю ОЗУ. Хотя, есть мнение, что stream piping, SPL и немного упорства должны решить эту задачу.
4. Telegram, Skype, Slack любой другой-бот
картинка взята отсюда
Вариантов тут может быть масса: прогноз погоды, напоминания, калькулятор, карточный «Пьяница», генератор одноразовых паролей для сайта и т.д.
Пусть каждый из них уже кем-то создан. Но, мы ведь с вами хотим научиться чему-то новому и добавить «веса» своему резюме. Не так ли?
5. Движок форума
Плюсы тут те же, что и у первого пункта.
Если вам это кажется банальным и ненужным, почитайте статью о том, как человек написал форум на ассемблере. Зачем? Просто потому что может. Зато теперь он может подтвердить свои знания ссылкой на интересную статью и репозиторий к ней. Это ли не мотивация?
6. Клон 10 Minute Mail
Наверное, всем известен прекрасный сервис 10minutemail. Он позволяет не светить свою почту при регистрации на неизвестных сайтах. Просто получите уникальный email на 10 минут и вводите его везде, не опасаясь навязчивых рассылок.
Если хочется написать что-то небольшое и несложное — это отличный вариант.
7. Генератор изображений с текстом
Очень часто в социальных сетях объявления публикуют в виде скриншота экрана телефона с открытым приложением заметок.
Можно сделать для этих людей сервис для генерации изображений из текста. В гугле я нашел подобное решение, но, на мой взгляд, здесь слишком много лишнего функционала. Достаточно формы для ввода текста и кнопки: «сделать хорошо!».
Кстати, начинающим фронтендерам предлагаю эту задачу для реализации без сервера.
8. Pomodoro
картинка взята отсюда
Метод «Помидора» — техника управления временем, предложенная Франческо Чирилло в конце 1980-х. Техника предполагает разбиение задач на 25-минутные периоды, называемые «помидоры», сопровождаемые короткими перерывами. — Википедия
Если кратко, то 2 часа работы делятся на 4 отрезка («помидора») по 25 минут, с перерывами в 5 минут. Дабы не засекать все вручную, в интернете есть куча приложений «Pomodoro».
И, я знаю, что этот проект можно создать без сервера. Но я предлагаю сделать это ради фана. И вообще, статья для начинающих бэкендеров, так что, логику пишите на сервере. И прикрутите push-уведомления! И Telegram-бота не забудьте!
9. Пишите свой блог
Нет, не движок блога, а именно технический блог. Один из лучших способов закрепить новые знания — попытаться объяснить их другому. Изучите что-то новое и перескажите это максимально простым и понятным вам языком. Это помогает структурировать в голове новые знания. К тому же, ваша статья может оказаться для кого-то полезной.
Вместо заключения
Когда-то я сам искал подобный список. Надеюсь, что хоть кого-то он вдохновит на написание чего-то свежего и своего. Также, буду рад увидеть продолжение списка в комментариях.
Идеи социальных проектов. Топ социальных идей для предпринимателей
Что такое социальный бизнес?
В середине двадцатого века, когда стало понятно, что эпоха «дикого» капитализма в капиталистических странах подошла к концу и необходим левый разворот в сторону простого гражданина, стало набирать популярность такое явление, как «социальный бизнес». Сама суть этого понятия заключается в том, что бизнес делает что-то полезное для общества, а не только ради получения прибыли. В данной сфере людьми движет не жажда прибыли, а желание изменить человечество и решить какие-то глобальные проблемы, вроде нехватки воды или загрязнение окружающей среды. Идея заключалась в том, чтобы заставить предпринимателей иначе взглянуть на сферы, которые могут приносить прибыль.
Инициатива была ожидаемо поддержана обществом, однако крупный бизнес до сих пор сопротивляется идее социальных проектов — связано это в первую очередь с тем, что последние до сих пор гонятся за прибылью. Государственные органы стараются направлять крупный бизнес в сторону социальных проектов, но у них это не всегда получается. Однако сегодня новый бизнес — социальное предпринимательство — завоевывает новый успех на рынке. Связано это с тем, что более молодое поколение в массе своей является куда большими идеалистами.
Началось это в конце девяностых, когда в активную стадию вошло развитие сферы высоких технологий. Сегодня среди социальных предпринимателей можно выделить таких людей, как Билл Гейтс, Марк Цукерберг или Илон Маск. Однако, идеи социального бизнеса доступны не только для миллиардеров и сильных мира сего, но и для простых смертных.
Виды социального бизнеса
Сегодня такое явление, как социальный бизнес развилось достаточно сильно и представлено во многих проявлениях. Самая большая концентрация социальных проектов находится в США и странах Европы: Франция, Германия, Великобритания, Нидерланды, Бельгия, Швеция, Норвегия. Разумеется, такой перечень стран связан с развитием их экономики. В странах третьего мира, вроде арабских или африканских, ведение такого бизнеса невозможно. Однако, многие компании ведут разработку проектов, направленных на помощь в развитии стран третьего мира.
Экологические проекты
Один из самых распространенных и раскрученных видов социального бизнеса — развитие зеленой энергии и забота об окружающей среде. Сюда входит и переработка мусора, и развитие альтернативных источников энергии, и разработка энергосберегающих устройств. Более того, даже разработка электромобилей в определенной степени является видом социального бизнеса, который относится именно к этой категории.
Помощь инвалидам и малоимущим
Данный вид бизнеса невозможен без поддержки со стороны государства и благотворительных структур. Однако, он не менее полезен. Заключается он в том, чтобы обеспечить максимально возможную поддержку наименее защищенным слоям населения. Это касается любых услуг для этих категорий граждан. От юридической поддержки до покупки дорогих лекарств.
Полезный досуг
Организация полезного досуга населения — тоже вид социального бизнеса. Заключается эта идея в том, что каждый гражданин может делать что-то полезное для общество. Этот также требует поддержки государства или других структур. Однако, в итоге он позволит заработать неплохие деньги.
Развитие детей
Частные детские сады и школы — один из самых полезных видов социального бизнеса. Однако, здесь стоит сразу отметить, что необходимо с умом подходить к созданию подобного бизнеса и не создавать просто альтернативу муниципальной школе. Необходимо создавать центры с высочайшим уровнем образования. Так же было бы неплохо связаться с представителями крупного бизнеса, которые бы помогли с организацией стипендий для малоимущих, но одаренных детей.
Реабилитация
Психологические травмы, алкоголизм, наркомания — все это проблемы, которым подвержено наше общество. Однако, до недавнего времени эти проблемы никто не умел решать. Реальная технология работы с этими категориями граждан появилась лет тридцать назад, а применяться стала только в конце девяностых. В России такой бизнес все еще не развит и у новых игроков есть возможность получить финансовую поддержку от государственных структур и различных некоммерческих организаций.
Государственная поддержка социальных проектов
Сегодня государственные органы активно участвуют в развитии социального бизнеса. Это необходимое направление деятельности со стороны правительство, за которое они получают не только новых избирателей, но и значительно улучшают состояние инфраструктурных объектов, здоровье общества, создают новые рабочие места. К примеру, компания по продаже доступных солнечных панелей может одновременно и создать множество рабочих мест, и позаботиться об экологии. Это огромное преимущество подобного бизнеса.
В России существует стереотип, что добиться государственной поддержки невероятно сложно, однако на практике это не всегда соответствует действительности. На самом деле, получить государственные субсидии на развитие социальных проектов можно. Сложность заключается в том, что проект должен быть актуальным и нужным для государства и общества. Узнать подробности получения субсидий и грантов можно в профильном комитете.
Поддержка подобных проектов является один из перспективных направлений внутренней политики. Дело в том, что подобный бизнес невероятно полезен и для создания положительного образа власти. Так что, в плюсе оказываются все: и предприниматель, получающий прибыль, и власть, получающая красивые заголовки в газетах.
Этапы реализации
Для того, чтобы реализовать любой социальный проект необходимо пройти через ряд этапов. В каждом случае они уникальны. Многое зависит и от того, возможно ли получить государственную поддержку. Это не всегда возможно — дело в том, что на некоторые проекты не выделяются целевые средства. Связано это с тем, что данные проекты невозможно (по мнению государственных органов надзора) реализовать в текущих условиях. Либо размер инвестиций слишком велик, либо климатических условия не подходят, либо сам проект предположительно окажется убыточным. Поможет здесь исключительно работа с государственными чиновниками, лоббирование и многогранный анализ потенциального бизнеса.
Идея
Первым делом формируется идея будущего проекта. Она должна содержать в себе две составляющие: социальная роль и финансовая выгода. Мало предложить проект, который будет полезным для общества, в идеале этот проект должен быть еще и выгодным для его владельцев. В таком случае, он может оказаться куда более интересных для потенциальных инвесторов.
Государственное финансирование
Затем, после формирования идеи, начинается тяжелая работа по поиску финансирования. Лучше всего на этом этапе уже обладать бизнес планом социального проекта. Вам необходимо будет показать его множеству чиновников и заинтересованных лиц. Зачастую получение государственного финансирования — задача нереализуемая. В таком случае стоит обратиться в различные профильные фонды, которые занимаются данной проблемой. К примеру, если речь идет о создании центра реабилитации наркозависимых, то правильным шагом будет обращение к фонду, который борется с наркоманией в стране, регионе или городе.
Поиск подрядчиков
Одновременно с решением вопроса о финансировании, необходимо решить вопрос и с дальнейшей реализацией. Вам необходимо будет найти людей, способным организовать весь процесс создания данного бизнеса. Это могут быть профессионалы из данной сферы, либо просто опытные управленцы. Если данный этап будет завершен успешно, то дальнейшие уже не составят особого труда.
Исполнение
Получив финансирование и решив организационные вопросы, можно заняться и исполнением проекта. Сюда может входить что угодно: от постройки каких-то объектов, до подбора квалифицированных психологов. Дело в том, что видов социального бизнеса бесконечное множество и работать по данным направлениям приходится самыми разными способами.
Сдача проекта
После того, как процесс исполнения закончен, необходимо отчитаться перед инвесторами о потраченных средствах и о том, что теперь представляет из себя проект. Если это было строительство инфраструктурного объекта, то необходимо предоставить статистику его посещения, уровень доходов. Для различных бизнесов, направленных на работу с населением лучше всего будет показать статистику решения проблемы в виде графика «до и после».
Подсчет прибыли
Самый приятный для Вас этап — подсчет прибыли. Здесь необходимо посмотреть, сколько денег ушло на организацию, может ли бизнес продолжать содержать себя и принять решение, что дальше делать с проектом. Возможно, придется бороться за дополнительные источники финансирования. Это нормальная практика для многих социальных проектов, они просто невозможны без солидной поддержки со стороны государственных органов.
Перспективные направления социального бизнеса
Исторически так сложилось, что социальный бизнес должен работать не только на предпринимателя, но и на государство и общество. Поэтому, сложно говорить о перспективном социальном бизнесе в отрыве от запросов общества в том или ином регионе. На сегодняшний день выделяется несколько перспективных направлений социального бизнеса:
- экология;
- медицина;
- работа с населением;
- частные научные исследования.
Однако, стоит учитывать, что это общие направления. Они могут заметно меняться в зависимости от того, о каком регионе идет речь. К примеру, в некоторых бедных городах России может остро стоять проблема наркозависимости и там куда более актуальным направлением станет создание центров реабилитации. В то же время в Африке тяжелая ситуация с пресной водой и для африканцев актуальным будет разработка специальных решений, которые позволят эту воду добывать.
Экология
Вопрос экологии не особо остро стоит в России и особой популярностью не пользуется. Поэтому, здесь придется искать финансирование в различных фондах. Однако, проблема экологии в мире достаточно широко освещается, поэтому при должном подходе есть надежда на то, что получится найти финансирование за рубежом. Не стоит все надежды возлагать на российские фонды. Актуальным может стать строительство заводов, занимающихся переработкой мусора и пластиковых отходов. Данный вид бизнеса практически не развит в России, однако современные тенденции говорят нам о том, что его развитие необходимо.
Медицина
Социальные медицинские проекты — одна из наиболее востребованных сфер социального бизнеса. Именно за счет социальных проектов большинство предпринимателей формируют свою прибыль. Дело в том, что в данной сфере достаточно легко получить финансирование со стороны государство и негосударственных фондов. В сфере также полно опытных профессионалов, способных организовать грамотный бизнес, способный приносить высокую прибыль. Однако, достичь подобных результатов можно только в том случае, если удастся найти крупные инвестиции. Медицинское оборудование дорогостоящее и требует внимательного подбора при покупке.
Работа с населением
Еще одна интересная сфера — организация полезного досуга для населения. Здесь сразу же стоит отметить, что в данной сфере нет смысла ждать высокой прибыли. Это просто невозможно — вы никогда не сможете создать прибыльный бизнес там, где невозможно получить серьезную прибыль. Однако, данный бизнес все еще актуальной по той простой причине, что его достаточно легко организовать и на него легко получить финансирование. Кроме того, можно совмещать приятное с полезным и под вывеской «организация полезного досуга в виде озеленения территории» договориться с владельцем территории о небольшой оплате, которая отправится в Ваш карман.
Частные научные исследования
Сфера, которая набирает обороты на западе — частные научные исследования. Она работоспособна только в том случае, если в стране существует крупный капитал, а государство готово выделять масштабные гранты на развитие науки. Частные научные лаборатории сейчас работают по всему миру и занимаются поиском лекарств от различных болезней, созданием передовых средств для передачи информации, занимаются проблемами экологии и многим другим. Подобная деятельность активно приветствуется обществом, хотя и организация такого социального проекта является достаточно затруднительной.
Примеры компаний социальной направленности
Давайте рассмотрим несколько примеров социального бизнеса, которые возможно помогут Вам найти свою идею для проекта в этой сфере. Необходимо сразу оговориться, что речь пойдет о крупномасштабных проектах, требующих серьезных инвестиций. Однако, вполне возможно, что подобные примеры станут вдохновением для Вас и Вы сможете почерпнуть что-то полезное.
Mission Innovation
Компания под руководством Билла Гейтса и Марка Цукерберга, направленная на работу с государственными органами. Своей задачей они ставят повышение уровня инвестиций в развитие зеленой энергии. Данная компания — отличный пример того, как люди с большими деньгами могут положительно влиять на решение глобальных проблем человечества.
SolarCity
Еще один интересный пример из сферы зеленой энергии — компания SolarCity, созданная Илоном Маском. Идея простая — сделать солнечную энергию доступной для всех. Для этого создаются дешевые и доступные солнечные панели, которые можно использовать на крышах любых зданий, в любых городах и в любых точках Земли. Сегодня SolarCity активно работает в США, а с правительством Австралии недавно было заключено эксклюзивное соглашение, согласно которому Австралия должна стать первой страной в мире, которая полностью перейдет на альтернативные источники энергии.
bgC3
Загадочная компания Билла Гейтса, которая была создана в 2008 году. По сути своей, это одна из многих частных лабораторий, которые занимаются развитием науки. Данная компания занимается разработкой нового программного обеспечения, а так же поиском и созданием новых методов разработки и производства. В качестве основной задачи ставится создание доступных и дешевых аналогов существующих устройств, которые при этом будут более производительными. Уже сегодня можно сказать, что этот социальный проект, направленный на развитие науки, значительно облегчит жизнь населения планеты. В качестве результатов его деятельность можно отметить, что микроэлектроника стала куда доступнее для населения.
5 идей проектов для практики программирования
Многим нравится писать код для себя, но иногда не хватает идей. Предлагаем 5 вариантов проектов для практики программирования.
GraphQL – это язык описания запросов для клиент-серверных приложений, он позиционируется как альтернатива REST API. Если вам часто приходится обрабатывать массивы данных, на его изучение точно стоит потратить время.
Этот курс поможет освоиться с GraphQL:
Механика работы приложения в терминале проста: вы даете входные данные и получаете данные на выходе. Начните с написания чего-то маленького, несколько идей для примера:
- Запросить имя пользователя, обработать (например, развернуть) и вернуть результат.
- Показывать математические выражения и получать от пользователя решение.
Здесь можно ознакомиться с основами написания приложений для терминала на JavaScript.
Electron позволяет создавать десктопные приложения на основе web-технологий. Вы используете для создания логики и интерфейса привычные инструменты, вроде HTML, CSS и JavaScript, а на выходе получаете программу, которую можно запустить как нативное приложение.
Некоторые известные ПО созданы на основе Electron, среди них Visual Studio Code, Slack и Webtorrent.io.
Опять же, начните с малого, познакомьтесь с фреймворком, а только потом переписывайте что-то из своих старых веб-приложений для использования в настольной системе.
Инстаграм – не самое простое приложение, и воссоздание его архитектуры многому вас научит. Вот некоторые вещи, которые вы постигните в процессе:
- Создание сложных сеток (попробуйте сделать все только с помощью CSS).
- Обработка большого количества разнообразных данных от пользователей и API.
- Создание сложных приложений, уже показавших себя в реальном мире.
D3 расшифровывается как Data-Driven-Documents, и сейчас это одна из самых используемых библиотек для построения графиков.
Попробуйте визуализировать набор данных с помощью D3. Для примера можно взять один из бесплатных датасетов с GitHub.
Идеи для проектов по открытым данным и ближайшие хакатоны и соревнования на которые еще можно успеть
Вы наверняка знаете что сейчас идет, заканчивается и начинается много соревнований по открытым данным и многие проводят хакатоны.Например, Хакатон Яндекса пройдет завтра-послезавтра и еще не поздно зарегистрироваться, наши друзья в Санкт-Петербурге проводят свой Хакатон 5-6 октября.
Хакатоны — это прекрасный формат чтобы познакомиться с темой, попробовать себя и сделать что-то простое и интересное. На хакатоне, однако, редко получается сделать сложный продукт и даже найти возможность монетизации. Если Вы делаете что-то большое или хотите сделать — мы продляем наш конкурс Apps4Russia до 1 октября и очень ждем ваши заявки.
Идеи
Тем временем, чтобы чуть облегчить поиск идей и, возможно получится, побудить подумать над собственными идеями на открытых данных — я подготовил небольшую подборку собранного нами.
Игры и депутаты
Игра Hot or Not по депутатам. Берем список депутатов из API — api.duma.gov.ru — фото с duma.gov.ru и запускаем крутилку со сравнениями. Прогоняем по сотням посетителей сайта и получаем интереснейшую статистику.
Идеально — виджет для внедрения в сайты СМИ.Мониторинг качества воды
Взять данные по качеству воды в Москве по районам и сделать приложение для мобильного телефона показывающие качество воды в районе. Данные уже готовы и находятся здесь — http://hubofdata.ru/dataset/moswaterquality-2013Россия в мире
Взять данные Всемирного Банка по России и визуализировать их наглядно — например — в формате «приборной панели» или в сравнении с другими странами или по годам. Данные можно взять здесь — http://data.worldbank.org/country/russian-federationНаглядный бюджет
Взять код http://theopenbudget.org/ и визуализировать бюджет Вашей области или города. Бюджеты публикуются на их официальных сайтах.Памятники в кармане
Взять данные по паркам и культурным объектам вашего города/региона и сделать приложение для Android, iPad, iPhone или Windows Phone. Добавить туда возможность обратной связи и сервис «Найти ближайший памятник».Гражданский контроль грантов
Взять базу получателей грантов общественной палаты вот тут — http://hubofdata.ru/dataset/oprf-grants-winners-2013, с помощью нескольких волонтеров собрать данные по организациям — есть ли сайт, есть ли публичная отчетность за прошлые годы и сделать рейтинг операторов по прозрачности финансирования организаций.Есть сайт — +1 балл
Есть публичный отчет — +1 балл
Есть все публичные финансовые отчеты — +3 балла
Есть отчет организации в реестр НКО Минюста — +3 балла
и так далее.Если сложно сделать по всем организациям — можно сделать, для начала, по 20 крупнейшим получателям грантов у каждого из операторов
Поиск аптек и больниц
Взять данные по больницам и аптекам, в Москве есть на data.mos.ru и сделать очень простой сервис поиска ближайшей аптеки и телефонов больниц (например, если родственника увезли в больницу). На более продвинутом уровне — делать фильтры по аптекам работающим круглосуточно. Можно как сайт, можно как мобильное приложениеЛенивые депутаты
На основе открытые данных и API госдумы сделать рейтинг самых ленивых депутатов — тех кто не вносил ни одного законопроекта за время работы — http://api.duma.gov.ru/Панель управления городом
Например, как это сделано тут http://citydashboard.org/london/
Не обязательно сразу в реальном времени, но так чтобы регулярно обновлять. Для этого можно собрать данные по вашему городу — с порталов открытых данных или с других источников. Решитесь делать — подскажем где их взять.
И те идеи что были ранее
Это, конечно же, далеко не всё. Многие идеи мы собирали и продолжаем собирать.
И огромное число приложений созданных на самых различных конкурсах на открытых данных во всём мире. Невозможно перечислить их все в разумное время, поэтому просто загляните.
Где найти данные?
Открытых данных очень много, все перечислить невозможно
- hubofdata.ru — наш Хаб открытых данных
- ar.gov.ru — это агрегатор официальных данных на сайте административной реформы (Минэкономразвития России)
- data.mos.ru — портал открытых данных Москвы
- krd.ru/opendata — Краснодар
- data.ulgov.ru — Ульяновская область
А также мировые данные где есть информация о России:
- datahub.io — портал открытых данных Open Knowledge Foundation
- data.worldbank.org — портал открытых данных Всемирного банка
- data.un.org — открытые данные ООН
Интересные API:
- api.yandex.ru — API Яндекс (Карты, Спеллер и многое другое)
- programmableweb.com — огромный каталог API по всевозможным темам
- mashape.com — большой хаб API где можно публиковать и что-то своё
- developers.google.com/products — API Google (карты, чарты и многое другое)
Многие из приложений и идей вполне подойдут для участия в Apps4Russia, а многие другие для участия в хакатонах.
Если будут какие-то вопросы где найти данные — адресуйте их мне. Я, либо отвечу сразу, либо постараюсь узнать где они могут быть.
подборка идей для создания проекта
Реализовываете скучные концепции, потому что так советуют в учебниках? Чтобы такого не было, мы собрали несколько идей для создания проекта.
Программирование − это навык, который развивается благодаря напряженной работе и страсти к делу. Но! Важно работать над теми вещами, которые вам интересны, иначе это превратиться в рутину. Более того, если ваш проект не интересен ни вам, ни другим, то зачем тратить на него время? Лучше посмотрите наши идеи, реализовывать которые так же интересно, как и сложно.
Цель такого текстового редактора с возможностями для форматирования − упростить взаимодействие между пользователем и компьютером. Понятно, что таких уже достаточно много, но здесь можно реализовать функции, о которых чаще всего просят пользователи.
Reddit − это в некоторой степени агрегатор новостей, набирающего популярность веб-контента и просто форум.
Многие проводят часы, читая Reddit, потому что находят это полезным. Создание Reddit-клона − крутой способ практиковать навыки программирования и одновременно изучать содержимое сайта.
Reddit предоставляет возможность поиграться со шрифтами широкий набор API. Главное, чтобы каждое нововведение в вашем клоне было доведено до ума, иначе зачем начинать?
Если вы программируете на Javascript, то вы, скорее всего, знаете, что такое менеджер пакетов: он позволяет использовать ранее написанный другими участниками код.
Понимание того, как это устроено, помогает представить, что происходит под капотом. При публикации кода NPM нужно подумать о безопасности, управлении версиями, масштабируемости, условностях, обновлении и о многом другом.
Сам пакет может быть любым. Например, можно реализовать Lodash.
Кстати, вот несколько полезных инструкций по теме:
Протокол HTTP является одним из часто используемых в современном интернете. HTTP-серверы нужны для обработки статического контента − HTML, CSS и JS.
Возможность реализовать протокол HTTP с нуля даёт картину того, как связаны эти три технологии между собой.
Проверьте себя:
- Настройте сервер без использования библиотек.
- Сделайте так, чтобы поддерживался и HTML, и CSS, и JS.
- Настройте подключение к сети с нуля.
- Проверьте ошибки и устраните их (а они будут).
Если идей, с чего начать, нет, то возьмите за основу язык Go и сделайте сервер Caddy
Мы все пишем заметки, не так ли?
Давайте создадим своё приложение для компьютера. Основная задача в том, чтобы приложение синхронизировало заметки с базой данных мгновенно. При создании нативного приложения используйте Electron, Swift или другие вещи, к которым вы привыкли.
Кстати, это можно доработать, реализовав функционал из идеи с текстовым редактором. Если на этом этапе приложение ещё не надоест, запилите веб-версию.
Кажется, подкасты становятся всё популярнее. Если решитесь сделать свой проигрыватель подкастов, не забудьте добавить следующие функции:
- Создание аккаунта
- Поиск подкастов
- Подписка на подкасты
- Остановка и воспроизведение
- Изменение скорости
- Прокрутка вперед и назад
В качестве отправной точки попробуйте использовать iTunes API. Если вы знаете какие-либо другие удобные ресурсы, пишите в комментариях.
Создайте настольное или веб-приложение, которое позволит вам захватить ваш экран и сохранить файл в разных форматах. Вот несколько советов, как это сделать.
Источник: Подборка идей для создания проекта on freeCodeCamp
Идеи для проектов для практики навыков программирования
Задачи для начинающих и их реализации, которые могут быть решены на любых языках программирования. Проекты распределены по нескольким категориям.
Найти число пи до n-й цифры после запятой
Введите число, и программа начнет генерировать число пи. Поставьте определенный предел, до которого программа должна дойти. Реализации:
Python №1, Python №2, Haskell, PHP, JavaScript, Go
Последовательность Фибоначчи
Введите число, и программа сгенерирует последовательность Фибоначчи до этого числа или до N-го числа. Реализации: Python №1, Python №2, Python №3, Bash, Haskell, PHP, JavaScript, Java, Go, Python №4, Python №6
Разложение на произведение простых чисел
Пользователь вводит число и находит, программа раскладывает на произведение простых чисел с их степенями. Реализации: Python №1, Python №2, Haskell, JavaScript, Java, C++, Python №3
Следующее простое число
Программа находит простые числа до тех пор, пока пользователь перестанет спрашивать. Реализации: Python №1, Haskell, JavaScript, Java, Go, Python №2
Калькулятор для ипотеки
Вычислить месячные выплаты фиксированного срока в течение заданных N сроков с заданной процентной ставкой. Реализации: Go
Обмен-возврат
Пользователь вводит стоимость и количество денег. Программа рассчитывает сдачу и количество мелких монет, необходимых для сдачи. Python, Java, Go
Перевод из двоичной системы в десятичную и обратно
Реализации: Python
Калькулятор
Сначала простой с базовыми операциями, потом можно добавить фичи. Реализации: Python, Haskell
Конвертер температуры, валюты, масс и т.д.
Реализации: Python
Будильник
Простые часы, которые играют звук после некоторого числа минут или часов или в определенное время.
Python, Java
Расстояние между городами
Вычисляет расстояние между двумя городами и позволяет пользователю выбрать размерность расстояния. Эта программа может потребовать информацию о городах, такую как долготу и широту. Реализации: Haskell, Python
Валидатор кредитной карты
Берет номер кредитной карты от производителя (Visa, MasterCard, American Express, Discover) и проверяет на правильность номер (разберитесь, как кредитные карты используют контрольную сумму). Реализации: Haskell, Python, Java, Go
Факториал числа
Решить с помощью циклов и отдельно с помощью рекурсии. n! = n * (n-1) * … * 1, 0! = 1. Реализации: Haskell, Python, Go
Алгебра комплексных чисел
Показать сумму, умножение, сопряжение, отрицание в отдельных функциях (разность и деление могут быть сделаны путем использования нескольких уже написанных функций). Реализация: Haskell
Счастливые числа
Счастливое число определено следующим процессом. Начиная с некоторого положительного целого числа, замените число суммой квадратов его цифр и повторяйте процесс до тех пор, пока число не будет равным одному(на чем все и остановится) или оно будет циклиться бесконечно. Если цикл конечен, то изначальное число называется счастливым. Найдите первые 8 счастливых чисел. Реализации: Python, Haskell, Java, C++
Названия чисел
Показать как читается число на английском. Вы можете использовать уже существующую реализацию или написать свою, она должна поддерживать значения до одного миллиона или до максимально возможного целого значения в данном языке программирования, если оно меньше миллиона. По желанию: поддержка отрицательных чисел, нуля, чисел с плавающей запятойРеализации: Haskell, Python, Go, C++
Симуляция подбрасывания монеты
Напишите программу, которая симулирует подбрасывание одной монеты столько раз, сколько захочет пользователь. Программа должна записывать результаты и подсчитывать сколько раз выпали орел и решка. Реализации:
Python
Гипотеза Коллатца
Найдите число шагов, за которые получится единица, используя следующий процесс: берём любое натуральное число n больше единицы. Если оно чётное, то делим его на 2, а если нечётное, то умножаем на 3 и прибавляем 1. Реализации:
Python №1, Java, JavaScript, Java №2, Go, Java №3,
Сортировка
Реализовать два типа сортировочных алгоритмов: сортировка слиянием и сортировка простыми обменами. Реализации: C, Python, Go, C++
Задача ближайшей пары
Задача ближайшей пары точек или задача ближайшей пары — это задача вычислительной геометрии: дается n точек в метрическом пространстве, найти пару точек, расстояние между которыми наименьшее. Реализации: Python №1, Python №2
Решето Эратосфена
Решето Эратосфена — один из самых эффективных способов нахождения всех небольших простых чисел (ниже 10 миллионов). Реализации:
Python №1,
JavaScript,
Python №2, Go, Java,
C++
Граф из связей
Напишите программу, которая будет создавать граф или сеть из ряда связей между вершинами. Реализация:
Python
Эйлеров путь
Напишите программу, ввод которой будет графом и вывод будет Эйлеров цикл или Эйлеров путь, или запись того, что цикл не возможен. Эйлеров путь начинается от одной из вершин и обходит каждую вершину графа и заканчивается на другой вершине графа. Эйлеров цикл — это Эйлеров путь, начинающийся и заканчивающийся в одной и той же вершине. Реализация:
Python
Соединенный граф
Напишите программу, ввод которой представляет из себя граф и вывод представляет из себя отчет, в котором указано соединена ли каждая вершина или нет. Реализация: Python
Алгоритм Дейкстры
Напишите программу, которая будет находить короткий путь в графе, используя его вершины. Реализации:
Python
Инвертированный индекс
Инвертированный индекс — это структура данных, используемая для поиска во всем тексте. Дается ряд текстовых файлов, реализуйте программу для создания инвертированного индекса. Также создайте пользовательский интерфейс для поиска, использующего инвертированный индекс, который возвращает список файлов, содержащих выражения или выражения из запроса. Память может содержать поисковой индекс. Реализация: Java
Перевернуть строку
Вводится строка, и программа ее переворачивает и распечатывает на экран. Реализации:
Python №1,
Python №2, Java №1,
Haskell,
Python №3,
Java №2,
Go,
JavaScript №1,
Java №3,
Python №4,
JavaScript №2
Поросячья латынь
Это «тайный язык», представляющий собой зашифрованный английский. Чтобы сделать поросяче-латинское слово из английского, нужно первые согласные звуки в слове переместить в конец и прибавить ay (Например: «banana» превращается в anana-bay). Подробнее о правилах читайте в Википедии. Реализации:
Python №1,
Python №2,
Java №1,
Java №2,
Go,
Java №3,
Python №3
Счетчик гласных
Вводится строка, и программа считает количество гласных в тексте. Для усложнения задачи можно генерировать отчет о том, сколько раз какая гласная была найдена. Реализации:
Python №1,
Python №2,
Haskell,
Java №1,
Go,
Java №2,
Python №3
Проверка на палиндром
Программа проверяет на то, что введенная строка является палиндромом (то есть читается слева направо так же, как и справа налево). Реализации:
Python №1,
Python №2, Java,
Haskell,
Python №3,
Go,
Java
Счетчик слов в строке
Посчитать число слов в строке. Для усложнения задачи считать эти строчки и сгенерировать отчет. Реализации:
Python №1,
Python №2, Java,
Haskell
Текстовый редактор
Приложение в стиле блокнота, способное открыть, редактировать и сохранять текстовые документы. По желанию: добавить подсветку синтаксиса и другие фичи. Реализации:
Python,
С++/QT
Генератор RSS ленты
Дается ссыка на ленту RSS/atom, извлечь все посты и распечатать на экран. Реализация:
Python
Стикеры
Программа, в которой вы можете добавить текстовые напоминания и вывесить их. По желанию: вы можете добавить в программу возможность создавать напоминания в виде всплывающих окон.
Проверка показателей индексов фондовой биржи
Программа, которая проверяет цены акций фондовой биржи для списка наименований акций, введенных пользователем. Пользователь может указать, насколько часто будут проверяться значения акций фондовой биржи. Если реализация в виде утилиты командной строки, покажите увеличилась ли цена акции или ушла вниз. По желанию: если реализация сделана с использованием графических интерфейсов, программа может показывать зеленую или красную стрелочку в зависимости от того, как изменилась цена акции. Реализации:
Python
Гостевая книга / журнал
Простое приложение, позволяющее людям добавлять комментарии или добавлять записи в журнал. В нем есть возможность добавлять или закрывать комментарии, а также время добавления записи. По желанию: запустите приложение на такой облачной платформе как Google App Engine или Heroku или любой другой(если возможно).
Гороскоп
Программа проверяет ваш гороскоп на разных сайтах, посвященных этому и соединяет все прогнозы воедино для каждого дня. Реализации:
Python
Шифр Винежера / Вернама / Цезаря
Функции для шифрования и расшифровывания сообщения с данными. Затем отправьте их другу. Реализации:
Python,
Java
Предложения для любого подарка
Ввести разные подарки для определенных людей. Когда пришло время для того, чтобы вручить подарок, программа сгенерирует произвольный из введенных. По желанию: предложить место, где их можно приобрести (возможно, ссылку на страницу в сервисе Amazon).
Конвертер из языка разметки Markdown в HTML
Переводит текст, отформатированный с помощью Markdown в файл HTML. Реализовать базовые теги такие, как p
, strong
, em
и так далее. По желанию: реализовать все теги из документации к синтаксису Markdown. Реализация:
Python
Инструмент для обработки запросов в виде регулярных выражений
Программа позволяет пользователю вводить текстовую строку и затем в отдельном поле регулярное выражение. После запуска программа должна выдать все подходящие под регулярное выражение строчки или флаг ошибки. Реализация:
Python
Программа FTP
Программа, осуществляющая пересылку файлов туда и обратно из удаленного веб-сервера. Реализация:
C
Монитор трафика
Маленькая утилита, проверяющая сколько данных было загружено на компьютер и с него во время текущего сеанса в сети. Добавьте в программу возможность узнать в какие периоды дня вы используйте больше или меньше трафика и возможность сгенерировать отчет или график, который это показывает.
Сканер портов
Введите IP адрес и диапазон портов, в которых программа попробует найти открытые порты на данном компьютеров путем соединения с каждым из ним. При успешном соединении программа должна пометить порт как открытый. Реализации:
Python №1,
Python №2, Python №3,
Python №4
Проверка электронной почты (POP3 / IMAP)
Пользователь вводит различную информацию своего аккаунта, включая веб-сервер и IP, тип протокола (POP3 или IMAP) и приложение будет автоматически проверять почту каждый заданный интервал времени. Реализация:
Java
Инструмент поиска для сетевого протокола Whois
Пользователь вводит IP и адрес хоста и программа просматривает информацию через сетевой протокол Whois и выводит регистрационные данные. Реализация:
Python
Проверка сайта в установленное время
Приложение пробует соединиться с сайтом или сервером периодически с заданным интервалом или просто через некоторое время и проверяет, есть ли неполадки с подключением. Если сайт или сервер не работают, программа оповестит по электронной почте или вышлет уведомление на экран. Реализация:
Python
Продуктовый инвентарь
Создайте приложение, которое позволяет вести учет инвентаря продуктов. Создайте класс Product, элементами класса будут цена, номер, количество. Затем создайте класс Inventory, ведущий учет различных продуктов и который считает общую стоимость инвентаря. Реализации:
Python №1,
Ruby,
JavaScript,
Go,
Python №2
Система бронирования отелей / авиабилетов
Создайте систему резервирования на самолет или комнату в отеле. Программа способна распределить цены по различным секциям в зависимости от отеля или места в самолете. Например, бизнес-класс будет стоить дороже, чем эконом-класс. Комнаты отеля, расположенные в пентхаусе стоят больше. Программа следит за обновлениями того, какие комнаты доступны и когда могут быть забронированы.
Bank Account Manager
Создайте класс Account, который будет абстрактным классом для трех классов CheckingAccount(контокоррентный счет), SavingsAccount (сберегательный вклад) и BusinessAccount (счет, возникающий при создании бизнеса). Управляйте кредитами и дебитами с этих счетов в стиле программы для банкомата. Реализация:
Python
Расписание приема врача
Создайте класс Patient и класс Doctor. Пусть доктор может принять несколько пациентов, установите расписание того, как доктор будет принимать 16 пациентов в течение 8 часового рабочего дня.
Менеджер рецептов
Создайте класс Recipe с ингридиентами и вставьте объекты данного типа в менеджер рецептов, которая их распределит по категориям(основные блюда и десерты) или по ингридиентам(курица, говядина и так далее)
Галерея изображений
Создайте абстрактный класс Image и затем класс, производный от него для каждого типа изображений. Вставьте их в программу, которая будет отображать изображения в стиле галереи.
Площадь и периметр фигуры
Создайте абстрактный класс Shape и затем создайте производные классы, такие как бриллиант, прямоугольник, круг, треугольник и так далее. Затем происходит перекрытие имен функций, ищущих площадь и периметр для каждого типа фигуры. Реализации:
Java,
Python
Цветочный магазин с возможностью заказа
Создайте приложение для цветочного магазина, которое работает с цветами, как объектами и использует их в объекте букет, который потом будет продан. Программа следит за количеством объектов и когда вам может понадобиться заказать больше.
Создание древа семьи
Напишите класс Person, в котором будет элемент имя, дата рождения и, если есть, смерти. Программа позволяет пользователям создавать классы Person и помещать их в семейное древо. Программа печатает древо на экран. Реализация:
C++
Создание индикатора процесса загрузки
Создайте индикатор состояния для приложений, которые могут отслеживать процесс загрузки. Индикатор состояния должен находиться в отдельной ветке и сообщаться с главной веткой с помощью делегатов. Реализации:
Go
Программа для массового создания эскизов для предварительного просмотра изображений
Обработка изображений может занимать достаточно долгое время. Особенно если изображение большого размера. Создайте программу обработки изображений, которая может взять сотню изображений и сконвертировать их до нужного размера в фоновом режиме. В качестве более сложного задания выделите одну ветку для изменения размера изображения, другую — для массового переименования эскизов и т.д. Реализации:
Java
Индексатор веб-страницы
Создайте приложение, которое соединяется с веб-сайтом, забирает оттуда все ссылки или изображения и сохраняет их в качестве списка. *По желанию: Организуйте проиндексированную информацию, удалите дублирующиеся данные. Залейте результаты в индекс-файл. * Реализации:
Python
Веб-браузер с вкладками
Создайте небольшой веб-браузер, который сможет просматривать материалы сети в разных вкладках, позволяющих просматривать несколько веб-страниц одновременно. Для упрощения задачи не думайте об исполняемом Javascript и другом коде с клиентской стороны.
Доска для рисования онлайн
Создайте приложение, которое позволит рисовать, писать заметки, используя различные цвета, чтобы можно было быстро и удобно записывать идеи для проектов. По желанию: добавить возможность приглашения друзей для совместного использования
Получить атомное время из интернет-часов
Эта программа будет получить сведения об атомном международном времени из интернета. Используйте любые атомные часы, которые найдёте в поиске Google. Реализации:
Go,
Java
Получить текущие данные о погоде
Получите актуальные погодные данные по почтовому индексу. По желанию: Попробуйте определить местоположение пользователя автоматически. Реализация:
Python
Авто-логин и автоматические действия по таймеру
Создайте приложение, которое входит на определённый веб-сайт в запланированное время, производит определённое действие и выходит из аккаунта. Это может быть полезно для проверки почтового клиента, постинга контента или для получения информации и сохранения её на компьютере.
Генератор электронных открыток
Создайте сайт, позволяющий пользователям создавать собственные небольшие электронные открытки и посылать их другим. Не используйте Flash. Используйте галерею изображений и, возможно, вдохновляющие цитаты и девизы.
Система контент-менеджмента
Создайте собственную систему управления контентом (CMS) наподобие Joomla, Drupal, PHP Nuke и т.д. Начните с малого. По желанию: Разрешите добавление модулей/аддонов.
Доска объявлений (Форум)
Создайте форум, на котором вы и ваши друзья смогут писать сообщения, администрировать и делиться мыслями и идеями.
CAPTCHA-генератор
Когда-нибудь видели изображения с цифрами и буквами, которые нужно ввести в форму регистрации на каком-нибудь онлайн-сервисе? Это нужно для фильтрации автоматической регистрации ботами и предотвращения спама. Попробуйте создать собственную капчу для онлайн-форм.
Создание викторины
Сделайте приложение, которое рандомно берет различные вопросы из файла и соединяет их вместе, создавая викторину для студентов. Затем приложение должно сравнивать ответы с правильными вариантами.
Файловый проводник
Создайте собственный небольшой файловый проводник для Windows. Добавьте ту функциональность, которую вам не хватало в обычном проводнике Windows или в Finder на Mac OS.
Утилита для сортировки Excel/CSV файлов
Читает записи в файле, сортирует их и записывает их обратно в файл. Позволяет выбрать различные варианты сортировки и сортировку по конкретному полю. Реализация:
Python
Создайте Zip-архиватор
Пользователь добавляет файлы из различных директорий, а программа архивирует их в zip-файл. По желанию: применить Примените современные алгоритмы сжатия. Начните с кода Хаффмана.Реализация:
Java
Генератор PDF файлов
Приложение, которое может читать текстовый файл, файл HTML или какой-либо другой файл и генерировать из него PDF. Отлично подходит для онлайн конвертеров, где пользователь загружает файл и программа возвращает PDF файл По желанию: запустить приложение в облачных сервисах, таких как Google App Engine или Heroku, если возможно.
Программа для теггирования Mp3
Изменяет и добавляет ID3v1-теги в MP3-файлы. Можете попробовать добавить обложку альбома в хедер MP3-файла, или другие ID3v2-теги.
Менеджер кода
Ещё одна утилита, которая позволяет программистам сохранить функции, классы и другие элементы кода для последующего использования. Данные организованы по типу элемента или по языку, чтобы программист смог легко найти нужный элемент. По желанию: В качестве дополнительного упражнения попробуйте добавить выделение синтаксических конструкций в зависимости от используемого языка.
Анализатор SQL-запросов
Утилита, в которую пользователь может ввести запрос и исполнить его в локальной базе данных, чтобы найти способы повысить эффективность запроса.
Инструмент удалённого соединения с SQL-сервером
Утилита, которая может выполнять запросы на удалённые сервера с локального компьютера посредством сети интернет. Утилита должна воспринимать удалённый хост, имя и пароль пользователя, выполнить запрос и вернуть результаты. Реализация:
Python
Генератор отчётов
Создайте утилиту, которая генерирует отчёт на основе сводок в базе данных. Утилита создаёт отчёт о продажах, основываясь на сводных таблицах заказов, или подводит ежедневный итог по операциям в базе данных.
Планировщик событий и календарь
Сделайте приложение, которое позволит пользователю заносить дату и время события, а также кое-какие заметки в календарь. Пользователь должен иметь возможность просмотреть календарь или найти определенное событие. По желанию: добавить возможность создавать повторяющиеся события (каждый день, неделю, месяц, год и т.д.)
Домашняя бухгалтерия
Приложение, которое следит за бюджетом. Пользователь может добавлять текущие расходы и доходы, чтобы узнать, сколько он экономит или расходует сверх бюджета. По желанию: добавить возможность указывать временной диапазон, за который можно посмотреть чистый доход и расход.
Адресная книга
Содержит контакты, включая номера, адреса электронной почты и небольшие заметки о них. Реализация:
Python
Программа для отслеживания ТВ-серий
Не хотите пропустить любимый сериал? Нет записывающего устройства или хотите найти серию и записать её позднее? Создайте приложение, которое будет осуществлять поиск по сайтам телевизионных передач, определять названия/время/каналы и добавлять их в базу данных. База данных/веб-сайт затем могут посылать вам email-уведомления о начале сериала и о канале трансляции. Реализация:
Python
Система планирования путешествий
Создайте систему, которая позволяет пользователям собрать в одном месте и отслеживать информацию по путешествию: авиабилеты, номера в отелях, достопримечательности, бюджет и расписание.
Слайд-шоу
Создайте приложение, которое показывает картинки в формате слайд-шоу. По желанию: добавьте эффекты, например, различные переходы (в виде звезды, круга, жалюзи и т.д.)
Проигрыватель онлайн-видео
Попробуйте создать собственный проигрыватель онлайн-видеороликов.
Mp3 Плеер
Простая программа для проигрывания вашей любимой музыки. Добавьте фичи, которых, по вашему мнению, не достает вашему обычному музыкальному проигрывателю.
Проигрыватель онлайн-музыки
Попробуйте создать собственный проигрыватель онлайн-музыкальных треков. Реализация:
PHP
Приложение для создания ватермарков
Хотите защитить авторские права на некоторые изображения? Добавьте своё лого или текст на изображение, чтобы никто не мог украсть графику с вашего сайта. Создайте программу, накладывающую ватермарк на изображение. *По желанию: Используйте многопоточность для одновременной обработки нескольких изображений. * Реализация:
Python
Черепашья графика
Стандартный проект, в котором вы создаёте плоскость из квадратов 20х20. С помощью различных команд вы управляете черепахой, которая рисует линию на плоскости. Вы можете двигать её вперёд, назад, двигать влево и вправо, поднимать и опускать перо и т.д. Подробную информацию ищите в Google по запросу “черепашья графика”. По желанию: добавьте в программу возможность считывать список команд из файла
Шифр Цезаря
Реализуйте шифр Цезаря, как шифрование, так и дешифрование. Ключом является целое число от 1 до 25. Этот ключ сдвигает буквы алфавита (от A до Z). При шифровании каждая буква алфавита заменяется буквой, находящейся на выбранное количество позиций дальше (алфавит закольцовывается). Таким образом, при использовании ключа 2 “HI” становится “JK”, а при использовании ключа 20 “HI” превращается в “BC”. Это простое моноалфавитное шифрование легко взламывается, поскольку злоумышленник, у которого на руках есть зашифрованное послание, может использовать частотный анализ, или просто попробовать все 25 ключей. Реализации:
Python №1,
Python №2,
Java
Post Views: 413