• Автономная метеостанция на контроллере ATMEGA328P и питанием от батареек с беспроводным выносным датчиком

      Совершенствуя свой комнатный термостат, о котором писал раньше, я задался целью дополнить его беспроводным датчиком температуры для измерения температуры воздуха на улице, собрать термостат с питанием от батареек и заменить модули приемник-передатчик RF 433MHz другой парой радиомодулей с большей дальностью связи при напряжении питания не более 3В. По ходу решения этих задач вырисовалась автономная метеостанция, речь о которой пойдет ниже.



      Читать дальше →
    • Печать гобелена «Игры престолов» на фискальном принтере с использованием Python

      • Tutorial
      Однажды в одном из проектов в мои руки попал фискальный принтер. Мы каждый день сталкиваемся с этими устройствами, когда совершаем платежи в магазинах, но мало кто догадывается что на самом деле они из себя представляют. Не буду вдаваться в подробности их работы, просто скажу, что это такие штучки, которые печатают чеки с данными о покупке на специальной термобумаге (да-да, почти во всех фискальных принтерах нет чернил!).

      Я должен был разобраться как получить состояние функционирования фискального принтера и его внутренние параметры настройки. Задача давно выполнена, а фискальный принтер был надолго заброшен в дальний угол… Пока в мою голову не пришла идея немного покреативить :D

      Такие принтеры позволяют печатать монохромные картинки. Когда я вдоволь наигрался с печатью котиков, эмблем и фотографий коллег, я решил замахнуться на печать длинного гобелена по мотивам сериала, в котором постоянно кого-то убивали со словами «зима близко».

      На выходе получился вот такой ролик:


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

      Тестирую элементы питания на профессиональном оборудовании. Цель охватить большую часть рынка элементов питания Европы и России.

      На данный момент протестированы более 230 аккумуляторов и батареек. Сделано более 1000 тестов. Израсходовано 4 ящика батареек и несколько месяцев жизни.

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


      Читать дальше →
    • How to delete (cleanup) obsolete remote branches in GIT (stash, bitbucket) from Windows machine

      • Tutorial
      This is what worked for me, so I am posting this in case it can be useful for somebody else.

      1. Collect all branches using command «git branch -a >> BranchNames.txt». Branches are collected in alphabetical order here (this is the way it comes from GIT).
      2. Remove from this list «master» and «head» branches.
      Read more →
    • Опусы про Его Величество Клей. Часть первая — вводная

      • Tutorial
      Есть такие области знания, которые «аршином общим не измерить...». В принципе, в моей «домашней» области, коллоидной химии, под такое направление можно спокойно помещать любое фундаментальное понятие, будь-то адсорбция (с адсорбентами) или адгезия (с клеями). Честно говоря, мысль написать про клей у меня не возникала. Но когда читатели в каждой теме, связанной с полимерами начинают просить рассказать про клеи — об этом поневоле задумаешся (ну и хочется конечно же отпарировать на «все надо клеить суперклеем»). Адгезия и клеи — очень обширная тема, поэтому я все-таки решил за нее взяться, но разбить повествование на несколько частей. Сегодня первая часть — вводно-информационная. Чтобы узнать за счет чего клей клеит, какие бывают клеи и какой клей лучше подходит для склеивания _____ (вписать нужное), традиционно идем под кат (и кладем в закладки).

      Читать дальше →
    • Python Testing с pytest. Начало работы с pytest, Глава 1

      • Перевод
      • Tutorial

      Вернуться Дальше


      Я обнаружил, что Python Testing с pytest является чрезвычайно полезным вводным руководством к среде тестирования pytest. Это уже приносит мне дивиденды в моей компании.

      Chris Shaver
      VP of Product, Uprising Technology


      Читать дальше →
    • Бесплатный VPN сервис Wireguard на AWS

      • Tutorial

      Для чего?


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


      Статья 19
      Каждый человек имеет право на свободу убеждений и на свободное выражение их; это право включает свободу беспрепятственно придерживаться своих убеждений и свободу искать, получать и распространять информацию и идеи любыми средствами и независимо от государственных границ

      В данном руководстве мы за 6 этапов развернем свой собственный бесплатный* VPN сервис на базе технологии Wireguard, в облачной инфраструктуре Amazon Web Services (AWS), с помощью бесплатного аккаунта (на 12 месяцев), на инстансе (виртуальной машине) под управлением Ubuntu Server 18.04 LTS.


      Я старался сделать это пошаговое руководство как можно более дружественным к людям, далеким от ИТ. Единственное что требуется — это усидчивость в повторении описанных ниже шагов.

      Читать дальше →
    • Hack Your XiaoMi Vacuum Cleaner

      image

      Laziness moves the world. And today we have more and more robotic vacuum cleaners that are saving our time for something more pleasant than just vacuuming.

      The robots were marketed as internet/Bluetooth/smartphone connected devices with a speaker and camera to report and explore the environment. They also have different sensors to dodge barriers and such. But that’s only some ordinary stuff everyone knows about the robotic vacuum cleaners.
      But the most interesting thing about them is their software. The owners can reprogram these devices and implement different settings as well as voice acting that has a huge number of options, including funny ones. And all you need to “upgrade” your vacuum cleaner is a PC, an internet connection, and a smartphone:
      Read more →
    • Liquibase и Maven

      Введение


      Liquibase представляет из себя систему управления версиями базы данных, в основном это касается структуры и в меньшей степени содержимого базы. При этом описание базы с одной стороны достаточно абстрактно и позволяет использовать на нижнем уровне различные СУБД, и с другой стороны всегда можно перейти на SQL-диалект конкретной СУБД, что достаточно гибко. Liquibase является устоявшимся проектом с открытым исходным кодом и активно используется за пределами своей родной Java среды и не требует глубоких знаний Java для работы. В качестве описания структуры базы и изменений базы исторически использовался XML формат, однако сейчас параллельно поддерживается YAML и JSON.


      В данной статье мы немного обобщим опыт предыдущих поколений и сосредоточимся на работе с Liquibase с использованием Maven. В качестве тестовой операционной системы будем использовать Ubuntu.

      Читать дальше →
    • Backblaze опубликовала статистику надёжности HDD за 2018 год



        Более пяти лет назад компания Backblaze опубликовала первый отчёт по использованию дисковых накопителей в своих серверах. Backblaze предоставляет услугу дешёвого облачного бэкапа. В основе их инфраструктуры — жёсткие диски потребительского класса. Компания собрала большую статистику по отказоустойчивости разных типов HDD. В то время парк накопителей Backblaze состоял в основном из дисков Seagate, Hitachi и WD, а самыми надёжными оказались диски Hitachi.

        С тех пор Backblaze публикует статистику ежегодно, и сейчас пришло время очередного отчёта.
        Читать дальше →
      • 11 лучших шрифтов для программирования

        • Перевод
        Много статей и сайтов сравнивают шрифты для программирования — всё это отличные ресурсы. Так зачем я опять поднимаю эту тему? Потому что сам всегда терялся в десятках шрифтов и не мог понять, какой лучше. Так что я опробовал много шрифтов и выбрал следующие для вас. Они довольно популярны и их легко получить. И самое главное, все эти шрифты бесплатны!

        Я ранжировал шрифты по следующим показателям:

        • Насколько различимы схожие символы, такие как 0O, 1lI.
        • Легко ли читается шрифт (ширина строк, ширина/высота символов).
        • И мои личные предпочтения!

        Все скриншоты сделаны в VSCode на одном фрагменте кода. Если не обозначено иное, то везде установлен размер "editor.fontSize": 14.
        Читать дальше →
      • Практические советы, примеры и туннели SSH

        • Перевод
        • Tutorial

        Практические примеры SSH, которые выведут на новый уровень ваши навыки удалённого системного администратора. Команды и советы помогут не только использовать SSH, но и более грамотно перемещаться по сети.

        Знание нескольких трюков ssh полезно любому системному администратору, сетевому инженеру или специалисту по безопасности.
        Читать дальше →
      • Ардуина и светодиод, или как прокачать детский конструктор



          Мой сын крепко “подсел” на магнитный конструктор Magformers. Однажды просматривая серию Фиксиков где фигурировал такой же конструктор ребенок спросил: “Папа, а почему у фиксиков детальки светятся, а у нас нет?”.

          Оказалось, что действительно существует набор “Magformers Neon LED Set”, где помимо обычных строительных блоков есть еще и элемент со светодиодом. Поскольку к этому времени у нас уже собрался целый ящик магнитиков всех возможных форм и размеров (как по мне, китайский магформерс ничуть не уступает оригиналу), покупать еще один набор только ради лампочки как-то не хотелось. Тем более, что этот набор стоил ощутимо дороже аналогичного без подсветки.

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

          Под катом Вы найдете вариант моргалки на ATTiny85 и светодиодной панели на светодиодах WS8212. Я расскажу о схемотехнике, как эту всю штуковину я запитывал от батареи, а также неочевидных проблем, которые я выгреб по пути. Я также в деталях расскажу о программной составляющей проекта.
          Читать дальше →
        • Введение в аннотации типов Python

            Введение



            Автор иллюстрации — Magdalena Tomczyk


            Вторая часть


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


            Сохраняя идею динамической утиной типизации в современных версиях Python (3.6+) поддерживает аннотации типов переменных, полей класса, аргументов и возвращаемых значений функций:



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


            Меня зовут Тихонов Андрей и я занимаюсь backend-разработкой в Lamoda.


            В этой статье я хочу объяснить основы использования аннотаций типов и рассмотреть типичные примеры, реализуемые аннотациями из пакета typing.

            Читать дальше →
          • Введение в Data classes

              Одна из новых возможностей, появившихся в Python 3.7 — классы данных (Data classes). Они призваны автоматизировать генерацию кода классов, которые используются для хранения данных. Не смотря на то, что они используют другие механизмы работы, их можно сравнить с "изменяемыми именованными кортежами со значениями по умолчанию".



              Введение


              Все приведенные примеры требуют для своей работы Python 3.7 или выше

              Большинству python-разработчикам приходится регулярно писать такие классы:


              class RegularBook:
                  def __init__(self, title, author):
                      self.title = title
                      self.author = author

              Уже на этом примере видна избыточность. Идентификаторы title и author используются несколько раз. Реальный класс же будет ещё содержать переопределенные методы __eq__ и __repr__.


              Модуль dataclasses содержит декоратор @dataclass. С его использованием аналогичный код будет выглядеть так:


              from dataclasses import dataclass
              
              @dataclass
              class Book:
                  title: str
                  author: str
              Читать дальше →
            • Светодиодные лампы с/из Украины

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

                Читать дальше →
              • Как выбрать батарею для ИБП

                  Батарея – самый важный компонент ИБП. И самый дорогой. К тому же, ещё и обладающий определенным жизненным циклом. Стало быть, рано или поздно, вопрос замены батареи обязательно встанет.
                  Хорошие АКБ служат много лет, почему бы уже сегодня не заглянуть в завтрашний день, чтобы понять, что станется с нашими вложениями в «железо»? Часто бывает так, когда что-то хорошее стоит очень дорого, а через некоторое время становится легкодоступным.
                  При выборе ИБП, возникает вопрос: какая аккумуляторная батарея в нём используется, и какая подходит для замены?
                  Поэтому, для начала поговорим немного о технологиях и типах батарей.

                  Какие бывают батареи ИБП
                  «Начинка» у АКБ бывает разная. Начнём с самой распространенной – со свинцово-кислотных аккумуляторов.
                  Читать дальше →
                • Основы электробезопасности при проектировании электронных устройств

                    Привет, Хабр!

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


                    Тема это большая и сложная, но я постараюсь выделить основные моменты — не в последнюю очередь на основании ошибок, которые я видел во всевозможных реальных устройствах и проектах, в том числе публиковавшихся на Хабре. Я не буду долго и нудно перечислять ГОСТы, но перечислю совсем базовые вещи, которые необходимо понимать и соблюдать, чтобы не убить хотя бы себя (если вы планируете не убивать также и окружающих, то после завершения этой статьи не поленитесь пролистать и релевантные ГОСТы).

                    Итак, вы собрались делать устройство, которое как минимум одним своим концом включается в розетку.
                    Читать дальше →
                  • Использование аккумулятора от iPhone при разработке носимой электроники

                      Приветствую, читатель.

                      Довольно часто у меня возникает задача разработки портативных устройств с питанием от одной ячейки Li-ion аккумулятора. И, если заказчика обычно это не беспокоит, то у меня, как у опытного инженера, при виде такого ТЗ по спине пробегает дрожь. Это связано с тем, что оценка уровня заряда аккумулятора, а также оставшегося времени работы — это очень непростая задача, хотя на первый взгляд может показаться иначе.



                      Есть несколько вариантов действия в таком случае, о них поговорим ниже.
                      Читать дальше →
                    • Git happens! 6 типичных ошибок Git и как их исправить

                      • Перевод


                      Прим. перев.: На днях в блоге для инженеров любимого нами проекта GitLab появилась небольшая, но весьма полезная заметка с инструкциями, которые помогают сохранить время и нервы в случае различных проблем, случающихся по мере работы с Git. Вряд ли они будут новы для опытных пользователей, но обязательно найдутся и те, кому они пригодятся. А в конец этого материала мы добавили небольшой бонус от себя. Хорошей всем пятницы!

                      Все мы делаем ошибки, особенно при работе с такими сложными системами, как Git. Но помните: Git happens!
                      Читать дальше →