Архив автора: admin

Слушаем и наслаждаемся!

Прекрасная музыка в исполнении мастера Ян Чун Лин.

Это необычная китайская музыка, проникает глубоко в мою душу, вызывает воспоминания о далеком прошлом. Эта странная мелодия, которая окутывает мою душу, мелодия полностью расслабляет меня …

Эта музыка будит воспоминания, которые прячутся в дальнем уголке сердца.


Лидия Голубева

Ёлочные игрушки handmade

Так получается, что из фетра сегодня изготовляют очень большое количество рукотворных поделок. И ёлочные игрушки – не исключение. Этот материал по праву занял доминирующее место в сердцах и «сундуках» рукодельниц. Ведь спектр его применения настолько широк! Широчайшая цветовая палитра и плотность материала, которая позволяет создавать любые формы, делает фетр просто незаменимым. У нас, рукодельниц, появляется возможность сочетать не только все цвета радуги, но десятки оттенков цветовой палитры. Этот материал лучше ткани, он не сыпется, не теряет форму. Он носит гордое название – фетр. Сегодня мы снова будем делать елочные игрушки, но на этот раз главный акцент сделаем не на формах, а разнообразии цветовой палитры. Елочные игрушки из фетра хэндмэйд – тема настоящей статьи.

Елочные игрушки хэндмэйд

Читать

Исключения в Питоне

Поговорим об исключениях.

Всё нижеизложенное относится к Python 3.3, хотя отчасти справедливо и для более ранних версий.

Для чего они применяются, наверное, все и так прекрасно знают: для передачи сообщений об ошибках внутри программы.

Рассмотрим простейший пример: открытие файла. Если всё нормально — open(filename, 'r') возвращает объект этого самого файла, с которым можно делать всякие полезные вещи: читать из него данные и т.д.

Если файл не может быть открыт — выбрасывается исключение:

try:
f = open(filename, 'r')
try:
print(f.read())
finally:
f.close()
except OSError as ex:
print("Cannot process file", filename, ": Error is", ex)

Открываем файл и печатаем его содержимое.

Обратите внимание: файл нужно не только открыть но и закрыть после использования. Исключение может выбросить open (например, если файла нет на диске или нет прав на его чтение).

Если файл открыт — читаем его через f.read(). Этот вызов тоже может выбросить исключение, но файл закрывать всё равно нужно. Поэтому необходим блок finally: f.close() должен быть вызван даже если f.read() сломался. В этом месте удобней было бы воспользоваться конструкцией with но мы же сейчас говорим об исключениях а не о контекстных менеджерах, верно?

Исключения из обоих мест попадут в except OSError, где можно будет что-то сделать с ошибкой.

Питон делает явный выбор в пользу исключений перед возвратом кода ошибки в своём ядре и стандартной библиотеке. Прикладному программисту стоит придерживаться этих же правил.

Введение закончено. Теперь сконцентрируемся на том что происходит в except.

Типы исключений

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

BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
+-- StopIteration
+-- AssertionError
+-- AttributeError
+-- BufferError

Самый базовый класс — BaseException. Он и его простые потомки (SystemExit, KeyboardInterrupt, GeneratorExit) не предназначены для перехвата обыкновенным программистом — только Питон и редкие библиотеки должны работать с этими типами. Нарушение правила ведет, например, к тому что программу невозможно корректно завершить — что совсем не хорошо.

Также не нужно перехватывать все исключения:

try:
...
except:
...

работает как

try:
...
except BaseException:
...

Всё, что может быть нужно программисту — это Exception и унаследованные от него классы.

Вообще-то лучше ловить как можно более конкретные классы исключений. Например, в случае с файлом это OSError или даже может быть FileNotFoundError. Таким образом мы не перехватим AttributeErrorили ValueError, которые в этом примере означали бы ошибку или опечатку программиста.

Кстати, обратите внимание: StopIteration порожден от Exception а GeneratorExit от BaseException. Подробности, почему сделано именно так, можно найти в PEP 342.

Цепочки исключений

Прочитав предыдущую главку все прониклись необходимостью указывать правильный класс исключений и пообещали никогда не использовать BaseException.

Идем дальше. Следующий пример:

try:
user = get_user_from_db(login)
except DBError as ex:
raise UserNotFoundError(login) from ex

Получаем пользователя из базы данных чтобы что-то потом с ним сделать. get_user_from_db может выбросить ошибку базы данных. Для нас это скорее всего означает что такого пользователя нет. Но для логики приложения полезней наш собственный тип UserNotFoundError с указанием логина проблемного пользователя, а не обезличенная ошибка БД — что мы и выбрасываем в обработчике исключения.

Проблема в том, что программисту часто хотелось бы знать, а почему это пользователь не найден. Например, чтобы сохранить в логах для дальнейшего разбирательства.

Для таких целей служит конструкция raise ... from ....

По PEP 3134 у объекта исключения имеется несколько обязательных атрибутов.

В первую очередь это __traceback__, содержащий кусочек стека от места возникновения исключения до места его обработки.

Затем — __context__. Если исключение было создано в ходе обработки другого исключения (выброшено из except блока) — __context__будет содержать то самое породившее исключение. Которое, в свою очередь тоже может иметь установленный __context__. Этот атрибут равен None если наше исключение — самое первое и н
е имеет предшественников.

__context__ устанавливается автоматически.

В отличие от контекста __cause__ устанавливается только если исключение было выброшено конструкцией raise ... from ... и равно значению from.

Если исключение выбрасывалось простым raise ... то __cause__ будет равно None в то время как __context__ всегда будет содержать породившее исключение если оно существует.

Для вывода исключения со всей информацией служит набор функций из модуля traceback, например traceback.print_exc().

И тут тоже есть проблема: печатается либо явная цепочка если есть установленный __cause__ или неявная, тогда используется __context__.

Иногда программисту может быть нужно отбросить породившие исключения как не имеющие смысла при выводе traceback. Для этого появилась форма записи

raise exc from None

PEP 409 и PEP 415 рассказывают как это работает:

У исключения всегда есть атрибут __supress_context__. По умолчанию он равен False.

Конструкция raise ... from ... записывает fromв __cause__ и устанавливает __supress_context__ в True.

Тогда семейство функций traceback.print_exc() печатают цепочку если явно указан (не равен None) __cause__ или есть __context__ и при этом __supress_context__ равен False.

Изложение получилось несколько длинным, но сократить текст без потери смысла у меня не вышло.

Семейство OSError

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

До Python 3.3 существовало много разных типов таких исключений: os.error, socket.error, IOError, WindowsError, select.errorи т.д.

Это приводило к тому, что приходилось указывать несколько типов обрабатываемых исключений одновременно:

try:
do_something()
except (os.error, IOError) as ex:
pass

Ситуация на самом деле была еще хуже: очень легко забыть указать еще одно нужное исключение, которое может внезапно прилететь. Дело в том что исключения операционной системы часто никак не проявляют себя при разработке. На машине программиста всё работает отлично и он не подозревает о возможных проблемах. Как только программа выходит в production пользователь вдруг ловит что-то неожиданное и программа аварийно завершается. Все опечалены.

Проблема решена в PEP 3151: весь этот зоопарк теперь является псевдонимами для OSError. Т.е. пишите OSError и не ошибетесь (прочие имена оставлены для обратной совместимости и облегчения портирования кода на новую версию).

Давайте рассмотрим ещё один аспект исключений, порожденных операционной системой.

У OSError есть атрибут errno, который содержит код ошибки (список всех возможных символьных констант для ошибок можно посмотреть в модуле errno).

Открываем файл, получаем OSError в ответ. Раньше мы должны были анализировать ex.errno чтобы понять, отчего произошла ошибка: может файла нет на диске, а может нет прав на запись — это разные коды ошибок (ENOENT если файла нет и EACCES или EPERM если нет прав).

Приходилось строить конструкцию вроде следующей:

try:
f = open(filename)
except OSError as ex:
if ex.errno == errno.ENOENT:
handle_file_not_found(filename)
elif ex.errno in (errno.EACCES, errno.EPERM):
handle_no_perm(filename)
else:
raise # обязательно выбрасывать не обработанные коды ошибки

Теперь иерархия расширилась. Привожу полный список наследников OSError:

OSError
+-- BlockingIOError
+-- ChildProcessError
+-- ConnectionError
| +-- BrokenPipeError
| +-- ConnectionAbortedError
| +-- ConnectionRefusedError
| +-- ConnectionResetError
+-- FileExistsError
+-- FileNotFoundError
+-- InterruptedError
+-- IsADirectoryError
+-- NotADirectoryError
+-- PermissionError
+-- ProcessLookupError
+-- TimeoutError

Наш пример можем переписать как:

try:
f = open(filename)
except FileNotFound as ex:
handle_file_not_found(filename)
except PermissionError as ex:
handle_no_perm(filename)

Гораздо проще и понятней, правда? И меньше мест, где программист может ошибиться.

Заключение

Переходите на Python 3.3, если можете. Он хороший и облегчает жизнь.

Новые плюшки в вопросе, касающемся исключений, я показал.

Если использовать новый питон не позволяют обстоятельства — пишите на чём есть, но помните как правильно это делать.

Автор: Andrew Svetlov

Микроклимат

 

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

На этой странице постараемся осветить все основные моменты подготовки террариума к заселению «зеленых жителей». Но сначала несколько слов о самих растениях. Дело в том, что для выращивания в закрытых террариумах подходят не все хищники. Например венерина мухоловка будет чувствовать себя не слишком комфортно в условиях повышенной влажности. А вот для росянки и непентеса влажный и теплый воздух очень важен.

После того, как вы определились с видом (или видами) растений, которые будут жить у вас, подумайте об их количестве. От этого будет зависеть и размер необходимого террариума. Для одного растения будет достаточно аквариума-бокала, но это, конечно, не так интересно, как создать в своем доме целый островок дикой природы. Поэтому здесь мы рассмотрим вариант с достаточно большим террариумом.

Размер выбираемого сосуда в первую очередь зависит от того, какие растения и в каком количестве будут в нём обитать. Более высокие террариумы хорошо подойдут для непентесов, для росянок же лучше выбрать «дом» пониже, чтобы источник света не находился слишком далеко от растений. При выборе высоты учтите, что часть террариума будет занята грунтом.

Итак, террариум выбран, но заселять его еще рано. Для начала определитесь с местом, в котором будет находиться ваш хищный сад, потому что перенести его потом будет проблематично из-за веса. Желательно не помещать хищников рядом с отопительными приборами, иначе можно получить слишком высокие температуры, губительные для растений.

Освещение — важнейшая часть нашего будущего террариума. Категорически не подходят для него обычные лампы накаливания из-за того, что они слишком сильно нагреваются, а значит будут не столько освещать растение, сколько поджаривать его. Флуоресцентные лампы, встречающиеся в магазинах, для нашего террариума тоже не слишком подходят, так как со временем они становятся тусклее и не обеспечивают нормального освещения. Что же выбрать? Люминесцентные лампы холодного белого или теплого белого света, а лучше даже взять несколько разных. Еще один вариант — металлогалогенные лампы, но стоят они значительно дороже. Не забудьте и про отражатель, чтобы не использовать свет в пустую, освещая не растения, а потолок. Для ламп нужно подобрать соответствующие электронные пускорегулирующие аппараты (ЭПРА), желательно той же фирмы, что и выбранные лампы. Лучше приобрести именно ЭПРА, поскольку они позволят лампам работать дольше, чем при использовании обычных пускорегулирующих аппаратов. А для более удобного использования можно использовать электронный таймер, который позволит не беспокоиться о включении и выключении освещения. Более подробную информацию о выборе ламп посмотрите в разделе «Освещение». А пока пойдем дальше.

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

Основное сделано, пришла пора подумать о растениях и грунте. Есть несколько вариантов размещения хищников в террариуме. Можно создать тропический уголок, посадив все растения вместе в один грунт. Или можно разместить каждое растение в отдельном горшочке. Первый вариант, конечно, выглядит более привлекательно, но требует больше внимания и сложнее в уходе, ведь растения требуют и пересадки, и разделения, в случая появления «деток». Второй вариант позволяет менять растения местами и с легкостью ухаживать за ними, но он не так красиво смотрится. Впрочем, есть и промежуточный вариант, когда горшки с растениями закапываются в грунт – в этом случая сохраняется и эстетичность, и простота, и свобода действий.

Однако какой бы вариант вы ни выбрали, есть несколько хитростей. Например, чтобы лучше видеть уровень воды в террариуме, можно оставить свободным один угол. Тогда вы всегда будете знать, стоит ли долить еще воды или её хватает. Вниз лучше всего положить крупную гальку или песок (предварительно хорошенько его промыв). Но можно обойтись и стандартной смесью песка и торфа. Чтобы придать привлекательности и аутентичности нашему террариуму, можно использовать сфагнум, сделав его верхним слоем грунта. Важный момент. Поскольку влажность в террариуме будет высокой, следите, чтобы растения не загнили. Предотвратить появление гнили поможет обработка почвы фунгицидом или другим антибактериальным препаратом.

Ну вот, наш террариум почти готов, осталось самое главное – поселить в нём растения.

Растения-хищники:

Венерина мухоловка | Непентес | Саррацения |

Росянка | Жирянка | Гелиамфора

 

 

Освещение

 

Эта статья будет полностью посвящена освещению, необходимому для выращивания хищных растений.

Начнем с того, для чего вообще растению нужен свет. Из школьного курса биологии вам наверняка известно такое слово, как «фотосинтез». Это процесс, позволяющий получать органические вещества из углекислого газа и воды при воздействии света на особые пигменты, содержащиеся в зеленых частях растения. А поскольку мы уже знаем, что хищники предпочитают бедные почвы и питание получают в основном из насекомых и фотосинтеза, то вывод напрашивается сам. Именно для хищных растений свет имеет огромное значение.

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

Конечно, выбор различных средств освещения сейчас велик. Как не запутаться во всех этих лампочках и трубках и выбрать именно то, что нужно? Давайте рассмотрим плюсы и минусы наиболее популярных искусственных источников света и решим, что нам подходит.

Итак. Самые известные и популярные лампы – лампы накаливания. Они есть или были практически в каждом доме. В чем их плюс? Низкая цена. Пожалуй, это все. Зато минусов достаточно много. Это и высокая температура на поверхности, и недостаточная мощность, и недолговечность, а главное – отсутствие в спектре синих цветов, так нужных растениям. Оставим лампы накаливания на самый крайний случай.

Более подходящим вариантом являются люминесцентные лампы. Они так же известны, как энергосберегающие лампы и бывают множества видов. Люминесцентные лампы хороши своей долговечностью, малым потреблением энергии и хорошим спектром света. Кроме того, существуют специальные лампы, созданные именно для подсветки растений, например Osram T8 L FLUORA, Narva LT 15W/077 Lumoflor, Philips TLD 15W/89, Sylvania F 18W/Grolux. Все они имеют оптимальный для растений спектр и хорошую светоотдачу. Эти лампы немного дороже обычных люминесцентных, к тому же требуют специального аппарата для подключения (ЭПРА, ПРА). Что обозначают цифры в маркировке лампы? Рассмотрим на примере OSRAM L 36W/840. Начало вроде бы понятно. Лампа фирмы OSRAM, L – люминесцентная, мощностью 36 Вт. А вот следующие три цифры не всегда понятны. Однако и в них нет ничего сложного. Первая из трёх цифр – индекс цветопередачи (Ra). Рассчитывается как  1*10 Ra, то есть здесь мы получаем 8*10=80. Чем больше этот индекс, тем лучше. Для освещения растений индекс цветопередачи должен быть не менее 80. Следующие две цифры расскажут нам о цветовой температуре лампы. Умножаем это число на 100 и получаем 4000 К, что соответствует холодному белому свету.

Существует и еще один вид люминесцентных ламп, которые хорошо подойдут для освещения растений. Это компактные люминесцентные лампы. Лучше всего подойдут лампы с маркировкой 4200К или 6200-6500К (холодный свет), 2500К (теплый свет) и мощностью от 20 Вт, а лучше еще больше. Эти лампы удобны ещё и тем, что их можно вкрутить в обычную настольную лампу или другой светильник. Еще одним плюсом является низкая температура на поверхности ламп, что позволяет располагать их достаточно близко к растениям (оптимально расстояние в 15-30 см). К тому же, лампы бывают двух основных форм – трубчатые (линейные) и компактные, у которых трубка имеет форму спирали или буквы U. Линейные лампы очень удобно использовать для освещения стеллажей с растениями или террариумов. Пожалуй, именно люминесцентные лампы лучше всего подходят для досветки или в качестве основного освещения для наших хищников.

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

Металлогалоидные лампы. Имеют хороший спектр и светоотдачу, но при этом существенно дороже люминесцентных и требуют специального оборудования для включения. К тому же, при работе металлогалоидные лампы сильно нагреваются, поэтому лучше всего их использовать в теплицах и других достаточно крупных помещениях.

Вот и все основные виды ламп, подходящих для освещения хищных растений. Конечно, выбор остается за вами, но помните, что света много не бывает! И конечно нужно учитывать количество освещаемых растений. Так, для одного хищника будет достаточно люминесцентной лампочки мощностью 20 Вт. Для домашнего террариума с хищными растениями хорошо подойдут люминесцентные лампы типа Osram T8 L FLUORA или обычные трубчатые лампы. А если вы решили, что вам просто необходима домашняя оранжерея, то тут не обойтись без серьезного освещения с помощью металлогалогенных (металлогалоидных) ламп. Для зимовки хищников могут пригодиться и обычные лампы накаливания, которые кроме освещения обеспечат и некоторое повышение температуры воздуха.

 

Черника

Черника

Именно она удостоилась самых лестных отзывов. Ее лечебные и профилактические свойства не подлежат ни малейшему сомнению. Ягоды этого невзрачного растения обладают огромным разнообразием незаменимых органических кислот. Благодаря этому черника является уникальным антиоксидантом и способна предотвратить ряд серьезных патологий, таких как болезнь Альцгеймера и прочее. Данное растение помогает сохранить память и ясность ума, эффективно противостоит старению клеток мозга. Читать