среда, 30 апреля 2014 г.

Перечень исключений и встроенных функций в Python


Встроенные функции

Как вызывать Описание
abs(x) Возвращает абсолютное значение числа.
all(iterable) Возвращает True, если булево выражение равно True для каждого элемента.
any(iterable) Возвращает True, если булево выражение равно True хотя бы для одного  элемента.
chr(integer) Возвращает одно символьную строку в Unicode по данном целому числу.
divmod(x, y) Возвращает (x // y, x % y) как кортеж, если x и y целые.
hash(obj) Возвращает целое хэш значение для заданного объекта.
id(obj) Возвращает уникальное целое, которое является идентификатором объекта.
input(prompt) Возвращает строку из обычного ввода; приглашение к вводу не обязательно.
isinstance(obj, cls) Определяет является ли obj экземпляром класса cls (или подкласса).
iter(iterable) Возвращает новый итерационный объект для параметра.
len(iterable) Возвращает число элементов в данном итерационном объекте.
map(f, iter1, iter2, ...) Return an iterator yielding the result of function calls f(e1, e2, ...) for respective elements e1 -iter1, e2 -iter2, ...
max(iterable) Возвращает the largest element of the given iteration.
max(a, b, c, ...) Возвращает the largest of the arguments.
min(iterable) Возвращает the smallest element of the given iteration.
min(a, b, c, ...) Возвращает the smallest of the arguments.
next(iterator) Возвращает the next element reported by the iterator (see Section 1.8).
open(filename, mode) Open a file with the given name and access mode.
ord(char) Возвращает the Unicode code point of the given character.
pow(x, y) Возвращает the value x в степени y (as an integer if x and y are integers); equivalent to x**y.
pow(x, y, z) Возвращает the value(x в степени y по mod z) as an integer.
print(obj1, obj2, ...) Print the arguments, with separating spaces and trailing newline.
range(stop) Construct an iteration of values 0,1, ... ,stop−1.
range(start, stop) Construct an iteration of valuesstart,start+1, ...,stop−1.
range(start, stop, step) Construct an iteration of valuesstart,start+step,start+2step, ...
reversed(sequence) Возвращает an iteration of the sequence in reverse.
round(x) Возвращает the nearest int value (a tie is broken toward the even value).
round(x, k) Возвращает the value rounded to the nearest 10 в степени −k (return-type matches x).
sorted(iterable) Возвращает a list containing elements of the iterable in sorted order.
sum(iterable) Возвращает the sum of the elements in the iterable (must be numeric).
type(obj) Возвращает the class to which the instance obj belongs.

 

Классы обычных исключений в Python

Класс Описание
Exception Базовый класс для большинства типов ошибок
AttributeError Возникает при использовании конструкции obj.foo,if в случае, если у obj нет компонента с именем foo
EOFError Возникает если достигается "конец файла" для консольного ввода или ввода из файла
IOError Возникает при аварийной операции ввода-вывода I/O(например, открытия файла)
IndexError Возникает в случае если индекс по последовательности выходит за границы последовательности
KeyError Возникает в случае если используется несуществующий ключ для множества или словаря(set или dictionary)
KeyboardInterrupt Возникает в случае если во время выполнения программы пользователь нажимает ctrl-C
NameError Возникает в случае если используется несуществующий идентификатор
StopIteration Возникает в случае если нет елементов при использовании next(iterator)
TypeError Возникает в случае если при вызове функции используется неверный тип параметра
ValueError Возникает в случае если параметр имеет неверное значение(например,sqrt(−5))
ZeroDivisionError Возникает в случае если возникает деление на ноль

понедельник, 28 апреля 2014 г.

Вызов функций

Основы соответствия аргументов при вызове функций

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

Коллекция Varargs: коллекция неопределенного числа позиционных или ключевых аргументов
Функции могут использовать специальные аргументы перед которыми ставят одну или две звездочки * для того, чтобы передать неопределенное число аргументов. Такая возможность часто обозначается как varargs, по аналогии с языком C; в Python, эти аргументы собираются в нормальный объект.

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

Только ключевые Аргументы: такие аргументы передаются по имени
В Python 3.X (но не в 2.X), в функциях могут быть заданы аргументы, которые передаются не по позиции, а по имени. Такие аргументы обычно используются для определения конфигурации дополнительно к реальным аргументам.

Формы соответствия аргументов
Синтаксис                            Описание

func(value)                     Обычный аргумент вызывающей функции: позиционное соответствие

func(name=value)         Ключевой аргумент вызывающей функции: соответствие по имени

func(*iterable)              Вызывающая функция передает все объекты как итерационный объект с
                                      количеством параметров равным количеству аргументов в описании
                                      функции
                                      пример:
                                      >>> def f1(a, b, c):
                                      ...         print(a,b,c)
                                     >>> f1(*(1,2,3))
                                      1,2,3
 
func(**dict)                   Вызывающая функция передает все пары ключ/значение из словаря как
                                     индивидуальные аргументы
                                      >>> def f2(a, c, d):
                                           ...    print(a,c,d)
                                     >>> s = {'d':'3','a':1,'c':2}
                                     >>> f2(**s)
                                     1 2 3

def func(name)              Нормальные аргументы функций: соответствие выполняется по позиции
                                      или по имени
def func(name=value)   Таким образом задается значение по умолчанию, если значение не
                                      указано при вызове
def func(*name)              Функция сопоставляет и собирает все оставшиеся аргументы в кортэж

def func(**name)          Функция сопоставляет и собирает все оставшиеся ключевые аргументы
                                       в словарь

def func(*other, name)  Аргументы функции, которые должны быть переданы по ключу только в
                                      момент вызова (3.X)
def func(*, name=value)Аргументы функции, которые должны быть переданы по ключу только в
                                      момент вызова (3.X)

Эти способы вызова функций применяются следующим образом:

• При вызове функции, значения сопоставляются аргументам по их позиции, но  использование формы имя=значение говорит Python использовать имя аргументов; это так называемые ключевые аргументы. Использование *iterable или **dict при вызове функции позволяет нам упаковывать произвольное количество позиционных или ключевых объектов в последовательности и словари, соответственно. При передаче в функцию они распаковываются и используются как отдельные параметры.

• При описании функции, a simple nameis matched by position or name depending on how the caller passes it, but the name=value form specifies a default value. The *nameform collects any extra unmatched positional arguments in a tuple, and the **nameform collects extra keyword arguments in a dictionary.
In Python 3.X, any normal or defaulted argument names following a  *nameor a bare *are keyword-only arguments and must be passed by keyword in calls. Of these, keyword arguments and defaults are probably the most commonly used in Python code. We’ve informally used both of these earlier in this book:

• We’ve already used keywords to specify options to the 3.X  print function, but they are more general - keywords allow us to label any argument with its name, to make calls more infomational.

• We met defaults earlier, too, as a way to pass in values from the enclosing function’s scope, but they are also more general—they allow us to make any argument optional, providing its default value in a function definition.

As we’ll see, the combination of defaults in a function header and keywords in a call further allows us to pick and choose which defaults to override.

In short, special argument-matching modes let you be fairly liberal about how many arguments must be passed to a function. If a function specifies defaults, they are used if you pass  too few arguments. If a function uses the *variable argument list forms, you can seemingly pass  too many arguments; the  *names collect the extra arguments in data structures for processing in the function.

The Gritty Details

If you choose to use and combine the special argument-matching modes, Python will ask you to follow these ordering rules among the modes’ optional components:

• При вызове функции, аргументы должны появляться в вызове в следующем порядке: сначала любые позиционные аргументы (их значения); за ними идут комбинации любых ключевых аргументов (типа имя=значение) и затем *итерационные объекты; затем **объекты типа словари.

• В заголовке описания функции, аргументы должны появляться в таком порядке: всякие обычные аргументы (имена); followed by any default arguments (name=value); followed by the *name(or *in 3.X) form; followed by any  nameor  name=valuekeyword-only arguments (in 3.X); followed by the **nameform.

Как при вызове функций, так и при ее описании, форма **args должна появляться последней, если она присутствует. Если вы смешаете аргументы в произвольном порядке, то получите сообщение о синтаксической ошибке. Python выполняет следующие шаги для поиска соответствия между аргументами перед вызовом функции:

1. Назначение неключевых аргументов по расположению.
2. Назначение ключевых аргументов по соответствию имен.
3. Назначение экстра неключевых аргументов к кортежу вида *name.
4. Назначение экстра ключевых аргументов к словарю вида **name.
5. Назначение значений, определенных как по умолчанию в описании функции и оставшихся не определенными.

After this, Python checks to make sure each argument is passed just one value; if not, an error is raised. When all matching is complete, Python assigns argument names to the objects passed to them.
The actual matching algorithm Python uses is a bit more complex (it must also account for keyword-only arguments in 3.X, for instance), so we’ll defer to Python’s standard language manual for a more exact description. It’s not required reading, but tracing Python’s matching algorithm may help you to understand some convoluted cases, es-pecially when modes are mixed.

Python 3.X Keyword-Only Arguments

Python 3.X generalizes the ordering rules in function headers to allow us to specify keyword-only arguments-arguments that must be passed by keyword only and will never be filled in by a positional argument. This is useful if we want a function to both process any number of arguments and accept possibly optional configuration options.

Syntactically, keyword-only arguments are coded as named arguments that may appear after  *argsin the arguments list. All such arguments must be passed using keyword syntax in the call. For example, in the following, amay be passed by name or position, bcollects any extra positional arguments, and  cmust be passed by keyword only. In 3.X:

>>> def kwonly(a, *b, c):
...  print(a, b, c)
>>> kwonly(1, 2, c=3)
1 (2,) 3
>>> kwonly(a=1, c=3)
1 () 3
>>> kwonly(1, 2, 3)
TypeError: kwonly() missing 1 required keyword-only argument: 'c' 

We can also use a *character by itself in the arguments list to indicate that a function does not accept a variable-length argument list but still expects all arguments following the  *to be passed as keywords. In the next function,  amay be passed by position or name again, but band cmust be keywords, and no extra positionals are allowed:

>>> def kwonly(a, *, b, c):
...    print(a, b, c)
>>> kwonly(1, c=3, b=2)
1 2 3
>>> kwonly(c=3, b=2, a=1)
1 2 3
>>> kwonly(1, 2, 3)
TypeError: kwonly() takes 1 positional argument but 3 were given
>>> kwonly(1)
TypeError: kwonly() missing 2 required keyword-only arguments: 'b' and 'c'

You can still use defaults for keyword-only arguments, even though they appear after the  *in the function header. In the following code,  amay be passed by name or position, and band care optional but must be passed by keyword if used:

>>> def kwonly(a, *, b='spam', c='ham'):
...print(a, b, c)
>>> kwonly(1)
1 spam ham
>>> kwonly(1, c=3)
1 spam 3
>>> kwonly(a=1)
1 spam ham
>>> kwonly(c=3, b=2, a=1)
1 2 3
>>> kwonly(1, 2)
TypeError: kwonly() takes 1 positional argument but 2 were given

In fact, keyword-only arguments with defaults are optional, but those without defaults effectively become required keywordsfor the function:

>>> def kwonly(a, *, b, c='spam'):
... print(a, b, c)
>>> kwonly(1, b='eggs')
1 eggs spam
>>> kwonly(1, c='eggs')
TypeError: kwonly() missing 1 required keyword-only argument: 'b'
>>> kwonly(1, 2)
TypeError: kwonly() takes 1 positional argument but 2 were given
>>> def kwonly(a, *, b=1, c, d=2):
print(a, b, c, d)
>>> kwonly(3, c=4)
3 1 4 2
>>> kwonly(3, c=4, b=5)
3 5 4 2
>>> kwonly(3)
TypeError: kwonly() missing 1 required keyword-only argument: 'c'
>>> kwonly(1, 2, 3)
TypeError: kwonly() takes 1 positional argument but 3 were given Ordering rules

четверг, 24 апреля 2014 г.

OpenVMS-Кто держит файл?

OpenVMS-Кто держит файл?

Нужно узнать кто держит файл.
Например:
Входим на Server под ora10g. Встаем на искомый диск: set def DISK$ORA1:
Для поиска файла freedoc_ind.dbf на диске DISK$ORA1: вводим команду:
ORA10G$pipe show device/files DISK$DBO_DATE:| SEARCH SYS$PIPE freedoc_ind.dbf
ORA_DBOC3A38 41763A38 [ORA10G.ORA]freedoc_ind.dbf;1
ORA_DBOC2590 417F2590 [ORA10G.ORA]freedoc_ind.dbf;1
Это уже для информации
VBCS_10G$SHOW SYSTEM/PROCESS=ORA_DBOC3A38
OpenVMS V8.4  on node VBCS   19-NOV-2013 10:23:48.42   Uptime  239 17:07:07
  Pid    Process Name    State  Pri      I/O       CPU       Page flts  Pages
41763A38 ORA_DBOC3A38    LEF      6   219304   0 00:00:30.85      9491   6054

Pid - 41763A38 - по его значению в EM находим процесс Oracle, который держит файл!

вторник, 8 апреля 2014 г.

Sigil-Как включить пользовательские фонты

Включение фонтов в вашу книгу при помощи программы Sigil

Здесь показано как использовать пользовательские фонты в вашем EPUB.
Чтобы использовать фонт в EPUB вам нужно загрузить фонт в EPUB, определить стиль для этого фонта, и затем применить этот стиль к вашему тексту.

Добавление фонтов к вашему EPUB

Что бы добавить фонты к вашей книге, используйте кнопку Add Existing Files document-add_22px. После нажатие кнопки, вы увидите диалог, который позволит вам выбрать один или более файлов с вашего компьютера. Выберите нужные вам файлы с фонтами.
Многие фонты не являются бесплатными. Убедитесь в том, что у вас есть лицензия или доступ к включаемым файлам. Существует множество свободных фонтов.
Файлы с фонтами должны быть или OpenType (.otf) либо TrueType (.ttf) форматами. Все читалки должны поддерживать файлы типа otf но большинство должно поддерживать оба формата.
Фонты будут добавлены в директорию Fonts вашей книги. Тем не менее, их еще нельзя использовать – они только готовы к использованию.

Опрелеление стиля для вашего фонта

Раз уж фонты в вашей книге EPUB, вы должны добавить стиль для их подключения.
Добавьте или откройте таблицу стилей подключенную к вашему файлу HTML .
Добавьте определение фонта например:
@font-face {
    font-family: 'Garamond';
    font-weight: normal;
    font-style: normal;
    src: url('../Fonts/Garamond.ttf');
}

@font-face {
    font-family: 'Garamond';
    font-weight: bold;
    font-style: normal;
    src: url('../Fonts/Garamond Bold.ttf');
}

@font-face {
    font-family: 'Garamond ;
    font-weight: normal;
    font-style: italic;
    src: url('../Fonts/Garamond Italic.ttf');
}
Имя фонта зависит от больших и маленьких букв!
Вы должны определить одно правило @font-face для каждого стиля фонта (normal, bold, italics и т.д.).
 
При использовании имени семейства шрифтов имя шрифта должно быть либо заключено в кавычки, либо не заключено в кавычки каждый раз, когда вы его используете — вы не можете смешивать имена в кавычках и без кавычек. Всегда использование кавычек вокруг имени шрифта делает вещи более последовательными и позволяет избежать проверки правильности имени без кавычек.

Шрифт еще не используется в книге, это следующий шаг.
 

Примените свой шрифт к тексту

 
Чтобы использовать шрифт, вам нужно создать другой стиль, который вы затем назначите разделам вашего текста.
Так, например, чтобы использовать новый шрифт для заголовков, определите стиль тега заголовка следующим образом:
h1 { 
    font-family: 'Garamond', serif;
}
Или для определенного параграфа:
p.longhand { 
    font-family: 'Garamond', serif;
    font-style: italic;
}
Или, если хотите, хотя это и не рекомендуется, вы можете применить шрифт ко всему тексту в книге:
body { 
    font-family: 'Garamond', serif;
    font-weight: bold;
}
Приведенные выше правила семейства шрифтов предписывают программе чтения использовать ваш шрифт, если это возможно, для текста, но если это невозможно, используйте общий шрифт с засечками.

Обфускация шрифта

Когда вы используете шрифт в EPUB, файл шрифта может быть извлечен кем-то и использован где-то еще. Если ваши шрифты лицензированы, вы можете предотвратить это.
Вы можете использовать меню запутывания шрифтов Sigil, чтобы зашифровать файл шрифта, используя один из двух стандартных методов, Adobe или IDPF — какой из них зависит от вас, но вам следует проверить на вашей целевой электронной читалке, чтобы убедиться, что шрифт все еще читаем. Обфускация — это не шифрование — она просто изменяет файл шрифта, что затрудняет его использование в другом месте, но при этом читатели могут использовать его для отображения шрифтов.
Чтобы использовать обфускацию шрифтов, щелкните правой кнопкой мыши шрифты в окне обозревателя книг, щелкните правой кнопкой мыши и выберите в меню «Обфускация шрифтов» и выберите метод, который следует использовать для обфускации.
tutorial-font-obfuscate

Проверка вашего шрифта

Не все устройства будут отображать встроенные шрифты. Даже Sigil может не отображать все ваши встроенные шрифты. Лучше всего проверить на целевом устройстве, чтобы убедиться, что ваши шрифты отображаются так, как вы ожидаете.

понедельник, 7 апреля 2014 г.

Перемещение большой таблицы в другую группу

Moving Large Table to Different File Group

By Raj Gujar, 2013/12/06 (first published: 2008/10/16)
Допустим, что мы имеем какую-нибудь базу данных, растущую в размере очень быстро. Находится она на диске E: размером 200 GB. Диск уже наполнен на 90 процентов и в перспективе база станет больше диска. На этом сервере есть другие и достаточно памяти, поэтому логично будет переместить несколько больших таблиц на другой диск.
Далее описано как это выполнить. Первое, мы определяем самую большую таблицу, используя sp_spaceused для того, что бы узнать место, занимаемое каждой таблицей.

Затем мы принимаем решение создать новую файлгруппу на языке T-SQL (можно использовать и SSMS).
ALTER DATABASE SALES ADD FILEGROUP [SECONDERYDATA]
Затем мы создаем файл на новом диске под созданной файлгруппой:
ALTER DATABASE SALES
ADD FILE
( NAME = XFILENAME,
FILENAME = 'new path\SALES.ndf',
SIZE = 1MB,
MAXSIZE = 10MB,
FILEGROWTH = 1MB)
TO FILEGROUP [SECONDERYDATA]
GO
Теперь, база данных знает, что существует и другая файл группа, которая может быть использована для хранения данных. Remember the Server \ Database will not start to create new files in the new file group, you will have to explicitly specify it.
Now let's see how you can move an existing table that has a Cluster Index to a different filegroup. First, let's drop the Primary Key constraint with an Move to Option ( We are assuming that there is a cluster index on the PK).
ALTER TABLE [INVOICE]
DROP CONSTRAINT [INVOICE_PK] WITH (MOVE TO SECONDERYDATA)
After the move, we now recreate the PK Constraint:
ALTER TABLE [INVOICE]
ADD CONSTRAINT [INVOICE_PK] PRIMARY KEY CLUSTERED 
( [column name] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [SECONDERYDATA]
Remember when you recreate the PK constraint on the Seconderydata filegroup, all the data in that table will automatically be moved to the Secondery data filegroup. This will only happen in the case of a table that has a primary key constraint and has a clustered index.
The transfer time may depend on the size of the table, so please do not do this during business hours. SQL Server will generally lock the entire table.
Now all you data for that table will be moved to the new file group. И пожалуйста, не забудьте shrink базу данных для того, чтобы освободить память.

суббота, 5 апреля 2014 г.

Подготовка файла для Sigil

Если у вас уже есть EPUB или HTML файл, вы можете дальше не читать.
Если вы создали документ в текстовом редакторе, то первое, что вам нужно сделать это конвертировать файл в формат HTML, это позволит вам импортировать этот файл в Sigil. Для правильного отображения текста используйте стили и старайтесь не использовать заумные форматы и представления.
Не надо ожидать, что формат EPUB будет выглядеть как печатная книга – EPUB разработан с целью дать возможность ридеру самому управлять видом страницы.

Документы Word

Используйте меню MS Word File→Save As Filtered HTML. Или макрос MS Word Macro @ MobileRead.
Обе эти возможности пытаются уменьшить количество кода генерируемого в файл HTML, это упростит редактирование файла в Sigil. Если вы этого не сделаете, то Word добавит громадное количество тэгов HTML и будет очень тяжело разобраться с ними.
При использовании графических редакторов используйте стили - это важная концепция форматирования формата EPUB.

Текстовые файлы

Можно и не преобразовывать текстовые файлы в HTML. Sigil может сам открыть файл типа .txt.
Текстовый файл должен содержать пустую строку между параграфами, тогда Sigil при открытии выделит текст в отдельный параграф.
Конечно, текстовые файлы это не идеальный источник, но иногда это лучше чем файлы с множеством не нужных тэгов HTML.

Другие форматы

Некоторые редакторы, такие как LibreOffice, имеют опции при сохранении как (save-as) или экспорт в HTML oили даже в EPUB. Кроме того вы можете выполнить конвертацию текстов в HTML или EPUB при помощи программы calibre.

X-Plane 11, 12 - любитель, Фото любитель со стажем

Постоянные читатели

Архив блога