[C++, Учебный процесс в IT, Карьера в IT-индустрии] CRM, мессенджер и штрих-коды: продолжаем рассказывать об учебных проектах Технопарка
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Мы продолжаем рассказывать о выпускных проектах слушателей наших образовательных проектов. В этом выпуске мы расскажем про три проекта по дисциплине «Разработка на С++» в Технопарке. Предыдущие публикации:один,два,три, четыре.
JunTracker — CRM для школ дополнительного образования
Авторам проекта хотелось сделать что-то полезное, что могло бы использоваться в реальной жизни. Один из студентов работал в школе дополнительного образования преподавателем по робототехнике, программированию и 3D-моделированию. В Excel было сделано и расписание, и учёт финансов, и журнал с оценкам студентов. Всё это было очень неудобно воспринимать, да и родителям не покажешь. Так возникла идея сделать удобный сервис для подобных школ, позволяющий составлять расписание, следить за финансами школы и вести электронный журнал для учеников. При этом сервис должен быть с разделением прав.
CRM написали за семестр с нуля. Сделали многое, но кое-что не успели. В следующем семестре авторы сделают вторую версию с фронтендом на React и сервером на Go.
Левая часть предназначена для администратора школы, а справа отображается вся информация о текущем дне. В базе учеников можно искать по имени и фамилии.
У каждого ученика есть личная карточка со статистикой:
Архитектура CRM выглядит так:
Фронтенд написан на JS, HTML и CSS. В нём использованы паттерны State и «компоновщик». В шаблонизаторе использован синтаксис Django и паттерн «фабрика». В сервере использован паттерн «посредник». Для работы с базой данных PostgreSQL авторы написали обёртку.
Команда проекта: Марк Быховец, Михаил Трущелев, Тимофей Макаров, Андрей Маврин.
GitHub-репозиторий.
Видео с защиты проекта.
Настольный мессенджер JMICKHENGER
Студенты захотели попробовать свои силы в создании мессенджера, обладающего основными функциями подобных современных приложений. JMICKHENGER работает под Linux и macOS. Он умеет создавать беседы с людьми из списка контактов (поддерживает неограниченное количество пользователей в одном чате), отправлять изображения и показывать состояние сообщения (прочитано оно или нет).
Мессенджер создан с использованием таких технологий:
- OpenSSL.
- Qt — используется для отрисовки интерфейса, применён шаблон проектированиz MVC.
- Boost.
- MongoDB.
- SQLite.
Общая архитектура системы:
На стороне приложения находится библиотека сетевой части. Как только пользователь взаимодействует с приложением, вызывается определенная функция клиента. И в зависимости от действия передается callback с нужной функциональностью, которая выполнится после того, как сетевая часть обработает ответ от сервера или уведомит модель об ошибке. При неверных действиях приложение обработает и уведомит пользователя о неточности введенных данных или других действиях (неправильный логин или пароль, уже зарегистрированный пользователь, несуществующий друг, или друг уже есть в списке, и т. п.). Количество запросов к серверу уменьшено: выделяются уникальные ID для уведомления всех пользователей в чате, которые используются вместо запросов. Есть защита от нетерпеливых пользователей: бесполезно кликать много раз по одной и той же кнопке, каждый раз отправляя запрос, в надежде поскорее получить ответ от сервера :)
Сетевая часть взаимодействует с удаленным сервером. Асинхронный клиент работает в отдельном выделенном потоке и написан с использованием Boost Asio. Клиент поддерживает TLS-соединение с сервером. Формат обмена данными — JSON. Для обеспечения безопасности использован OpenSSL. Взаимодействие с сетевой частью происходит с помощью callback’ов. Некоторые callback’и выполняются однократно после прихода ответа от сервера, другие же устанавливаются на всё время работы приложения и срабатывают при каждом получении определенной информации от сервера (аналог observer в Google Firestore). Для некоторой информации, которая редко обновляется, реализован кэш с использованием SQLite.
Асинхронный TCP-сервер тоже написан с использованием Boost Asio и OpenSSL. Сервер идентифицирует подключения с уникальными ID, и с помощью очереди запросов делегирует их выполнение экземпляру класса бизнес-логики. Также авторы с помощью библиотеки mongocxx написали класс-обёртку для работы с MongoDB. При его создании была использована библиотека mongocxx. Бизнес-логику можно условно разделить на три части: получение запроса от клиента в виде JSON’а и его парсинг; работа с базой данных и, в некоторых случаях, проверка их правильности; формирование ответа клиенту. Кроме того, бизнес логику реализовали в виде динамической библиотеки, чтобы удобнее было объединять её с частями сервера.
Схема обмена данными между клиентом и сервером:
А так устроен обмен данными с базой:
Команда проекта: Константин Павлов, Сергей Алексеев, Николай Манзеев, Никита Щелканов.
GitHub-репозиторий.
Видео с защиты проекта.
Система штрих-кодирования
Авторы сделали систему для штрих-кодирования для предприятий, выпускающих всевозможную электронику. Система умеет автоматически учитывать продукцию, контролировать прохождение изделиями различных этапов технологического процесса, и позволяет повысить автоматизацию производства.
Система снижает нагрузку по контролю за производством изделий. Вся актуальная информация доступна в онлайне. Также система исключает человеческие ошибки при подсчёте изделий на разных этапах производства.
Схема работы:
Клиентское ПО позволяет генерировать штрих-коды и регистрировать в базе данных на сервере производимую продукцию. Исполнители с помощью беспроводных сканеров считывают штрих-коды, нанесённые на упаковку или сами изделия. Сканер отправляет информацию о считанном штрих-коде и просит БД зарегистрировать новое изделие.
Для работы системы необходим беспроводной сканер штрих-кодов, вроде такого:
Особенности встроенного ПО:
- Суперсовременная IDE, поддерживающая исключительно язык С.
- Частично задокументированный API на языке С для сканирования и работы с клавишами, дисплеем, лампочками, WiFi, внутренним хранилищем.
- Есть утилита для загрузки прошивки в память.
Чтобы подружить сканер со своей системой штрих-кодирования, авторы проекта провели обратный инжиниринг IDE. Выяснилось, что устройство оснащено микроконтроллером STM32F103xx с ядром ARMv7-M. Также удалось найти статическую библиотеку с бизнес-логикой для обработки API-вызовов.
Инструменты, применявшиеся для разработки системы:
- cc-arm-none-eabi (GNU ARM Toolchain) — набор средств для разработки под архитектуру ARM (компиляторы С, С++, ASM; ld, objdump).
- linker-script — для разметки Flash и RAM.
- cmake в качестве системы сборки + cmake toolchain file для кросс-компиляции под микроконтроллеры STM32 (спасибо репозиторию https://github.com/ObKo/stm32-cmake)/
- Спецификации, документация, Stackoverflow, тематические форумы.
Пришлось написать такие модули:
- Класс-обёртку для взаимодействия с пользователем через клавиши.
- «GUI» для работы с пользователем.
- Стек TCP-HTTP-JSON над реализованным в API сканера IP-уровнем.
- Класс-обёртку над API сканера для сканирования штрих-кодов и получения результатов сканирования.
Далее команда написала клиентское ПО, которое позволяет:
- Авторизовать пользователя.
- Просматривать все модели изделий и информацию о них.
- Просматривать все устройства.
- Добавлять устройства.
- Добавлять модели.
- Генерировать штрих-код для модели.
- Печатать штрих-код на принтере
- Сохранять штрих-код в файл.
Это ПО написали с помощью:
- QtCreator (графический интерфейс).
- Boost (реализация сетевого взаимодействия и парсинг JSON).
- Библиотеки для преобразования идентификатора изделия в штрих-код.
HTTP-сервер создан с использованием Boost.beast, MySqlCppConnector, Boost.thread и OpenSSL. Его задачи:
- Получение HTTP-запросов.
- Обращение к базе данных.
- Аутентификация пользователя/сканера.
- Регистрация пользователя/сканера.
- Генерирование уникальных QR-кодов.
- Отправка HTTP-ответов.
В роли БД выступает MySQL.
Архитектура сервера и базы данных:
Команда проекта: Даниил Черный, Николай Умрихин, Сергей Чепурной.
Видео с защиты проекта.
Подробнее о наших образовательных проектах вы можете почитать по этой ссылке. И почаще заходите на канал Технострим, там регулярно появляются новые обучающие видео о программировании, разработке и других дисциплинах.
===========
Источник:
habr.com
===========
Похожие новости:
- [Карьера в IT-индустрии, Мозг, IT-компании] Планка найма для инженеров: что это за зверь? (перевод)
- [Карьера в IT-индустрии, IT-эмиграция] [Личный опыт] Работа в Uber в Амстердаме: как устроена разработка, карьерный рост, подготовка к интервью
- [Программирование, Учебный процесс в IT, Карьера в IT-индустрии, Конференции] Бесплатные онлайн-мероприятия по разработке (15 сентября – 23 сентября)
- [Карьера в IT-индустрии] Хакатон в условиях пандемии: онлайн формат и решения победителей на базе машинного обучения
- [Программирование микроконтроллеров] Продолжение очередной статьи: STM32 для начинающих. Интерфейсы
- [Программирование микроконтроллеров] Очередная статья: STM32 для начинающих
- [C++, Анализ и проектирование систем, ООП, Программирование, Программирование микроконтроллеров] Micro Property — минималистичный сериализатор двоичных данных для embedded систем
- [C++] C++ enum <-> string? Легко
- [Карьера в IT-индустрии] Как НЕ надо начинать изучать программирование
- [IT-эмиграция, Карьера в IT-индустрии] Переезд инженера в Нидерланды: рулинг, кеннисмигранты, стоимость жизни
Теги для поиска: #_c++, #_uchebnyj_protsess_v_it (Учебный процесс в IT), #_karera_v_itindustrii (Карьера в IT-индустрии), #_obuchenie_programmirovaniju (обучение программированию), #_blog_kompanii_mail.ru_group (
Блог компании Mail.ru Group
), #_c++, #_uchebnyj_protsess_v_it (
Учебный процесс в IT
), #_karera_v_itindustrii (
Карьера в IT-индустрии
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 19:41
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Мы продолжаем рассказывать о выпускных проектах слушателей наших образовательных проектов. В этом выпуске мы расскажем про три проекта по дисциплине «Разработка на С++» в Технопарке. Предыдущие публикации:один,два,три, четыре. JunTracker — CRM для школ дополнительного образования Авторам проекта хотелось сделать что-то полезное, что могло бы использоваться в реальной жизни. Один из студентов работал в школе дополнительного образования преподавателем по робототехнике, программированию и 3D-моделированию. В Excel было сделано и расписание, и учёт финансов, и журнал с оценкам студентов. Всё это было очень неудобно воспринимать, да и родителям не покажешь. Так возникла идея сделать удобный сервис для подобных школ, позволяющий составлять расписание, следить за финансами школы и вести электронный журнал для учеников. При этом сервис должен быть с разделением прав. CRM написали за семестр с нуля. Сделали многое, но кое-что не успели. В следующем семестре авторы сделают вторую версию с фронтендом на React и сервером на Go. Левая часть предназначена для администратора школы, а справа отображается вся информация о текущем дне. В базе учеников можно искать по имени и фамилии. У каждого ученика есть личная карточка со статистикой: Архитектура CRM выглядит так: Фронтенд написан на JS, HTML и CSS. В нём использованы паттерны State и «компоновщик». В шаблонизаторе использован синтаксис Django и паттерн «фабрика». В сервере использован паттерн «посредник». Для работы с базой данных PostgreSQL авторы написали обёртку. Команда проекта: Марк Быховец, Михаил Трущелев, Тимофей Макаров, Андрей Маврин. GitHub-репозиторий. Видео с защиты проекта. Настольный мессенджер JMICKHENGER Студенты захотели попробовать свои силы в создании мессенджера, обладающего основными функциями подобных современных приложений. JMICKHENGER работает под Linux и macOS. Он умеет создавать беседы с людьми из списка контактов (поддерживает неограниченное количество пользователей в одном чате), отправлять изображения и показывать состояние сообщения (прочитано оно или нет). Мессенджер создан с использованием таких технологий:
Общая архитектура системы: На стороне приложения находится библиотека сетевой части. Как только пользователь взаимодействует с приложением, вызывается определенная функция клиента. И в зависимости от действия передается callback с нужной функциональностью, которая выполнится после того, как сетевая часть обработает ответ от сервера или уведомит модель об ошибке. При неверных действиях приложение обработает и уведомит пользователя о неточности введенных данных или других действиях (неправильный логин или пароль, уже зарегистрированный пользователь, несуществующий друг, или друг уже есть в списке, и т. п.). Количество запросов к серверу уменьшено: выделяются уникальные ID для уведомления всех пользователей в чате, которые используются вместо запросов. Есть защита от нетерпеливых пользователей: бесполезно кликать много раз по одной и той же кнопке, каждый раз отправляя запрос, в надежде поскорее получить ответ от сервера :) Сетевая часть взаимодействует с удаленным сервером. Асинхронный клиент работает в отдельном выделенном потоке и написан с использованием Boost Asio. Клиент поддерживает TLS-соединение с сервером. Формат обмена данными — JSON. Для обеспечения безопасности использован OpenSSL. Взаимодействие с сетевой частью происходит с помощью callback’ов. Некоторые callback’и выполняются однократно после прихода ответа от сервера, другие же устанавливаются на всё время работы приложения и срабатывают при каждом получении определенной информации от сервера (аналог observer в Google Firestore). Для некоторой информации, которая редко обновляется, реализован кэш с использованием SQLite. Асинхронный TCP-сервер тоже написан с использованием Boost Asio и OpenSSL. Сервер идентифицирует подключения с уникальными ID, и с помощью очереди запросов делегирует их выполнение экземпляру класса бизнес-логики. Также авторы с помощью библиотеки mongocxx написали класс-обёртку для работы с MongoDB. При его создании была использована библиотека mongocxx. Бизнес-логику можно условно разделить на три части: получение запроса от клиента в виде JSON’а и его парсинг; работа с базой данных и, в некоторых случаях, проверка их правильности; формирование ответа клиенту. Кроме того, бизнес логику реализовали в виде динамической библиотеки, чтобы удобнее было объединять её с частями сервера. Схема обмена данными между клиентом и сервером: А так устроен обмен данными с базой: Команда проекта: Константин Павлов, Сергей Алексеев, Николай Манзеев, Никита Щелканов. GitHub-репозиторий. Видео с защиты проекта. Система штрих-кодирования Авторы сделали систему для штрих-кодирования для предприятий, выпускающих всевозможную электронику. Система умеет автоматически учитывать продукцию, контролировать прохождение изделиями различных этапов технологического процесса, и позволяет повысить автоматизацию производства. Система снижает нагрузку по контролю за производством изделий. Вся актуальная информация доступна в онлайне. Также система исключает человеческие ошибки при подсчёте изделий на разных этапах производства. Схема работы: Клиентское ПО позволяет генерировать штрих-коды и регистрировать в базе данных на сервере производимую продукцию. Исполнители с помощью беспроводных сканеров считывают штрих-коды, нанесённые на упаковку или сами изделия. Сканер отправляет информацию о считанном штрих-коде и просит БД зарегистрировать новое изделие. Для работы системы необходим беспроводной сканер штрих-кодов, вроде такого: Особенности встроенного ПО:
Чтобы подружить сканер со своей системой штрих-кодирования, авторы проекта провели обратный инжиниринг IDE. Выяснилось, что устройство оснащено микроконтроллером STM32F103xx с ядром ARMv7-M. Также удалось найти статическую библиотеку с бизнес-логикой для обработки API-вызовов. Инструменты, применявшиеся для разработки системы:
Пришлось написать такие модули:
Далее команда написала клиентское ПО, которое позволяет:
Это ПО написали с помощью:
HTTP-сервер создан с использованием Boost.beast, MySqlCppConnector, Boost.thread и OpenSSL. Его задачи:
В роли БД выступает MySQL. Архитектура сервера и базы данных: Команда проекта: Даниил Черный, Николай Умрихин, Сергей Чепурной. Видео с защиты проекта. Подробнее о наших образовательных проектах вы можете почитать по этой ссылке. И почаще заходите на канал Технострим, там регулярно появляются новые обучающие видео о программировании, разработке и других дисциплинах. =========== Источник: habr.com =========== Похожие новости:
Блог компании Mail.ru Group ), #_c++, #_uchebnyj_protsess_v_it ( Учебный процесс в IT ), #_karera_v_itindustrii ( Карьера в IT-индустрии ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 19:41
Часовой пояс: UTC + 5