• Сказ о том, как я автоматизировал квартиру с помощью Node-RED. Часть I

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


      Читать дальше →
    • Ускорение поиска в Have I Been Pwned до 49 микросекунд (С++)

      • Перевод


      Я давно знал о сайте Have I Been Pwned (HIBP). Правда, до недавнего времени никогда там не был. Мне всегда хватало двух паролей. Один из них неоднократно использовался для мусорной почты и пары аккаунтов на странных сайтах. Но пришлось от него отказаться, потому что почту взломали. И, честно говоря, я благодарен хакеру, потому что это событие заставило меня пересмотреть свои пароли — то, как я их использую и храню.

      Конечно, я поменял пароли на всех аккаунтах, где стоял скомпрометированный пароль. Затем мне стало интересно, попал ли утёкший пароль в базу HIBP. Я не хотел вводить пароль на сайте, поэтому скачал базу данных (pwned-passwords-sha1-ordered-by-count-v5). База весьма впечатляет. Это текстовый файл на 22,8 ГБ с набором хэшей SHA-1, по одному в каждой строке со счётчиком, сколько раз пароль с данным хэшем встречался в утечках. Я вычислил SHA-1 своего взломанного пароля и попытался найти его.
      Читать дальше →
    • У меня нулевая текучка

        Однажды на заводе, где я работал ИТ-директором, готовили отчетность к какому-то очередному мероприятию. Надо было рассчитать и предоставить показатели по выданному перечню, среди них затесалась текучесть кадров. И тут оказалось, что у меня она равна нулю.

        Из руководителей я был такой один, тем самым привлек к себе внимание. Ну и сам удивился – оказывается, когда от тебя не уходят сотрудники, это странно и необычно.

        В сумме я работал руководителем лет 7-10 (точно не знаю, какие периоды сюда включать), но нулевая текучка сохранилась. Никто никогда от меня не уходил, никого никогда я не выгонял. Только набирал.

        Нулевая текучка, как показатель, никогда не была моей самоцелью. Но я стараюсь делать так, чтобы вложенные в людей усилия не пропадали даром. Сейчас расскажу примерно, как я руковожу так, что люди не уходят – вдруг что полезное для себя найдете. На полноту раскрытия темы не претендую, т.к. основываюсь только на личном опыте. Вполне возможно, что я всё делаю неправильно.
        Читать дальше →
      • Необходимый минимум по психологии для руководителя

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

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



          В этом поможет Андрей Макаров — директор по счастью в Neti. За 17 лет в IT он вырос от специалиста службы поддержки до совладельца компании Neti. Последние 8 лет активно изучает менеджмент, методы вовлечения сотрудников и психологию. На основе «экспериментов» над окружающими и отдельного обучения на психолога собрал упрощенную модель системы восприятия человека. Если ее использовать, можно научиться лучше понимать заказчиков, руководителей, коллег и себя самого.

          Через реальные кейсы, Андрей покажет, как эта модель помогает добиваться от других и от себя самого того, что вам хочется. Под катом от первого лица: как ужиться с тараканами в головах заказчиков и сотрудников, как соображать быстрее, не терять энергию и эффективность, как распознать «сложных» людей, как создавать комфортные отношения с людьми.
          Читать дальше →
          • +38
          • 18,8k
          • 4
        • На моей визитке работает Linux

          • Перевод
          Перевод статьи из блога инженера Джорджа Хиллиарда


          Кликабельно

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

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

          Я подумал: «Эти процессоры настолько дешёвые, что их практически можно раздавать даром». И через некоторое время ко мне пришла идея сделать голую карточку для Linux в форм-факторе визитной карточки.
          Читать дальше →
        • Рекомендации по дизайну UX мобильных игр

          • Перевод
          image

          Уже более 10 лет я работаю гейм-дизайнером в очень успешных компаниях (старшим гейм-дизайнером в Matific, ведущим гейм-дизайнером в TabTale, владельцем Lookandfeel Games), и всё это время обладал привилегией и возможностью использования данных, полученных от сотен миллионов пользователей со всего света. Настало время поделиться моими знаниями с миром.

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

          «Жаль вас разочаровывать, но ваша идея не сработала».


          Разочаровывать? С какой стати! Спасибо за то, что дали мне возможность переосмыслить свой дизайн, чтобы я не заблуждался в его правильности. Как иначе бы я мог совершенствоваться? Как иначе достигнуть мастерства? Благодаря анализу данных хорошие идеи дублируются и применяются в моих следующих проектах, а «пробные шары» в соответствии с ним улучшаются или отбрасываются. Вот «библи»я моих рекомендаций с уроками, почерпнутыми из 250 с лишним игр. Данные подтвердили, что они повышают монетизацию, удерживание игроков (retention), игровой процесс и вовлечённость (engagement).
          Читать дальше →
          • +17
          • 6,9k
          • 5
        • Как быть опубликованным в Google Play в 2019

          Вступление


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

          Читать дальше →
        • Рисуем коммитами на Гитхабе

            [Пятничное]


            Всегда хотел сделать свой график активности пользовательского профиля на Гитхабе. Например, выкладывать коммиты каждый день так, чтобы через год этот график превратился в какую-нибудь картинку, пусть и с ограничением по размерам в 52×7 квадратиков-пикселей (52 недели в году × 7 дней в неделе).


            Проблема была в том, что даже при полной автоматизации процесса всё равно ждать целый год. А тут я почитал документацию Гитхаба и понял, что задача решается проще и более того — за один раз. А значит, надо делать не откладывая. Обычно названия проектам придумывать сложно, но тут оно пришло само. Кай рисовал льдинками, а Герда рисует коммитами!


            График коммитов на Гитхабе в виде картинки

            Как нарисовать свою картинку коммитами на GitHub
          • Включаем GPU acceleration у Photoshop под Wine

            Спешу поделиться радостью: вот и настали те времена, когда можно полностью отказаться от win в пользу linux. Последней преградой был Photoshop — единственная софтина, без которой некоторым девелоперам, например, фронтэнд-девелоперам, верстальщикам (и прочим стропальщикам), приходилось туговато. Photoshop-то уже издавна запустили под wine, но оставалась одна проблемка: у меня никак не хотела включаться аппаратная поддержка GPU. А без нее и тормоза дикие на серьезных макетах, и отсутствие многих плюшек (фильтры, трансформации и прочая магия). После долгих неудачных экспериментов, наконец, удалось заставить Photoshop увидеть GPU и работать с ним «на полную катушку».
            Читать дальше →
            • +19
            • 10,2k
            • 9
          • Основа геймплея игры на C++ для Unreal Engine

            • Перевод
            image

            Основа геймплея для Unreal Engine 4 предоставляет разработчику мощный набор классов для создания игры. Ваш проект может быть шутером, симулятором фермы, глубокой RPG — это неважно, основа очень универсальна, делает за вас часть тяжёлой работы и задаёт некоторые стандарты. Она довольно сильно интегрирована в движок, поэтому рекомендую вам придерживаться этих классов, а не пытаться изобретать собственную основу игры, как это часто бывает в движках наподобие Unity3D. Понимание этой основы очень важно для успешной и эффективной работы над проектами.

            Для кого эта статья?


            Для всех, кого интересует создание игр в UE4, а конкретно на C++, и кто хочет больше узнать о основе геймплея Unreal. В этом посте рассматриваются базовые классы, которые вы будете использовать в основе геймплея, и объясняется их применение, процесс создания их экземпляров движком и способ получения доступа к этим классам из других частей кода игры. Бо́льшая часть информации справедлива также и для блюпринтов.
            Читать дальше →
            • +23
            • 30,4k
            • 3
          • Доделал игру, работающую на видеокарте

              Наконец-то я доделал игру, которая работает на видеокарте. Она несколько месяцев повисела в раннем доступе на стиме, и теперь я её окончательно выпустил. Основная фишка игры в том, что она представляет собой физическую симуляцию, которая выполняется на графическом процессоре. Основной код игры — это огромный compute shader, 6 тысяч строк на HLSL. Десятки тысяч взаимодействующих частиц обрабатываются параллельно, и выходит довольно быстро. Всё в игре сделано из этих частиц. Вот несколько гифок о том, как это работает:

              image
              Читать дальше →
            • Объяснение нейронных машин Тьюринга

              • Перевод
              Я обнаружил, что подавляющее большинство онлайновой информации об исследованиях в области искусственного интеллекта делится на две категории: первая рассказывает о достижениях непрофессиональной аудитории, а вторая — другим исследователям. Я не нашёл хорошего ресурса для людей с техническим образованием, которые не знакомы с более продвинутыми концепциями и ищут информацию для восполнения пробелов. Это моя попытка заполнить данную пустоту, предоставив доступные, но в то же время (относительно) подробные объяснения. Здесь я объясню научную статью Грейвса, Уэйна и Данихейки (2014) о нейронных машинах Тьюринга (NTM).

              Изначально я не собирался рассказывать об этой статье, но я никак не мог понять другую интересную статью, о которой собирался рассказать. В ней как раз шла речь о модификации NTM, так что я решил убедиться, что полностью понимаю NTM, прежде чем двигаться дальше. Убедившись в этом, у меня появилось ощущение, что та вторая статья не слишком подходит для объяснения, а вот оригинальная работа по NTM очень хорошо написана, и я настоятельно рекомендую её прочитать.
              Читать дальше →
              • +29
              • 23,7k
              • 5
            • Создание игры на Unreal Engine 4 за 150 часов (видео + исходники)

                Приветствую, Хабр! Хотел бы познакомить вас с относительно небольшим проектом, который я сделал c нуля примерно за 150 часов (50 заходов ~3 часа каждый) на Unreal Engine 4. Проект я делал в прямом эфире только на стримах раз в неделю (в общей сложности ушел год), попутно отвечая на вопросы пользователей.

                Сам проект не предназначался как коммерческий. Целью я ставил на практике показать всю сложность разработки игр, а именно такие проблемы, как:

                • Планирование и прототипирование проекта
                • Продумывание и реализация архитектуры проекта и отдельных его компонентов
                • Реализация интерфейса пользователя
                • Отладка и исправление ошибок
                • Работа с ассетами и графикой

                image

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

                Если вам интересны подробности проекта, записи стримов, исходники и прочее, читайте далее.
                Читать дальше →
              • Я написал самую быструю хеш-таблицу

                • Перевод

                image


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


                Я использовал хеширование по алгоритму Robin Hood с ограничением максимального количества наборов. Если элемент должен быть на расстоянии больше Х позиций от своей идеальной позиции, то увеличиваем таблицу и надеемся, что в этом случае каждый элемент сможет быть ближе к своей желаемой позиции. Похоже, такой подход действительно хорошо работает. Величина Х может быть относительно невелика, что позволяет реализовать некоторые оптимизации внутреннего цикла поиска по хеш-таблице.


                Если вы хотите только попробовать её в работе, то можете скачать отсюда. Либо пролистайте вниз до раздела «Исходный код и использование». Хотите подробностей — читайте дальше.

                Читать дальше →
              • Графический стек Linux

                  (оригинал — Jasper St. Pierre, разработчик GNOME Shell, взято отсюда)

                  Это обзорная статья о составных частях графического стека Linux и том, как они уживаются вместе. Изначально я написал её для себя после разговоров об этом стеке с Оуэном Тейлором, Рэем Строудом и Эдэмом Джексоном (Owen Taylor — мэйнтейнер Gnome Shell; Ray Strode — мэйнтейнер большого количества десктопных пакетов сообщества RedHat; Adam Jackson — разработчик графического стека Gnome Shell и интеграции с XOrg; прим. переводчика)

                  Я постоянно дёргал их, снова и снова расспрашивал о всяких мелочах, а потом эти мелочи благополучно забывал. В конце концов, я задал им вопрос — а нет ли какого-нибудь обзорного документа, уткнувшись в который я бы избавил ребят от своего назойливого внимания? Не получив утвердительного ответа я решил написать эту статью, которая по завершению была вычитана Эдэмом Джексоном и Дэвидом Эйрли. Они оба работают над этим стеком.
                  Читать дальше →
                • Как «пробить» человека в Интернет: используем операторы Google и логику

                  • Tutorial

                  В очередной статье нашего цикла публикаций, посвященного интернет-разведке, рассмотрим, как операторы продвинутого поиска Google (advanced search operators) позволяют быстро находить необходимую информацию о конкретном человеке.


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


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

                  • Tutorial
                  Речь пойдёт о программах и библиотеках для UNIX-подобных систем, распространяемых в виде исходного кода (в том числе в виде тарболлов), написанных обычно на C и C++ (хотя этот же порядок работы может применяться к софту на любом языке). Многие вещи в этой статье написаны применительно конкретно к GNU/Linux, хотя многое из статьи может быть обобщено и на другие UNIX-подобные ОС.

                  Под словом «пакет» я понимаю в этой статье пакет с исходными текстами, причём не пакет конкретного дистрибутива GNU/Linux, а просто пакет, исходящий от оригинальных авторов софта (UPD от 2017-02-09: кроме тех случаев, где из контекста ясно, что слово «пакет» употреблено в другом смысле).

                  В этой статье я разберу следующие вопросы:

                  • Вот скачал программу или библиотеку. Как её собрать и установить? Как воспользоваться библиотекой?
                  • Что такое префикс (prefix) установки? В чём разница между сборкой и установкой? Куда обычно устанавливают программы?

                  Я разберу только совсем базовые вещи. Те, которые типичные участники сообщества свободного ПО, программирующие на C и C++ под UNIX-подобные системы, обычно уже знают. Как создавать тарболлы (на примере «голого» make) и как устанавливать чужие тарболлы. Advanced советы по созданию «хороших» пакетов я не дам. «Продвинутые» вещи читайте в документации систем сборки, в замечательной статье «Upstream guide» от Debian (в её конце есть ещё куча ссылок о создании «хороших» пакетов). Многое в этой статье можно было сделать по-другому, моя цель: дать хотя бы один способ, не пытаться объять необъятное.
                  Читать дальше →
                • Как приручить дракона. Краткий пример на clang-c

                    Однажды, сидя вечером перед компьютером и предаваясь меланхолии и мыслям о бренности всего сущего, я задумчиво набрал в поиске одного крупного сайта по поиску работы аббревиатуру «LLVM», не надеясь, впрочем, увидеть там что-то особенное, и стал просматривать небогатый, прямо скажем, улов.

                    Как и следовало ожидать, почти ничего особенного не нашлось, однако одно объявление меня заинтересовало. В нём были такие строки:

                    «Кого мы возьмем «не глядя» или уровень выполняемых задач:
                    Вы скачали любой open source проект, собираемый при помощи gcc (объем исходного кода более 10 мегабайт) и для самого большого файла cpp смогли построить AST дерево при помощи clang с –fsyntax-only;
                    Вы скачали любой open source проект, собираемый при помощи Visual C++ (объем исходного кода более 10 мегабайт) и для самого большого файла cpp смогли построить AST дерево при помощи clang с –fsyntax-only;
                    Вы смогли написать утилиту, которая выделит все места деклараций и использования локальных переменных, а также все функции, не определенные в данном файле
                    ».

                    Ну что же, подумал я, какое-никакое, а развлечение на вечер.


                    Читать дальше →
                    • +45
                    • 11,6k
                    • 9
                  • Что в имени тебе моем: как качественно «пробить» человека в сети Интернет?

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

                      Хочу рассказать вам историю, как решение конкретных прикладных задач привело меня к использованию реестра Windows в качестве платформы для хранения и исполнения кода.
                      Читать дальше →