• Моментальная загрузка с instant.page



      instant.page — это небольшой скрипт, позволяющий ускорять навигацию по сайту с помощью just-in-time предзагрузки. Когда пользователь наводит курсор на ссылку, страница предзагружается в фоне, и при переходе по ссылке открывается моментально. По тому же принципу работает InstantClick, но он предоставляется уже как отдельная библиотека на pushState и Ajax, с дополнительными модулями вроде прогресс-бара предзагрузки.
      Читать дальше →
    • Организация эффективных атак по времени с помощью HTTP/2 и WPA3

      • Перевод
      Новая методика взлома преодолевает проблему «джиттера сети», которая может влиять на успешность атак по сторонним каналам



      Новая методика, разработанная исследователями Левенского университета (Бельгия) и Нью-Йоркского университета в Абу-Даби, показала, что злоумышленники могут использовать особенности сетевых протоколов для организации утечек конфиденциальной информации.

      Эта методика под названием Timeless Timing Attacks, продемонстрированная в этом году на конференции Usenix, использует особенности обработки сетевыми протоколами одновременно выполняемых запросов для устранения одной из проблем удалённых атак по времени по сторонним каналам.
      Читать дальше →
    • Практическая стеганография. Скрытие информации в изображениях PNG



        На хакерских конкурсах и играх CTF (Capture The Flag) иногда попадаются задачки на стеганографию: вам дают картинку, в которой нужно найти скрытое сообщение. Наверное, самый простой способ спрятать текст в картинке PNG — прописать его в одном из цветовых каналов или в альфа-канале (канал прозрачности). Для выявления подобных «закладок» есть специальные инструменты, такие как stegsolve, pngcheck и stegdetect, иногда конкурсантам приходится вручную повозиться с фильтрами в GIMP или Photoshop.

        Однако прогресс не стоит на месте — и в последнее время всё чаще используются другие способы скрытия данных, например, PNG-наполнение. Посмотрим, как это делается.
        Читать дальше →
        • +21
        • 5,9k
        • 3
      • Компилируем Microsoft Word 1989 года

        • Перевод
        • Tutorial


        Собираем Opus


        Opus — это кодовое имя, которое разработчики компании Microsoft дали пакету Microsoft Word for Windows v1.1a. Давайте скомпилируем его из исходного кода и посмотрим, удастся ли его запустить!

        1. Введение


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

        Примечание: в этой статье я буду часто упоминать DOS. Под этим обозначением подразумевается Microsoft MS-DOS, хотя большая часть информации также применима к IBM PC-DOS и большинству других разновидностей DOS.

        Если вы новичок в пользовании операционной системой DOS, то рекомендую повторять мои действия в копии Microsoft MS-DOS v6.22, версии DOS от июня 1994 года (последней выпущенной версии), содержащей все необходимые нам инструменты (об единственном исключении я расскажу ниже).
        Читать дальше →
      • Microsoft отчиталась об успешном проведении эксперимента по созданию подводного дата-центра

          Летом 2018 года в рамках второй фазы испытаний проекта Natick по производству и эксплуатации экологичных и автономных сетевых систем, команда инженеров затопила в прибрежных водах Шотландии контейнер с небольшим дата-центром внутри.



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

          Microsoft Project Natick — это многолетние исследование по изучению методов производства и эксплуатации экологически устойчивых предварительно укомплектованных ЦОД стандартизированного формата и размера, которые можно быстро развернуть и оставить на годы с «выключенным светом» на морском дне.

          — Официальный блог проекта

          Спустя два года команда проекта подняла со дна у Оркнейских островов контейнер с дата-центром внутри и отчиталась о результатах: эксперимент прошел более, чем успешно.
          Читать дальше →
        • Становится ли веб медленнее со временем?

          • Перевод


          В недавней истории на Hacker News утверждалось, что скорости веб-страниц не повышаются даже с увеличением скоростей Интернета.

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

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



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

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

            Наблюдая за работой десятков разных IT-компаний из разных сегментов я с уверенностью заявляю: так называемое «делегирование полномочий» в 90% случаев — фикция и способ самоутверждения менеджера. Потому что делегирование, это двунаправленный процесс, в котором должен быть не только сильный исполнитель (что очевидно), но и умный, со стальными нервами руководитель. И сейчас объясню, почему.
            Читать дальше →
          • Выбор техники и бездарные продавцы-консультанты

            image

            Приветствую вас, хабровчане! После трудовых будней и перед выходными, предлагаю вам развлекательный, но в то же время лайфхаковский, материал. Речь пойдёт про выбор и покупку техники (ТВ, смартфоны) в различных магазинах. Толковать я буду от своего имени и всё ниженаписанное – чистейшая правда.

            Будем говорить о низкоквалифицированных продавцах — консультантах в рамках Украины. За границей ничего и никогда не покупал из гаджетов.
            Читать дальше →
          • Вышел минималистичный Linux-дистрибутив Bottlerocket для запуска контейнеров. Самое главное о нём



              Компания Amazon объявила о финальном релизе Bottlerocket — специализированного дистрибутива для запуска контейнеров и эффективного управления ими.

              Bottlerocket (кстати, так называют мелкие самодельные ракеты на дымном порохе) — не первая ОС для контейнеров, но вполне вероятно, что она получит широкое распространение благодаря дефолтной интеграции с сервисами AWS. Хотя система ориентирована на облако Amazon, открытый исходный код позволяет собрать её где угодно: локально на сервере, на Raspberry Pi, в любом конкурирующем облаке и даже в среде без контейнеров.

              Это вполне достойная замена дистрибутиву CoreOS, который похоронила Red Hat.
              Читать дальше →
              • +24
              • 15,1k
              • 5
            • Неоморфизм и его проблемы

                Неоморфизм — это свежий (относительно skeuo/flat/material) тренд в дизайне, который по сути представляет из себя реинкарнацию похороненного скевоморфизма. Так как у этого стиля нет чётко задокументированных гайдлайнов, как например у material, его различные применения вызывают немало споров среди дизайнеров. В этой статье мы разберём его суть и обсудим резко набравшие актуальность из-за Big Sur проблемы.

                Читать далее
              • Объясните, почему мой рокет-саенс бэкенд билдится пару секунд, а четыре формы на фронте — полгода

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

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

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

                  Читать далее
                • Движок, который смог: как Chromium удалось захватить 90% рынка браузеров

                  • Перевод

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

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

                  У веб-сообщества есть достаточно причин опасаться отсутствия браузерного разнообразия. После того, как Internet Explorer захватил в начале 2000-х долю 90% от рынка браузеров, для выпуска нового браузера его разработчикам потребовалась добрая половина десятилетия. В тот период развитие веба остановилось, и начали возникать проблемы с безопасностью. Из-за этого веб стал хуже, поэтому мы часто стремимся к тому, чтобы браузеры конкурировали, а не монополизировали веб.
                  Читать дальше →
                • Опенсорсные альтернативы Google Analytics на своём хостинге


                    Веб-интерфейс опенсорсного сервиса аналитики Matomo

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

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

                    К счастью, есть ряд свободных, опенсорсных альтернатив Google Analytics, которые к тому же работают быстрее, поскольку скрипты меньше по размеру и загружаются с вашего собственного хостинга, а не со стороннего сервера. Информация о пользователях никуда не отправляется, а многие сервисы не используют куки и соответствуют законодательству GDPR о защите личных данных.
                    Читать дальше →
                  • Картинка, которая одновременно является кодом на Javascript

                    • Перевод

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

                    Прежде чем вы продолжите чтение, крайне рекомендую изучить эту песочницу кода с результатами моих экспериментов:

                    https://codesandbox.io/s/executable-gif-8yq0j?file=/index.html

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

                    https://executable-gif.glitch.me/image.gif
                    Читать дальше →
                  • Google продвигает новый стандарт WebBundles — потенциально опасную для веба технологию «упаковки» веб-сайтов

                      В общем потоке новостей остался незамеченным совместный призыв продукт-менеджера Chrome Кенджи Бахе и веб-консультанта Google Юсуке Уцуномии об использовании нового стандарта Web Bundles, разработанного Google. На chromium.googlesource появился соответствующий мануал по использованию WebBundles и, собственно, особо о нем больше не говорилось. Запись от лица Базе и Уцуномии была опубликована еще в ноябре 2019 года, но вызвала реакцию сообщества только сейчас, и то, исключительно на нескольких профильных площадках и в одном блоге, посвященном кибербезопасности.



                      Чем так опасна технология «упаковки» содержимого веб-страницы в один источник, что это вообще такое, и почему команда веб-разработки Google ступает на очень скользкую дорожку, давайте разбираться ниже.
                      Читать дальше →
                    • Консоли против ПК. Бесконечная война?



                        Приветствую вас, хабровчане! Вот и пятница подкралась незаметно. Сегодня пойдёт речь о давней и непрекращающейся войне ПКшников с консольщиками. Этому противостоянию нет равных. Битвы внутри консольного рынка не идут ни в какое сравнение с баталиями ПК vs консоли. Так же, как и батлы ПКшников между собой: какая «видяха» лучше и у кого сколько fps.

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

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

                        • Перевод
                        Сегодня мир штурмом захватывает ИИ, основанный на глубоком обучении и нейронных сетях. Однако многие алгоритмы, управляющие поиском в вебе и построением автомобильных маршрутов, гораздо старше, они уходят корнями в так называемый «старый добрый ИИ», также известный как «символический» искусственный интеллект, являвшийся основным видом ИИ с 1950-х до конца 1990-х. Затмевание символического ИИ глубинным обучением иллюстрируется двумя важнейшими вехами в истории искусственного интеллекта, каждая из которых связана с победой ИИ-системы над лучшим игроком-человеком.


                        Чемпион мира Гарри Каспаров победил компьютер IBM Deep Blue в 1996 году, но потерпел поражение в 1997 году, проиграв со счётом 4:2.
                        Читать дальше →
                        • +19
                        • 3,5k
                        • 9
                      • Некоторые аспекты управления VDS-сервером под Linux

                          VDS (Virtual Dedicated Server) — услуга, в рамках которой пользователь получает виртуальный выделенный сервер с максимальными привилегиями. Это эмуляция реального физического сервера, у него есть рутовый доступ, возможность установки произвольных операционных систем и любого софта. При этом он обходится значительно дешевле аренды сопоставимого по мощности физического сервера.

                          На сервер можно поставить ОС со своего образа или воспользоваться готовым образом в панели управления.



                          Предположим, мы поставили Debian 10 и веб-сервер Nginx, который идёт в стандартном репозитории (apt install nginx). Давайте посмотрим, какие полезные утилиты и команды помогут в управлении сервером под Linux. Рассмотрим и отдельно Nginx, и сам VDS-сервер в целом.
                          Читать дальше →
                          • +36
                          • 7,5k
                          • 8
                        • Визуализация данных при отладке в Visual Studio Code



                            Вообще Debugger Visualizers для обычного Visual Studio — это очень старая тема (статья 2009 года), но не очень популярная. В большинстве случаев принято учить сразу дебажить, представляя процессы в голове, а штуки вроде сортировок и списков показываются на доске. В вебе часто визуальную часть предоставляет браузер, и все всем довольны. Но бывает, что списки или деревья в голове уже не умещаются, таблицы хочется отсортировать, а графики строить не выходя из среды отладки. Для всего этого и был создан плагин для VS Code — Debug Visualizer.
                            Читать дальше →
                          • Как использовать простую утилиту для поиска уязвимостей в программном коде

                            • Перевод
                            Graudit поддерживает множество языков программирования и позволяет интегрировать тестирование безопасности кодовой базы непосредственно в процесс разработки.


                            Источник: Unsplash (Markus Spiske)

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

                            Очевидно, что в современных реалиях разработки программного обеспечения важно обеспечить безопасность процессов. В своё время был даже введён специальный термин DevSecOps. Под этим термином понимают ряд процедур, направленных на выявление и устранение уязвимостей в приложении. Существуют специализированные open source решения для проверки уязвимостей в соответствии со стандартами OWASP, которые описывают различные типы и поведение уязвимостей в исходном коде.
                            Читать дальше →
                            • +26
                            • 5,8k
                            • 2

                          Самое читаемое