• «Сгоревшие» сотрудники: есть ли выход?

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

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

      Что же делать? Как работать с Игнатом? Добро пожаловать под кат!


      Читать дальше →
    • Под капотом у React. Пишем свою реализацию с нуля

      


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

      image
      Читать дальше →
      • +20
      • 10.1k
      • 7
    • Как общаются машины — протокол MQTT


        В предыдущей статье мы разбирали протокол Modbus, являющийся стандартом де-факто в промышленности для M2M-взаимодействия. Разработанный в далеком 1979 году, он имеет ряд существенных недостатков, которые решает MQTT.

        Протокол MQTT достаточно молод (стандартизирован только в 2016 году), но уже успел получить широкое распространение в промышленности и IoT. Он был специально разработан максимально компактным, для нестабильных интернет-каналов и маломощных устройств, и позволяет гарантированно доставлять сообщения в случае потери пакетов и обрывов связи.

        Главные особенности протокола MQTT:

        • Компактный и легковесный — минимальные накладные расходы на пересылку данных, для экономии трафика.
        • Устойчивость к потерям — гарантированная доставка в условиях нестабильных сетевых подключений.
        • Асинхронный — позволяет обслуживать большое количество устройств, и не зависит от сетевых задержек.
        • Поддержка QoS — возможность управлять приоритетом сообщений и гарантировать доставку сообщения адресату.
        • Динамическая конфигурация — не требует предварительно согласования полей и форматов данных, может конфигурироваться «на лету».
        • Работает за NAT — клиенты могут находиться за NAT, только сервер (брокер) должен иметь реальный IP. Позволяет обойтись без VPN и пробрасывания портов.
        • Удобная адресация — поля данных имеют текстовые названия, понятные для человека. Не нужно запоминать цифровые адреса и битовые смещения.
        Читать дальше →
      • Как мы учились эксплуатировать Java в Docker

          Под капотом hh.ru — большое количество Java-сервисов, запущенных в докер-контейнерах. За время их эксплуатации мы столкнулись с большим количеством нетривиальных проблем. Во многих случаях чтобы докопаться до решения приходилось долго гуглить, читать исходники OpenJDK и даже профилировать сервисы на продакшене. В этой статье я постараюсь передать квинтэссенцию полученного в процессе знания.


          Читать дальше →
        • Советские мечты о будущем



            Помните очаровательного котика, которые чихал в заставке советского мультфильма? Мы помним, и нашли его — вместе с ворохом другой рисованной фантастики. В детстве она пугала и обескураживала, поскольку поднимала серьезные, взрослые темы. Настала пора пересмотреть старые мультфильмы, чтобы узнать, о каком будущем мечтали в той стране.
            Читать дальше →
          • Пистолеты из 3D-принтера вернулись, и теперь их уже не остановить

            • Translation

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



            В США снова растёт сеть сторонников распечатывания оружия на 3D-принтере – но сейчас уже всё по-другому. В отличие от предыдущих попыток популяризации оружия, которое можно печатать на 3D-принтере, данная операция полностью децентрализована. У неё нет никакой штаб-квартиры, торговых марок и лидера. И стоящие за ней люди считают, что такое положение вещей гарантирует неспособность правительств остановить их.

            «Если они захотят прийти за мной, сначала им нужно будет меня найти, — говорит Тролль Иван [Ivan the Troll], член группы. – Я один из многих единомышленников, занимающихся этой работой».
            Читать дальше →
          • Подборка датасетов для машинного обучения

              Привет, читатель!

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

              Меньше слов, больше данных.

              image

              Подборка датасетов для машинного обучения:


              Читать дальше →
              • +62
              • 17.3k
              • 4
            • Художественные детские книги про социнжиниринг



                Привет! Я три года назад читал в детском лагере лекцию про социнжиниринг, троллил детей и немного бесил вожатых. В итоге испытуемые спросили, что почитать. Мой дежурный ответ про две книги Митника и две книги Чалдини, вроде, убедителен, но только для примерно восьмиклассника и старше. Если младше — то надо сильно чесать голову.

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

                  Для удаленной работы есть миллион причин. Торчать по 8-9 часов в офисе вовсе не так здорово, как это показано в сериалах. В один прекрасный день, летом 2018-го, я просто решила, что мне нужно больше личного пространства и собралась увольняться, тем более на моей должности в то время я доросла до максимума и дальнейших перспектив не предвиделось.

                  image

                  Моя работа была чем-то средним между саппортом, тестировщиком, оператором SQL и Excel-ниндзя, а хотелось углубиться в тестирование.

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

                  Я решила сосредоточиться на ресурсах, предлагающих постоянную удаленную работу в компаниях, с которыми можно было связаться напрямую. Идея была заманчива, так как очень импонировало работать на иностранного работодателя без цепочки менеджеров-начальников.
                  Наиболее полезными с точки зрения количества и качества вакансий, а также удобства пользования, выглядели следующие сайты:
                  Читать дальше →
                • Хакаем CAN шину авто. Виртуальная панель приборов



                    В первой статье «Хакаем CAN шину авто для голосового управления» я подключался непосредственно к CAN шине Comfort в двери своего авто и исследовал пролетающий траффик, это позволило определить команды управления стеклоподъемниками, центральным замком и др.

                    В этой статье я расскажу как собрать свою уникальную виртуальную или цифровую панель приборов и получить данные с любых датчиков в автомобилях группы VAG (Volkswagen, Audi, Seat, Skoda).

                    Мною был собран новый CAN сниффер и CAN шилд для Raspberry Pi на базе модуля MCP2515 TJA1050 Niren, полученные с их помощью данные я применил в разработке цифровой панели приборов с использованием 7″ дисплея для Raspberry Pi. Помимо простого отображения информации цифровая панель реагирует на кнопки подрулевого переключателя и другие события в машине.

                    В качестве фреймворка для рисования приборов отлично подошел Kivy для Python. Работает без Иксов и для вывода графики использует GL.

                    1. CAN сниффер из Arduino Uno
                    2. Подслушиваем запросы с помощью диагностической системы VAG-COM (VCDS)
                    3. Разработка панели приборов на основе Raspberry Pi и 7″ дисплея
                    4. Софт панели приборов на Python и Kivy (UI framework)
                    5. Видео работы цифровой панели приборов на базе Raspberry Pi

                    Под катом полная реализация проекта, будет интересно!
                    Читать дальше →
                  • Как сделать первые шаги в робототехнике?



                      Роботизация и автоматизация становятся всё востребованнее, и многим хотелось бы научиться создавать подобные системы и устройства. Но с чего начать, как освоить азы? Мы сделали для вас небольшую подборку русскоязычных и англоязычных YouTube-каналов с учебными материалами и методическими пособиями по робототехнике.
                      Читать дальше →
                      • +37
                      • 10.6k
                      • 6
                    • Простое объяснение алгоритмов поиска пути и A*

                      • Translation
                      image

                      Часть 1. Общий алгоритм поиска


                      Введение


                      Поиск пути — это одна из тех тем, которые обычно представляют самые большие сложности для разработчиков игр. Особенно плохо люди понимают алгоритм A*, и многим кажется, что это какая-то непостижимая магия.

                      Цель данной статьи — объяснить поиск пути в целом и A* в частности очень понятным и доступным образом, положив таким образом конец распространённому заблуждению о том, что эта тема сложна. При правильном объяснении всё достаточно просто.

                      Учтите, что в статье мы будем рассматривать поиск пути для игр; в отличие от более академических статей, мы опустим такие алгоритмы поиска, как поиск в глубину (Depth-First) или поиск в ширину (Breadth-First). Вместо этого мы постараемся как можно быстрее дойти от нуля до A*.
                      Читать дальше →
                    • Криптография в Java

                      Привет, Хабр! Представляю вашему вниманию перевод статьи "Java Cryptography" автора Jakob Jenkov.


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

                      Читать дальше →
                    • 7 Chrome-расширений для изучения английского



                        Я увлекаюсь изучением английского языка, а также являюсь активным пользователем Google Chrome. Поэтому решила собрать в одном материале расширения для этого браузера, которые использую или использовала в процессе обучения.

                        Эти сервисы позволяют улучшить навыки письма, восприятия на слух, произношение и словарный запас.
                        Читать дальше →
                      • 8 приемов работы с CSS: параллакс, «липкий» футер и другие



                          От переводчика: перевели для вас статью Брета Кэмерона о хитростях в работе с CSS. Многие моменты пригодятся не только новичкам, но и опытным разработчикам.

                          Эта статья о приемах работы в CSS, узнав о которых, я восклицал: «Агаааа!». Надеюсь, вы тоже сделаете пару открытий.

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

                          Я покажу несколько приемов и расскажу о принципах их использования в CSS. Сама по себе статья не о сложностях. Наоборот, она призвана сделать вашу работу более комфортной.
                          Читать дальше →
                        • Как подступиться к fullstack-разработке сегодня, если ты проспал десять лет



                          Привет, Хабр! Несколько месяцев назад у меня остро встал вопрос смены профиля деятельности и я обнаружил, что для претендента на вакансию web-разработчика сейчас недостаточно навыков десятилетней давности (какая неожиданность!). Пришлось срочно актуализировать свои знания. Заодно я решил составить шпаргалку с описанием большинства современных технологий, чтобы в случае чего кидать жаждущим новых знаний линк на эту статью, да и самому не забывать.
                          Читать дальше →
                        • Где обучать детей программированию?

                            Ежегодно HeadHunter проводит “Школу программистов”, где обучает студентов и молодых специалистов всем хитростям разработки, а также работе в команде. Помимо языков программирования ребята изучают основы дизайна, тонкости командной разработки.

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

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

                            image
                            Читать дальше →
                          • HomoLudens: С днем рождения, Сид Мейер‎ (+ все статьи на русском)

                              24 февраля — день рождения легендарного разработчика игр. Ему стукнуло 65 лет.
                              Поздравляем!

                              image
                              «В течение всего долгого пути вы просто обречены на ошибки, и это хорошо», – говорит он. – «Нужно ошибаться и каждый раз извлекать из этого новый опыт. Нужно совершить несколько ошибок. Наверное, в этом весь секрет. У меня есть жёсткий диск, забитый прототипами, так и не прошедшими в стадию производства. Не всякая идея хороша, но вы должны учиться на своих ошибках больше, чем на успешных результатах. Так что будьте готовы к провалу, будьте готовы пробовать что-то новое и просто продолжайте делать игры. Мы падаем каждый день, но каждый раз вновь поднимаемся».
                              Спасибо, Сид, за счастливое детство, когда с дискеты в оперативку 286-го загружали первую циву (не было HDD) и гоняли зулусов вместо написания программ на LOGO.

                              Исчерпывающая биография Сида есть на Википедии. Я же подсуетился и собрал в одном месте все материалы про Сида Мейера на русском.
                              Читать дальше →
                              • +36
                              • 10.8k
                              • 2
                            • Google Drive как хранилище для веб-приложения

                              • Tutorial

                              Предисловие


                              Мое веб-приложение хранит данные в localStorage. Это было удобно, пока не захотелось, чтобы пользователь, заходя на сайт с разных устройств, видел одно и то же. То есть, понадобилось удаленное хранилище.

                              Но приложение «хостится» на GitHub Pages и не имеет серверной части. Я решил не делать сервер, а данные хранить у третьей стороны. Это дает существенные преимущества:

                              1. Не нужно платить за сервер, не болит голова о его стабильности и доступности.
                              2. Меньше кода, меньше ошибок.
                              3. Пользователю не нужно регистрироваться в моем приложении (это многих раздражает).
                              4. Приватность выше, и пользователь знает, что его данные хранятся в месте, которому он, скорее всего, доверяет больше, чем мне.

                              Сначала выбор пал на remoteStorage.js. Они предлагают открытый протокол обмена данными, достаточно приятное API, возможность интеграции с Google Drive и Dropbox, а также свои сервера. Но этот путь оказался тупиковым (почему — отдельная история).

                              В итоге решил использовать Google Drive напрямую, и Google API Client Library (далее GAPI) как библиотеку для доступа к нему.

                              К сожалению, документация Google разочаровывает, а библиотека GAPI выглядит недоработанной, к тому же имеет несколько версий, и не всегда понятно, о какой из них идет речь. Поэтому решение моих задач пришлось собирать по кусочкам из документации, вопросов и ответов на StackOverflow и случайных постов в интернете.

                              Надеюсь, данная статья сэкономит вам время, если вы решите использовать Google Drive в вашем приложении.
                              Читать дальше →
                            • Domain-driven design: рецепт для прагматика


                                Почему к DDD обычно подходят не с той стороны? А с какой стороны надо? Какое отношение ко всему этому имеют жирафы и утконосы?

                                Специально для Хабра — текстовая расшифровка доклада «Domain-driven design: рецепт для прагматика». Доклад был сделан на .NET-конференции DotNext, но может пригодиться не только дотнетчикам, а всем интересующимся DDD (мы верим, вы осилите пару примеров кода на C#). Видеозапись доклада также прилагается.
                                Читать дальше →