pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Как написать форму для добавления пункта меню на страницу, на php?

Лучший ответ: Не самая простая задача для новичка, давай разберем по порядку что тебе надо сделать.
1) тебе надо как-то хранить список категорий и их ссылок
2) тебе надо получить структуру меню в переменную
3) тебе надо построить само меню
Я исхожу из того, что хранить информацию о меню ты будешь в базе.
Пусть в базе будет две таблицы:menu_category
~~~~~~~
id
name
order

menu_items
~~~~~~~~~~~
id
menu_category_id
name
url
order
дальше, ты примерно вот таким запросом получаешь все пункты менюSELECT 
	`c`.`id` as `id`,
	`c`.`name` as `name`,
	`i`.`id` as `item_id`,
	`i`.`name` as `item_name`,	
	`i`.`url` as `item_url`
FROM `menu_category` as `c` 
LEFT JOIN `menu_items` as `i` ON `i`.`menu_category_id`=`c`.`id` 
ORDER BY `c`.`order`, `i`.`order`
теперь группируем результаты по id категории тем самым получая удобную структуру для формирования меню$menu = [];
foreach ($results as $res) {
	$menu[$res['id']]['name'] = $res['name'];
	$menu[$res['id']]['items'][] = [
		'name' => $res['item_name'],
		'url' => $res['item_url'],
	]
}
в результате имеем массив с такой структурой:[1]=>[
	'name' => 'Категория 1',
	'items' => [
		['name'=>'Ссылка 11', 'url'=>'http://site11.ru'],
		['name'=>'Ссылка 12', 'url'=>'http://site12.ru'],	
	]
],
[2]=>[
	'name' => 'Категория 2',
	'items' => [
		['name'=>'Ссылка 21', 'url'=>'http://site21.ru'],
		['name'=>'Ссылка 22', 'url'=>'http://site22.ru'],	
	]
],
теперь осталось все это вывести, используем такой кодecho '<ul>';
foreach($menu as $catId=>$cat) {
	echo '<li>'.$cat['name'];
	if (isset($cat['items'])) {
		echo '<ul>';
		foreach($cat['items'] as $item) {
			echo '<li><a href="'.$item['url'].'">'.$item['name'].'</a></li>';
		}
		echo '</ul>';
	}
	echo '</li>';
}
echo '</ul>';
вот и всё, осталось написать формы для добавления данных в соответствующие таблицы бд

Худший ответ: Если меню находится в БД и генерируются ссылки, то используйте MySQL/MySQLi запросы. Если у вас меню только как HTML код, то только через Java Scripts (можно и jQuery, если вы новичёк). Но второй способ я считаю непригодным на хороших сайтах, т.к. толком некуда сохранять данные меню. Если конечно кэши и т.п., то они временные...желательно использовать БД.
Вопрос: Как команда PHP должна выглядеть для удаления определённых символов?

Лучший ответ: $str="+7(931) 123-45-67";
   $str = preg_replace("/[^0-9]/", "", $str);
   echo $str;
держите быдлокод =)

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

Лучший ответ: https://zenmoney.ru/
Веб мордой редко пользуюсь, а вот Android приложение очень удачное (живет уже года 2)

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

Лучший ответ: Зависит от Вашей архитектуры, я применяю класс-"обертку" с перегрузкой нужного метода (этим же трюком пользуюсь для изменения вызова функций класса-родителя)
Как-то так: class A { // "родной" класс
	static function static_call ()
	{
		echo 'static_call a';
	}
}

class B extends A{ // "обертка" для тестирования
	static function static_call ()
	{
		echo 'static_call b';
	}
}

Худший ответ: Как вы тестируете статические методы?
Никак. Если у вас есть что-то внутри статического метода что стоит покрыть тестами - значит что-то пошло не так. Обычно там крайне примитивная логика, на уровне вызвать конструктор с нужными параметрами и т.д.
В вашем же вопросе вы интересуетесь как мокать статические методы. И тут ответ тоже никак:Please note that final, private and static methods cannot be stubbed or mocked. They are ignored by PHPUnit's test double functionality and retain their original behavior.
Есть правда еще мокери всякие и т.д.
Вопрос: USB-пушка: movement codes?

Лучший ответ: Решал подобную задачу. Надо было перехватывать команды устройства, которые передавались по сети. Для этого подошла программа Wireshark. Думаю, для usb тоже должны быть снифферы. Поройте гугл на тему «usb sniffer».

Худший ответ: Подключить вместо пушки микроконтроллер и посмотреть что шлет оригинальная программа?
Вопрос: Как реализовать нормальные отношения между доками в mgo golang??

Лучший ответ: В агрегациях монги, начиная с 3.2 есть аналог LEFT JOIN - $lookup. В mgo агрегации реализуются через Pipe. Маленький пример на коленке, в поле news при выборке попадают все новости автора:package main

import (
	"encoding/json"
	"fmt"
	"gopkg.in/mgo.v2"
)

type (
	obj map[string]interface{}
	arr []interface{}
)

func main() {
	mongo, err := mgo.Dial("localhost")
	if err != nil {
		panic(err)
	}

	info := []obj{}

	if err := mongo.DB("myDB").C("authors").Pipe(arr{
		obj{"$match": obj{"banned": false}},
		obj{"$lookup": obj{"from": "news", "localField": "_id", "foreignField": "authorID", "as": "news"}},
	}).All(&info); err != nil {
		fmt.Println("Error:", err)
	}

	printJSON(info)
}

func printJSON(t interface{}) {
	j, _ := json.MarshalIndent(t, "", "\t")
	fmt.Println(string(j))
}

Худший ответ: Посты можно привязать к ObjectId пользователя, а затем получать чем-то вроде:db.posts.find({_id: <тут_id_пользователя>})
Вопрос: Как обойти соответствие ключевых слов объявлений в РСЯ?

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

Худший ответ: Пока Яндекс.Директ завязан именно на ключевых словах. Размещайте рекламу по запросам "рестораны", "еда", "закуски", "есть" и прочим высокочастотным по вашей тематике.
Можно попробовать смежные тематики: "развлечения", "интересы", "хобби", "друзья". Только тогда старайтесь объявления писать также в тему. Вроде "Хочешь развлечься? Купи сухарики Хрентайм!" или "Давно не видел друзей? Соберитесь вместе с новой воблой Корюшка!".
А вообще, если вам нужен больше трафик, чем его качество, то обратите внимание на медийные предложения Яндекса - Яндекс.Баян и аукционные продукты.
Вопрос: Стоит ли сегодня изучать Ruby On Rails?

Лучший ответ: Стоит ли сегодня изучать Руби Он Рэйлс? 
Стоит.Или мода на него уже безвозвратно прошла?
Пик, вроде как, прошел.Пригодятся ли фронтэндеру знания и понимание работы проекта на Руби он Рэйлс в ближайшие пару лет? 
Если он захочет писать full stack. Рационально ли использовать для своего самописного домашнего стартапа Руби он Рэйлс?
Зависит от проекта.
P.S. Ruby on rails, как и ruby - просто инструмент. Да, он классный и удобный, но это просто инструмент. Если ты умеешь решать задачи, то не трудно будет освоить еще один иструмент, когда понадобится.

Худший ответ: Мода приходит и уходит, любая. Когда-то и все эти ноды и реакты уйдут в прошлое и будут казаться старперством. Поэтому ориентироваться на модность не стоит.
"Пригодятся ли фронтэндеру знания и понимание работы проекта на Руби он Рэйлс в ближайшие пару лет?" — это всё зависит от проектов, в которых вы будете работать. Если там используют Рельсы и Sprockets, то да, фронтендщику нужно разбираться. Если фронтэнд там собирается отдельно на gulp/grunt/чем-нибудь ещё, то фронтенд-разработчики там с Рельсами контактировать и не будут, поэтому знание их им особо и не нужно.
Если там SPA, то фронтэндеру вообще не важно, что там на бэкэнде.
"Рационально ли использовать для своего самописного домашнего стартапа Руби он Рэйлс?" — если вы знаете Рельсы, то да.
Вопрос: Флеш для линукс — конец?

Лучший ответ: Вы слоупок: http://www.opennet.ru/opennews/art.shtml?num=33164

Худший ответ: Причем перед тем, как завершить поддержку они его сначала сломали: он перестал нормально работать на видеокартах nvidia, показывая синюшное видео.
Вопрос: Windows7/Обычный пользователь/Разрыв-подключения сетевого подключения[LAN]?

Лучший ответ: добавить роль пользователю Операторы настройки сети

Худший ответ: У пользователя прав достаточно только для VPN.
Вопрос: Как поставить ubuntu в автозагрузку?

Лучший ответ: В настройках BIOS указать, с какого диска грузить систему по умолчанию.

Худший ответ: GRUB - загрузчик системы
Вопрос: Есть ли смысл в копирайтах на фото?

Лучший ответ: Как минимум оно будет служить доказательством вашего авторства.
Можно почитать у Лебедева как ставить.
www.artlebedev.ru/kovodstvo/sections/169/
Ну и почитать зачем нужны.
www.samborsky.com/usability/282/

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

Лучший ответ: Сам долго с этим боролся.
Включаешь консоль
Удаляем старый кластер базы данных
pg_dropcluster --stop 9.1(версия кластера) main(имя кластера, получить можно pg_lsclusters)
Создаем новый кластер 
pg_createcluster --locale de_DE.UTF-8 --start 9.3 main
При этом локаль должна быть установлена 
dpkg-reconfigure locales

Худший ответ: Попробуйте так:CREATE DATABASE "имя_базы"
  WITH OWNER "postgres"
  ENCODING 'UTF8'
  LC_COLLATE = 'ru_RU.UTF-8'
  LC_CTYPE = 'ru_RU.UTF-8';
Вопрос: Математическая задача (для одной CIV-подобной игры)?

Лучший ответ: Интеграл кривой получается, а так — че там особо интересного?..

Худший ответ: Да, решать только численно.
И да, полностью согласен, что такие задачи проще решать все-таки моделированием.
Вопрос: Непонятный паразитный входящий трафик до 30мб/с

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

Худший ответ: Настройте DMZ на свой компьютер и послушайте чего передают
Вопрос: Странное поведение iPhone 2G или Beeline?

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

Худший ответ: Боюсь оффтопнуть и ляпнуть не в тему.
Совсем не в курсе как с этим обстоят дела на iPhone, но мой андроид при длительном НЕиспользовании WiFi его отключает (в смысле — WiFi).
Если тапнуть экран, то происходит «пробуждение» и WiFi снова законнекчивается.
Возможно с iPhone примерно также происходит?
Вопрос: Тесты на js, не могу понять почему не правильно обрабатывается результат?

Лучший ответ: Хватит кидать свои листинги! Ищите фрилансера. Тут задают вопросы!
В чем у Вас вопрос? Не умеете дебажить?  - Вот bit.ly/1wqlW91

Худший ответ: Дико извиняюсь, если кому то доставил неудобства
не пользовался раньше jsfiddle, по вашему совету залил код туда
jsfiddle.net/v9q0q5j4
но тут почему то алерт не дает 
хотя jshint сказал, что все ок
заранее спасибо за ваши ответы!
Вопрос: Самоучитель UNIX?

Лучший ответ: Лучше всего — поставить сервер на виртуальной машине и пытаться решать какие-то реальные задачи на нём. 
Во время обучения всё равно будете пользоваться интернетом, мануалами, статьями. Так вот и научитесь.

Худший ответ: UNIX in a nutshell неплох.
Вопрос: PC BDS для десктопа?

Лучший ответ: Смотрите OS X.

Худший ответ: Как можно посоветовать дистрибутив? Каждому свое. Мне очень понравился OpenSUSE в свое время и до сих пор на нем и никуда уходить не хочу. есть все что надо и даже «И еще я люблю установку ПО из централизованных проверенных хранилищ.», а так же XEN из коробки. Но просто уверен что все это вы найдете и в других дистрибутивах.
Вопрос: А где нынче выращивают дизайнеров?

Лучший ответ: Без разницы в britishdesign.ru, или в Англии, или в РГГУ. Нет универсальной «фабрики дизайнеров», у которой сто процентов выпускников гении дизайна. Если человек прилагает усилия для своего развития, то он выйдет хорошим дизайнером почти из любого ВУЗа.

Худший ответ: Насколько мне известно в Москве именно Британка славится качеством образования (британские преподаватели, и т.д. и т.п.), более того оно и самое известное. Если качество образование и в нём «не порадовало» — то, думаю, имеет смысл искать зарубежом, уж там выростят достойно :)
Вопрос: Какие есть инструменты для визуализации графа GIT на Linux?

Лучший ответ: git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
либо на будушее сделать макрос:git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
и вводите git lg

Худший ответ: Кроме уже перечисленных можете попробовать RabbitVCS или GitEye
Вопрос: Cтоит начинать использовать flexbox?

Лучший ответ: Подробная статья - html5.by/blog/flexbox
На новом проекте попробовал flexbox, впечатления самые положительные.

Худший ответ: По этой теме есть интересный доклад.
Вопрос: Как писать оптимальный PHP код?

Лучший ответ: 99% оптимизации PHP это
- обязательно использовать APC (или opCache в новых версиях)
- использовать ООП только там, где это реально нужно
- использовать кэширование
- здравый смысл (не загружать списки из 100 элементов, если нужно только 10 и т.п.)
Поддерживаю Fesor - микрооптимизация - это скорее привычки, но никак не методы решения каких-то реальных проблем со скоростью работы.
Что почитать:
- Общие правила оптимальной работы PHP на практике
- Howto по производительности PHP с внутренностями
- 50 micro tips для оптимизации PHP (англ.)

Худший ответ: Та статья достаточно старая, пишите как пишите, потом поставьте xdebug, и через Webgrind посмотрите какой класс/метод/строка сколько общего времени выполнения занимают.
Это даст вам реальные, а не абстрактные в вакууме результаты. А вот полученные результаты уже берите на вооружение и учитывайте следующий раз при написании.
Вопрос: Почему массивы не равны в js?

Лучший ответ: Array сравниваются по ссылке а не по значению.
[] != []

Худший ответ: Ссылка наподумать:
stackoverflow.com/questions/7837456/how-to-compare...
Вопрос: Баг в функции strpos?

Лучший ответ: Так это у вас наверняка utf-8 кодировка, а кириллица занимает 2 байта. Используйте для этого mb_* функции

Худший ответ: php.net/manual/ru/function.strpos.php
Читать мануалы никто не запрещал.
Вопрос: Пуск без категорий (групп)

Лучший ответ: Если я правильно помню, то из популярных: KDE, Cinnamon, Mate, Unity умеют отображать все приложения единым списком. 
Также присутствует поиск по приложениям.

Худший ответ: В КДЕ4 по умолчанию присутствует виджет, которым можно заменить кнопку пуск с группами, на список аля win95
На панели (обычно справа) есть такая «сопля», ее нажать. Там пункт добавить виджеты. В нем категория — запуск приложений. В списке виджет — классическое меню запуска приложений.
Вопрос: Как при разработке сайта ограничить доступ к исходникам?

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

Худший ответ: Как вариант — разбейте проект на несколько модулей. Модули, которые вы не хотите открывать, пусть живут на вашем хостинге и наружу смотрит только некий ваш API для обращений извне. 

Модуль, который дополнит функциональность системы, пусть разрабатывает команда сторонних разработчиков. И разрабатываемый модуль пусть общается с вашей существующей системой через веб-сервисы. После того как новый модуль будет разработан, вы его проверите на наличие закладок и интегрируете в общую систему.
Вопрос: Почему не работает .htaccess на mac os x?

Лучший ответ: Проверьте, что в конфиге виртуалхоста есть опция:AllowOverride All
Так-же возможно сам .htaccess работает, но не работают отдельные возможности типа реврайта, тогда подгружаем нужные модули, т.к. проблема с реврайтами самая частая, делается примерно так:
идем в  httpd.conf тут /Applications/MAMP/conf/apacheи раскаменчиваемLoadModule rewrite_module modules/mod_rewrite.so
Кнонфиг виртуалхоста приводим к виду<VirtualHost *:80>
    ServerAdmin ...
    ServerName ...

    DocumentRoot ...
    <Directory ...>
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory ...>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>
Рестартуем апач и вуаля модуль работает, с другими по аналогии.

Худший ответ: На самом деле он просто скрыт. В терминале можно прописать defaults write com.apple.Finder AppleShowAllFiles 1 && killall Finder
Или через любой FTP/Файловый менеджер посмотреть.
Вопрос: Блокировка IP в nginx после определенного числа 404-ых запросов (подряд или в час)

Лучший ответ: Есть хороший модуль
limit_conn_status 404
Самплов много в гугле по диррективе.

Худший ответ: Я это через fail2ban делал
Вопрос: Где-нибудь есть понятное, простое объяснение графов (в программировании) и простые примеры задач на графы?

Лучший ответ: Если у вас нормально с английским, то посмотрите на topcoder.
Вот здесь есть очень много разных интересных туториалов. В частности и нужный вам из трех частей: вот тут
Если же с английским плохо - то начните с него, а потом переходите на графы.

Худший ответ: Язык программирования - это всего лишь инструмент, с помощью которого можно выразить алгоритм. Если вы не понимаете теории, стоит взяться за ручку с бумагой и чертить, расписывать шаги. А потом уже реализовывать "в бронзе" программы.
ЗЫ Что бы там ни говорили, но без математики программировать туго.
Вопрос: Как можно реально проверить коммутатор, чем нагружать?

Лучший ответ: Коммутаторы даже дешевые редко ложатся под простой линейной нагрузкой, обычно у них глюки в логике и прошивках, молотить трафик научилось даже самое говно в мире сетей. Что из настроек вы планируете на нем использовать? - Подскажу как проверить работу конкретных фишек, если хотите тупо прогрузить его трафиком - самое простое https://tech.yandex.ru/tank/ ну или статьи на хабре были по нагрузочному тестированию, только сервак понадобится с хорошими сетевыми, хватит и гигабитных. Вообще повторюсь, грузить коммутатор доступа не имеет особого смысла, лучше проверить корректную работу нужных фишек типа снуппингов, лупдетектов и т.п.

Худший ответ:  вот я хочу узнать, что же ждать от него?  На мой взгляд, представляется конструктивным выделить функциональность, которая потребуется от устройства в рабочем режиме (в "продакшене") и затем каждый пункт протестировать отдельно. В частности, стоит проверить работу xSTP и его нюансов (BPDU guard и т.д.), ARP Inspection, фильтрации по MAC-адресам, ограничения широковещательного/многоадресного трафика (storm control), DHCP snooping, IGMP (если планируется использовать). Для этого может потребоваться собрать тестовый стенд и сгенерировать необходимый трафик (под linux рекомендую scapy для формирования специфичных пакетов/фреймов и hping для генерации интенсивного трафика).
Не вижу особого смысла в попытках полностью утилизировать ресурсы коммутационной матрицы ("фабрики"). Для этого потребуется задействовать все порты коммутатора. Etherchannel здесь, на мой взгляд, вряд ли сильно поможет, учитывая поддерживаемый коммутатором режим разделения трафика по линкам внутри etherchannel ("Поддержка балансировки по destination-MAC", отсюда).
Вопрос: Убить дрова на неработающей Винде

Лучший ответ: Вообще, в виндах утилита есть специальная для таких случаев, sysprep назвается. Надо её запустить на исходной системе с галочкой «Generalize», и она автоматом уберет все специфические драйвера подготавливая систему к переносу на другое оборудование.

Худший ответ: Да, удалить файл драйвера. Я вроде так делал с дровами Daemon Tools, которые вызывали ошибку загрузки.
Вопрос: CMS для фотосайта

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

Худший ответ: копермайн по прежнему наверно в тренде.
Вопрос: Как правильно вызвать callback — функцию?

Лучший ответ: У функций есть параметрыfunction fn (a, b, c) { alert(a, b, c) }
Когда вы вызываете callback функцию, это тоже самое, что вызвать fn с параметрами вот такfn(1,2,3)
Ваш случайfunction fn (a, b, c) { alert(a, b, c) }

function foo (callback) { 
   var a = 1, b = 2, c = 3
   callback(1, 2, 3) // равносильно fn (1, 2, 3)
}

foo(fn)
Необязательно передавать анонимную функцию, любую функцию.
Резюме: Вам с функциям бы сначала разобраться.  
Почитайте вот это, например: https://learn.javascript.ru/function-basics

Худший ответ: Вот, творчески переосмыслил, вроде все понятно и все работает:function fuck(girl, boy, callback){
	var hookUp;
	if(girl >=18 && boy >=18){
		hookUp = true;
	}else hookUp = false;	
	callback(hookUp);
}
fuck(19,30, function(hookUp){
	if(hookUp){
		console.log("You're welcome!");	
	}else console.log("No way!!!");
});
Вопрос: Возможно ли сегодня создать стартап и изменить мир?

Лучший ответ: Можно!!! Нереализованных идей — валом!!! Руки не успевают бить по клавиатуре… К примеру почитайте идеи отцов жанра. Кто стоял у первоистоков (хотябы возьмём наших программистов 80х годов) курили правильную траву(тогда это было в почёте) и генерировали кучу идей полезных и мощных, но компы тогда им не позволяли. Иногда читаю программерские академ журналы тех времён и сильно удивляюсь широте мысли… Проблема в том, что одному — долго, а надёжную, банду трудно собрать. К томуже как правило все хорошие идеи как правило на стыке либо с электроникой, либо с биологией, либо с бизайном, либо ещё с чем нибудь надо быть либо мульти спецом, либо опятьже собирать банду, Банду к томуже сложно прокормить на этапе раскрутки, приходиться держать всех на рисе (в плане питнания) и на обещаниях, в плане морального духа.

Но не будем голословными, приведём примеры. Сделайте нормальный распознователь речи и вы перевернёте мир. Сделайте неёроинтерфейс нормальный и опять же перевернёте. Умный дом как таковой, и то никто не сделал (только видимость). Автоматизируйте всё подряд — народу нравится…

Начните с малого, например спроектируйте новую архитектуру домашнего пк, и если она будет крута, то перевернёте.

При этом всегда смотрите в будущее, жк — прошлый век, будут лишь проекторы, игры проектируйте сразу под системы вирт реальности… 

И всё будет здорово!!!

Худший ответ: Как вы считаете возможно ли сегодня простому программисту сделать стартап и изменить мир?Простому программисту — вряд ли. Нужно что-то ещё.
Вопрос: А как вы именуете классы в css?

Лучший ответ: Я обычно задаю имя общему блоку, а элементам внутри него присваиваю короткие имена.<div class="testBigBoxBlock">
  <div class="title">Заголовок</div>
  <div class="desc">Описание</div>
</div>

<div class="testSuperBigBoxBlockAndLinesMind">
  <div class="title">Заголовок</div>
  <div class="desc">Описание</div>
</div>

Худший ответ: css modules полностью решают эту проблему, но вне реакта не вижу удобства их использования
Вопрос: Как явно задать тип переменной PHP в PhpStorm?

Лучший ответ: Если проблема только в дополнении кода, используйте phpdoc/** @var Server $server */
$server = $em->getRepository('MyBundle:Server')->findOneById($id);

Худший ответ: а к чему вы явно приводите? к Server? не видел такого в документации.
А вот phpdoc в этом деле поможет.
Вопрос: А как бы вы изучали программирование под Android?

Лучший ответ: Перенести в приоритет №1 позицию "Английский в процессе". 
Изучать первоисточники (здесь developer.android.com) с переводчиком, словарем и т.п. через не могу
Кодить
Все остальное-потеря времени..

Худший ответ: Я бы еще порекомендовала книгу, ее можно читать параллельно с изучением сайта с котиком :)
www.ozon.ru/context/detail/id/24301926
И не тратьте время на Голощапова.