• Тридцать топовых интервью за последнее время: разработка, дизайн, научпоп и лайфстайл



      На новогодних праздниках ваша дорогая редакция совмещала приятное с полезным и читала интервью, которые выходили на Хабре за последние годы. Отобрали 30 штук, а теперь делимся с вами — это прям самый сок и вообще крутота! Разговоры на любой вкус: об игровой разработке, редких языках программирования и популярном Python, электротачках и устройстве мозга. О том, зачем Левелорд переехал в Москву, как ослепший студент научился программировать и что изменилось за 25 лет с тех пор, как Торвальдс начал работать над Linux. И еще о многом другом.
      Читать дальше →
      • +48
      • 44k
      • 6
    • Чем полезен мономорфизм?

      • Translation


      Выступления и посты в блогах о производительности JavaScript часто обращают внимание на важность мономорфного кода, однако обычно не дается внятного никакого объяснения, что такое мономорфизм/полиморфизм и почему это имеет значение. Даже мои собственные выступления зачастую сводятся к дихотомии в стиле Невероятного Халка: «ОДИН ТИП ХОРОШО! ДВА ТИП ПЛОХО!». Неудивительно, что когда люди обращаются ко мне за советом по производительности, чаще всего они просят объяснить, что на самом деле такое мономорфизм, откуда берется полиморфизм и что в нем плохого.

      Ситуацию осложняет еще и то, что само слово «полиморфизм» имеет множество значений. В классическом объектно-ориентированном программировании полиморфизм связан с созданием дочерних классов, в которых можно переопределить поведение базового класса. Программисты, работающие с Haskell, вместо этого подумают о параметрическом полиморфизме. Однако полиморфизм, о котором предупреждают в докладах о производительности JavaScript – это полиморфизм вызовов функции.

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

      Я также попробовал новый способ объяснять вещи – изображая взаимодействие составных частей виртуальной машины в виде коротких комиксов. Кроме того, данная статья не покрывает некоторые детали, которые я посчитал незначительными, излишними или не связанными напрямую.
      Читать дальше →
    • Линейная алгебра для разработчиков игр

      • Translation
      • Tutorial
      Эта статья является переводом цикла из четырёх статей «Linear algebra for game developers», написанных David Rosen и посвящённых линейной алгебре и её применению в разработке игр. С оригинальными статьями можно ознакомиться тут: часть 1, часть 2, часть 3 и часть 4. Я не стал публиковать переводы отдельными топиками, а объединил все статьи в одну. Думаю, что так будет удобнее воспринимать материал и работать с ним. Итак приступим.
      Читать дальше →
    • Домашняя электросеть

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

        Это не столько инструкция, сколько объяснение, что должно быть сделано, так как каждое подключение по сути индивидуально. В любом случае необходима консультация с учетом реальной ситуации.
        Читать дальше →
      • [в закладки] PDF-версия руководства по Node.js и новое руководство по JavaScript

          Недавно мы опубликовали серию материалов, представляющую собой перевод руководства по Node.js. В первой публикации мы интересовались мнением аудитории о целесообразности перевода этого руководства и говорили, что планируется подготовить его PDF-версию.

          image


          PDF-версия документа состоит более чем из 120 страниц, содержит оглавление, немного картинок и всё необходимое форматирование. Просто закидывайте файлик в читалку и готово. Или в папочку с литературой. Или… решать вам.

          Скачать PDF-версию [ 1.8 Мб ]



          Сегодня мы хотим представить вашему вниманию новое руководство того же автора, посвящённое JavaScript.

          Вот краткий перечень вопросов, которые оно раскрывает:
          • Общая характеристика языка и его стандартизация
          • Особенности стандартов ES6, ES7, ES8, ES9
          • Оформление кода, руководства по стилю
          • Лексическая структура языка
          • Переменные
          • Типы данных
          • Выражения
          • Логические выражения
          • Прототипное наследование
          • Классы
          • Исключения
          • Функции и замыкания
          • Массивы
          • Циклы
          • События
          • Асинхронное программирование
          • Таймеры
          • Строгий режим
          • Математические вычисления
          • Модули

          Мы планируем это руководство перевести, но, прежде чем приняться за работу, хотели бы предложить вам поучаствовать в небольшом опросе
          Читать дальше →
        • Как создать игровой ИИ: гайд для начинающих

          • Translation


          Наткнулся на интересный материал об искусственном интеллекте в играх. С объяснением базовых вещей про ИИ на простых примерах, а еще внутри много полезных инструментов и методов для его удобной разработки и проектирования. Как, где и когда их использовать — тоже есть.

          Большинство примеров написаны в псевдокоде, поэтому глубокие знания программирования не потребуются. Под катом 35 листов текста с картинками и гифками, так что приготовьтесь.

          UPD. Извиняюсь, но собственный перевод этой статьи на Хабре уже делал PatientZero. Прочитать его вариант можно здесь, но почему-то статья прошла мимо меня (поиском пользовался, но что-то пошло не так). А так как пишу в блог, посвященный геймдеву, решил оставить свой вариант перевода для подписчиков (некоторые моменты у меня оформлены по-другому, некоторые — намеренно пропущены по совету разработчиков).
          Читать дальше →
        • Системный подход к скорости: онлайн-измерения на фронтенде

            Команда скорости Яндекса вручную оптимизирует поисковую выдачу. Делать это вслепую трудно и зачастую просто бесполезно. Поэтому в компании построили инфраструктуру для сбора метрик, тестирования скорости и анализа полученных данных.

            О том, какие метрики стоит использовать и как все оптимизировать, знает разработчик интерфейсов Яндекса Андрей Прокопюк (Andre_487).



            В основе материала — выступление Андрея на конференции HolyJS. Под катом — и видеозапись, и текстовая версия доклада.
            Читать дальше →
            • +29
            • 4.8k
            • 4
          • Создание игры на ваших глазах — часть 7: 2D-анимации в Unity («как во флэше»)

            • Tutorial
            В этой статье поговорим о 2D анимациях в Unity. Я расскажу о своем опыте работы с родными анимациями в юнити, о том, насколько тайм-лайны похожи на флэшевские, об управлении анимациями, event'ах, вложенности, и о том, как художник справляется с анимированием.

            Для начала, немного теории.

            В Unity есть две сущности:

            1. Анимация (то, что отображается в окно «Animation»)
            2. Mechanim дерево анимаций (то, что отображается в окне «Animator»).



            Ниже я немного расскажу, что это такое и как нам может приходиться (или не пригодиться).
            Читать дальше →
          • Для чего хакерам Микротик и как я спрятал 100 тыс. RouterOS от ботнета

              RouterOS очень мощный инструмент в руках профессионалов и ответственных специалистов. Но в руках новичков или тех, кто делает всё на «и так сойдёт» Mikrotik начинает жить своей жизнью и превращается в ноду ботнета.

              Ещё в мае 2018 я писал статью с рекомендациями как защитить свой Микротик.

              Как ни странно, но в сети до сих пор тысячи «открытых» роутеров Mikrotik и армия ботнета пополняется.

              Я в свободное от работы и отдыха время искал уязвимые устройства по всей сети и делал настройки в соответствии со своими рекомендациями, то есть добавлял правила фаервола, которые закрывали доступ к роутеру не из локальной сети. В комментариях писал информацию об уязвимости и оставлял адрес телеграм-канала @router_os, где можно было мне задать интересующие вопросы (у нормального админа они должны были появиться).



              С мая по сегодняшний день я «вырвал» из лап ботнета более 100 тысяч устройств Mikrotik.

              Учитывая то, что я не могу выступить на MUM 2018 в Москве, то свой доклад я решил опубликовать на habr.com
              Читать дальше →
            • Пять простых шагов для понимания JSON Web Tokens (JWT)

              jwt


              Представляю вам мой довольно вольный перевод статьи 5 Easy Steps to Understanding JSON Web Tokens (JWT). В этой статье будет рассказано о том, что из себя представляют JSON Web Tokens (JWT) и с чем их едят. То есть какую роль они играют в проверке подлинности пользователя и обеспечении безопасности данных приложения.

              Читать дальше →
            • Как мы замахнулись на мобильный fast paced шутер: технологии и подходы



                Год назад у нас в компании был один проект — мобильный шутер War Robots с относительно медленными, но красочными и напряженными боями. Игра продолжает развиваться, у нее десятки миллионов установок и игроков по всему миру, постоянно выходят апдейты. В какой-то момент мы захотели сделать динамичный шутер на Unity со скоростями, сравнимыми с Overwatch, CS:GO или Quake. Но реализовать задуманное для мобильных платформ (в первую очередь iOS и Android) на основе War Robots при текущих архитектуре и подходах было практически нереально.

                Мы понимали, как это сделать в теории — есть много статей, презентаций на YouTube, детально рассказывающих о том, как написать шутер, как работать с сетью, какие возникают проблемы и как их решать. Здесь нет Rocket Science, все эти подходы придумали еще 30 лет назад и за это время они особо не поменялись. НО: у нас не было практики.

                Забегая вперед, скажу — нам удалось реализовать задуманное. Мы создали для мобильных платформ динамичный быстрый шутер, который сейчас находится в бета-тестировании и активно дорабатывается. И мне очень хотелось бы всем этим поделиться. Это первая, обзорная статья с перечислением и кратким описанием практически всего того, что мы используем (прошу не путать с другим нашим проектом в разработке, технологии и подходы в котором похожие, но отличаются в деталях).
                Читать дальше →
              • Oh, My Code — новая передача про управление в IT на канале Технострим


                  Сегодня мы запускаем на канале Технострим серию интервью с техническими руководителями IT-компаний, ведущий программы — технический директор медиапроектов Павел Щербинин. Первым у нас в гостях побывал Иван Ремень — руководитель группы разработки в Почте Mail.Ru.


                  Посмотреть будет интересно тем, кто сам руководит командой разработки, чтобы сравнить подход. Тем, кто является IT-специалистом, может быть полезно узнать, как отбирают кандидатов технические руководители.

                  Читать дальше →
                • Unity: системы частиц

                  • Translation
                  • Tutorial
                  image

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

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

                  В этом туториале вы научитесь следующему:

                  • Как добавлять в Unity новые системы частиц.
                  • Узнаете, какие модули систем частиц используются чаще всего, и научитесь ими пользоваться.

                  Этот туториал состоит из двух основных частей: в первой мы создадим пламя факела, во второй — эффект взрыва бомбы.
                  Читать дальше →
                  • +23
                  • 38.5k
                  • 4
                • Настройка BGP для обхода блокировок, или «Как я перестал бояться и полюбил РКН»

                  Ну ладно, про «полюбил» — это преувеличение. Скорее «смог сосуществовать с».


                  Как вы все знаете, с 16 апреля 2018 года Роскомнадзор крайне широкими мазками блокирует доступ к ресурсам в сети, добавляя в "Единый реестр доменных имен, указателей страниц сайтов в сети «Интернет» и сетевых адресов, позволяющих идентифицировать сайты в сети «Интернет», содержащие информацию, распространение которой в Российской Федерации запрещено" (по тексту — просто реестр) по /10 иногда. В результате граждане Российской Федерации и бизнес страдают, потеряв доступ к необходимым им совершенно легальным ресурсам.


                  После того, как в комментариях к одной из статей на Хабре я сказал, что готов помочь пострадавшим с настройкой схемы обхода, ко мне обратились несколько человек с просьбой о такой помощи. Когда у них всё заработало, один из них порекомендовал описать методику в статье. Поразмыслив, решил нарушить свое молчание на сайте и попробовать в кои-то веки написать что-то промежуточное между проектом и постом в Facebook, т.е. хабрапост. Результат — перед вами.

                  Читать дальше →
                • Принцип подстановки Барбары Лисков

                    Привет, хабрачеловеки!

                    Захотелось вот поделиться сокровенным знанием по этой теме. К тому же материалов по этому, достаточно важному принципу проектирования классов и их наследования, в Рунете как-то негусто. Имеются формулировки вида:

                    «Пусть q(x) является свойством верным относительно объектов x некоторого типа T. Тогда q(y) также должно быть верным для объектов y типа S, где S является подтипом типа T.» © Wikipedia

                    Но они выносят мой мозг меня совершенно не радуют.

                    Если хочется услышать объяснение этой хрени умной фразы — прошу под кат.
                    Читать дальше →
                  • 21 совет по эффективному использованию Composer

                    • Translation
                    • Tutorial

                    Хотя большинство PHP-разработчиков умеют пользоваться Composer, не все делают это эффективно или лучшим возможным образом. Поэтому я решил собрать советы, которые важны для моей повседневной работы. Большинство из них опираются на принцип «От греха подальше»: если что-то можно сделать несколькими способами, то я выбираю наименее рискованный.
                    Читать дальше →
                    • +34
                    • 20.7k
                    • 7
                  • Просто о графах. Попытка популяризации

                      «Всякие звания (дворянина, купца, мещанина, крестьянина и пр., титулы — княжеские, графские и пр.) и наименование гражданских чинов (тайные, статские и проч. советники) уничтожаются...»
                      Об уничтожении сословий и гражданских чинов
                      Декрет ВЦИК и СОВНАРКОМа от 10.11.1917 года, ст. 2



                      image


                      Как-то же я обходился без этого раньше...


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

                      Вероятно, специфика “случайно распределенных графов” окажется маловостребованной в нашей с вами повседневности, но некоторое представление о теории графов может оказаться полезным в самых разнообразных ситуациях даже человеку не особенно к математике расположенному, – что же касается людей, занятых в такой области, как программирование, то изощренная изобретательность, как правило, сопутствует ежедневно выпадающим на их долю задачам, оттого представители этой профессии, в поисках новых идей и инструментов, случается, азартно загружают свой ум вещами, казалось бы не пригодными для полезного использования, однако, заказав пиццу за 10 тысяч биткоинов, они дарят хорошее настроение другим хорошим людям на многие годы, и таки оправдывают свою пассионарность.
                      Читать дальше →
                    • Laravel 5. Иерархический RBAC для самых маленьких

                        Как вам очевидно известно, RBAC — это управление доступом на основе ролей. Все, кто создавали системы чуть большие чем домашняя страничка и чуть меньшие чем Госуслуги, задумывались о том, как разграничить права пользователей.


                        В этой статье я не буду рассказывать о том, что такое RBAC и почему это хорошо (хотя немного, конечно, расскажу), а познакомлю вас со своей скромной разработкой (h-rbac) и попытаюсь объяснить, почему она по некоторым аспектам лучше, чем известные "монстры".


                        EDITED:


                        • Модуль прекрасно работает с Laravel 6.*.
                        • Начиная с v0.4 поддерживаются множественные роли у пользователя.
                        • Начиная с Laravel 5.5 нет необходимости регистрировать провайдер в app.php, т.к. используется auto-discovering пакетов.
                        Читать дальше →
                      • Миграция VueJS приложения на Vuex

                        • Translation
                        Всем привет! Нам бы хотелось представить вашему вниманию статью Энтони Гора о миграции Vue.js-приложения на Vuex.


                        Вид приложения, над которым будет вестись работа по миграции

                        Далее следует перевод статьи. Всех, кому интересна данная тема, приглашаю под кат.
                        Читать дальше →
                      • Как работает видеопроцессор

                        • Translation
                        image

                        [Прим. пер.: оригинал статьи называется GPU Performance for Game Artists, но, как мне кажется, она будет полезной для всех, кто хочет иметь общее представление о работе видеопроцессора]

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

                        Мы надеемся, что художники создадут ресурсы, которые не только хорошо выглядят, но и будут эффективны при рендеринге. Если художники немного больше узнают о том, что происходит внутри видеопроцессора, это может оказать большое влияние на частоту кадров игры. Если вы художник и хотите понять, почему для производительности важны такие аспекты, как вызовы отрисовки (draw calls), уровни детализации (LOD) и MIP-текстуры, то прочитайте эту статью. Чтобы учитывать то влияние, которое имеют ваши графические ресурсы на производительность игры, вы должны знать, как полигональные сетки попадают из 3D-редактора на игровой экран. Это значит, что вам нужно понять работу видеопроцессора, микросхемы, управляющей графической картой и несущей ответственность за трёхмерный рендеринг в реальном времени. Вооружённые этим знанием, мы рассмотрим наиболее частые проблемы с производительностью, разберём, почему они являются проблемой, и объясним, как с ними справиться.
                        Читать дальше →