Posts

crypto

function Service_PreInvokeMethod (MethodName, Inputs, Outputs) { if (MethodName == "EncryptString") { var plainText = Inputs.GetProperty("InputText"); var key = Inputs.GetProperty("Key"); var encrypted = XorCipher(plainText, key); var b64 = Base64Encode(encrypted); Outputs.SetProperty("Result", b64); return (CancelOperation); } else if (MethodName == "DecryptString") { var cipherB64 = Inputs.GetProperty("InputText"); var key = Inputs.GetProperty("Key"); var cipherText = Base64Decode(cipherB64); var decrypted = XorCipher(cipherText, key); Outputs.SetProperty("Result", decrypted); return (CancelOperation); } return (ContinueOperation); } /** * XOR-шифрование строки с ключом (обратимо) */ function XorCipher(text, key) { var outStr = ""; var keyLen = key.length; ...

xslt

запроса в Oracle в CSV

Для преобразования результата запроса в Oracle в CSV, можно воспользоваться различными способами, в зависимости от того, какой инструмент или метод вы используете для работы с базой данных. Приведу несколько вариантов: 1. Использование SQL*Plus Если вы используете SQL*Plus — командную утилиту Oracle — для выполнения запросов, то можно направить результат в CSV файл следующим образом: Откройте SQL*Plus и подключитесь к базе данных. Выполните запрос с настройкой вывода в формате CSV: sql SET COLSEP ',' -- Установка разделителя колонок на запятую SET PAGESIZE 0 -- Отключение разбивки на страницы SET LINESIZE 32767 -- Установка максимальной ширины строки SET TRIMSPOOL ON -- Обрезка пробелов в конце строк SET TRIMOUT ON -- Обрезка пробелов в выводе SET FEEDBACK OFF -- Отключение отображения количества строк SET HEADING OFF -- Отключение заголовков SPOOL output.csv SELECT column1, column2, column3 FROM your_table; SPOOL OFF; Эти команды: SET COLSEP ',' — задают разделите...

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;