Генерируем MD5 HASH на Oracle PL/SQL

Простой пример генерации MD5 на Oracle PL/SQL.

declare
  cln_md5raw raw(2000);
  out_raw raw(16);
begin
  cln_md5raw := utl_raw.cast_to_raw('Наш текст для хеширования');
  dbms_obfuscation_toolkit.md5(input=>cln_md5raw,checksum=>out_raw);
  -- Выводится hex версия (32 символа)
  dbms_output.put_line(lower(out_raw));
end;


100% работает на версии Oracle 11g.

Руководство по Python Bottle (Перевод) Часть 2 - Hello World

В предыдущей части мы рассмотрели установку Bottle:
Руководство по Python Bottle (Перевод) Часть 1 — Установка

В этой части мы пойдем дальше и рассмотрим простой пример приложения сайта «Hello World».

2. Простой пример («Hello World!»)
Здесь предполагается что у вас уже установлен Bottle, либо библиотека скопирована в папку проекта.

Начнем с очень простого примера «Hello World!»:

Создание Hello World на Bottle...

Руководство по Python Bottle (Перевод) Часть 1 - Установка

Это руководство познакомит вас с концепциями и возможностями фреймворка Bottle. Данное руководство можно читать от начала и до конца, как учебный материал для ознакомления. Также можно использовать руководство как справочник для ознакомления с интересующими особенностями фреймворка Bottle.
Данное руководство является адаптированным переводом информации с ресурса BOTTLEPY.ORG от 20.04.2017г.

В руководстве местами содержатся некоторые мои комментарии и дополнения. Поэтому, это не дословный перевод, но надеюсь достаточно качественный.

Итак, приступим.
Читать дальше →

Описание функции ADDDATE в MySQL (с типами временных интервалов)

Функция ADDDATE возвращает переданное в нее время определяемое первым параметром, с добавленным временным интервалом, который определяется вторым параметром.

Синтаксис:
ADDDATE(date, INTERVAL expr type)

У функции ADDDATE() существует синоним DATE_ADD().

Второй параметр в функции начинается ключевым словом INTERVAL, после которого следует значение и тип
этого значения.

Функция, также, допускает использование и отрицательных значений, при этом период не прибавляется а отнимается.

! Есть упрощённый формат записи функции ADDDATE(date,days) — где days — дни.

Пример использования функции:
mysql> select adddate('2017-03-29', interval 15 day);
+----------------------------------------+
| adddate('2017-03-29', interval 15 day) |
+----------------------------------------+
| 2017-04-13                             |
+----------------------------------------+


Читать дальше →

Пример простого калькулятора на Java Script (исключительно в учебных целях).

В этой публикации продемонстрировано, как при помощи bootstrap и довольно простого кода на JavaScript сделать Web-страницу способную решать квадратные уравнения.
Здесь же будет приведен более интересный пример кода, который реализует очень простой онлайн калькулятор.

Вот как будет выглядеть наш калькулятор:
Простой пример калькулятора на JavaScript

Итак, приступим…
Читать дальше →

JavaScript - Основы, как это работает и как тестировать (Часть 2).

В предыдущей части мы уже рассмотрели как добавить и отладить JavaScript код на страницу с использованием встроенной консоли в браузере на примере решения квадратного уравнения. Однако, использовать консоль удобно для тестирования написанных функций, но пользователю для работы надо бы что-то поудобнее. А именно: привычные поля ввода и кнопочки.

В этой публикации мы рассмотрим пример добавления в нашу страничку «няшных» кнопочек и полей ввода, с использованием Bootstrap и библиотеки JQuery.

Итак, приступим.
Читать дальше →

JavaScript - Основы, как это работает и как тестировать.

Удивительная штука этот JavaScript!
Раньше не доводилось им заниматься, но вот случилось. Добрый человек объяснил основы: как что-то эдакое написать, протестировать и посмотреть работоспособность, прямо на коленке.

Здесь приведу пример, чтобы самому не забыть, на память (так сказать). И для общественности, вдруг кому нибудь пригодится.

Это невероятно просто! Синтаксис JavaScript похож на Си. Сложности в понимании и чтении кода не представляет. Поэтому сразу перейду к делу, напишем небольшую функцию для вычисления корней квадратного уравнения.

Читать дальше →

Функции необратимого шифрования в MySQL (MD5,PASSWORD,SHA1)

В данной публикации будут рассмотрены некоторые функции необратимого шифрования применяемые в СУБД MySQL.

Функция MD5() — производит необратимое шифрование входящих данных по алгоритму MD5 (Message-Digest Algoritm).

Функция принимает на вход строку и возвращает 128-битную контрольную сумму, вычисляемую по алгоритму MD5. Возвращаемое значение — это 32-разрядное шестнадцатиричное число, уникальное для каждой строки. Если строки отличаются хотя бы одним символом, то результат выполнения функции MD5() для этих строк будет разный, для двух одинаковых строк — результат будет всегда одинаков.

Читать дальше →

Объединение выборок UNION, INTERSECT, MINUS в Oracle (PL/SQL)

В Oracle присутствует возможность объединять выборки. Для объединения используются операторы: UNION (с вариацией UNION ALL), INTERSECT и MINUS. Рассмотрим работу всех этих операторов.

1. UNION и UNION ALL

UNION — объединяет наборы данных, но при этом исключает дублирующие записи, тоесть если у вас в первом и во втором наборе есть одинаковая запись то в результирующем наборе будет только одна такая запись.
UNION ALL — объединяет наборы данных и оставляет дублирующие записи, тоесть если в первом и во втором наборе есть одинаковые записи то в результирующем наборе будут все эти записи.

Для экспериментов, создадим две таблицы и заполним их тестовыми данными.
Читать дальше →

Вставка записей в таблицу с одновременной проверкой и изменением в случае наличия записи в принимающей таблице MERGE в Oracle (MERGE INTO TABLE)

MERGE — Функция предназначенная для объединения результата некоторой выборки в принимающую таблицу, при этом вовсе не обязательно чтобы состав полей совпадал.

Применяется когда необходимо дополнить некоторую таблицу новыми данными, одновременно обновив уже имеющиеся в таблице данные.

Реализация:
merge into таблица_приемник t1
      using (select * from таблица_источник) t2
      on (t1.id = е2.id and t1.parent_id = t2.parent_id)
      when matched then 
	-- Обновляем если совпадение в таблице t1 найдено
        update 
         set t1.info = t2.info
      when not matched then 
	-- Добавляем если совпадение в таблице t1 не найдено
        insert 
         (t1.id, t1.parent_id, t1.info)
         values
         (t2.id, t2.parent_id, t2.info);


Вот и всё.

Вопросы приветствуются.