Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как в docker хранить данные и управлять контейнерами?

Лучший ответ:
 Все изменяемые данные, например картинки, ccs, js
Это неизменяемые части приложения. Они должны располагаться внутри Докеровского образа. Каждый раз при изменении css - образ перестраивается. Поскольку он инкрементальный - это быстро и не тратит много место на диске.и загруженные пользователями файлы хранить в volume образе. 
Не обязательно как файлы. 
Можешь загружаемые пользователем файлы класть по сети на S3 или OpenStack Swift хранилище. Есть софт - эти вещи можно взвести и локально. А можно использовать и внешние серверы. Например, с помощью Ceph Object Storage.
Скажем Ceph автоматически размазывает данные на несколько серверов (полубэкап получается).Каким инструментом всем этим добром управлять, чтобы была отказоустойчивость и желательно с веб морда?
Kubernetes, Yandex Cocaine (cocaine-runtime, cocaine-plugins, cocaine-tool)+Yandex Elliptics, Nomad+Consul+Registrator+Prometheus+Grafana, CloudFoundary, OpenShift, OpenStack, CoreOS, Docker Swarm, EtcD, Fleet, GoCircuit, Helios, AWS ECS, HTCondor, Hadoop YARN, Nagios/Zabbix/Sensu, SkyDNS, SmartStack, Puppet, Ansible, Chef, doozerd, CloudFormation, Boto, Fog, Heat и пр.
Что то из выше перечисленного - законченные платформы, что то кусочки из которых можете сложить свою платформу. 
Rancher не сырой. Сырая RancherOS. Можно использовать другую.
Mesos вы использовали голый что ли? К нему нужна Aurora, Maraphon, Singularity.
Они все заточены под дикое количество нод. Ничто не мешает использовать и на 5 нодах. Правда, к примеру, Mesos из-за его Zookeeper неоправдано хочет минимум 16 гигабайтов на ноду.
В принципе достаточно Consul для многих вещей.
Пример:
https://medium.com/@ladislavGazo/easy-routing-and-...

Худший ответ:
Посмотри в сторону OpenShift, это проект RedHat, работает только на CentOS/RedHat, но он рещает все твои проблемы.
Вопрос: Как прокачивать навык управления процессами?

Лучший ответ:
Элияху Голдрат:  "Цель".  
Тайити Оно:  "Производственная система Тойоты. Уходя от массового производства"

Худший ответ:
Чтобы управлять процессами, надо понимать что это за процессы и куда они идут каких целей преследуют, поэтому, на мой взгляд, если грубо то так:
1. Сформулируйте себе цель, для чего вам это? Желательно заетм его деталиризовать, чтобы цель можно было измерить.
2. Нарисуйте (или если есть запросите) схему/диаграмму этих самых процессов, касательно вашего отдела.
3.  Проанализируйте все-ли так как вам хотелось бы или требует улучшений. Теперь все эти потоки вам прозрачны, а значит можно управлять.
4.  Есть цели Вашего отдела, задайтесь вопросом, смотря на диаграмму и работу ваших сотрудников, достигаются ли цели отдела/компании... выполняя данные процессы ваши сотрудники? Если нет, выяснить причину, решить причину, далее снова п.4. Если да, то все норм.
Вопрос: Как правильно использовать интерцепторы в axios?

Лучший ответ:
Покажу немного практик, как интерцепторы упрощают жизнь мне, да и многим, в целом.
Здесь и далее покажу именно использование интерцепторов при работе с авторизацией по JWT (токены).
1) Подстановка хедера авторизацииconst createSetAuthInterceptor = options => config => {
  if (options.access) {
    config.headers.Authorization = options.access;
  } else {
    delete config.headers.Authorization;
  }
  return config;
};

const setAuthCb = createSetAuthInterceptor(store.state.auth);
axios.interceptors.request.use(setAuthCb);
Здесь мы проверям наличие доступа из стора, а точнее, наличие токена. Далее, подставляем, либо удаляем заголовок.
2) Следующая практика, это обновление токена (то, о чем вы спросили в комментарии, при окончании сессии и т.д.)let refreshTokenPromise;

const createUpdateAuthInterceptor = (store, http) => async error => {
  const message = get(error, 'response.data.message');
  if (!['Token expired', 'Invalid token'].includes(message)) {
    return Promise.reject(error);
  }

  if (!refreshTokenPromise) {
    refreshTokenPromise = store.dispatch('refreshToken');
  }

  await refreshTokenPromise;
  refreshTokenPromise = null;

  return http(error.config);
};

const updateAuthCb = createUpdateAuthInterceptor(store, axios);
axios.interceptors.response.use(null, updateAuthCb);
Здесь мы можем видеть, что при каждом ответе проверяем наличие ошибок и если ошибка соответствует ошибке с токеном, то отправляем обновлять токен и далее снова отправляем тот же самый запрос, который к нам вернулся с ошибкой. Тут грамотно будет проверять не само сообщение об ошибке, а код ответа (401 и т.д.), но тут используется такое решение уже из за специфики бэка. 
В этом же решение, вместо обновления токена, можно отправлять юзера авторизовываться самому, на страницу авторизации. Для этого, конечно же, стоит передавать не экземпляр store, а экземляр роутера, чтобы редиректить юзера. Надеюсь, помог и хоть как то наглядно показал способы применения :)

Худший ответ:
Вообще интерцепторы для другого
Например на "событие начала загрузки" можно включать индикатор загрузки, а на "событие конца загрузки" его отключать
А что на счет связи роутинга и аякса, то во вью есть хуки. Вот в них и можно обрабатывать данные когда происходят переходы по страницам
Вопрос: Предотвратить повторную отправку формы в symfony?

Лучший ответ:
В обработчике формы на сервере делайте редирект

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

Лучший ответ:
 Смотрите сколько на это надо времени. Стоимость соответственно в человекочасах (очень приблизительно) Ваши же разрабы могут и прикинуть трудозатраты. ГРУБО время разработки под каждую платформу будет +- одинаково. Т.е. можно например сравнить с вебом
PS
ИМХО сейчас нет смысла сходу делать нативные приложения. Если не нужно быстродействие, проще заюзать PhoneGap и адаптировать под все платформы сразу.
Трудозатраты меньше и меньше потери, если проект "не стрельнет".

Худший ответ:
 Как оценить стоимость разработки
Если вы не являетесь спецом в этом вопросе - никак.
Как вариант - попросить оценить другого человека, который профи.Как оценить качество ( как работ которые есть в портфолио, так и полученной работы) *оценить именно с точки зрения качества кода, а не дизайна, ux и т.д. 
Никак.
Аналогично - попросить оценить профи.
Исходя из того, что вы вообще это спрашивайте - вам годится вариант с наймом профи, чтобы он оценил.
Можно двух-трех незнакомых, дать несколько оценок - для гарантии.
Вопрос: Возможна ли в Zyxel keenetic start гостевая сеть через ethernet?

Лучший ответ:
может мой совет и не очень, но:
для подобных выкрутасов всё же лучше брать сразу MikroTik :)
если максимально дёшево для точек доступа берите, то MikroTik mAP, если нормально - MikroTik hAP ac lite или wAP ac. маршрутизатор выбирать по нагрузке в районе MikroTik hEX или RB2011 серию. там можно и гостевую сеть, и хотспот, и смс-авторизации (через провайдера этой авторизации, sai-wifi например), и по проводу и как хочешь.

Худший ответ:
На сайте zyxel есть описание работы с подстями. Также можете попробовать сделать по-другому. Достаньте из роутера файл конфигурации и там можно порты свича к другой подсети отнести. В файле написаны номера виланов.
Вопрос: Почему записывается данные в базу 2 раза?

Лучший ответ:
Исправьте знак <= на <
У вас цикл выполняется дважды.
Первый раз в начале т.к 
$count < $i
и в самом цикле $i увеличивается на единицу и становится равно $count
Цикл выполняется дальше пока $i не станет больше чем $count
< Меньше чем
<= Меньше и равно чем
> Больше
=> Больше чем

Худший ответ:
О, господи, мои глаза!
Просто используйте foreach.
Как-то так...$response = file_get_contents('https://api.vk.com/......');
$data = json_decode($response, true);
foreach($data['response']['items'] as $user)
   add_user($user);
Вопрос: Какой софт лучше всего использовать для анимации интерфейсов приложений?

Лучший ответ:
Есть легенда, что на Тостере есть поиск, но к нему имеют доступ только избранные пользователи.
Чем сделать кастомную анимацию на сайте и как сверстать?
Как правильно передать анимацию разработчику?
Как происходит создание анимации на стороне дизайнера?
Анимация интерфейса в Figma?
Анимация интерфейсов на Windows?
Какую программу выбрать для анимации мобильных интерфейсов?
Photoshop + After Effects, а Sketch + ???

Худший ответ:
Как разработчик скажу - софт не важен. Важно чтобы вашу анимацию можно было реализовать на платформе, под которую делается приложение. Важно чтобы она не тормозила, не выбешивала пользователя. Важно чтобы она была тактильна.
По максимуму базовые анимации лучше использовать. AE - это путь в никуда если вы не знаете таймингов анимаций, на дрибле будет смотреться здорово, лайков заработаете, но в живом приложении будет отличаться, а это значит вы сделали что-то неверно) Хотя если просто как концепт, чтобы просто дать понимание программистам где что примерно и как, то да, но опять же должен ли программист считать тайминги или дизайнер? )))
Вопрос: Какие CMS движки для создания landing pages вы используете или знаете?

Лучший ответ:
Какие CMS движки для созданияОборот в корне неверен!
CMS - система УПРАВЛЕНИЯ контентом, а не СОЗДАНИЯ!
Чтобы СОЗДАТЬ: достаточно использовать HTML, CSS, JS.
Для простой загрузки отдельных блоков (или сборки страницы из блоков): используйте библиотеку includeHTML Важно: только в includeHTML имеется поддержка "прозрачной" рекурсивной загрузки целых иерархий блоков (когда блок с тегом подгружает один или несколько других, и т.д. по цепочке), синхронная и асинхронная работа, и т.д.
PS: Про "движок-конструктор": отсюда скачайте и доработайте (у меня пока не очень много времени его допилить...) 
Пример результата: здесь

Худший ответ:
Посмотрите GetSimple.
Использую также webflow
Вопрос: PDO ошибка, как исправить?

Лучший ответ:
По ошибке понятно, что в res у вас булева переменная, значит результат вызова метода query вернул false. Проверьте подключение к бд.
php.net/manual/en/pdo.construct.php
php.net/manual/en/pdo.query.php

Худший ответ:
Проблема решилась переустановкой OpenServer...
Вопрос: Стоит ли делать RAID из SSD?

Лучший ответ:
У меня есть один знакомый, который в лучшем смысле этого слова является компьютерным гиком, фанатом, маньяком своего дела. Пару лет назад задал я ему этот же вопрос. Он пытался мне что то объяснить, почему не получится, но прозвучало малоубедительно. Затарились мы с ним пивом, железом и начали тестировать. Интересовал только RAID-0, т.к. нужна была максимальная скорость, а не надежность. Коллега работает "ремонтником", поэтому у него выбор железа под руками оказался приличным. 3 разных контроллера и конфигурации от 2 до 4 дисков были опробованы нами. Скорость - практически такая же, как у одного из дисков. После моего безмерного удивления, собрали на обычных жестких дисках формата 2,5. При конфигурации из 2-х дисков на том же самом контроллере скорость возросла процентов до 190 от скорости одного диска. Три диска дали нам примерно 270 процентов скорости от скорости одного диска. 4 диска- 330-350% от скорости одного диска. Теоретическое обоснование сейчас не вспомню, т.к. не понял его и тогда. Но резюме следующее: сборка SSD в нулевой рейд скорости тебе не прибавит, только уменьшится надежность. Сборка SSD в рейды другого уровня намного быстрее угробит твои диски.

Худший ответ:
Стоит ли делать RAID из SSD?Да. Только размер полосы данных нужно устанавливать не максимальный (128КБ по-умолчанию), а 32КБ или даже 16КБ (рекомендация Intel).
Вопрос: Как установить другую версию php в подпапку?

Лучший ответ:
Подскажите, пожалуйста, правильную последовательность действийПоднимаете php-fpm нужной версии.Проксируете конкретный location в nginx к этому php-fpm, вместо apache.Profit!

Худший ответ:
Как вариант AddHandler в .htaccess:AddHandler application/x-httpd-php71 .php
Источник: stackoverflow.com/questions/12561203/how-to-change...
Вопрос: Как в джанго обстоит с множественным наследованием моделей?

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

Худший ответ:
Разделять модель на кучу подмоделей только из-за того, что у кого-то есть одно свойство, а у другого нет — вот где смысла нет.
Есть как минимум пара рабочих схем для этого:
1) JSON
2) EAV
Первый вариант предпочтителен для postgresql. Можно достаточно гибко создавать индексы для конкретных полей внутри json'а. О производительности json vs eav легко можно найти в интернете.
Вопрос: Как создать такой круг?

Лучший ответ:
Например, вот так: https://jsfiddle.net/khq6adf5/1/

Худший ответ:
Радиальный градиент, к примеру
Вопрос: Как побороть разницу в рендеринге шрифтов в ff и chrome?

Лучший ответ:
Никак, если только не рассматривать вариант с картинкой.
Смириться, понять и пгастить.

Худший ответ:
Советую попробовать подключить нормалайз.
Вопрос: Защитит-ли reCAPTCHA от брута?

Лучший ответ:
Может ли reCAPTCHA защитить от брута?Достаточно эффективно защищает, но при этом нервирует пользователей. Есть смысл использовать в исключительных случаях - во время массовых атак например.
В обычной практике достаточную защиту дает банальное увеличение интервала между попытками при неудаче.

Худший ответ:
Защитит от 90%. Но  reCAPTCHA. Если необходимо, добавьте для критических операций двухфакторку (например HOTP или еще что-то) .
Вопрос: Как создать анимированные индикаторы (к примеру навыков)?

Лучший ответ:
могу предложить такие: xmoonlight.github.io

Худший ответ:
типа такого ?
Вопрос: Как правильно работать с потоками в python?

Лучший ответ:
Я не знаю, что у вас за задача, но лучше используйте Celery или другие подобные инструменты.

Худший ответ:
Изучив более подробно материалы о потоках, прислушавшись к советам, решена задача довольно таки просто.
Скрипт будет запускаться через manage.py, так не придется переписывать текущий функционал и при таком запуске будет создан отдельный процесс в системе, запустим в фоне с помощью surepvisord/systemd.import threading
import time


def example(name ,event):
	i = 0
	while event.is_set():
		print('Thread: %s, %d', % (t1.name, i))
		i += 1
		time.sleep(10)


try:
	event = threading.Event()
	event.set()
	t1 = threading.Thread(target=example, args=('first', event))
	t1.start()
except KeyboardInterrupt:
	event.clear()
	t1.join()
Чтобы корректно завершать все это дело, напишем скрипт для вброса исключения, после чего event изменит флаг и потоки будут завершены.
Вопрос: Какую операционную систему выбрать для vps? [для сервера RUST]?

Лучший ответ:
Последний доступный Debian.
У убунты куча всего ненужного для сервера из коробки и в итоге ос жрет 100+ MB памяти. 
В дебиане примерно 50-60MB.
По CENTOS меньше учебных материалов.

Худший ответ:
Последний доступный Debian.
У убунты куча всего ненужного для сервера из коробки и в итоге ос жрет 100+ MB памяти. 
В дебиане примерно 50-60MB.
По CENTOS меньше учебных материалов.
Вопрос: Оптимальные настройки веб сервера (nginx->apache->php) для api?

Лучший ответ:
Чисто эмпирически - апач в связке лишний.
Был тут такой вопрос Apache vs Ngnix+FastCGI vs Ngnix+Apache — что производительней для php?

Худший ответ:
Про настройку nginx можно почитать здесь
Вопрос: Как найти все равные значения в массиве?

Лучший ответ:
let srcArr = [1,2,3,4,5,2,3,4,1];
let refArr = [];

srcArr.forEach( item => refArr[ item ] = refArr[ item ] ? ++ refArr[ item ] : 1 );

console.log( refArr );
В refArr будет содержаться значение ( индекс ) и количество повторений ( значение )

Худший ответ:
let srcArr = [1,2,3,4,5,2,3,4,1];
let refArr = [];

srcArr.forEach( item => refArr[ item ] = refArr[ item ] ? ++ refArr[ item ] : 1 );

console.log( refArr );
В refArr будет содержаться значение ( индекс ) и количество повторений ( значение )
Вопрос: Динамические тайтлы. Плохо или Хорошо?

Лучший ответ:
В НИЖНИЙ НОВГОРОДЕя есть говорить по-русски!)))
Простой ответ: гугл и яндекс выполняют JS только при кэшировании у себя в базе. Соответственно, из всего списка в поиске будет только какая-то одна строка.
Этот вариант - бесполезен для поисковой выдачи, но полезен для пользователей, если Вы меняете не тайтл, а текст на странице, который видит пользователь, т.к. это увеличивает конверсию.
Для ПС: если меняете title, меняйте также линк и текст.
Если текст остаётся прежний - нужно использовать канонический тэг, для указания оригинальной ссылки на материал.

Худший ответ:
Очередной вопрос, сводящийся к "выполняют ли поисковики JavaScript", да, Google и Яндекс выполняют, поскольку разработаны теми же, кем и браузеры, можете перепроверить с помощью Вебмастера, но в идеале, конечно, регион надо определять на сервере.
Вопрос: Как в Python ограничить кол-во потоков?

Лучший ответ:
Использовать пул
Вместо пула процессов, можете использовать пул потоков:from multiprocessing.pool import ThreadPool

Худший ответ:
реализовал вот так def main(lst):
    with Pool(GlobalBase.max_threads) as p:
        p.map(core_check, lst)
    p.close()
    p.join()
Вопрос: Какие книги актуальные по ios swift 3 еще на русском лучше прочитать?

Лучший ответ:
Вот же официальная книга эплов. Очень даже неплоха.

Худший ответ:
сейчас на русском есть Усов и вот это еще https://www.ozon.ru/context/detail/id/140304577/
но если дальше изучать ios, то все равно скорее всего придется переходить на английские источники
Вопрос: Как быстро удалить большое количество строк в postgresql?

Лучший ответ:
Безопасный подход для больших таблиц:create unlogged table list_for_delete (id int);
insert into list_for_delete values ....

with to_rm as (
    select id from list_for_delete limit 10000
), rm as (
    delete from list_for_delete where id in (select id from to_rm)
)
delete from tablename  where id in (select id from to_rm);

vacuum analyze tablename;
drop table list_for_delete ;
cte с delete повторять пока не будет affeted rows = 0. Смотреть на лаг репликации, добавлять задержки между запросами и увеличивать/уменьшать размер пачки в зависимости от влияния на прод.
vacuum в конце, можно после половины пройтись дополнительно. С таким-то объёмом можно руками вакуум вообще не делать и оставить автовакууму. А для таблиц побольше при массовом изменении имеет смысл.

Худший ответ:
Вы каждый раз вызываете запрос на удаление одной строки? Тогда 90 запросов еще хороший результат, такими методами ни один вражеский дудос не страшен, своего хватит.
Используйте другие условия (например формализуйте те условия, по которым вы получили ваш список удаляемых id) или создайте временную таблицу с нужными id, после чего используйте 1 запрос:DELETE FROM table WHERE id IN (select id from dellisttable)
где dellisttable - временная таблица, в которой хранится список удаляемых id
Вопрос: Как обновить тип поля в маппинге elasticsearch?

Лучший ответ:
Разочарую - мапинг обновить нельзя! Можно только добавлять новые поля.
Ваши действия - делаем новый индекс с правильным мапингом до заливки данных в этот индекс, переливаем туда старые данные, например через _reindex api - https://www.elastic.co/guide/en/elasticsearch/refe...
И да, агрегации с разными типами одного поля работать не будут.
Как создать мапинг? Отдельная песнь - описана в подробностях здесь - https://www.elastic.co/guide/en/elasticsearch/refe...
Обычно делается перед заливкой данных. Там еще кроме мапинга есть settings - отже отдельная песнь.

Худший ответ:
В общем, вопрос решил немного иначе (самый простой и действенный пока).
Так как у меня все индексы создаются по типовым маппингам, которые, почему-то не хавались лишь 1 индексом, то удалось решить проблему через _template.
1. Перед созданием индекса создал шаблон с темплейтом template: "rguu*" и своим "типовым" мапингом.
2. Далее создал индекс rguu_10 (уже 10ая попытка).
3. Для теста залил несколько проблемных типов индекса.
Только такая ситуация смогла создать адекватный индекс и маппинг "подцепился".
Вопрос: Запускать определенную функцию при сборке приложения yii2?

Лучший ответ:
Используйте on beforeRequest в конфиге:
stackoverflow.com/questions/28975197/set-yii2-catc...
www.yiiframework.com/doc-2.0/guide-structure-appli...

Худший ответ:
Я бы унаследовал все контроллеры, от общего, а его от базового. Потом дописал бы beforeAction в общем контроллере и в нем реализовал. Можно конечно и в основном layout, но как-то не стандарт MCV.
Вопрос: Список литературы (или курсов) математики для Data Scientist?

Лучший ответ:
Так "список литературы и курсов для Data Scientist" (как в названии) или" Список литературы(или курсов) МАТЕМАТИКИ для Data Scientist" (как в тексте). Это как бы немного разные вещи.
На базе 7-9 класса можно, конечно, захотеть и  Великий адронний колайдер следать дома на кухне, но все-таки рекомендую для  Data Science остановиться на любом наборе курсов математики на уровне 2-3 курса вышки.  Ну, например, - линейная алгебра+методы оптимизации с численными методами+теория вероятности и основы матстатистики+основы дискретной математики +алгоритмы обработки данных.
Любые учебники - вполне пригодны. Наичнайте читать и если вам понятно и учебник "зашел" - алтернативы искать не стоит .
А если текущий уровень - это 7-9 класс" - ну так стоит начать с того, что-бы довести его до уровня, при котором можно начинать университетские учебник читать - т.е до уровня выпускного класса (как минимум).
Удачи.

Худший ответ:
Запомни, падаван, без решения задач учебники читать бесполезно. Так что готовьтесь поступить в вуз, или терпеть ад самостоятельного изучения
Вопрос: Как получить данные из формы Contact Form 7?

Лучший ответ:
Привет.
Попробуйте так$submission = WPCF7_Submission::get_instance();
$data = $submission->get_posted_data();
или так$wpcf7 = WPCF7_ContactForm::get_current();

Худший ответ:
почему бы не добавить скрытое поле в формы, типа[hidden your-subject "такая-то форма"]
Вопрос: Какие есть программы для Linux, не дающие работать в определенный период?

Лучший ответ:
Правильнее будет всего не включать, а выключать сразу при включении (иначе только хардварно, например с помощью Ардуины :)
Проще всего написать аростой bash скрипт и запускать по Крону каждые, к примеру, 10 минут. В скрипте узнавать время и и если в пределах часов сна, то shutdown -t now

Худший ответ:
Раньше была такая программа родительского контроля в репозиториях Ubuntu: Nanny - a parental control. Возможно в ppa ещё кто-то ее содержит.
https://mintguide.org/other/227-nanny-a-parental-c...
Вопрос: Как верстать такие линии?

Лучший ответ:
для этого используются разные js-библиотеки. например www.chartjs.org

Худший ответ:
Например
Вопрос: Нужно ли использовать проксирование Cloudflare даже если есть защита от DDOS?

Лучший ответ:
Сервис Cloudflare от атаки на Вас не ляжет, он просто выключит проксирование и сайт будет недоступен, вот и все.
Cloudflare на бесплатном тарифе может только CDN предоставить, SSL бесплатный и IP-адрес веб-сайта скрыть.

Худший ответ:
По поводу вашей защиты-если вас будут атаковать школьники, то можно и без cloudflare. Если возьмется серьезная контора, то сайт ляжет.
Вопрос: Как организовать доступ к удаленной папке Linux?

Лучший ответ:
scp - winscp
Но как уже сказали - отучить программистов так делать.
Пусть тестируют на тестовом сервере.

Худший ответ:
filezilla умеет ftps/sftp, некоторые IDE тоже умееют ftps
на серваке надо поднять proftpd
Вопрос: Сайт перестал слать почту, как починить?

Лучший ответ:
1. Убедитесь что почта отправляется от сервера, для этого убедитесь что MTA поднят, в логах есть записи что почта ушла.
2. Отправьте тестовое письмо с Вашего MTA к себе...на разные ящики, 3-4
3. Если хоть до одного ящика дошло, как правило gmail принимает, то смотрите через mxtoolbox и прочие сервисы как они оценивают Ваш почтовик
4. Если не дошло никуда, нанимайте специалиста

Худший ответ:
Если почта уходит (а не вы что-то там сломали своим апдейтом), то к хостеру писать/звонить/идти.