All streams
Search
Write a publication
Pull to refresh
60
0

Пользователь

Send message

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

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

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


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

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

Severed Steel: в поисках идеального экшена

Reading time7 min
Views7.7K

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

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

Переход с iptables на nftables. Краткий справочник

Reading time18 min
Views167K
image

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

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

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

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

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

Интернет-бизнес больше не друг пользователя: как адаптироваться к реальности позолоченного века интернета

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

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

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

Разрезать металл — воздухом? Почему бы и нет…

Reading time7 min
Views23K

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

Коммуникатор судного дня «Armachat» LoRa

Reading time8 min
Views25K
Технология LoRa отлично подходит не только для сбора информации с удалённых датчиков. Её можно использовать как основу системы для обмена сообщениями. Именно такую систему я воплотил в жизнь в виде персонального коммуникатора Armachat. Для меня это самый настоящий учебный проект, на котором я оттачивал навыки создания печатных плат с беспроводными модулями и графическими дисплеями. Устройство питается от аккумулятора, оно представляет собой нечто вроде высокотехнологичной портативной рации, поддерживающей обмен текстовыми сообщениями. При этом для сборки этой рации нужно сравнительно мало компонентов — всего около 25.

Для этого проекта я, чтобы удобнее было выполнять паяльные работы, выбрал микроконтроллер SAMD21E18 в корпусе TQFP32 (того же размера, что и популярный контроллер ATmega328). Правда, к сожалению, этот микроконтроллер продаётся пустым. Для того чтобы прошить в него загрузчик, необходимо специальное устройство — Atmel-ICE. Прошивка загрузчика оказалась самой сложной частью проекта. А в остальном тому, кто решит воспроизвести мой проект, никаких специальных инструментов не понадобится. Всё, что нужно, собрано на плате коммуникатора. А на передней панели, что необязательно, можно разместить подсветку клавиатуры.

image

Сначала я назвал моё устройство «Armageddon communicator» (отсюда и его теперешнее название — «Armachat»), но я не думаю, что оно способно пережить какую-нибудь воображаемую всемирную катастрофу.
Читать дальше →

Апскейл, который смог

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

Принцип работы планировщика задач в Linux

Reading time5 min
Views33K

Планирование – это процесс распределения ресурсов системы для выполнения задач. В статье мы рассмотрим его вариант, в котором ресурсом является одно или несколько ядер процессора, а задачи представлены потоками или процессами, которые нужно выполнить.
Читать дальше →

Пишем драйвер виртуального EEPROM для STM32F030

Reading time15 min
Views14K

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

Разгадываем ребус вторичных часов «Воронеж»

Reading time12 min
Views13K

В предыдущей статье я затеял создание контроллера вторичных часов «Воронеж», и даже добился некоторой работоспособности. Однако так и не разгадал окончательно ребус формы и длительности передаваемого сигнала. На ту публикацию откликнулось большое количество людей, и предложило свою помощь. Кто-то помогал советом, кто-то снял живые осциллограммы с различных первичных часов, кто просто помог добрым словом и оказал поддержку. В результате понял, что нельзя бросить это устройство в стадии недоделки, потому что за ним следит такое количество людей. Поэтому было принято волевое решение довести всё до конца, при этом с максимальным качеством, доступным в домашних условиях. Главный девиз этой разработки был:
Делай хорошо — плохо само получится.
В результате на вторую часть я потратил в полтора-два раза больше времени, чем на первую: причёсывал код, занимался механикой, чертил детали корпуса, печатал их на принтере, точил на токарном станке, а главное, страдал от перфекционизма. Как обычно бывает, механическая часть съела чуть ли не 40% всего времени. В общем, поехали, будет интересно: от идеи до законченного устройства.
Читать дальше →

База данных на SharedPreferences — Android Kotlin

Reading time7 min
Views19K
image

Для хранения большого количества информации в Android используется DataBase (SQLite, FireBase и т. п.), а для простого хранения настроек — SharedPreferences. Вопрос, можно ли использовать SharedPreferences как своего рода Базу Данных и как это сделать?
Статья написана об учебном проекте, повторять такое на проде нельзя, как минимум это небезопасно. Намеренно используется не самая лучшая реализация тех или иных вещей, чтобы можно было подискутировать в комментариях.
Читать дальше →

Как вообще Интернет приходит в ЦОД

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

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

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

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


Источник

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

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

Вектор? Растр? А может — и то, и другое?

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


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

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

Арракис, который мы заслужили

Reading time4 min
Views51K

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

Электролюминесцентные индикаторы из прошлого

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

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

Большой тест ЗУ Victron Energy Blue Smart 12/15 с влагозащитой IP65. Часть 2: заряд глубоко разряженных АКБ

Reading time7 min
Views6.1K

Привет, Хабр! Как уже выяснилось, такое недешёвое зарядное устройство (ЗУ) обладает приличным продуманным дизайном, действительно не боится купания в воде и обладает маслостойкостью, соединяется с мобильным устройством по Bluetooth, имеет адаптивный восстановительный режим с током сложной формы, и наконец, успешно справилось со стационарным зарядом современной кальциевой EFB аккумуляторной батареи (АКБ), проработавшей под капотом почти полгода.

Теперь поставим перед ЗУ более сложную задачу: зарядим пару глубоко разряженных АКБ.
Это не так легко, как кажется: неспроста вокруг кальциевых АКБ столько мифов.

Как идёт реконструкция Политехнического музея? Часть 1

Reading time6 min
Views11K
В прошлом посте я рассказал, где сейчас хранятся экспонаты из коллекции. А что же в это время происходит в историческом здании на Новой площади? Мне удалось несколько раз побывать на стройке, сделать фотографии и узнать у специалистов интересные факты. Так что представляю вам вторую часть рассказа о главном научно-техническом музее страны.



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

Трясём стариной — или как вспомнить Ассемблер, если ты его учил 20 лет назад

Reading time11 min
Views24K
Это — тёплая, ламповая статья об Ассемблере и разработке ПО. Здесь мы не будем пытаться писать убийцу Майкрософта или Андроида. Мы будем писать убийцу 2048. Здесь не будет докера и терраформа с кубером. Зато здесь вы сможете найти большое количество материалов по Ассемблеру, которые помогут вам вновь погрузиться в мир трёхбуквенных инструкций. Доставайте пивко, и поехали. (Саундтреком к этой статье можно считать IBM 1401 a system manual)

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

В чём разница между Debian и Ubuntu? Что лучше выбрать?

Reading time7 min
Views211K
Поговорим о Debian и Ubuntu. И там, и там можно использовать команды apt-get для управления приложениями. Оба дистрибутива поддерживают установку DEB-пакетов. Часто, читая статьи про Linux, можно видеть, что для Debian и Ubuntu подходят одни и те же инструкции по установке каких-то программ.

Чем же, при такой близости друг к другу, различаются эти дистрибутивы?


Для начала надо сказать, что Debian и Ubuntu принадлежат одном и тому же семейству Linux-дистрибутивов. А именно — Debian — это исходный дистрибутив, созданный в 1993 году Иэном Мёрдоком. А дистрибутив Ubuntu, основанный на Debian, создал в 2004 году Марк Шаттлворт.
Читать дальше →

Знакомимся с аудио платой Bluetrum AB32VG1 RISC-V Bluetooth через RT-Thread

Reading time5 min
Views5.4K

Bluetrum AB32VG1 – это макетная плата на базе микроконтроллера AB5301A RISC-V, спроектированного как под приложения с использованием Bluetooth-аудио, так и для общих проектов, которые работают с операционной системой реального времени RT-Thread.

Эту плату мне прислали разработчики RT-Thread, и далее я опишу свой опыт первого знакомства с ней. В ходе этого небольшого эксперимента я опробую RT-Thread Studio IDE, помигаю светодиодом и поработаю с примером кода для аудио интерфейса, так как для Bluetooth пока примеров нет…
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Works in
Registered
Activity