Осталось совсем мало времени до наступления Нового года и пора подумать про новогодний декор квартиры уже сейчас! Создаем красивый рождественский венок своими руками.


Осталось совсем мало времени до наступления Нового года и пора подумать про новогодний декор квартиры уже сейчас! Создаем красивый рождественский венок своими руками.
Если вы не читали предыдущий пост — начните с него.
overloadable включает трассировку и следит за исполнением тела класса. Если обнаруживает, что значение исполняемой переменной было изменено — подменяет ее на объект, управляющий вызовом соответствующей функции в зависимости от параметров.
# -*- coding:utf8 -*-
import sys
def overloadable():
sys.settrace(OverloadTracer().on_event)
def closure(cls):
# удаляем трассировку по выходу из класса
# вообще говоря это можно сделать по 'return'
# но семантика декоратора заставит использовать
# код по назначению
sys.settrace(None)
return cls
return closure
class OverloadTracer(object):
def __init__(self):
self.in_class = False
self.prev_locals = {}
def on_event(self, frame, event, _):
#вызывается при каждом событии трассировки
if event == 'return':
# возврат из блока
self.update_locals(frame.f_locals)
elif event == 'call':
# вызов - открытие блока
# не заходим во вложенные вызовы
if self.in_class:
return None
self.in_class = True
else:
self.update_locals(frame.f_locals)
return self.on_event
def update_locals(self, loc):
# сравниваем loc с self.prev_locals
for name, prev_val in self.prev_locals.items():
if name in loc:
# если находим перекрытие функции - подменяем ее на объект,
# управляющий перегрузкой
if loc[name] is not prev_val and
( callable(prev_val) or
isinstance(prev_val, OverloadableFunc) )and
callable(loc[name]):
loc[name] = self.overload(prev_val, loc[name])
# делаем копию текущего состояния тела класса
self.prev_locals = loc.copy()
@staticmethod
def overload(prev_val, curr_val):
if not isinstance(prev_val, OverloadableFunc):
overld = OverloadableFunc()
overld.add(prev_val)
prev_val = overld
prev_val.add(curr_val)
return prev_val
# класс имитирует функцию с одним аргументом
# и по его типу выбирает соответствующий зарегистрированный обработчик
class OverloadableFunc(object):
def __init__(self):
self.funcs = {}
def __get__(self, obj, cls):
# для имитации метода объект этого типа
# должен быть свойством
def closure(val):
return self.funcs[type(val).__name__](obj, val)
return closure
def add(self, func):
# добавляем новую функцию-обработчик
tp_name = func.__doc__.strip().split('n')[0]
self.funcs[tp_name] = func
# использование в предыдущем посте
# -*- coding:utf8 -*-
import sys
def overloadable():
sys.settrace(OverloadTracer().on_event)
def closure(cls):
# удаляем трассировку по выходу из класса
# вообще говоря это можно сделать по 'return'
# но семантика декоратора заставит использовать
# код по назначению
sys.settrace(None)
return cls
return closure
class OverloadTracer(object):
def __init__(self):
self.in_class = False
self.prev_locals = {}
def on_event(self, frame, event, _):
#вызывается при каждом событии трассировки
if event == 'return':
# возврат из блока
self.update_locals(frame.f_locals)
elif event == 'call':
# вызов - открытие блока
# не заходим во вложенные вызовы
if self.in_class:
return None
self.in_class = True
else:
self.update_locals(frame.f_locals)
return self.on_event
def update_locals(self, loc):
# сравниваем loc с self.prev_locals
for name, prev_val in self.prev_locals.items():
if name in loc:
# если находим перекрытие функции - подменяем ее на объект,
# управляющий перегрузкой
if loc[name] is not prev_val and
( callable(prev_val) or
isinstance(prev_val, OverloadableFunc) )and
callable(loc[name]):
loc[name] = self.overload(prev_val, loc[name])
# делаем копию текущего состояния тела класса
self.prev_locals = loc.copy()
@staticmethod
def overload(prev_val, curr_val):
if not isinstance(prev_val, OverloadableFunc):
overld = OverloadableFunc()
overld.add(prev_val)
prev_val = overld
prev_val.add(curr_val)
return prev_val
# класс имитирует функцию с одним аргументом
# и по его типу выбирает соответствующий зарегистрированный обработчик
class OverloadableFunc(object):
def __init__(self):
self.funcs = {}
def __get__(self, obj, cls):
# для имитации метода объект этого типа
# должен быть свойством
def closure(val):
return self.funcs[type(val).__name__](obj, val)
return closure
def add(self, func):
# добавляем новую функцию-обработчик
tp_name = func.__doc__.strip().split('n')[0]
self.funcs[tp_name] = func
# использование в предыдущем посте
Поскольку тело класса исполняется то трассировщик может «видеть» как в него добавляются новые методы или подменяются старые и использовать эту информацию что-бы произвести перегрузку функций. На всякий случай — код класса исполняется только один раз — при импорте текущего модуля. По выходу из создания класса трассировка выключается и не оказывает никакого влияния на его инстанцирование или вызов методов.
Этот код можно расширить до перегрузки функций (не методов) и добавить поддержку нескольких параметров.
Идея с использованием трассировки для расширения синтаксиса была реализована как минимум в одной широко известной библиотеке — PEAK.util.decorator. Она позволяет использовать декораторы в python до 2.4.
Ссылки:
pypi.python.org/pypi/DecoratorTools
Исходники этого и других постов со скриптами лежат тут — github.com/koder-ua. При использовании их, пожалуйста, ссылайтесь на koder-ua.blogspot.com.
Автор: konstantin danilov

Предлагаем сделать оригинальный подарок на год дракона в технике обратный декупаж. Это будет оригинальная тарелка с соответствующими мотивами драконов.
Знали бы это парни
Когда она злая и уходит — иди за ней.
Когда она внимательно смотрит на твои губы — поцелуй её.
Когда она тебя отталкивает — держи её и не отпускай.
Когда обзывает тебя — целуй её и говори что любишь.
Когда она злая — скажи, что она очень милая.
Когда она тихая — спроси что не так.
Когда она тебя игнорирует — привлеки её внимание.
Когда она показывает себя с плохой стороны — говори, что она красивая.
Когда видишь что она начинает плакать — обними и не оставляй одну на этой планете.
Когда она кладёт свою голову на твоё плечо — опустись и поцелуи её.
Когда она говорит, что нравишься ей — на самом деле она хочет сказать больше чем ты сможешь понять.
Когда она расскажет тебе секрет — храни его.
Когда она смотрит тебе в глаза — не отпускай их пока это не сделает она.
Когда она скучает по тебе — ей больно.
Когда ты «ломаешь» её сердце — боль и обида никогда не проходит.
Когда она говорит что всё кончилось — она всё ещё хочет к тебе…
Лекарственные средства | Тип судорог | Дозировка |
Кортикотропин Преднизолон | Инфантильные спазмы, синдром Леннокса—Гасто, миоклонус и Резистентные парциальные припадки | Кортикотропин в/м по 0,1-10 ЕД/кг массы тела (например, 20 ЕД 2 нед, при отсутствии эффекта 30-40 ЕД 1 мес, далее преднизолон в дозе 2 мг/кг массы тела) |
Вальпроевая кислота (Ковулекс 10% — 5 мл) — Вальпроат натрия | Генерализованные и парциальные припадки, миоклонус, абсансы | По 20—50 мг/кг массы тела в сутки (дозу повышают постепенно) Конвулекс — 15 мг/кг веса (взрослым — 10-15 мл в/в в разведении) |
Диазепам (Реланиум) | Эпилептический статус | В/м и в/в по 0,1-0,3 мг/кг массы тела повторно, ректально в дозе 0,25-0,5 мг/кг массы тела. |
Карбамазепин | Генерализованные тонико-клонические, парциальные припадки | По 10-20 мг/кг массы тела в сутки |
Клоназепам | Все формы | Детям младше 1 года по 0,5— 1 мг/сут, в возрасте 1—6 лет по 1—3 мг/сут, старше 7 лет по 3—6 мг/сут |
Ламотриджин | Генерализованные клонико-тонические, парциальные приступы, миоклонус, рефрактерные абсансы, синдром Леннокса—Гасто | По 5—20 мг/кг массы тела в сутки (насыщение в течение 2 нед) С препаратами вальпроевой кислоты в дозе 0,2-5 мг/кг массы тела в сутки |
Нитразепам | Абсансы, миоклонус, инфантильные спазмы | По 0,25-1,0 мг/кг массы тела в сутки (следует медленно повышать дозу) |
Примидон | Генерализованные тонико-клонические, парциальные приступы | По 10—20 мг/кг массы тела в сутки |
Фенитоин | Генерализованные тонико-клонические, парциальные приступы | По 8—10 мг/кг массы тела в сутки в возрасте до 3 лет, 4-7 мг/кг массы тела в возрасте старше 3 лет В/в доза насыщения 20 мг/кг массы тела |
Фенобарбитал | Генерализованные тонико-клонические, парциальные приступы | По 3—5 мг/кг массы тела в сутки в возрасте до 5 лет, по 2—3 мг/кг массы тела в возрасте старше 5 лет В/в доза насыщения 20 мг/кг массы тела в сутки |
Этосуксимид | Абсансы, миоклонические судороги | 20-40 мг/кг массы тела в сутки |
Лекарственное средство, доза и способ применения | Примечание |
Диазепам в дозе 0,3 мг/кг в/м Магния сульфат в дозе 250 мг/год жизни или фуросемид в дозе 1—2 мг/кг массы тела в/в или в/м | При приступе эпилепсии |
Хлорпромазин+прометазин в/м детям до 1 года по 0,25 мг/кг массы тела, старше 1 года по 2,5-3,75 мг/год жизни или метамизол натрия (анальгин*) в/м детям до 1 года в дозе 5 мг/кг массы тела, старше 1 года по 50 мг/год жизни | При фебрильных судорогах |
Кальция глюконат в/в в дозе 0,5 — Магния сульфат в дозе 50 мг/кг массы тела в/м | При спазмофилии |
1. Делаем из бумаги конус, закрепить скотчем.

2. Обмотать ниткой вокруг
3. Промазать клеем

4. Подождать когда высохнет и аккуратно снять конус

5. Украсить Елочку любыми украшениями
