for (let i = 0; i < flover.length; i++) {
for (let j = 0; j < komment.length; j++) {
if (flover[i].id == komment[j].id) {
if (flover[i].komments == undefined) {
flover[i].komments = [];
}
flover[i].komments.push(komment[j]);
}
}
}
function shiftBackground(changes) {
let img = '/img/back/back.avif';
let scrollPosition = window.scrollY;
changes.forEach(([boxs, pathImg, _box]) => {
let shift = 0;
const _box_style = window.getComputedStyle(document.getElementById(_box), null);
const _box_margins = parseFloat(_box_style.marginTop) + parseFloat(_box_style.marginBottom);
const _box_height = document.getElementById(_box).offsetHeight + _box_margins;
boxs.forEach(box => {
const style = window.getComputedStyle(document.getElementById(box), null);
const margins = parseFloat(style.marginTop) + parseFloat(style.marginBottom);
const height = document.getElementById(box).offsetHeight;
shift += height + margins;
});
if (scrollPosition >= shift && scrollPosition < shift + _box_height) {
img = pathImg;
}
})
const back = document.getElementById('back');
back.style.backgroundImage = `url(${img})`;
}
window.addEventListener('scroll', () => {
shiftBackground(
[
[['header', 'main'], '/img/back/back_2.jpg', 'about'],
[['header', 'main', 'scills_box', 'about'], '/img/back/back.jpg', 'contacts'],
]
);
});
на питоне будет скрипт, который будет в начале месяца высчитывать какого именно числа нужно отправить уведомление, и брокер будет отправляться сообщение, которое будет в очереди до определенного числа и времени, и потом брокер отправит сообщение в скрипт о, и уже скрипт будет отправлять уведомление куда нужноRabbitMQ не предназначен для решения таких задач, там можно это сделать через плагин, но это кривой костыль и забивание гвоздей микроскопом.
а тема просто поставить крон не получится, там плавающее число получаетсяКрон как раз идеально подходит для этой задачи. Просто запускать чекер нужно раз в минуту - он будет брать из БД сообщения, время которых наступило, и рассылать их. А если не нужна рассылка несколько раз в течение дня, то вообще один раз в день крон запускать.
class Tmp
{
public string $name
{
set (string $name) {
$this->name = strtoupper($name);
}
}
}
var_dump($pdo->query("SELECT 'lowercase' as name")->fetchObject(Tmp::class));
object(Tmp)#550 (1) { ["name"]=> string(9) "LOWERCASE" }
на случай, если они поменяют формат сообщенияА зачем вам вообще это сообщение? Завязываться на такие детали плохая ведь идея.
1) как сделать проще двустороннее связывание? (не в 5 строк, а в одну-2 хотябы - аналог v-model во вью)В "голом" Реакте - никак.
2) useEffect срабатывает когда месяц поменялся на такое же значение(значение такое же, ссылка другая), как сделать чтобы он не отрабатывал в этом случае? (аналог watch во вью)Передавать в deps финальные скалярные значения:
- }, [filters]);
+ }, [filters.month.month, filters.month.year]);
$_GET и уж конечно никаких $cats=$site->qa("select * from categories where catid=0 order by name asc"); Тогда они будут простыми и ошибку будет сложнее совершить и гораздо легче найти. А если она случится в контроллере, то там уже трейс будет нормальный.
Note that like fetch() itself, json() is asynchronous, as are all the other methods to access the response body content.