Общие вопросы
Подписаться на эту рубрику по RSS
Иногда одного декоратора бывает недостаточно. Для поддержки многоступенчатых расширений синтаксис декораторов позволяет добавлять несколько уровней обертывающей логики к декорируемой функции или методу. При использовании такой возможности каждый декоратор должен указываться в отдельной строке. Синтаксическая конструкция следующего вида:
@AAA
@BBB
@CCC
def function(...):
...
равноценна следующей:
def f(...):
...
f = AAA(BBB(CCC(f)))
Здесь оригинальная функция передается трем различным декораторам, а получившийся в результате вызываемый объект присваивается оригинальному имени. Каждый декоратор обрабатывает результат, возвращаемый предыдущим декоратором, который может быть оригинальной функцией или объектом-оберткой. Если все декораторы возвращают обертки, то при вызове функции по оригинальному имени будет выполнена логика всех трех обертывающих объектов, расширяя возможности функции тремя различными способами.
Последний декоратор в списке будет задействован первым и окажется самым глубоко вложенным.Далее...
Публикуя программное обеспечение, мы привыкли писать в лицензионных соглашениях: «Обратная разработка, декомпиляция или дизассемблирование программы запрещено». Но во многих ситуациях подобные слова являются не лучшей защитой и требуется применение технических средств, обеспечивающих предотвращение инвертирования программного обеспечения и позволяющих защитить свои инновации от использования конкурентами.
В этой статье, мы собираемся выполнять обратную операцию. Мы будем читать изображение из таблицы базы данных. В прошлой статье мы записали данные изображения в таблицу, теперь мы превратим эти данные обратно в изображение.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sqlite3 as lite
import sys
def writeImage(data):
try:
fout = open('woman2.jpg','wb')
fout.write(data)
except IOError, e:
print "Error %d: %s" % (e.args[0], e.args[1])
sys.exit(1)
finally:
if fout:
fout.close()
try:
con = lite.connect('test.db')
cur = con.cursor()
cur.execute("SELECT Data FROM Images LIMIT 1")
data = cur.fetchone()[0]
writeImage(data)
except lite.Error, e:
print "Error %s:" % e.args[0]
sys.exit(1)
finally:
if con:
con.close()
В этой статье, мы собираемся вставить данные изображения в базу данных SQLite. Следует отметить, что некоторые программисты выступают против помещения изображений в базы данных. Здесь мы только покажем, как делать это. Мы не станем останавливаться на технических проблемах того, сохранять ли изображения в базах данных или нет. Это применяется в зависимости от ситуации, когда эффективнее сохранять в базе чем в файлах.
sqlite> CREATE TABLE Images(Id INTEGER PRIMARY KEY, Data BLOB);
Для этого примера, мы создаём новую таблицу, называемую Images. Для изображений мы используем тип данных BLOB, который расшифровывается как Binary Large Objects.
Web-приложения – популярный продукт не только у рядовых пользователей, но и у малого и крупного бизнеса, в котором они применяются для поддержки информационных систем. Они стали надежными помощниками в разных сферах, которыми удобно пользоваться и можно легко найти во всемирной сети.
Все новое, предназначенное для людей, нуждается в популяризации. Вы, конечно же, не раз с интересом, а порой и с возмущением реагировали на навязчивую рекламу на телеэкранах, в эфире радиостанций. Рекламодатели не впустую тратят немалые деньги – затраты обязательно окупятся.
Сайт, если он создан не для забавы, а для получения в будущем стабильного дохода, не является исключением. Способы продвижения веб-ресурсов во многом подчиняются правилам, применяемым при раскрутке новых средств массовой информации – газет, журналов, телеканалов, радиостанций.
Нередко случается так, что ноутбук или какое-либо другое портативное устройство приходит в негодность. Иногда это случается из-за небережного использования, иногда по неосторожности или просто из-за плохого качества комплектующих или неудачной сборки. Среди причин поломки устройств самые распространенные, это:
- Попадание внутрь устройства воды или другой жидкости (чай, кофе, сок, пиво), что приводит к короткому замыканию и окислению дорожек и электрических контактов.
- Падение на твердую поверхность часто приводит к повреждению хрупких деталей, таких как дисплеи, а также может привести к образованию трещин на печатных платах и к негодности корпуса.
- Использование некачественных зарядных устройств, которые могут выдать неподходящее напряжение тока.
- Длительное использование под высокой нагрузкой и/или в разогнанном состоянии, что связано с перегревом микросхем и постепенным уменьшением срока службы.
В предыдущей статьи [часть 2] мы рассмотрели моменты создания таблицы в базу данных и внесения данных в эту таблицу. В данной статье покажем пример как получить данные из таблицы.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sqlite3 as lite
import sys
con = lite.connect('test.db')
with con:
cur = con.cursor()
cur.execute("SELECT * FROM Cars")
rows = cur.fetchall()
for row in rows:
print row
В этом примере, мы извлекаем все данные из таблицы Cars.
Развитие интернета значительно упростило процедуру поиска работы. Однако на это все равно уходит достаточно много времени, потому как порой приходится побывать на самых разных сайтах, прежде чем найти то, что нужно. Чтобы избавить вас от этого, разберем основные эффективные интернет-инструменты, с помощью которых можно найти работу.
Контекстная реклама является одной из разновидностей рекламы в интернете. Это краткие, несущие в себе конкретный смысл текстовые объявления, которые появляются на страницах отображения результатов поисковых запросов и соответствуют контексту самой интернет-страницы.