Pull to refresh
8
0
Ринат Муллаянов @rmnuts

Frontend разработчик

Send message

Автор библиотеки, от которой зависит половина веб-сайтов, сидит без денег

Reading time1 min
Views88K

Если кратко, автор пакета core-js Денис Пушкарев (zloirock), от которого зависит огромное количество других js-пакетов, за много лет развития core-js не получал почти ничего, при этом ему регулярно прилетал хейт если его библиотека работал плохо, плюс в 20-м году он сел в тюрьму из-за ДТП (по его словам, на дорогу прямо перед его мотоциклом выбежали пьяные люди, впрочем, по правилам виноват был он), через несколько месяцев освободили досрочно, денег нет, получить донаты из-за рубежа затруднительно из-за санкций, американские СМИ "были разочарованы, что он не русский хакер, который вмешивается в американские выборы", в общем, денег нет, поддержки нет, развивать пакет дальше он не может, если кто-то не начнет его спонсировать.

Подробно в статье от автора (на английском)

На мой взгляд, это глобальная проблема в ИТ, как в мире, так и в России - вся ИТ-инфраструктура зависит от open source библиотек, авторам которых зачастую никто не платит, зато все предъявляют к ним претензии.

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

Читать далее
Total votes 178: ↑146 and ↓32+163
Comments1464

Как обходится ограничение скорости скачивания с YouTube

Reading time7 min
Views19K

Вы когда-нибудь пробовали скачивать видео с YouTube? Я имею в виду ручками, а не через такие софтины, как youtube-dl, yt-dlp или один из «этих» сайтов. Оказывается, это гораздо сложнее, чем можно было бы подумать.

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

Читать далее
Total votes 44: ↑44 and ↓0+44
Comments25

Подробная настройка Content Security Policy (CSP)

Level of difficultyMedium
Reading time10 min
Views26K

Content Security Policy (CSP) - это механизм безопасности веб-приложений, который используется для сокращения рисков, связанных с атаками, такими как внедрение скриптов (XSS) и выполнение нежелательного кода (инъекция). CSP позволяет веб-разработчикам указывать браузерам, из каких источников разрешено загружать ресурсы, такие как скрипты, стили, изображения, шрифты и другие элементы.

Читать далее
Total votes 3: ↑3 and ↓0+3
Comments3

Как отправлять пользовательский интерфейс по API

Reading time7 min
Views6.9K
image

Есть приём, позволяющий совершенно по-новому представить работу с пользовательскими интерфейсами (UI). Можно передавать UI на клиент через различные API – так получаются серверно-управляемые пользовательские интерфейсы. Такой метод позволяет выйти на новый уровень гибкости и динамичности, трансформирует традиционные парадигмы разработки UI.

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

Но что же собой представляют серверно-управляемые UI? Как они работают и почему приобретают такую важность в современной разработке на JavaScript? В данном посте мы постараемся ответить на эти вопросы и углублённо рассмотреть серверно-управляемые UI, их достоинства, а также как можно реализовать такой интерфейс в вашем собственном проекте.
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments11

Wolfram Language JavaScript Frontend

Level of difficultyEasy
Reading time10 min
Views3.6K

Wolfram Language JavaScript Frontend - это проект, цель которого в создании бесплатной альтернативы для Mathematica с открытым исходным кодом, но со своими особенностями и преимуществами, а если точнее то в реализации пользовательского интерфейса для ядра Wolfram Language (WL). Ядро входит в состав Математики либо распространяется в виде бесплатной утилиты командной строки - Wolfram Engine. То есть данное приложение это именно пользовательский интерфейс для WL, а не попытка полностью переписать язык. Ниже будет демонстрация возможностей, а так же отличия от Mathematica и других приложений. Вам это точно будет интересно, если вам нравится подход к программированию, который используют такие платформы как Mathematica, Jupyter, NTeract, JupyterLab, DeepNote, ObservableHQ, Google Collab и некоторые другие.

Внимание! В статье много изображений!

Читать далее
Total votes 14: ↑14 and ↓0+14
Comments10

Особенности кодировки строк в Base64 в JavaScript

Level of difficultyHard
Reading time6 min
Views13K


Кодировка (encoding) и декодирование (decoding) в Base64 — распространенный способ преобразования двоичных данных в безопасный текст. Он часто используется в Data URL, таких как встроенные (inline) изображения.


Прим. пер.: с помощью data URL можно решить проблему (ошибку) отсутствующей фавиконки в браузере.


<link rel="icon" href="data:." />

Что происходит при кодировке и декодировании в base64 строк в JS? В этой статье мы рассмотрим некоторые особенности и ловушки, связанные с этими процессами.

Читать дальше →
Total votes 9: ↑8 and ↓1+9
Comments3

8 углубленных вопросов на собеседованиях на роль сеньора в JavaScript

Level of difficultyMedium
Reading time13 min
Views28K
image

JavaScript — это мощный язык, который является частью фундамента интернета. У этого мощного языка также есть некоторые свои особенности. Например, знаете ли вы, что значение 0 === -0 равно true, или что Number("") дает 0?

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

В этом материале мы покажем подробное объяснение некоторых важных вопросов на интервью по JavaScript. Моя цель будет состоять в том, чтобы тщательно объяснить эти вопросы, чтобы мы могли понять лежащие в их основе концепции.
Читать дальше →
Total votes 44: ↑24 and ↓20+15
Comments37

История одного домашнего дата-центра

Level of difficultyMedium
Reading time9 min
Views36K

История о создании домашнего дата-центра от 0 серверов (только посадочная) до сотни (ещё нет) за 1.5 года. Через интернет в новостройке, перепрошивку UPS и собственные стойки для десктопного железа к балансу отказоустойчивости с ценой и планам на будущее.

Вся история
Total votes 91: ↑89 and ↓2+108
Comments59

Maskito – новая коллекция библиотек для маскирования текстовых полей

Level of difficultyEasy
Reading time9 min
Views12K

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

Maskito содержит разные библиотеки: основная написана на TypeScript без зависимостей, есть опциональный пакет с набором готовых конфигурируемых масок, а еще есть библиотеки для удобного использования Maskito в проектах на React, Angular или Vue. Рассказываю обо всем подробнее.

Читать далее
Total votes 53: ↑51 and ↓2+54
Comments13

Явное управление ресурсами: пробуем новую фичу JavaScript и TypeScript

Level of difficultyHard
Reading time13 min
Views18K

Одной из самых интересных грядущих новинок JavaScript и TypeScript для меня является явное управление ресурсами. Новый синтаксис using foobar = … реализует идиому RAII, позволяя писать намного менее многословный код, управляющий какими-либо ресурсами.

В этой статье я хочу на примерах разобрать эту фичу — в том виде, в котором она сейчас доступна в TypeScript 5.2.0-beta с полифиллом disposablestack. Я рассмотрю синхронные и асинхронные ресурсы, DisposableStack/AsyncDisposableStack, а также приведу пример неочевидного бага, в который попался я сам. По пути я также коснусь нескольких других нововведений Node.js, про которые, возможно, ещё знают не все. Весь код доступен в репозитории.
Читать дальше →
Total votes 65: ↑65 and ↓0+65
Comments6

Как декораторы могут упростить разработку веб-форм

Level of difficultyEasy
Reading time16 min
Views5.3K

Относительно недавно в TC39 предложение с реализацией декораторов в EcmaScript вышло на 3-ю пред финальную стадию. Чуть позже MicroSoft выпустил 5-ю мажорную версию TypeScript, в которой новая реализация декораторов начала работать из коробки без каких-либо экспериментальных флагов. Babel тоже подсуетился, и в своей документации начал рекомендовать использовать новую реализацию декораторов. А это означает лишь то, что декораторы наконец-то начали полноценно входить в жизнь JavaScript разработчиков.

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

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

Читать далее
Total votes 5: ↑4 and ↓1+3
Comments13

Управление Linux-сервером — самая ценная инвестиция

Level of difficultyEasy
Reading time6 min
Views73K

В эпоху облаков настройка Linux-сервера своими руками кажется неким вымирающим искусством. Для непосвящённого человека даже bash-скрипты выглядят как заклинания, а коллеги проникаются уважением к сисадмину, как древние индейцы к своему шаману…

Сейчас это «древнее искусство» вновь стало актуальным. История идёт по кругу — всё старое возвращается в новом виде. Запуск сервера на своём хостинге стал хорошей альтернативой облакам. Этому есть ряд причин, которые мы не будем подробно разбирать, только повторим вкратце: безопасность, свобода, контроль над своими данными, экономия финансов.
Читать дальше →
Total votes 78: ↑74 and ↓4+97
Comments117

Попытка получения исходников ядра от производителей, и последующее хамство от них

Level of difficultyEasy
Reading time4 min
Views68K

Нарушение лицензии и отказ технической поддержки предоставить исходники — одни из множества неприятностей. Особенно если речь идёт о довольно крупных компаниях, в моём случае — Digma. В этой статье рассказываю, как я пытался получить исходный код ядра Linux, который используется в планшете Digma Plane 4G 1538E.

Читать далее
Total votes 402: ↑388 and ↓14+459
Comments424

Open-source блокнот Wolfram Language или как воссоздать минимальное ядро Mathematica на Javascript и не только

Level of difficultyMedium
Reading time20 min
Views8K

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

Читать далее
Total votes 24: ↑23 and ↓1+36
Comments5

Как мы делали свою сеть LTE в карьере и на липецкой металлургической площадке

Level of difficultyEasy
Reading time7 min
Views9.7K
image
Вот на этих ковшах в самых холодных участках крепится по нескольку радиометок.
Они часто плавятся или отрываются, когда с ковшей убирают окалину, краны и всякое электрооборудование дают адские помехи, но сейчас мы уже уверенно считываем маркировки.

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

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

Выбор у нас был простой: промышленный Wi-Fi, всякие отдельные системы вроде LoRa/BT/etc для каждого типа задач, LTE оператора, частный LTE плюс на тесты нам дают частный 5G.

Ну и операторы строили сеть в модели 70 % download, 30 % upload, а у нас — 90 % upload.

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

Забегая вперёд, скажу, что оператор расчистил нам диапазон, и мы получили свой пакет услуг передачи данных (другие абоненты мигрировали в соседние частоты), запланировали собственное покрытие, построили несколько десятков антенно-мачтовых сооружений для наружной связи, установили соты в некоторых местах внутри цехов, в особо важных и плотных местах построили своё резервированное ядро сети, поставили и запустили оконечные устройства.

И это того стоило. Ещё как стоило!
Читать дальше →
Total votes 52: ↑51 and ↓1+55
Comments30

Умные программисты пишут STUPID-код

Level of difficultyEasy
Reading time9 min
Views53K
Умные программисты пишут STUPID-код, ведь они понимают, что неожиданно возникшая сложность может привести к провалу проекта.


▍ Страдание


На момент написания этой статьи на моих часах 21:30.

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

Я вымотан не физически, а, скорее, разочарован тем, что, несмотря на все имеющиеся у нас замечательные технологии, позволяющие писать наилучшее ПО, мы, как люди, профессионально пишущие код, по множеству причин склонны ценить больше сложность, а не простоту.
Читать дальше →
Total votes 62: ↑58 and ↓4+73
Comments77

Старые кодовые базы как классическая литература

Level of difficultyEasy
Reading time6 min
Views9.4K

Сохранившиеся фрагменты греческих папирусов, источник

В языке и литературе работает известный принцип начитанности: чем больше человек читает хороших книг, тем больше у него словарный запас, шире кругозор. Развивается понятийный аппарат, сама собой улучшается грамотность без всяких учебников.

Применим ли этот принцип в обучении программированию?
Читать дальше →
Total votes 61: ↑61 and ↓0+61
Comments8

Исследуем внутренности Linux версии 0.01

Level of difficultyMedium
Reading time7 min
Views35K

Ядро Linux часто упоминают как ужасно масштабное опенсорсное ПО. На момент написания этой статьи последняя версия 6.5-rc5 состоит из 36 миллионов строк кода. Не нужно говорить, что Linux — это плод упорного многолетнего труда множества участников проекта.

Однако первая версия Linux, v0.01, была довольно маленькой. Она состояла всего из 10239 строк кода. Если исключить комментарии и пустые строки, то остаётся всего 8670 строк. Это достаточно малый объём для анализа и хорошее начало для изучения внутренностей ядер UNIX-подобных операционных систем.

Я получил удовольствие от чтения кода v0.01. Это походило на посещение Музея компьютерной истории в Маунтин-Вью — я наконец-то убедился, что легенды верны! Я написал эту статью, чтобы поделиться с вами этим восхитительным опытом.

Читать далее
Total votes 112: ↑112 and ↓0+112
Comments18

Как работает стилус Galaxy Note

Reading time5 min
Views426K
С первого дня пользования меня очень интересовал вопрос — как же на обычном емкостном экране, которые воспринимает только определенную площадь прикосновения удалось добиться работы тонкого стилуса, да еще с кнопкой и несколькими степенями нажатия?

В этой статье я попытаюсь ответить на этот вопрос, рассказав немного об интересных технических решениях, примененных в этом телефоне.
Интересно? Добро пожаловать под кат
Total votes 262: ↑253 and ↓9+244
Comments92

Information

Rating
Does not participate
Location
Уфа, Башкортостан(Башкирия), Россия
Date of birth
Registered
Activity