Pull to refresh
135
0.2
Михаил Бусырев @Aquahawk

инженер

Send message

Что такое 50% cpu?

Level of difficultyEasy
Reading time3 min
Views43K

Если у вас на машине стрелочка показывает, что у вас осталась половина бака, то у вас точно осталась половина бака? На самом деле больше, так как современные машины врут и топлива еще немного есть, даже когда стрелка на нуле - забота об альтернативно одаренных водителях. А если сервер показывает 50% cpu, то сколько ресурсов у нас осталось?

Для многих ответ ясен, и это не 50%. Поэтому извините, если многие вещи будут вам очевидны. А вот для менеджеров, например, которые планируют ресурсы, это может быть открытием.

Читать далее
Total votes 102: ↑99 and ↓3+123
Comments66

Корзина в Додо Пицце на iOS 14: баг длиной в полгода

Level of difficultyEasy
Reading time4 min
Views7.1K

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

Фидбэк был положительным, но не от всех пользователей — у владельцев айфонов на iOS 14 кнопка корзины просто не отображалась. Воспроизвести баг мы не смогли и решили проблему радикально: включили отображение кнопки на iOS 14 по умолчанию.

Но спустя пару месяцев я узнал, что тикет проблемы всё ещё открыт. Я решил его закрыть и погрузился в удивительный мир… Авито, воркэраундов и не только! В этой статье расскажу вам об этом приключении! Погнали!

Читать далее
Total votes 24: ↑24 and ↓0+30
Comments23

Освещение в веб-картах 2ГИС

Level of difficultyMedium
Reading time7 min
Views4.6K

Мы делаем карты 2ГИС реалистичными, чтобы приложение максимально детально отражало город вокруг: чтобы у зданий были не гладкие стены, а настоящий фасад, в парках росли деревья и стояли лавочки, а скульптуры выглядели точно так же, как и в реальности. Такая реалистичность помогает в навигации: гораздо проще сравнивать то, что ты видишь в реальности, с моделью этого здания, а не с гладкой коробкой. Поддержка освещения объектов, которую мы добавили на 2gis.ru — ещё один шаг к реалистичности.

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

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

Необычные приёмы отладки, которые браузер от вас скрывает

Level of difficultyMedium
Reading time8 min
Views16K

Список неочевидных, но при этом полезных хаков, которые позволят использовать отладчик вашего браузера1 более полноценно. Для понимания материала статьи потребуется как минимум средний уровень владения инструментами разработчика.
Читать дальше →
Total votes 72: ↑71 and ↓1+96
Comments12

А/Б тестирование: множественная проверка гипотез

Reading time10 min
Views4.2K

Хабр, привет! Сегодня обсудим, как проверять много гипотез в одном эксперименте. Разберёмся, почему растут вероятности ошибок. Познакомимся с метриками множественного тестирования и поправками, которые позволяют их контролировать. Узнаем, как оценить необходимый размер групп и повысить чувствительность.

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

Грепабельность — важная метрика кода

Level of difficultyEasy
Reading time3 min
Views9.6K

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

Читать далее
Total votes 35: ↑32 and ↓3+42
Comments31

Как поменять местами клиент и сервер

Level of difficultyEasy
Reading time3 min
Views6.1K

Ситуация: у нас есть сервер и нам нужно подключиться к нему с помощью клиента. Но вот незадача: мы почему‑то не можем инициировать сессию с клиента. Это может быть по причине NAT, настроек VPN‑клиента или просто из‑за ACL на МЭ.

Что делать?

Давайте попробуем поменять местами клиент и сервер.

Читать далее
Total votes 4: ↑4 and ↓0+9
Comments9

А ваша зарплата в рынке? Простой, как топор, способ это узнать

Level of difficultyEasy
Reading time8 min
Views30K

Представьте, что в уголке экрана отображается зарплатный виджет. Как погодный, только зарплатный. И он вам показывает что-то типа "Ваша з/п - 115% от рынка. Работайте спокойно." Или - "Ваша з/п - 75% от рынка. Пора обновить резюме".

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

Статья может быть полезна сформировавшимся айтишникам, которые не меняют работу каждый год-два. А особенно полезна она ленивым айтишникам (типа меня), которым лень хотя бы раз в полгода-год выходить на рынок.

Далее
Total votes 56: ↑51 and ↓5+61
Comments47

Толстые хвосты распределений — это загадочно и странно

Level of difficultyMedium
Reading time13 min
Views7.9K

Если вы посещали занятия по статистике — вы, возможно, проходили тему «общая теория меры». Там могла идти речь о мере и об интеграле Лебега, а так же — об их связи с другими способами интегрирования. Если на ваших занятиях много внимания уделялось математике (так было у меня), то на них вы вполне могли познакомиться с теоремой Каратеодори о продолжении меры и даже с основами теории операторов на гильбертовых пространствах, а так же — с преобразованиями Фурье и много с чем ещё. Большинство этих математических конструкций нацелено на доказательство одной из самых важных теорем, на которой основана огромная часть статистики. Речь идёт о центральной предельной теореме (ЦПТ).

ЦПТ утверждает, что для широкого класса того, что мы называем в математике «случайными величинами» (которые представляют собой результаты проведения некоего эксперимента, включающего в себя элемент случайности), до тех пор, пока они удовлетворяют определённым условиям (как может показаться — простым), их среднее значение сходится к случайной величине определённого типа, который называют «нормальным» или «Гауссовым».

Читать далее
Total votes 38: ↑37 and ↓1+51
Comments11

Куча таймеров в node.js

Level of difficultyMedium
Reading time8 min
Views6.2K

А знаете ли вы, как на самом деле работают таймеры в node.js? В этой статье мы разберемся, как хранятся таймеры, когда запускаются и как в целом все работает вплоть до системных вызовов.

Читать далее
Total votes 15: ↑14 and ↓1+17
Comments4

Насколько быстр Javascript? Симулируем 20 миллионов частиц

Level of difficultyEasy
Reading time23 min
Views23K

Я бросил себе вызов: симулировать 1000000 (миллион) частиц на чистом Javascript на телефоне, используя только CPU и добившись 60 FPS.

Поехали.

Задача не особо сложна, если выполнять всю работу на GPU, но правило гласит, что нужно пользоваться только CPU, при этом работая на JS, так что никакого WASM.

Читать далее
Total votes 109: ↑108 and ↓1+133
Comments34

Стреляем себе в ногу из localStorage

Level of difficultyEasy
Reading time6 min
Views11K

Все фронтендеры любят localStorage — в него можно прикопать данные без всяких баз и серверов. Но из localStorage можно отлично обстрелять себе ногу. сегодня расскажу про 6 встроенных пулеметов и презентую библиотеку banditstash, которая нежно, но настойчиво прикрывает ваши ножки.

Читать далее
Total votes 24: ↑22 and ↓2+26
Comments16

Тикерная лента и телетайп: как обеспечивались торги на бирже до IT-эпохи

Level of difficultyEasy
Reading time11 min
Views1.1K

Полуторавековая история программно-аппаратного обеспечения биржевых торгов четко делится на два этапа. Первый этап начинается с так называемой тикерной ленты и выдающего ее телеграфного (потом телетайпного) тикерного аппарата и длился целый век, с 1870-х по 1970-е годы. Если пользоваться современным IT-языком, на выходе эта разновидность IT, которую можно назвать информационно-коммуникационной финансовой технологией, поступала на сетчатку глаза брокера, оттуда по зрительному нерву в его мозг, где данный ему, брокеру, от природы естественный интеллект обрабатывал ее (с помощью нейронных серверов знания и опыта биржевой торговли и здравого смысла, а также инструкций клиента, разумеется), и понуждал его, брокера, совершить какое-либо из трех действий: купить, продать, ничего не делать. Когда в последней четверти прошлого века появились компьютерные технологии, начался второй этап — забрезжила надежда исключить из процесса биржевой торговли естественный интеллект как сильно тормозящий фактор, и сейчас все движется в направлении алгоритмизации продаж, форвардных контрактов и опционов и т.д.

Читать далее
Total votes 7: ↑7 and ↓0+12
Comments0

Стохастический язык программирования на основе алгоритмов Маркова

Reading time13 min
Views27K

MarkovJunior — это вероятностный язык программирования, в котором программы являются сочетаниями правил перезаписи, а инференс выполняется при помощи распространения ограничений. MarkovJunior назван в честь математика Андрея Андреевича Маркова, придумавшего и исследовавшего то, что сейчас называется алгоритмами Маркова.
Читать дальше →
Total votes 139: ↑139 and ↓0+139
Comments24

Специалисты по информатике изобрели новый эффективный способ подсчёта уникальных элементов

Reading time4 min
Views20K

Представьте, что вас отправили в девственный тропический лес, чтобы провести перепись диких животных. Каждый раз, когда вы видите животное, вы делаете снимок. Ваша цифровая камера будет фиксировать общее количество снимков, но вас интересует только количество уникальных животных — всех тех, которых вы ещё не посчитали. Как лучше всего получить это число? «Очевидное решение — запомнить всех животных, которых вы уже видели, и сравнивать каждое новое животное с этим списком», — говорит Лэнс Фортноу, специалист по информатике из Иллинойского технологического института. Но есть и более умные способы, добавил он, потому что если у вас тысячи записей, то очевидный подход далеко не так прост.

Всё становится ещё хуже. Что, если вы — Facebook, и вам нужно подсчитать количество отдельных пользователей, которые заходят на сайт каждый день, даже если некоторые из них заходят с нескольких устройств и в разное время? Теперь мы сравниваем каждый новый вход со списком, который может исчисляться миллиардами.

Читать далее
Total votes 76: ↑75 and ↓1+86
Comments50

Земля в печатных платах | Слои, компоненты, секции, питание и переходы | Тренинг Рика Хартли

Level of difficultyMedium
Reading time30 min
Views12K

В этой статье представлен большой тренинг Рика Хартли по разводке земли в печатных платах. Перевёл и озвучил данное видео Dmitry Muravyev, за что ему огромное спасибо. Я всего лишь сделала конспект этого замечательного тренинга, чтоб люди могли ознакомиться с ним быстрее, чем смотреть двухчасовое видео, либо вернуться к каким-то отдельным темам, если позабылось. Категорически рекомендую ознакомиться с источником.

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

Читать далее
Total votes 31: ↑31 and ↓0+38
Comments6

Шрифт на кривых Безье на микроконтроллере

Level of difficultyMedium
Reading time6 min
Views14K

Идея

Идею подсмотрел в канале о программировании ESP32, один человек продемонстрировал часы на 6 дисплеях. Каждая цифра на своём дисплее типа 1.8" 128х160. Разработчик проекта показал источник своего вдохновения: проект Bézier Clock на Javascript разработчика Jack Frigaard. К сожалению, видимо, ориганальная страница демонстрационного проекта не сохранилась, но она точно вдохновила разных людей. Есть даже статья на хабре про это Часы на кривых Безье. Даже не спрашивая как именно это реализовано, я сразу решил делать свой проект на кривых Безье и быстро опробовал первую версию как это будет выглядеть на дисплее.

Читать далее
Total votes 67: ↑67 and ↓0+92
Comments43

Культурный феномен клипа Bad Apple и мой BAD AON

Level of difficultyEasy
Reading time20 min
Views18K

Уже десять лет на демосцене существует довольно странная, но интересная традиция. Нет, в баню с друзьями ходят без неё, но очень многие делают конверсии популярного видеоклипа Bad Apple на различные маломощные платформы прошлых лет. Как-то: ZX Spectrum, Game Boy, Sega Genesis, БК-0011М, и чем дальше, тем страньше и страньше. Это одновременно и упражнение в реализации цифрового видео в условиях крайне ограниченных ресурсов, и в адаптации контента под возможности максимально хардкорных ретро-платформ.

Сегодня рассмотрим само явление Bad Apple — откуда оно взялось и какое отношение имеет к компьютерам, а также мою новейшую разработку в этой области, демонстрацию BAD AON. В прошлом я уже делал подход к этому снаряду с версией для 8-битной NES, а в этот раз сделал адаптацию для, смею надеяться, одной из наиболее необычных платформ. Разглядеть клип будет трудновато, но если хорошенько прищуриться (я серьёзно), он всё ещё вполне узнаваем.
Читать дальше →
Total votes 132: ↑132 and ↓0+174
Comments35

Повышение живучести SSD за счёт его превращения из QLC в SLC

Level of difficultyMedium
Reading time14 min
Views44K

В этой статье мы займёмся беспрецедентным экспериментом! Я шаг за шагом проведу вас через процесс преобразования SSD на базе QLC NAND в SLC SSD, что позволит значительно повысить его ресурс и общую производительность.

▍ Спецификация испытуемого SSD



На роль испытуемого я выбрал Crucial BX500, который мы уже много раз тестировали, освещая этот процесс как на нашем сайте, так и на YouTube-канале.
Читать дальше →
Total votes 101: ↑99 and ↓2+126
Comments95

Запуск MacOS 13+ в VMware на процессорах AMD (OpenCore)

Reading time7 min
Views8.8K

Всем привет. Делюсь своими изысканиями по запуску виртуальных машин MacOS на процессорах AMD. Возможно кому-то будет полезным.

Предыстория: в наличии несколько виртуалок, с которыми долгое время не было никаких проблем. Версии - от Mojave до Monterey, они даже обновлялись штатно. Далее, при апдейте на Ventura/Sonoma ловим кернел панику - никакие рекомендации из интернета не помогли. Глаз пал в сторону хакинтоша, но как его конфигурировать под вмварь тоже оказалось не совсем понятным, поэтому и напишу этот гайд:
вводные - Ryzen 5950X, Windows 10, VMware Workstation 16.2 (была версия 16.0, пока не столкнулись в проблемой апдейта макоси).

Читать далее
Total votes 18: ↑18 and ↓0+18
Comments6
1
23 ...

Information

Rating
2,647-th
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity