Java с пищевыми добавками
Введение
Так получилось, что последние почти два года я преподаю программирование в одной из 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
Занимает эта процедура три минуты. Мне это кажется разумным выбором для такого небольшого проекта.
Сложности
Основные сложности при создании проекта были организационного характера.
Есть группа людей, которые вроде бы и умеют программировать, но не очень. Что-то знают, но применить толком еще не могут. И вот нужно, чтобы они сделали проект за месяц.
Я выделил условного тимлида в этой группе. Он вел гугл док со списком задач, раздавал задачи, контролировал их принятие. Также он принимал пулл реквесты.
Также я попросил студентов, чтобы каждый вечер они писали краткий отчет по сделанной работе по проекту. Не сделали ничего — ок, так и пишите «не сделал ничего». Это отличная практика, которая заставляет немного напрячься. Не все этому правилу следовали, к сожалению.
Цель всей этой движухи была простая. Сформировать команду, пусть и на короткое время, будет работать вместе.
Я хотел, чтобы у ребят было ощущение важности их работы. Понимать, что они не пишут сферический код в вакуме. А что они делают вместе проект, которым потом будут пользоваться люди.
Первую неделю-две была раскачка. Вяло делались сущности, небольшие коммиты. Понемногу я все же их расшевелил, и работа пошла веселее. Общение в чате стало живей, студенты предлагали свои дополнения.
Я считаю, что цель достигнута. Проект сделан, небольшой опыт работы в команде ребята получили. Есть видимый ощутимый результат, который можно показать друзьям, можно дальше развивать.
Выводы
Обучение — это интересно.
После каждой пары я приходил эмоционально взбудораженным. Я стараюсь сделать каждую пару уникальной, и передать максимум знаний.
Приятно, когда группа, которую я обучаю, доходит до финала. Особенно круто, когда ребята пишут «я устроился на работу, все норм, спасибо». Пусть это джуниор, пусть не самые большие деньги сначала. Но самое главное — они сделали шаг навстречу своим желаниям, и у них это получилось.
Статья хоть и получилась довольно объемной, но все моменты конечно же раскрыть не получилось. Поэтому пишите в комментариях ваши вопросы.
С помощью программы Е-Добавки ты легко сможешь определять вредные пищевые добавки, не покупая в очередной раз то, что тебя медленно, но уверенно убивает.
Особенности:
— самая большая база Е-(пищевых добавок);
— более тысячи наименований:
— официальные источники и постановление России/Украины;
— групповой, единичный поиск Е-добавок;
— как выбрать безопасные продукты.
Установка полной версии:
1) Скачиваем jad и jar файлы.
2) Одинаково переименовываем оба файла, например «E_dobavki.jar» и «E_dobavki.jad»;
3) Кидаем файлы в одну папку на телефоне и играем в полную версию.
Если Вам понравилась программа, нажмите «Сказать спасибо.»
Спасибо за программу Е-Добавки сказали: NokiaStyle, noxa, NikolasSm, NeedForSpeed, nimca, hrystenko, Mr.Crow., safronchik, Ostax, 4valun, ПаровозЪ, МаксиМ3009, igaevhl, Keelay, dragonoed, troy57, Drag 245, 4yBaW, locust94, oooleg, don-digidon, DobrIN, Dimich_111, hfpdehdfh, СлавенцЫя, perec01, Renej, Eduard_Z, Неизвестен, homerxxx, Ilyuha22, СосИсочКа, Joni_Astana, Костяныч, am-nnb, Pashton, serhey.ru, sania.alex2, thestig, Апунахасапимапетилон, Gish mob, max555219, NYB9K, Qwert101, dreamy, djandruha55, JOKERNIK, Deniell, Djrmx, DamnGo_0D, прадо, Pasha-king, .SvaT, ОПТИМУС ПРАЙМ, Yulia007, Smile Boy, amrina95, Дролер, Vault-Boy, Spartanec, cooperochek, ….::Jumper::…, JV2011, HERO GAMES, Baron777, qGOGAq, kkomp, Данила Номер 1, tyrbo, Волшебник, грава1997, Woodoo_people, 82gulyaev, alexrzn3, kirllbkv, rodiv200, 465897, ололоша, Soldie, mikle3, Флаймо, Vady, rss4feed, marat90, CRoK, nus98, pankkiller92, =^.^=cat=^.^=, olea1999, probatek Всего: 90 человек. Зарегистриуйтесь и Вы сможете поблагодарить автора за релиз! Регистрация |
Отзывы о java программе Е-Добавки :
Сообщений: 729 Релизов: 39 Спасибок: 2477 | ахах быстро))) спс)))) атдуши))) буду знать что хаваю))
|
|
#2 Написал: noxa 29 января 2011 15:35 |
Сообщений: 177 Релизов: 17 Спасибок: 535 | крутой))))
|
|
#3 Написал: KoB6aCa 29 января 2011 15:37 |
Сообщений: 1977 Релизов: 248 Спасибок: 14672 | Вместо jar jad добавил, щас поправят…
|
|
#4 Написал: NikolasSm 29 января 2011 15:39 |
Сообщений: 62 Релизов: 0 Спасибок: | круть
|
|
#5 Написал: KoB6aCa 29 января 2011 15:46 |
Сообщений: 1977 Релизов: 248 Спасибок: 14672 | Кстати, если чкачать JAD, тот, что 332 байта через телефон, то прога сама начнёт грузиться и будет полная версия
|
|
#6 Написал: Mr.Crow. 29 января 2011 16:04 |
Сообщений: 953 Релизов: 0 Спасибок: | Супер, она у меня уже давно !!!
|
|
#7 Написал: Ostax 29 января 2011 16:17 |
Статус: Users Сообщений: 122 Релизов: 0 Спасибок: | щас что не купи..все вредно))
|
|
#8 Написал: ПаровозЪ 29 января 2011 16:28 |
Статус: VIP Сообщений: 1529 Релизов: 522 Спасибок: 41241 | Красивая программа
|
|
#9 Написал: JO[Ke]R 29 января 2011 16:50 |
Сообщений: 335 Релизов: 0 Спасибок: | А какой jad качать?
|
|
#10 Написал: fliper2 29 января 2011 17:01 |
Сообщений: 3196 Релизов: 187 Спасибок: 10786 | А почему 2 jadа?
|
|
#11 Написал: dragonoed 29 января 2011 17:02 |
Сообщений: 34 Релизов: 0 Спасибок: | так пойдёт
|
|
#12 Написал: Keelay 29 января 2011 17:05 |
Сообщений: 246 Релизов: 7 Спасибок: 118 | Джокер второй джад. Ков6аса спасибо нужная прога… Конечно все, что в магазинах сейчас продается вредно, но надо же знать, что это за е-добавки в составе, и как они влияют на организм. Один джад для хитрых действий, чтобы полная была))). А если другой(второй) качать, то сразу полная будет.
|
|
#13 Написал: locust94 29 января 2011 17:18 |
Сообщений: 269 Релизов: 0 Спасибок: | Как удачно обложку забацали))
|
|
#14 Написал: fliper2 29 января 2011 17:18 |
Сообщений: 3196 Релизов: 187 Спасибок: 10786 | Один джад для хитрых действий, чтобы полная была))). А если другой(второй) качать, то сразу полная будет. Мда! Классно обьяснил! Чё за хитрые действия?
|
|
#15 Написал: MC_Shket 29 января 2011 17:52 |
Сообщений: 4 Релизов: 0 Спасибок: | А у меня не работает вопше хотя всё сделал как в описании жалко ((((
|
|
#16 Написал: Камикадзе 29 января 2011 18:55 |
Статус: Users Сообщений: 76 Релизов: 0 Спасибок: | я скачал все 3 файла, переименовывал их одинаково, закинул в телефон под двумя различными комбинациями и ничего! неподдерживаемый формат файла((((
|
|
#17 Написал: Даниил. 29 января 2011 19:04 |
Сообщений: 14 Релизов: 0 Спасибок: | |
|
Сообщений: 36 Релизов: 0 Спасибок: | Блин,тоже всё по инструкции делаю,файлы сливаются,но пишет что недопустимое приложение!
|
|
#19 Написал: KoB6aCa 29 января 2011 19:07 |
Сообщений: 1977 Релизов: 248 Спасибок: 14672 | Второй JAD запасной, если с первым не пойдёт то юзайте второй!)
|
|
#20 Написал: jucki 29 января 2011 19:13 |
Сообщений: 6 Релизов: 0 Спасибок: | Вырезано. Запрещены комментарии, состоящие только из смайлика(ов)
|
|
Сообщений: 36 Релизов: 0 Спасибок: | KoB6aCa У меня даже просто демо не работает и соответственно с обоими Jad — файлами не работает
|
|
#22 Написал: KoB6aCa 29 января 2011 19:35 |
Сообщений: 1977 Релизов: 248 Спасибок: 14672 | Неизвестен если не работает то я ничем не погому
|
|
Сообщений: 58 Релизов: 0 Спасибок: | version
|
|
#24 Написал: Камикадзе 29 января 2011 20:10 |
Статус: Users Сообщений: 76 Релизов: 0 Спасибок: | Ковбаса, ОБА jad — a не работают!
|
|
#25 Написал: Valend 29 января 2011 20:15 |
Статус: Users Сообщений: 14 Релизов: 0 Спасибок: | не работают!
|
|
Статус: Users Сообщений: 17 Релизов: 0 Спасибок: | А у мненя один «недопустьимое приложение» а второй неподдержывается
|
|
#27 Написал: Trablex 29 января 2011 21:12 |
Сообщений: 32 Релизов: 0 Спасибок: | Прога реально класная советую всем качать, у меня похожая уже год на телефоне и я ей постоянно пользуюсь
|
|
Статус: Users Сообщений: 172 Релизов: 0 Спасибок: | Спасибо что выложил! +1!
|
|
#29 Написал: homerxxx 29 января 2011 21:37 |
Сообщений: 405 Релизов: 0 Спасибок: | Тут проблемс з JAR а не з JADом
|
|
Сообщений: 30 Релизов: 0 Спасибок: | 6300
|
|
#31 Написал: shift281 29 января 2011 23:05 |
Сообщений: 59 Релизов: 0 Спасибок: | Блин… Ну и народ пошел. Сто раз уже всем обьясняли как делать чтобы полная версия была. Ужеж все разжевано, осталось только в мобилу в одну папку закинуть и все. homerxxx если к джару есть джад, то ни архиватор ни кемулятор не будут его запускать. А вот как раз таки на телефоне может и пойти.
|
|
#32 Написал: BAES 30 января 2011 02:03 |
Сообщений: 212 Релизов: 0 Спасибок: | недопустимое приложение — ні з одним ні з іншим ДЖАДом не працює.
|
|
#33 Написал: thestig 30 января 2011 10:39 |
Сообщений: 65 Релизов: 0 Спасибок: | Вещь! будем знать что нас убивает)
|
|
Сообщений: 16 Релизов: 0 Спасибок: | 7230 не допустимое приложение,как не крути
|
|
#35 Написал: NYB9K 30 января 2011 15:59 |
Сообщений: 60 Релизов: 0 Спасибок: | Я ВСЕ СДЕЛАЛ!!!!! !!!! !СКАЧАЙТЕ ДЕМКУ И КИНЬТЕ К НЕЙ .JAD НА ЭТОЙ СТРАНИЦЕ!!!! И БУДЕТ РАБОТАТЬ!!!!!!! КОВБАСА ПОМЕНЯЙ .JAR!!!!!! НО спасибо кину
|
|
Сообщений: 64 Релизов: 0 Спасибок: | що їв те й буду, но тепер буду знати чим травлюся…)
|
|
#37 Написал: troy57 30 января 2011 20:02 |
Сообщений: 56 Релизов: 0 Спасибок: | че то не пошла(((((
|
|
Сообщений: 5 Релизов: 0 Спасибок: | круто
|
|
Сообщений: 31 Релизов: 0 Спасибок: | 6500
|
|
Сообщений: 16 Релизов: 0 Спасибок: | Ну мы ведь и без этой программы знаем что нас пичкают гадостью всякой
|
|
Сообщений: 14 Релизов: 0 Спасибок: | ахахах
|
|
#42 Написал: Vault-Boy 10 февраля 2011 17:51 |
Статус: Users Сообщений: 21 Релизов: 0 Спасибок: | не работает,жаль!
|
|
#43 Написал: omonait13 14 февраля 2011 22:35 |
Сообщений: 29 Релизов: 0 Спасибок: | качайте уже сломанную и ходовую версию с Вырезано
|
|
#44 Написал: ruslan3 27 февраля 2011 14:16 |
Сообщений: 50 Релизов: 0 Спасибок: | спс
|
|
#45 Написал: JV2011 24 марта 2011 17:26 |
Сообщений: 4 Релизов: 0 Спасибок: | у меня вопрос а что теперь делать с тем что я купил??
|
|
Сообщений: 22 Релизов: 0 Спасибок: | круто теперь я знаю что ем
|
|
Сообщений: 25 Релизов: 0 Спасибок: | а зачем jad на нокиа
|
|
#48 Написал: Волшебник 19 июня 2011 14:05 |
Сообщений: 323 Релизов: 0 Спасибок: | Мне это не нужно! я в деревне живу=) питаюсь только всем деревенским !
|
|
#49 Написал: gursa 20 августа 2011 11:44 |
Сообщений: 2 Релизов: 0 Спасибок: | спасибо
|
|
#50 Написал: 82gulyaev 15 февраля 2012 18:32 |
Сообщений: 2 Релизов: 0 Спасибок: | Всем привет!Кто подскажет!Jar @ Jad скачиваю переименовываю; кидаю в папку!Что делать дальше?Как эти файлы должны сливатся в одно целое-подскажите!СПАСИБО!
|
|
#51 Написал: mikle3 21 апреля 2012 14:55 |
Сообщений: 1 Релизов: 0 Спасибок: | Красота. Люди качайте другий джад з телефону! Усе працює на 6303с, особисто перевірив. -by Alk@zar
|
|
#52 Написал: marat90 17 июня 2012 19:39 |
Сообщений: 57 Релизов: 0 Спасибок: | Не идет.
|
|
#53 Написал: dimmassik 27 июня 2014 22:38 |
Сообщений: 83 Релизов: 0 Спасибок: | Не идёт
|
|
Информация:
Написать свой отзыв о java программе Е-Добавки , могут только зарегистрированые пользователи. Скачать бесплатно Е-Добавки можно без регистрации!
Регистрация.
Обновите чтобы увидеть другой ТОП
Программы для популярных телефонов Nokia series40