База данных пищевых добавок
Введение
Так получилось, что последние почти два года я преподаю программирование в одной из IT школ Киева. Занялся я этим Just For Fun. Когда-то я вел блог по программированию, потом забросил. Но желание рассказывать полезные вещи заинтересованным людям никуда не делось.
Мой основной язык — Java. Я писал на ней игры для мобильных, софт для радиосвязи, и различные веб-сервисы. И преподаю я именно Java.
Здесь я хочу рассказать историю обучения последней своей группы. Как они прошли путь от начал обучения до написания работающего веб-сервиса. Полезного веб-сервиса по поиску пищевых добавок. Бесплатного, без рекламы, регистрации и СМС.
Сам сервис вот — E-Dobavki.com.
Проект является учебным, не содержит какой-либо рекламы. Как я понял из этой публикации, можно давать ссылки на такие проекты.
Перед описанием самого проекта немного расскажупро процесс обучения группы, без этого картина будет неполной.
9 месяцев обучения
В школе, где я преподаю, курс Java разбит на 2 части. Суммарно курс занимает примерно 9 месяцев, со всеми перерывами (новогодние каникулы, время на написание промежуточных проектов).
Первая часть знакомит студентов с базовыми понятиями ЯП. Переменные, методы, основы ООП и все эти штуки.
Вторая же часть курса предусматривает, что студент уже более-менее понимает, как писать на Java, и ему можно дать “взрослый” стек технологий. Начинается все с SQL, дальше JDBC, Hibernate. Потом HTTP, сервлеты. Дальше Spring, немного про git и maven. И студенты пишут финальные проекты.
Все обучение разбито на модули. Занятия я проводил два раза в неделю. Длительность одного занятия — два часа.
Мой подход к обучению
Я выпустил 5 групп. Вроде много как для двух лет, но я почти всегда вел 2 группы параллельно.
Я пробовал разные подходы.
Первый вариант — это одна пара выделяется на презентацию с теорией. Вторая же пара — чистая практика. Такой подход как-то работал, но эффективность была не очень, как по мне.
Второй вариант, к которому я пришел и по которому работаю сейчас — это не выделять целую пару на теорию. Вместо этого я миксую короткие отрезки теории по 5-10 минут, и сразу закрепляю их практическими примерами. Такой подход работает лучше.
Если хватает времени, я вызываю студентов на мое место, усаживаю за мой ноут, и они сами делают практические примеры. Это круто работает, но к сожалению занимает много времени.
До конца доходят не все
Открытием для меня стал факт, что не вся группа доходит до конца курса.
По моим наблюдениям, лишь половина студентов пишет финальный проект. Большая часть отсеивается еще на первой части курса. А те, кто дошел до второй части, уже обычно не отваливаются.
Уходят по разным причинам.
Первое — это сложность. Что бы не говорили, а Java — это не самый простой язык. Для написания даже самой простой программы необходимо понять концепцию класса, метода. А чтобы понять, почему нужно писать public static void main(String[] arg) нужно понять еще несколько концепций.
Сравните это с Турбо Паскалем, с которого начинали многие, в том числе и я:
begin
writeln(“Первая программа”);
end.
Решать эту проблему, насколько я знаю, школа будет введением дополнительного тестирования. Теперь на Java пойти учиться смогут не все. Пока это на стадии концепта, но шаг явно правильный.
А вторая причина — это как на картинке ниже:
Люди часто думают, что программирование — это когда печатают много текста, и получают за это много денег. Как копирайтер, только денег больше.
Реальность же немного другая. Много рутинного кода, неочевидные баги, постоянный процесс обучения. Это интересно, но не всем.
Такая статистика. Вначале меня это расстраивало, я думал, что может я что-то не так делаю. Сейчас я понимаю, что примерно такая же статистика на большинстве курсов. Сейчас я не парюсь над этим, а обучаю тех людей, кому это интересно.
Идея сервиса
Когда студенты прошли полный курс, пришло время написания финального проекта. Были разные идеи. Предлагали ToDo листы, проекты управления проектами, еще что-то.
Я же хотел сделать что-то простое, но полезное. Мой критерий был простой — смогу ли я и мои друзья пользоваться этим. Под эти требования подошел веб-сервис поиска пищевых добавок.
Идея проста. Покупая какой-то продукт в магазине, вы видите в составе какую-то E-шную добавку. По коду непонятно, насколько это опасно или нет (а есть и опасные добавки, запрещенные во многих странах).
Вы открываете сайт, вбиваете название добавки (номер, одно из альтернативных названий), и получаете сводку по добавке:
Похожие проекты есть. Можно также просто вбить добавку в Гугл, хотя он не всегда корректно показывает информацию.
Но поскольку проект учебный, трудности выше не остановили нас 🙂
Реализация
Все писали на Java, исходный код проекта на Гитхабе.
Нас было 7 человек, включая меня. Каждый делал пулл реквест, и я, либо же еще один человек из группы, принимал этот пулл реквест.
Реализация проекта заняла примерно месяц — от озвучки идеи до того состояния, который вы видите сейчас.
Парсинг добавок
Первое, что сделал один из студентов, не считая базового создания обвязки вокруг БД (сущности, репозитории и т.д.) — это парсинг добавок из существующего информационного сайта.
Это необходимо было для тестирования остальных моментов. Не нужен дополнительный код для наполнения БД. Быстро спарсив несколько добавок, можно было дальше тестировать UI, сортировку, фильтрацию.
Spring Boot позволяет создать несколько профилей. Профиль — это файл с настройками.
Для dev-окружения мы использовали профиль с локальной СУБД H2 и HTTP портом по умолчанию (8080). Таким образом, при каждом запуске приложения БД очищалась. Парсер в этом случае был той вещью, которая спасала нас.
Поиск и фильтрация
Важный момент — это поиск и фильтрация. Человек в магазине должен быстро тыкнуть код добавки, или какое-то из названий, и получить результат.
Поэтому сущность Добавка имеет несколько полей. Это код добавки, альтернативные названия, описание. Поиск идет по Like по все полям одновременно. И если вы введете [123] либо [амарант], то получите одинаковый результат.
Делали все это на основе спецификаций (Specification). Это часть Spring, которая позволяет описать базовые условия поиска (like по какому-то полю, например), а потом комбинировать эти условия (OR или AND).
Написав десяток спецификаций, можно задавать сложные запросы вида “все опасные добавки-красители, у которых в описании есть слово [красный]”.
В плане работы с БД Spring мне кажется очень удобным. Особенно это проявляется в случае работы со сложными запросами. Я понимаю, что это дает свой оверхед, и вручную написанный и оптимизированный SQL запрос будет выполняться быстрее.
Но также я придерживаюсь точки зрения, что не нужно заранее все оптимизировать. Первая версия должна запуститься, работать, и допускать возможность замены отдельных частей. А если пойдет нагрузка — вот эти отдельные части и нужно переписывать.
Security
Все просто. Есть пользователи с ролью ADMIN — они могут редактировать добавки, удалять, добавлять новые.
И есть другие пользователи (зарегистрированные либо нет). Они могут только просматривать список добавок и искать нужные.
Для разделения прав использован Spring Security. Данные пользователей хранятся в БД.
Пользователи могут регистрироваться. Сейчас это ничего не дает. Если студенты продолжат развивать сервис, и вводить какие-то персонализированные функции, то регистрация пригодится.
Адаптивность и Bootstrap
Следующий момент — это адаптивность. В случае с нашим сервисом (по крайней мере так, как мы это видели) большинство пользователей будут с мобильными телефонами. И с мобилки нужно быстро посмотреть добавку.
Чтобы не мучаться с CSS, взяли Bootstrap. Дешево, сердито, и выглядит прилично.
Не могу назвать интерфейс идеальным. Главная страница еще более менее, а страница детального описания добавки узкая, на мобилках нужно шире ее сделать.
Могу сказать только, что я старался по минимуму вмешиваться в работу. Это все же проект студентов. Ну и конечно же ребята смогут поправить потом такие моменты.
Минутка SEO оптимизации
Поскольку я уже больше двух лет плотно занимаюсь сайтами и всем, что связано с SEO, я не мог выпустить проект без хотя бы базовой SEO оптимизации.
По факту, я сделал шаблонную геренацию Title и Description для каждой добавки. URL почти ЧПУ, хотя можно сделать и короче.
Я добавил также счетчики посещаемости. Добавил сайт в Яндекс Вебмастер и Google Search Console, чтобы отслеживать предупреждения от поисковых систем.
Это мало. Нужно еще добавить robots.txt и sitemap.xml для полной индексации. Но опять-таки, это проект студентов. Я им скажу, что нужно сделать, и если захотят — сделают.
Нужно прицепить SSL сертификат. Подойдет и бесплатный Let’s Encrypt. Я делал это для Spring Boot. Делается несложно, а доверие ПС повышается.
Что дальше с проектом
Дальше по факту выбор за ребятами. Изначальная идея проекта еще включала в себя БД продуктов с привязками к добавкам.
Вводите “сникерс” и видите, какие в нем есть пищевые добавки.
Еще на старте проекта я знал, что продуктов у нас не будет 🙂 Поэтому начали мы только с добавок.
Сейчас же можно прикрутить продукты, внедрить доп. плюшки. Если это будет обширная БД, пользователи найдутся.
Развертывание
Проект развертывался на VPS, Aruba Cloud. Это самый дешевый VPS, который мы смогли найти. Я пользуюсь этим провайдером уже больше года для своих проектов, и он приятно меня радует.
Характеристики VPS: 1 GB RAM, 1 CPU (за частоту не знаю), 20 GB SSD. Для нашего проекта этого хватает с головой.
Проект собирается обычным mvn clean package. Получается fat jar — исполняемый файл со всеми зависимостями.
Чтобы немного автоматизировать все это, я написал пару баш скриптов.
Первый скрипт удаляет старый jar файл, и собирает новый.
Второй скрипт запускает собранный jar, передавая ему имя нужно профиля. В этом профиле содержатся сведения подключения к БД.
БД — MySQL на этом же VPS.
Итого перезапуск проекта включает в себя:
- зайти на VPS по SSH
- скачать последние правки git
- запустить local-jar.sh
- убить запущенное приложение
- запустить launch-production.sh
Занимает эта процедура три минуты. Мне это кажется разумным выбором для такого небольшого проекта.
Сложности
Основные сложности при создании проекта были организационного характера.
Есть группа людей, которые вроде бы и умеют программировать, но не очень. Что-то знают, но применить толком еще не могут. И вот нужно, чтобы они сделали проект за месяц.
Я выделил условного тимлида в этой группе. Он вел гугл док со списком задач, раздавал задачи, контролировал их принятие. Также он принимал пулл реквесты.
Также я попросил студентов, чтобы каждый вечер они писали краткий отчет по сделанной работе по проекту. Не сделали ничего — ок, так и пишите “не сделал ничего”. Это отличная практика, которая заставляет немного напрячься. Не все этому правилу следовали, к сожалению.
Цель всей этой движухи была простая. Сформировать команду, пусть и на короткое время, будет работать вместе.
Я хотел, чтобы у ребят было ощущение важности их работы. Понимать, что они не пишут сферический код в вакуме. А что они делают вместе проект, которым потом будут пользоваться люди.
Первую неделю-две была раскачка. Вяло делались сущности, небольшие коммиты. Понемногу я все же их расшевелил, и работа пошла веселее. Общение в чате стало живей, студенты предлагали свои дополнения.
Я считаю, что цель достигнута. Проект сделан, небольшой опыт работы в команде ребята получили. Есть видимый ощутимый результат, который можно показать друзьям, можно дальше развивать.
Выводы
Обучение — это интересно.
После каждой пары я приходил эмоционально взбудораженным. Я стараюсь сделать каждую пару уникальной, и передать максимум знаний.
Приятно, когда группа, которую я обучаю, доходит до финала. Особенно круто, когда ребята пишут “я устроился на работу, все норм, спасибо”. Пусть это джуниор, пусть не самые большие деньги сначала. Но самое главное — они сделали шаг навстречу своим желаниям, и у них это получилось.
Статья хоть и получилась довольно объемной, но все моменты конечно же раскрыть не получилось. Поэтому пишите в комментариях ваши вопросы.
Источник
registrbad@inbox.ru
Регистр БАД –
электронный справочник Биологически Активных ДобавокБиологически активные добавки – на российском рынке появились в 90-х годах прошлого столетия. С ростом интереса к новому и необходимому продукту возникла потребность в объективной информации о БАД.
Интересует потребителя состав БАД, отзывы специалистов об их безопасности, вопросы качества, сведения о регистрации БАД и свидетельства об их государственной регистрации – СГР, телефон, почтовые, web- и e-mail адреса разработчика, производителя или поставщика. Справочник предоставляет такую информацию, дает возможность воспользоваться прямой связью с разработчиками биологически активных добавок. С другой стороны, размещение контактной информации свидетельствует об ответственности производителя перед потребителем – у потенциального потребителя открытый контакт вызывает рост доверия к поставщику, производителю и его продукции.
До создания справочника в сети интернет обобщенной информации не было, по мере развития российского рынка БАД она стала востребованной. Информационных ресурсов удовлетворяющих запросам широких слоев населения в Рунете не существовало – возникла идея создания специального веб-ресурса по БАД. В 2001 году появилась первая версия Единого Электронного Справочника Биологически Активных Добавок ЕЭС «Регистр БАД».
Необходимость создания интернет-справочника продиктована отсутствием объективной и достоверной информации о БАД и о продуктах функционального питания, засильем недобросовестной рекламы, обилием некачественной продукции, недостаточной информированностью отечественного потребителя о законодательной базе, регулирующей производство
и сбыт БАД.Справочник ориентирован на всех участников цивилизованного рынка БАД – потребителей и производителей, практикующих медиков и фармацевтов, специалистов системы МЗ и оздоровительных центров. Ресурс обладает сведениями о всех производителях БАД, регулярно пополняется новой продукцией, названиями фирм производителей.
Учитывая значимость сайта ЕЭС «Регистр БАД» , его постоянное и длительное присутствие в ТОР в ведущих поисковых систем и каталогов по основным ключевым запросам, субъекты российского рынка БАД с успехом используют этот ресурс как площадку для представления, продвижения и рекламы своей продукции.
“Регистр БАД” в средствах массовой информации
12.09.05 | ЕЭС”Регистр БАД” на первых позициях в ПС Yandex |
ПС Яндекс позиционирует ЕЭС Ргистр БАД в ТОР 10 по запросам основных ключевых слов “БАД”, “реестр БАД”, “биологически активные добавки”, “производители бад”, “классификатор бад”, “сертификация бад”… Подробнее… |
10.10.02 | Что такое БАД к пище |
… Биологически активные добавки к пище (БАД) – это концентраты биологически активных веществ природного происхождения. Эти вещества не синтезируются в организме в связи с чем возникла необходимость дополнения нашего рациона растительными экстрактами, аминокислотами, витаминами и минералами … (Источник) |
21.02.05 | Отличие БАД от лекарств. Витамины . |
… Количество натуральных или идентичных натуральным биологически активных веществ вводимых в состав продуктов для обогащения их рациона определяются суточной потребностью, терапевтической дозой. “…Если дозировки активных веществ превышают упомянутые выше – это уже лекарство”… (Комментарий) |
02.10.13 | Как правильно покупать БАД |
… Оборот БАД в РФ и странах ЕврАзЭС строго регламентирован: “….При осуществлении покупки-продажи БАД вступают в силу договорные отношения покупателя и продавца. Продажа БАД без оговоренных законодательством документов не возможна. Покупатель, в свою очередь, приобретая БАД обязан знать свои права и правильно применять свои знания…” (Источник) |
01.01.13 | Дистанционные продажи БАД и ФЗ |
Правомерна ли продажа БАД по телефону, сеть интернет, МЛМ и другим дистанционным способом? Ответ: розничная торговля БАД может осуществляться только через аптечные учреждения (аптеки, аптечные магазины, аптечные киоски), продовольственные магазины (специальные отделы, секции, киоски), специализированные магазины по продаже диетических продуктов. (Комментарий…) |
28.02.13 | ФЗ N 200 о рекламе БАД. |
22 октября 2013 года вступил в силу Федеральный закон от 23.07.2013 N 200-ФЗ “О внесении изменений в Федеральный закон “О рекламе”и статью 14.3 Кодекса РФ об административных правонарушениях”. В этой связи: |
Источник
Лук репчатый Он относится к овощу и ботаническому луковому семейству (бот.: Alliaceae). Уже более 5000 лет он известен как добавка в пищу, и, скорее всего, он возник в Азии. Разнообразие форм частично связано с разнообразием, частично из-за условий окружающей среды. Лук от круглой до грушевидной формы образуется в сырую погоду. В сухую погоду идет формирование […]
Уксус Уксус ( лат. Acētum ) является кислым ароматизатором и консервантом, который производится путем сбраживания жидкостей, содержащих спирт, с уксуснокислыми бактериями ( уксусная кислота ). Приготовление уксуса является одним из старейших процессов производства продуктов питания в истории человечества. Уксусная эссенция максимум 25%. Коммерческий уксус обычно имеет концентрацию уксусной кислоты от 5% до 6%. Уксусную кислоту или уксусную эссенцию, разбавленную водой, часто называют уксусом, но ее следует объявлять таковой. Уксус содержит самое большее небольшое количество алкоголя . Ледяная уксусная кислота является […]
Что такое сахар? Пищевая добавка или элитная пища. Сахар получается из растений, имеет сладкий вкус и является кристаллическим. Каждое растение производит сладкое вещество посредством фотосинтеза. Тем не менее, только несколько растений хранят его в соответствующих количествах. Сахарный тростник и сахарная свекла являются двумя из немногих растений, из которых он может быть получен. Проще говоря, это углевод. С химической точки зрения, он […]
Соль Столовая соль — это пищевая добавка. Представляет собой кристаллы от бесцветного до розового цвета. Мы не можем жить без соли. И почему сегодня так много модных ярких кристаллов соли? В средние века соль была настолько драгоценной, что ее взвешивали золотом, и поэтому ее также называли «белое золото». Недаром «соль в супе» в общеизвестном смысле является важным компонентом, […]
Вода — это добавка Вода (H 2 O) представляет собой химическое сочетание элементов кислорода (O) и водорода (H). Термин вода используется специально для жидкого агрегатного состояния. В твердом , то есть замороженном состоянии, он называется льдом. В газообразном состоянии — водяным паром или просто паром. Где используется вода И так, вода как вид добавки используется везде. Вам нужна только вода для питья, приготовления пищи […]
Добавка Это, прежде всего вещество, добавляемое в небольших количествах к чему-то еще, чтобы улучшить, усилить или иным образом изменить его. Добавки используются по разным причинам. Их добавляют в пищу, например, для усиления вкуса, придания нужного цвета или для предотвращения порчи. Их добавляют в бензин, чтобы уменьшить выброс парниковых газов, а в пластик, чтобы улучшить способность к формованию […]
Мёд Самый вкусный и полезный — это настоящий мёд, которые собирают пчелы. Они летаю на расстояние до 15 километров от улей. Собирают пыльцу с цветов, которые распустились и благоухают вокруг. Пчелы видят определенный цвет и летят на него. Для них это как маячок в жизни, за которым пчелы преодолевают каждый летний день, по нескольку десятков […]
Шафран Шафран относится к семейству ирисовых. Является многолетним растением. Специя шафран Специя шафран – правильно высушенные рыльца цветка крокуса. Интересно то, что листья и цветок, сразу растут из луковицы, потому что стебель полностью отсутствует. Один клубень, дает не более трех цветков. Цвет шафрана Цветовая гамма может удивить наличием сиреневого, фиолетового, светло-синего и других оттенков. Цена […]
Рацион лошади с содержанием белка Белок содержится в большинстве кормах, но его содержание значительно варьируется. Потребности лошади в белке, должны быть удовлетворены для поддержания функций организма и его способности наращивать и поддерживать мышечную массу. Когда вы смотрите на содержание белка в составе корма, вы смотрите не только на количестве, но и на качество. Качество белка, зависит от […]
Валин что это такое, для чего это нужно и каковы его преимущества: Любой, кто хочет ускорить рост мышц в тренажерном зале, знает, что добавки – это отличный союзник для достижения цели. Однако немногие спортсмены и культуристы, которые используют эту мощную спортивную добавку для увеличения мышечной массы, знают функции каждой из трех аминокислот с разветвленной цепью (валина, […]
Навигация по записям
Источник