2
2pegramming
@pepegramming4.5K подп.
2.5Kпросмотров
54.5%от подписчиков
6 февраля 2026 г.
Score: 2.7K
Пятничное чтиво Буду рад предложениям, вопросам и идеям связанным с каналом или архитектурными/техническими вопросами. Можно написать в личку, а можно анонимно. А ответы на вопросы можно прочитать на сайте. ————————————— We built a spreadsheet engine from scratch. В компании GRID решили сделать быстрый движок для таблиц (тут про эксель и GSheets). После работы инженеры решили написать о проблемах, которые возникли, так статья и появилась. В начале рассказывается о том, что таблицы такая же программа, как и обычный код. Отличие в том, что из-за постоянной зависимости между ячейками придется работать с dependency graphs, вместо последовательного выполнения кода. Далее описывается как парсить значения ячеек, чтобы строить графы зависимостей (кроме чисел и значений, присутствуют ссылки и операторы с функциями, которые придется учитывать). Далее рассказывается о том, что делать с волатильными функциями (NOW, RAND), динамическими ссылками (OFFSET, INDIRECT), data spilling и итеративными вычислениями. Далее описаны примеры оптимизаций вокруг условий и больших диапазонов. А в конце найдете информацию о совместимости с другими движками и что планируют в компании делать дальше. Русский перевод #how_it_works ————————————— The challenges of soft delete Если в джире появится задача «сделать удаление данных с последующим восстановлением», первое о чем подумаете — нужно добавлять soft delete. Т.е. колонку deleted_at=timestamp или deleted=bool. Хоть подход прост как палка, стоит помнить о нюансах: в 90%+ случаев данные будут лежать мертвым грузом и занимать место (и индексы), восстановление данных это не только поменять значение поля: иногда это еще и вызовы в сторонние системы и так далее. Автор статьи честно признается, что не любит реализацию soft delete через доп колонку. Поэтому в тексте найдете еще три варианта реализации soft delete: - Удаляем запись и отправляем событие с удалением, которое хранится в s3 или другом «холодном» кеше; - Вешаем на таблицу триггер, который, при удалении записи, делает новую запись в «архивной» таблице; - Берем WAL log (или аналог) и из него достаем удаленные записи, в случае необходимости. Либо подключаем CDC (привет debezium) и повторяем первый вариант. Понравилось, что для каждого из вариантов указываются трейдоффы, с которыми придется жить, если выберете тот или иной из вариантов. #db #soft_delete ————————————— Генетический алгоритм как инструмент инженера Генетический алгоритм — способ «поиска», который поможет в оптимизации и моделировании через случайный перебор и оценку результата. Если слышали о фитнес функциях в контексте архитектуры, то идея пошла из таких алгоритмов. К сожалению, о генетических алгоритмах редко говорят «публично» и тема специфична. Поэтому сегодня статья о том, как реализовать собственный алгоритм. Для чего автор выбрал задачу поиска оптимального расположения деталей для выкройке на листе. В начале текста описывается задача, которая решаться будет (как расположить детали на выкройке). После рассказывается, что за генетические алгоритмы и как подобный вид алгоритмов работает. Попутно узнаете, что такое отбор, скрещивание и мутации в контексте алгоритма. Далее автор создает модель раскройки и изделий (через ширину). Далее описывается, как сделать решение задачи через одну особь и как выбрать нужные ограничения. Кроме того, в конце найдете плюсы/минусы алгоритма, где использовать и на что обращать внимание. Учтите, что текст образовательный, т.е. поможет лучше разобраться в теме и знать что такие алгоритмы существуют (и как сделать собственную реализацию). Тащить в продакшен — на собственный страх и риск. #evolutionary_algorithms
2.5K
просмотров
3660
символов
Нет
эмодзи
Нет
медиа

Другие посты @pepegramming

Все посты канала →
Пятничное чтиво Буду рад предложениям, вопросам и идеям связ — @pepegramming | PostSniper