Метка «python» - 6

Приведенная в этой статье информация получена в процессе подключения трансивера nRF24L01+ к RPi. Естественно, все это можно использовать и для работы с другими SPI устройствами.

Для включение аппаратного интерфейса SPI нужно в файле /etc/modprobe.d/raspi-blacklist.conf закомментировать строку "blacklist spi-bcm2708" и перезагрузить Pi. Для того, что бы убедиться, что SPI включен можно запустить листинг директории /dev:

image
Читать полностью »

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

Порты GPIO Raspberry Pi выглядят следующим образом:

image

Читать полностью »

Управление роборукой при помощи leap motion

В прошлом году я собрал роборуку, написал для неё «драйвер» для linux, научил держать разные предметы. И как-то забыл про неё. Но вчера мне доставили leap motion и придумалась новая идея — научиться управлять роборукой по средством движений своих рук.
Читать полностью »

В существующем проекте есть долгоиграющие fab-задачки — получения дампов с удаленных серверов, агрегация данных, етс. Запускаешь задачу, отвлекаешься в соседнее окошко, через N минут(а то и через час) вспоминаешь, проверяешь… неэффективно.
Захотелось сделать всплывающие уведомления на десктоп по завершении задачи, а тут и статья про notify-send подвернулась. Решил сделать декоратор на fab-функции — самое ему место.
Читать полностью »

По своему опыту знаю, что открытые классы в ruby раздражают и вызывают непонимание в среде питонистов. Ну в самом деле, что за странность открыть класс String и переопределить там size?
Читать полностью »

Python digest #15. Новости, интересные проекты, статьи и интервью [18 февраля 2013 — 23 февраля 2014] Новостей на сегодня удалось собрать не очень много, но они довольно интересные. Будут и игры, и разработка для мобильных устройств, и обработка звука, и замечательный обзор ORM, а также новости с вкусняшками от Pewee. Кроме того, стремительно приближается конференция в Казани (она состоится 1 марта).

Пользуясь случаем, хочу поздравить защитников отечества с прошедшим праздником 23 февраля и всех-всех-всех с победой в общем зачете олимпиады.

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

Прошу помощи — может кто-то может поделиться или разработать UserScript для автоматической заливки картинок на habrastorage? Он мне сильно ускорит процедуру публикации.

Читать полностью »

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

Но, конечно, в первую очередь этот пост для новичков. Думаю это не плохой пример для тех, кто утверждает «зачем мне знать как работают запросы/устроенны потоки/выполняются вычисления/..., если все это делает за меня компилятор и ОС!»
Читать полностью »

Python digest #14. Новости, интересные проекты, статьи и интервью [9 февраля 2014 — 16 февраля 2014] Продолжаем освещать самые значимые события в мире python и близлежащих технологий за минувшую неделю. В этот раз пара отвлеченных статей от Ронахера и Бикинга, одну из которых уже перевели на хабре. Много интересных проектов и материалов из разных сфер интересов. В частности проект улучшения поддержки PostgreSQL в Django набравший отличнй ход на кикстартере. Ну и немного забавного — как вот эта печенька понравившаяся очень многим читателям reddit.

Благодарю owlman75 за иллюстрацию к выпуску. Всем желаю продуктивной рабочей недели.

Присылайте новости для публикации в дайджесте вот сюда и тогда они никуда не пропадут.

Следующий выпуск будет 23 февраля.

Читать полностью »

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

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

Python-inject — это небольшая библиотека для внедрения зависимостей в Питоне. Третья версия написана в unix-стиле, т.е. она прекрасно выполняет только одну фукнцию и не пытается быть всем. В отличие от уже упомянутых Спринга и Джуса Инжект не ворует конструкторы классов у разработчиков, не навязывает разработчикам необходимость писать приложение в каком-то определенном стиле и не пытается управлять всем графом объектов приложения.

Инжект практически не требует конфигурации (об этом подробнее подкатом) и очень прост в использовании.

Например в тестах

# Возможные зависимости
class Db(object): pass
class Mailer(object): pass

# Внедряем зависимости в класс пользователя
class User(object):
    db = inject.attr(Db)
    mailer = inject.attr(Mailer)
    
    def __init__(self, name):
        self.name = name
    
    def register(self):
        self.db.save(self)
        self.mailer.send_welcome_email(self.name)


 # Используем в тестах inmemory базу данных и моки.
class TestUser(unittest.TestCase):
    def setUp(self):
        inject.clear_and_configure(lambda binder: binder 
            .bind(Db, InMemoryDb()) 
            .bind(Mailer, Mock()))
        
        self.mailer = inject.instance(Mailer)
    
    def test_register__should_send_welcome_email(self):
        # Пример теста.
        user = User('John Doe')
        
        # Регистрируем нового пользователя.
        user.register()
        
        # Должно отправиться письмо с приветствием.
        self.mailer.send_welcome_email.assert_called_with('John Doe')

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js