• Мы написали самый полезный код в своей жизни, но его выкинули на помойку. Вместе с нами



      Я повесил у себя в подвале боксерскую грушу, приклеил на нее стоковое фото типичного менеджера и запихал внутрь динамик, чтобы он проигрывал фразы, которые меня злят. Например, груша говорит: «Бизнесу не нужен твой идеальный код. Ему нужно решить проблему так, чтобы прибыль покрыла затраты. Если для этого нужен говнокод, значит будет говнокод». И начинаю дубасить.

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

      Мой друг Антоха попросил меня помочь с решением для одной большой-большой корпорации. Я согласился, и мы влезли в бездонную пучину корпоративного абсурда, кранча, войны с ничего не понимающими коллегами и всеми видами несправедливости. Нам ничего нельзя говорить, поэтому мы будем говорить про типы, чтобы такая фигня никогда ни у кого не повторялась.
      Читать дальше →
    • Горький урок отрасли ИИ

      • Translation
      Об авторе. Ричард Саттон — профессор компьютерных наук в университете Альберты. Считается одним из основателей современных вычислительных методов обучения с подкреплением.

      По итогу 70-ти лет исследований в области ИИ главный урок заключается в том, что общие вычислительные методы в конечном счёте наиболее эффективны. И с большим отрывом. Конечно, причина в законе Мура, точнее, в экспоненциальном падении стоимости вычислений.

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

      Стремясь к улучшению в краткосрочной перспективе, исследователи пытаются применить человеческие знания в предметной области, но в долгосрочной перспективе имеет значение только мощность вычислений. Эти две тенденции не должны противоречить друг другу, но на практике противоречат. Время, потраченное на одно направление, — это время, потерянное для другого. Есть психологические обязательства инвестировать в тот или иной подход. И внедрение знаний в предметной области имеет тенденцию усложнять систему таким образом, что она хуже подходит для использования общих вычислительных методов. Было много примеров, когда исследователи слишком поздно усваивали этот горький урок, и полезно рассмотреть некоторые из самых известных.
      Читать дальше →
    • Web tools, или с чего начать пентестеру?

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

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

        Читать дальше →
        • +46
        • 21.7k
        • 8
      • Проблемы действующей методики определения актуальных угроз от ФСТЭК



          Доброго времени суток, Хабр! Сегодня мы бы хотели покритиковать документ «Методика определения актуальных угроз безопасности персональных данных при их обработке в информационных системах персональных данных», утвержденный ФСТЭК России 14 февраля 2008г. (далее – Методика).

          Эта Методика является единственным утвержденным документом по определению актуальных угроз безопасности, а в соответствии с действующим законодательством «Для определения угроз безопасности информации и разработки модели угроз безопасности информации применяются методические документы, разработанные и утвержденные ФСТЭК России...».

          Как видно из даты утверждения Методики, ей уже более 10 лет и с ней действительно много проблем. Какие именно — рассмотрим далее.

          Читать дальше →
          • +15
          • 7.8k
          • 6
        • 10 полезных советов по реализации Pixel Perfect дизайна во Front-end разработке (на примере работы с редактором Sketch)

          Привет, Хабр! Представляю вашему вниманию адаптированный перевод статьи "10 Useful Tips to Recreate Pixel Perfect Designs in Front-end" автора Jeroen Dellaert.

          Мне как любому начинающему разработчику приходится часто сталкиваться с проблемами, решение которых нужно искать в сетях. Столкнувшись с понятием Pixel Perfect, я задумалась над тем, как это реализовать в рамках новых стандартов (Flexbox, Grid). К счастью, с появлением таких редакторов, как Figma и Sketch, жизнь у веб-разработчиков стала немного проще. Прошуршав по интернету, я нашла данную статью. Кроме броского заголовка в нем было несколько очень полезных советов, которые я в работе применяла на каком подсознательном уровне. Очень надеюсь, что этот адаптированный перевод принесет пользу многим ищущим ответов.

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

          И дело не только в том, чтобы код максимально точно отражал дизайн, но и в том, чтобы он был аккуратным. Когда я начал свою стажировку, я работал вместе с остальной частью команды разработчиков и изучал приемы, чтобы мыслить идеальным pixel perfect кодом. Ниже приведены десять ключевых выводов из моего учебного процесса по воссозданию дизайна с максимально возможной точностью до пикселя во фронтенд разработке.
          Читать дальше →
        • Нашумевшие утечки данных пользователей за январь — апрель 2019



            В 2018 году в мире было зарегистрировано 2263 публичных случая утечки конфиденциальной информации. Персональные данные и платёжная информация были скомпрометированы в 86% инцидентов — это около 7,3 миллиарда записей пользовательских данных. Японская криптобиржа Coincheck в результате компрометации онлайн-кошельков её клиентов потеряла 534 миллиона долларов. Это был наибольший заявленный ущерб.

            Какова будет статистика за 2019 год, пока неизвестно. Но нашумевших «сливов» уже довольно много, и это печально. Мы решили сделать обзор наиболее обсуждаемых утечек с начала года. «То ли ещё будет», как говорится.

            18 января: базы Collection
            Читать дальше →
          • JavaScript-движки: как они работают? От стека вызовов до промисов — (почти) всё, что вам нужно знать

            • Translation

            Вы когда-нибудь задумывались, как браузеры читают и исполняют JavaScript-код? Это выглядит таинственно, но в этом посте вы можете получить представление, что же происходит под капотом.

            Начнём наше путешествие в язык с экскурсии в удивительный мир JavaScript-движков.
            Читать дальше →
          • Пишем чистый и масштабируемый JavaScript-код: 12 советов

            • Translation
            • Tutorial
            Язык JavaScript родом из раннего веба. Сначала на нём писали простые скрипты, которые «оживляли» страницы сайтов. Теперь же JS превратился в полноценный язык программирования, который можно использовать даже для разработки серверных проектов.

            Современные веб-приложения сильно зависят от JavaScript. Особенно это касается одностраничных приложений (Single-Page Application, SPA). С появлением библиотек и фреймворков, таких как React, Angular и Vue, JavaScript стал одним из основных строительных блоков веб-приложений.



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

            Автор статьи, перевод которой мы сегодня публикуем, хочет поделиться советами по написанию чистого JavaScript-кода. Он говорит, что статья рассчитана на JS-программистов с любым уровнем подготовки. Но особенно полезной она будет для тех, кто знаком с JavaScript хотя бы на среднем уровне.
            Читать дальше →
          • Исчезающие фреймворки

              Почему мы используем фреймворки? Angular, React и Vue помогают нам строить сложные веб-приложения: структурировать код, управлять состоянием и разрабатывать сложные интерфейсы. За последнее десятилетие фреймворки стали стандартом. Дорогим стандартом. С тех пор как фреймворки вошли в обиход, JS сильно раздуло. Страниц весом несколько мегабайт становится больше, и существенная часть этого объема — фреймворк сам по себе. Кажется, это немного, но для пользователя критично — на телефоне или слабом интернете страница может даже не загрузиться. Это проблема.



              Кроме лишнего веса у классических фреймворков много других минусов и они подходят не для всех проектов. Эти проблемы решены в «исчезающих фреймворках». Что это за новый тренд, почему это не «еще один JS-фреймворк», а хорошая идея и как таинственные фреймворки могут улучшить наши приложения, расскажет Павел Малышев.
              Читать дальше →
            • Лучшая приоритизация HTTP/2 для ускорения веба

              • Translation

              HTTP/2 обещал заметно ускорить веб, и Cloudflare давным-давно развернула доступ по HTTP/2 для всех клиентов. Но одна особенность HTTP/2, приоритизация, не соответствовала ожиданиям. Не потому, что она принципиально сломана, а из-за реализации в браузерах.

              Сегодня Cloudflare предлагает изменить приоритизацию HTTP/2, что даёт нашим серверам контроль над решениями о приоритизации, которые действительно заметно ускоряют интернет.

              Исторически именно браузер контролирует, как и когда загружать веб-контент. Сегодня для всех платных планов мы вносим радикальные изменения в эту модель. Они передают контроль напрямую владельцу сайта. На вкладке «Скорость» в панели мониторинга Cloudflare клиенты могут включить «Расширенную приоритизацию HTTP/2»: она переопределяет настройки браузера по умолчанию на улучшенную схему планирования, что значительно ускоряет доступ для посетителей (в некоторых случаях мы видели ускорение на 50%). С воркерами Cloudflare владельцы сайтов могут пойти ещё дальше и полностью подобрать настройки под свои конкретные нужды.
              Читать дальше →
            • PHPUnit. Мокаем Doctrine Entity Manager

              • Tutorial

              Во многих современных приложениях для работы с базой данных используется проект Doctrine ORM.


              Хорошим тоном считается выносить работу с БД в сервисы. А сервисы нужно тестировать.


              Для тестирования сервисов можно подключить тестовую базу данных, а можно замокать Менеджер сущностей и репозитории. С первым вариантом всё понятно, но не всегда есть смысл разворачивать БД для тестирования сервиса. Об этом и поговорим.

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

              • Translation

              Объектно-ориентированное программирование — чрезвычайно плохая идея, которая могла возникнуть только в Калифорнии.

              — Эдсгер Вибе Дейкстра

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

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

              Многие люди и раньше обсуждали проблемы ООП, и в конце этого поста я приведу список своих любимых статей и видео. Но прежде я хочу поделиться собственным взглядом.
              Читать дальше →
            • Эволюция архитектуры торгово-клиринговой системы Московской биржи. Часть 1



                Всем привет! Меня зовут Сергей Костанбаев, на Бирже я занимаюсь разработкой ядра торговой системы.

                Когда в голливудских фильмах показывают Нью-Йоркскую фондовую биржу, это всегда выглядит так: толпы людей, все что-то орут, машут бумажками, творится полный хаос. У нас на Московской бирже такого никогда не было, потому что торги почти с самого начала ведутся электронно и базируются на двух основных платформах — Spectra (срочный рынок) и ASTS (валютный, фондовый и денежный рынок). И сегодня хочу рассказать об эволюции архитектуры торгово-клиринговой системы ASTS, о различных решениях и находках. Рассказ будет длинный, так что пришлось разбить его на две части.
                Читать дальше →
              • HTTP-заголовки для ответственного разработчика

                • Translation

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

                Разработчики соединяют людей.
                Разработчики помогают людям.
                Разработчики дают людям возможности.

                Разработчики могут создать сеть для всех, но эту способность необходимо использовать ответственно. В конце концов, важно создавать вещи, которые помогают людям и расширяют их возможности. В этой статье я хочу рассказать о том, как HTTP-заголовки могут помочь вам создавать лучшие продукты для лучшей работы всех пользователей в интернете.
                Читать дальше →
              • Технические детали недавнего сбоя расширений Firefox

                • Translation
                Об авторе. Эрик Рескорла — технический директор группы Firefox в Mozilla

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

                Для справки: расширения и их подпись


                Хотя многие используют Firefox как есть из коробки, браузер также поддерживает мощный механизм расширений. Они добавляют в Firefox сторонние функции, расширяющие возможности, которые мы предлагаем по умолчанию. В настоящее время существует более 15 000 дополнений Firefox: от блокировки рекламы до управления сотнями вкладок.
                Читать дальше →
              • Как сделать из сайта приложение и выложить его в Google Play за несколько часов. Часть 2/2: Trusted Web Activity

                • Tutorial
                image

                В первой части мы превратили наш сайт в Progressive Web App. Там же было сказано, что совсем недавно, 6 февраля 2019 года, Google предоставили простую возможность выкладывать PWA в Google Play при помощи Trusted Web Activity. Всё, что нужно сделать, это написать небольшую обёртку под Android, которую можно будет выложить в Google Play. Когда пользователь скачает такое приложение-обёртку, оно просто будет открывать наше PWA внутри Chrome. Конечно же, интерфейс Chrome будет спрятан и всё будет выглядеть красиво.

                Если вы, как и я, никогда не писали приложений под Android, то дальнейшее вам тоже должно показаться чередой магических манипуляций. Но к чему только не прибегнешь, чтобы выложить своё приложение. Поехали!
                Читать дальше →
              • Черный список сетей для Asterisk

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

                  Читать дальше →
                • Как сделать из сайта приложение и выложить его в Google Play за несколько часов. Часть 1/2: Progressive Web App

                  • Tutorial


                  Наверное, все близкие к веб-разработке люди уже наслышаны о Progressive Web App. Ещё бы! Эта технология практически уравняла веб и мобильную разработку с точки зрения распространения продуктов и вовлечённости пользователей.

                  Да, современный фронтенд, написанный, например, на React, работает как приложение. Но вот только скачивается это приложение в браузер и запускается из него. В этом и заключается огромный гандикап, который всегда имела мобильная разработка. Давайте подумаем, чем с точки зрения обычного пользователя, «приложение» отличается от «сайта». Сразу в голову приходит, что приложение в телефоне, а сайт на компьютере. Но ведь есть мобильный браузер, так что сайт и в телефоне тоже. Тогда остаётся 3 существенных отличия:
                  Читать дальше →
                • Создание инструмента для быстрого и эффективного написания автотестов на Selenium

                  Фундаментальный строительный блок автоматизации – тестирование
                  Род Джонсон
                  image

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

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

                  Я расскажу о том, как с нуля, имея небольшой опыт разработки, написал платформу для запуска тестов, и о самой платформе. Сам я считаю, что мой продукт получился весьма эффективным, а значит будет многим полезен и имеет место для рассмотрения.
                  Читать дальше →
                • Svelte 3: Переосмысление реактивности

                  • Translation
                  Буквально на днях произошло большое событие для сообщества SvelteJS, да и вообще, как мне кажется, для всего современного фронтенда — долгожданный релиз Svelte 3! Посему, под катом перевод статьи автора Svelte и прекрасное видео с его доклада на YGLF 2019.


                  Читать дальше →