Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Какие знания/нвыки необходимы для написания своего API?

Лучший ответ:
1) Вопрос использовать ли вообще ООП или нет - он очень условен.
Без ООП не работает любой современный фреймворк.
Поскольку MVC таки использовать надо - соответственно ооп у вас будет автоматом)
2) По поводу Symfony - абсолютно без разницы на каком именно фреймворке Вы пишите свой код.
Symfony мне кажется более сложен для начинающего, попробуйте Yii2 или Laravel.
Опять же повторюсь, это не принципиально. Можно взять любой микрофреймворк - это будет даже полезней с точки зрения развития начинающего разработчика.
3) API это по сути обычный набор скриптов, отличающийся от обычных страниц тем, что в web страницах вы отдаете html - а в API вы отдаете JSON/XML/что_то_ещё (я лично советую использовать JSON по целому ряду причин, но вопрос в целом холиварен)
REST API (опять же дефакто массовый стандарт) - это договоренность о некоторых базовых принципах, по сути о форматах запроса, ответа, об отсутствии состояний (stateless)
Возвращаясь к пункту 2 - многие фреймворки дают автоматизацию в построении rest api, например вот свежая статья с примерами по Yii2 habrahabr.ru/post/240149
Если у Вас какой то ужатый функционал приложения, можно не заморачиваться с реализацией всех методов, а реализовать только нужные.
В случаях сложных больших экранов в приложении, может быть выгоднее сделать специальный метод для какого то экрана, реализующий все одним куском (впрочем это обычно уже на стадии рефакторинга делают)
4) В любом случае - начните с написания документации для самого себя: 
Какие у вас есть сущности(ресурсы в терминологии rest), опишите их.
Какие действия над ними может производить клиент.
По каким условиям клиент может запрашивать фильтрацию каких сущностей.
Есть ли у вас необходимость передавать сущности не целиком (тоже холиварный вопрос)
итд
Прошу прощения если получилось сумбурно, писал одновременно с утренним кофе :)

Худший ответ:
REST, HTTP. Можете попробовать для начала с SIlex побаловаться если API простая. Или рассмотреть варианты всяких parse.com
Вопрос: Как вы организовываете модульность в ваших PHP-проектах?

Лучший ответ:
1. Если чистый php то менеджер зависимостей Composer + и стандарты PSR
2. Либо фреймворк Yii/Yii2, Symfony 2 (недостатка в фреймворках нет) + Composer (Yii 2 поддерживает composer, но он в разработке. Symfony 2 поддерживает composer)

Худший ответ:
Вместо всей этой пачки инклудов вставьте куда-нибудь вот такоеfunction class_loader($className){
      include_once $className.'.php';
}

spl_autoload_register('class_loader');
Файлы будут инклудится по мере создания объектов.
Имя файла должно совпадать с именем класса.
Конструкция не конфликтует с другими автолоадерами, проверено.
Вопрос: Почему так работает, а так нет?

Лучший ответ:
С PHP.NET:Связывает PHP переменную с именованным или неименованным параметром подготавливаемого SQL запроса. В отличие от PDOStatement::bindValue(), переменная привязывается по ссылке, и ее значение будет вычисляться во время вызова PDOStatement::execute().
Во втором случае в момент, когда происходит связывание переменная уже не существует. Попробуйте использовать bindValue.

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

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

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

Лучший ответ:
а если вот такSELECT DISTINCT DATE(`date`) as result_date FROM
(
SELECT `date` as tmp_datetime
FROM `news` 
WHERE `date` BETWEEN '2014-01-01' AND  '2014-02-01'
) tmpUPD
Я думаю что заводить отдельное поле date - однозначно не стоит.
Если Вам нужно часто показывать этот календарик - я бы сделал отдельную табличку в которой закешировал даты в которых есть новости (и соответственно её обновлял при публикации/удалении новостей)

Худший ответ:
Лучший способ, на мой взгляд - протестировать вашу гипотезу о том, что поле DATE и индекс по нему значительно ускорят запрос (я в этом уверен). Если это действительно так и количество изменений таблицы не превышает количество чтений в несколько десятков раз, то стоит поле ввести.
Вопрос: Кто может объяснить, зачем мне GIT?

Лучший ответ:
Суть в том, что вы можете четко контролировать в какой момент получилось плохо. Вы можете проследить цепь событий которая к этому привела. И главное — вы можете спокойно откатиться на тот момент когда все было хорошо.
В случае с гитом и доступом к ssh вы делаете так, на локальной машине
git push
на сервере
git pull
И собственно все!
Если вы работаете с композером, то можно например настроить composer up на выполнение git pull перед обновлением зависимостей. Таким образом вы весь проект приводите к актуальному состоянию одной командой.
И да, у вас по хорошему должна быть отдельная БД, в которой лежат тестовые данные, ведь вам важны схемы таблиц, а не их содержание по ходу разработки?
Также по поводу гита — представьте что вы на столько любите женщин, что хотите встречаться с несколькими одновременно. В реальности трудно удержать более n-кол-ва паралельно, они столкнутся и вам будет плохо. А в git вы просто создаете ветки и то процедуры слияния они друг о друге не подразумевают. По хорошему каждая фича вашего приложения должна создаваться как отдельная ветка(branch), таким образом вы сможете просматривать историю разработки конкретно этой фичи отдельно.
Сумбурно, но это ощущение после полугодичного использования гита.
PS также представьте что вы сейчас вероятно один работаете, а каково работать таким образом в команде. Если это делать без VCS — высока возможность перезаписать файл который только что изменили и тд и тп

Худший ответ:
Добрый день! Гит даст вам возможность отслеживать историю, упростит code review, даст возможность откатывать отделные изменения (git revert) а также упростит поиск изменений, которые внесли регрессию (git bisect). Обычно те, кто уже умеют пользоваться им, используют его даже для всякой мелочи. Посмотрите вот nvie.com/posts/a-successful-git-branching-model
Вопрос: В чем суть такой расстановки двоеточий?

Лучший ответ:
Это новая версия записи хешей, по старому это так будетvalidates :title, :presence => true, :length => {:minimum => 5}
Если по в человекопонятное попробовать переделать
Проверь тайтл, на наличие,  минимальную длинну в 5 знаков.

Худший ответ:
C версии ruby 1.9 это  - новый синтаксис хешей. Привыкайте)
Вопрос: Что с WM Keeper Classic версии 3.9.9.0?

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

Худший ответ:
не волнуйся у всех так
Вопрос: Запретить на Ubuntu посещение определенных сайтов?

Лучший ответ:
«Не получается сохранить файл» — потому что это надо делать через sudo:
sudo gedit /etc/hosts

Худший ответ:
> vkontakte.ru не работает, а www.vkontakte.ru да ) 
это разные домены.
Вопрос: Как защититься от несанкционированных действий Skype?

Лучший ответ:
Для начала попробуйте запустить Process Monitor и посмотреть, что именно он пишет/читает.

Худший ответ:
Не могу ничего сказать про виндовс. Не работаю с этой ос, а для линуксоидов могу посоветовать вот это чтиво о Skype.
В двух словах: некому не известно что делает скайп в системе, потому что был специально скомпилирован с защитой от декомпиляции.
Также как и драйверы nvidia например, скайп загружается в ядро в виде binary blob. Грубо говоря, что он там делает узнать очень сложно.

Самое лучшее решение, как правильно сказал turboNOMAD, это не пользоваться скайпом. 
Но усли уж приходится, то можно уменьшить негативное влияние — запускать от пользователя, который имеет минимум привилегий. Групп «skype, audio, video» будет достаточно для полноценной работы. У меня именно так и работает. Виртуальная машина не нужна.
Вопрос: TINYINT или SET?

Лучший ответ:
Помним/знаем о том, что set — битовая маска, может одновременно хранить несколько значений?
Эквивалент для tinyint — enum. (ну или set, но тогда с реализацией битовой маски, иначе зачем было set'ом делать?)

Если значение в 1 момент времени может быть только одно — enum.
Если несколько — set.
Просто потому, что текстовое представление легче воспринимается, чем числовое.

Все трое на идентичных диапазонах данных занимают равное место. dev.mysql.com/doc/refman/5.1/en/storage-requirements.html

Худший ответ:
А это смотря где используете. По сути оба маленькие, оба будут занимать мало места, но лично для меня разница очевидна:
SELECT * FROM `cars` WHERE type = 4
и
SELECT * FROM `cars` WHERE type = 'hatchback'
Эти запросы одинаковы, но говорят об одном существенном преимуществе set (он же enum)
Вопрос: Как можно монетизировать студенческий трафик в общежитии?

Лучший ответ:
Хотдожница хорошо монетизирует студентов.

Худший ответ:
Реклама доставки пиццы и заведений рядом.
Вопрос: Как реализовать изменение цвета лого при hover, как на github?

Лучший ответ:
.logo:hover { color: blue; }
сам лого там сделан шрифтом.

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

Лучший ответ:
посмотрите в сторону промышленных ПК, работающих в расширенном диапазоне температур.
например, в форм-факторе PC/104
есть и на атоме, есть и на более мощных процах.

Худший ответ:
А что мешает установить компьютер в герметичной камере с обогревом?
Это верный и самый дешевый способ повысить надёжность за счёт компенсации температурных перепадов внутри электроники.

Ну и ни о какой надёжности в случае с атомами говорить не стоит, если только это не атом в стойкой к радиации упаковке для военного применения.
И как минимум ECC память стоит использовать в таких условиях.
Вопрос: Станет ли проблематично в будущем работать в «сером» секторе экономики, в частности во фрилансе (Россия)?

Лучший ответ:
В УК РФ есть статьи о незаконной предпринимательской деятельности, но пока что они применяются далеко не всегда.
Они написаны так, что можно заплатить налог+штраф и ничего не будет. В этом есть свой смысл - облегчение предпринимательской деятельности.Государство закручивает гайки,
Налоговики получают зарплату из "казны", они не будут искать налоговые дела на 10 рублей, если у них з.п. 20-30т.р., это не выгодно экономически

Худший ответ:
Думаю это не станет проблемой. Люди всю историю могли договорится напрямую и препятствовать этому нереально.
Вопрос: Как jQuery ломает верстку?

Лучший ответ:
Покажите код.
В любом случае, уверяю Вас, причина в кривых руках, так как подключение библиотеки вообще никак не должно влиять на верстку, если Вы говорите, что вообще не использовали js.
К сожалению, вынужден напомнить, что не надо писать в ответ: «Да хотя бы вот пример, подключаю стандартно» — предоставьте полный код своего макета, лучше в спойлере.

Худший ответ:
Нужно посмотреть конкретный код.
Вопрос: Как оптимизировать работу Windows на HDD с помощью небольшого SSD?

Лучший ответ:
Smart Response Technology, вы это имели в виду?

Худший ответ:
Может просто винты гибридные ставят?
Вопрос: Как поставить высоту блока div в зависимость от ширины?

Лучший ответ:
Зачем скрипты? Можно ведь обычным css'ом обойтись:
jsfiddle.net/qso14y3k
Один минус - 2 дополнительные обёртки для каждого блока. Но это не смертельно. Фокус этот работает по стандартам, так что работать должен везде.
Также эта техника входит в toolkit, который написан ребятами, которые написали Singularity.

Худший ответ:
Думаю что вопрос актуальный. Так что напишу.
Есть библиотека Stickjaw.js
Подключаете в футоре и вызываете скриптов ( в документации написано, ни чего сложного )
Чтобы сделать высоту такой же как ширину нужно в блок добавить атрибут data-proportion-h="1". 1 - это пропорция. Если вам нужно сделать, чтобы высота была как две ширины то пишите 2 т.е data-proportion-h="2"
Например <div data-proportion-h="1" style="widht:200px;"></div><!-- Высота 200px -->
<div data-proportion-h="2" style="widht:200px;"></div><!-- Высота 400px -->
<div data-proportion-h="0.5" style="widht:200px;"></div><!-- Высота 100px -->
Вопрос: Border добавляет ширины элементу, как избежать?

Лучший ответ:
Я обычно использовал Box-shadow, и все работает без проблем, св-во box-sizing, решает вашу проблему, ну тогда надо изначально всем блокам задавать border: 2px solid transparent, а у выделенного элемента уже менять на цвет, border-color: #333; к примеру, ну я бы советовал тень, там и нет проблем с расположением сверху, снизу или слева или справа, решать конечно вам.

Худший ответ:
Используйте outline
Универсальное свойство, одновременно устанавливающее цвет, стиль и толщину внешней границы на всех четырех сторонах элемента. В отличие от линии, задаваемой через border, свойство outline не влияет на положение блока и его ширину.
подробнее htmlbook.ru/css/outline
Вопрос: Как осуществить такой редирект?

Лучший ответ:
Вы уже задавали такой бредовый вопрос, и даже ответ выбрали.
Есть список ботов - анализируйте User Agent, но если поисковики заметят (точнее не если, а когда - скорее всего сразу) - будут вам персональные санкции для сайта.

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

Лучший ответ:
1. Ваш сайт НЕ является адаптивным. Он не адаптируется под устройство, на котором его смотрят.
2. Сайты, напичканные подобными пользовательскими взаимодействиями практически не поддаются адаптивной верстке, потому что на мобильных устройствах другие взаимодействия, производительность у мобильных устройств другая.
3. Смотреть этот сайт на iPhone 4S невозможно.
4. На моем i5 2500K вкладка с сайтом жрет 75% CPU.
Вывод:

Худший ответ:
Добрый день! К сожалению, я не разработчик, а всего лишь админ, но и в силу своей профессии часто участвую в конфликтах недопонимания с разработчиками.
Дам небольшой совет: приведите точную цитату разработчика, для создания у аудитории тостера полного представления ситуации, так как ваш нынешний пост выставляет разработчика весьма глупым и плосколобым, а у него ведь наверняка были конкретные аргументы, возможно небезосновательные. 
Ну не ответил же он вам просто "так не получится", верно?
Вопрос: Golang или Java?

Лучший ответ:
java, go можно рассматривать как замену c++ в ndk ... но я бы не торопился

Худший ответ:
Java. Она повсюду.
Вопрос: Как достичь анонимности на VDS сервере?

Лучший ответ:
У хостера полно возможности смотреть в вашу виртуальную машину без "вшивания" чего-либо туда. Машины под гипервизором для администратора выглядят примерно как сеансы разных пользователей в одной ОС, файловая система полностью открыта, доступ к оперативке тоже несложно получить.
А образы берутся оригинальные (для OpenVZ только отделяется ядро) их нет смысла патчить.root уже удалил
Прекрасно. Можно уже начинать переустанавливать.

Худший ответ:
Ну удалите вы каких-то пользователей, но кто мешает с хост-системы подмонтировать вашу виртуалку?
Только выделенный сервер у себя дома под кроватью! Только хардкор!
Вопрос: Стоит ли осваивать новую профессию

Лучший ответ:
Заняться нечем? Лучше устройтесь преподавателем, больше пользы будет

Худший ответ:
Проблемы с переходом в продажи? Нет, да и не должно особенно если вы продаете в той сфере в которой раньше кодили. Личный опыт говорит  мне о том что когда знаешь как "это" работает,  то проще продавать продукт. Например я системный администратор, по совместительству продаю ИТ решения, технику, ПО.
Вопрос: Asp.NET WebForms или MVC?

Лучший ответ:
однозначно MVC, WebForms больше по инерции поддерживаются, а по факту вебформы уже практически мертвы

Худший ответ:
ASP .NET WebForms - простые, относительно. Они скорее для начинающих подходят. В WebForms множество готовых компонентов, но большая часть сомнительного качества (в плане производительности). Можно делать простенькие сайты  (хотя, можно и не простенькие, если сервер и пользователей не жалко)  достаточно быстро и с минимальными знаниями HTML, CSS и JavaScript. Если потребуется нечто большее, то с ASP .NET WebForms придется изрядно повозиться и не факт, что будет достигнут желаемый результат. 
Хотя ASP .NET WebForms развиваются и, сейчас, проще и удобней получить контроль над происходящим, чем например в ранних версия (1.x/2.0/3.5). Но все равно, будет множество ограничений и для крупных проектов WebForms годятся плохо. Отмечу, что ASP .NET WebForms хороши вместе с Visual Basic .NET - работать удобней, чем с C#.
Чтобы делать под ASP .NET WebForms нормальные проекты, придется делать это руками, минимизировать использование стандартных компонентов и решений. Но тогда все фишки WebForms превращаются в один большой геморрой. Жить можно, но не очень приятно :-)
В ASP .NET MVC полный контроль над всем происходящим, нет ограничений, но и больше ручной работы и требуется больше знаний. 
Лучше всего использовать ASP .NET MVC совместно с Razor и C#. Работать будет удобнее, код лаконичней и красивее.
Я сейчас даже простые проекты делаю на ASP .NET MVC.
Не сказал бы, что время ASP .NET WebForms прошло, оно все еще идет. Частенько приходится отвечать на вопросы по теме работы с WebForms. Собственно, по этой причине я и знаю о некоторых позитивных изменениях в последних версиях WebForms. Сайты, сделанные на WebForms тоже попадаются часто (обращаю на это внимание, даже когда специально не смотрю). Сам уже не использую, но старых проектов осталось много, надеюсь когда-нибудь и они будут переделаны на MVC.
Вопрос: Какие многопользовательские субд с последовательным доступом вы знаете?

Лучший ответ:
почитай лучше это:
расширит горизонты до безграничности.
Если очень хочется удариться в как устроено СУБД - тогда вот это
fallabs.com/tokyocabinet
А так можешь считать, что SQLIte типа последовательная, ибо это один файл. Но то что ты спрашиваешь  - абсолютно бесполезно на практике.

Худший ответ:
От блокировок можно уйти, и наверно многие современные базы данных от них ушли. Мне известно два вида транзакций (может их и больше): блокировочный механизм и версионный. С первым думаю вопросов не возникает, а второй это когда всем разрешено писать в БД, но при этом для каждой записи указывается версия (скорее всего просто идентификатор транзакции). А потом при коммите указывают какую-то одну - что вот эта транзакция подтверждена. Таким образом если селект выполняется внутри транзакции он видит только записи своей транзакции (или ранее подтвержденные),  если за пределами транзакции то только последние подтвержденные. 
В первые такой механизм стали кажется использовать в Interbase, потом распространилось на многие промышленные базы данных. 
В MySQL - до сих пор используют блокировки, из - за этого куча проблем с триггерами и хранимыми процедурами. Как дела обстоят в Postgresql - не знаю.
По поводу последовательного и параллельного доступа не знаю - может отсюда ноги растут, а может автор статьи придумал что то от себя. Была правда когда то проблемка в оракле, что то ли с одного клиента, то ли с одного пользователя нельзя было открыть больше одной транзакции. Но кажется это больше зависело от драйвера доступа.
Вопрос: Как вы боретесь с перфекционизмом?

Лучший ответ:
Нужно научиться смотреть с правильного уровня абстракции.
Это психологический момент, который определяет адекватность человека, а адекватность понимается "как человек способен оценить события заранее, и чем больше результат совпадает с тем, что он предположил, тем более он адекватен".
Обычно для перфекционизма достаточно научиться видеть правильный уровень абстракции.
Пример:
Нужно сделать дизайн по макету.
Уровни абстракции примерно такие:
1. задротский - нужно сделать все до пикселя.
2. технический - нужно сделать все по макету, чтобы соответствовало
3. бизнес-уровень - нужно сделать, чтобы клиент был удовлетворен
4. жизненный - нужно, чтобы работа была завершена в сроки, я получил ЗП, и мог накормить себя и семью
5. философский - все тлен.
Конечно уровни не всегда следуют иерархии, но смысл в том, что над перфекционизмом конкретного дизайна есть множество других целей, и можно просто переключаться на них. Тогда адекватное восприятие того, что на самом деле важно, будет меняться.

Худший ответ:
Лень - лучшее средство против перфекционизма.
А если серьёзно, с опытом начинает приходить понимание когда можно срезать.
Вопрос: Как вывести деньги из WebMoney на банковскую карту без персонального аттестата?

Лучший ответ:
Обменник wire.exchanger.ru/asp/Default.aspx

Худший ответ:
Вывод WebMoney на карты VISA
Вопрос: Есть ли функция ЕСЛИ.....ТО на CSS или же HTML?

Лучший ответ:
CSS и HTML это декларативные языки разметки, а стало быть функций там в принципе нет, так же как и ветвления. А то что вы описываете делается через js.

Худший ответ:
css и html не предусматривает такого функционала =)
Вопрос: Какой должен быть размер текста на SEO странице?

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

Худший ответ:
Вычисляй среднее значение из топ 10
Вопрос: Какие кодотрюки вы знаете?

Лучший ответ:
Самый классный трюк это заставить программистов документировать их творчество ;)

Худший ответ:
JS:
проверка позиции вхождения
if (~index) {
//did
} else {
  //didn't find it
}

миллисекунды с epoch
+ new Date()

ну и еще куча, по JS, на 140байтах.
Вопрос: Wi-Fi в офисе с логами доступа и авторизацией пользователей в AD?

Лучший ответ:
учитывая что пол дела сделано половина ПО и железа есть, можно посмотреть в сторону авторизации радиусом пользователей из домена на самих точках. Для этого:
1. Поднимаем роль Network Policy Server на любой виртуалке из домена, добавляете в него нужные политики, и клиентов радиуса (по айпишникам добавляете точки). Эти настройки гуглятся или вычисляются
2. На точках Микротик - поднимаете авторизацию WPA2-E по логин паролю.
3. На них же делаете редирект для HTTP трафика на squid - тем самым переключаете всё в режим прозрачного прокси
4. На сквиде настраиваете сбор статистики. 
Всё будет работать безопаснее и гибче чем вариант с Керио, и чище с точки зрения лицензий. Но с настройкой придётся повозиться.

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

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

Худший ответ:
Это политика толерантности, чтобы никого не обидеть, поставить можно только плюс, минус нельзя. На том же stackowerflow можно минус поставить и вопросу и ответу. На пока Тостер не имеет достаточной аудитории, чтобы не отпугнуть имеющуюся текущая политика я думаю сохраниться.