Pull to refresh
39
0
sysprg@sysprg

User

Send message

Делаем адресные 7-сегментные дисплеи своими руками

Level of difficultyEasy
Reading time3 min
Reach and readers7.3K

Управление несколькими 7-сегментными дисплеями часто оказывается сложнее, чем кажется на первый взгляд: десятки проводов, резисторы, громоздкая схема. В этом проекте показано, как с помощью чипов WS2811 упростить задачу — объединить любое количество дисплеев в цепочку и управлять ими всего по одной линии данных. Минимум компонентов, пайка SMD и высокая модульность делают подход особенно удобным для тех, кто ценит аккуратность и масштабируемость в своих проектах.

Читать далее

Модель датчика энтропии из веток и шишек

Level of difficultyEasy
Reading time6 min
Reach and readers4.2K
TL;DR: Расскажу, как из распространённых компонентов сделать генератор электрического шума с широким спектром, основанный на эффекте лавинного пробоя обратносмещённого p-n перехода. Поделюсь результатами исследования шумовых характеристик некоторых стабилитронов.


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

Обобщенный алгоритм Дейкстры

Level of difficultyMedium
Reading time5 min
Reach and readers3.9K

Хочу поделиться знанием, которое не является секретом, в каких-то курсах по алгоритмам оно наверняка дается, но нагуглить его совсем не просто. Поэтому пусть будет.

Алгоритм Дейкстры можно обобщить на произвольную функцию длины пути, если только она удовлетворяет трем условиям:

Монотонность. При добавлении ребра к пути, его длина не уменьшается.

Консистентность. При добавлении одинакового ребра к путям одинаковой длины, получившиеся новые пути имеют одинаковую длину.

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

Под катом я привожу доказательство корректности обобщенного алгоритма и показываю, как его применить в задаче на литкоде: Trapping rain water II.

Читать далее

Почему мир теряет цвет?

Level of difficultyEasy
Reading time4 min
Reach and readers76K

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

Всё это указывает на одно: цвет исчезает из нашего мира.

Читать далее

Алгоритмы консенсуса Paxos, Raft и Zab в распределённых системах

Level of difficultyMedium
Reading time31 min
Reach and readers4.4K

В распределённых системах критически важно обеспечить консенсус – согласованность данных или решений между множеством узлов (серверов), даже при сбоях и задержках сети. Алгоритмы консенсуса позволяют группе несовершенных узлов действовать как единое надёжное целое. Три классических алгоритма – Paxos, Raft и Zab – стали основой для построения отказоустойчивых систем. Они гарантируют, что при наличии кворума узлов (обычно большинства) все узлы придут к единому решению и последовательности операций, сохраняя консистентность данных. В данной статье мы рассмотрим устройство этих алгоритмов «под капотом», их этапы (выбор лидера, репликация журнала, обработка сбоев и восстановление), области применения в реальных системах (от координаторов в кластерах Kubernetes и Apache Kafka до распределённых баз данных), а также сравним готовые реализации (такие как etcd, ZooKeeper, Consul и др.) по ключевым характеристикам.

Читать далее

Системный абсурд: как бюрократия и алгоритмы подменяют смысл

Reading time12 min
Reach and readers3.3K

«Системы логичны, но не разумны» 

Про конфликт между рациональностью системы и человечностью её участников, абсурдные правила, бунт и то можно ли без правил и регламентов обойтись. От опыта взаимодействия с HR и бюрократией корпоративной- до Камю и Кафеки.

Читать далее

Дизеринг в графике и вычислениях: математическая элегантность сеток с низким расхождением

Level of difficultyMedium
Reading time10 min
Reach and readers2.2K

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

Читать далее

Логистическая и Softmax-регрессии. Основная идея и реализация с нуля на Python

Level of difficultyHard
Reading time9 min
Reach and readers22K

Начнём с более простого. Логистическая регрессия — линейный бинарный классификатор, основанный на применении сигмоидальной функции к линейной комбинации признаков, результатом которого является вероятность принадлежности к определённому классу. Обычно порог устанавливается 0.5: если вероятность меньше порога — класс относится к 0, а если больше — к 1. В принципе, условия определения логистической регрессии такие же как и у линейной за исключением бинаризации таргета.

Читать далее

Метод Уэлфорда и многомерная линейная регрессия

Reading time8 min
Reach and readers23K

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


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


Читать дальше →

Линейная регрессия. Основная идея, модификации и реализация с нуля на Python

Level of difficultyHard
Reading time16 min
Reach and readers85K

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

Читать далее

Увидеть и понять цвет

Level of difficultyMedium
Reading time12 min
Reach and readers3.8K

Можно ли белый свет собрать из двух монохроматических источников? Может ли цвет быть относительным? Умеет ли зрение вычитать цвета? Если типов колбочек три, почему цветовое пространство плоское? Можно ли «на глаз» оценить цветопередачу белого света?

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

Читать далее

Незаявленные проблемы микросхемы SG3525

Level of difficultyEasy
Reading time3 min
Reach and readers7.8K

Приветствую уважаемые читатели. В ходе своей основной деятельности часто приходится проектировать различные DC/DC преобразователи на разные напряжения и мощности. Одной из самых распространенных микросхем помимо TL494 является разработанная фирмой Texas Instruments микросхема SG3525.

Немного информации о данной микросхеме...

Читать далее

Метод Монте-Карло в алгоритме обратного распространения ошибок с параллельными вычислениями

Level of difficultyMedium
Reading time5 min
Reach and readers5.6K

Был проведён эксперимент для проверки, можно ли существенно уменьшить объём вычислений в алгоритме обратного распространения ошибок с параллельными вычислениями за счёт использования на каждом шаге обучения только части обучающих образцов, выбранных случайным образом, а также определение того, какой выигрыш по времени даст использование языка Ассемблера в самых внутренних циклах (в программе, написанной на языке C++).

За основу был взят классический персептрон и алгоритм обратного распространения ошибок, основанный на методе градиента, который объяснялся на курсе Mashine Learning Стэнфордского университета. Он был доработан, чтобы можно было использовать параллельные вычисления. Была написана программа на языке C++ для Linux, её функции (создание, обучение нейронной сети, распознавание данных, закачка больших файлов на сервер и т. п.) вызываются из программ, написанных на любых языках программирования, по протоколу Socket.

Для параллельных вычислений создаётся ntheads объектов нейронной сети, где ntheads — количество потоков (процессоров), в которые записываются части большого массива обучающих образцов, и на каждом шаге алгоритма обратного распространения ошибок совершается прямое и обратное распространение для каждого образца, имеющегося у объекта нейронной сети. Вычисления для каждого объекта производятся в отдельном потоке. Результатом этих вычислений являются суммарные градиенты слоёв сети каждого объекта, они суммируются друг с другом, и полученные градиенты используются для модификации матриц весов нейронной сети, которые затем прописываются во все слои сети объектов нейронной сети.

Читать далее

Обратное распространение ошибки… на пальцах… без формул

Level of difficultyMedium
Reading time3 min
Reach and readers5.6K

Общая суть метода «обратного распространения ошибки» от простого примера до создания полносвязной нейронной сети.

Читать далее

Не вздумайте переписывать код? В смысле?

Level of difficultyEasy
Reading time5 min
Reach and readers3.6K

В очередной раз кто-то на ЛинкедИне решил подурачиться. Говорит, мол, Илон Маск решил переписать программное обеспечение службы соцобеспечения США на новый лад. Ай-яй-яй, какой же он дурень дуболомный — не переписывайте ничего, что работает уже 40 с лишним лет.

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

Но у нас на дворе сейчас 2025 год.

Читать далее

Библиотека для кэширования Caffeine: анализ кода

Reading time18 min
Reach and readers3.4K

То и дело, прожигая время за чтением reddit, я натыкаюсь на очередной пост, в котором упоминается метод S3 FIFO и говорится, что он лучше LRU (вытеснение реже всего используемых значений) — потому, что даёт более низкий процент промахов кэша. Видные компании, в частности, RedPandas, Rising Wave и Cloudflare уже внедрили S3 FIFO у себя на различных мощностях, что только подогрело мой интерес к нему. Кэши — чертовски интересная тема, а по работе мне приходится сильно полагаться на работу с кэшами при обслуживании нескольких сервисов. Так что я был уверен, что рано или поздно мне потребуется протестировать S3 FIFO или, как минимум, удостовериться, что я понимаю ключевые идеи, заложенные в этой технологии.

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

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

Читать далее

Более быстрые хеш-таблицы: претенденты на место SwissTable

Level of difficultyMedium
Reading time11 min
Reach and readers9.7K

24 ноября 2021 года на сайте ArXiv.org была опубликована научная статья «Крошечные указатели» (Tiny Pointers) с описанием новой структуры данных — «крошечных» указателей, которые указывают путь к фрагменту хранимых данных и занимают меньше памяти, чем традиционные указатели.

Осенью 2021 года эту статью заметил Андрей Крапивин (Andrew Krapivin), студент Ратгерского университета в Нью-Джерси, и не придал ей особого значения, пишет Quanta Magazine, журнал о последних достижениях в математике (перевод статьи на Хабре). Только через два года он нашёл время, чтобы внимательно ознакомиться с материалом. И понял, насколько это прорывное изобретение, если применить его для оптимизации хеш-таблиц.

Данная тема уже упоминалась на Хабре, но заслуживает более подробного обсуждения.
Читать дальше →

Измерительный мост Уитстона — электронные весы

Level of difficultyEasy
Reading time8 min
Reach and readers7.9K
Наверняка вы видели на принципиальных схемах характерную ромбовидную структуру. Схема электрического моста содержит в себе элегантную красоту. А содержащийся в ней технический принцип достоин отдельной статьи. Пару лет назад, когда я разобрался и понял суть, случилось мини-озарение, волшебством которого хочу поделиться с вами.


Посмотрите на схему, левая и правая части электрически эквивалентны. Измерительный мост, или мост Уитстона, состоит из двух параллельно включённых резистивных делителей напряжения. На анимации показан случай, при котором потенциалы двух средних точек обоих плечей моста равны. Равновесное состояние достигается при равенстве соотношений R2/R1 и R4/R3.

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

Феномен BYD. Как китайский профессор вырастил автомобильного монстра

Reading time15 min
Reach and readers15K

За 30 лет BYD прошёл путь от небольшого производителя аккумуляторов до главной автомобильной компании Китая. BYD растёт в полтора раза каждый год, обогнал Tesla и дышит в спину Toyota и Volkswagen. Разбираемся, за счет чего этот китаец так разогнался.

Читать далее

Information

Rating
Does not participate
Date of birth
Registered
Activity