Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Где рассказывать о своих Open Source проектах?

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

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

Лучший ответ:
Добрый день, коллега.

Рекомендую вот такой Portable Power Supply:

www.ebay.com/itm/5V-in-2A-out-1A-Mobile-Travel-Portable-PowerSupply-18650-Battery-USB-Charger-Box-/170822299227?pt=LH_DefaultDomain_0&hash=item27c5cd6e5b

Пользуйюсь год, проблем нет. Собран немного неаккуратно, но это не влияет на функционал. Заряжается с 18 часов вечера до 10 утра полностью от блок питания 5V 1A (внутри 4 батареи 18650). Выход USB, вход MiniUSB. Может работать как фанарик, если приспичит подсветить. Индикатор заряда адекватный.

Худший ответ:
Energizer 4001A 
4000 mAh @5V, 130 x 80 x 14 мм., вес 153 грамма.
www.energizer-power.ru/index.php?chp=showpage&num=182
Вопрос: MySQL выбрать только уникальные значения?

Лучший ответ:
Если правильно понял задачу тогда как-то так:DELETE
FROM
	tablename
WHERE
	name IN (
		SELECT
			name
		FROM
			tablename
		GROUP BY
			NAME
		HAVING
			count(*) > 1
	)

Худший ответ:
Решил задачу таким способом:SELECT *
FROM
  docs
WHERE
  name IN (
    SELECT
      name
    FROM
      docs
    GROUP BY
      name
    HAVING
      count(*) < 2
  )
Вопрос: Кто делал магазин на друпале?

Лучший ответ:
Если это что-то сложнее чем "добавил в корзину, оформил заказ", то без опыта у вас скорей всего ничего не получится ни на Ubercart, ни на Commerce.

Худший ответ:
Я бы вам некоммерческий DotPlant2 посоветовал рассмотреть. Он специально для администрирования интернет-магазинов написан и многое из нужного функционала для магазинов есть (размещению товара в разных категориях, различные варианты вывода, присвоение ярлыков товарам, «умный поиск» и т. д. Денег он не стоит и допиливать особо ничего не нужно будет.
Вопрос: MODX REVO. Как вывести посты через getResources по 3 в каждом ряду?

Лучший ответ:
Это делается версткой.<div class="row">
  <div class="col-md-4"> ... </div>
  <div class="col-md-4"> ... </div>
  <div class="col-md-4"> ... </div>
  <div class="col-md-4"> ... </div>
  <div class="col-md-4"> ... </div>
  <div class="col-md-4"> ... </div>
</div>

Худший ответ:
Для себя нашел такое решение:
Создаем шаблоны firstPost, lastPost, post3th, post.
firstPost:<div class="row">    
    <div class="col-md-4">
    ...
    </div> <!-- /.col-md-4 -->
[[+last:is=`1`:then=`</div><!-- /.row -->`:else=``]]
lastPost:<div class="col-md-4">
      ...
    </div> <!-- /.col-md-4 -->
</div> <!-- /row -->
post3th:<div class="col-md-4">
   ...
    </div> <!-- /.col-md-4 -->
</div> <!-- /.row -->
<div class="row">
post:<div class="col-md-4">
...
</div> <!-- /. col-md-4 -->
firstPost открывает ряд и в нем же стоит проверка, если это последний пост на странице, то закрывает ряд.
post3th закрывает ряд после каждого 3-го поста и открывает новый.
lastPost закрывает ряд.
Вопрос: Темы от экспертов с вопросами и ответами

Лучший ответ:
Идея хорошая, могу проконсультировать по IIS, Oracle, Windows Server, AD, GP, Delphi

Худший ответ:
зачем вопрос? нужно просто объявить дату фуршета ;)
Вопрос: Все таки пользователям, указавшим при регистрации info@ отправлять письмо с подтверждением или нет?

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

Худший ответ:
mrusklon всё правильно описал с подтверждением проблем нет. Главное не шлите на этот ящик никаких писем кроме подтверждения. Или шлите только если они очень важные и связаны с действием в аккаунте. И то желательно что пользователю надо в настройках на видном месте поставить галочку что то то и тот присылать что то не присылать. И адекватную отписку сделайте по 1 силке.
Вопрос: Стоит ли ехать работать в Ступино?

Лучший ответ:
Однозначно что в Ступино больше занятий в свободное время чем на дальнем востоке, так как Ступино это почти Москва. Если очень хочется можно вечером в пятницу срываться в Москву на тусняк и возвращаться в воскресенье вечером домой.
Жилье в России везде дорогое, и я пока что не встретил ни одного востребованного места где было бы дешевое жилье, в независимости от того местоположения Москва, Тогучин, Новосибирск, Нерюнгри или Владивосток.
Когда я был в Москве мне там все жутко не понравилось, кроме ВДНХ и Третьяковки(это божественные места которые стоит посетить).
В свое время я выбрал переезд в Тайланд и ничуть об этом не жалею.
pumainthailand.com/

Худший ответ:
Однозначно что в Ступино больше занятий в свободное время чем на дальнем востоке, так как Ступино это почти Москва. Если очень хочется можно вечером в пятницу срываться в Москву на тусняк и возвращаться в воскресенье вечером домой.
Жилье в России везде дорогое, и я пока что не встретил ни одного востребованного места где было бы дешевое жилье, в независимости от того местоположения Москва, Тогучин, Новосибирск, Нерюнгри или Владивосток.
Когда я был в Москве мне там все жутко не понравилось, кроме ВДНХ и Третьяковки(это божественные места которые стоит посетить).
В свое время я выбрал переезд в Тайланд и ничуть об этом не жалею.
pumainthailand.com/
Вопрос: Как сделать каталог смартфонов wordpress?

Лучший ответ:
Woocommerce поставьте. Это же специализированное решение. Просто корзину выключите, если не нужна. И всё.

Худший ответ:
Рубрики можешь использовать как список
Запись как товар
Метки как фильтр
Вопрос: Выделение памяти в PHP ООП?

Лучший ответ:
1) При создании экземпляра new Class() в память забираются все его методы - чем больше методов тем больше памяти надо, или там память на метод в момент его вызова метода выделяется?
При подключении ЛЮБОГО php файла производится лексический анализ, лексер генерирует из исходного кода программы набор токенов, из которых строится синтаксические дерево. Отсюда следует то что, чем больше кода, тем больше памяти выделяется.
Само по себе создание каждого последующего объекта также несет затраты.Значит ли всё это что наиболее нагруженную но простую часть системы лучше вынести в отдельный компактный класс содержащий только необходимое для её функционирования?
Вы экономите на спичках. Хорошая архитектура важнее сэкономленной микросекунды и килобайта памяти.

Худший ответ:
Никого не слушайте!
Динамическая загрузка дочерних классов и методов, а также их повторное использование (клонирование и реинициализацию вместо new ClassName() ) - экономит как время исполнения, так и память.
Скорость работы - увеличивается так, что становится заметна невооружённым глазом.
По "зёрнышку" на каждом этапе - можно выиграть ускорение до 4x-5x от прежней скорости.
Главное - начинайте с архитектуры!
Вопрос: Кто шуршит моим винтом? Расскажи-ка мне о том!

Лучший ответ:
Это вирус-удалец. Твоему винту 3,14здец.

Худший ответ:
Я под XP предпочитаю пользоваться утилитой Prio — она встраивается непосредственно в task manager и добавляет ряд полезных функций, делая его похожим на диспетчер из 7ки и даже лучше…
Вопрос: В какое направление IT углубляться?

Лучший ответ:
> Рещающий фактор - чтобы больше платили.
Плохой выбор. Решающий фактор - чтобы работа нравилась.

Худший ответ:
mario13 судя по Вашим навыкам, можете устроится инженером КИПиА или стажером на эту вакансию
Вопрос: Обучение Python, стыдно, но нужна помощь. Поможете?

Лучший ответ:
Ну вам же нужно во втором цикле КАЖДОЕ число из первого диапазона (с, d+1) умножить на КАЖДОЕ число из второго диапазона (a, b+1). Т.е. вам нужны вложенные циклы.
Примерно так:for j in range(a, b + 1):
    # здесь выводим значение из диапазона 
    print (j, '\t', end = '')
    for i in range(c, d + 1):
        # здесь считаем значения для каждой комбинации
        print( i * j, '\t', end = '')

Худший ответ:
Не хватает цикла for, перебираешь только j в диапазоне (a, b+1), еще один цикл должен также перебирать значения в диапазоне (c, d+1).
Вопрос: Почему это моветон?

Лучший ответ:
Алексей: Евгений Шатунов:
Люди умеющие гуглить, но не понимающие, о чём речь, дают ответы! Каждый день на тостере!
Они могут нагуглить статью, в которой говорится примерно о том же, о чём задан вопрос, но, увы, не вполне.
И ни в статье, ни в ответах так и не появляется правильного ответа.
А правильный ответ -- во второй, неочевидной части пункта стандарта, описывающего выражения (C89: 3.3:2, C99: 6.5:2):Between the previous and next sequence point an object shall have its stored value
modified at most once by the evaluation of an expression. Furthermore, the prior value
shall be read only to determine the value to be stored.
Т.е. если объект модифицируется, то читать его можно с единственной целью -- для вычисления значения, которое будет в него записано. Код a[i] = i++; читает значение изменяемой переменной i с другой целью: доступ к элементу массива по индексу, результат которого не влияет на конечное значение i -- и этого достаточно, чтобы такой код попадал в категорию UB.

Худший ответ:
То есть, например, тут не определено какая вызовется первой, но это и не важно.
x = func_1() + func_2();
Тут вы глубоко заблуждаетесь.#include <iostream>

int x = 2;

int func_1() {
    x *= 10;
    return x;
}

int func_2() {
    x += 10;
    return x;
}

int main() {
    std::cout << func_1() + func_2() << std::endl;
    return 0;
}
Вопрос: Как реализовать ввод вывод с нуля?

Лучший ответ:
Ведь и библиотеки низкоуровневого ввода как то были написаны
Бинго! Осталось найти и почитать их код. У glibc он открыт, например.

Худший ответ:
Ввод-вывод бывает разным. Файловый делается на раз: объявляются нужные API и константы (раз вы не хотите системных хидеров), потом получение адресов CreateFile, ReadFile, WriteFile, CloseHandle и можете смело работать с файлами. Только вам придется как-то загрузить нужные DLL и получить из них функции :-D Но TIB/PEB вас спасут.
Вопрос: Почему nginx работает только по localhost?

Лучший ответ:
а netstat что показывает?

Худший ответ:
telnet из вне проходит на 80 порт?
Вопрос: Как реализовать передачу данных с одного МК на другой через Интернет?

Лучший ответ:
GPRS канал и реалтайм понятия противоположные,
чем вас стандартные решения XBee и nRF24?
которые легко подключаются и библиотек и примеров тьма

Худший ответ:
Про более изящные решения Вам уже посоветовали. В общем же, присоединяюсь к mortal.
Так же, очень правильный вопрос задал Fixid - какой ширины поток планируете передавать между коптером и пультом.
Собственно, GPRS - это минимальная задержка от 50мс и выше.
Сеть 2G в режиме GPRS не очень производительна. Вики говорит о скорости до 171,2 кбит/c (в теории). Так что...
WiFi канал - наиболее оптимальный вариант. В зависимости от протокола, может работать от 1-2Мбит/с до 150+Мбит/с. И, в зависимости от контроллера, который будет работать уже за WiFi чипом.
Как вариант проще - с односторонним управлением, можете использовать приёмопередатчики на 315/433МГц, но этого лучше не делать и использовать более высокочастотные диапазоны, например, 914МГц.
Для двусторонней связи, лучше остановиться на WiFi.
Да замучатьт тот же ESPxx/nRF24.
Вопрос: В чём отличие между count и sizeof?

Лучший ответ:
php-src/ext/standard/basic_functions.c/* aliases from array.c */
PHP_FALIAS(sizeof, count, arginfo_count)$a = [1, 2];countnumber of ops:  5
compiled vars:  !0 = $a
line     #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   3     0  E >   ASSIGN                                                   !0, <array>
   5     1        INIT_FCALL                                               'count'
         2        SEND_VAR                                                 !0
         3        DO_ICALL
   7     4      > RETURN                                                   1

branch: #  0; line:     3-    7; sop:     0; eop:     4; out1:  -2sizeof — Псевдоним count()number of ops:  5
compiled vars:  !0 = $a
line     #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   3     0  E >   ASSIGN                                                   !0, <array>
   6     1        INIT_FCALL                                               'sizeof'
         2        SEND_VAR                                                 !0
         3        DO_ICALL
   7     4      > RETURN                                                   1

branch: #  0; line:     3-    7; sop:     0; eop:     4; out1:  -2

Худший ответ:
Практически sizeof быстрее чем count, доказательство?
документацию читали?
и коммент:
1/ prefer the count() function instead of sizeOf() as sizeOf() is only an alias of count() and does not mean the same in many other languages based on C (avoid ambiguity).
2/ prefer the powerful forEach() function to iterate over arrays.
Вопрос: Как на уровне NGINX не допустить параллельного обращения к URL?

Лучший ответ:
но Redis-сервер это удалённое хранилище и параллельный запуск скрипта может произойти быстрее проверки/сохранения состояния в Redis
Нет, если это сделано через получение блокировки. Т.е. не запустились и сразу бросились что-то фигачить, а сделали запрос в Redis, получили от него разрешение на запуск (получили блокировку ресурса) и только лишь после этого начали работу. После окончания работы скрипт должен послать запрос на разлочку, причем в идеале стоит это запилить в register_shutdown_function() что бы даже незапланированное завершение скрипта приводило в разлочке ресурса. Эту схему должно быть достаточно просто запилить в проект, кода изменить придеться минимум. В общем нужно заходить от известной схемы с блокировками через семафоры. А Redis рулит блокировками корректно ввиду своей природной однопоточности.
Так же по теме: Distributed locks with Redis

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

Лучший ответ:
Как вариант - можно вообще не привязываться к андроиду: fakegps.com. И запускать на компе по расписанию. Правда, это в том случае, если трекер есть в поддерживаемых.

Худший ответ:
www.phonearena.com/news/Heres-how-to-easily-fake-y...
+ fake gps в маркете
https://play.google.com/store/apps/details?id=com....
https://play.google.com/store/apps/details?id=com....
но оно все не для каждого андроида, да и не для каждого приложения
Вопрос: Что лучше использовать async.js или promise?

Лучший ответ:
Быстрее всего и надежнее всего работает callback hell, возвращайтесь к истокам.

Худший ответ:
Чисто промисы - это та же лапша, только в профиль. Ну только вложенность уменьшается. Генераторы и yield выглядят получше. Так же, где применим yield помимо асинхронного кода?
Там, где нужны генераторы
Вопрос: Как проанализировать свои расходы (Сбербанк)?

Лучший ответ:
На баб уходит…

Худший ответ:
Не получится так. В итоге пришел к тому что все руками надо заполнять
Пригодился вот этот сервис: koshelek.org
У них и под андроид есть приложение
Вопрос: Нужна телефонная связь между четырьмя сотрудниками, что поставить?

Лучший ответ:
Asterisk (как вариант, с обвеской в виде FreePBX) и софтфоны у сотрудников. UPD: если IP-телефония не подходит, DECT-база и четыре трубки с функцией интеркома.

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

Лучший ответ:
Для решения систем удобнее пользоваться матрицами, и методом Крамера в частности. Это не так страшно, как выглядит. И код получится намного проще и логичней.

Худший ответ:
if (a != 0) {
                    x = e / a;
                }
                else {
                    x = f / a;
                }
Если a==0, будет деление на 0. Но, возможно, ошибки есть где-то ещё.
Вопрос: Upwork и налоги?

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

Худший ответ:
а что разве с upwork нельзя выводить на карту pioner и уже оттуда на мастеркард или визу, любого вашего местного банка? там уже по идеи в самой транзакции учитывается НДС, или я что то недопонимаю?
Вопрос: Выбор решения для видео-трансляции

Лучший ответ:
Вот собственно немного статистики (не моей) по использованию канала при вещании в инет. основное- это «Итого в пике смотрело 894 человека и отдавали 600М траффика.» Как видно из графиков — работали с wowza.

Худший ответ:
В процессе поиска был найден сервис yatv, думаю, что заведем через него.
Вопрос: Unity, c# и бывшая нажатая клавиша?

Лучший ответ:
Запомнить в переменную была ли нажата клавиша В и когда. При нажатии А - проверить давно ли была нажата В. ПРи нажатии С - сбросить переменную, ответственную за состояние В.
Судя по тонне вопросов - рано вам игры писать, начните с чего попроще, или идите джуном в команду - научат.

Худший ответ:
Берёте переменную float, записываете в неё время при каждом нажатии клавиши, когда нужно проверить давность нажатия, сравниваете с интервалом.private float lastPressedDTime = float.MinValue;
private const float threshold = 0.5f;

private void Update()
{
    if (Input.GetKeyDown(KeyCode.D))
    {
        lastPressedDTime = Time.time;
    }

    if (Time.time - lastPressedDTime < threshold)
    {
        Debug.Log("D");
    }
}
Вопрос: Можно ли использовать одну БД при написании сайта на PHP, а android-приложение на Java?

Лучший ответ:
Использовать базу где?
На Андроиде локально и на сайте? То есть фактически это будут 2 одинаковые базы?
Или одна общая база в интернете, доступная всем Андроидам?
Если про второй вариант, то правильнее делать не напрямую как finjoiler написал в своем примере.
А через реализацию API на сайте.
То есть к БД будет иметь доступ только PHP, а уже к PHP по API будет обращаться Android-приложение.

Худший ответ:
Да можно.
Представь, что бд это корзина с вещами или шкаф. Ты можешь оттуда брать и класть. Кроме тебя я могу это сделать или другой человек, у которого есть ключ от него. 
То есть, чтобы тебе это сделать ты делаешь свой сайт он общается с этой базой.
Для того чтобы еще и приложение общалось с этой базой, тебе надо сделать API, которое и будет стоять между базой и приложением.
Ты конечно можешь напрямую обращаться к базе из приожения, так же как и с сайта.
Но это небезопасно, потому что сайт у тебя работает на сервере и все конфиги с паролеми посмотреть пользователя не смогут, а в случае с мобилкой – у тебя будет прописан доступ в самом приложение. Это значит, что любой может разобрать его и посмотреть.
Посмотри в сторону REST API. 
Чтобы например сохранить какую-то запись в базу, тебе нужно будет отправить запрос на свой сервер, который примет его, обработает данные и сделает то, что нужно. Например, у тебя ест ьтакой роут(маршрут/endpoint):
POST your-site.com/item/save 
Ты уже сам на сервере определяешь как он будет работать.
Вопрос: Комментарии к статьям/товарам на сайте через соц. сети

Лучший ответ:
cackle.ru/welcome норм, пользуюсь на двух проектах, правда там комментов не много

Худший ответ:
Виджеты для ВК-комментариев подключаются элементарным добавлением нескольких строчек HTML-кода, vk.com/developers.php
Вопрос: Можно ли как-то стянуть JS код сайта если он защищен от лишних глаз?

Лучший ответ:
Легко:https://pastebin.com/yfcQAqVh

Худший ответ:
Перешел по ссылке, удалил из урла /counter.js, нажал "назад" - профит )
Вопрос: Самостоятельное обучение основ программированию или в университете?

Лучший ответ:
Чувак, своим вопросом ты в открытую заявляешь, что ты в принципе не хочешь учиться. Но если ты хочешь учить программирование самостоятельно, то тебе всё равно придётся трудиться как не крути. Выше ответившие отговаривают тебя от ВУЗа. Но это узколобое мнение. Никакой ВУЗ ни по какой специальности не учит работать. Проверено! Но ВУЗ даёт систему знаний и упорядочивает её для того, чтобы на работе ты максимально быстро вошёл в курс дела. Став взрослее, поработав на работах и не скатившись на кривую дорожку, ты сам поймёшь всю пользу университетских предметов. Из студента делают специалиста, который знает как подойти к инженерной проблеме. 
ВУЗ тебе даст инженерный и жизненный кругозор, вложит в тебя полезные вещи. ВУЗ это друзья, тёлочки, знакомства. Потом в нашем мире, где в/о стало доступным, будет странно общаться с человеком без диплома. Сразу появятся вопросы относительно его умственного благополучия. Поверь, это так.
С дипломом хоть и трудно, но гораздо легче, чем без него.
Мой совет: если не хочешь стать хрен знает кем с уклоном только  в одну сторону, с сомнительными отрывочными знаниями, то поступай в ВУЗ и не парь мозги.
----------------------------------------------------------
Братан, всё нормально у тебя. Не торопись. В ВУЗовской программе всё предусмотрено. Хочешь изучать основы - изучай. Если боишься, что в этом случае ты будешь "буксовать", то это пустые страхи.

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

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

Худший ответ:
Вот грамотный вариантsetTimeout(function () { digitalWatc(); }, 1000);
Вопрос: Какой лучше дополнительный монитор для программиста?

Лучший ответ:
если бюджет и видеокарта позволяют - то 27" 3840x2160
если не позволяют - 27 дюймов 1920*1080

Худший ответ:
Чем больше, тем лучше. Причем физическое разрешение не очень играет роль.
Поначалу будет немного не привычно, но потом жить без этого не сможете.
У меня дома 2 монитора 27+21, на работе ноут + 2 монитора 24, это очень очень удобно.
Видел ребят с 4 и 5 мониторами и ничего, радуются жизни.
Вопрос: Какой софт для очистки оптимизации Windows?

Лучший ответ:
AVZ использую. Умеет многое. 1) Автозагрузка вместе с планировщиком 2) Показывает какие DLL использует процесс.
3) Находит вирусы (но в ручную имхо удобнее все равно).

Худший ответ:
Контрольные точки и бэкапы.
Очистка сторонним софтом - зло.