Pull to refresh
6
0.1
Иван GiB$ON @gibson_dev

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

Send message

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

Level of difficultyMedium
Reading time7 min
Views10K

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

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

Читать далее
Total votes 36: ↑33 and ↓3+30
Comments1

Фильтр Блума

Level of difficultyMedium
Reading time9 min
Views9.1K



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

Читать дальше →
Total votes 41: ↑44.5 and ↓-3.5+48
Comments12

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

Level of difficultyMedium
Reading time27 min
Views44K

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

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

Читать далее
Total votes 174: ↑169 and ↓5+164
Comments552

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

Level of difficultyMedium
Reading time6 min
Views2.3K

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

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

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

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

Level of difficultyMedium
Reading time18 min
Views19K

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

Читать далее
Total votes 44: ↑43 and ↓1+42
Comments37

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

Reading time5 min
Views18K

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

Читать далее
Total votes 37: ↑32 and ↓5+27
Comments28

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

Level of difficultyHard
Reading time16 min
Views2.3K

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

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

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

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

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

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

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

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

Reading time12 min
Views4.5K
image

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

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

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

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

Мозг часто выкидывает подобные штуки, когда речь идёт о личных финансах.
Читать дальше →
Total votes 23: ↑20 and ↓3+17
Comments29

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

Reading time24 min
Views11K

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

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

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

Читать далее
Total votes 58: ↑50 and ↓8+42
Comments153

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

Level of difficultyEasy
Reading time15 min
Views8.4K

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

Окружение

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

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

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

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

Reading time13 min
Views17K

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

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

Читать далее
Total votes 22: ↑21 and ↓1+20
Comments10

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

Level of difficultyMedium
Reading time13 min
Views15K

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

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

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

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

Level of difficultyMedium
Reading time13 min
Views7.2K

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

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

Level of difficultyEasy
Reading time2 min
Views2.7K

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

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

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

Reading time30 min
Views15K

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

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

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

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

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

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

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

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

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

Читать далее
Total votes 53: ↑50 and ↓3+47
Comments139

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

Level of difficultyMedium
Reading time10 min
Views20K

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

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

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

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

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

Читать далее
Total votes 108: ↑107 and ↓1+106
Comments15

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

Level of difficultyMedium
Reading time6 min
Views14K

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

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

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

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

Level of difficultyEasy
Reading time9 min
Views7.2K

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

Читать далее
Total votes 24: ↑21 and ↓3+18
Comments7

CG Charger BQ: как TP4056, только на стероидах (BQ25895)

Level of difficultyMedium
Reading time16 min
Views13K


Сегодня на нашем операционном столе очередное гениальное изобретение компании ClimateGuard — девайс под не менее гениальным названием CG Charger BQ. Расшифровке того, что же всё-таки скрывается под этими загадочными буквами BQ (что означают буквы CG постоянные читатели моего блога уже знают) и посвящена эта статья.

Перед нами умная зарядка для аккумулятора и модуль питания для различных DIY устройств с возможностью микроконтроллерного управления по интерфейсу I2C. Это формальное определение назначения этого модуля, но после ознакомления с даташитом BQ25895 и экспериментов с самим модулем я могу сказать, что это невероятно продвинутая микросхема управления питанием, которая при соответствующем подходе сможет удовлетворить любые ваши прихоти по обеспечению питанием ваших гаджетов.

Правда для осмысленной работы с BQ25895 вам понадобятся пара высших образований в Computer Science (смайл) и… эта статья…
Читать дальше →
Total votes 57: ↑56 and ↓1+55
Comments40

Сравнение методов лечения паховой грыжи

Level of difficultyEasy
Reading time5 min
Views3.9K

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

Читать далее
Total votes 36: ↑26 and ↓10+16
Comments13
1
23 ...

Information

Rating
3,097-th
Location
Россия
Date of birth
Registered
Activity