company_banner
  • Бандлинг всего того, что не относится к обычному JavaScript-коду

    • Перевод
    Предположим, вы работаете над веб-приложением. В таком случае весьма вероятно то, что вам приходится иметь дело не только с JavaScript-модулями, но и с самыми разными другими ресурсами. Это и веб-воркеры (их тоже пишут на JavaScript, но они обособлены от обычного кода фронтенда), и изображения, и стили, и шрифты, и WebAssembly-модули, и иные материалы, входящие в состав сайта.

    Ссылки на некоторые из подобных ресурсов можно включить непосредственно в HTML-код, но часто они логически связаны с компонентами, используемыми во многих местах проектов. Например, таблица стилей для особого выпадающего списка связана с JavaScript-кодом, реализующим этот список, а изображения иконок связаны с компонентом, реализующим панель инструментов. Точно так же WebAssembly-модуль связан с JavaScript-кодом, обеспечивающим использование этого модуля. Удобнее было бы обращаться к подобным ресурсам прямо из соответствующих JavaScript-модулей и загружать их динамически тогда (или если), когда загружается соответствующий компонент.


    Ресурсы разных типов, импортируемые в JS-коде

    Правда, в большинстве крупных проектов используются системы для сборки таких проектов, которые выполняют дополнительные оптимизации и реорганизации контента. Например — это бандлинг и минификация ресурсов. Они не могут выполнять код и предсказывать то, каким будет результат его запуска. Они не могут и анализировать все строковые литералы в JavaScript-программах и делать предположения касательно того, является ли конкретная строка неким URL, ведущим к какому-то ресурсу, или нет. Как сделать так, чтобы бандлеры «видели» бы динамические ресурсы, загружаемые JavaScript-компонентами и включали бы их в сборку проекта?
    Читать дальше →
    • +21
    • 1,1k
    • 1
  • Прокачиваем силу — Rust и Windows API



      Недавно я написал статью Трясём стариной — или как вспомнить Ассемблер, если ты его учил 20 лет назад. В статье рассказывается о том, как изучать ассемблер на примере игрушки 2048. Возможно для целей самой статьи игрушка была подходящая, но конечный результат меня немного удручил. Бинарник размером в 10 килобайт, который потребляет 2 мегабайта памяти, из-за неправильно слинкованной библиотеки резал глаза.

      Посему я задался вопросом, а как это можно было бы сделать правильнее? Наверняка есть намного более удачное решение. (И организовал ещё один конкурс с призами в конце статьи)

      А почему бы не сделать на Rust, и правильно прикрученных библиотеках? При этом, если вы знаете, что делаете, то вы можете запросто уменьшить количество потребляемой оперативной памяти, но при этом написать визуальную игрушку с использованием Windows API.

      Причём это не значит, что вы будете использовать какую-то нестандартную библиотеку. Встречайте — windows-rs, проект поддерживаемый Microsoft. Ваш билет в мир Windows, если вы пишете на Rust.
      Читать дальше →
    • FAQ про хостинг


        — В чём прикол хоститься у российской компании за рубежом?

        Рассмотрим размещение в Амстердаме или Лондоне. Из-за другой юрисдикции не будет вопросов от российского МВД, например, потому, что на практике будет очень сложно дотянуться и разобраться. С другой стороны, точно так же вас почти точно не будет трогать и местное МВД, поскольку при запросе данных через кросс-юрисдикцию нужно будет делать это через Интерпол, что довольно сложно. В итоге нужно реально сильно накосячить, чтобы за вами пришли. У нас запросов через Интерпол было только два за историю хостинга.

        — Погодите, то есть это лучше, чем у английской компании в Англии?

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

        • Перевод
        Npm — это крупнейший менеджер пакетов. Его сравнительно просто и понятно использовать в практике веб-разработки. Но когда речь заходит о применении собственных конфигураций или об использовании продвинутых возможностей npm, многое может пойти не так.



        В этом материале я расскажу о семи распространённых ошибках, которые веб-разработчики допускают при работе с npm. В частности, речь пойдёт об управлении зависимостями, о публикации пакетов и ещё о некоторых важных вещах.
        Читать дальше →
        • +32
        • 6,5k
        • 3
      • Переход с iptables на nftables. Краткий справочник

        • Tutorial
        image

        В Debian теперь нет iptables. Во всяком случае, по умолчанию.

        Узнал я об этом, когда на Debian 11 ввёл команду iptables и получил “command not found”. Сильно удивился и стал читать документацию. Оказалось, теперь нужно использовать nftables.

        Хорошие новости: одна утилита nft заменяет четыре прежних — iptables, ip6tables, ebtables и arptables.

        Плохие новости: документация (man nft) содержит больше 3 тысяч строк.

        Чтобы вам не пришлось всё это читать, я написал небольшое руководство по переходу с iptables на nftables. Точнее, краткое практическое пособие по основам nftables. Без углубления в теорию и сложные места. С примерами.
        Читать дальше →
      • 5 вещей, которые я узнал, доведя Snowpack до 20000 GitHub-звёзд

        • Перевод
        Меня зовут Фред. Я — создатель Snowpack. Для тех, кто не знаком с этим проектом, расскажу в двух словах о том, что он собой представляет. Это — инструмент для сборки фронтенда веб-сайтов, который, по существу, дал дорогу движению «unbundled web development» («веб-разработка, основанная на использовании отдельных компонентов»), которое в наши дни поддерживают Snowpack, Vite, SvelteKit и другие современные инструменты для веб-разработки.

        В этом материале я хочу рассказать о пяти вещах, которые я узнал, доведя Snowpack от исходного коммита до почти 20000 звёзд на GitHub и до более чем миллиона загрузок.



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

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


          Игровую индустрию вот уже три десятилетия невозможно представить без кинематографичности. Пока одни разработчики делают игры ради игр, где геймплей просто работает (от “Марио” до “Цивилизации”), другие пытаются превратить свои произведения в интерактивное (или не очень) кино. Это направление можно разделить ещё на два: кто-то ограничивается роликами и катсценами с щедрой щепоткой QTE, а другие затачивают, “чтобы как в кино” сам геймплей. Max Payne, Call of Duty, FEAR — все они, так или иначе, отсылают нас к впечатлениям от любимых произведений кинематографа, или в случае с Devil May Cry, аниме (получается, это “анимеграфичность”?). Но как далеко можно зайти, если ваш источник вдохновения — лучшие экшен-сцены “Матрицы”?

          Представьте себе игру, которая максимально похожа на все ваши самые любимые и безумные экшен-сцены в кино. Ну, такие, где герои лихо расставляют хедшоты в ходе забега по стенам и палят из пистолетов в прыжке. Те самые, где всё вокруг взрывается, а обломки падают в слоу-моушен. В которых гипертрофированно крутые персонажи не просто крушат врагов — нет, они делают это нарочито стильно, и вся игра существует только ради этого. Представили? Это — вот оно.
          Читать дальше →
          • +41
          • 4,8k
          • 5
        • Ядерные чемоданчики: можно ли начать апокалипсис нажатием кнопки?


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

            В сентябре 2021 года выяснились ещё более прекрасные вещи. Журналист Боб Вудворд, тот самый, который в 70-х устроил Уотергейтский скандал, привёл в своей книге цитаты из интервью с председателем Объединенного комитета начальников штабов США Марка Милли. Тот рассказал, что в Пентагоне после выборов опасались: расстроенный Трамп может «жахнуть» по Китаю посредством «ядерного чемоданчика», чтобы спровоцировать глобальный кавардак и остаться у власти в силу чрезвычайных обстоятельств.
            Читать дальше →
          • Создание Live USB-дисков в Linux с помощью команды dd

            • Перевод
            Существует несколько программ с графическим интерфейсом, предназначенных для создания Live USB-дисков. Вероятно, в Linux самой популярной из них является Etcher. В Ubuntu есть собственный инструмент для решения этой задачи — Startup Disk Creator.

            Но продвинутые пользователи Linux, ради удобного и быстрого создания Live USB-дисков, постоянно обращаются к команде dd.



            Это — CLI-инструмент, который даёт тому, кто его выбирает, мощные возможности по копированию и конвертированию файлов.

            Обычно dd используют для того, чтобы записывать ISO-файлы на внешние носители информации, вроде USB-дисков. Потом такой носитель информации можно использовать, например, для установки записанного на него Linux-дистрибутива на обычный компьютер или на ноутбук.

            Тут я расскажу о создании загрузочных USB-дисков с помощью dd. В частности, разберу команды, которые нужны для того, чтобы сначала найти в системе нужный диск, а потом записать на него ISO-файл.
            Читать дальше →
          • Интернет-бизнес больше не друг пользователя: как адаптироваться к реальности позолоченного века интернета

              Золотой и позолоченный век интернета. Золотой век интернета — когда новые сервисы постоянно росли в количестве и размерах, встречая пользователя, где он был, находя, угадывая и удовлетворяя его потребности, или даже создавая их, но чутко реагируя на обратную связь в процессе таким образом, что пользователь сам был рад обнаружить у себя новую потребность в том, что может предложить революционная эпоха появления персональных гаджетов и интернета — закончен. Ландшафт интернет-рынка полностью оформился, границы интернет-вселенной определены, и новые чудесные открытия в ней уже не происходят с той же регулярностью и быстротой, что в 2000–2010 годах. Начался позолоченный век — все возможности, открытые и созданные в золотой век, ещё здесь и продолжают радовать ту часть человечества, которой они доступны. Но отношения пользователей и бизнесов поменялись кардинально.

              Развитие отношений интернет-бизнеса и пользователей чем-то напоминают сказку о золотой рыбке

              Если в золотой век интернета бизнесы открывали для себя пользователей, искали и создавали для них потребности, которые они могли удовлетворить, в процессе окружая пользователей таким чутким вниманием, что казались им лучшими друзьями и, одновременно, безропотными и верными слугами, на которых достаточно лишь строго посмотреть — и они тут же, немедленно, не по принуждению, а из собственной охоты исправят user experience на более лучший, то в позолоченный век ситуация совершенно другая: бизнесы со всех сторон окружили пользователя своими возможностями, со всех сторон облепили их гаджетами, составили общую карту потребностей от рабочих до развлекательных — и предлагают удовлетворяющие их услуги под любое настроение для любой погоды 24/7 круглый год.
              Читать дальше →
            • Разрезать металл — воздухом? Почему бы и нет…


                Во все времена, с самого момента своего появления, металл был окружён различными проблемами: начиная от его добычи и заканчивая последующей обработкой. Особенно эта проблема усугубилась в период промышленной революции, когда всё более возрастающий темп жизни побуждал производства подстраиваться под него и искать такие способы обработки, которые бы позволяли производству быть конкурентоспособным в условиях рыночной среды.
                Читать дальше →
              • Проект Copland. История крупнейшего провала Apple



                  В первой половине 90-х годов наметился очевидный рывок в эволюции операционных систем для персональных компьютеров. Microsoft уже ведет разработку новейшей Windows 95 на замену устаревшей Windows 3.11, IBM продвигает OS/2 Warp 3, отличавшуюся высокой надежностью и достаточно большим ассортиментом прикладных программ. На этом фоне Mac OS 7, ведущая отсчет версий с 1991 года, выглядела уже несколько архаичной. В Apple решили переписать операционную систему с нуля, создав на замену System 7 современную, гибкую и мощную платформу, способную конкурировать с новейшими разработками Microsoft на равных. Проект получил наименование Copland.
                  Читать дальше →
                • Апскейл, который смог

                    Термин «апскейл» используется для обозначения процесса увеличения разрешения цифровых изображений с фокусом на создание иллюзии «настоящего» высокого разрешения. Правда, 90% таких продуктов — это барахло, больше намёк на перспективы, чем волшебство. Недавно мои ручки добрались до двух алгоритмов повышения чёткости, которые оказались настолько хороши, что появилась эта статья. Будут субъективные и объективные тесты алгоритма Real-ESRGAN для увеличения разрешения и алгоритма GFPGAN для детализации лиц.
                    Traffic_Warning: в статье демонстрируется множество примеров.
                    Читать дальше →
                  • Пишем драйвер виртуального EEPROM для STM32F030


                      Кто хотел сохранять какие-либо данные в FLASH микроконтроллера во время работы устройства сталкивались с особенностями работы с этим видом памяти. Из-за необходимости стирания страницы большого объёма для перезаписи ячейки FLASH памяти, возникает угроза потери данных из-за отключения питания во время процесса обновления (один из вариантов). В этой статье я расскажу как можно упростить работу с FLASH, да и ещё с гарантией сохранения данных при прерывании процедуры обновления на любом этапе. Реализуем это на STM32F030.
                      Читать дальше →
                    • Принцип работы планировщика задач в Linux

                      • Перевод

                      Планирование – это процесс распределения ресурсов системы для выполнения задач. В статье мы рассмотрим его вариант, в котором ресурсом является одно или несколько ядер процессора, а задачи представлены потоками или процессами, которые нужно выполнить.
                      Читать дальше →
                    • Как вообще Интернет приходит в ЦОД

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

                        Думаю, что 99 % людей ответят: берёт и приходит, а потом задумаются. Это настолько естественно и очевидно, что обычно просто не обсуждается. Ну там, знаете, оптика, она приходит в домик, в домике стоит коробка, а из коробки идёт медь. Вот примерно так оно и работает.

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

                        Для нас всё начинается вот с этой ракеты в Королёве:


                        Источник

                        Это памятник «Восток-2М» (8А292М), стоящий в Королёве примерно на том месте, где вообще был разработан «Восток». Перед ним находится люк, где одна трасса оптики разделяется на три к M9, или MSK-IX — московской международной телефонной станции № 9, где когда-то появился самый крупный узел обмена трафика. Сейчас это главное место, откуда Интернет поставляется в Москву. Из-за некоторых особенностей нашей территории бомбоубежища именно в этом люке под ракетой находится уязвимое место оптики, где все три канала идут вместе, и их легко перерубить экскаватором на протяжении примерно 120 метров. В других местах до и после ракеты такого нет.

                        Соответственно один луч идёт через наш ЦОД в Ивантеевку, поворачивает в Щёлково и заканчивается на M9-IX. Второй подземный ввод идёт через Ярославское шоссе, третий ввод — дополнительный, он скачет по столбам от коллектора до ЦОДа в одну сторону и до местного провайдера в другую, а провайдер уже врезается в кольцо оптики по городу и тоже попадает в девятку.
                        Читать дальше →
                      • Электролюминесцентные индикаторы из прошлого

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

                          Читать дальше →
                        • Арракис, который мы заслужили


                            Во вселенной писателя-фантаста Фрэнка Герберта, Дюна, она же Арракис — это пустынная и маловодная планета с двумя лунами. По сюжету, она находится за пределами Солнечной системы, но если мы захотим поискать ближайшую схожую параллель, то больше всего подходит планета Марс. Предлагаю воспользоваться возможностями, которые даёт современная космонавтика, и совершить воображаемую прогулку на нашу Дюну.
                            Читать дальше →
                          • Вектор? Растр? А может — и то, и другое?

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


                            Изображение для верхней части сайта

                            Речь идёт о подготовке изображения, рассчитанного на использовании в верхней правой части сайта jamstackconf.com. Мы, в маркетинговой команде Netlify, используем Figma. Первая моя попытка экспорта этого изображения для использования его на сайте оказалась далеко не самой удачной.
                            Читать дальше →
                          • Упрощаем эмуляцию X86 с помощью Live CD

                            • Перевод

                            Типичный подход к эмулированию среды для запуска старых файлов с архитектурой i386 сопряжен со сложностями, в частности с поиском всех необходимых библиотек. Однако этой проблемы можно избежать, воспользовавшись заранее подготовленным образом Live CD, о чем в статье и пойдет речь на примере образа эмулятора Palm OS и игры Shogo: Mobile Armor Division.
                            Читать дальше →
                            • +29
                            • 3,8k
                            • 9

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