Всё про Алгоритмы и Структуры данных
7.8K subscribers
342 photos
36 videos
5 files
3.09K links
Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников.

Ссылка: @Portal_v_IT

Сотрудничество, авторские права: @oleginc, @tatiana_inc

Канал на бирже: https://telega.in/c/structuredata
Download Telegram
«Прогеры» или «Битва Големов v4.0»? Сравниваем две настольные игры, обучающие детей основам кода и робототехники

Так уж получилось, что в России уже почти десять лет из настольных игр, которые направлены на обучение младших школьников (и чуть постарше) основам алгоритмики, программирования и робототехники доступны или зарубежные игры типа «Ricochet Robots» или «Robot Turtles». Постарше (с 12–14 лет) могли познакомиться с классикой жанра «RoboRally», а также в последние года появились две сюжетные игры‑головоломки «Quirky Circuits» и «М.А.Р.И.» Я про них писал более года назад.
Но основная «борьба» развернулась между «Прогерами» от Банды Умников и моей «Битвой Големов». И, несмотря на общую направленность, это разные игры как по механикам, так и по применимости. Поэтому решил сравнить игры лоб‑в-лоб достаточно беспристрастно и рассказать об их различиях.

https://habr.com/ru/articles/1028760/

Алгоритмы и Структуры данных
Задание 7 ЕГЭ по информатике: разбираем базу по кодированию изображений с нуля

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

Но на практике статистика неумолима: именно на задачах по кодированию изображений абитуриенты регулярно теряют драгоценные баллы. И проблема здесь кроется вовсе не в сложности самой концепции. Главные враги сдающего — это коварные детали. Ошибка при переводе килобайтов в биты, легкая путаница со степенями двойки и, конечно же, неправильное округление (в какую сторону округлять глубину цвета, если результат получился дробным?). Эти мелочи способны разрушить даже абсолютно верный ход мыслей.

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

https://habr.com/ru/articles/1029206/

Алгоритмы и Структуры данных
Вариация на тему Рида-Соломона

В одном из проектов столкнулся с задачей кодирования данных с целью восстановления потерянных пакетов. Поскольку обработка пакетов осуществлялась полностью на цифровом уровне без доступа к информации от аналогового приемника (hard-decision), то я решил использовать код Рида-Соломона (РС). Обработка пакетов осуществлялась на контроллере esp32-s3, который среди прочего имеет возможность работы с векторами. И необходимо иметь большую силу воли, чтобы не воспользоваться этой интересной возможностью для ускорения вычисления. Собственно эта краткая статья посвящена адаптации и модификации кода РС для возможности использования векторных операций на этом контроллере.

https://habr.com/ru/articles/1033246/

Алгоритмы и Структуры данных
Фазовая синхронизация в системе FMComms5 от Analog Devices и оценка угла прихода сигнала

В этой статье дана инструкция для выполнения фазовой синхронизации в FMComms5 от Analog Devices и реализации метода пеленгации, использующего эту функцию. Оценочная плата FMComms5 обеспечивает высокую точность фазовой синхронизации. В этой статье рассказывается, как выровнять фазы двух приемопередатчиков AD9361 с помощью специальной программной библиотеки libad9361, созданной на основе инфраструктуры ввода-вывода libiio. Фазовое выравнивание необходимо для многих радиолокационных систем, таких как пеленгаторы и когерентные системы MIMO.
Исходный код GNURadio, на котором основан этот пример, был изначально разработан доктором Шрикантом Пагадараи и доктором Трэвисом Коллинзом при финансовой поддержке компании Ettus Research [1]. Недавно доктор Коллинз портировал его на платформу FMComms5, добавив документацию. В настоящее время код доступен по адресу github.com/tfcollins/gr-doa в ветке adi. Этот код распространяется по лицензии GPL3. Реализация на FMComms5 обеспечивает такую же производительность, как и предыдущая работа [1]. Технический документ из [1] также был дополнен авторами оригинальной статьи информацией о FMComms5 и стратегии его внедрения.

https://habr.com/ru/articles/1029232/

Алгоритмы и Структуры данных
Реверс — это сканворд. Как я впервые нормально понял Ghidra

У меня бывают неожиданные заказы, из неожиданных сфер на фрилансе. Недавно писал про то как прилетел большой проект по классификатору фоток. А теперь пришел запрос на реверс! Не могу вдаваться в подробности проекта - много конфиденциального - но я расскажу про конкретный разбор одного .dll файла. Открыл Ghidra, кликнул на функцию, включил декомпилятор - и передо мной встала стена.
Не метафорическая стена. Прям реально стена!

https://habr.com/ru/articles/1029296/

Алгоритмы и Структуры данных
Почему Chrome весит 7 000 Марио или как сжать «Змейку» в 1 000 раз

На вашем диске лежит семь одинаковых моделей птицы Додо. Не благодарите — это ARK заботливо положил их вам в каждое DLC.

Раньше Super Mario Bros весила 40 КБ. Сейчас одно обновление Chrome — это ~7 000 таких Марио. Как мы дошли до жизни такой, и почему все идет по кругу?

В статье пройдем путь от тайлов NES до Neural Texture Compression и рассмотрим змейку в трех версиях: по трем вехам сжатия. Одна из них в 1 120 раз меньше первой. И это не та, в которой ИИ.

https://habr.com/ru/companies/selectel/articles/1029402/

Алгоритмы и Структуры данных
Те, кто не любит отлаживать — против тех, кто не любит писать

В программировании (как и в написании HDL кода и подобных профессиях) есть две школы мысли: чистолисты (строят свою архитектуру с чистого листа и пишут так чтобы поменьше отлаживать) и кодокопатели (отлаживают что есть, дополняя мусором из интернета, чтобы поменьше писать). На это накладывается менеджмент, который пытается комбинировать чистолистов и кодокопателей, иногда неправильным образом, то есть ставит чистолистов править то, что налабали кодокопатели. Это происходит потому, что кодокопатели постоянно выглядят занятыми отладкой, а чистолист часто смотрит в потолок обдумывая дизайн, поэтому менеджмент думает что первые работают быстрее чем вторые, и пытаются соптимизировать “быстроту-качество” вот таким образом.

https://habr.com/ru/articles/1029774/

Алгоритмы и Структуры данных
Попробовали научить AI искать то, чего никто не замечает — слабые рыночные сигналы

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

https://habr.com/ru/articles/1030160/

Алгоритмы и Структуры данных
Совет на ближайшие годы — изучайте ВАЙБ-КОДИНГ

ИИ уже пишет код, чинит баги, генерирует тесты, документацию и помогает запускать продукты быстрее, чем это делали классические команды разработки. И это уже не "будущее когда-нибудь", а реальность, которая меняет рынок уже сегодня

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

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

Подписывайтесь, нас уже 30 тысяч: @vibecoding_tg
Что именно я понимаю под промежуточным представлением (IR) компилятора

Я много думал о том, как проектируются промежуточные представления (IR) для компилятора. В этом посте я поделюсь с вами некоторыми идеями, к которым я пришёл, и поясню, почему считаю их важными.
Главенствующая идея заключается в способности принимать решения, располагая лишь локальной информацией.
Она существует примерно в паре трактовок. Исходим из того, что в каждый момент времени компилируем один какой-то метод, а не занимаемся чем-то сближающимся с трассировкой (трассировка, трейслеты, версионирование базовых блоков, т.д.).

https://habr.com/ru/articles/1030578/

Алгоритмы и Структуры данных
Понять Big O раз и навсегда

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

Смотришь в код — вроде всё логично и красиво. Откуда тормоза?

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

Именно для понимания таких моментов и нужна нотация Big O. И нет, это не академическая муть, которую зубрят только ради прохождения алгоритмической секции на собесе и сразу забывают. Это практический навык. Он нужен, чтобы еще на этапе написания кода понимать: «ага, вот этот кусок при росте нагрузки убьет нам сервер».

https://habr.com/ru/articles/1030772/

Алгоритмы и Структуры данных
«Эстафета хвоста» — алгоритм итеративного обхода дерева со стеком, и почему это — Green Computing

Привет Хабр. Представляю вниманию одну идею, и то, насколько ново мне удаётся её реализовать ново и на данном этапе на уровне Green Computing. Этот сервер (над которым работаю) я планирую использовать как буферную зону защищённую от менеджмента и рекламы (реклама если будет, то только в виде ссылок на рекламные хабы).

https://habr.com/ru/articles/1030914/

Алгоритмы и Структуры данных
Buffer Pool и Clock-sweep: как мы боремся с cache pollution и p99 latency

Один аналитик с одним SELECT count(*) FROM orders способен серьёзно ухудшить p99 latency всего OLTP-трафика. Пока скан читает таблицу страница за страницей, Buffer Pool заполняется «холодными» данными, горячие OLTP-страницы вытесняются, и после окончания скана приложение тянет данные с диска вместо кэша — ровно до тех пор, пока hot working set не прогреется заново. Это классический cache pollution, и с ним рано или поздно сталкивается любая СУБД с честным LRU.
В предыдущей статье мы разобрали API-контракты между слоями OLTP-ядра, USDT/eBPF-наблюдаемость и Adaptive Tuning. Сейчас — разбор Buffer Pool: почему Clock-sweep лучше LRU для конкурентной среды, как BufferRing изолирует сканы от горячего рабочего набора, и почему no-steal это не выбор стиля, а вопрос корректности recovery.
Здесь описана текущая реализация: что работает в коде, какие компромиссы зафиксированы как MVP, где что-то не готово — скажем прямо. За рамками статьи намеренно остаются sharded buffer pool, алгоритмы GCLOCK / CLOCK-Pro / ARC, полный Resource Broker с динамическим перераспределением памяти и bulk write маршрут — это отдельные задачи, у каждой свой дизайн-документ.

https://habr.com/ru/articles/1030822/

Алгоритмы и Структуры данных
Эдсгер Дейкстра. Человек, который придумал параллельные вычисления

Д-р наук, профессор Эдсгер Дейкстра (Edsger W. Dijkstra, 1930−2002) — легендарный голландский и американский учёный, труды которого заложили фундамент современного программирования. Среди всех учёных прошлого Дейкстра оказал самое большое влияние на современную информатику. Он один из разработчиков концепции структурного программированияформальной верификации, распределённых вычислений, построения компиляторов, графовых алгоритмов, дизайна алгоритмов, дизайна ПО, дизайна математических аргументов, языков программирования и операционных систем.
Некоторые статьи Дейкстры всего лишь на несколько страниц становились источником целых новых исследовательских направлений. Ряд современных концепций были впервые выявлены Дейкстрой и носят придуманные им названия. Например, параллельные вычисления.

https://habr.com/ru/companies/ruvds/articles/1027578/

Алгоритмы и Структуры данных
Отечественный суперкартридж для старушки Mega Drive и его киллер-фичи

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

Ко мне в руки попал профессиональный флеш-картридж InviteDRIVE v6 MAX с поддержкой игр Sega Genesis / Mega Drive / Sega CD / Master System / 32x, разработанный широко известным в узких кругах ретрогеймеров Масяней из Новосибирска. Главной, но не уникальной особенностью картриджа является возможность играть во всю библиотеку Sega CD игр различных регионов на оригинальной 16-ти битной консоли фирмы Сега не имея самого дорогостоящего и капризного CD аддона.

https://habr.com/ru/articles/1035910/

Алгоритмы и Структуры данных
Multi-region quorum: «все регионы согласны» против «N из M»

В моём uptime-мониторинге Valpero сейчас семь production-мониторов и десять probe-регионов. Когда я только начал, false-positive алёрты приходили часто — типичная история с single-region проверкой. Поставил quorum-логику. Тут оказалось, что вариантов quorum’а несколько, и они дают разное поведение в пограничных случаях.

Ниже расскажу про два главных подхода — K-of-N (как в Pingdom, BetterStack) и all-must-agree (как у меня) — с реальным кодом, который у меня сейчас в проде.

В конце разберу edge-кейсы которые ломают каждый из подходов, и почему я остановился на all-must-agree с consecutive-failure threshold.

https://habr.com/ru/articles/1035600/

Алгоритмы и Структуры данных
Q-LLL: как мы сделали LLL-редукцию наблюдаемой, управляемой и проверяемой

LLL-редукция давно стала одним из базовых инструментов вычислительной математики, теории чисел, криптографии и анализа решёток. Обычно LLL воспринимается как “чёрный ящик”: на вход подаётся целочисленный базис, внутри выполняется последовательная редукция, на выходе получается новый базис, который удовлетворяет классическим условиям LLL.

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

https://habr.com/ru/articles/1031386/

Алгоритмы и Структуры данных