Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Yii CMS, стоит ли?

Лучший ответ:
Идея написать «написать что-то вроде CMS на очень крутом, на мой счет, фреймворке Yii» порочна изначально.
Дело тут не в желании написать CMS и не в Yii, а в том, что писать CMS имеет смысл когда сформулирована некая идея, зачем эта CMS нужна и чем она будет выгодно отличаться от сотен имеющихся. То, что она будет написана на основе какого-либо фреймворка, отнюдь не решающее достоинство.

Правильной идеей было бы: Хочу написать CMS которая будет реализовывать такие-то принципы, иметь такие-то уникальные фишки, и.т.п. ваша же идея провальна с постановки задачи.

Худший ответ:
https://github.com/webadmin87/rzwebsys7
CMF на базе yii2.
Модульная архитектура. Из коробки идут модули текстовые странички, меню, новости, каталог, интернет магазин
Вопрос: Какие юридические последствия может иметь обновление Windows (или другого ПО), уничтожившее пользовательские данные?

Лучший ответ:
Скорее всего, никакие. Почти во всех EULA есть пункт, что компания не несет никакой ответственности в таких случаях.

Худший ответ:
Это конечно не производитель ПО, но возможно вам будет полезно.
В руководстве пользователя телефона Fly Marathon предупреждают сразу:
Данные, сохраненные в памяти телефона, могут быть удалены из-за неосторожного
обращения, ремонта телефона или обновления программного обеспечения.
Производитель не несет ответственности за ущерб, причиненный из-за потери данных.
Вопрос: Code Review Java?

Лучший ответ:
Пожалуй начну жёсткую критику:
1. Проект под мавеном — это хорошо, но плохо что он не поддерживает 
стандартную структуру каталогов проекта
2. Config.parseConfiguration() — зачем самомоу парсить? Для этого есть уже написанные библиотеки типа Commons CLI для работы с коммандной строкой и Commons Configuration для хранения настроек (естественно, это можно заменить на что-нибудь другое но посыл, я думаю, понятен)
3. Java code conventions нужно поддерживать — название класса isCloneable, имя пакета parserHandlers и private List<SuiteResult> _results; не есть хорошо
4. if ( ... && command != -2) — это ад. Что значит константа -2?
5. Нет такого слова Formater, нужно Formatter
6. stringBuilder.append("[" + result.getTestSuiteName() + "]\r\n") — используете StringBuilder и зачем-то конкатенируете строки
7. if (Config.isRunnable() == false) — так не пишут, используйте операцию отрицания.
8. Вместо ParserHelper и статичных методов опишите интерфейс — мало ли откуда входные данные придётся парсить (Естественно, в качестве дефолтной реализации используйте свой код для парсинга из xml)
9.  public Command[] getCommands() {
        return commands.toArray(new Command[commands.size()]);
    } — почему бы список не возвращать? Вам действительно где-то нужен массив?
10.                     } catch (CloneNotSupportedException ex) { — выбрасывние CloneNotSupportedException — ошибра разработчиков java, с своих классах рекомендуется убирать из сигнатуры. 

Я думаю остановлюсь на этом. В плане архитектуры настоятельно рекомендую глянуть как реализована, например, библиотека jUnit

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

Лучший ответ:
без шансов

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

Лучший ответ:
Прата, C++Саммерфилд, Python1С:ПредприятиеТроелсен, C#htmlJavaScript

Худший ответ:
Прата, C++Саммерфилд, Python1С:ПредприятиеТроелсен, C#htmlJavaScript
Вопрос: Как сделать все ссылки кликабельными в html?

Лучший ответ:
в нотепаде ctrl+h включаешь регулярные выражения и заменяешь((https?:\/\/)?(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})
на<a href="http://$1">$1</a>
возможно регулярку нужно будет поправить, тут уж по ситуации

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

Лучший ответ:
какие кабеля, если в Tenda N30 только один lan-порт?

Худший ответ:
В вашем случаи нужен Switch - Сетевой коммутатор.
Вопрос: Разработка под Android, как быть?

Лучший ответ:
Ресурс с Android уроками - startandroid.ru
Просто начните - первые уроки щелкаются за 3-10 минут. К третьему десятку начнете пропускать неинтресные. К пятому - зачешутся руки запилить свой проект.

Худший ответ:
Нужно знать хотя-бы основы Java и разработки под Android.
Посмотрите здесь: developer.alexanderklimov.ru/android
а чтобы понять всю соль - придумайте идею для приложения и попробуйте воплотить в жизнь.
Вопрос: Полноценное удаленное (сетевое) правление окнами WINDOWS из другой системы?

Лучший ответ:
RemoteApp, тоже самое RDP, но отрисовывает только элементы окна.

Худший ответ:
В TeamViewer есть тоже фишка - показать только окно ....
Вопрос: Почему composer не может решить зависимости?

Лучший ответ:
Коротко: используйте только стабильные релизы при указании версий в зависимостях в своих пакетах.Подробно.
В composer есть флаг minimum-stability, который используется для отбора пакетов на основе стабильности при установке. По умолчанию он равен stable, т.е. устанавливаются только стабильные пакеты. Вы можете изменить это поведение, добавив параметр "minimum-stability" в composer.json. Обратите внимание, что этот параметр применяется только к корневому пакету - вашему основному composer.json файлу. 
Что происходит, когда вы вводите команду composer require nullref/yii2-cms:Создается composer.json файл, в котором не определен minimum-stability, поэтому он рассматривается как stable.В корневом пакете у вас определен в зависимостях только один пакет - nullref/yii2-cms, который имеет стабильный релиз - он и начинает устанавливаться.Пакет nullref/yii2-cms имеет в зависимостях пакет nullref/yii2-admin с версией dev-master. Это нестабильный релиз и он не может быть установлен, т.к. в корневом пакете minimum-stability считается равным stable.
Что можно сделать:Установить minimum-stability в dev в корневом composer.json файле. В этом случае также следует добавить "prefer-stable": true, чтобы по возможности ставились стабильные пакеты.Использовать stability flags, явно указав флаг в корневом пакете: "nullref/yii2-admin": "@dev".Убрать dev-master отовсюду из зависимостей, выпускать релизы и указывать версии любым из доступных способов.
И в заключение привожу ссылку на статью с подробным объяснением minimum-stability.

Худший ответ:
Он у вас конфликтует с одним из пакетов, что бы понять с каким именно — нужно увидеть сам файл composer'а
Вопрос: Дает ли эффект прогон по каталогам 1ps.ru/?

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

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

Лучший ответ:
Уже второй год у моего клиента работает система информатизации производственных процессов на оконном производстве (евроокна). Задачи системы:
 — демонстрация технологических карт изделий на участках конвейера;
 — фиксирование операций с изделиями;
 — предоставление в реальном времени данных о состоянии отдельных изделий и в целом состояния производства;
 — аналитика выработки на участках и конкретными сотрудниками;
 — учёт контроля качества;
 — складской учёт готовых изделий и стеклопакетов;
 — планирование графика отгрузки со склада;
 — автоматическое уведомление клиентов о готовности заказа по SMS;

Все интерфейсы системы реализованы как реалтайм веб-приложения использующие Socket.io.

Система писалась на NodeJS версии 0.6, потом была переведена на 0.8 и сейчас уже на 0.10. С переходом проблем не было.
Максимальный аптайм NodeJS процесса системы который удалось наблюдать — 112 дней. Утечек памяти за это время не зафиксировано.

Для меня после разработки такого решения, вопрос о серьёзности NodeJS больше не стоит. Сам был убеждённым перлистом. Сейчас ни на чём кроме NodeJS писать нет желания.

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

Лучший ответ:
Свойства CHARACTER SET у базы, таблицы, колонки.
Кодировка по умолчанию на сервере.
SET NAMES UTF8 после коннекта.

Худший ответ:
Посмотри в какой кодировке сама таблица SELECT CHARACTER_SET_NAME, COLLATION_NAME
FROM information_schema.columns
WHERE table_name =  'name'
И возможно в insert перед 'абв' имеет смысл попробовать поставить u
Вопрос: Какой должен быть порядок следования @media queris при формате «Сначала десктоп»?

Лучший ответ:
Если кто-то путает окно браузера с областью просмотра, да ещё к min-width и min-width экран монитора приплетает — у него не только лыжи не едут, а в голове смазки маловато:)
1. Обрабатываются все media queries. От первого и до последнего.
2. Если выполняются условия в нескольких @media, то для конфликтующих правил вступает в силу обычный расчёт каскада (читай приоритет правил).
Относительно синтаксиса неплохо бы почитать спецификацию, да и вот хорошее описание.

Худший ответ:
Простая логика: Насколько больше можно реализовать на =>1440px, нежели на 320?
Следовательно, наворачиваем всё, что задумали на десктопе, а потом с помощью медиа прописываем поведение на более малых величинах.
Поверьте, что кол-во кода стилей при таком подходе будет существенно отличаться от того, когда идут от противного.
В прпинципе, достаточно примерно такого:
media screen and (min-width: 320px) and (max-width: 479px) {}
media screen and (min-width: 480px) and (max-width: 639px) {}
media screen and (min-width: 640px) and (max-width: 767px) {}
media screen and (min-width: 768px) and (max-width: 779px) {}
media screen and (min-width: 800px) and (max-width: 1023px) {}
media screen and (min-width: 1200px) and (max-width: 1681px) {}
но я часто добавлю  ещё несколько значений, для которых существуют общие значения.
И лучше на этапе разработки подключать отдельный файл стилей для медиа
Вопрос: Как избежать липкости старых проводов?

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

Худший ответ:
Я уж не знаю в чём вы их извозили, но если спирт не помогает, попробуйте  марганцовку в аккумуляторном электролите.
UPD
по второму пункту
https://geektimes.ru/post/270538/#comment_8997278
Вопрос: Можно ли установить Windows 8.1 параллельно с обычной Windows 8?

Лучший ответ:
Ставите Windows 8 как основную систему, а Windows 8.1 загоняете в виртуальную машину.

Худший ответ:
Или может быть просто стоит купить модем поновее? AcidBat Купите модем поновее, в старом можете попробовать обновить прошивку. Или как написал Артем купите роутер.
Вопрос: Можно ли использовать одну базу для двух движков Wordpress на разных хостингах?

Лучший ответ:
Можно, при условии, что хотябы 1 из них поддерживает внешние подключения к mysql
C другой стороны, точка отказа как 1 была, так одна и остаётся.
Правильное: смотрите в сторону репликации mysql. Лучше Master-master, но master-slave тоже сойдёт как резерв.

Худший ответ:
WP очень любит обращаться в базу по любому пустяку, так что вынесение ее в далекие дали черевато.
Правильнее было бы сделать репликацию базы, но если у вас там какие-то изменения типа комментариев, то надо делать master-master репликацию, которая для 2 серверов имеет проблемы, лучше поставить 3й. 
Если же изменения централизованы ( админ или api ) то можно сделать master-slave реплику.

Но проблема мне видится в другом — наплывы посетителей решаются через кеширование. Если у вас там нет юзерозависимых блоков, то достаточно поставить nginx с 1 минутным кэшем перед wp и нагрузка стабилизируется
Вопрос: Каким образом можно читать RSS на сервере?

Лучший ответ:
Для динамического обновления клиента могут подойти WebSockets. В node.js часто используют socket.io. Опять же node.js поддерживает парсинг RSS.
Если вы хотите следить за чужим фидом, то тут нужно периодически спрашивать чужой сервер, не изменился ли файл. Делается это через HTTP-заголовки. Или договориться с владельцем новостей об уведомлении, нечто realtime updates

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

Лучший ответ:
Проектирование - Дизайн - Верстка и Программирование 
Дизайнер должен знать силы программиста. Иначе результат работы программиста будет очень отличаться от задумки и макетов дизайнера.

Худший ответ:
Обратится в веб студию
Вопрос: Где вы покупаете/продаёте биткоины?

Лучший ответ:
>Есть цивилизованные способы покупать и продавать биткоины?
Оптимально тут: Матби

Худший ответ:
Я покупал на metabank.ru за яндекс, когда еще было возможно, номеров не требовало.
Вопрос: Исходники в веб-разработке. Оставлять или нет?

Лучший ответ:
Да в общем-то на сервере им делать нечего. Достаточно того, что они лежат в репозитории.
Правда бесит ситуация, когда берешься за доработку, открываешь стили, и видишь, что сверстаны они с использованием препроцессора. Спрашиваешь у заказчика исходники, а он говорит, что ему когда делали, передали только css, или вообще не в курсе. Мораль: заказчику нужно отдавать все исходники, и объяснить, что они будут нужны будущему разработчику для доработок.

Худший ответ:
Отдавать только добросовестному заказчику
Вопрос: BSD vs Linux скорость выпуска обновлений безопасности?

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

Худший ответ:
Зачем пользовать вообще порты, когда с 9 версии FreeBSD доступен пакетный менеджер pkg(аналог apt-get), есть свои репозитории, вы просто запускаете pkg update и все можете ставить что хотите.
По скорости обновлений скажу это Ubuntu, помимо официальных обновлений, есть еще тестируемые дистрибутивы, на которых обновления выходят чуть ли не каждый час.
Вопрос: Arduino помогите выбрать стартовый набор

Лучший ответ:
Я так вот отсюда заказывал: robocraft.ru/shop/
Там и стартовый набор есть, полезного полно) Только сразу укажу на минусы данного стартового набора: макетная доска ужасно маленькая, её лучше заказать отдельно! Проводков тоже маловато может оказаться) Плюс лучше дополнительно штук 10 резисторов на 100кОм взять, да на 10кОм тоже несколько не помешает помимо тех, что есть. Хотя резисторы можно в любом магазине купить. И вообще дешевле будет, если там покупать такую мелочёвку. А купить только ардуино+макетную доску+экранчик+драйвер для двигателя+шилды если надо.

На амперке есть хорошая макетная доска, но там остальные цены очень дорогие. Правда, обёртка красивая приходит) Как подарочный набор прямо)

Худший ответ:
Рекомендую хороший набор для начинающих — Inventor kit. В нем есть книжка с примерами.
Вопрос: Кто бы хотел в свободное время поучаствовать в небольшом стартапе?

Лучший ответ:
Очень интересно, можем поговорить :)
Skype: ghaiklor.

Худший ответ:
Если нужен Android разработчик — есть свободное время.
П.С. из web asp. net mvc 4
Вопрос: Каким средствами организовать схему оплаты через депозит в личном кабинете?

Лучший ответ:
Смотрите, тут на самом деле 2 вопроса:
1. Реализовать прием платежей - берете любую платежку/агрегатор и реализуете.
У себя внутри системы реализуете учет поступлений и списаний денег за услуги.
2. Выплаты обратно - вот тут боль. Дело в том что выплату пользователю Вы можете осуществить 2мя способами:
a) частичный возврат операции оплаты - проблема в том что во всех известных мне платежках для этого нет апи, как максимум есть личный кабинет./off Если кто то посоветует платежку с нормальными условиями и апи для частичного возврата по картам - буду счастлив.
б) прямая выплата пользователю - сервисы с апи есть, но с точки зрения законов рф это выгода пользователя, следовательно возникает налог 13% который вы должны заплатить за него.
* это все справедливо если мы говорим про банковские карты, для электронных денег способы есть, хоть и с потерями комиссий.
Собственно условно нормальных решений я вижу 2:
или честно говорить пользователям что вывод денег - боль.
или не пополняем депозит, а используем например холдирование (минус - на сроках до 10 дней все работает великолепно, на сроках больше - с российскими банками есть нюансы)

Худший ответ:
Выбирайте холдирование-у многих банков оно есть
Вопрос: Как собрать домашний develop сервер?

Лучший ответ:
купить что-то вроде intel nuc/asus vivopc/gigabyte brix/mac mini/dnk-h и не страдать от переездов.

Худший ответ:
Ясам собирал просто ситемник 
проц: AMD FX-8300 
Оперативная память: 16гб
SSD: Kingston 240 GB
HDD: 1000 GB
HDD: 300GB под бекапы
БП: 500-550 Ватт
Матиринка не помню точно, но см по линиям питания по цене от 4500
На сеерверt весит пару тяжелых сайтов и 5-6 небольших, 2-3 виртуальные машины, сервер 1с, пару браузеров 30-40 открытых закладок.
бюджет проэкта около 40к. 
Проц амдешный потомушто по цене и производительность под серверные задачи оптимально подходитю
Вопрос: Как удобно организовать данные на HDD?

Лучший ответ:
На вкус и цвет :)
Мне лично симпатичен примерно такой вариант…

Работа
+Проекты
+Ресурсы
+Документация

Личное
+Фото
+Изображения
+Музыка
+Фильмы
+Литература
+Дети

Дистрибутивы
+Аудио
+Видео
+Графика
+Системные утилиты
+Игры

Худший ответ:
Это от корня, дальше — хуже:

Work
Arj
exe
Soft
Fido :)
Camera Upload
ftp
Games
Melody and mobile
mp3
Video
musor
Kids photo

это за шестнадцать лет, возможно, современные пользователи по-другому видят для себя удобство структуризации
Вопрос: Выжать большее из копеечной фоторамки Digma pf 350?

Лучший ответ:
Люто плюсую!
Если кто-то поделится опытом как делать такие вещи на какой-нибудь другой или этой копеечной фоторамке, то я с удовольствием куплю такую штуку для опытов)

Худший ответ:
Думаю, внутри на плате может быть системный выход под mini-usb, ну, или можно просто поставить туда простенький линукс. Ну, или поступить с ней как с плеером из журнала. :)
Вопрос: Как получить содержимое страницы, которая грузится через AJAX?

Лучший ответ:
Мысли вслух... 
... пропарсить полученный файл, достать ссылки эйджекс запросов, пойти туда самому и взять все что нужно ...
... shell execute + консольный браузер, который понимает JS, правда не уверен как отловить там время отработки ейджекса ...

Худший ответ:
phantomjsОтвет на stackoverflow
Вопрос: Правильное написание: html-coder либо html coder?

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

Худший ответ:
C-programmer или всё-таки C programmer?
Вопрос: AH-IPS матрицы: в чем плюсы? HP Pavilion 23xi?

Лучший ответ:
Из всех IPS-технологий AH-IPS является самой последней — появилась только в 2011 году (IPS технология вышла на рынок в 1996 году).
Из преимуществ с другими вариантами IPS, AH-IPS обладает увеличенным цветовым охватом, пониженным энергопотреблением и увеличенной яркостью.
В принципе, отличия можно прочитать тут.
Но надо понимать, что это только теория. Когда же дело переходит к практике — реальность немного меняется — тут уже и «более проигрышные» технологии могут не то что успешно конкурировать, но и даже превосходить технически более современные аналоги. Всё зависит от того на сколько производитель не поскупился на комплектующие при изготовлении данной модели.
Поэтому кроме теоретического сравнения правильным всё же будет личное визуальное сравнение, потому как именно Ваши глаза скажут какая из технологий наиболее приятна для глаз и нервного спокойствия.

Худший ответ:
Вам, похоже, просто не повезло с конкретным экземпляром Dell U2312HM. У меня у самого такой монитор уже больше года — не нарадуюсь. Есть несколько знакомых с такими же мониторами, среди них есть и фотографы (т.е. претензии к качеству изображения выше среднего) — все писают кипятком.
Вопрос: Как привязать таблицу данных к ComboBox в C#?

Лучший ответ:
Я конечно могу ошибаться, но из контекста вопроса понял, что речь идет о группе студентов ВУЗа.
Если это так, то можно все это организовать в рамках одной таблицы, добавив еще один столбец: Номер группы. Далее, делаете выборку из таблицы - получаете список всевозможных групп (SELECT DISTINCT ... ) и добавляете его в ComboBox (метод Add(...), на сколько помню). На событии SelectedIndexChanged делаете выборку из этой же таблицы добавив условие, что номер группы равен выбранному значению в ComboBox и результат выборки добавляете в таблицу (GridView).

Худший ответ:
Можно использовать свойство DataSource и DisplayMember.
Ну а дальше как и написал авторы выше используй SelectedIndexChanged.
В DataSource передай свою таблицу в DisplayMember укажи название поля таблицы.namespace WindowsFormsApplication1 {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e) {
            dataGridView1.DataSource = bindingSource1;
            var dt = new DataTable();
            bindingSource1.DataSource = dt;
            dt.Columns.AddRange(new DataColumn[] {
                new DataColumn("ID", typeof(long)),
                new DataColumn("NAME", typeof(string)),
                new DataColumn("DESC", typeof(string))
            });
            for (var i = 0; i < 3; i++) {
                var row = dt.NewRow();                
                row["ID"] = i;
                row["NAME"] = string.Format("group{0}", i);
                row["DESC"] = "Lots of symbols";
                dt.Rows.Add(row);
            }
            dt.AcceptChanges();
            comboBox1.DataSource = bindingSource1;
            comboBox1.DisplayMember = "NAME";
        }
    }
}
P.S. Если нужна более детальная помощь можешь написать мне в skype: artzubalex
Вопрос: Как установить Apache mod_expires?

Лучший ответ:
В Ubuntu mod_expires по идее ставится по умолчанию, но не подключается.
Чтобы активировать его (и mod_headers, который нужен в двух из трех приведенных вами примеров), выполните:sudo a2enmod expires
sudo a2enmod headers
sudo service apache2 reload

Худший ответ:
root@159:/home/symbyon1# sudo a2enmod expires
Module expires already enabled
root@159:/home/symbyon1# sudo a2enmod headers
Module headers already enabled
уже делал
Вопрос: Golang — как сделать автокомпиляцию и каким менеджером пакетов пользоваться?

Лучший ответ:
Мейнстримный пакетный менеджер - это gb.
А насчет автокопиляции вам, вероятно, что-то вроде gin нужно.
И подборка полезных go пакетов.

Худший ответ:
Автокомпилирует IDE.
Умеет VIM, Intelij Idea, Sublime (вроде), LiteIDE
Вопрос: Программирование игр для Sega Mega Drive/Genesis?

Лучший ответ:
Мне было бы интересно почитать… в свое время просто не вылазил из игр sega, очень интересно было бы написать что-то свое и узнать что там как работает.

Худший ответ:
Поддерживаю. Вообще очень интересно было бы узнать что-нибудь про создание 8-16-битных шедевров вроде «double dragon» или «Nekketsu! Street Basket». Какие команды их создавали, что с ними сейчас, в чем рисовали графику и писали код.
Вопрос: Как на бутустрапе сделать картинки мозаикой?

Лучший ответ:
Bootstrap - обязательный элемент? Если нет, то есть Masonry

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