Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: А чем вы обычно меряете в Laravel скорость работы скрипта?

Лучший ответ:
Вот этим пакетом https://packagist.org/packages/barryvdh/laravel-de...

Худший ответ:
сантиметрами:)
Вопрос: Почему я не могу поменять пользователя/права файла на внешнем SSD на Mac?

Лучший ответ:
в файловой системе exFAT отсутвуют права на файл.
chmod для этой фс бессмысленен.
при монтировании exFAT юниксовые права на файлы и папки выставляет драйвер считывая опции монтирования - они получаются одни на все файлы и папки раздела.

Худший ответ:
а зачем  из ком строки, если можно в  GUI это сделать.
Вопрос: Как переместить картинку в css?

Лучший ответ:
Таакс, смотря, что именно вы хотите:Пододвинуть картинку в блоке, используя свойство marginПозиционировать картинку относительно элемента, используя свойство:position: relative
позже можете писать свойства:top: значение в px | em | % | rem | pt и т.д.;
left, right и bottom так жеПозиционировать картинку независимо элемента, используя свойство:position: absolute
позже, так же, можете писать свойства:top: значение в px | em | % | rem | pt и т.д.;
left, right и bottom так же
Почитайте так же (тут вкратце):Позиционирование

Худший ответ:
Если ссылки нету - точного ответа не будет.
Могу предложить рассмотреть этот подход :
htmlbook.ru:8080/samlayout/blochnaya-verstka/pozit...
Здесь можно подчеркнуть для себя моменты, которые помогут задать позицию для элемента
Вопрос: Как исключить пропажу изображений в теле письма?

Лучший ответ:
GMail не всегда показывает внешние картинки, и особенно не любит письма с динамическими картинками (т.к. картинку можно подменить). Можно либо попробовать сделать так, чтобы адрес картинки походил на статический, что все равно не гарантирует результата, либо использовать для HTML multipart/related часть с инлайн-картинкамиContent-Type: multipart/related; boundary="123"

--123
Content-Type: text/html ...
Content-ID: ...
Content-Disposition: inline
...
--123
Content-Type: image/jpeg ...
Content-ID: <imgjpg1@message>
Content-Disposition: inline
...
--123
Content-Type: image/jpeg ...
Content-ID: ...
Content-Disposition: inline
...
--123--
картинку включать как<img src="cid:imgjpg1@message">

Худший ответ:
изображения не отображаютсяЗащита от внешних ссылок. Используйте внедрённое изображение.
Вопрос: Фронт или бэк: как попробовать всё?

Лучший ответ:
node js попробуйте

Худший ответ:
сегодня в цене full stack, так что выбирать придется только язык бэкенда, на котором вы будете писать - javascript, pyton, php, java, etc,
нет никакого смысла пробовать: открывайте обычные или онлайн учебники и делайте собственные проекты с возрастающей сложностью
все остальное - опыт, сын ошибок трудных, и за вас его никто приобрести не сможет, да и без приличного профильного образования на особые высоты вам претендовать вряд ли придется
Вопрос: Кнопка назад(сенсорная) на Android сворачивает приложение, как сделать так что бы она возвращала на пред.активити?

Лучший ответ:
Попробуй в манифесте у активитей прописать куда должен осуществляться переход с помощью parentActivityName

            android:name=".MyActivity"
            android:parentActivityName=".MainActivity" />

Худший ответ:
в чем может быть проблема?
например, в backstack пусто.
Вопрос: Реферальные ссылки в своём блоге — это зло?

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

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

Лучший ответ:
1) если вы хотите из вне подключаться к своему впн вам нужно внешний IP
2) если на windows то посмотрите OpenVPN сервер, поднимается достаточно легко, авторизация либо по логинам паролям либо по сертификатам ( плюс куча других вариантов)
3) Роутер какой модели если N65U то его хватит для таких целей
4) если вы хотите делать резрвную копию с рабочего сервера на свой пк, вам надо будет сервер подключить к вашему впн, и дать ему доступ на запись в ваше хранилище куда будет делаться копия ( бекап лучше делать олним файлом)

Худший ответ:
1) Я так понимаю, что цель - безопасный выход в интернет?
Тогда: арендуем в Европе VDS сервер примерно такого плана: самый простой процессор, жесткий диск - 10ГБ хватит, оперативки 512 или выше, самое главное - канал интернета безлимитный и с пропусканием мегабит в 20.
Что происходит дальше - на этой VDS поднимаете OpenVPN сервер. К этому серверу, с одной стороны, подключается ваш роутер (его надо прошить под OpenWRT), с другой стороны - офис. Сервер настраивается так, что между ними есть связь. Если хотите с телефона или планшета подключиться к дому, запускаете OpenVPN клиент, предварительно настроенный, он также подключается к VDS и имеет доступ к данным из дома по защищенному каналу.
Для бэкапа имеет смысл поднять ftp сервер на домашнем компе. FileZilla хорошо работает под виндой. И не забыть этот комп включить в то время, когда уже настроенный сервер с работы будет лить на этот ftp бэкап. Бэкап будет литься по защищенному каналу прямо домой через VDS.
Грубо говоря - VDS становится точкой выхода в интернет. А подключившиcь к нему, можно считать или записать данные, которые находятся дома. Бэкап сервера можно также делать на VDS, а потом, периодически. самому скачивать на комп. Чтобы не парится с включением.
OpenVPN можно заменить на L2TP с шифрованием , но настраивается в разы сложнее. Зато большинство роутеров умеют на заводской прошивке работать с этим типом VPN.
Вопрос: Добавить тегу класс через js?

Лучший ответ:
// Одной
document.getElementsByTagName('img')[0].className += ' responsive';

// Всем
;(function () {

var img = document.getElementsByTagName('img');
	
  for (var i=img.length; i--;) {
  
        img[i].className += ' responsive';
  }

})();

Худший ответ:
как вариант:
var elem = document.querySelector('img');
elem.className = 'responsive';
Вопрос: Какая есть админка без БД?

Лучший ответ:
Делать магазин без базы данных - говно, конечно, идея. Но.
eecommerce.ru/?p=3003
heeg.ru/index.html
Возможно, пригодится, на чистом JS. Есть в нем что-то интересное.

Худший ответ:
Почему вы хотите именно без БД?
Если нужно cms под интернет магазин то можете использовать opencart или wordpress(woocomers)
Вопрос: Что значит это предупреждение валидатора?

Лучший ответ:
добавь в тег html атрибут lang="ru"<html lang="ru">

Худший ответ:
Ну вроде всё написано. Добавьте htmlbook.ru/html/attr/lang
Вопрос: Какое решение использовать для вёрстки сайта?

Лучший ответ:
CSS фреймворки, как правило, используют для быстрого прототипирования дизайна сайта. Так же бывают случаи, когда их используют по полной. И на мой взгляд это нормально.
Если же у вас нет временных рамок на разработку сайта, то лучше дизайн писать с нуля. Хотя, что бы облегчить себе разработку сетки (используют не во всех проектах), взять готовую - например тот же Bootstrap.
PS: Не важно на чём вы делаете. Если вы умете делать это хорошо - то и не важно, как вы это разрабатываете.

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

Лучший ответ:
Ответ нашёл сам.
Как таковой настройки нет. Но можно сделать действие драг-н-дроп только при зажатом Альте.
Settings -> Appearance & Behavior -> Appearance -> Drag-n-Drop with ALT pressed only

Худший ответ:
tools->deployment->options
раздел "Upload changes files automatically to the default server"
смените "Always" на "On explicit save action"
Вопрос: Как разбить дисковое пространство под гипервизор?

Лучший ответ:
ESXi лучше всего поставить на флэшку и с нее грузиться, потребуется небольшое изменение конфига в плане перенаправления записи логов (чтоб они не писались на флэшку). 
Установщик поддерживает эту возможность.
Таким образом все дисковое пространство отдается виртуалкам. Сам ESXi читает флэшку только на этапе загрузки.

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

Лучший ответ:
если element.scrollHeight > element.clientHeight то скролл есть.

Худший ответ:
Надо сравнить высоту блоку и "скролл-высоту"const block = document.getElementById('block');
const hasVerScroll= block.scrollHeight > block.clientHeight;
const hasHorScroll= block.scrollWidth > block.clientWidth;
Вопрос: Как вы относитесь к Bootstrap 4? И используете ли вы его в своей работе?

Лучший ответ:
"Громоздкий css фреймворк" === экономия времени.
"Громоздкий css фремворк" хорош когда:
1. Вы являетесь единтсвенным исполнителем, а гонорар за проект фиксированный. Быстрей выполните - больше заработаете.
2. Вы являетесь веб-студией. С фреймворками вы будете клепать типовые сайты со скоростью конвейера. У вас будут конкурентные цены и сроки. Текучка кадров не страшна, так как новые разработчики скорей всего будут знать фреймворк, который вы используете, а если и нет, у фреймворков в большинстве случаев отличная документация и огромное комьюнити.
Важно в выборе стека технологий исходить из требований, бюджета, сроков, размера и квалификации команды.
Так большие проекты, чаще пишут без использования css-фреймворков, в таких проектах большие бюджеты и сроки, сильные разработчики и высокие требования. Если ваша цель вырасти до таких проектов, то, непременно учитесь, верстать без фреймворков.
Как путь развития рекоментдую смотреть в сторону Frontend Developer. JavaScript/TypeScript, React/Vue, Babel, Webpack.

Худший ответ:
Используйте одновременно Grid'ы и Flex'ы и будет Вам счастье. Конечно с Grid'ами придется уметь писать media запросы, но это мелочи. Bootstrap бесит своим функционалом (кроме самой сетки), который никогда ни кто не использует, а волтузиться в файлах конфигурации вообще не комильфо. Да и наличие огромного кол-ва классов и оберток не особо импонирует.
Вопрос: Самописная POS система, легально-ли и какие подводные камни?

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

Худший ответ:
> Если с терминалом оплаты все понятно, на сайте ingenico есть SDK
Не забудьте, что при этом Вы "подпадаете" под PA DSS
Вопрос: Разработка под ios/android. Выбор платформы для небольшого заработка. Какие аппаратные требования необходимы?

Лучший ответ:
Нереально сейчас заработать на приложениях Android, "халява" приложений убила рынок независимой разработки.
Без раскрутки приложения, рекламы массивной. Но бюджеты раскрутки сейчас будут сравнимы или больше стоимости разработки.
Только если под заказ писать, на наработанную клиентскую базу.

Худший ответ:
Значит так. Для разработки под iOS, как и для разработки под андроид - нужен девайс, для того, чтобы пользоваться камерой, приложениями, интегрироваться с соц. сетями и много еще чего. Тестировать свои приложения на реальном устройстве гораздо удобнее. А также заниматься прочей хурмой.
Для любителей халявы (а вы не одиноки, даже есть идея создать соц. сеть любителей халявы), есть вариант с покупкой б/у смартфона, для iOS еще актуален 5 iPhone, на вторичке стоит недорого по сравнению с новым.
По второй части вопроса, "где больше заработок", мне ответить нечего, нет статистики.
Вопрос: Почему strip_tags обрезает такую строку?

Лучший ответ:
Неужели он не может отличить это <-+KennY+-> от html тега?
Даже не пытается. Простой state machine
А зачем вам strip_tags вообще понадобился? Ломать пользовательский ввод вы не должны, вы должны его правильно отобразить. Т.е. делать htmlspecialchars при выводе в html.

Худший ответ:
Неужели он не может отличить это <-+KennY+-> от html тега?
PHP использует только то, чем его наградили разработчики. Он не AI, который может делать всё.
strip_tags ищет открывающие (<) и закрывающие (>) части тега. Соответственно ваш "<-+KennY+->" считается тэгом.Что использовать вместо strip_tags чтобы избежать такой фигни?
Не знаю о подобных штуках, к сожалению. Попробуйте написать регулярное выражение.
Вопрос: Как со стороны сайта обойти кэш?

Лучший ответ:
Если вы загружаете скрипт новый, то добавляйте ему версию <script src="/main.js?v=1.1"></script>
Если картинки: <img src="image.png?80172489074" alt="" /> используйте таймштамп
Если стили, то точно так же, как и скрипты, добавляете версию.

Худший ответ:
Как оказалось, это был кэш их сервера. Кэшил html.
Всем огромное спасибо за ответы!
Вопрос: Как найти производные y" = dx/dy?

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

Худший ответ:
Никак.
Вопрос: Продолжать обучение?

Лучший ответ:
Синтаксис общий в той мере, что аккуратно написаный код на C будет компилироваться на всех популярных компиляторах C/C++.
Этот курс гораздо лучше, чем ничего, а то, что ты приобретешь некоторые познания в C++, тебя не испортит.

Худший ответ:
Си от С++  это два разных языка с общим синтаксисом
Эти языки созданы совершенно разными людьми 
изначально С++ назывался  "C с классами"
Вопрос: Js RegExp почему не всегда один результат?

Лучший ответ:
RegExp в JavaScript сохраняет своё состояние между вызовами. Так как выражение содержит флаг глобального соответствия g, после очередного найденного совпадения поиск продолжается.
У экземпляра объекта Regexp есть свойство lastIndex, которое позволяет читать/писать индекс, с которого начнётся следующее сопоставление. Он поможет разобраться:var RE = /([A-z0-9])/g;
console.log([
  RE.lastIndex, RE.test("aaaa"), // 0,true
  RE.lastIndex, RE.test("aaaa"), // 1,true
  RE.lastIndex, RE.test("aaaa"), // 2,true
  RE.lastIndex, RE.test("aaaa"), // 3,true
  RE.lastIndex, RE.test("aaaa"), // 4,false
  RE.lastIndex, RE.test("aaaa"), // 0,true
]);

Худший ответ:
Из-за /g 
https://stackoverflow.com/questions/1520800/why-re...
Вопрос: Есть ли смысл использовать typescript на node.js бэкэнде?

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

Худший ответ:
Есть такое понятие "промышленный язык программирования". Такие языки отличает строгая типизация и наличие модификаторов доступа, обязательное указание типа возвращаемого значения функции и т.д. Короче, эти языки придуманы для "негров из трюма". Типа, вот есть несколько "офицеров в каюте", которые знают, как будет работать некий большой код в целом, и есть "негры в трюме" - они не понимают, как это будет работать, но пишут большие фрагменты всей это большой "простыни".
Ну и вот, чтобы минимизировать последствия от ошибок, которое негры непременно наделают из-за того, что не понимают - что они делают, в конце-то концов? - для этого и существуют строгая типизация и модификаторы доступов.
JavaScript в этом смысле - язык свободных и ответственных людей (каким ещё был, и остаётся, например, Lisp): сам наделал ошибки - сам и исправляй. Но поскольку фронт-енд стал усложняться, и в крупных корпорациях (в данном случае Google) произошло разделение на "офицеров" и "негров в трюме" - в том числе, и касательно javascript-кода, - в Гугле и придумали вариант языка JavaScript с модификаторами и типизацией, "JavaScript для негров из трюма", и назвали его TypeScript.
Вот и вся подноготная. При этом "любой код на JavaScript является кодом TypeScript" (так написано в официальной документации последнего). А что касается ООП, то оно осталось той же версией реализации парадигмы - прототипное ООП (оно и не могло стать другим - тогда это означало бы, как раз, возникновение нового языка). Но его посыпали синтаксическим сахаром, чтобы код стал напоминать синтаксис "промышленных языков" - он неграм более привычен.
Вопрос: Неориентированный граф с четырьмя вершинами возможно?

Лучший ответ:
Рисуешь на бумаге 4 вершины a, b, c, d.
Из вершины d проводишь 3 ребра к a, b и c. Куда провести четвёртое? К d - будет петля, к любой из a, b, c - будет кратное ребро. Если это не оговорено особо, такое не допускается.
зы А вообще ты какой-то тупой паразит и попрошайка.

Худший ответ:
Рисуешь на бумаге 4 вершины a, b, c, d.
Из вершины d проводишь 3 ребра к a, b и c. Куда провести четвёртое? К d - будет петля, к любой из a, b, c - будет кратное ребро. Если это не оговорено особо, такое не допускается.
зы А вообще ты какой-то тупой паразит и попрошайка.
Вопрос: Почему автопрефиксер добавляет префикс для box-shadow?

Лучший ответ:
Автопрефиксер работает на основе настройки в webpack или gulp, в которой указывается, какие версии браузеров вы поддерживаете. А can i use ему нужен для того, что бы узнать, нужно ли для указанной версии браузера указывать префикс к свойствам. Либо положите болт, ибо плохого в этом ничего нет, или просто укажите список версий браузеров, для которых не нужны префиксы.
Отвечая на 2й вопрос, то лучше использовать плагины для галпа или webpack. Причина проста, ваша заготовка для сборки будет независимо работать от любого редактора и любой человек сможет без проблем использовать все фичи вашей сборки запуском 1й команды npm install, а редактор вы можете сменить, в котором заново будете устанавливать свои плагины.

Худший ответ:
Убрать, если не поддерживаете ИЕ
Вопрос: Какие есть рабочие решения для работы с websockets в PHP кроме Ratchet?

Лучший ответ:
Не знаю насколько yii2 дружит с PHP-стандартами... но если вдруг он уже подружился с composer'ом - настоятельно рекомендую из пары сотен вариантов тут. Среди прочего, я заметил, что там есть отдельный раздел "yii2-extension", думаю это как раз то, что Вы искали.
P.S. дебаггер Yii показывает что в нём есть ошибка лучше использовать дебаггер PHP.

Худший ответ:
Не знаю насколько yii2 дружит с PHP-стандартами... но если вдруг он уже подружился с composer'ом - настоятельно рекомендую из пары сотен вариантов тут. Среди прочего, я заметил, что там есть отдельный раздел "yii2-extension", думаю это как раз то, что Вы искали.
P.S. дебаггер Yii показывает что в нём есть ошибка лучше использовать дебаггер PHP.
Вопрос: Можно ли построить карьеру front-end или back-end разработчиком зная вместо JS Python?

Лучший ответ:
JS одна из основ фронта.. 
Куда же без него. 
Бек конечно можно... Но все же...

Худший ответ:
Это несложно, если уже знаете другой язык программирования, тот же Python.
Трудно выучить только первый. Остальные - проще намного. Они же похожи.
А алгоритмы, принципы, паттерны, концепции - они переходят из языка в язык.
Именно их и сложно выучить.
А сам язык - это ерунда.
Вопрос: Через что решать задачу про шахматную доску?

Лучший ответ:
Можно решить, смоделировав ситуацию. 
1. Пишите процедуру, которая умеет расставлять фигуры случайным образом. 
2. Пишите функцию, которая на входе получает позицию на доске, проверяет под ударом ли король от вражеской ладьи и возвращает да/нет.
3. Запускаете цикл, который запускает процедуру 1 и проверяет условие функцией 2. При увеличении количества итераций число = Да/Все будет стремиться к некоему числу, которое и будет ответом.

Худший ответ:
discount, p = [1., 1.], 1. - 29. / 61.
for dist in range(1, 7):
    discount.append(discount[-1] * p)
discount += discount[-2:-8:-1]

res, cnt = 0., 0
for king in range(64):
    for rook1 in range(64):
        for rook2 in range(64):
            if king == rook1 or king == rook2 or rook1 == rook2:
                continue
            cnt += 1
            kingx, kingy = divmod(king, 8)
            rook1x, rook1y = divmod(rook1, 8)
            rook2x, rook2y = divmod(rook2, 8)
            attac1hor = 1. if kingy == rook1y else 0.
            attac1ver = 1. if kingx == rook1x else 0.
            attac2hor = 1. if kingy == rook2y else 0.
            attac2ver = 1. if kingx == rook2x else 0.
            if kingx == rook1x == rook2x:
                if kingy < rook1y < rook2y or kingy > rook1y > rook2y:
                    attac2ver = 0.
                elif kingy < rook2y < rook1y or kingy > rook2y > rook1y:
                    attac1ver = 0.
            elif kingy == rook1y == rook2y:
                if kingx < rook1x < rook2x or kingx > rook1x > rook2x:
                    attac2hor = 0.
                elif kingx < rook2x < rook1x or kingx > rook2x > rook1x:
                    attac1hor = 0.
            attac1 = attac1hor * discount[kingx - rook1x] + attac1ver * discount[kingy - rook1y]
            attac2 = attac2hor * discount[kingx - rook2x] + attac2ver * discount[kingy - rook2y]
            res += attac1 + attac2 - attac1 * attac2
print(res / cnt * 2.)
итого 0.3756044599826443
Вопрос: Стоит ли на моём этапе изучения приступать к js?

Лучший ответ:
Бегло пробежался и хотел было написать, что получилось неплохо, но к сожалению, это только на внешний вид так показалось.
В общих чертах:
- мало уделил внимание отступам в адаптиве
- Иконки не выровнены по центру
- Очень плохой получился блок "Pricings & Plans", с непонятными разграничениями классов "card__header1\2\3\4"
- Чрезмерное использование абзацев (тег "p")Детали[320пкс] на ios имеется горизонтальный скролл ~5пкс[375пкс] Текст логотипа - маленький межстрочный интервал, текст "наезжает" друг на другафутер copyright остался без шрифтаБлок Contact us
- Иконки не выровнены
- От 700 до 1200пкс - форма исчезает, но остаётся от неё отступ
- Поля в форме не имеют по правой стороне отступа, текст упирается в границу блока, тогда как по левой стороне отступ есть.
- Поле message - На вид поле многострочное, но на деле однострочноеПереносы строк в контенте - на практике никто не будет расставлять в контент переносы строк. Для статичного лендинга неприятно, но где-то допускается, а вот стоит изменить абзац и контент поедет. https://yadi.sk/i/zxXqvGx9edOmbAТут внутренними отступами конечно переиграл... https://yadi.sk/i/Sl4WX_V19m4feg 

Худший ответ:
JS для верстки учить надо обязательно. Хотя бы для начала на уровне переключения классов и перехвата событий. Я недавно рассуждал на тему фронтендщика\верстальшика и если интересно почитать можно на сайте моей команды (в профиле ссылка). Там есть инфа за пакет знаний, которые лично я считаю обязательными.
Я хоть лично и недолюбливаю JS, все же понимаю, что без него никуда. Хочешь делать крутые сайты нужен js. Хочешь оптимизировать крутые сайты, нужен js. Главное — не лезть в jQuery. Без него трудно найти интеграции, но можно. А в большинстве случаев и не надо.