Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: В чем суть БЭМ от Яндекса?

Лучший ответ:
По сути все сборщики там это всё вторично. Главное сам принцип именования и использования классов в HTML и CSS. Этот подход позволяет сохранять единообразный подход к разработке даже в самой большой команде. Кроме того позволяет обмениваться модулями (html+css+js) между командами. Например одна команда написала скажем sidebar. Другая команда теперь может легко и просто вставить его в свой проект, не беспокоясь о конфликте CSS стилей или имен классов.

Худший ответ:
По смыслу же это - jquery/gulp/jade - от яндекса?
это bem-tools, сама методология BEM чуть отличается все же.
блок - базовые стили маленького блока, какой-то конкретной составляющей UI
элемент - стили отвечающие за позиционирование вложенных блоков или просто элементов
модификаторы - стили, меняющие оформление блока или его элементов.
По сути BEM это крайность, основная соль которой - декомпозиция UI, разделение всего и вся на независимые блоки с целью повторного использования... Это очень даже хорошо работает в рамках большого количества однотипных в плане UI приложений. Для яндекса это подходит очень хорошо. Для мелких проектов - возможно не так хорошо, но от этого идеи не становятся плохими. Можно слепо следовать правилам и жить не тужить, а можно думать что ты делаешь и какие подходы используешь, оптимизировать все под себя и т.д.
https://www.youtube.com/watch?v=RM55tkWfHDc - рекомендую к просмотру доклад Вадима Макеева на эту тему. Думаю так будет проще.
Вопрос: Где найти сообщество по интересам?

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

Худший ответ:
Я согласен с littleguga. Нужно для начала найти сообщество, которое будет интересно. Далее дело за малым...
Или же попытаться найти единомышленников в своем городе. Иных вариантов нет, если только у Вас нет в планах начать через "не могу" интересоваться теми вещами, которыми увлекаются Ваши коллеги. 
Или же, создать общий интерес. Это называется корпоративный тимбилдинг. Мы, в свое  время, очень часто вместе выезжали на какие-нибудь мероприятия (например, пейнтбол), было весело и потом можно было что-то совместно обсуждать.
Вопрос: В чем можно сделать интерактивный макет?

Лучший ответ:
www.axure.com - 30-дневный триал. очень удобный сервис.
совсем бесплатных и хороших наверное и нет. умеете быстро верстать - верстайте, используйте фреймворки. бутстрап, например.

Худший ответ:
https://mockingbot.com - вроде на 1 макет точно бесплатно
Вопрос: Есть ли в Yii2 возможность получить массив в экшине из параметров url?

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

Худший ответ:
Вы можете назначить в качестве раута наследника CRoute, и там парсить строку преобразуя в get параметры...
Вопрос: Как обеспечить безопасность данных при работе в публичном Wi-Fi в отелях?

Лучший ответ:
Для себя решил так: к домашнему серверу получаю тоннель через OpenVPN, с него уже хожу в интернет. На ноуте только клиент. Весь трафик шифруется уже на ноуте, расшифровывается на домашнем сервере. Настройка заняла час (вместе с изучением мануала). 
Что касается защиты - если у Вас супер-важная инфа идет по каналу, то скажу сразу - могут сломать и этот метод (собственно как и любой другой).

Худший ответ:
Используйте сервисы предоставляющие VPN.
Вопрос: Есть ли нормальные варианты установки Ubuntu на USB флешку?

Лучший ответ:
Можно — установить на флешку как live USB, НО при этом создав большой (гига 4) «Persistant file» при помощи одной из следующих программ:
1) UNetbootin — unetbootin.sourceforge.net/
2) Usb-creator — hacktolive.org/wiki/Usb-creator
3) Universal USB Installer — www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/
при этом не пропадет возможность ставить с флэшки линукс как и с liveCD, но при этом все скачанные/отредактированные документы/файлы будут сохраняться в home, так и будут обновляться/устанавливаться программы

Худший ответ:
Возможно, получится установить ubuntu на флешку через wubi.
Вопрос: Как запретить использовать другие dns сервера на микротик?

Лучший ответ:
Редиректим запросы исходящие на 53 порт на сам тик. Прокатывает, ибо DNS придумали хиппи. Юзеры в локалке могут писать что угодно.
chain=dstnat action=redirect to-ports=53 protocol=udp in-interface=Bridge src-port=53 log=no log-prefix="" 
chain=dstnat action=redirect to-ports=53 protocol=tcp in-interface=Bridge src-port=53 log=no log-prefix=""

Худший ответ:
Сделать строгую авторизацию mac адресу.
На DHCP сервере выставить нужные DNS.
Вопрос: Англоязычный Хабр?

Лучший ответ:
В сторону техкранча не смотрели? У них множество фидов, разбитых по тематикам.
techcrunch.com/rssfeeds/

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

Лучший ответ:
А в чём проблема? Длины массивов известны, берём полусумму длин и сдвигаемся параллельно по обоим массивам на эту величину, аналогично сортировке слиянием.
Ватиант на JS, то что с ходу получилось.arr1 = [1, 3, 5, 7];
arr2 = [2, 6, 10];
p1 = arr1.length;
p2 = arr2.length;
n = p1+p2;
if (n == 0)
  n--;
med = 0;
p1--;
p2--;
while (0 < n) {
  if (p2 < 0 || (p1 >= 0 && arr1[p1] > arr2[p2]))
    med = arr1[p1--];
  else
    med = arr2[p2--];
  n -= 2;
}
if (0 == n) {
  if (p2 < 0 || (p1 >= 0 && arr1[p1] > arr2[p2]))
    med = med+arr1[p1];
  else
    med = med+arr2[p2];
  med /= 2;
}
console.log(med);
P.S. Если предварительно найти область пересечения массивов, то можно уменьшить объём просматриваемых данных.

Худший ответ:
Что сложного?var arr1 = [1, 3, 5, 7];
      arr2 = [2, 6, 10];
var counter1 = 0;
      counter2 = 0;
      counter3 = 0;
      counter4 = 0;
      counter5 = (arr1.length + arr2.length) / 2;
      endCounter = 0;
      totalCounter = 0;
for(; totalCounter < Math.round(counter5); totalCounter++){
counter4 = counter3;
if(arr1[counter1] <= arr2[counter2]) {
counter3 = arr1[counter1];
counter1++;
} else {
counter3 = arr2[counter2];
counter2++;
};
};
if(counter5 != Math.round(counter5)){
endCounter = (counter3 + counter4) / 2;
} else {
endCounter = counter3;
};
Вопрос: Что делать когда кончаются названия для class/id

Лучший ответ:
Вообще, это очень важное и редкое умение, давать имена/названия объектам в программировании. Я часто трачу время именно на то, чтобы подобрать правильное и понятное название (и даже гуглю как аналогичные штуки называют другие разработчики, а также ищу переводы слов), а не написать сам код.

Что касается вдохновения, тут лучше поменять систему наименований. Например, сделать уникальный класс для блока, а внутри использовать классы с префиксом (по типу предложенной яндексоидами системы БЭМ), вроде:

.b-news-teaser (внутри b-new-teaser-header, b-new-teaser-list, b-news-teaser-item, b-news-teaser-sticky-flag и так далее), рядом .b-top-comments (внутри классы с таким же префиксом), потом .b-top-articles и так далее. То есть уникальные имена только у блока, а внутренние классы используют префикс.

Это, кстати, даст верстке определенные свойства «железобетонности» — вы сможете перенести блок с одной страницы на другую, и ничего не сломается. А изменения CSS-стилей в одном блоке новостей не сломают верстку форума (так как у всех блоков используются уникальные имена классов).

Естественно, вышеописанные свойства у вашей верстки будут только при соблюдении адекватного подхода (а то бывают товарищи, пишущие что-нибудь вроде p { font:… }, или даже * { color: black; } ну дуракам как известно, ничем уже не поможешь).

Что касается id — их надо избегать или использовать умные именования. Представьте, вы сверстали форму логина на странице, в которой есть field-username и field-password, а завтра вам понадобилось добавить такую же форму внизу (и у вас клик по лейблу в нижней форме начинает прокручивать страницу вверх). Или открыть в попапе. Или еще что-нибудь. Надо либо отказываться от id, либо, если никак, добавлять к ним уникальные префиксы (например #top-form-field-username и #popup-form-field-username).

Худший ответ:
Делаю так:

 — Все названия классов и идентификаторов — это полные английские слова, существительные. Для функций и методов — глаголы. Никаких сокращений и транслитерации.
 — Использую иерархию по вложенности. Например, «inventory_weapon» — id контейнера оружия, находящегося в контейнере инвентаря.
 — При необходимости использую одинаковые названия классов и идентификаторов.
Вопрос: Как сделать бесконечную ширину background в css?

Лучший ответ:
Может, вам нужен
background-attachment: fixed;
background-size: cover;
background-repeat: no-repeat;
background-position: top center;
background-image: url(image.jpg);
Сама картинка должна быть 500px в высоту.

Худший ответ:
Как вы себе представляете " background был в ширину бесконечен", можно макет
Вопрос: Будет ли интересно хабражителям, как забесплатно получить диплом магистра от университета Карнеги Меллон по Software Engineering?

Лучший ответ:
Прямо магия! Год «почти бесплатно» получаешь диплом, а потом сразу:

получают самые высокие стартовые зарплаты в ИТ-индустрии по сравнению с выпускниками других вузов мира,
имеют абсолютное конкурентное преимущество на рынке труда среди рекрутеров (по рейтингу Wall Street Journal).

Где-то явно подвох. :)

Худший ответ:
Огромное спасибо всем, кто откликнулся. Новость опубликована здесь: habrahabr.ru/post/176295/

PS: У меня уже глубокая ночь — иду спать, a завтра продолжу отвечать на вопросы.
Вопрос: Оптимальная реализация поиска и сортировки объектов с фиксированным количеством полей?

Лучший ответ:
Если столбцов много (миллионы-миллиарды), то обычный подход с индексами и WHERE не подойдет. Не так давно я сталкивался с подобной проблемой. Варианты я вижу такие:
1. Sphinx. Предназначен для полнотекстового поиска, но может искать и только по числовым полям (при docinfo=extern). Если записей в базе много, то он сильно расходует память. Работает быстро.
2. Таблицы в памяти. Аналогично п. 1.
3. EAV или хранение каждого поля в отдельной таблице. Немного медленнее, если пользователь задал мало параметров, и намного — если много.
4. OLAP-подобные способы. Самые большие требования к памяти и к дисковому пространству (при большом количестве вариантов — запредельные), но быстрый поиск по большому количеству параметров.
Для себя я решил, что оптимальный вариант — это Sphinx (docinfo=inline) при необходимости текстового поиска, а при отсутствии такой необходимости — комбинированный вариант п. 3 и 4, т.е. OLAP-подобная индексация работает только для наиболее частых вариантов полей.

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

Лучший ответ:
Создаём ключи на https://apps.twitter.com/
Использовалось:
https://pypi.python.org/pypi/twitter/
https://pypi.python.org/pypi/python-dateutil/
И ещё, если скрипт дойдёт до самого конца ленты, он может зациклиться или выкинуть исключение, не проверял эту ситуацию.from pathlib import Path
import dateutil.parser
import datetime
import twitter

APP_NAME = "TwitterScrap"
CONSUMER_KEY = "xxxxxxxxxxxxx" # Берём отсюда: https://apps.twitter.com/
CONSUMER_SECRET = "xxxxxxxxxxxxx" # Берём отсюда: https://apps.twitter.com/

credentials_file = Path("twitter_oauth_token.txt")
if not credentials_file.exists():
    oauth_token, oauth_secret = twitter.oauth_dance(APP_NAME, CONSUMER_KEY, CONSUMER_SECRET, str(credentials_file))
else:
    oauth_token, oauth_secret = twitter.read_token_file(str(credentials_file))

oauth = twitter.OAuth(oauth_token, oauth_secret, CONSUMER_KEY, CONSUMER_SECRET)
twitter_handler = twitter.Twitter(auth=oauth)

date = datetime.date.today()
until_date = date - datetime.timedelta(1) # Выводим твиты до вчерашнего дня
last_id = None
while(date > until_date):
    if last_id is not None:
        time_line = twitter_handler.statuses.home_timeline(exclude_replies=True, max_id=last_id)
    else:
        time_line = twitter_handler.statuses.home_timeline(exclude_replies=True)

    date = dateutil.parser.parse(time_line[-1]['created_at']).date()
    last_id = time_line[-1]['id']

    for i in time_line:
        print(i['user']['name'], "(@" + i['user']['screen_name'] + ")", i['created_at'])
        print(i['text'])
        print('--------------------')

Худший ответ:
я сделал себе граббер и через апи собираю по крону
Вопрос: Отправляется PID вместе с пакетом или нет?

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

Худший ответ:
Во-первых, вы не указали, о каком протоколе идёт речь. Хотя это в данном контексте вряд ли важно.
Во-вторых, не понятно какие стандарты вы шерстили. Если пойти по простому пути и открыть Википедию, то там можно увидеть составы пакетов, например, TCP и UDP (так как протокол из контекста не ясен, берем их). 
TCP: https://ru.wikipedia.org/wiki/TCP#.D0.97.D0.B0.D0....
UDP: https://ru.wikipedia.org/wiki/UDP#.D0.A1.D1.82.D1....
Разумеется для обмена данными с внешними источниками PID не используется (если мы говорим про какие-то классические схемы). Во-первых, операционная система знает какой процесс слушает какой порт. То есть если известен порт, то PID не нужен. Во-вторых, один и тот же процесс может слушать разные порты. То есть PID для внешнего источника не является уникальным идентификатором, а порт является. 
Итого:
В классических транспортных протоколах — нет, не отправляется. Это просто бесполезная информация для сетевого взаимодействия.
Вопрос: Как тестировать верстку под разные браузеры и экраны?

Лучший ответ:
Под мобильные устройства тестирую с помощью стандартных функций браузера (Firefox & Chrome это умеет  в devtools) 
Так же есть такая штука - ami.responsivedesign.is
Доступные размеры:
настольный монитор — 1600 x 992px;
ноутбук — 1280 x 802px;
планшет — 768 x 1024px;
мобильный телефон — 320 x 480px.
Так же есть это - deviceponsive.com
Устройства и доступные разрешения экранов.
Macbook — 1280 x 800
iPad портрет — 768 x 1024
iPad портрет — 1024 x 768
Kindle портрет — 600 x 1024
Kindle альбомная ориентация — 1024 x 600
iPhone портрет — 320 x 480
iPhone альбомная ориентация — 480 x 320
Galaxy портрет — 240 x 320
Galaxy альбомная ориентация — 320 x 240
Ну и мой любимый - quirktools.com/screenfly
Доступно 9 больше чем планшет устройств — от 10" ноутбуков, до 24" мониторов, 5 планшетов, 9 телефонов, 3 телевизионных разрешения, а также произвольное разрешение. Есть   отдельный переключатель в портретный и альбомный режим, а также опция показа прокрутки.

Худший ответ:
Адаптивность проверяю через devtools (там, как правило, есть такая возможность, вне зависимости от браузера), а если требуется проверить на iphone, mac или любой девайс, выходящий за рамки эмулирования, пользуюсь Browserstack. Они дают 30 минут тестирования на живых устройствах с настоящими браузерами и ОС (хватает на 10-15 проверок), далее платно, но чтобы не платить, просто регистрируйте аккаунт на фиктивную почту (10minutesmail и подобные сервисы).
Выбор девайсов очень велик, вплоть до версий операционной системы.
Вопрос: Если в локальной сети вдруг одна сетевая карта присвоит себе адрес другой, то как поведет себя сеть на каждом из компьютеров?

Лучший ответ:
батенька. может вам почитать про то как пашет dhcp и arp? а то вопрос тянет на "стыдно не знать и спрашивать 2015 года"

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

Лучший ответ:
За тело конструктора в объявлении конструктора надо съездить автору линейкой по пальцам. Или это C#?
int для индексов объектов - лажа, нужно использовать size_t. Учебники, в которых авторы по привычке лепят int куда ни попадя  - жарить в духовке до готовности. Температура - 451 по Фаренгейту.
Object getMeAnyObject(int i) - такая же лажа, нужно определить константный и неконстантый операторы индекса [].
В целом, попытка использовать list вместо vector - лажа.
По факту - с чего вы вообще взяли, что тут будет какая-то ссылка? Делая присваивание, вы выполняете копирование.
Ах да, еще одна Лажа Петровна:Object o;
  o = oc.getMeAnyObject(1);
Это ведь i like to move it move it!  (два вызова - конструктор и присваивание) форменное. Как насчет
Object o=oc.getMeAnyObject(9000)? Это ведь даже сподвигнет компилятор на RVO и вообще выкинет одно из копирований.

Худший ответ:
По сути своей два вопроса будут...Object getMeAnyObject(int i)
  {
    return listOfObject.at(i);
  }
Я хочу вернуть копию объекта из контейнера, а не ссылку. Верен ли мой код? 
Верен, если вы правильно расставили теги, и это действительно C++. Правда, в этом случае здесь listOfObject << new Object(); написана какая-то ерунда.
Второго вопроса не увидел.
Вопрос: Зачем нужен байт-код?

Лучший ответ:
Особенность многих jit компиляторов в том что они умеют оптимизировать код на лету, используя статистику выполнения программы,
например hotpath оптимизация считает количество попаданий в ту или иную часть программы, и генерит машинный код только для кусков кода где программа реально часто выполняется. 
Что это дает: за счет этого jit оптимизатор может разместить куски часто выполняющегося  машинного кода очень близко друг к другу - так что они все целиком будут умещаться например в кэше процессора, и да - jit компилятор порой за счет этого обгоняет прекомпилированный машинный код.
Есть еще куча оптимизаций например касающаяся языков которые поддерживают closures, как показывает практика большинство клозур используются в коде с одинаковыми переменными окружения, что позволяет не выполнять кучу работы по сохранению окружения и тп - а просто заинлайнить клозуру - другое дело что на этапе компиляции понять это невозможно, а вот на этапе выполнения сохранить hash окружения и если он не меняется то инлайнить код  - легко
Есть еще куча подобных оптимизаций которые реально помогают динамическим языкам работать почти наравне по скорости с С на некоторых задачах, яркий пример luajit
И до кучи динамические языки зачастую невозможно заранее перенести в native код чтобы сам этот код не прератился в некорый интерпретатор байткода, вот хорошо про это написано: 
stackoverflow.com/questions/15626611/can-regular-j...
(c# кстати нединамический поэтому для него насколько я помню была какая то тулзень для прекомпиляции в native код - но я уже лет сто ;-) не писал на c# поэтому точно не помню)

Худший ответ:
Идея следующая. Берется программа, транслируется в платформонезависимый байткод. Затем под виртуальной машиной этот байткод можно запустить без изменений и под x86 Windows и под x64 Linux. То есть, программу не придется компилировать под каждую платформу отдельно. На самом деле я даже могу не знать о существовании некоторых платформ, на которых мою программу кто-то запустит. Возможно, этих платформ еще даже не существует.
Кроме того, при обновлении виртуальной машины байткод может быть скомпилирован в более эффективный машинный код. И вообще-то даже на двух процессорах с одной архитектурой могут быть применимы очень разные оптимизации, так что платформ в действительности сильно больше, чем количество архитектур * количество ОС.
Вопрос: Лицензирование Windows Server

Лучший ответ:
Вот тут можно почитать. Вкратце, как я понял, если пользователи проходят проверку подлинности (а они в вашем случае явно проходят), то надо покупать лицензии.

Худший ответ:
Если у вас уже используется AD и приобретены клиентские лицензии для всех пользователей или компьютеров, то ничего докупать не нужно — CAL действуют в рамках всего предприятия.
Вопрос: Как убрать залипание курсора при пересечении границы 2 мониторов в Unity

Лучший ответ:
Шестеренка -> System settings -> Displays -> перевести свич Sticky Edges в положение off.

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

Лучший ответ:
Любой симметричный (да и асимметричный) алгоритм.
Зашифруйте storage мастер-ключом достаточной стойкости, а затем добавляйте к хранилищу в служебных данных мастер-ключ, зашифрованный разными пользовательскими ключами.
Это стандартный прием.
P.S. Если алгоритм - асимметричный, то такая технология называется "депонирование" (key escrow) и широко используется, когда к зашифрованным данным нужно предоставить доступ еще и различным надзорным/силовым ведомствам.

Худший ответ:
если данные не общие то можно создать два контейнера  TrueCrypt каждому пользователю свой
Вопрос: Из чего собрать домашний сервер?

Лучший ответ:
купите старенький нетбук на атоме.

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

Лучший ответ:
У всех рождество на носу. До вас нет дела.

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

Лучший ответ:
Удалить cookie хабра в браузере: PHPSESSID, hsec_id, остальные тоже не помешает.

Худший ответ:
Ради любопытства — зачем вырубать интернет на перерыв?
По сабжу — кнопочка «выйти» Вам не нравится?
Вопрос: Почему Google и Amazon превращаются в General Electric, крупные холдинги?

Лучший ответ:
Эти компании достигли порога в горизонтальном развитии (регионы) и не хотят довольствоваться стагнацией, поэтому начали вертикальное расширение (по цепочке производственной).
Это не единственная причина. Так бывает, что ты пытаешься найти то, что тебе нужно, а этого нет. Приходится делать самому.
А книги не врали. Просто нужно понимать на каком этапе развития какой стратегии придерживаться.

Худший ответ:
У любого бизнеса есть два пути - стагнация и медленное умирание или развитие. Развитие компании зачастую одно и тоже, что и рост.