F
FAANG Master
@faangmaster2.9K подп.
3.3Kпросмотров
5 января 2026 г.
storyScore: 3.6K
Мой первый проект в Facebook Когда я пришёл в Facebook в 2020 году, моим первым проектом, как ни странно, стала автоматическая модификация кода. Это было ещё до эпохи AI-хайпа и взлёта LLM. В чем была задача Автоматическая аннотация всего кода в Facebook Privacy аннотациями. Эти аннотации описывали семантические типы данных, источник данных, кого эти данные описывали и т.д. Например, у вас есть поле в базе, которое имеет тип varchar. Для работы с этим полем в таблице у вас есть классы в коде, которые описывают маппинг (ORM). Далее это поле читает какой-то другой код и т.д. Задача была на уровне кода пометить все эти места соответствующими лейблами, которые бы описывали, что это за данные. Например, что это имя пользователя, его айдишник, его email, его телефонный номер и т.д. Т.е. чтобы описать, что эта переменная или поле в классе не просто строка, а чувствительные приватные данные. Далее эти метки можно использовать на уровне кода для проверки Privacy правил. Чтобы эти данные не утекали туда куда пользователь не давал своего согласия. Например, чтобы что-то не использовалось для таргетной рекламы. Этот подход называется Privacy as code. Как я ее решил В Facebook давно были разработаны фреймворки и тулы для автоматической модификации кода. Для этого нужно написать другой код, который описывает как этот код менять. Весь код представляет собой семантическое дерево: Abstract syntax tree. Это дерево можно обходить при помощи DFS или BFS (пригодились алгоритмы). На каждой итерации обхода можно делать проверки на тип вершины (это функция, выражение, объявление переменной и т.д.), вытаскивать данные (имя функции, переменной, список аргументов функции и т.д.) и проверять, что мы нашли то место, которые мы хотим изменить. И далее описать изменение - удаление, модификация, добавление кода. Далее этот код натравливается на код базу, сканирует код, делает изменения и автоматически создает code review (pull requests). Далее это code review асайнится на владельцев кода и после ревью оно деплоится. За несколько лет работы мой код создал более 30 тысяч автоматических code review еще до эпохи LLM. В итоге я разметил весь код в Facebook семантическими типами данных (email, phone number, user name, user id, user generated content и т.д.). В итоге это стало частью более масштабного проекта по пониманию всех данных в Facebook/Meta, о чем был написан пост в официальном engineering блоге Мета: https://engineering.fb.com/2025/04/28/security/how-meta-understands-data-at-scale/
3.3K
просмотров
2507
символов
Нет
эмодзи
Нет
медиа

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

Все посты канала →
Мой первый проект в Facebook Когда я пришёл в Facebook в 202 — @faangmaster | PostSniper