Я собираюсь исследовать на практике то, что в общих чертах представляю себе в теории. А именно: на простых примерах разобраться, как работают права доступа к файлам и каталогам в Linux. Все приводимые далее примеры я буду выполнять в консоли Ubuntu 14.04.
суббота, 30 августа 2014 г.
четверг, 31 июля 2014 г.
Java в СУБД Oracle, часть III
В этой статье я рассмотрю, как Java код, выполняющийся внутри СУБД Oracle, работает с данными в БД. Попутно продемонстрирую работу резолвера (resolver) встроенной Oracle JVM и экспериментально установлю, с какими правами выполняется Java код внутри СУБД - правами владельца кода (definer) или вызывающего пользователя (invoker). В заключение, я продемонстрирую использование SQLJ для включения команд SQL в исходный код JAVA.
четверг, 24 июля 2014 г.
Oracle SQL*Plus, полезные возможности
Здесь собраны примеры, демонстрирующие некоторые из полезных возможностей Oracle SQL*Plus. Все приведенные скрипты выполнены в SQL*Plus Release 11.2.0.1.0 в консоли Windows.
Подборка носит отчасти ностальгический характер, поскольку в последние годы всю повседневную оперативную работу с СУБД Oracle я делаю в PL/SQL Developer. Однако, SQL*Plus остается незаменимым для работы в консоли Unix/Linux и из shell-скриптов. Пример в конце статьи - только для Unix/Linux.
четверг, 10 июля 2014 г.
Строки символов Unicode в Python 2 и Python 3
Винсент: Знаешь, что самое забавное в Европе?
Джулс: Что?
Винсент: Такие маленькие отличия. Там вроде все то же самое, что и здесь, но чуть-чуть отличается.
"Криминальное чтиво"
Как известно, ключевым отличием Python 3.x от Python 2.x является переориентация языка и стандартных библиотек со строк байтов на строки символов Unicode. Когда я решил повнимательнее посмотреть на это различие, пришлось копнуть вглубь и вширь, а результаты моих раскопок я оформил в статью, которую предлагаю вашему вниманию.
| В Python 2 | В Python 3 |
|---|---|
строковый литерал получает тип str |
строковый литерал получает тип str |
тип str представляет собой строку байтов |
тип str представляет собой строку символов Unicode |
для представления строки символов Unicode используется тип unicode |
для представления строки байтов используется тип bytes |
для представления строки unicode в нужной кодировке используется метод unicode.encode(кодировка), возвращающий строку байтов str |
для представления строки str в нужной кодировке используется метод str.encode(кодировка), возвращающий строку байтов bytes |
для преобразования строки байтов str в строку unicode используется метод str.decode(кодировка), возвращающий строку unicode |
для преобразования строки байтов bytes в строку str используется метод bytes.decode(кодировка), возвращающий строку str |
| системная кодировка по умолчанию, она же кодировка исходных файлов по умолчанию, ASCII | системная кодировка по умолчанию, она же кодировка исходных файлов по умолчанию, UTF-8 |
| при записи в файл строки по умолчанию преобразуются в системную кодировку по умолчанию | при записи в файл строки по умолчанию преобразуются в кодировку, определяемую пользовательскими настройками |
| идентификаторы в программе содержат только символы ASCII, не могут использовать никаких других букв, кроме латинских | идентификаторы в программе содержат символы Unicode, могут использовать буквы других алфавитов, кроме латинского |
Мои эксперименты я ставлю под ОС Windows 7 в стандартной консоли.
пятница, 20 июня 2014 г.
Java в СУБД Oracle, часть II
В первой части статьи я перечислил основные различия традиционной виртуальной машины Java и JVM, встроенной в СУБД Oracle. А также создал в базе данных несколько Java классов и PL/SQL обертки для вызова их методов, и продемонстрировал передачу и возврат значений из PL/SQL в Java код и обратно. Во второй части будет показан альтернативный способ создания объектов JAVA CLASS, рассмотрено поведение статических переменных класса в течение сеанса Oracle, и реализован Java класс и соответствующая PL/SQL обертка для чтения/записи внешних файлов.