Имеется бэкенд на springboot. Работа с БД осуществляется посредством spring-data-jpa.
Еще есть фронтенд на vuejs.
Захотелось мне реализовать обновление страницы при изменении данных на сервере, для чего я завел websocket (sockjs, stomp).
Вебсокет планирую пока использовать только для оповещения сервером всех заинтересованных об изменении данных.
Вопрос первый, об организации каналов оповещения.
Допустим у меня есть четыре сущности: A, B, C, D.
Еще есть три компонента:
- cAB, его состояние зависит от сущностей A и B
- cCD, его состояние зависит от сущностей C и D
- cABC, его состояние зависит от сущностей A, B и C
Сущности могут изменяться на сервере в рамках одной транзакции в различных комбинациях.
Хотелось бы минимизировать число обновлений компонентов при изменении данных на сервере.
Допустим вызов одного ресурса производит изменение сущностей A, B, C. В итоге я хотел бы чтобы в результате все три компонента обновились по одному разу.
Вариант первый: создать по каналу на сущность и при изменении каждой сущности постить в соответствующий ей канал сообщение. Каждый компонент подписывается на каналы сущностей, от которых зависит его состояние. Но тогда компонент cAB обновится два раза, первый раз по сообщению от канала A, второй раз по изменению по сообщению канала B.
Решить эту проблему можно заведя таймер, который сбрасывался бы получив каждое сообщение. По таймауту происходило бы обновление.
Таким образом следующие друг за другом сообщения приводили бы к одному единственному обновлению.
Но тут надо во vuejs реализовывать эту логику на таймерах.
И вообще нормальные ли это решение?
Вариант второй: сообщение об обновлении постилось бы в один единственный канал, сообщение содержало бы список сущностей, которые изменились.
Минус один и существенный на мой взгляд: любой клиент получал бы сообщения об обновлении сущностей, которые ему даже не интересы в этот момент. А у меня есть сущности, которые обновляются раз в 5 секунд.
Какие есть более оптимальные варианты на ваш взгляд?
Вопрос второй. Так как клиенты не будут слать серверу никаких сообщений по вебсокету, аннотации @MessageMapping @SendTo для меня бесполезны, ибо отправка сообщений будет происходить из контроллеров rest посредством вызова SimpMessagingTemplate.this.template.convertAndSend
Но транзакция закрывается при выходе из транзакционного метода. Получается даже если я вызываю convertAndSend в конце метода контроллера, данные еще не зафиксированы, а я уже шлю сообщение клиентам. Каким образом организовать отправку сообщения клиентам после успешной фиксации транзакции? Этот вопрос может быть связан со следующим.
Если подход с отправкой сообщения об изменении сущностей в канал соответствующий этой сущности является оптимальным, то я хотел автоматизировать отправку сообщений, чтобы в каждом методе контроллеров не приходилось вести учет сущностей, который я меняю. В голову пришла такая мысль: обрабатывать фиксацию транзакций, в каждом событии анализировать сущности, которые были повержены изменению, постить в каналы соответствующие этим сущностям сообщения. Это возможно технически? Отследить успешный коммит транзакции и перебрать измененные сущности в этой транзакции?
И насколько кошерен этот подход?
Буду рад любым комментариям и советам.
Удалил VirtualBox 5.2.
Скачал с офсайта VirtualBox 6.0.4.
При установке возникает ошибка.
В логах написано, что синтаксическая ошибка при трансляции.
Что это такое? Как исправить?
Потому что при попытке установить VirtualBox 5.2 возникает та же ошибка.
Rosa Linux - это российский дистрибутив, основанный на Mandriva и развиваемый компанией НТЦ ИТ РОСА. У дистрибутива есть версия для сервера и для обычного компьютера. Кроме свободной и бесплатной версии дистрибутива есть сертифицированные в ФСТЭК и Министерстве обороны РФ дистрибутивы. Что касается окружения рабочего стола, то официально выпущены сборки для таких окружений, как KDE 4, Plasma 5, LXQT, XFCE. В этой статье мы рассмотрим, как проходит установка Rosa Linux редакции для дома (Fresh) самой последней версии (R11). Разберём особенности установщика и подготовки системы. Системные требования Rosa Desktop Вот основные системные требования для Rosa с оболочкой KDE Plasma: Место на жёстком
Запись Установка Rosa Linux впервые появилась Losst.
Есть лицензионный CD с фильмом. На коробке обозначен Mpeg4-DivX, но не виден *.dat файл.
Вывод df -h /media/cdrom0 даёт:
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
/dev/sr0 9,8M 9,8M 0 100% /media/cdrom0
В то же время, *.dat где-то прячется:
udisksctl info -b /dev/sr0 | grep -i size
Size: 561829888
Size: 0
Как можно найти, воспроизвести этот потерянный *.dat ? Инструменты из пакета vcdimager диск VCD не узнают
Те, почти 10Мб занятые в iso9660 - это программная оболочка и декодер divx для оффтопика
Пускай вместо зондов, веб-майнеров и мегатонн кривой скриптоты случайным жертвам их деятельности отдаётся 404. Не чокаясь!
Имеется кусок код вида:
<div class="container-fluid p-4">
<h3 class="mb-4"><b-breadcrumb :items="pagePath"/></h3>
<div class="row">
<device-types-component class="h-auto mb-4 mr-4"/>
<android-client-update-channels-component class="h-auto mb-4 w-auto"/>
</div>
</div>
Выглядит это вот так.
Вопрос первый: как сделать так, чтобы один из блоков занимал всю оставшуюся ширину?
Вопрос второй: как сделать так, чтобы оба блока занимали всю оставшуюся ширину?
Вопрос третий: как сделать так, чтобы блоки занимали всю оставшуюся доступную высоту?
Извиняюсь заранее за нубские вопросы. Я в вебе не силен.
Вопрос таков: если использовать инструмент под LGPLv3, то можно ли считать произведенные им результаты «work based on»?
https://choosealicense.com/licenses/lgpl-3.0/
https://www.gnu.org/licenses/gpl-3.0.en.html
A “covered work” means either the unmodified Program or a work based on the Program.
To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.
Например, подпадает ли код (текст) написанный в Qt Creator (Community) под определение «covered work»? Причем, код не использует Qt.
31 марта 2019 года, спустя 5 лет после предыдущего релиза, вышла новая версия компилятора языка Dylan — Open Dylan 2019.1.
Dylan — это динамический язык программирования, реализующий идеи Common Lisp и CLOS в более привычном синтаксисе без скобочек.
Основное в этой версии:
- стабилизация LLVM-бэкэнда для архитектур i386 и x86_64 на Linux, FreeBSD и macOS;
- к компилятору добавлена опция -jobs для ускорения сборки за счет использования нескольких процессов;
- исправление ошибок, выявленных со времени выхода предыдущей версии.
Каталоги с ценными файлами у меня хранятся в томе VeraCrypt, этот том я зеркалю на Яндекс Диск. Но VeraCrypt раздражает своей gtk3-мордой и рядом недочётов. Хотелось бы использовать Plasma Vault. Но оно использует CryFS, где хранилище выглядит как гора файлов на 16 Кб. Яндекс Диск такое синхронизировать отказывается - клиент повисает и ничего не делает.
Как мне получше завернуть кучу мелочи от CryFS в один большой файл?
Друзья, заметил, что в тегах «Россия» превращается в «россия». Возможно стоит это исправить.
Здравствуйте. Стоит следующая задача:
На роутере на линукс нужно iptables FORWARD трафик отпралять в user-space, там в своей программе его изменять и отпралять в ядро для дальнейшей отсылки.
То есть мне надо научится делать что-то типа прозрачного прокси, изменяющего на определенных портах некоторые данные.
Как подойти к такой задаче? Есть для этого API в user space? Если нет, то какое API в ядре надо использовать что бы написать свой драйвер, отпраляющий трафик в user-space и возвращающий данные из него?
Главный центр инженерно-технического обеспечения и связи Федеральной службы исполнения наказаний (ГЦИТОиС ФСИН) намерен приобрести 7782 персональных компьютера, выделив на эти цели 302,1 млн руб.
В ТЗ заказчик указал, что устанавливаемая операционная система должна:
- быть включенной в Реестр отечественного ПО при Минкомсвязи
- иметь в составе ядро Linux версии не ниже 4.15
- иметь актуальный набор драйверов для совместимости с имеющимся у заказчика периферийным оборудованием
Прием заявок начался 28 марта и продлится до 15 апреля текущего года. Торги намечены на 19 апреля.
Перемещено Shaman007 из russia
Приветствую.
Есть файл 'name.txt' с кириллицей:
file -i name.txt
name.txt: text/plain; charset=iso-8859-1
Выполняю:
iconv -f iso-8859-1 -t utf-8 -o name2.txt name.txt
-- получаю в файле «name2.txt' кодировку 'charset=utf-8' и ... нечитаемый русский текст.
Если выполняю:
iconv -f windows-1251 -t utf-8 -o name2.txt name.txt
-- получаю в файле 'name2.txt' кодировку 'charset=utf-8' и всё хорошо.
Получается, команда 'file -i' неверно определяет кодировку файла?
Или в чем дело?
После блокировки экрана, все как должно быть показывает GDM и экран темнеет (Или же уходит в сон, в обоих случаях эта ошибка). Если я хочу разблоикровать экран, я например нажимаю любую клавишу, ноутбук как-бы просыпается, но вижу черный экран и курсор. ctrl+alt+f2(3,4) работает. Если сменить сессию (ctrl+alt+f1) то вижу GDM и могу зайти обратно.
На данный момент я пользователь предустановленной windows 10. С некоторого времени, браузер Firefox перестал открывать некоторые страницы. Иногда это google.com, youtube.com, facebook.com и много других. Во всех случаях Firefox обьясняет это неправильной конфигурацией на сайтах либо, какой-то особенной настройкой установленного антивируса. По результатам собранной информации как вариант буду рассматривать переход на самый простой вариант ос линукс. В других программах сайты не блокируются.
На ноуте установлен Debian 9 и virt-manager.
Интересует следующий вопрос: возможно ли работать с виртуалкой в отдельной X-сессии ?
Собственно для чего нужно: на хост системе у меня только виртуалки, для работы и учебы отдельные системы, не совсем удобно между ними переключаться, особенно при работе в полноэкранном режиме. Хочу сделать так чтобы на хосте залочил экран, нажал ctrl+alt+f4 и попал в гостевую систему.
Тут http://dmzik.blogspot.com/2013/05/virtualbox-tty.html автор проделал то что мне нужно с virtualbox-ом , как такое реализовать в qemu/virt-manager ?
Дано:
- Оригинал изображения хранится в базе (Alfresco CE)
- Ползователю показывают через сайт (Alfresco CE) preview c watermark
Задача:
Обеспечить печать оригинала на утвержденные принтеры (1, 2,3 ) без скачивания его на ПК пользователя
- В наличии 3 шт. МФУ
- Нужно к preview добавить кнопку печать1, печать2, печать3
Цель: Защита электронной копии изображения оригинального качества.