Size: a a a

letsCode Channel

2018 April 20
letsCode Channel
Начинаем строить web приложение на языке Java и фреймворке Spring Boot.
Инициируем проект, отображаем первые страницы
https://youtu.be/jH17YkBTpI4
источник
letsCode Channel
Добавляем поддержку БД в приложение
https://youtu.be/nyFLX3q3poY
источник
letsCode Channel
Добавляем учётные записи и регистрацию в приложение
https://youtu.be/WDlifgLS8iQ
источник
2018 April 21
letsCode Channel
Ох, набросил Оракл на вентилятор с последней версией Java: https://www.opennet.ru/opennews/art.shtml?num=48472
источник
letsCode Channel
Доки - огонь, новая VM: Substrate VM is written in Java and compiled into the native executable
источник
letsCode Channel
Некоторые фразы ну просто огонь:
The resulting program has faster startup time and lower runtime memory overhead compared to a Java VM
источник
letsCode Channel
Ну и контрольный в голову:
Right now peak performance is a bit worse than HotSpot
источник
letsCode Channel
А это типа ящик гвоздей в крышку гроба: список "что не поддерживается при компиляции в нативный вид"
https://github.com/oracle/graal/blob/master/substratevm/LIMITATIONS.md
источник
letsCode Channel
Вердикт: скомпилировать ваше вэб приложение в нативный вид у вас не выйдет. Спринг, гибернейт и прочие "друзья" остаются не у дел
источник
letsCode Channel
А вот так предлагают настраивать поддержку reflection для новой VM:
https://github.com/oracle/graal/blob/master/substratevm/REFLECTION.md
источник
letsCode Channel
Надо брать, ящитаю )
источник
2018 April 23
letsCode Channel
Доводим до ума работу с пользователями: получаем пользователя в контроллере без запроса его вручную и указываем у сообщений их автора
https://youtu.be/PpoOoR55Ypw
YouTube
Spring Boot Jpa (Hibernate): добавляем связи между таблицами базы данных (one to many)
Spring Boot Web Application (MVC): Добавляем связь между таблицами БД: при создании сообщений мы указываем автора этого сообщения. Также мы рассматриваем, как можно получить текущего пользователя в контроллере.

Для получения этого результата мы добавляем сервис, реализующий интерфейс UserDetailsService, содержащий только один метод: получение пользователя по его имени. Ровно такой метод уже реализован у нас в репозитории UserRepo, соответственно мы переиспользуем этот репозиторий.

Далее нам необходимо расширить наш класс User интерфейсом UserDetails, т.к. именно его возвращает созданный нами сервис. Также в рамках изменений в логике нашего приложения enum Role должен реализовывать интерфейс GrantedAuthority.

После этого убираем лишние настройки в WebSecurityConfig, заменяя их на нашу реализацию UserDetailsService и модифицируем шаблоны страниц.

Репозиторий с кодом из видео:
https://github.com/drucoder/sweater/tree/OneToManyMapping

➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

➡ Твиттер: https://twitter.com/letsCodeDru…
источник
letsCode Channel
Роскомнадзор умудрился забанить гугловые сервера, с которых Google раздавал бесплатные (весьма неплохие) шрифты.
https://fonts.google.com/
Сам сайт еще работает, а вот CDN уже нет. Мы качаем используемые шрифты себе.
источник
2018 April 24
letsCode Channel
источник
2018 April 25
letsCode Channel
Правильный звуковой фон во время работы очень важен. Особенно, если неповезло работать в openspace. Проверенные временем сервисы белого шума:
https://mynoise.net/ - настоящий бесконечный белый шум
http://radio.garden/ - огромная коллекция онлайн-радиостанций, красиво раскиданных по глобусу.
источник
2018 April 26
letsCode Channel
Что вкусного и что страшного пришло с Java 10. Неплохая статья. https://habr.com/post/354114/
источник
2018 April 27
letsCode Channel
Переводим приложение с Mustache на более сложные шаблоны: Freemarker и простая вводная по его использованию
https://youtu.be/8MlXahJXLFg
YouTube
Spring Boot Freemarker: подключаем шаблонизатор Freemarker
Spring Boot Web Application (MVC): Переводим Java Spring Boot приложение с библиотеки шаблонов Mustache на Freemarker

Код из видео:
https://github.com/drucoder/sweater/tree/Freemarker

Для начала необходимо заменить зависимости в pom файле с mustache на Freemarker:
https://gist.github.com/drucoder/e301ed54f19628e3456b85977b0afac1

и изменить свойство, отвечающее за помещение _csrf токенов в контекст шаблонизатора,  в фале application.properties:
https://gist.github.com/drucoder/ff6a4179f1982f48cdfa6c48d3be6289

После этого нужно вынести общую часть страниц в отдельный базовый шаблон, содержащий описание HTML страницы и все импорты. Далее поочередно проходим по всем шаблонам и выносим общий код в шаблоны-макросы (например форму авторизации). Следующим этапом переименовываем оставшиеся шаблоны и немного меняем разметку для использования комманд Freemarker вместо отключенного Mustache

Руководство по Freemarker:
https://freemarker.apache.org/docs/dgui.html

Страница с описанием директивы list:
https://freemark…
источник
2018 April 28
letsCode Channel
В России не принято освещать хорошие новости, а я буду :)
РКН по-тихой без помпы и пафоса разбанил более 3 млн. адресов, преимущественно Амазоновских.
источник
letsCode Channel
источник
2018 April 30
letsCode Channel
Добавляем разделение ролей и доступа. Делаем простую админку
https://youtu.be/6dteOGWy4uk
YouTube
Spring Boot Security: добавляем панель администратора и роли пользователей, ограничиваем доступ
Spring Boot Web Application (MVC): Добавляем панель администрирования пользователей и управляем правами доступа пользователей с помощью аннотации hasAuthority из Spring Security.

Код из видео:
https://github.com/drucoder/sweater/tree/hasAuthority

В самом начале нам нужно добавить новую роль в список ролей (enum Role) и страницу, отображающую список пользователей нашего приложения. Для этого создадим новый шаблон для списка пользователей. Используем в нем удобный синтаксис для отображения списков через разделитель.

Синтаксис этой директивы описан тут:
https://freemarker.apache.org/docs/ref_directive_list.html#ref_list_sep

Далее добавим ссылку на эту страницу с главной страницы приложения main.ftl. Следующим этапом добавляем шаблон для редактирования пользователя, где доступными для редактирования сделаны поля username и roles (доступный в виде списка чекбоксов).

В редакторе пользователя для вывода ролей используем функции seq_contains:
https://freemarker.apache.org/docs/ref_builtins_sequence.html#ref_bu…
источник