pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Как создать class Triangle, из class`a Point?

Лучший ответ: 1. На кой вам наследование вообще? Вы утверждаете что треугольник это точка??
2. Ну вот оставьте три точки которые вы уже объявили в качестве полей, и сделайте методы для операций, определённых над треугольников в целом, например посчитать периметр или площадь. Сделайте конструктор, который эти три точки будет принимать и дополнительно проверять что никакие две из них не лежат на одной прямой - получите инвариант невырожденного треугольника.
По каким книгам вы всё это делаете? Учебный материал у вас явно не очень.

Худший ответ: double getP(){
            return p1 + p2 + p3;
}
Не "взлетит". Не описан operator+ в Point.
У вас есть метод для координат на плоскости (кстати туда б добавить надо, например тех же операторов). Для треугольника нужны кроме 3 поинтов, еще методы "что с ними делать", например GetSquare(), InSpace(Point), GetCenter()... etc... 
Класс для "тупо хранения трех точек" без методов работы с ними - не нужен.
Вопрос: Lte: Подходит ли для России телефон, сделанный под азиатский регион?

Лучший ответ: Уже давно все пилят под всё сразу. Тех. часть по телефону-то погуглите, там всё написано.В подавляющем большинстве регионов сети запущены в парном спектре (LTE FDD) в диапазоне 2600 МГц (band 7), за исключением сетей LTE TDD - МТС в Москве (2600 МГц, band 38) и «Вайнах Телеком» в Чеченской Республике (2,3 ГГц, band 40).
https://www.htc.com/hk-en/smartphones/htc-u11/
4G LTE (up to 800Mbps, service dependent)
FDD: Bands B4/B12/B17/B28/B20/B5/B8/B3/B1/B7/B32
TDD: Bands B39/B40/B38/B41

Худший ответ: https://willmyphonework.net/
и аналоги.
Вопрос: IDE / Code Editor для своего сервера / сайта?

Лучший ответ: На скриншоте у вас codiad

Худший ответ: Вот такой находил бесплатный https://ace.c9.io/#nav=about редактор кода
Ну и Cloud9 IDE https://c9.io/ облачная иде - немножко платная...
Вопрос: Как отследить нажатие Enter при поиске?

Лучший ответ: 1) Завернуть все input в <form>

</form>
2) Добавить<input type="submit" value="Поиск">
Тогда сработает Enter...

Худший ответ: var input = document.querySelector('input[type="text"]');

input.addEventListener('keypress', function(e){
// если пользователь нажал на Enter, выполняем нужный код
// e.preventDefault() для того чтобы отключить действие браузера по умолчанию (обычно это отправка формы).
	if(e.which === 13){
  	e.preventDefault();
        alert('You clicked Enter');
  }
});
https://jsfiddle.net/cac6px2n/ - демо
Вопрос: Как оценивать вёрстку?

Лучший ответ: Оценивать надо исходя из вашего желаемого часового рейта. И все.
Ко мне если обратяться с просьбой сделать что-то простое, что требует N часов работы, то я и скажу им что это будет стоить N * hour-rate. При этом я естественно предупрежу людей, что обращаться ко мне с созданием чего-то простого нецелесообразно, ибо огромное количество более низкоспециализированных людей сможет это сделать за N * hour-rate/5 (или /10).
Все остальные критерии не имеют никакого значения. Сложно это или нет. Это рыночные отношения, где все крутится вокруг спроса и предложения.

Худший ответ: Если есть возможность, лучше уточнить у заказчика сколько он планирует потратить на эту работу.
Ориентироваться на других/тренд/среднюю цену, не всегда правильно.
По тому как всегда найдется индус или школьник, который готов сделать эту же работу за еду.
Плюс разные заказчики за одну и ту же работу могут платить на порядок разные деньги.
Ну скажут вам сейчас тут, условно, 100 рублей футер, 100 рублей хедер, и 250 за розовый попап с двумя кнопками. А заказчик готов за все это будет 1000 заплатить. Вам есть смысл зарабатывать меньше?
Вопрос: Как разбить js на файлы/модули?

Лучший ответ: Совершенно не понимаю зачем городить огород с оборачиванием в функцию предложенный  Александр Косицын . Этот способ скорее подходит для модулей написанных для браузера, с целью изолировать их пространство имен.
Предлагаю не заморачиваться, и поступить так, как показано в оф.доке express-а:файл с кодом роутераvar express = require('express');
var router = express.Router();

// middleware that is specific to this router
router.use(function timeLog(req, res, next) {
  console.log('Time: ', Date.now());
  next();
});
// define the home page route
router.get('/', function(req, res) {
  res.send('Birds home page');
});
// define the about route
router.get('/about', function(req, res) {
  res.send('About birds');
});

module.exports = router;основной файл приложения...
var birds = require('./birds');
...
app.use('/birds', birds);
...
PS: при этом имена и местоположение файлов роутеров весьма условная вещь.  По факту вы можете давать им любые имена и укладывать в любые папки, главное не запутайтесь при их подключении. Например некий роутер отвечающий за чат лежит в папке `/routers/chat` и называется `main.js`. Чтобы его подключить, нам надо будет написать что то типа:...
var chat = require('./routers/chat/main.js');
...
app.use('/chat, chat);
...

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

Лучший ответ: Таненбаум "Современные операционные системы".

Худший ответ: а еще есть что-то ?
Вопрос: Как лучше организовать структуру компонентов сайта React?

Лучший ответ: Вот тут хорошо описаны различные варианты подходов

Худший ответ: layouts - целиковые страницы: главная, авторизация, регистрация
Внутри для каждой страницы папка, в которой можно держать сколь угодно относящихся только к этой странице компонентов - шапка этой страницы, меню этой страницы, вспомогательная фигня этой страницы, подвал этой страницыcomponents - повторно используемые в разных местах компоненты - инпуты, селекторы, галереи, эмбед видеоплеера и т.д.
Также можно выделять сюда куски страниц (шапки, подвалы), используемые в нескольких layoutsstyles - общеиспользуемые стили (здесь можно задать некий index с подключением к нему reset/normalize, шрифтов, эмоджи и т.д., а затем подключать его к App.jsx)
Опционально можно выделить отдельную папку для App.jsx (при желании папку styles можно перенести туда же), либо определить его в layouts, как больше нравится, тут субъективно опираемся на внутреннее чувство фэн-шуя
Вопрос: Best Practice при работе с репозиториями в Laravel?

Лучший ответ: Да, по реализации все верно вы себе представляете.Как все это смотрится с AR? 
Откровенно скажу, с AR это смотрится хреново. В том смысле, что вы не используете основные "преимущества" (Да, да, в кавычках, потому что эти самые преимущества облегчают и ускоряют разработку, но никак не способствуют улучшению качества кода и его поддержке) этого паттерна.В каждом из таких репозиторий будут повторяющиеся методы: all, find и прочие. Как быть в таком случае? Как вынести подобные методы в общий класс?
Создать базовый интерфейс для всех репозиториев и в нем описать эти методы, затем расширить интерфейс каждого конкретного репозитория. Можете плюсом ко всему написать абстрактный класс репозиторий и в нем написать универсальную реализацию этих самых общих методов (Для каждого типа репозиториев, разумеется). Но лично я бы так делать не стал.Правильно ли я размышляю вообще? Да, по реализации все верно вы себе представляете.

Худший ответ: Для начала разберитесь для чего нужен репозиторий, вот на хабре писали хорошую статью https://habrahabr.ru/post/316836/ Чтобы выносить логику из контроллеров, используйте сервисы - https://laravel-news.ru/blog/tutorials/design-patt...
Вопрос: Как отображаются скачанные шрифты?

Лучший ответ: Не будет.
Если уже установлен, будет отображаться и без скачиваниz (если прописан в css)
Для подобных целей я пользую библиотеку https://github.com/typekit/webfontloader
По сути сначала сайт грузится с дефолтными шрифтами, и в последнюю очередь подгружаются шрифты указанные в скрипте и обновляют "вид"
ps вроде ничего не моргает и не мерцает в процессе

Худший ответ: Если шрифт не подключен с облака или не указан в @font-face вашего CSS то не будет
Скачали шрифт с гуглфонта, конвертировали его в webfont из ttf, подключили в стилях через @font-face и все работает у всех (отрисовка шрифта на разных ОС и браузерах может немного отличаться)
Вопрос: Как реализовать мои маленькие мысли?

Лучший ответ: На Node.js (у вас просто тег JavaScript) можно сделать как то так
https://nodejs.org/api/dns.htmlvar dns = require('dns')
var express = require('express')
var cors = require('cors')
var app = express()
var url = require('url')

app.get('/get-ip/:url', cors(), function(req, res) {

	var URL = req.params.url;

	if (URL !== 'favicon.ico') {
		dns.resolve4(URL, (err, addresses) => {
			if (err) throw err;

			res.send(JSON.stringify({
				original: URL,
				ip: addresses[0]
			}))
		})
	}

})

var port = process.env.PORT || 8080;
app.listen(port, function() {
	console.log('Node.js listening on port ' + port)
})

Худший ответ: На Node.js (у вас просто тег JavaScript) можно сделать как то так
https://nodejs.org/api/dns.htmlvar dns = require('dns')
var express = require('express')
var cors = require('cors')
var app = express()
var url = require('url')

app.get('/get-ip/:url', cors(), function(req, res) {

	var URL = req.params.url;

	if (URL !== 'favicon.ico') {
		dns.resolve4(URL, (err, addresses) => {
			if (err) throw err;

			res.send(JSON.stringify({
				original: URL,
				ip: addresses[0]
			}))
		})
	}

})

var port = process.env.PORT || 8080;
app.listen(port, function() {
	console.log('Node.js listening on port ' + port)
})
Вопрос: Как показать баннер при подключении к wi-fi?

Лучший ответ: Способы как это можно сделать довольно подробно описаны в Wikipedia

Худший ответ: Вам нужен Captive portal, или готовое решение, например, Вам подойдет услуга Гостевые страницы в публичных сетях Wi-Fi, если по какой-либо причине невозможно поднять Captive portal самостоятельно.
Вопрос: Зачем делать поле приватным а затем создавать для него геттер и сеттер?

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

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

Лучший ответ: Надо проанализировать видимость сайта в поисковиках, а точнее тематики по которым он там есть. Проанализировать стоимость клика в данной тематике. Определить посещаемость и ее источники. Самое главное, для сайтов на продаже, определить имеет ли сайт платный трафик. Часто при продаже сайта владелец начитает накручивать посещения. Так что отталкиваться стоит только от поискового трафика и то могут быт нюансы.

Худший ответ: оценочный доход   = функция от  K*L*M*N*Y
где 
K - количество траффика исследуемой страны
L - момент распределения средней стоимости клика по семантическому ядру
M - процент, отдаваемый Гуглом вебмастеру, включая нае Гугла на странах
N  - коэффициент траффикового ядра сайта
Y - коэффициент заполненности тематической рекламой
берете - подставляете - считаете
Вопрос: Работа с media не получается изменить padding?

Лучший ответ: Надо соблюдать css зависимости, header nav

Худший ответ: media не при чем.
Вес верхнего селектора выше, чем нижнего.
Читайте про вес https://habr.com/post/137588/
Вопрос: Могут ли специально накручивать показатель отказов и зачем?

Лучший ответ: Наверняка крутят конкуренты.
Может быть сильно опасно: от "Яндекса" фильтр прилетает с большой долей вероятности.
Пишите в службу поддержки поиска "Яндекса", объясните ситуацию, спросите что делать. Вам ответят, что ничего, алгоритмы сами распознают. Но в случае дальнейшего фильтра вам будет чем апеллировать к совести поддержки: иногда помогает.

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

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

Худший ответ: Ну если есть уверенность в подготовке полностью идентичного клона и допустимое время простоя соизмеримо со временем перетыкания  разъемов - то это наверное самый оптимальный метод.
Вопрос: Symfony Route не работает?

Лучший ответ: А вы кэш перестраивали?

Худший ответ: А вы кэш перестраивали?
Вопрос: Чем лучше и быстрее парсить Amazon на Python?

Лучший ответ: Занимаюсь парсингом Амазона в промышленных масштабах (сотни тысяч страниц в день). Самая большая проблема не в библиотеках, а в том, что Амазон очень умело выявляет попытки парсинга и при этом постоянно совершенствует собственную технику обнаружения таких попыток. Поэтому самый действенный способ - это иметь в своем распоряжении приличный набор качественных прокси (с теми у которых отличается только последняя секция и номер порта долго работать не получится - попадут в черный список на срок от часа до суток, в зависимости от того как интенсивно будете через них слать запросы).
По поводу библиотек - выбирайте их в соответствии с вашими потребностями, отталкиваясь от объема запросов которые нужно слать. Самые простые - это всякие requests, urllib, pycurl, multycurl. Ими целесообразно пользоваться в однопоточном и синхронном типе парсеров. Но практически всю работу будете писать руками. Если хотите чуть больше мощности и удобства - посмотрите в сторону Grab. Он может многое, в т.ч. удобно работает с прокси и т.д. Если нужен большой объем и скорость - используйте Scrapy. Крутая штука, но со своими правилами. Однако если нужно будет затачивать под себя - в сети много информации по нему.
С API Амазон можно и нужно работать. Но есть несколько проблем:
1. Существует лимит на кол-во обращений(тут подробнее, но можно в одном запросе слать до 10-ти ASIN).
2. Самое неприятное, что по некоторым товарам (при использовании lookup-методов) инфа не приходит либо отличается от оригинала(сайта). Т.е. не нужно полагаться на то, что АПИ будет возвращать информацию полностью идентичную с их сайтом.
3. Ограничение на кол-во товаров по которым возвращается инфа (при использовании search-методов). 100 товаров. Дальше - только парсинг. Такое ограничение не только у Амазон, у Ebay так же. Без этого - кол-во всяких дропшиперов и прочих посредников просто зашкалило бы.
Несколько нюансов:
-Не пытайтесь выдавать себя за Google  Bot, ничего хорошего не выйдет, только потратите время.
-Использование всяких браузерных технологий, наподобие PhantomJS или даже Selenium, толку не принесет. Там к проблеме IP еще добавятся куки и т.п. По скорости будет медленно, для больших объемов не подойдет.
-Главное, как уже понятно, обойти систему которая определяет ботов и краулеры. Поэтому импровизируйте, экспериментируйте, думайте головой и ищите свои решения. На том конце сидят тоже люди ) В сети масса советов по этому поводу (можете начать с последнего раздела здесь).

Худший ответ: A-parser крутое решение для парсинга Амазон.
Вопрос: Как добавить скрипт изменения ttl в автозагрузку?

Лучший ответ: добавь в /etc/sysctl.conf
net.ipv4.ip_default_ttl=65

Худший ответ: Установить iptables-persistent и отредактировать /etc/iptables/rules.v4? Типа того:*mangle
-A POSTROUTING -j TTL --ttl-set 65
Или внести всё что надо в iptables руками и сохранить текущее состояние с помощью netfilter-persistent save
Вопрос: Какой объем работы должен выполнять 1 дизайнер?

Лучший ответ: Скорее ваш работодатель смог найти пахающую лошадку за гроши.
1. Одновременно 7 проектов вести один человек не может. Максимум 2-3.
2. Многое зависит от сложности проектов. Если ваши 7 проектов это обычные, ничем не примечательные лендосы, то возможно. Вести сразу даже 2 серьезных проекта вы не сможете, хотя бы по причине того, что вас всегда будут дергать по мелочам (коих в любом проекте всегда процентов 80% от всего проекта).
3. В идеале работа должна строиться так: получили проект, отрисовали вообще все что только можно, утвердили дизайн, пока ваш дизайн верстают и пишут весь сайт, вы делаете в этот момент следующий дизайн.

Худший ответ: Личный опыт — предел (!) 3 проекта на день, 6 дней в неделю. Обычная загруженность — 2 проекта. Минимальная — 1 проект. Больше трех проектов не беру (физически не успевается).
ЗП выше, чем указана в топике... Но я и работаю на себя.
Вообще я писал как работать в условиях аврала — https://idzenski.ru/kak-stat-dzhiedaiem-dzhiedaisk...
Но вам я рекомендую найти другую контору — 180$  для грамотного дизайнера это критично мало.
Вопрос: Как удаленно подключиться к ubuntu?

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

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

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

Худший ответ: Мнэээ…
1) Если не подписывались, значит это СПАМ и надо жаловаться. Чтобы бота банили к егерям.
2) Если подписывались, значит должен быть интерфейс отписки.
3) Если интерфейса отписки нет, писать владельцу бота, чтобы отключил вас и/или прикрутил отписку. Лучше, конечно, «и», потому что отсутствие возможности отписки —моветон и попахивает СПАМом.
Вопрос: Оптимизировать запрос MySQL. Как узнать сколько всего рядов когда использую limit?

Лучший ответ: Сам по себе еще один запрос - это не лишняя работа, а ерунда на постном масле.
Вопрос не в том, сколько запросов выполняется, а что именно они делают. 
И в данном случае эти два запроса делают ужас, летящий на крыльях ночи. Я сейчас расскажу, что делает ваш код.
Сначала этот код просит базу данных отправить в РНР все найденные запросом строки. Все. Без лимита. Чтобы РНР мог посчитать их и потом выбросить.
После этого код еще раз просит базу отправить, только не все строки, а только часть. И теперь РНР уже не выбрасывает полученные строки, а честно выводит.
Понятное дело, что смысла в этих замысловатых телодвижениях - ноль целых, ноль десятых.
Как правильно получить общее количество найденных строк? Надо попросить базу посчитать их
Ну и разумеется, использование prepare вместе с доморощенной и небезопасной функцией "clearStr"  - это вообще за гранью добра и зла. Это примерно как хранить миллион в сейфе, но не запирать его на ключ, а подпирать дощечкой.
$GLOBALS["mysqlcon"] - это отдельный ужас, но на фоне всего остального меркнет.
Правильный код будет таким$sql = "SELECT count(*) FROM post WHERE MATCH (tags) AGAINST (? IN BOOLEAN MODE)";
$STH = $GLOBALS["mysqlcon"]->prepare($sql);
$STH->execute([$_GET['search']]);
$totalPages=ceil($STH->fetchColumn()/$numPosts); //Узнаем сколько всего страниц существует

$sql = "SELECT * FROM post WHERE MATCH (tags) AGAINST (? IN BOOLEAN MODE) LIMIT ?,?";
$STH = $GLOBALS["mysqlcon"]->prepare($sql);
$STH->execute([$_GET['search'],$start, $numPosts]);
Поскольку все советуют синглтон, вот готовый пример: https://phpdelusions.net/pdo/pdo_wrapper#singleton
С ним, кроме прочего, код будет короче$sql = "SELECT count(*) FROM post WHERE MATCH (tags) AGAINST (? IN BOOLEAN MODE)";
$numRows = DB::run($sql, [$_GET['search']])->fetchColumn();
$totalPages=ceil($numRows/$numPosts); //Узнаем сколько всего страниц существует

$sql = "SELECT * FROM post WHERE MATCH (tags) AGAINST (? IN BOOLEAN MODE) LIMIT ?,?";
$STH = DB::run($sql, [$_GET['search'],$start, $numPosts]);

Худший ответ: Считай ряды средствами сервера БД. Для количества есть COUNT(поле). И первом запросе оставь какое-нибудь одно поле типа ID или что-то похожее.
Вопрос: Как можно проапгрейдить данную сборку?

Лучший ответ: Купить новый ПК

Худший ответ: Надеюсь, в Гугле не забанили?
Вопрос: Сервер на Си, как и зачем?

Лучший ответ: libuvlibevent
Самые шустрые и распространённые библиотеки.
Первая используется в ядре Node.js.
Вторая — в куче проектов типа хрома, тора, файрфокса, мускуля. Умеет http-роутер из коробки.
На Си дурной тон писать сервер, когда не знаешь Си. Бред наркомана. 
90% всех существующих серверов написано на Си. Другое дело, что надо знать одновременно и язык, и тонкости ОС, и тонкости сетей, уметь пользоваться профилировщиками памяти. Ну, и времени нужно очень приличное количество.

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

Лучший ответ: Если используете jquery, то .toggle() поможет.$("button").click(function() {
  $("div").toggle();
});

Худший ответ: Cube Cube 
Использую jquery. 
Нужно добавить вот этот контейнер:
Как указать в вашем примере ,что именно этот контейнер нужно добавлять/убирать по клику?
Вопрос: Какая идеальная структура каталога для картинок и почему?

Лучший ответ: Функция glob() в PHP? - тест 8-летней давности на выборку файлов по маске с директории в 200 000 файлов.
файловой системе фиолетово один файл в директории или 100500, на скорости прямого доступа к файлам это не отразиться.
а дальше все зависит от того, каким образом вы собрались организовывать поиск.

Худший ответ: В качестве имён файлов можно использовать хэш содержимого, файлы распределять по подкаталогам, имена которых образованы первыми символами имен файлов. Пример:/34c/82a/416/34c82a416fca4cf3a1215ad5e8f2d782.jpg
Вопрос: Какие есть офлайн справочники по HTML/CSS?

Лучший ответ: devdocs.io
Кнопочка Offline

Худший ответ: сохраните нужные страницы отсюда https://www.w3.org/TR/#tr_HTML
Вопрос: Что делать при появлении сообщения «В системе заканчиваются свободные ресурсы»?

Лучший ответ: Память заканчивается, оперативная.
Посмотреть можно не стандартным диспетчером задач, а моей любимой программулиной - Process Explorer компании Sysinternals

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

Лучший ответ: С помощью рекурсии

Худший ответ: Можно.
Вопрос: Слетел сервер с базами данных и нет бэкапов, только куча .frm, .myd, .myi, но база InnoDB и восстанавливаться отказывается категорически?

Лучший ответ: 1 Ничего не трогайте и позовите админа - пусть починит и настроит бекапы.
2 Если админа нет то все плохо - у вас повреждены файлы в том числе и самого mysql сервера, что делать:
а) копируете все что есть сейчас в бекап бекапа и начинаете эксперименты (всегда должна быть копия файлов тк как некоторые действия могут только ухудшить состояние)
б) переустанавливаете mysql-server (мария дб, перкона или что у вас там, при этом той же версии) проверяйте что innodb движок появился
в) гуглите как пользоватся mysqlcheck и myisamchk, потом используете.

Худший ответ: Как я у себя делал:
1) Идентичный конфиг my.cnf обязательно.
2) Идентичные версии mysql обязательны
3) Останавливаем MySQL.
4) Копируем файлы в /var/lib/mysql
5) Запускаем MySQL.
Бекап my.cnf или примерный конфиг есть?