Posted by & filed under Webdev.

В языке Python уже имеется несколько удобных встроенных функций, которые можно использовать как декораторы, но при этом мы также можем писать свои собственные декораторы.

class tracer:
	def __init__(self, func):
		self.calls = 0
		self.func = func
	def __call__(self, *args):
		self.calls += 1
		print(‘call %s to %s’ % (self.calls, self.func.__name__)) self.func(*args)

@tracer					# То же, что и spam = tracer(spam)
def spam(a, b, c): 		# Обертывает spam в объект-декоратор
	print a, b, c

spam(1, 2, 3) 			# В действительности вызывается объект-обертка
spam(‘a’, ‘b’, ‘c’) 	# То есть вызывается метод __call__ в классе
spam(4, 5, 6)			# Метод __call__ выполняет дополнительные действия # и вызывает оригинальную функцию

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

def count(aClass):
	aClass.numInstances = 0
	return aClass		# Возвращает сам класс, а не обертку

@count
class Spam: ...			# То же, что и Spam = count(Spam)

@count
class Sub(Spam): ...	# Инструкция numInstances = 0 не нужна здесь

@count
class Other(Spam): ...

Posted by & filed under Webdev.

Преподаватель из Стэнфордского университета Кит Шварц (Keith Schwarz) уже несколько лет пополняет свой архив интересного кода — образцы самых лучших алгоритмов и структур данных, когда-либо изобретённых человечеством (Шварц весьма амбициозно оценивает свою коллекцию).

Примеры на сайте преимущественно закодированы в C++, поскольку STL предоставляет прекрасную базу для выражения алгоритмов, работающих с различными типами данных. Структуры данных реализованы на Java.

Watch sources
Read more »

Posted by & filed under Webdev.

Интересный пост от Яндекса про распознование музыки

Поиск по каталогу музыки — это задача, которую можно решать разными путями, как с точки зрения пользователя, так и технологически. Яндекс уже довольно давно научился искать и по названиям композиций, и по текстам песен. На сказанные голосом запросы про музыку мы тоже умеем отвечать в Яндекс.Поиске под iOS и Android, сегодня же речь пойдёт о поиске по аудиосигналу, а если конкретно — по записанному с микрофона фрагменту музыкального произведения.

http://habrahabr.ru/company/yandex/blog/181219/

Read more on habr

Posted by & filed under Webdev.

SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that gives application developers the full power and flexibility of SQL.
It provides a full suite of well known enterprise-level persistence patterns, designed for efficient and high-performing database access, adapted into a simple and Pythonic domain language.

http://htmlpurifier.org/

Python ORM, used on reddit, Yelp! and more.
Read more »

Posted by & filed under Webdev.

HTML Purifier is a standards-compliant HTML filter library written in PHP. HTML Purifier will not only remove all malicious code (better known as XSS) with a thoroughly audited, secure yet permissive whitelist, it will also make sure your documents are standards compliant, something only achievable with a comprehensive knowledge of W3C’s specifications. Tired of using BBCode due to the current landscape of deficient or insecure HTML filters? Have a WYSIWYG editor but never been able to use it? Looking for high-quality, standards-compliant, open-source components for that application you’re building? HTML Purifier is for you!

http://htmlpurifier.org/

Read more

Posted by & filed under Uncategorized.

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

Олег Дивов `Объекты в зеркале заднего вида`

Read more

Posted by & filed under OSX.

Running out of disk space is never fun, and drive space comes at a premium for those of us with smaller SSD drives like the MacBook Air with a 64GB or 128GB drive. These tricks are fairly advanced and thus aimed at the pro segment of SSD users who are comfortable modifying system functions and files through the command line with potentially risky commands like ‘rm -rf’

OSXDaily

Read more