Как стать автором
Обновить
6
0
Иван GiB$ON @gibson_dev

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

Отправить сообщение

Многопоточность JavaScript с SharedArrayBuffer и Atomics: основы

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров2.7K

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

Чтобы обойти эти ограничения, были введены Web Workers — они позволяют выполнять JS-код в фоновом потоке, параллельно с основным. Однако, все сложилось так, что простой обмен данными между основным потоком и воркерами через postMessage имеет свои ограничения и может быть недостаточно хорошим для некоторых задач.

Здесь помогают SharedArrayBuffer и Atomics.

Читать далее
Всего голосов 15: ↑14 и ↓1+15
Комментарии13

Шпаргалка по безопасной сборке Docker-образов

Время на прочтение17 мин
Количество просмотров16K

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

Привет, Хабр! Меня зовут Эллада, я специалист по информационной безопасности в Selectel. Продолжаю рассказывать о безопасности в Docker. Под катом расскажу, как настроить сборку образов, обеспечить безопасность и добавить сканирование в пайплайн.
Читать дальше →
Всего голосов 53: ↑51 и ↓2+67
Комментарии7

Представляем планировщик Go: Вы никогда не смотрели на горутины с этой стороны

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров12K

Вероятно, вы слышали о планировщике Go раньше, но насколько хорошо мы знает о том как он работает? Как он связывает горутины с потоками?

Разберем по очереди операции, которые выполняет планировщик.

Читать далее
Всего голосов 30: ↑27 и ↓3+30
Комментарии1

Фильтр Блума

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров11K



У каждого разработчика есть набор инструментов для решения различных задач. Однако со временем возникает необходимость расширять этот набор, чтобы эффективно справляться с более сложными задачами. В этой статье я хочу познакомить вас с инструментом, которым вы, скорее всего, раньше не пользовались. И хотя он подходит для решения узкого спектра задач, его использование может оказаться весьма полезным. Знакомьтесь — "фильтр Блума" (Bloom filter).

Читать дальше →
Всего голосов 44: ↑41 и ↓3+53
Комментарии16

Rust — это не «memory safe C»

Уровень сложностиСредний
Время на прочтение27 мин
Количество просмотров49K

TL;DR:
— в Rust намного больше достоинств, чем просто скорость и безопасность
— в Rust по умолчанию CDD (compiler-driven development, разработка через компилирование). Это как TDD, только CDD
— Rust — не сложный язык, особенно если не гнаться за максимальной производительностью

В этой статье я бы хотел рассказать:
— почему взгляд на Rust как на "memory safe C" очень сильно сужает область его возможного применения
— почему я смотрю на Rust как на очень удобный в разработке язык высокого уровня, которому просто случайно повезло оказаться невероятно быстрым
— почему разработка на Rust быстрее, чем многие думают
— почему Rust — это один из лучших языков общего назначения

Читать далее
Всего голосов 155: ↑149 и ↓6+168
Комментарии555

Эффективные трассировки в Go

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров2.7K

Пакет runtime/trace содержит мощный инструмент для понимания программ Go и устранения неполадок. Функциональность внутри позволяет создавать трассировку исполнения каждой горутины за определенный период времени. С помощью go tool trace command (или превосходного инструмента gotraceui с открытым исходным кодом) можно визуализировать и исследовать данные в этих трассировках.

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

Читать далее
Всего голосов 16: ↑15 и ↓1+15
Комментарии0

С 500 мс до нуля, или история о том, как я написал Node.js C++ addon и ускорил скидочный сервис в 500 раз

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров20K

Приветствую тебя! Меня зовут Дмитрий и я работаю в LAD.
Сегодня я поведаю историю о том, как эволюционировал скидочный сервис одного из наших проектов. Пройдя путь от всеми нелюбимого, "тормозящего" сервиса, до сервиса,
который имеет наилучшие показатели на недельных графиках SLA.

Читать далее
Всего голосов 38: ↑37 и ↓1+42
Комментарии37

Ключи Supermicro, SSM, VMWare и лекарство от жадности

Время на прочтение5 мин
Количество просмотров21K

Ни для кого не секрет, что крупные производители серверного оборудования любят продавать самые вкусные фишки своего оборудования за отдельную плату. Supermicro ничем не лучше: начиная с X9 (Romley), появилась возможность обновлять BIOS материнской платы из-под веб-интерфейса IPMI, но, как говорится, есть нюанс. Для разблокировки этой возможности необходимо приобрести отдельную лицензию OOB.

Читать далее
Всего голосов 32: ↑27 и ↓5+27
Комментарии28

PKI для IOT, архитектура защищенной сети ESP32 + Mosquitto SSL и Flash Encryption для хранения сертификатов

Уровень сложностиСложный
Время на прочтение16 мин
Количество просмотров2.8K

Цель статьи - показать вариант построения защищенной Iot-инфраструктуры для сети устройств на базе ESP32 и обменяться опытом. 

Общую идею и весь проект разделил на темы:

развертывание mosquitto SSL/TLS из docker-контейнера

создание сертификатов для брокера Mosquitto SSL и клиентов ESP32

архитектура хранилища сертификата для ESP32 и практические способы защиты

подготовка защищенной прошивки устройства с применение встроенных средств безопасности и шифрования ESP32.

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии20

Одинаковые деньги имеют разную субъективную ценность

Время на прочтение12 мин
Количество просмотров4.8K
image

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

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

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

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

Мозг часто выкидывает подобные штуки, когда речь идёт о личных финансах.
Читать дальше →
Всего голосов 22: ↑19 и ↓3+17
Комментарии44

Сосульки на свесах скатной кровли: механизм образования и методы борьбы с ними

Время на прочтение24 мин
Количество просмотров12K

Островерхая скатная и плоская крыша дома в ИЖС: Битва архаично-романтичного  «дизайна» с инженерной рациональностью.

Крыша дома в частном секторе- это не только инженерное сооружение, но и главный элемент внешнего вида здания в целом.

Если учесть, что частный дом в значительной степени строят ради «показать себя», то его крыша становится скорее ярмаркой тщеславия, чем ответственной инженерной конструкцией. (см.рис.1.)

Читать далее
Всего голосов 48: ↑40 и ↓8+42
Комментарии153

Как устроена страничная организация памяти x86_64

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров9.5K

В этом посте я буду говорить о страничной организации только в контексте PML4 (Page Map Level 4), потому что на данный момент это доминирующая схема страничной организации x86_64 и, вероятно, останется таковой какое-то время.

Окружение

Это необязательно, но я рекомендую подготовить систему для отладки ядра Linux с QEMU + gdb. Если вы никогда этого не делали, то попробуйте такой репозиторий: easylkb (сам я им никогда не пользовался, но слышал о нём много хорошего), а если не хотите настраивать окружение самостоятельно, то подойдёт режим практики в любом из заданий по Kernel Security на pwn.college (вам нужно знать команды vm connect и vm debug).

Я рекомендую вам так поступить, потому что считаю, что самостоятельное выполнение команд вместе со мной и возможность просмотра страниц (page walk) на основании увиденного в gdb — хорошая проверка понимания.

Читать далее
Всего голосов 53: ↑53 и ↓0+53
Комментарии0

Domain Driven Design в Go – это почти не больно

Время на прочтение13 мин
Количество просмотров21K

Как выглядят паттерны DDD (Domain Driven Design) в большом проекте? А самое главное, стоит ли их вообще использовать? Рассмотрим, какими инструментами можно реализовать DDD на Go и оценим, насколько это больно.

Меня зовут Илья Сергунин, я backend-сочинитель в Авито: занимаюсь тем, что передаю смартфоны в хорошие руки. В этой статье попытаюсь объяснить, как можно натянуть DDD на Go без синтаксического сахара и магии Java-подобных языков, и без больших крутых ORM c Data mapper, которые также отсутствуют в Go.

Читать далее
Всего голосов 21: ↑20 и ↓1+20
Комментарии10

Собираем удобный CAN bus сниффер с интерактивной консолью за $3

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров17K

Привет, Хабр!

Протокол CAN сейчас широко распространён не только в автомобильной сфере, но и на предприятиях, в различных самоделках, и даже в Средствах Индивидуальной Мобильности (контроллеры VESC, например). В ноябре прошлого года я сделал для себя удобный инструмент для анализа CAN и отправки фреймов, сейчас же хочется сделать код опенсорсным и рассказать о самом проекте.

Читать далее
Всего голосов 34: ↑34 и ↓0+34
Комментарии18

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров7.6K

Однажды мне попался один весьма интересный проект платы, поддерживающей большое количество разнообразных E-Ink экранов. Проект довольно быстро заинтересовал, появилось желание несколько переработать плату, внести улучшения, узнать и попробовать что-нибудь новое. Больше всего изменений претерпела система питания: она была разработана практически с нуля. Процесс оказался очень познавательным и увлекательным, а отладка прототипа преподнесла много поучительных и забавных сюрпризов. Это жизненный рассказ о разработке как есть.
Читать дальше →
Всего голосов 70: ↑70 и ↓0+70
Комментарии30

Что нового в IMSProg?

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров2.9K

Пару месяцев назад я писал историю создания программатора микросхем CH341a для Linux систем. Благодаря вашим отзывам и комментариям программа изменилась, надеюсь в лучшую сторону.

Читать далее
Всего голосов 33: ↑33 и ↓0+33
Комментарии0

Отопление в ИЖС с помощью сплит-кондиционера «на тепло». Так ли это выгодно на самом деле?

Время на прочтение30 мин
Количество просмотров16K

Отопление тепловыми насосами

Продолжим обсуждение способов экономичного отопления в ИЖС без использования трубного газа.

Ранее были рассмотрены варианты отопления электричеством и отопления с применением СУГ.

Экономика загородного дома. Как утеплить дом и не разориться?

По желанию читателей решил рассмотреть и вариант отопления с помощью «кондиционеров на тепло».

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

Изначально предполагается использовать именно самую дешёвую версию сплит‑кондиционера, у которого компрессорно‑конденсаторный блок (далее ККБ) установлен на улице.

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

Рассмотрением этих незаметных или преднамеренно скрываемых препятствий мы и займёмся в этой статье.

Читать далее
Всего голосов 48: ↑45 и ↓3+47
Комментарии139

Утечки памяти, которые не утечки

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров21K

Что случилось? Авария, ужас-ужас

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

В один прекрасный день боевое сопровождение приходит с ужасной проблемой — память в контейнерах Node.js течёт, сервисы падают с OOM каждый день, все пропало!

Да, картинка действительно удручающая. Всё время, когда есть нагрузка, память в контейнере прирастает и почти не очищается при снятии нагрузки. Все остальные метрики, которые мы собирали были в норме: event loop lag, использование CPU, active request, open handles. Прирастала только используемая память и незначительно увеличивалось время отклика сервиса.

Что-ж, выглядит как классическая утечка, надо искать источник.

Читать далее
Всего голосов 95: ↑94 и ↓1+106
Комментарии15

Бесплатные векторные карты на своём хостинге

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров16K

Векторные карты Protomaps на базе OSM

Каждый веб-разработчик знает о OpenStreetMap (OSM), свободной альтернативе Google Maps. Несмотря на всеобщую известность OSM, у некоторых всё-таки возникают вопросы: как сделать веб-карту с открытыми данными OSM, как самостоятельно публиковать карты?

На эту тему есть популярные руководства, в том числе по работе с базами PostGIS и запуску тайлсерверов для реализации бесшовных карт OSM. Но есть принципиально иной подход — векторные карты Protomaps, которые обеспечивают более высокое разрешение, настройку внешнего вида и наложение произвольных меток. Они изначально предполагают максимальную простоту в создании своих карт. А главное, что разместить тайлы можно на своём хостинге или в облаке.
Читать дальше →
Всего голосов 63: ↑60 и ↓3+83
Комментарии12

Как найти себя в том, чем ты занимаешься

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров7.5K

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

Читать далее
Всего голосов 19: ↑16 и ↓3+18
Комментарии7
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность