Search
Write a publication
Pull to refresh
28
0
Anton Vasin @tony-space

Software Engineer

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 time17 min
Views9.4K

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

Читать далее

Подводные камни С++. Решаем загадки неопределённого поведения, ч. 1

Reading time11 min
Views17K

Изучение и понимание неопределённого поведения — важный шаг для разработчика C++, поскольку undefined behavior бывает источником серьёзных ошибок и проблем в программах. UB может проявляться в разных аспектах языка, включая операции с памятью, многопоточность, арифметические вычисления, работу с указателями и так далее.

Под катом мы погрузимся в мир неопределённого поведения в C++ и рассмотрим некоторые примеры ситуаций, в которых оно может возникать.

P.S.: Часть приведённых в статье примеров вдохновлены материалами, которые можно посмотреть в разделе «Полезные ссылки».

Читать далее

Это норма — 4: решение проблем с картами нормалей

Reading time9 min
Views40K
image

Часть 1: что такое карты нормалей и как они работают

Часть 2: как запекаются карты нормалей

Часть 3: типы карт нормалей

Это четвёртая часть туториала о картах нормалей, но она независима от остальных частей и её можно читать отдельно.

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

Поверхность по сети кривых

Reading time11 min
Views3.1K

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

Заранее предупреждаем. Дальше вам встретится множество геометрических терминов и формул. А кто говорил, что будет легко?!

О различных аспектах построения поверхности по сети кривых, а также полезных для ее практической реализации тонкостей, рассказывает Павел Егоров, математик-программист в C3D Labs.

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

Читать далее

Уйти нельзя остаться — что делать, когда очень хочется уволиться

Reading time12 min
Views61K

Согласно статистике, в РФ работу меняют в среднем раз в 3,5 года, а в США — раз в 4,1 года. Но статистика — всего лишь цифры, в неё попадают и те, кто меняет работу каждые 3-6 месяцев, и те, кто остается с компанией по 10-15 лет. Если прямо сейчас вы уже занесли ручку над заявлением об увольнении, предлагаю подумать, подышать и еще раз проверить все причины своего решения. 

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

Привет, Хабр! Меня зовут Рушана Каюмова, я — Lead HR в Экспресс 42. Эта статья посвящена скользкой и неприятной теме увольнения. Это только кажется, что уволиться — просто. На деле во всех историях, которые я слышала о смене работы, возникали какие-то шероховатости. Предлагаю пройтись по процедуре. Эта информация будет полезна всем, у кого есть работа, а также лидам и руководителям. Ведь каждый рано или поздно сталкивается с необходимостью уволиться самому или с увольнением сотрудника.

Читать далее

Цвет: от шестнадцатеричных кодов до глаза

Reading time16 min
Views55K


Почему мы воспринимаем background-color: #9B51E0 как этот конкретный фиолетовый цвет?



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

Вычисление касательного базиса налету

Reading time8 min
Views2.1K

Этот пост написан автором в далёком 2013 году как дополнение к статье из 2006 года. Тем не менее, предпосылки к отказу от хранения предрассчитанных касательных справедливы и в 2022, а вывод формул изложен понятно и без излишеств. В наше время расчёт касательных для каждого пикселя обычно работает быстрее чем их выборка из буфера вершин. Давайте же разберёмся как из интерполированной нормали, координат вершины и текстурных координат сделать правильный базис касательного пространства прямо во фрагментном шейдере.

Читать далее

Как правильно отвечать на вопрос “Какие у вас зарплатные ожидания?” на рынке США

Reading time6 min
Views69K

На первом интервью чаще всего рекрутер может задать вопрос о зарплатных ожиданиях кандидата — “What Are Your Salary Expectations?”. Я принимаю участие в найме продукт-менеджеров, дизайнеров и инженеров и хочу поделиться с вами своим опытом как правильно отвечать на этот вопрос применительно к рынку США.

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

Читать далее

О сетевой модели в играх для начинающих

Reading time11 min
Views41K
image

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

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

В целом существует два основных типа сетевых архитектур: peer-to-peer и клиент-серверная. В архитектуре peer-to-peer (p2p) данные передаются между любыми парами подключенных игроков, а в клиент-серверной архитектуре данные передаются только между игроками и сервером.

Хотя архитектура peer-to-peer по-прежнему используется в некоторых играх, стандартом является клиент-серверная: она проще в реализации, требует канал меньшей ширины и облегчает защиту от читерства. Поэтому в этом руководстве мы сосредоточимся на клиент-серверной архитектуре.
Читать дальше →

Как в Java устроено выделение регистров в памяти

Reading time6 min
Views15K

Привет, Хаброжители! Обратите внимание на большую распродажу в честь Старого Нового года.

Когда виртуальная машина Java компилирует ваш исходный код Java в машинный, одна из задач, которые она должна при этом выполнить – решить, где хранить локальные переменные Java и другие подобные временные значения. В вашей машине отсутствует концепция локальных переменных, поэтому на этапе компиляции необходимо определиться, какое место в памяти стека (какой машинный регистр) будет использоваться для хранения каждой переменной. Эта операция называется «выделение регистров». Может показаться, что выделение регистров – сложная абстрактная теоретическая тема, но в этом коротком посте я покажу, как сначала соотнести исходный код Java с теорией, потом понять, как его видит компилятор, а потом – показать результирующий машинный код. В данном случае моя цель – продемонстрировать, что все эти концепции очень легко опробовать на практике с реальным компилятором. 

Читать далее

Где научиться оформлению резюме под зарубежные компании?

Reading time1 min
Views5.8K

Cобрала ссылки на ресурсы Harvard, Yale, Stanford, Washington Universities по оформлению резюме под американские и международные вакансии. Подходит для удаленных вакансий, проверено на собственной шкуре.

Читать далее

Уехать и остаться: чек-лист по релокации на кейсах от 132 специалистов

Reading time18 min
Views42K

Надоела питерская серость или московские пробки — и вот вы заводите трактор собираете чемодан и улетаете жить и работать в страну вечного лета (или зимы, кому что ближе). Так выглядит мечта любого, кто задумывается о релокации. Ежегодно российские IT-специалисты отправляются за границу за высоким доходом и качеством жизни. 76% из них довольны и не возвращаются, 36% пробуют уехать ещё раз, но в другую страну. Лишь 8% разработчиков принимают решение вернуться в Россию навсегда. 

Мы в Get Me IT собрали опыт 132 релоцированных и на его основе составили чек-лист: как подготовиться к переезду, чтобы не было невыносимо больно. В статье много личных историй: учись на чужих ошибках, прежде чем делать свои.

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

Читать далее

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

Reading time11 min
Views23K
image
Минимальный вариант протезирования, позволяющий жевать стейк лет этак в 75.

Взрослые дети часто не знают, что у пожилых родителей есть проблемы с зубами. Родители могут не поделиться по разным причинам и по нашему опыту нередко пытаются решить что-то своими силами, когда уже поздно и неэффективно. А зубы очень сильно влияют на качество жизни пожилого человека и его самоощущение. Когда можно спокойно жевать пищу, не испытывать неудобство в разговоре (чтобы зубы не выпадали) — это уже хорошо. Но многие привыкли хранить зубы в стаканчике, даже не зная, что давно уже можно сделать всё гораздо лучше и удобнее. Правда, конечно, не в рамках ОМС. То есть часто сами они позволить себе такое не могут, а обременять детей не хотят. Детям же надо знать, что стоматологическое здоровье влияет на здоровье всего организма, и снижение воспалительной нагрузки сильно облегчит прогнозы многих заболеваний.

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

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

OOX 2.0: Out of order execution made easy

Reading time13 min
Views2.3K

As Intel Threading Building Blocks (TBB) is being refreshed using new C++ standard, deprecating tbb::task interface, the need for high-level tasking interface becomes more obvious. In this article, I’m proposing yet another way of defining what a high-level parallel task programming model can look like in modern C++. I created it in 2014 and it was my last contribution to TBB project as its core developer after 9 wonderful years of working there. However, this proposal has not been used in production yet, so a new discussion might help it to be adopted.

Read more

Атопический дерматит (нейродермит): что сломалось и как лечить

Reading time11 min
Views81K
image
Одно из возможных проявлений атопического дерматита

Знаете, чему учат студентов-медиков, когда они в первый раз попадают на курацию по кожно-венерологическим заболеваниям? Правильно общаться с пациентом и корректно его осматривать. Типичный студент, увидевший кожу с неприглядными корочками или покраснениями, сразу отодвигается на полтора метра и делает круглые глаза. А потом чуть ли не палочкой пытается тыкать в пациента, стараясь не приближаться. Людей это расстраивает, особенно с учётом того, что большинство пациентов там вовсе не болеет чем-то страшным и заразным.

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

  1. Базовая причина связана с генетическими дефектами, которые мы пока не можем чинить, несмотря на все успехи генотерапии.
  2. Есть куча непонятных факторов, которые могут запускать этот процесс.

В итоге можно попытаться загнать заболевание в постоянную ремиссию. Сегодня мы поговорим:

  1. Что это за патология, с которой сталкивается около 20 % людей.
  2. Что ломается в организме у атопиков.
  3. Как это связано с аллергией.
  4. Что лучше мазать на кожу.
  5. Почему антидепрессанты могут сильно помочь.

Под катом будет несколько фотографий повреждённой кожи, но не ужас-ужас, как вы и просили.
Читать дальше →

Архитектура современных корпоративных Node.js-приложений

Reading time12 min
Views100K
Ох, не зря в названии намёк на нетленку Фаулера. И когда фронтенд-приложения успели стать настолько сложными, что мы начали рассуждать о высоких материях? Node.js… фронтенд… погодите, но Нода же на сервере, это бэкенд, а там ребята и так всё знают!



Давайте по порядку. И сразу небольшой дисклеймер: статья написана по мотивам моего выступления на Я.Субботнике Pro для фронтенд-разработчиков. Если вы занимаетесь бэкендом, то, возможно, ничего нового для себя не откроете. Здесь я попробую обобщить свой опыт фронтендера в крупном энтерпрайзе, объяснить, почему и как мы используем Node.js.
Читать дальше →

Как бы я изучал Data Science, если бы начал пару лет назад, или Руководство по эффективному изучению науки о данных

Reading time5 min
Views31K
Когда я только начал своё путешествие к науке о данных, я потратил много времени на то, чтобы понять, с чего начать, что я должен узнать в первую очередь и какие ресурсы должен использовать. За последние два года я узнал несколько вещей, о которых хотел знать раньше, например о том, стоит ли сначала сосредоточиться на программировании или статистике, какие ресурсы я должен использовать для изучения новых навыков, как я должен подходить к изучению этих навыков и так далее. Таким образом, эта статья написана, чтобы дать направления и идеи для тех, кто изучает Data Science.

Приятного чтения!

Портирование Detroit: Become Human с Playstation 4 на PC

Reading time8 min
Views18K

Введение


В этой серии постов мы расскажем о портировании игры Detroit: Become Human с PlayStation 4 на PC.

Detroit: Become Human была выпущена на PlayStation 4 в мае 2018 года. Мы начали работу над версией для PC в июле 2018 года, а выпустили её в декабре 2019 года. Это адвенчура с тремя играбельными персонажами и множеством сюжетных линий. Она имеет очень качественную графику, а большинство графических технологий было разработано самой компанией Quantic Dream.

3D-движок обладает отличными возможностями:

  • Реалистичный рендеринг персонажей.
  • PBR-освещение.
  • Высококачественная постобработка, например Depth of Field (DOF), motion blur, и так далее.
  • Временно́е сглаживание.



Detroit: Become Human

С самого начала 3D-движок игры проектировался специально для PlayStation, и мы понятия не имели, что позже он будет поддерживать другие платформы. Поэтому версия для PC стала для нас сложной задачей.
Читать дальше →

Опознаём плохие условия работы по текстам вакансий

Reading time15 min
Views32K


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

Приведённый пример – моя личная боль, потому что несколько лет назад, когда занимался наймом сотрудников, я сам это написал в полной уверенности, что здорово загнул. К слову сказать, именно после этого случая я вдруг прозрел относительно того, что у нас вечно всё горит и по этой причине мы и ищем программистов-универсалов «на все работы».

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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity