Архив за 28 апреля 2020 - 3

Нет более быстрого способа замедлить сайт (такой вот каламбур), чем использовать на нём кучу JavaScript-кода. При использовании JavaScript приходится расплачиваться за это производительностью проектов не менее чем четыре раза. Вот чем JavaScript-код сайта нагружает системы пользователей:

  • Загрузка файла по сети.
  • Парсинг и компиляция распакованного исходного кода после загрузки.
  • Выполнение JavaScript-кода.
  • Потребление памяти.

Эта комбинация оказывается очень дорогой.

Цена JavaScript-фреймворков - 1

А мы включаем в состав своих проектов всё больше и больше JS-кода. По мере того, как организации движутся в сторону сайтов, работающих на базе фреймворков и библиотек вроде React, Vue и прочих, мы делаем основной функционал сайтов очень сильно зависящим от JavaScript.

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

Выяснить это мне помог проект HTTP Archive.
Читать полностью »

Примечание: это не полноценная статья-руководство, а скорее напоминание/подсказка для тех, кто уже пользуется ConfigMap в Kubernetes или только готовит своё приложение для работы в нём.

ConfigMaps в Kubernetes: нюансы, о которых стоит знать - 1

Предыстория: от rsync к… Kubernetes

Что было раньше? В эпоху «классического администрирования» в простейшем варианте файл конфига размещали прямо рядом с приложениями (или в репозитории, если угодно). Всё просто: делаем элементарную доставку (CD) для нашего кода вместе с конфигом. Даже реализацию на условном rsync можно назвать зачатками CD.Читать полностью »

Однажды коллега поделился размышлениями об API для распределённых вычислительных кластеров, а я в шутку ответил: «Очевидно, что идеальным API был бы простой вызов telefork(), чтобы твой процесс очнулся на каждой машине кластера, возвращая значение ID инстанса». Но в итоге эта идея овладела мной. Я не мог понять, почему она такая глупая и простая, намного проще, чем любой API для удалённой работы, и почему компьютерные системы, кажется, не способны на такое. Я также вроде бы понимал, как это можно реализовать, и у меня уже было хорошее название, что является самой трудной частью любого проекта. Поэтому я приступил к работе.

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

На видео показано, что рендеринг на 64-ядерной VM в облаке завершается за 8 секунд (плюс 6 секунд на телефорк туда и обратно). Тот же рендеринг локально в контейнере на моём ноутбуке занимает 40 секунд:

Читать полностью »

Почту США опять хотят обанкротить из-за Amazon. Как это происходит - 1

Почтовая служба США (USPS), через которую получают свои посылки и письма почти все американцы, страдает из-за коронавируса и оттока корпоративных клиентов. Количество посылок возросло, но прибыли на них служба не получает. Пару недель назад Конгрессу сообщили, что, если ничего не делать, у компании кончатся деньги к сентябрю. Ей нечем будет платить своим 630 тысячам сотрудников. Это крупнейший работодатель страны, на него работает в три раза больше человек, чем на McDonald's. Но денег ей, похоже, могут не дать — из-за Amazon.Читать полностью »

Подготовка к собеседованиям в IT-гиганты: как я преодолела проклятье алгоритмического собеседования - 1

Дисклеймер:

Я не программирую с трёх лет, не знаю наизусть Кнута, не являюсь призёром олимпиад по информатике и чемпионатов по спортивному программированию, не училась в MIT. У меня за плечами образование по информатике и 6 лет опыта в коммерческой разработке. И до недавнего времени я не могла пройти дальше первого технического скрининга в IT-гиганты из FAANG (Facebook, Amazon, Apple, Netflix, Google и подобные), хотя предпринимала несколько попыток. 

Но теперь всё изменилось, я получила несколько офферов и хочу поделиться опытом, как можно к этому прийти. Речь пойдёт о позиции Software Engineer в европейских офисах перечисленных компаний.
Читать полностью »

Жэнь Чжэнфэй (Ren Zhengfei), китайский предприниматель, основатель и президент одной из крупнейших телекоммуникационных компаний мира Huawei Technologies, в свежем интервью дал прямой ответ на вопрос, сможет ли компания в будущем отказаться от использоваться американских комплектующих в своих мобильных телефонах.

Читать полностью »

Жэнь Чжэнфэй (Ren Zhengfei), китайский предприниматель, основатель и президент одной из крупнейших телекоммуникационных компаний мира Huawei Technologies, в свежем интервью дал прямой ответ на вопрос, сможет ли компания в будущем отказаться от использоваться американских комплектующих в своих мобильных телефонах.

Читать полностью »

Жэнь Чжэнфэй (Ren Zhengfei), китайский предприниматель, основатель и президент одной из крупнейших телекоммуникационных компаний мира Huawei Technologies, в свежем интервью дал прямой ответ на вопрос, сможет ли компания в будущем отказаться от использоваться американских комплектующих в своих мобильных телефонах.

Читать полностью »

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

Компания Qualcomm, которая еще в 2017 году представила свой стандарт Quick Charge 4+, вчера официально анонсировала не Quick Charge 5 или 5+, а Quick Charge 3+. Новый стандарт предложит быструю зарядку для недорогих смартфонов.


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js