• Как мы теперь договариваемся о новом бизнесе на берегу: юнит-тесты в реальном мире



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

      Очень многие вещи из ИТ-сферы напрямую относятся к бизнес-процессам. Тойота в какой-то момент придумала промежуточные юнит-тесты на производстве в своей TPS («каждое следующее звено — внутренний заказчик с критериями приёмки»), но вот в областях типа переговоров истории сквозных проверок далеко не зашли. Вообще, в решении типовых переговорных ситуаций есть очень много гениальных механик вроде «русской рулетки» или «техасской перестрелки» при разделе имущества. Только мало кто договаривается подобное применять, потому что в конечном итоге нужно уметь декомпозировать ситуацию и отладить её.

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

      И вот в какой-то момент к нам в гости завалился человек, который посвятил полжизни конфликтам учредителей. Первая мысль была: «Ну, это не про нас». А потом здравый смысл пересилил, и мы попробовали его механику договорки. И знаете, что? Отдаёт мазохизмом, но удивительно хорошо работает. В общем, давайте покажу, как выглядит очень далёкий, но всё же аналог юнит-тестов сотрудничества нескольких предпринимателей.
      Читать дальше →
    • Смотрим любое кино мгновенно

        После ареста серверов Moonwalk жить стало в разы труднее. Лично я уже совсем отвык от торрентов. Нужно что-то качать, ждать, чем-то открывать, куда-то кликать, иногда еще и место на диске кончается. Как можно ждать час пока скачается фильм? За час можно жизнь прожить. Пришлось искать решение, которое позволит смотреть кино также просто, как и раньше. Норматив: от идеи посмотреть что-нибудь до начала просмотра - не более минуты.

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

        Читать далее
      • Как за 60$ создать систему распознавания лиц с помощью Python и Nvidia Jetson Nano 2GB

        • Перевод

        Новый набор инструментов для разработчиков Nvidia Jetson Nano 2GB представляет собой одноплатный компьютер с графическим ускорителем стоимостью 59$, работающий под управлением программного обеспечения с искусственным интеллектом.

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

        Приятного чтения!
      • Всё, о чём должен знать разработчик Телеграм-ботов

          Вы вряд ли найдете в интернете что-то про разработку ботов, кроме документаций к библиотекам, историй "как я создал такого-то бота" и туториалов вроде "как создать бота, который будет говорить hello world". При этом многие неочевидные моменты просто нигде не описаны.

          Как вообще устроены боты? Как они взаимодействуют с пользователями? Что с их помощью можно реализовать, а что нельзя?

          Подробный гайд о том, как работать с ботами — под катом.

          Читать далее
        • Keyboa: клавиатуры на максималках для ботов в Telegram

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

            Keyboa помогает создавать встроенные клавиатуры любой сложности для ботов, разработанных на базе pyTelegramBotAPI.

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

            Статья рассчитана на тех, кто знает основы Telegram Bot API и хотя бы немного знаком с фреймворком pyTelegramBotAPI.

            Давайте разбираться
            • +6
            • 10,7k
            • 4
          • Подъёмы ног по программе Пола Уэйда

            • Перевод

            image


            Техника / как выполнять


            Правило первое: «Тренируйтесь по-настоящему, а не делайте вид!»


            Это первый урок в тренировке центральной части тела. Если вы не знакомы с темой, то мы постараемся это исправить. Самым известным упражнением на пресс являются «кранчи» (от англ. crunch). Это упражнение, в котором напрягают пресс и поднимают туловище в пределах небольшого диапазона движения. Кранчи обычно выполняются так:


            image


            Цель этого упражнения «прорисовать» кубики пресса для «показухи». И это совершенно не то, чем надо заниматься, если есть желание обрести настоящую силу.


            Человеческое тело создано для полноценного перемещения, а не для изолированной работы пары мышц. Организму важно работать как единой системе. В лёгкой и силовой атлетике задействуют всё тело, а не отдельные конечности. Посмотрите на борьбу, бег, броски, подъём тяжестей: во всех этих движениях тело движется как единое целое. Мышцы брюшной полости развивались, чтобы принимать участие в этой «большой игре». Тренируйте пресс подражая естественным движениям. Выполняйте их с полным диапазоном, реально перемещая тело и конечности — не надо делать это наполовину.


            «И как это делать?» — спросите вы. Ответ очевиден, талия — это середина тела, мышцы здесь работают сжимаясь и сгибая его по центру. В идеале мышцы притягивают торс к ногам, как в приседаниях, или подтягивают ноги к торсу, как в подъёмах ног. Оба упражнения являются отличной тренировкой, но по многим причинам — подъём ног превосходит приседания. Для достижения высоких результатов тренируйте талию должным образом. Сосредоточьтесь на «размашистых» полноценных движениях. И подъёмы ног — одно из лучших среди них.

            Читать дальше →
          • Приседания по программе Пола Уэйда

            • Перевод

            image


            Техника / как выполнять


            Правило первое: правильная постановка ног


            Перед началом приседаний надо посмотреть на позицию ног. Также как ладони продолжают руки, так и от положения ступней зависит позиция ног. Начинайте, расположив ступни симметрично с носками развёрнутыми наружу под углом 30-40 градусов. Однако, продолжайте экспериментировать, чтобы добиться удобного положения под себя. Колени смотрят в ту же сторону, что и носки. Они не должны быть параллельны друг другу.


            image


            Это может показаться неправильным, но так задумано природой, и так мы устроены. Слегка развернутые наружу носки помогут занять устойчивое положение. Однако, это не сработает, разверни вы только одну ногу. В общем, просто займите удобное естественное положение.


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

            Читать дальше →
          • Готовый шаблон сайта с регистрацией, юзерами и админами на Flask с базами SQL или MongoDB

              flask

              Бывает, приходится делать сайты на flask, у которых есть пользователи и админы. Чисто для себя решил как-то это стандартизировать и, главное, не терять время, когда такая задача появляется. Цель — в несколько команд получить рабочий сайт у которого есть:

              • Регистрация
              • Email подтверждение
              • Авторизация
              • Выход (logout)
              • Администраторы и роли администраторов
              • Административная, пользовательская и публичная часть сайта
              • Возможность юзера менять пароль
              • Восстановление пароля
              • Локализация для иностранных языков
              Читать дальше →
            • Почему Вы должны попробовать FastAPI?

              image Лого взято из Github репозитория FastAPI


              FastAPI — относительно новый веб-фреймворк, написанный на языке программирования Python для создания REST (а если сильно постараться то и GraphQL) API, основанный на новых возможностях Python 3.6+, таких как: подсказки типов (type-hints), нативная асинхронность (asyncio). Помимо всего прочего, FastAPI плотно интегрируется с OpenAPI-schema и автоматически генерирует документацию для вашего API посредством Swagger и ReDoc


              FastAPI построен на базе Starlette и Pydantic.
              StarletteASGI микро-фреймворк для написания веб-приложений.
              Pydantic — библиотека для парсинга и валидации данных основанная на Python type-hints.

              Читать дальше →
            • Обзор 10 бесплатных систем управления проектами. Что даром, а за что придется платить

                У большинства систем управления проектами есть бесплатные версии, но они бывают двух принципиально разных видов.

                1) «Честная» бесплатная версия. Система искренне хочет, чтобы вы свободно пользовались ею без ограничений по времени. И делились с друзьями.

                2) «Пробная» бесплатная версия. Продукт нацелен на то, чтобы сконвертировать вас в платящего клиента. И потому намеренно урезает вам «жизненно важные» функции. Как правило, об этом можно узнать, только начав пользоваться системой.

                Мы в YouGile приняли опасное для себя решение и в октябре запустили «честную» бесплатную версию. Сняли все ограничения, оставили только одно – до 10 пользователей. Результат пока такой: сильно потеряли в количестве платящих клиентов, зато график активности в системе вырос в 2 раза за 3,5 месяца.

                Конечно, предварительно мы изучили рынок и посмотрели, а какие free-версии предлагают наши конкуренты: Asana, Bitrix24, Trello и другие. Мы постоянно тестируем различные системы управления и можем смело делать выводы: кто предлагает «честную» бесплатную версию, а кто нет.

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

                Начнем с продуктов, у которых бесплатные версии наиболее полноценные, а также расскажем про свою.

                Читать далее
              • Python: Работа с базой данных, часть 1/2: Используем DB-API

                • Tutorial
                часть 1/2: Используем DB-API часть 2/2: Используем ORM
                Python DB-API – это не конкретная библиотека, а набор правил, которым подчиняются отдельные модули, реализующие работу с конкретными базами данных. Отдельные нюансы реализации для разных баз могут отличаться, но общие принципы позволяют использовать один и тот же подход при работе с разными базами данных.

                В статье рассмотрены основные методы DB-API, позволяющие полноценно работать с базой данных. Полный список можете найти по ссылкам в конец статьи.

                Требуемый уровень подготовки: базовое понимание синтаксиса SQL и Python.
                Читать дальше →
              • Небольшой гайд по выбору 3D-принтера для начинающих

                  Поводом для написания данной статьи послужила статья “Я хотел купить недорогой 3D-принтер, но посмотрел YouTube и расхотел”, в конце которой автор просит ответить на несколько вопросов. Попробую ответить с точки зрения своего семилетнего опыта 3D-моделера и 3D-печатника. Для начала небольшие предостережения.

                  В данной статье не будет советов: “Покупайте принтер производителя Х - он хороший, а производителя Y - не берите ни в коем случае”, только общие рекомендации.

                  Классификация принтеров неформальная, принятая в отечественном сегменте печатников.

                  Все написанное основано на личном опыте автора и является его личным мнением.

                  Если данные предостережения вас не пугают - добро пожаловать под кат.

                  Поехали
                • Использование JIRA и Confluence в большом проекте

                    Начало нового проекта как правило сопровождается решением массы организационных вопросов: как будут взаимодействовать участники проекта, где будут храниться документы и как будет построено их согласование, как будут ставить задачи и выдавать поручения… В каждой компании, у каждого руководителя проектов, уже есть заготовки и предпочтения. Но всегда полезно посмотреть, как это делают другие. Поэтому предлагаю познакомиться с примером из практики, который вышел весьма удачным.
                    Читать дальше →
                    • +11
                    • 121k
                    • 9
                  • Как создать отличную поддержку и повысить показатели, не демотивировав сотрудников

                      Поддержка влияет на отток клиентов, продажи по сарафанке. В данной статье мы расскажем о нашем опыте и поделимся рецептами, которые помогли стать поддержке нашего дата-центра лучше.

                      Читать далее
                    • Когда за повышением зарплаты каждый месяц ходит робот



                        Обычно повышение зарплаты выглядит следующим образом. Способ №1, гуманитарный: сотрудник через год работы задумывается, что что-то пошло не так, и пора просить повышения. Дожидается своего локального максимума усилий, и на этой волне идёт к руководителю просить больше денег. С точки зрения теории игр это выглядит как «ну, я попросил, вдруг прокатит». Никаких доводов повышать оклад у руководителя нет.

                        Дальше сотрудник может поднять ставки. «Повышайте, а то уволюсь». В этой ситуации в проигрыше оказываются оба — руководитель теряет на времени обучении нового сотрудника и стоимости подбора. Сотрудник теряет на том, что может неожиданно уволиться.

                        Разработчики традиционно пользуются способом №2: сначала проходят где-то несколько собеседований, собирают офферы и приходят с ними к руководителю. «Смотри, вот тут мне предлагают на 20% больше, но мне у нас нравится, повышай на 15%, а то я перейду». Это уже предмет обсуждения. В банальном случае проще повысить и сохранить ценного сотрудника, но это обеспечит проигрыши в связанных играх. То есть создаст прецедент. Поэтому решение принимается (в упрощённой модели) с некоторой долей рандома.

                        У нас у многих математика в анамнезе. Рассматривая эту игру дальше, можно сделать простой вывод, что такой диалог для сотрудника всегда стрессовый, и он случается в момент после кризисного. То есть сначала человек беспокоится, потом делает потенциально невыгодные действия (проходит собеседования в других местах), потом приходит. Части надо повышать, части не надо. Следующий вопрос: можно ли найти функцию, которая обеспечит справедливую оценку? Будет ли эта функция снимать вот эти стрессовые ситуации?

                        Регулярная переиндексация каждый год — вариант такой функции. Условно, если в договоре прописано, что зарплата каждый год растёт на уровень инфляции — наверное, можно не беспокоиться. Но Вадим придумал более интересную фишку — привязать это к оценке полезности действий сотрудника для компании. Но как адекватный человек, без KPI.

                        Читать дальше →
                      • Тренируемся дома: отжимания по программе Пола Уэйда

                        • Перевод

                        image


                        Представляю программу Тюремных Тренировок Пола Уэйда. Начнём с серии классических упражнений со своим весом для верхней части тела — отжиманиям.


                        Тюремные Тренировки представляют собой самые лучшие и эффективные методы обучения работе со своим весом, из когда-либо существовавших. Многие из этих забытых, но действенных техник находятся на грани исчезновения. Современный бодибилдинг меняет наше мышление, навязывая свои убеждения. И даже заключённые сейчас получили доступ к тренажёрным залам.


                        Серия сосредоточена на цепочке из 10 последовательных упражнений. Когда освоите одно упражнение, то перейдёте к следующему и так далее…
                        Мы называем базовые упражнения как «10 уровней», и достигнув 10 уровня, вы станете сильнейшим настолько, насколько это возможно для человека в этих движениях. По этой причине, последняя ступень именуется «уровнем мастера». Вам станет понятнее, как это работает, если дополнительно ознакомитесь с книгой Тренировочная Зона (Издательство Питер).

                        Читать дальше →
                      • Теория инвестиций для начинающих, часть 3

                          Паулюс Поттер. Медвежья охота. 1649 г. Государственный музей, Амстердам.

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

                          • как оценить, насколько успешен портфельный управляющий (посчитать связь доходности портфеля с доходностью рынка);
                          • кто такая «альфа», и почему все её ищут (доход, превышающий обычную премию за систематический риск);
                          • какой из участвовавших в сравнении фондов российских акций показал лучший результат (личный портфель автора!);
                          • какой фокус позволил автору заработать «альфу» (ставка на конкретный систематический риск, который не видит наивная модель).
                          Читать дальше →
                        • «Матрица рисков» компании. Алгебраическое исследование



                            Мне доводилось принимать участие в упражнениях с Матрицей рисков компании.
                            Действие происходило в три этапа. Первый: мальчики и девочки анкетировали вопросами типа «перестал ли ты пить коньяк по утрам», на которые надо отвечать только «да» или «нет».
                            На втором этапе показывалась «научно-обоснованная» матрица рисков.
                            На перманентном третьем этапе все подразделения той компании пытались из года в год сдвинуться на более низкие позиции на матрице, но это удавалось только за счет личного обаяния. Те же, кто не смог сдвинуться становились крайними по любой неудаче бизнеса.
                            Читать дальше →
                          • Теория инвестиций для начинающих, часть 2

                              Пауль де Вос. Бык, поверженный собаками. 1638–1640 гг. Музей Прадо, Мадрид.

                              В предыдущей части мы выяснили, как сформулировать на языке математики задачу поиска оптимального портфеля. В этой части вы узнаете:

                              • как составить оптимальный с точки зрения риска и доходности портфель, не углубляясь в суровую математику (посмотреть на рыночную капитализацию активов);
                              • как заработать что-то сверх безрисковой процентной ставки (взять на себя риск и на дистанции заработать премию за этот риск);
                              • любой ли риск вознаграждается премией (нет, только систематический);
                              • от чего зависит ожидаемая будущая доходность отдельной акции (главным образом, от ковариации со всем рынком);
                              • сколько зарабатывали инвесторы в рынок акций США (порядка 7–9% в год сверх безрисковой ставки);
                              • почему так много (возможно, люди не полностью рациональны и преувеличивают рискованность акций);
                              • можно ли предсказать будущую доходность рынка акций (скорее всего, нет);
                              • как осадить трейдера на коктейльной вечеринке (спросить, какой у него Шарп).
                              Читать дальше →
                            • ZFS: архитектура, особенности и отличия от других файловых систем

                                Я, Георгий Меликов, являюсь контрибьютором проектов OpenZFS и ZFS on Linux. Также я занимаюсь разработкой IaaS в команде облачной платформы Mail.ru Cloud Solutions. Хотя в продакшене нашего подразделения мы и не используем ZFS, но хозяева подкаста SDCast пригласили меня рассказать именно о нём. Из выпуска и родилась эта статья, а вот тут можно послушать аудиоверсию.

                                Итак, сегодня я рассказываю про ZFS. Как устроена файловая система ZFS, из каких компонентов она состоит и как работает, а также про новые фичи, которые появились или скоро появятся в последних релизах.

                                Читать далее