oscdimg -m -o -u1 -udfver102 -bootdata:2#p0,e,b"boot\etfsboot.com"#pEF,e,b"efi\microsoft\boot\efisys.bin" D:\usb D:\output.isofunction getPositionAfterRuleId(rule_id, applieList) {
let idx = applieList.findIndex(item => String(item.id) === String(rule_id));
return idx > 0 ? applieList[idx - 1].id : "";
} UPDATE users SET balance = balance + 100 WHERE id = 1, без промежуточного SELECT. А если между чтением и записью нужна логика, используй SELECT ... FOR UPDATE — он заблокирует строку и вторая транзакция при разблокировке перечитает актуальное. cidr-merger — он объединит смежные подсети, ужмёт до 3-4к.vkidOnSuccess пустая — SDK получает токен и вызывает коллбек, а он ничего не делает. Добавь в vkidOnError хотя бы console.log(error) чтоб видеть что валится.function vkidOnSuccess(data) {
fetch('/login.php', {method:'POST', body:JSON.stringify(data)}).then(() => location.href='/');
}json_decode(file_get_contents('php://input')), достаёшь access_token, создаёшь сессию.