Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Ubuntu стало подвисать, есть ли идеи в каком направлении копать?

Лучший ответ:
Установите HTOP и проверьте какие модули нагружают систему.sudo apt-get install htop
sudo htopОписание столбцов:
PID - идентификатор процесса.
USER - владелец процесса.
PRI - текуший приоритет (влияет на процессорное время, отводимое процессу, значение по умолчанию - 20; чем меньше приоритет, тем больше времени отводится процессу, следовательно он выполняется быстрее).
NI - величина изменения приоритета относительно значения PRI (клавиши F7, F8).
VIRT - общий объем виртуальной памяти, используемой процессом. Включает в себя: область кода (CODE), данные (DATA), разделяемые библиотеки (SHARED) и страницы, перемещенные в swap-область памяти. Если приложение потребовало от ядра выделить ему 100Мб памяти, а использует всего 5 Мб, данный столбец всё равно будет показывать цифру 100.
(CODE - объем памяти, содержащий исполняемый код процесса.
DATA - объем памяти, занятой данными, используемыми процессом в ходе выполнения.
SWAP - объем памяти, используемой процессом, но перемещенной в swap-область.)
RES - количество резидентной (не перемещаемой в swap) памяти в килобайтах. Если приложение потребовало от ядра выделить ему 100Мб памяти, а использует всего 5 Мб, то данный столбец покажет 5. Но здесь есть два ньюанса:
а) RES не показывает сколько данных было перемещено в swap,
б) часть RES-памяти может быть разделяемой.
SHR - количество разделяемой (shared) памяти программы в килобайтах, т.е. памяти, которая может быть использована другими приложениями.
S - состояние процесса:
S — так называемое состояние сна;
R — состояние выполнения;
D — состояние ожидания.
CPU% - использование процессора в процентном отношении.
MEM% - использование процессом памяти в процентном отношении.
TIME+ - время работы процесса.
Command - указывает на команду, которой был запущен процесс.
Через настройки (F2) можно добавить еще некоторые полезные параметры:
IO RATE - Операции ввода\вывода. Чтение + запись. Если нужно отдельно на чтение и на запись, то можно добавить:
IO READ RATE и IO WRITE RATE.
Также на экран выводятся следующие параметры:
Load average - отражает число блокирующих процессов в очереди на исполнение в определенный временной интервал, а именно 1 минута, 5 минут и 15 минут, соответственно. Блокирующий процесс — это процесс, который ожидает ресурсов для продолжения работы.
Uptime - время работы системы.
Управление:
F1 - справка;
F2 - настройки;
F3 - поиск процесса;
F4 - сортировка списка процессов (от большего к меньшему или от меньшего к большему);
F5 - устанавливает древовидное отображение (корни - родительские процессы, а листья - дочерние) и наоборот;
F6 - открывает панель с выбором параметра сортировки процессов;
F7 - увеличить приоритет выполнения текущего процесса;
F8 - уменьшить приоритет выполнения текущего процесса;
F9 - убить процесс;
F10 - выйти из программы.

Худший ответ:
Ставить Debian на Sysvinit.
Вопрос: Как получить все ссылки с сайта?

Лучший ответ:
Simple Html Dom
Пример его использования для парсинга всех ссылок с сайта google.com
$html = file_get_html('www.google.com');
echo $html->find('a');
Если нужна только ссылка(href), то можно указать атрибут
echo $html->find('a')->href;

Худший ответ:
Смотрите запрос который отправляется ajax. И потом уже сами на него делайте его.
Вопрос: Какую авторизацию выбрать Гугл или Фейсбук?

Лучший ответ:
А почему "или", если можно сделать авторизацию через оба сервиса?

Худший ответ:
Очень часто используют Auth0, он поддерживает много разных сетей. Если есть деньги, то лучше брать его. 
Если нет, то используются решения вроде passport.
Вопрос: Какое приложение не позволяет выключить/перезагрузить компьютер?

Лучший ответ:
Нажмите Пуск – Поиск — Журнал событий и перейдите в раздел Журналы приложений и служб – Microsoft – Windows – Diagnostics -Performance. Там регестрируются события при загрузке системы, в т.ч. приложения, влияющие на скорость её вкл./выкл..

Худший ответ:
У меня это был Viber
Вопрос: Где купить SSL сертификат?

Лучший ответ:
если не хотите возиться с бесплатными и с отдельными сертификатами на каждый домен, то берете PositiveSSL Multi-Domain.
продаванов полно. я беру на namecheap, хотя можно найти и дешевле.
на неймчип он стоит в районе $30/год, 3 домена уже включено в цену, за дополнительную денюжку (~$13/год каждый) можно подключить еще 97 доменов (100 в общем).

Худший ответ:
Покупал на Comodo
Вопрос: Что лучше сначала изучить контекстную рекламу или SEO?

Лучший ответ:
Я начинал создавая свой собственный сайт, изучил php, html, написал собственный движок лет 10 назад (потом узнал о WP и думал что со мной не так, зачем я писал собственный код, когда есть офигенное готовое решение). Для своего сайта занимался всем, SEO, SMM, Контекст. Потом начал искать клиентов по всем направлениям.
Очень быстро отвалилось направление создания сайтов и доработки, я не кодер все-таки (хоть и очень это люблю). Далее отвалилось SMM. Остались SEO и Контекст. Постепенно стал углубляться именно в SEO, так как контекст для меня довольно скучный. Теперь уже несколько лет только SEO для клиентов. 
Для своих проектов до сих пор настраиваю каналы продаж по всем направлениям сам, за редким исключением.

Худший ответ:
изучайте и то и то на практике
Вопрос: Как сделать\спроектировать стенку(мебель) для гостиной? Какую программу использовать?

Лучший ответ:
Конечно же только SketchUP и ничего кроме:
https://www.youtube.com/watch?v=S0uY0xnrtNA - видео для новичка
https://www.youtube.com/watch?v=MwtOOtm6eHw
https://www.youtube.com/watch?v=zmd0eaA3mCc
https://www.youtube.com/watch?v=qIGw43hhiko
https://www.youtube.com/watch?v=98JwWh1ciEo
1) Рисуете прямоугольник
2) На Num-клавиатуре вводите цифры "длина;ширина" через точку с запятой
3) Нажимаете Enter
Советы:Всё делайте только в миллиметрах всегда в 3D, сантиметры не годятся никогдаЗажимайте колёсико мышки и двигайте курсор чтобы передвигаться в пространстве 
Есть ещё Базис-Мебельщик, Базис-Раскрой и PRO100 но они для тех кто занимается этим профессионально, это для тех кто разрезает экономно листы и т.д. в индустриальных масштабах

Худший ответ:
Astron
bCAD
FrontDesigner
pro100
Программа раскроя мебели
Вопрос: Как сделать кнопки + и — для edit?

Лучший ответ:
Нативное решение:<input type="number" name="items" min="1" max="10">

Худший ответ:
Из другого вопроса: https://jsfiddle.net/7hbwxhoy/
Вопрос: Как свичнуть id при смещениях в списке выдачи в Django?

Лучший ответ:
Добавить поле, в котором будет позиция ученика
Сортировать по нему

Худший ответ:
Так создайте ещё одно поле, сортируйте по нему и меняйте как хотите
Вопрос: Реально ли получить навыки по настройке windows server 2008 r2 на виртуальной машине?

Лучший ответ:
Если тачка с virtualbox мощная, можно там не только одну - можно несколько виртуалок поднять, повязать их виртуальной сетью и тренироваться. А уж практику установки win сервера, развертывания служб, заведения юзеров и прочего - так вообще запросто.

Худший ответ:
CityCat4 всё правильно описал. От себя лишь добавлю, что по настройке мне, в своё время, очень помогли курсы от atraining. Для начала можете посмотреть бесплатные Cisco ICND1 3.0 и Microsoft 20410D
Вопрос: Как в RoR использовать разные версии Ruby и Rails для каждого проекта?

Лучший ответ:
rbenv и rvm

Худший ответ:
1) Устанавливаешь RVM
2) Через RVM ставишь версии руби, которые тебе необходимы для проектов
В связке nginx+passenger, в конфиге nginx можно указывать, какую версию использовать:passenger_ruby /Users/your_user/.rvm/gems/ruby-2.3.0/wrappers/ruby;
Вопрос: Странное поведение css, что это?

Лучший ответ:
.result-search-table .title3 - это если .title3 вложенный внутри .result-search-table
если оба класса относятся к одному элементу, то правильно именно как во втором варианте.

Худший ответ:
.result-search-table .title3 - срабатывает для элемента с классом title3 у которого есть родитель с классом result-search-table.result-search-table.title3 - срабатывает для элемента у которого есть и класс title3 и класс result-search-table
Но в Вашем случае проблема где-то в другом месте, так как срабатывать должно именно так не зависимо от локалка это или сервер. Что бы найти ответ - нужна ссылка на сайт. В панеле разработчика любого браузера можно проверить какие стили действуют, какие нет и почему.
Вопрос: Как делать $.getJSON пока не придут подходящие данные?

Лучший ответ:
как вариант что то вроде этого)var Ctrl = function (condition) {
	var self = this;

	this.condition = condition;
	this.result = null;

	this.init = function () {
		this.check();
	};

	this.check = function () {
		$.getJSON('/path/to/file', {param1: 'value1'}, function(data, textStatus) {
		  if (data.result !== self.condition)
		  	self.check();
		  else
		  	self.result = data.result;
		});
	};

	this.getResult = function () {
		return this.result;
	};

	this.init();
}

var condition = 'условие для ответа';
var controller = new Ctrl(condition);
var result = null;

var myInterval = setInterval(function() {
	
	result = controller.getResult();

	if (result) {
		console.log('ожидаемый ответ: ', result);
		clearInterval(myInterval);
	}

}, 4000);

Худший ответ:
Вынесите код, вызывающий getJSON в отдельную функцию и вызывайте её из callback'а.
Вопрос: Как стереть данные с readonly filesystem диска?

Лучший ответ:
sudo /sbin/hdparm --security-erase 'NULL' /dev/sd<буква устройства ssd>

Худший ответ:
SSD поломался. Монтируется только в readonly. Удалось снять резервную копию.Это как раз указывает на работоспособность диска. Возможно, испорчена лишь файловая система, из-за  чего Убунту может монтировать  лишь в режиме  чтения.
Я бы проверил диск при помощи штатной утилиты fsck.
https://help.ubuntu.com/community/FilesystemTroubl...
Вопрос: Как сгенерировать красивую раскладку плитки?

Лучший ответ:
just for fun:придумываешь "потенциальную энергию" для выкладки: одинаковые плитки отталкиваются обратно пропорционально квадрату расстояния между нимиразные плитки друг друга игнорируютно если 2 любые плитки попали в одну ячейку - очень сильно отталкиваются, ну прям 100500 ньютоннаходишь минимум энергии (например, методом отжига)чтобы не париться с границами области, считаешь её поверхностью бублика

Худший ответ:
Хмм. Сначала решил, что мне нечего ответить на этот вопрос но потом появилась идея. Попробуйте вручную для каждой плитки задать те, которые вплотную к ней смотрятся хорошо. И использую это стройте рисунок просто рандомом. Результаты должным сразу хорошими, без других ухищрений.
P. S. Если попробуете — покажите, что получилось
Вопрос: Как из программы на c++ отправлять ответ на запрос в консоль linux?

Лучший ответ:
Генерируйте random_port > 1024 и запроса на ввод пароля не будет.

Худший ответ:
текст запроса прогой направляется на stdout, ответ ждется с stdin.
использовать функцию запуска внешней проги с доступом к указанным потокам, как и указал Antony, popen
Вопрос: Не работает перечеркивания текста, как исправить??

Лучший ответ:
Можно использовать Spannable, в частности StrikethroughSpan.

Худший ответ:
<h1>КОД1 <del>КОД2</del></h1>
Вопрос: Для чего нужен singleton?

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

Худший ответ:
Есть private static $instance = null
И есть public static function getInstance(){
if (self::instance === null){
 self::instance = new self();
} 
return self::instance;
}
То есть мы помещаем в переменную instance объект класса и потом через getInstance получаем этот объект, а не создаем каждый раз. Это удобно, но нужно использовать только там где стоит. Например для подключения к базе данных.
Вопрос: Как добавить dll в конечную сборку c#?

Лучший ответ:
Можно использовать Costura.Fody. Эта библиотека позволит Вам, при сборке проекта, и в случае, если зависимые dll являются управляемыми (написанными на .NET), на выходе получить обычный exe'шник, в ресурсах которого будут зависимые библиотеки. А если Вам нужно добавить в сборку неуправляемые dll (написанные на C++/C и т.д.), достаточно отредактировать файл FodyWeavers.xml, добавив имена этих dll в специальные секции. Подробнее читайте про это в репозитории, ссылку на который я дал выше, под заголовком "Unmanaged32Assemblies & Unmanaged64Assemblies". 
Также можно использовать ILMerge. Пример использования в этом посте на Хабре. Помните, что он работает только с управляемыми .NET библиотеками, а с неуправляемыми не умеет.

Худший ответ:
Можно использовать Costura.Fody. Эта библиотека позволит Вам, при сборке проекта, и в случае, если зависимые dll являются управляемыми (написанными на .NET), на выходе получить обычный exe'шник, в ресурсах которого будут зависимые библиотеки. А если Вам нужно добавить в сборку неуправляемые dll (написанные на C++/C и т.д.), достаточно отредактировать файл FodyWeavers.xml, добавив имена этих dll в специальные секции. Подробнее читайте про это в репозитории, ссылку на который я дал выше, под заголовком "Unmanaged32Assemblies & Unmanaged64Assemblies". 
Также можно использовать ILMerge. Пример использования в этом посте на Хабре. Помните, что он работает только с управляемыми .NET библиотеками, а с неуправляемыми не умеет.
Вопрос: Как вы добавляете коммиты?

Лучший ответ:
Атомарно. Часто. Любой целостный, завершенный и логический кусок или кусочек, независимо от размера. И не важно - сам пилю, или с командой. Это вопрос привычки - поначалу и лень, и смысла вроде не видишь. Со временем привыкаешь. И когда приходит время воспользоваться прелестями атомарных коммитов (а оно приходит) - откат фичи или возврат ранее откаченной (по требованию клиента), разрешение конфликтов и тд - радуешься и благодаришь себя прошлого за то, что не поленился.
И еще, очень важно писать адекватные commit message. Никаких "minor fix" и тому подобное. По месседжу должно быть четко понятно при листании истории что к чему и зачем, без необходимости смотреть diff. В идеале, еще и привязка к issues - но это актуально в командной работе, одному не надо.
Что касается бранчей - сильно зависит от проекта. В командной работе это либо feature branches (git flow или своя произвольная схема), либо у каждого своя ветка и там делай что хочешь. Тут смысл в первую очередь в пулл-реквестах, code review, CI и стабильном мастере, в котором всегда находится рабочий код. Если работать одному - лично я привык бранчевать каждую отдельную фичу (не фрагмент, а именно модуль, автономный кусок функциональности). Удобно на серверах чекаутить конкретный бранч, тестить, возвращаться на мастер. И это позволяет одновременно работать над несколькими фичами. Например, одну допилил, отдал на утверждение клиенту, а там есть комменты/фиксы, но ждешь какие-то материалы. Переключился на другую фичу и безопасно работаешь в другом бранче. В общем, удобно и надежно.

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

Лучший ответ:
не могли знать друг о друге, связаться друг с другом.
Что им помешает прямо в комментариях к задаче написать свой e-mail?

Худший ответ:
Ближайшие аналоги: Jira, YouTrack.
Вопрос: Как наследовать методы родительского контроллера при роутинге через аннотации?

Лучший ответ:
При помощи YAML и XML это не сделать. Если очень хочется, создайте файл routing.php и загрузите его:# app/config/routing.yml
routes:
    resource: 'routing.php'
Затем, в это файле настройте маршрутизацию програмно, т.е. через PHP.
Еще один вариант - использовать слушатель события kernel.request и, в зависимости от запроса, менять переменную _controller.
UPD: Еще один способ (возможно, для вас наилучший) - сделать собственный загрузчик маршрутов. См. https://symfony.com/doc/current/routing/custom_rou...

Худший ответ:
Нашел решение для того, что хотел:  аннотации роутинга не читаются из абстрактных классов, поэтому я расширил абстрактный контроллер неким промежуточным, и прописал в нём экшены с роутингом:/**
     *
     * @Route("/{id}", name="task_show")
     * @Method("GET")
     *
     */
    public function showAction(string $prefix, string $id)
    {
        return parent::{__FUNCTION__}(...func_get_args());
    }
После чего я уже наследовал этот контроллер другими... Но от этой идеи я отказался, так как имена роутов выходили одинаковыми и сделать их динамическими (с помощью префикса, как URL) не представляется возможным. Потому я просто сделал один контроллер:/**
 * Lists all Task entities.
 *
 * @Route("/{prefix}", requirements={"prefix":"daily_tasks|events"})
 */
class TaskController extends Controller
универсальный для всех классов - с каким классом сущностей и папками работать он определяет на основе параметра prefix. Так что сделал фабрику:class TaskFactory
{
    private $map = [
        'daily_tasks' => DailyTask::class,
        'events' => Event::class,
        'todo' => Todo::class,
        'periodical' => Periodical::class,
        'until' => Until::class,
        'ponder' => Ponder::class
    ];


    public function get(string $prefix): TaskInterface
    {
        $class = $this->getTargetClassName($prefix);
        return new $class;
    }


    public function getTargetClassName(string $prefix): string
    {

        if (isset($this->map[$prefix])) {
            return $this->map[$prefix];
        }

        throw new \RuntimeException('Task not found');

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

Лучший ответ:
Установите себе gulp-html-prettify и после компиляции из jade в html, прогоните ещё через него.

Худший ответ:
Можно вместо pretty: true указать pretty: '    '
В кавычках указываем нужное количество пробелов/отступов.
gulp-html-prettify делает тоже самое.
Вопрос: Как сверстать угол у картинки?

Лучший ответ:
Миллиард ссылок только на тостере:Тостергугляяндекс
даже мать его yahoo

Худший ответ:
Используй :after и :before. Вот пример
Вопрос: В чем отличия этих книг?

Лучший ответ:
Разница в совести продавца. Айфоны с себестоимостью $150 ведь тоже продают за $600.

Худший ответ:
Книги одинаковые. Просто цены разные. В ТД Савёловский купил эту книгу за 1900 с копейками.
Вопрос: Как правильно получить обновление от Telegram бота посредством WebHook?

Лучший ответ:
1) Создаешь проект на WebApi2 или MVC 5 ну или на новёхоньком asp net core
2) Создаешь классы моделей данных которые будут поступать от телеграма
3) Создаешь контроллер и экшен в нем, который будет принимать входящий запрос от телеграм
что-то типо такого://пример для WebApi2:
//телеграм не дает возможности как-то проверять что запрос пришел от самого телеграма
//так что в официальном факе рекомендовано создавать сложный адрес
//так как такой адрес известен только разработчику и телеграму
//никто не сможет подделать запросы
[RoutePrefix("api/myveryawesomebot123802539483")]
public MyTelegramBotController:ApiController
{
    [HttpPost]
    [Route("sdfsdf2342f2q")]
    public void Update([FromBody] UpdateModel model)
     {
          ...
     }
}
Рекомендую разместить веб проект на Azure - он даст возможность БЕСПЛАТНО разместить вашего бота в датацентре со всей защитой + бесплатный и сразу валидный SSL сертификат + возможности удаленной отладки кода в VS

Худший ответ:
При webhook сервера telegram сами присылают https-запросы с данными. Т.е. подход другой. Сейчас у вас так: программа делает запросы на обновления и сразу отвечает. С вебхуком будет так: обработка запросов отдельно, обработка ответов отдельно
Что требуется:
1. доступ из вне к скриптам бота для приема https-запроса
2. ssl сертификат (сгенерированный самостоятельно, полученный бесплатно или купленный)
Вопрос: Что делать с парсерами, которые долбят сайт?

Лучший ответ:
ребят вы фигню ему советуете все. я как человек, который порой парсит знаю, нет нормального пути защиты, ну нет и все тут.
Из рекомендаций:
1. всякие рекаптча , каптча и тп можете не включать, будете раздражать реальных пользователей, а 5 -10 копеек и бот вашу каптчу, рекаптчу разгадает. Не работает эта защита.
2. Если вы видите бота, который по всем признакам браузер, возрадуйтесь и покажите ему рекламу. Будете на этом зарабатывать.
3. Все парсеры привязаны к цсс селекторам и выдергивают данные из них, вы можете строить такие селекторы динамически, максимально их видоизменяя. Возможно это будет напрягать ваших обидчиков.
4. Вы можете лимитировать отдачу для пользователя Н раз в / минуту / час / 2 часа / сутки , далее составлять блоклист и в бан.
5. Вы можете пройти по всем бюджетным прокси сайтам, и там где дешево купить себе адреса проксей, получить их списки и сразу их внести в бан. Чаще всего парсят с говнопроксей.
6. Подкрутить днс бл к адресам.
7. Проверять не ведут ли клиентские адреса на хостинги датацентров, где впс, вдс стоят. Чаще всего прокси продают именно с диапазонов хостинг провайдеров, а значит их легко вычислить.
8. Возможно самый полезный инструмент ,введите фингерпринт в токены к своей регистрации / авторизации. В результате даже если используются разные прокси адреса, отпечаток фингерпринта будет совподать. А далее слишком много запросов, 1 и тот же фингерпринт, адреса чередуются, роутятся на хостинги, прямой путь в блек лист.
9. Боремся с любителями курла: я понимаю, это еще тот геморой, так как почти все шаманства можно разгадать и впулить как пост запрос, но все же, как бы я это делал: токен на минимальную сессию, 10 - 15 минут, в токене фингерпринт, и чтобы получить токен надо сперва пройти ритуал js монитринга в браузере, если этого не случилсь, токен не выдавать. Какие бывают мониторинги, фингерпринт по наложению эффектов на свг изображение, далее съем мд5 отпечатка, сбор информации о установленных шрифтах, сбор данных от навигатора о плагинах и миме типах. проверка соответствия юзерагента поведению браузера. и что еще больше испортит жизнь ботопарсеру, это чтобы ссылки для него менялись каждый раз как и токен. Гемороя много, но думаю после этого вас парсить не захотят.
Но я за то , чтобы отдать боту то, что он найдет если не у вас, то у вашего конкурента, но вы ему впулите много много рекламы.
Удачи.
UPD: 
Подцепляешь сокеты и следишь за пользовательским поведением, изменение курсора мыши, пробег мыши на сайте, скроллинги, клики и тп, если кликается, то в это время позиция курсора внутри элемента или нет? 
есть еще один момент, который может помочь, но я не скажу, я его сам боюсь ))))

Худший ответ:
Если заморочится и добавить возможность сторонним сервисам запрашивать данные по rest и повесить на сайте к этому доку, нагрузка от парсеров снижается
Вопрос: Как настроить nginx чтобы он закрыл доступ к сайту и направил на заглушку во время ТО?

Лучший ответ:
Пример реализации вывода заглушки при недоступности бэкенда:error_page 502 503 504 /maintenance.htm;
location ~ /maintenance\.(css|htm|jpg) {
        root /usr/share/nginx;
}
При этом сохраняется исходный адрес запроса. Удобство ещё в том, что данные параметры можно вынести в отдельный файл и подключить по необходимости через include для любого множества сайтов. Дополнительно можно организовать автоматическую перезагрузку страницы, например добавив в файле maintenance.htm строчку:<meta http-equiv="refresh" content="30" />

Худший ответ:
location / {
    return 302 site.com/stub.html;
}
перед всеми location'ами
Вопрос: Как удалять связанные модели в Laravel?

Лучший ответ:
Как ответили выше, $article->comments()->delete();
Вызвать можно удобно с помощью событий модели.
В Вашей модели:// ...

public function boot()
{
     Post::deleted(function ($post) {
          $post->comments()->delete();
     });
}
Почитать подробнее можно тут:
https://laravel.com/docs/5.3/eloquent#events

Худший ответ:
FOREIGN KEYS - единственный верный способ сделать это