Pull to refresh
40
0
sysprg @sysprg

User

Send message

Мир за пределами Pandas: достойные альтернативы для работы с данными

Reading time7 min
Views11K

Хабр, привет! Это Леша Жиряков, техлид backend-команды витрины онлайн-кинотеатра KION. В мире дата-аналитики Pandas остается одной из самых популярных библиотек. Но это вовсе не значит, что нет других быстрых, удобных и производительных инструментов. Мой пост покажет альтернативы: от колоночной DuckDB и сверхскоростной Polars до мощного Modin и гибкого Vaex. В подборке я постарался передать главную суть — назначение и преимущества инструмента и его характеристики с GitHub.

Читать далее

Чёрное солнце. Что такое мурмурация, как роение двигает науку и при чем здесь каннибализм

Reading time11 min
Views3.2K

Sort sol — «чёрное солнце». За зловещим названием скрывается, в общем-то, обычное для датской Ютландии явление. По весне и осени праздные туристы, груженые оптикой орнитологи и вертлявые фотографы наведываются в эти хмурые края, чтобы понаблюдать за метаморфирующими облаками скворичных стай. Птицы собираются на ночевку огромными, до миллиона особей, группами и порой застилают собой все небо, отчего солнце словно и правда гаснет раньше, чем обычно.

Миру подобное явление скоординированного полета птиц известно как мурмурация (от лат. murmuratio — «бормотание»). Несмотря на кажущуюся сложность, в своей сути оно подчиняется определенным алгоритмам — как и другие модели роевого поведения. В этом тексте поговорим о том, как устроена мурмурация, практикуют ли роение homo sapiens, какие существуют хайв-технологии и как сделать, чтобы коллеги по стае тебя не съели. Но обо всем по порядку.

Читать далее

Защита схемы от переполюсовки, что может быть проще?

Level of difficultyMedium
Reading time15 min
Views49K
image
«Я не такая», «со мной этого точно не может случиться» — говорили они, но упорно продолжали пихать батарейки в пульт для телевизора не той стороной…

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

Содержание:



Всех неравнодушных к электронике прошу под кат!
Читать дальше →

Сжатие графики при помощи алгоритма LZ4

Level of difficultyMedium
Reading time17 min
Views4.5K

Привет, Хабр! Меня зовут Александр Крестинин, я разработчик встроенного ПО в компании Whoosh. Мы в embedded-команде не только переливаем биты из одного регистра в другой, но и решаем разные бизнес-задачи. Иногда попадаются головоломки. 

Однажды мы подумали, что было бы здорово выводить на экраны самокатов анимации и изображения — показывать инструкции, как пользоваться сервисом, как начать и закончить поездку, и чтобы запускать DOOM.

Зачем?

1) Сделать комфортнее. Удобно видеть инструкции на большом и ярком экране перед глазами, а не нырять за ними в приложение на смартфоне. 

2) Сделать безопаснее. Пользователь меньше отвлекается на телефон, крепче держится за самокат и внимательнее смотрит на всё, что вокруг.

3) Почти у всех привычных устройств уже есть экраны, которые выводят пользователям видео и картинки, а почему бы не сделать то же самое на самокате?

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

Расскажу, как мы нашли решение этой задачи. Прошу под кат.

Читать далее

Баг в реализации SRWLock в Windows вешает многопоточные программы

Level of difficultyMedium
Reading time2 min
Views3.2K

Реализация SRWLock (Slim Reader/Writer Lock) на Windows может привести к серьёзным проблемам: многопоточное приложение может зависнуть (deadlock).

При частой конкуренции многих потоков, удерживающих shared_lock, и хотя бы одного потока, пытающегося получить unique_lock, возможно возникновение ситуации, когда потоки оказываются в состоянии взаимного ожидания. Код выглядит абсолютно корректным, но приложение зависает внутри вызова в WinAPI.

Это касается любых многопоточных программ для Windows, которые явно либо неявно используют SRWLock для синхронизации. В том числе написанных на старых реализациях Rust, пока в Rust не заменили реализацию для Windows, отказавшись от SRWLock (GitHub Issue). В том числе написанных на C# (фикса пока нет) и т.д.

Читать далее

Формальная верификация протокола IBFT: проверяем безопасность византийского консенсуса в блокчейне

Level of difficultyMedium
Reading time13 min
Views892

Добрый день! Меня зовут Кирилл Зиборов, я представляю отдел безопасности распределенных систем Positive Technologies. В этой статье я продолжу рассказывать о том, как мы используем инструменты формальной верификации для предотвращения уязвимостей в различных компонентах блокчейна. Ранее мы верифицировали смарт-контракты дедуктивным методом. В этот раз речь пойдет о протоколах консенсуса — механизмах принятия узлами новых транзакций в цепочку, а именно об алгоритме Istanbul Byzantine Fault Tolerant и в целом о том, как можно гарантировать корректность подобных алгоритмов с помощью метода проверки моделей.

Читать далее

Коронавирус: долгожданное извержение правды

Reading time5 min
Views38K

Комитет Палаты представителей США опубликовал 520-страничный отчёт по COVID-19. И это, конечно, нега для людей, на которых в период пандемии навесили ярлык ковид-диссидента. Тобишь для таких как я. Итак, прямые цитаты из анонса на сайте американского правительства...

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

Про социальную изоляцию:  «рекомендация по социальной дистанции "6 футов друг от друга", из-за которой по всей стране закрывались школы и малые предприятия, была произвольной и не основанной на научных данных. Во время дачи показаний за закрытыми дверями доктор Фаучи заявил, что руководство "как бы просто появилось"».

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

Про цензуру: «представители органов здравоохранения распространяли дезинформацию, используя противоречивые сообщения, поспешные реакции и отсутствие прозрачности. Администрация Байдена даже использовала недемократические и, скорее всего, неконституционные методы — в том числе заставляла компании социальных сетей цензурировать определенный контент COVID-19 — для борьбы с тем, что она считала дезинформацией».

Читать далее

Малопотребляющий датчик с передачей данных по радиоканалу

Level of difficultyMedium
Reading time14 min
Views18K
Несколько лет назад я опубликовал статью о простейших приемниках и передатчиках для обмена данными на частоте 433 МГц (на рисунке внизу левая пара). Публикация была вызвана в основном тем фактом, что абсолютно во всех источниках в интернете приемник подключался неграмотно, и это значительно снижало возможности удобного и дешевого способа связи. Приемник MX-RM-5V (известен также под названием XD-RF-5V) представляет собой дешевую регенеративную схему, которая крайне чувствительна к помехам и капризна к настройке, что хорошо известно радиолюбителям, но почему-то совершенно темный лес для остального мира, включая даже опытных ардуинщиков. Поэтому такой приемник, как минимум, следует включать с отдельным хорошо зафильтрованным аналоговым стабилизатором, что сразу повышает дальность в разы.



Но оказалось, что не все обретенные таким образом пары работают с надлежащей дальностью, а некоторые приемники приходится вовсе отбраковывать (особенно, если их приобретали оптом на AliExpress). Потому здесь я хочу поговорить об проблемах, связанных с другими альтернативами этим модулям, а также указать на более простое и надежное решение, к которому пришел в результате поисков.
Читать дальше →

Разбираем алгоритм полнотекстового поиска BM25

Level of difficultyEasy
Reading time8 min
Views6.1K

BM25, или Best Match 25 — это широко используемый алгоритм полнотекстового поиска. Среди прочего, он по умолчанию применяется в Lucene/Elasticsearch и SQLite. В последнее время в рамках «гибридного поиска» часто начали комбинировать полнотекстовый поиск и поиск по схожести векторов. Мне захотелось понять, как работает полнотекстовый поиск и в частности BM25, поэтому в этой статье я постараюсь разобраться в этом.

Читать далее

Throttling в процессорах — инволюция. Зеленые против Красных

Level of difficultyEasy
Reading time9 min
Views8.1K

Мы привыкли, что производительность процессоров растет с каждой новой моделью. Иначе зачем их покупать? Зеленые технологии в процессорах ранее присутствовали, но легко управлялись через схему питания в Windows. Однако новый кластер серверов от Lenovo сумел неприятно удивить, а после изучения документации возникло много вопросов к архитекторам и архитектуре. И зеленое будущее уже видится не таким приятным.

Читать далее

ESP32 тоже отчасти немножко ПЛИС? Делаем динамическую индикацию на матрице светодиодов за 0 тактов процессора

Level of difficultyMedium
Reading time14 min
Views17K

Пару месяцев назад в очередной раз занесло меня в Акихабару, и конечно же я не мог не заглянуть в свой любимый Akizuki Denshi.

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

Делать нечего, придётся пилить — и давайте попробуем сделать это, совершенно не занимая процессор!

Читать далее

Подключаем «крысу» от ЕС ПЭВМ к современному ПК

Level of difficultyMedium
Reading time8 min
Views9.3K
Приветствую всех!

Этот шедевр советской компьютерной промышленности знаком любому интересующемуся компьютерной историей. А некоторые из тех, кому довелось с ним работать, называли его не иначе как «крысой». И вот спустя много десятилетий после его выпуска я задумался: а что, если подключить этот девайс к обычному компьютеру? Именно этим мы сегодня и займёмся.



Итак, в сегодняшней статье поговорим про мышь от советского персонального компьютера ЕС1841. Узнаем, как заставить её работать и так ли она сурова, как можно подумать. Традиционно будет много интересного.
Читать дальше →

Красивые картинки на скатерти Улама

Level of difficultyMedium
Reading time7 min
Views5.8K

Скатерть Улама и тонкая структура простоты чисел .

Очень много больших картинок

Скатерть Улама

https://ru.wikipedia.org/wiki/Скатерть_Улама https://en.wikipedia.org/wiki/Ulam_spiral ) это очень красивое и наглядное представление структуры простых чисел. Красивая картинка говорит о том, что расположение простых чисел на оси натуральных чисел не случайно. Но вот формулу простую, по которой можно быстро и просто получить следующее простое число еще не придумали.

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

Очень много больших картинок

Увеличение лидирующих нулей в симметричной разреженной матрице

Level of difficultyHard
Reading time6 min
Views1.1K

В предыдущей статье было показано, что при решении СЛАУ с симметричной разреженной матрицей наличие лидирующих нулей приводит к уменьшению количества вычислений. В этой статье будет представлен алгоритм, предназначенный для увеличения количества лидирующих нулей данной матрицы. Если переставить i-ую и j-ую строки, а также i-ый и j-ый столбцы, то матрица останется симметричной. Такие перестановки называют симметричными. Они могут менять количество лидирующих нулей и, если их правильно применять, то количество лидирующих нулей можно увеличить. Другими словами, нам надо сделать так, чтобы все ненулевые члены по возможности находились возле главной диагонали. В частности, если известно, что матрица - ленточная, то делать ничего не надо.

Предлагается следующий алгоритм.

Вначале выбираем столбец ( или строку, что неважно, так как матрица симметричная ) с минимальным числом ненулевых элементов. Если таких столбцов несколько, то выбирается какой-то из них. При помощи симметричной перестановки делаем этот столбец первым.

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

Ниже помимо краткого текстового описания программы приводится много кода на С++, который сам по себе является точным описанием алгоритма.

Читать далее

Lasso, Ridge и кастомные регуляризаторы: основы

Level of difficultyEasy
Reading time5 min
Views1.5K

Сегодня разберем тему, которая хоть и звучит скромно — Lasso, Ridge и кастомные регуляризаторы, — но на практике буквально спасает модели от переобучения. Если у вас бывало так, что модель на тренировочных данных показывает отличные результаты, а при проверке на валидации теряет весь блеск — поздравляю, вы столкнулись с тем самым переобучением! Регуляризация здесь как раз для того и нужна: помогает «усмирить» модель, добавляя ограничения, которые не дают ей запоминать лишние детали.

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

Читать далее

Стабилизируем положение потенциометра, считанное с АЦП

Level of difficultyMedium
Reading time14 min
Views8.6K
Считать показания потенциометра для удобного аналогового управления системой, что может быть проще? Сеть завалена примерами работы с АЦП. Считали значение, вот мы и знаем положение… Но не всё так просто – эти значения всё время будут разными. Близкими, но разными. То есть, программа будет считать, что положение головки регулятора всё время дрожит.



В статье будет показано несколько методов борьбы с этими дрожаниями, начиная от самых простых (которые в подавляющем большинстве случаев достаточны), через более сложные и вплоть до алгоритма, придуманного специально для недавнего проекта. Наверняка, я уже 100500-й, кто такой алгоритм придумал, но после опроса знакомых, оказалось, что в списке тех, кто его собирается опубликовать, мой номер значительно меньше. Среди типовых он не находится. Возможно, кому-то он тоже окажется полезным.
Читать дальше →

Как сварить метровые столбы стали или запитать рельсотрон (до 1 млн ампер и более)? Ответ: нужен диск Фарадея

Level of difficultyMedium
Reading time8 min
Views29K
Картинка — YouTube-каналы Marb's lab, Science Exxience

Среди генераторов особняком стоит одно устройство, которое лежит в основе современных электрогенерирующих динамо-машин — так называемый диск Фарадея.

Несмотря на ряд недостатков, он обладает несколькими достаточно впечатляющими характеристиками:

  • крайне просто устроен, что позволяет проводить эксперименты по самостоятельной постройке такого устройства практически любому желающему;
  • сразу генерирует постоянный ток без каких-либо выпрямителей;
  • при достаточно малом выходном напряжении (может быть скорректировано, об этом ниже) может потенциально генерировать огромные токи (до миллиона ампер и более), что позволяет использовать его в качестве источника питания для мощной электросварки (сразу сваривающей даже бруски металла) и рельсотронов (над этим типом питания, в частности, работала американская DARPA), заменяя собой батарею конденсаторов.
Читать дальше →

Почему ток течет через электрод

Level of difficultyEasy
Reading time8 min
Views6.8K

Технически подкованные читатели Хабра, разумеется, знают, что ток - это направленное движение носителей заряда, в проводниках 1-го рода такими носителями являются электроны, а в носителях 2-го рода (электролитах) - ионы, их движение и образует электрический ток в цепи. Я думаю, каждый знает, что измерить сопротивление раствора, просто засунув в него два щупа мультиметра, не получится, однако почему так, и как именно движение электронов в месте контакта проводников 1-го и 2-го рода превращается в движение ионов и наоборот, обычно в технике умалчивается. И сегодня мы как раз об этом и поговорим. Для тех, кто не хочет много читать, в конце я поместил синопсис моего сегодняшнего повествования.

Добро пожаловать под кат

Считаем доверительные интервалы для долей и медианы по нормальному распределению (готовимся к собесу на Аналитика)

Level of difficultyMedium
Reading time5 min
Views9.8K

Недавно на выходном оффере в Авито спрашивали задачку про нахождение доверительного интервала для медианы. Эта статья появилась в результате моего резерча по этому вопросу.

В данной статье я напишу алгоритм рассчета доверительных интервалов для:
— Среднего значения
— Медианы (через нормальную аппроксимацию к биномиальному распределению)
— Доли (через нормальную аппроксимацию к биномиальному распределению)

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

Читать далее

Принцип цифрового управления непосредственным преобразователем напряжения

Reading time5 min
Views9.3K

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

К оригинальному принципу построения цифрового регулятора я пришёл без малого 20 лет назад. Принцип простой, как говорится, “лежит на поверхности”, позволяет получить отличное быстродействие, качество переходных процессов и отсутствие выбросов токов дросселя. Но вот, что интересно для меня, я нигде больше за эти 20 лет на практике не встретил данного подхода к построению регулятора по аналогичному принципу (плохо искал?).

Подразумевается, что читатель понимает: основы ТОЭ (теоретические основы электроцепей), принципы формирования ШИМ (широтно-импульсной модуляции).

Читать далее

Information

Rating
Does not participate
Date of birth
Registered
Activity