Новости Joomla

Joomla 6: Автоматические обновления ядра в Joomla

Joomla 6: Автоматические обновления ядра в Joomla

👩‍💻 Joomla 6: Автоматические обновления ядра в Joomla. В октябрьском номере официального журнала Joomla - Joomla Community Magazine вышла статья David Jardin, где рассказывается о внедрении функционала автоматического обновления ядра Joomla.❓Почему сейчас? Joomla же жила как-то 20 лет без автоматических обновлений?Это оказалась самая востребованная за последнее время от пользователей Joomla функция. Но, основная причина внедрения - проблемы безопасности. Всякий раз, когда в новой версии Joomla устраняется уязвимость, злоумышленники начинают анализировать код, чтобы выяснить, какая именно уязвимость была исправлена. И как только они это выясняют - начинается разработка автоматизированных скриптов для взлома как можно большего количества сайтов. Затем доступы к автоматически взломанным сайтам продаются в профильных чатах и ресурсах "пачками" по несколько сотен тысяч или миллионов сайтов. Ваш сайт могли взломать несколько лет назад, но воспользоваться уязвимостью могут не сразу, а тогда, когда у злоумышленников возникнет необходимость. И только после этого вы может быть узнаете об этом.Анализ патча, понимание проблемы и разработка скрипта требуют времени. И если владелец сайта не обновит его до истечения этого срока, сайт может быть взломан. А хакеры действуют быстро! Для критических, легко эксплуатируемых уязвимостей речь идёт о временном окне в 10–12 часов — и этого времени явно недостаточно, чтобы все успели обновить свои сайты.Здесь выходят на первый план автоматизированные обновления: проект Joomla теперь может активно устанавливать обновления (и, следовательно, исправления безопасности) на сайты, чтобы гарантировать, что сайты действительно обновляются вовремя.🕘 От первых идей до реализации прошло 5 лет. И здесь можно вспомнить, как в Joomla 5.1 внедрили TUF - The Update Framework, позволяющий устанавливать защищённое соединение между сайтом и сервером обновлений и исключает возможность supply chain attack (атаки на цепочку поставок).Об особенностях реализации и требованиях к сайту читаем подробнее в статье на JCM.@joomlafeed#joomla #secutiry #jcm

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™. Интервью с волонтёрами 🎈Ну что, друзья, вот и настал этот долгожданный момент. Мы выпустили первое издание собственного журнала под эгидой NorrNext, который включает в себя интервью с видными деятелями сообщества из разных стран и континентов.Общий нарратив: показать, что нас объединяет (Joomla) и узнать больше о людях, которые вносят свой вклад в развитие платформы в своих сообществах. 20 лет — это много. Давайте же узнаем о коллегах 🎁 Первый цикл включает такие страны, как Австрия, Испания, Латвия, Россия, Румыния, Тайланд, Черногория, Чехия.⚙️ С кем интервью: ✔️ Владимир Елисеев 🇷🇺✔️ Дмитрий Рекун 🇱🇻✔️ Дмитрий Цымбал 🇷🇺✔️ Евгений Сивоконь 🇷🇺 ✔️ Сергей Толкачёв 🇷🇺✔️ Dénes Székely 🇷🇴✔️ Jan Pavelka 🇨🇿✔️ Miljan Vujosevic 🇲🇪✔️ Sergio Iglesias 🇪🇸✔️ Sigrid Gramlinger 🇦🇹✔️ Pisan Chueatchatchai 🇹🇭‼️ Новые интервью будут добавляться до конца декабря 2025. Заходите по ссылке время от времени💡👉 Читать далее

0 Пользователей и 1 Гость просматривают эту тему.
  • 5 Ответов
  • 2174 Просмотров
*

master-smeta

  • Захожу иногда
  • 298
  • 10 / 0
Обработка данных из базы
« : 13.05.2015, 10:12:52 »
Здравствуйте. У меня возникла проблема с динамическими выпадающими списками. В моей форме используются выпадающие списки, в которые загружаются данные из базы, как описано в инструкции: https://www.rsjoomla.com/support/documentation/view-article/94-auto-populate-a-list-from-a-table.html
Код
//<code>
// Prepare the empty array
$items = array();
// Prepare the database connection
$db = JFactory::getDbo();
// Keep this if you'd like a "Please select" option, otherwise comment or remove it
$items[] = "|Please Select[c]";
 
// Run the SQL query and store it in $results
$db->setQuery("SELECT your_value, your_label FROM #__your_table");
$results = $db->loadObjectList();
 
// Now, we need to convert the results into a readable RSForm! Pro format.
// The Items field will accept values in this format:
// value-to-be-stored|value-to-be-shown
// Eg. m|M-sized T-shirt
foreach ($results as $result) {
  $value = $result->your_value;
  $label = $result->your_label;
  $items[] = $value.'|'.$label;
}
 
// Multiple values are separated by new lines, so we need to do this now
$items = implode("\n", $items);
 
// Now we need to return the value to the field
return $items;
//</code>
Проблема в том, что выпадающих списков в форме несколько десятков, и при загрузке страницы они создают огромную нагрузку на сервер.
Решить проблему просто - нужно загрузить данные из базы один раз при загрузке формы, а затем передать их в выпадающие списки, чтобы сделать выборку полученных данных из массива. Но у меня не получается это сделать. Я могу добавить скрытое поле в которое будут загружены данные из базы данных, но как эти данные передать в выпадающий список?

P.S. Задача состоит в следующем: 1) Есть таблица БД с расписанием занятий.
2) Есть форма записи на курсы. Пользователю доступен выпадающий список с названием курсов. Он выбирает курс и появляется дополнительный список, в котором можно выбрать конкретную дату обучения на выбранном курсе.
3) Т.к. заранее не известно, какой курс выберет пользователь, то все расписания загружаются заранее и просто скрыты.
« Последнее редактирование: 13.05.2015, 11:59:32 от master-smeta »
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Re: Обработка данных из базы
« Ответ #1 : 13.05.2015, 11:36:53 »
Мне кажется не особо вам поможет то, что вы хотите сделать. На нагрузку большей частью влияют не запросы, они выполняются долю секунды. Нагрузку у вас создают циклы, формирующие массивы для списков, а потом такие же циклы, формирующие сами списки, особенно если их несколько десятков.

По сабжу:
Код
$db->setQuery("SELECT your_value, your_label FROM #__your_table");
$results = $db->loadObjectList();
Здесь у вас делается запрос в базу и создается объект, содержащий результат этого запроса. Можете продублировать для всех ваших запросов и создать несколько объектов.
Код
foreach ($results as $result) {
  $value = $result->your_value;
  $label = $result->your_label;
  $items[] = $value.'|'.$label;
}
Чтение из объекта в массив. Так же можно продублировать для каждого вашего запроса. Как раз такой цикл и будет жрать ресурсы сервака. И чем их больше, тем хуже.

Как передать странице данные? Вопрос не понял, так как форма формируется на стороне сервера, набивается данными и отдается клиенту.
 
Пример:
Код
$db->setQuery("SELECT your_value, your_label FROM #__your_table");
$results_1 = $db->loadObjectList();
$db->setQuery("SELECT your_value, your_label FROM #__your_table2");
$results_2 = $db->loadObjectList();

foreach ($results_1 as $result) {
  $value = $result_1->your_value;
  $label = $result_1->your_label;
  $items[1][] = $value.'|'.$label;
}
foreach ($results_2 as $result) {
  $value = $result_2->your_value;
  $label = $result_2->your_label;
  $items[2][] = $value.'|'.$label;
}

Ну и далее создаете формы уже с использованием этого массива.

P.S. Не уверен, что такая конструкция вам поможет - циклы остаютя. Подумайте, можно ли как то оптимизировать выборку? Объем данных в базе одинаков, можно выборку засунуть в один цикл?
P.P.S. Писал на коленке, мог и ошибится )
« Последнее редактирование: 13.05.2015, 11:54:46 от sebun »
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

master-smeta

  • Захожу иногда
  • 298
  • 10 / 0
Re: Обработка данных из базы
« Ответ #2 : 13.05.2015, 11:54:44 »
Код
$db->setQuery("SELECT your_value, your_label FROM #__your_table");
$results = $db->loadObjectList();
Здесь у вас делается запрос в базу и создается объект, содержащий результат этого запроса.
Да, это я знаю. Сейчас у меня такой код в каждом выпадающем списке (а их несколько десятков). Вот я и попытался получить все необходимые данные один раз, а уже потом передавать объект в списки и там его форычить этим:
Код
foreach ($results as $result) {
  $value = $result->your_value;
  $label = $result->your_label;
  $items[] = $value.'|'.$label;
}

Цитировать
Чтение из объекта в переменную. Так же можно продублировать для каждого вашего запроса. Как раз такой цикл и будет жрать ресурсы сервака. И чем их больше, тем хуже.
Т.е. нагрузку на сервер дает не выборка из базы (несколько десятков раз сразу), а непосредственно "форычинги" этого объекта?
Цитировать
Как передать странице данные? Хм, а вы уверены, что у пользователя такая страница загрузится и что данных не будет слишком много?
Ну, в данный момент страница загружается, но данных очень много. (дополнил первый топик, чтобы была понятнее задача).
Цитировать
В принципе я вижу решение этого вопроса в том, что вы создаете на сервере многомерный массив, в который загружаете все данные для ваших форм и отдаете его клиенту. А на стороне клиента создаются формы, которые получают данные из этого массива.
Так ведь и я это примерно так представляю. И массив создаю... Но вот передать этот массив никуда не получается
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Re: Обработка данных из базы
« Ответ #3 : 13.05.2015, 14:27:56 »
А вы поэкспериментируйте - поставьте временные метки в коде и посмотрите, что и сколько времени выполняется. Соберите в кучу все запросы к базе и все ваши циклы и засеките. И получите наглядную картину работы вашего кода.

По сабжу - можете сделать подгрузку на JQuery. Тут я лопух, так как сам в такой фиче нуждаюсь а язык так и не выучил. Пусть клиент получает страницу с формой, где подгружены только первые несколько строк в ваши селекты. Остальные подгружаются по мере листания списка.
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

master-smeta

  • Захожу иногда
  • 298
  • 10 / 0
Re: Обработка данных из базы
« Ответ #4 : 13.05.2015, 14:39:12 »
А вы поэкспериментируйте - поставьте временные метки в коде и посмотрите, что и сколько времени выполняется. Соберите в кучу все запросы к базе и все ваши циклы и засеките. И получите наглядную картину работы вашего кода.

По сабжу - можете сделать подгрузку на JQuery. Тут я лопух, так как сам в такой фиче нуждаюсь а язык так и не выучил. Пусть клиент получает страницу с формой, где подгружены только первые несколько строк в ваши селекты. Остальные подгружаются по мере листания списка.
Дык и я лопух :) Даже не знаю как временные метки ставить и замерять время выполнения скриптов :)
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Обработка данных из базы
« Ответ #5 : 13.05.2015, 15:40:31 »
Вне зависимости от того, показываете вы данные или нет, их все равно нужно загрузить, поэтому:
1. В случае, когда их много, лучше разбить форму на несколько:
1-я форма: вырать курс > обработчик > на основании ID курса загружается 2-я форма: выбрать дату и т.д.
Каждая страница (форма) требует сравнительно немного времени и, как следствие, пользователь не раздражается. А если вы еще и AJAX прикрутите, то будет эффект плавного хода.
2. Если данных не очень много, можно впихнуть данные в объект JavaScript'а (сразу на сервере или на основе скрытых полей) с ключами, равными значениям ID курсов и выводить в зависимости от выбранного ID и т.д.
Готового решения я вам, даже если захочу, дать не могу. Максимум - это простенький пример, но и на него сейчас нет времени.
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод формы горизонтально ?

Автор warlocksp

Ответов: 5
Просмотров: 2185
Последний ответ 08.12.2016, 15:35:26
от DeniTornado
Автозаполнение полей формы

Автор 68pin

Ответов: 1
Просмотров: 1418
Последний ответ 15.06.2016, 17:06:35
от 68pin
Подставить значение одного поля в другое

Автор Agard

Ответов: 1
Просмотров: 1826
Последний ответ 09.01.2016, 12:53:48
от Agard
PDF разметка документа

Автор Agard

Ответов: 1
Просмотров: 1546
Последний ответ 31.12.2015, 17:58:57
от Agard
Формирование номера заявки/заказа в RSForm

Автор css_ufa

Ответов: 17
Просмотров: 10265
Последний ответ 28.12.2015, 23:29:53
от Agard