• ИТ для пожилых. Рушим стену между поколениями


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

      Давайте сейчас обратим внимание на людей престарелого возраста, посмотрим как у них дела, и не можем ли мы им чем-то помочь, помочь профессионально.
      Читать дальше →
    • О том, как рисовать кривые графики в стиле XKCD

        Недавно я публиковал статью на Хабре про гитарный тюнер, и многих заинтересовали анимированные графики которые я использовал для иллюстрации звуковых волн, в том числе технология создания таких графиков. Поэтому в этой статье я поделюсь своим подходом и библиотечкой на Node.js которая поможет строить подобные графики.


        Читать дальше →
      • Зрение для Arduino, или как работать с видео имея 2,5 кб оперативной памяти

          Eyeduino — финалист Hack Arduino Robot 2014
          (Руководитель проекта Эдуард Петренко)

          «Нам удалось реализовать проект, который состоит в том, чтобы загрузить в платформу Ардуино (2,5 КБ (!) оперативной памяти) видео низкого разрешения и эффективно работать с ним. Работа демонстрируется упражнениями „езда по прерывистой линии“ и „охота на таракана“ с хлопушкой на сервике.
          В клипе показана электрическая схема, проблемы, которые возникли и были решены, выполненные упражнения.
          Там, где показывается экран компьютера с текстовым терминалом — показывается то, что видел робот, символы # — чёрные точки. В разные моменты тут робот видел „Прибытие поезда“ братьев Люмьер, логотип проекта, физиономию руководителя проекта и самого себя, едущего по прерывистой линии.»


          (ставьте лайк на Ютюбе — поддержите российскую команду! )

          Под катом есть фотографии
          Читать дальше →
        • Без запаха фильтрации и нелинейного оценивания*

            image * от англ. «unscented filtering and nonlinear estimation» (by Переводчик Google)
            По просьбе dmitriyn решил опубликовать свое видение на так называемый «Unscented Kalman filter», который является распространением линейной фильтрации Калмана на случай, когда уравнения динамики и наблюдения системы нелинейны и не могут быть адекватно линеаризованы.
            Как название данного метода фильтрации «кошерно» удобочитаемо переводится на русский я пока не знаю, что отражено в названии статьи, поэтому решил просто скопипастить довольно забавный, на мой взгляд, машинный перевод. Еще одна забавная версия перевода — нечуткий фильтр.
            Под катом моя попытка по-простому рассказать про UKF
          • V-REP — гибкая и масштабируемая платформа для робомоделирования. Продолжение статьи

            • Перевод
            image
            Представляю вашему вниманию перевод второй части статьи, первую часть которой мы уже публиковали, ее можно найти по ссылке.
            В первой части мы знакомились со средой моделирования V-REP, рассматривали методы управления моделированием, возможности реализации V-REP в моделировании.
            Сейчас изучим функции моделирования в V-REP и рассмотрим несколько примеров использования платформы V-REP.
            Читать дальше →
          • Продолжаем бороться с frontend-рутиной

              image

              Прошло полгода с последней новости о TARS на хабре.

              Напомню, что TARS — это сборщик html-верстки, основанный на gulp, в помощь любому frontend-разработчику (или даже целой команде), для создания проектов любой сложности. За последние шесть месяцев было закрыто 88 issue, выпущено 7 версий, появился CLI, так вышло, что с yeoman’ом отношения не сложились, поэтому появилась своя версия. TARS переехал в свой новый дом на github, обзавелся командой из 4 разработчиков + небольшой армией фанатов. Кстати, огромное вам спасибо за мгновенные фидбеки после релизов и не только. TARS был внедрен в нескольких вебстудиях России и за рубежом. Сборщик научил компонентному подходу не один десяток разработчиков, привлек в ряды frontend’еров тех, кто боялся всей рутины верстки. В общем, появилось много всего нового, и об этом хотелось бы рассказать.
              Подробности
            • TARS, сделай уровень frontend-рутины 0%

                image

                Frontend с каждым днём становится сложнее. Задачи — объёмнее, пользовательский интерфейс — насыщеннее, HTML, CSS и Javascript — огромнее, а сон фронтендера — короче и беспокойнее. Необходимо грамотно структурировать код, выполнять множество рутинных задач (компиляция css- и js-препроцессоров, сборка спрайтов, подготовка и оптимизация изображений, минификация файлов и др). Если вы работаете в команде — это автоматически увеличивает сложность разработки. Чтобы решить эти проблемы, я создал TARS — сборщик html-вёрстки, основанный на gulpjs.
                Уменьшить рутину
              • PyTest

                Предисловие


                По историческому призванию я SQL-щик. Однако судьба занесла меня на BigData и после этого понесла кривая — я освоил и Java, и Python, и функциональное программирование (изучение Scala стоит в списке). Собственно на одном из кусков проекта встала необходимость тестирования кода на Python. Ребята из QA посоветовали для этих целей PyTest, но даже они затруднились толком ответить чем этот зверь хорош. К сожалению, в русскоязычном сегменте информации по данному вопросу не так уж и много: как это используют в Yandex да и все по-хорошему. При этом описанное в этой статье выглядит достаточно сложно для человека начинающего путешествие по этой стезе. Не говоря уже об официальной документации — она приобрела для меня смысл лишь после того, как я разобрался с самим модулем по другим источникам. Не спорю, там написаны интересные вещи, но, к сожалению, совсем не для старта.

                Юнит-тестирование Python


                Что это и для чего рассказывать смысла не вижу — Википедия все равно знает больше. По поводу существующих модулей для Python хорошо описано на Хабре.

                Вводная по необходимым знаниям


                На описываемый момент знания Python у меня были достаточно поверхностны — я писал кое-какие несложные модули и знал стандартные вещи. Но при столкновении с PyTest мне пришлось пополнять багаж знаний декораторами тут и тут и конструкцией yield.

                Преимущества и недостатки PyTest


                1) Независимость от API (no boilerplate). Как код выглядит в том же unittest:

                Код
                import unittest
                
                class TestUtilDate(unittest.TestCase):
                    def setUp(self):
                        #init_something()
                        pass
                        
                    def tearDown(self):
                        #teardown_something()
                        pass
                        
                    def test_upper(self):
                        self.assertEqual('foo'.upper(), 'FOO')
                        
                    def test_isupper(self):
                        self.assertTrue('FOO'.isupper())
                        
                    def test_failed_upper(self):
                        self.assertEqual('foo'.upper(), 'FOo')
                        
                if __name__ == '__main__':
                    suite = unittest.TestLoader().loadTestsFromTestCase(TestUtilDate)
                    unittest.TextTestRunner(verbosity=2).run(suite)
                


                То же самое в PyTest:

                Код
                import pytest
                
                def setup_module(module):
                    #init_something()
                    pass
                
                def teardown_module(module):
                    #teardown_something()
                    pass
                
                def test_upper():
                    assert 'foo'.upper() == 'FOO'
                    
                def test_isupper():
                    assert 'FOO'.isupper()
                    
                def test_failed_upper():
                    assert 'foo'.upper() == 'FOo'
                


                2) Подробный отчет. В том числе выгрузка в JUnitXML (для интеграции с Jenkins). Сам вид отчета может изменяться (включая цвета) дополнительными модулями (о них будет позднее отдельно). Ну и вообще цветной отчет в консоли выглядит удобнее — красные FAILED видны сразу.

                image

                3) Удобный assert (стандартный из Python). Не приходится держать в голове всю кучу различных assert'ов.

                4) Динамические фикстуры всех уровней, которые могут вызываться как автоматически, так и для конкретных тестов.

                5) Дополнительные возможности фикстур (возвращаемое значение, финализаторы, область видимости, объект request, автоиспользование, вложенные фикстуры)

                6) Параметризация тестов, то есть запуск одного и того же теста с разными наборами параметров. Вообще это относится к пункту 5 «Дополнительные возможности фикстур», но возможность настолько хороша, что достойна отдельного пункта.

                7) Метки (marks), позволяющие пропустить любой тест, пометить тест, как падающий (и это его ожидаемое поведение, что полезно при разработке) или просто именовать набор тестов, чтобы можно было запускать только его по имени.

                8) Плагины. Данный модуль имеет достаточно большой список дополнительных модулей, которые можно установить отдельно.

                9) Возможность запуска тестов написанных на unittest и nose, то есть полная обратная совместимость с ними.

                Про недостатки, пусть их и не много, могу сказать следующее:

                1) Отсутствие дополнительного уровня вложенности: Для модулей, классов, методов, функций в тестах есть соответствующий уровень. Но логика требует наличие дополнительного уровня testcase, когда та же одна функция может иметь несколько testcase'ов (например, проверка возращаемых значений и ошибок). Это частично компенсируется дополнительным модулем (плагином) pytest-describe, но там встает проблема отсутствия соответствующего уровня фикстуры (scope = “describe”). С этим конечно можно жить, но в некоторых ситуациях может нарушать главный принцип PyTest — «все для простоты и удобства».

                2) Необходимость отдельной установки модуля, в том числе в продакшене. Все-таки unittest и doctest входят в базовый инструментарий Python и не требуют дополнительных телодвижений.

                3) Для использования PyTest требуется немного больше знаний Python, чем для того же unittest (см. «Вводная по необходимым знаниям»).

                Подробное описание модуля и его возможностей под катом.
                Читать дальше →
                • +20
                • 154k
                • 9
              • Методология Kanban: введение

                Добрый день!

                Одним из моих профессиональных интересов, как координатора команды тестировщиков, являются методологии разработки программного обеспечения. В настоящее время все большую популярность приобретают так называемые Agile-методологии, в особенности Scrum и Kanban. На «раcпиаренных» терминах играют недобросовестные «тренеры», семинары и сертификации («сертифицированный Scrum-мастер», «сертифицированный Product owner» и т.д.) растут как на дрожжах.
                Читать дальше →
              • Канбан в IT (Kanban Development)

                  Я собираюсь написать несколько статей про новую методологию гибкой разработки Канбан (Kanban Development) в целях подготовки к Scandinavian Agile Conference 2009, где я буду делать один из докладов (кстати, заодно приглашаю всех на конференцию).
                  Сегодня публикую первую из статей.
                  Основная задача первой статьи — это как можно проще описать основы Канбан: что это такое, в чем отличие от других гибких методологий и зачем это нужно.
                  Также я хотел бы собрать как можно больше вопросов и сомнений в комментариях, чтобы ответить на них в следующих статьях, так что пишите всё, что вам непонятно, или что ещё вы хотели бы узнать про Канбан.
                  Я не то, чтобы большой специалист по этой новой методологии, но мы внутри команды пришли к Канбану самостоятельно и последовательно прошли все этапы мутации от SCRUM до Канбан, так что практический опыт есть.

                  Читать дальше →
                • Провели семинар по процессору на ПЛИС MIPSfpga в МИЭТ

                    Провели семинар по процессору на ПЛИС MIPSfpga в Национальном исследовательском университете «Московский институт электронной техники» ( ( bit.ly/mipsfpga_russia_2015_flier ) ). Получилось хорошо, уровень слушателей довольно высокий. Помимо меня, докладчика от Imagination Technologies, был докладчик из Макро Групп и MathWorks. Александр Филиппов из Макро Групп, официального представителя Xilinx в России, рассказал о Artix-7, Kintex-7 и UltraScale FPGA. Михаил Песельник, докладчик от MathWorks, рассказал о модели single-cycle реализации подмножества архитектуры MIPS в среде Simulink. Забыл попросить кого-нибудь меня сфотографировать, но остальные докладчики на фото ниже. Сегодня будет такой же семинар в МГУ, завтра в МИФИ.

                    Презентации использовавшиеся во время доклады от Imagination: panchul.com/dropbox/2014_10_26/presentations

                    Основной код для лабораторных работ: github.com/MIPSfpga/mipsfpga-plus



                    Читать дальше →
                  • 14 книг, которые вдохновили Илона Маска



                      Когда у Илона Маска, главы Tesla и SpaceX, спрашивают, как он научился строить ракеты, он дает простой ответ: «Я читаю книги». Предприниматель очень любит читать, и не пропускает возможности, чтобы изучить очередную книгу. При этом Маск читает как художественные книги, научно-популярную литературу, так и чисто технические издания, которые нужны для специалиста в той либо иной области науки или техники.

                      Когда Маск жил в Южной Африке (все его детство прошло именно в ЮАР), над ним насмехались сверстники, и он убегал в мир фантастики и фэнтези. Любимые его книги этого жанра — Джон Толкин и Айзек Азимов. Сейчас Маск выделяет 14 книг, которые изменили его самого и всю его жизнь.
                      Читать дальше →
                    • Как учёные с помощью Twitter бесплатно скачивают исследования

                        Если вы — учёный, и вам для работы нужно получить результаты определённого исследования, то у вас есть два пути: либо вы платите за него долларов тридцать, либо пишете в Twitter сообщение с «волшебным» хештегом, идентификационным кодом исследования и адресом электронной почты.

                        Я проверил. В течение получаса после моего твита я получил документ по почте. Моё сообщение ретвитнул аккаунт Shecanhazpdf, в описании к которому сказано: «С 2014 года не делает ничего, кроме ретвитов #icanhazpdf целый день».

                        По негласным правилам твит нужно удалить, но я этого делать не буду — я специально дал ссылку на документ, который не требует оплаты подписки. Поэтому я получил письмо с фразой: «Мне файл доступен без логина, но всё равно я прикладываю его к письму». image
                        Андреа Кужевски — учёная, придумавшая распространять работы с помощью Twitter. Фото из Google+
                        Читать дальше →
                      • Новый алгоритм для проверки надёжности паролей

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

                          'password' => [
                              'required',
                              'confirmed',
                              'min:8',
                              'regex:/^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*[\d])\S*$/',
                          ];

                          К сожалению, такие простые правила означают, что пароль Abcd1234 будет признан хорошим и качественным, так же как и Password1. С другой стороны, пароль mu-icac-of-jaz-doad не пройдёт валидацию.

                          Некоторые специалисты говорят, что это не лучший вариант.
                          Читать дальше →
                        • Smart.js – (больше чем) новая прошивка для ESP8266

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

                          Сразу к сути: мы разработали новую прошивку для данного устройства, предлагающую использовать для разработки язык JavаScript. Но, Smart.js это не только прошивка-интерпретатор JS, это ещё и различный «обвес» для работы с оборудованием и облачная инфраструктура.

                          image

                          За подробностями — прошу под кат.
                          Читать дальше →
                        • EmBlocks — IDE для STM32

                            Я обещал поделиться своей настроенной средой Em::Blocks.
                            Выполняю обещание.


                            Что такое Em::Blocks?


                            Это IDE на основе Code::Blocks — кросс-платформенной быстрой среды разработки со встроенным скриптовым языком и очень гибкой настройкой, ориентированной под С/С++ разработку. В среде есть встроенные шаблоны для кучи различных случаев и возможность подключать любые компиляторы.
                            EmBlocks в отличие от CodeBlocks не кросс-платформенная, она существует только под Windows.
                            Зато вместе с ней поставляется специальная версия CodeSourcery тулчейна, которая позволяет плотнее интегрировать тулчейн с IDE. Версия в комплекте всегда свежая.

                            Достоинства EmBlocks


                            • быстрая, т.к. написана в native коде
                            • расширяемая и хорошо автоматизируется с помощью скриптов
                            • шаблоны проектов можно настроить на свой вкус
                            • можно самому изменить диалог мастера создания проекта
                            • не требует установки — можно носить с собой на флешке и легко перенести с настройками на другой комп
                            • из коробки поддерживает отладку через ST-Link и J-Link
                            • бесплатная
                            • неплохо поддерживается на собственном форуме

                            Пример проекта с использованием EmBlocks — мигание светодиодами.
                            Подробности и архив для скачивания
                          • STM32 + EmBlocks — мигаем светодиодами

                              Как и просили в комментариях к предыдущей статье о EmBlocks, сегодня я покажу от начала и до конца как создать в EmBlocks простой проект для мигания парой светодиодов.
                              В качестве отладочной платы мы будем использовать кроху на STM32F103C8.
                              Вот наш стенд:

                              Подключаем аноды светодиодов к пинам PB5 и PB6, катоды через резсторы в 390 Ом к земле.
                              Заставим их перемигиваться
                            • Многофункциональный датчик температуры/влажности на ESP8266 или еще один шаг к «интернету вещей»

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

                              Сегодня практически в любом доме есть Wi-Fi роутер и было бы недальновидно не воспользоваться этим устройством для домашней автоматизации, тем более что сегодня на рынке есть все доступное оборудование для реализации любых идей. Ниже будет представлен вариант создания небольшого электронного устройства, являющегося платформой для построения различных датчиков/исполнительных механизмов на основе Wi-Fi модуля — ESP8266.

                              image
                              Читать дальше →
                            • Ещё один Wi-Fi выключатель


                              Данная статья будет посвящена ESP8266 Wi-Fi модулю, языку программирования Lua и прошивке nodeMCU. SDK от производителя рассматриваться не будет.

                              Примерно года три назад я пробовал реализовать выключатель по 1-wire шине. Как все работало мне очень не понравилось.

                              • Единая точка отказа т.к. вся логика на сервере;
                              • Медленная скорость;
                              • К каждому выключателю придется тянуть от 2х проводов(идеально «витуху»).

                              Читать дальше →
                            • PYCON RUSSIA-2015: видео и презентации докладов

                                18-19 сентября в Екатеринбурге прошла третья международная конференция python-разработчиков PyCon Russia. 21 доклад, два мастер-класса, Lightning Talks — все это PyCon-2015. Под катом — отчет о прошедшей конференции, много видео и презентации докладов.

                                0_1217f0_23d019c7_orig.jpg
                                Питонисты собрались из 25 городов, среди которых: Сан-Франциско, Париж, Прага, Бонн, Таллин, Минск, Киев, Москва, Санкт-Петербург, Казань, Уфа

                                Читать дальше →
                                • +24
                                • 15,4k
                                • 7