Posts

Showing posts from September, 2024

xlam

window.parent.postMessage('Hello from iframe', '*'); https://forms.gle/gsU62hinEJeyffV78 CREATE TABLE prs_test_log ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, username VARCHAR2(100), os_user VARCHAR2(100), host VARCHAR2(100), ip_address VARCHAR2(50), module_name VARCHAR2(100), action_name VARCHAR2(100), log_date DATE DEFAULT SYSDATE ); CREATE OR REPLACE PACKAGE prs_test AS PROCEDURE log_call_proc; END prs_test; / CREATE OR REPLACE PACKAGE BODY prs_test AS PROCEDURE log_call_proc IS v_username VARCHAR2(100); v_os_user VARCHAR2(100); v_host VARCHAR2(100); v_ip_address VARCHAR2(50); v_module VARCHAR2(100); v_action VARCHAR2(100); BEGIN -- получаем данные о сессии SELECT SYS_CONTEXT('USERENV','SESSION_USER'), SYS_CONTEXT('USERENV','OS_USER'), SYS_CONTEXT('U...

js event.origin

// Слушаем сообщения window.addEventListener("message", function(event) { // Создаем элемент URL для удобного разбора origin const url = new URL(event.origin); // Получаем домен (например, sub.trusted-domain.com) const domain = url.hostname; // Проверяем, что домен содержит нужную строку if (!domain.includes("trusted")) { console.warn("Сообщение пришло с недоверенного источника!"); return; } // Безопасно работать с полученными данными console.log("Получено безопасное сообщение от домена, содержащего 'trusted':", event.data); }); window.addEventListener("message", function(event) { // Проверяем, что event.origin определен и является строкой if (typeof event.origin === 'string') { // Теперь можно безопасно работать с event.origin console.log("origin определен:", event.origin); } else { console.warn("event.or...

js call api example

// URL API сервиса const apiUrl = 'https://api.example.com/data'; // Функция для установки таймаута const fetchWithTimeout = (url, options = {}, timeout = 5000) => { return Promise.race([ fetch(url, options), new Promise((_, reject) => setTimeout(() => reject(new Error('Таймаут запроса истек')), timeout) ) ]); }; // Вызов API с таймаутом fetchWithTimeout(apiUrl, {}, 5000) // Таймаут 5000 мс = 5 секунд .then(response => { if (!response.ok) { throw new Error(`Ошибка HTTP: ${response.status}`); } return response.json(); }) .then(data => { // Работаем с полученными данными console.log('Ответ от сервиса:', data); }) .catch(error => { // Обработка ошибок, включая таймаут console.error('Ошибка:', error); });

oracle копирование таблицы построчно

DECLARE v_error_msg VARCHAR2(4000); BEGIN FOR rec IN (SELECT перечислить колонки FROM view_name) LOOP BEGIN -- Вставка строки в таблицу INSERT INTO table_name VALUES rec; -- Опционально: можно делать коммит после каждой вставки -- COMMIT; EXCEPTION -- Обработка ошибок WHEN OTHERS THEN -- Получаем сообщение об ошибке v_error_msg := SQLERRM; -- Выводим информацию о проблемной строке и ошибке DBMS_OUTPUT.PUT_LINE('Ошибка при обработке строки: ' || v_error_msg); DBMS_OUTPUT.PUT_LINE('Проблемная строка: ' || rec.column1 || ', ' || rec.column2); -- Можно добавить вывод других колонок END; END LOOP; -- Заключительный коммит COMMIT; END;