Search
Write a publication
Pull to refresh
-2
0
Send message

S3-FIFO: новый эффективный алгоритм вытеснения из кэша на основе очередей FIFO

Level of difficultyMedium
Reading time18 min
Views9.3K
В этой статье я расскажу о простом и масштабируемом (Simple, Scalable) алгоритме вытеснения данных из кэша на основе трёх статических (Static) очередей FIFO (S3-FIFO). После проверки на 6594 трассировках кэшей 14 компаний мы показали, что S3-FIFO имеет меньшую частоту промахов, чем 12 лучших алгоритмов, разработанных в прошлые десятилетия. Более того, эффективность S3-FIFO устойчива — он имеет наименьший средний показатель промахов для 10 из 14 датасетов. Использование очередей FIFO позволяет S3-FIFO достичь хорошей масштабируемости с пропускной способностью в шесть раз больше по сравнению с оптимизированным LRU в cachelib на 16 потоках.

Мы пришли к выводу, что доступ к большинству объектов в смещённых нагрузках кэша выполняется только за короткий промежуток времени, поэтому критически важно быстро вытеснять их из кэша. А главная особенность S3-FIFO — это небольшая очередь FIFO, отфильтровывающая большинство объектов, не давая им попасть в основной кэш.

Иллюстрация работы S3-FIFO (с использованием порогового значения перехода из маленького в основной кэш, равного 1)
Читать дальше →

Чек-лист: что изучать джуну, кроме «матчасти»

Level of difficultyEasy
Reading time5 min
Views18K

Привет! Меня зовут Илья, я – DevRel в «Ростелекоме» и «Ростелекоме Информационные Технологии». Как современная компания мы постоянно совершенствуемся и поощряем это у наших сотрудников: от стажёров до опытных специалистов. Поэтому когда как не в начале учебного года поговорить об обучении. А именно о том: что важно знать любому айтишнику.

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

Читать далее

Шпаргалка для собеса по GoLang

Reading time30 min
Views57K

"Правильно заданный вопрос - половина ответа". Осваиваю профессию Prompt Engineering. Это ответы на вопросы. Мопед не мой. Спасибо, Codeium. Не обрабатывал наводящие подвопросы, а надо бы. Но может быть кому-то пригодится и в таком виде.

Читать далее

Подборка бесплатных ресурсов для обучения тестировщика

Level of difficultyEasy
Reading time2 min
Views89K

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

Все материалы использовал или использую сам.

Читать далее

Чтобы двигаться быстро, решатели квантовых лабиринтов должны забыть о прошлом

Level of difficultyMedium
Reading time9 min
Views2.6K

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

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

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

Исследователи давно задавались вопросом, неизбежен ли этот компромисс. Неужели невозможно быстро найти выход, не забыв дорогу?

Читать далее

MongoDB vs PostgreSQL. Сравнение документо-ориентированной и реляционной базы данных

Level of difficultyEasy
Reading time6 min
Views17K

Дети часто задаются вопросом - кто сильнее, кит или слон? каратист или боксер? В этой статье мы попробуем ответить на на похожий вопрос, сравнив SQL (ну или почти SQL) базу данных PostgreSQL и NoSQL базу данных MongoDB. И понять, для каких проектов лучше подойдет реляционная PostgreSQL, а для каких MongoDB.

Данное сравнение также важно, потому что, учитывая новый функционал, MongoDB стала обладать некоторыми качествами SQL СУБД, включая многодокументные ACID-транзакции, вторичный индекс и расширенные возможности запросов. А PostgreSQL расширяет возможности работы с JSON, включаяиндексирование и оптимизацию запросов.

Читать далее

Почему тип поля enum на уровне базы — зло

Level of difficultyEasy
Reading time4 min
Views41K

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

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

Но это в теории. А что на практике? Рассмотрим под катом.

Читать далее

Открытой системе — открытый курс: автоматизированный Linux курс для корпоративного обучения

Level of difficultyMedium
Reading time6 min
Views15K

Возможно, вы ловили себя на мысли, что было бы неплохо провести для коллег-новичков в Linux небольшой курс с практическими задачками. Такой курс, чтобы после его прохождения, они могли использовать ОС на уровне продвинутого пользователя, активно пользоваться терминалом, писать bash-скрипты, шарить за wildcard и SSH-туннели и прочую магию Linux. При этом было бы здорово, чтобы оценка за выполнение практической работы выставлялась в LMS автоматически, а вы бы только отслеживали прогресс коллег в электронном журнале и помогали с затыками. Если вы узнали себя в описании - эта статья для вас. Материалы этого курса также могут быть полезными для преподавателей учебных заведений, желающих добавить практики в свои курсы по Linux.

Читать далее

Эволюция технологий виртуализации сети в Linux

Level of difficultyMedium
Reading time11 min
Views26K

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

Читать далее

Монтируем шары для юзеров

Level of difficultyMedium
Reading time9 min
Views30K

Всем привет. Монтируете ли вы шары, как их монтирую я? Вероятно, нет, т. к. очень крутой опции multiuser на просторах интернета уделено слишком мало внимания, а man mount.cifs в её отношении весьма немногословен и скуп на наглядные примеры. Именно это и сподвигло меня поделиться с вами парой «рецептов», которые могут облегчить вам и вашим пользователям движение в сторону отечественных десктопов и ИТ-инфраструктур.
Читать дальше →

Как работают select_related и prefetch_related в Django

Level of difficultyMedium
Reading time8 min
Views49K

Часто определение разницы между select_related и prefetch_related звучит как “первый для ForeignKey полей, второй для ManyToMany”, однако это описание не раскрывает суть работы этих методов. Ниже я попробовал на примерах показать разницу между этими методами и какое влияние они оказывают на сгенерированный SQL для получения данных.

TLDR: Статья будет в первую очередь полезна тем кто начинает свое знакомство с Django, а также тем, кто использует select_related/prefetch_related в ежедневной работе, но не углублялся в глубь Django.

Читать далее

Angular Resource или почему я никогда не использовал NgRX

Level of difficultyMedium
Reading time11 min
Views4.3K

Около 5 лет назад я пересел с Реакта на второй Ангуляр и первое, чего мне там не хватило был модуль angular-resource из первого Ангуляра. Вменяемых аналогов я не нашел, поэтому за неделю написал свою библиотеку. Решение оказалось настолько удачным, что практически без изменений дошло до сегодняшнего дня. Используется в куче проектов, работает стабильно (не смотря на то, что до сих пор там нет ни одного теста), в общем, есть о чем рассказать.

Пойдем от простого к сложному...

Книга «Data Science в действии»

Reading time8 min
Views6.2K
image Привет, Хаброжители!

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

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

Асинхронные микросервисы на Python

Level of difficultyEasy
Reading time8 min
Views17K

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

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

Читать далее

Создание шейдера обратного фи-феномена в Unity: мой опыт

Level of difficultyMedium
Reading time10 min
Views3.2K

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

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

Внимание: в статье есть яркие мигающие картинки, будьте осторожны

Читать далее

Протоколы в Python

Level of difficultyEasy
Reading time8 min
Views30K

В Python 3.8. появилась новая примечательная возможность — протоколы (protocols). Протоколы — это альтернатива абстрактным базовым классам (abstract base classes, ABC). Они позволяют пользоваться структурной подтипизацией (structural subtyping), то есть — осуществлять проверку совместимости классов исключительно на основе анализа их атрибутов и методов. В этом материале мы поговорим о протоколах в Python и разберём практические примеры работы с ними.

Читать далее

В Go 1.21 существенно расширяется стандартная библиотека

Reading time4 min
Views15K
// теперь в Go так можно!
slices.Contains(s, v)

Год назад в блоге Каруны мы писали про дженерики в Go, и там упоминалось, что гошное сообщество разделилось на две части. Не всем это нововведение было нужно, особенно в простом продуктовом коде. И надо сказать, это до сих пор так, дженерики по-прежнему используют далеко не все проекты.


Однако для стандартной библиотеки Go это было по-настоящему царским подарком. Появились новые стандартные обобщенные функции, и, отстоявшись в экспериментальном репозитории golang.org/x/exp, теперь появятся в Go 1.21. Релиз буквально через месяц.


TLDR: появилось множество функций по работе со слайсами, мапами, а также новый логгер с (почти) всеми нужными фишечками.


Лично для меня знаковым событием стало появление возможности поиска элемента в слайсе и получение ключей мапы, потому что ну давно пора, 10 лет языку.


Но давайте обо всём по порядку.

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

Памяти Кевина Митника — хакера, ломавшего ФБР, АНБ и Кремниевую долину. Часть 1: бурная юность тёмного гения

Level of difficultyEasy
Reading time9 min
Views54K

16 июля 2023 года в возрасте 59 лет наш мир покинул Кевин Митник — один из самых знаменитых и архетипичных хакеров в истории. В середине 90-х он считался самым разыскиваемым хакером в мире, и было за что: Митник лихо взламывал сети корпораций и правительства США, обходил большинство систем безопасности, прослушивал агентов ФБР, добывал тонны конфиденциальной информации и данных о банковских картах, включая счета топов Кремниевой долины, — вот только денег, как считается, он никогда не воровал. Ну а закрыв проблемы с американским законом, Кевин Митник превратился в одного из лучших специалистов по кибербезопасности. Вспомним о человеке, на основе которого во многом и сформировался классический образ хакера 90-х годов.
Читать дальше →

Поиск кратчайшей траектории на поверхности реконструированного МРТ изображения

Level of difficultyMedium
Reading time7 min
Views4.7K

Привет, Хабр! Хочу рассказать о том, как я решал задачу связанную с обработкой и визуализацией томографических изображений, а именно — измерение и поиск кратчайшей траектории на поверхности 3D изображения. Одна из областей применения — измерение антропометрических данных на КТ/МРТ исследованиях.

Читать далее

От джуна до профи: прокачиваем нужные компетенции

Level of difficultyEasy
Reading time8 min
Views3.4K

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

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

«Недавно я устроилась джуном на работу-мечты. Меня взяли в довольно известную в России веб-студию. Я в течение полугода слала сюда резюме, напрашивалась на собес и вот мечта сбылась. Но оказаться в IT-среде не имея никакого профильного бэкграунда - то еще испытание. Словно попадаешь на другую планету. Ничего не понимаешь. Все менеджеры с опытом, у всех десятки проектов за плечами, а я, ощущая себя полной дурой, в очередной раз спрашиваю “А это задача на бэк или на фронт?” Ощущение того, что я ниже плинтуса не покидает. Кажется, что я тупо мешаюсь под ногами и программисты быстрее все сделают, если я лезть не буду. Но я же менеджер проекта, а значит именно я должна говорить им, что делать. Вот как быть? Все чаще думаю, что я не на своем месте. Может уволиться? Но мне нравится студия и то, что в ней происходит, какие проекты делают. Хочу быть частью этого». 

Читать далее

Information

Rating
Does not participate
Registered
Activity