Тесты тесты тесты: Selenium как инструмент тестирования

Image

Selenium – это проект, в рамках которого разрабатывается серия программных продуктов с открытым исходным кодом. Среди продуктов интересен Selenium WebDriver - это программная библиотека для управления браузерами. WebDriver представляет собой драйверы для различных браузеров и клиентские библиотеки на разных языках программирования, предназначенные для управления этими драйверами.

Много слов и мало сути. А суть проста - использование такого веб-драйвера сводится к созданию бота, выполняющего ...

more ...

Синтаксис Python: yield from

Рассмотрим еще одну страшную конструкцию в Python 3.3+ - yield from

Напомню, генератор это объект который можно про итерировать только однажды. Записывается как:

f = (x for x in xrange(100)) 
# Или так
def gen():
    for x in range(100):
        yield x

Когда у нас один генератор - все хорошо. Используем его как итератор и радуемся. Но не редки ситуации когда есть ...

more ...

Синтаксис Python: encode/decode

Вероятно, самым заметным отличием Python 2 от Python 3 является юникод. Это нововведение упростило работу со строками. Однако, так как Python 2 еще в строю, то кодировки еще в силе и не мало разработчиков путается между encode и decode.

Стоит привести картинку, которая прояснит все:

Image

Таким образом, если у нас есть строка:

a = 'Cool page'

То существует множество способов (кодировок ...

more ...

Таинство стандартной библиотеки: модуль operator

Таинство стандартной библиотеки: модуль operator

Модуль operator содержит набор функций, соответствующих операторам Python.

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

operator.add(a, b)  # суммирует два значения
operator.ne(a, b)  # то же, что и a!=b
operator.attrgetter('id') # возвращает ссылку, по которой можно получить атрибут "id"

Казалось бы, зачем нужны они? А ответ довольно прост - функциональное программирование с использованием итераторов иногда требует ...

more ...

Функциональный Python: Python — это не Haskell

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

more ...

Таинство стандартной библиотеки: слабые ссылки - weakref

Python имеет автоматическое управление памятью: подсчёт ссылок для большинства объектов и сборка мусора для удаления циклов. Память освобождается сразу после того, как была удалена последняя ссылка на объект.

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

more ...

Внутренности Python: импорт в Питоне

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

Удивительный факт: даже англоязычные ресурсы предоставляют недостаточно информации

Серия статей:

more ...

Полезные библиотеки: gensim - библиотека для моделирования над текстами

Gensim - библиотека Python для моделирования, тематическое моделирование документов и извлечения подобия с больших корпусов.

Целевая аудитория является обработка естественного языка (НЛП) и IR сообщество.

В Gensim реализованы популярные алгоритмы НЛП. Например, word2vec. Большинство реализаций алгоритмов умеет использовать несколько ядер.

https://github.com/piskvorky/gensim/

more ...

Пишем web-проекты: Django Admin Actions

Интерфейс администратора Django достается разработчику "даром" - прописываешь немного срочек и готово. Появляется UI где можно изменять объекты моделей - просто так нам предоставляют GRUD возможности.

Но что если нам надо сделать какие-то дополнительные возможности? Для примера такие действия есть в Python Дайджест:

Python Дайджест

Такие возможности реализуются с помощью Django admin actions. Для примера так:

class ItemModeratorAdmin(admin.ModelAdmin):
    actions = [
        '_action_make_moderated',
    ]
    def _action_set_queue ...
more ...