All streams
Search
Write a publication
Pull to refresh
39
0
Игорь Сомов @Cubist

FullStack Web Developer

Send message

А могли бы не ехать, а просто позвонить, если им так важен ГН / VIN.

Пользователь всегда может просто написать/позвонить продавцу и спросить номер. И VIM VIN.

Могут воспользоваться. По ним можно узнать и имя собственника, контакты и место проживания, паспортные данные и тд.

Эм, то есть те пользователи которые самостоятельно скрывали свои гос. номера были заодно с Avito? ¯_(ツ)_/¯


Вообще я публикуя своё авто на любом сервисе предпочитаю скрыть номер, а то по нему действительно слишком много всего найти, не только по моей машине, но и по персональным данным.

Хочу добавить в голосование вариант управление командой разработки )


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

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

Не совсем понял, как это? У меня есть, например, 2 iPhone, новых. Вот кто-то хочет купить товар, я согласился отправить и где в выдаче сайте изменилось количество? Я же не делал 2 объявления под оба эти товара, если они одинаковые.

На Avito есть и новые товары, не только бу.

Это напоминает случай, когда у продавца есть только синие ручки, и он на основе данных о продажах делает вывод, что черные ручки не нужны.

Не думали её просто инвалидировать?


А то QA может не сразу об этом понять. Или там сразу сыпятся фатальные ошибки, прямо на главной?

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


Не получается ли такое, что при N+1 тестовых сборок, старые слишком быстро "протухают"? Что вообще происходит тогда с тестовой сборкой?

  1. В качестве рекомендательного демона используется микросервис, написанный на питоне.
  2. Уточните пожалуйста, что вы имеете в виду? Какого типа данные?
  3. Про шардирование — всё зависит от решаемых с его помощью задач.
    • Если цель — просто хранить на диске, то от размеров диска.
    • Если распределение большой читающей нагрузки — то от размера оперативной памяти.
    • Существуют и другие ограничения, например пропускная способность сети или CPU.
  4. Про деплой писали комментарии выше, посмотрите.

Это не техническое решение.
Мы учтем ваши пожелания и передадим ответственному менеджеру.

Очень часто.


Например чтобы показать preview объявления на странице поиска нам не надо знать об объявлении всё, достаточно картинки, цены, названия, ещё нам надо немного информации о пользователе.


Чтобы каждый раз не вынимать эту информацию из большой таблицы соединённой с другой большой таблицей у нас есть материализованное представление содержащее только необходимую нам информацию. Обращение к такой таблице занимает минимум времени и ресурсов.


Более того, такая таблица легко реплицируется на другой сервер и нагрузка на основную базу ещё более снижается.

Разработчик разрабатывает новую фичу, затем передает её в review, где другие разработчики смотрят на написаный код и дают различные советы.


После этого, задача передается в тестирование, где собираются тестовые стенды и проходят ручные и авто тесты.


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


Часть фич после тестов добавляется в билд через A/B тест, где её будут видеть лишь определенный процент людей.


Если положительное влияние фичи очевидно, то она просто попадает в билд и выкатывается на прод.

Идеальный кандидат хорошо знает Computer Science, знает алгоритмы и структуры данных, и конечно знает тот инструмент, которым он пользуется. Не важно это Python, PostgreSQL, PHP, GO или что-то ещё.


Высшее образование не объязательно, возраст тоже не имеет значение.


В первую очередь мы смотрим не столько знания языка, сколько умение решать прикладные задачи.


Junior мы отличаем от Middle разработчика лишь тем, что Junior всё знает, но реального опыта у него нет.


Список вакансий вы можете посмотреть тут, у нас всегда описаны требования под каждую. Но в данный момент мы не ищем Junior разработчиков.


Так же вы можете напрямую пообщаться с рекрутерами, которые сидят в канале телеграмм — https://t.me/AvitoJob

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


Для модерации обработка действий и интерфейсов у нас на PHP.

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


Поэтому если что-то идет не так, то мы быстро (около 10 секунд) откатываем все сервера на предыдущую “стабильную” версию или готовим хотфиксы, которые оперативно загружаем.


Потом проводим работу над ошибками, чтобы не допускать их в будущем.

Используем «ванильный» PostgresSQL версий 9.2, 9.4, и 9.5. Из необычного можно отметить прокидывание данных через сессионные переменные внутрь deferred триггеров, отправку метрик через механизм LISTEN/NOTIFY в графит (aka pg_metricus, подробнее https://habrahabr.ru/company/avito/blog/323900/). Активно используем pgq и londiste. Сделали свой деплоер хранимых процедур через переопределение search_path, может быть когда-нибудь расскажем подробнее.


Из contrib используем pg_stat_statements, int_array, dblink и pageinspect.


JSON в базах храним как text, как json, и как jsonb, но индексы не используем и поиск/фильтрацию по jsonb не делаем.


Логика бэкенда пока лежит на базе сильно, но мы работаем над этим.


Баз меньше 100, таблиц от 10 до 1000 на базу. Хранимых процедур тоже где-то от 10 до 1000 на базу, а где-то их и нет совсем.

Питон у нас живет в Data Science, почти все аналитики его использут. Так же он есть в антиспаме, рекомендациях и модерации. Все инструменты Computer Vision или Machine Learning конечно же написаны на Python.
Python такой же инструмент как PHP, или Go, который успешно решает определенный круг задач. Те же DBA используют его вместо bash скриптов.

Конечно, если вам требуется понимание


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

То можете посмотреть исходники на C — https://github.com/postgres/postgres


Если вы используете не PostgreSQL, то просто поищите Ваше название github :)

Information

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