Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Почему для проверки на пустую строковую переменную не используют empty()?

Лучший ответ:
Гляньте результат выполнения empty("0"); и все поймете.Возвращает FALSE, если переменная существует, и содержит непустое и ненулевое значение. В противном случае возвращает TRUE. UPD
А еще один неплохой способ проверки строки на пустоту - strlen(string),то есть, получение кол-ва символов в ней.
UPD2:
Вариант от Дмитрий - проверка сроки на наличие первого символа (Обыгрывает первый по скорости): isset($string[0]).

Худший ответ:
В данном случае $string == '' и empty($string) одинаков, но empty проверяет на пустоту не только строки. По хорошему, надо использовать $string === '' с тройным равно
Вопрос: Алгоритм бесконечной прокрутки контента?

Лучший ответ:
"эй, база дай мне первые 10 материалов",
"эй, база дай мне следующие 10 материалов, после последнего из первой десятки"

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

Лучший ответ:
Бэкапы нужно делать ДО изменений.

Худший ответ:
Суть в том, что он оказался не совсем тем, что требовалось
Может просто нужно научиться готовить кошек? ;) как правильно удалить этот плагин, 
Любой плагин правильно удалять через админку. 
А вот что и почему теперь работает не так, как ожидается - сложно сказать МРТ, можно только гадать. ;).
Вопрос: Лучше логин или email?

Лучший ответ:
Логично давать авторизоваться и по логину и по емайлу

Худший ответ:
Лучший вариант — использовать e-mail пользователя. С точки зрения юзабилити это удобнее всего.
Вопрос: Как найти удаленную работу в команде?

Лучший ответ:
Поработаю пока с вот этим https://github.com/lukasz-madon/awesome-remote-job... нашел где-то тут на Тостере.
Исследовал ситуацию дальше, понял , что без портфолио не стоит рыпаться.
Нашел список типовых проектов, по которому можно делать портфолио: https://goo.gl/UPx4Sn
Еще хочу добавить , что сейчас никто не будет слушать: "я что-то немного знаю и что-то делал, а вы меня доучите, дайте попробовать, я буду стараться", сейчас правильно общаться вот так: https://goo.gl/8RNNJY , то есть в ответ на "ищем программиста на такой-то проект на том-то" надо отвечать  "о круто у меня уже есть такой проект в портфолио, вот ссылка, надо только текст и фотки ваши вставить" :)
Что касается javascript, то оптимальным выбором, чтобы позиционировать себя как javascript или frontend программист,  выглядит сконцентрироваться на react.js . У ангуляра больше своих специфических особенностей, vue слишком новый, к jquery в нагрузку будет идти какой-нибудь wordpress или будет только верстка, node.js для серьезного бекенда довольно ненадежный (например сервер на ерланге может лет десять без перезагрузок проработать, имеет крутую асинхронность и параллельность, есть серьезная система перезапуска падающих частей через супервайзеров), хотя в качестве сервера-заглушки для реакта подойдет вполне :) .

Худший ответ:
1. Ищи работу в фриланс проектах
2. Ищи вакансии на площадках, результатов море
Вопрос: Как в sublime text настроить автоматическую простановку «;» на sass файлы?

Лучший ответ:
В настройках плагина нужно добавить строку "sass.propertyEnd": ";" в раздел "preferences". Другие настройки можно посмотреть здесь https://docs.emmet.io/customization/preferences/

Худший ответ:
Не любите ставить ; вручную, тогда используйте индентацию вместо скобок в синтаксисе SASS.
Вопрос: Wiki с мультикатегориями

Лучший ответ:
Пилите медиавики. Все остальные вики, которые смотрел, были сильно хуже.

Худший ответ:
Посмотрите PmWiki. Про категории тут.

(У меня сейчас, правда, какие-то проблеммы с доступом к сайту. Через Opera Turbo открывается.)
Вопрос: Паттерн Repository и Active Record?

Лучший ответ:
Что такое репозиторий? Это что-то что отвечает за хранение данных. Целиком и полностью. То есть вот простенький интерфейс простенького репозитория:interface UserRepository {
    public User getUser(UserID id);
    public void add(User user);
    public void remove(User user);
}
Где именно репозиторий хранит данные, в базе данных, в памяти, в файлах, на удаленном сервере с запросами через http - это все детали реализации.  То есть репозиторий - это паттерн для того, что бы абстрагировать наш код от места хранения данных.
Репозиторий который умеет только выборки делать - это не репозиторий. Это штука для выборок, Finder. Так же мы должны тут заметить, что "строками таблиц" является объект типа User, а репозиторий представляет собой абстракцию от таблицы (очень упрощенно. есть еще паттерн table data gateway который отвечает именно за одну таблицу, репозиторий же может хэндлить и связи между таблицами и вообще оперирует именно объектами предметной области а не их отображением на базу).
Active Record же делает именно то, что говорит название. Это объект, который представляет собой одну строку из таблицы. Он сам может себя вставить, обновить или удалить из таблицы. Однако "найти себя" он не может к примеру, за это отвечает какой-то другой объект (мне нравится название Finder, поскольку это именно то что делает объект - ищет наши строки таблиц). Частенько для упрощения методы файдеров делаются как статические методы.
По сути ActiveRecord есть ничто иное как упрощенная комбинация из Domain Object + Row Data Gateway.

Худший ответ:
Репозиторий - это хранилище сразу для всех объектов определенного класса. Методы репозитория, добавляющие или удаляющие объект, принимают этот объект в качестве параметра. Методы репозитория, отвечающие за поиск, возвращают экземпляры найденных объектов. У вас один экземпляр репозитория для всех объектов, которые он может хранить (как правило - один экземляр для всех объектов какого-то одного класса или иерархии классов).
В паттерне Active Record объект умеет сохранять сам себя. Иными словами, ответственность за вопросы хранения лежит на самом объекте.
Вопрос: Смогут ли поисковики проиндексировать JavaScript ссылки в div'е?

Лучший ответ:
Удалите это безобразие и сделайте правильно:<a id="viewBuy" href="shopping.php?asessories_id=%s">Заказать</a>

Худший ответ:
Если JS в коде HTML-страницы корректен, то однозначно: ДА.
Вопрос: Можно ли обновить пиратскую копию windows до windows 10 и получить лицензию?

Лучший ответ:
Лицензия - это не отсутствие надписи в углу "ВАША WINDOWS НЕ ЛИЦЕНЗИОННАЯ", а документы на эту копию windows. Из пиратки лицензию не сделать при всём желании. Это если конечно важен именно вопрос её наличия, допустим в организации.

Худший ответ:
Ну так правильно, при обновлении с пиратской копии лицензия слетает. Можно активировать активатором KMSpico (или Auto).
Вопрос: Можно ли обойти recaptcha?

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

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

Лучший ответ:
Не используйте чужие эксплойты.

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

Лучший ответ:
Попробуй:
$headers = "From:=?UTF-8?B?".base64_encode("От кого")."?=\r\n";
$headers .= "Content-type: text/html; charset=UTF-8\r\n";

Худший ответ:
Смотреть кодировку сервера, файлов и самого кода
Вопрос: Как правильно работать со связкой ASP.NET Core, React и npm?

Лучший ответ:
Если решили делать spa, то я бы не советовал смешивать фронт с asp частью. Лучше вынести всю фронтовую часть в отдельный проект, а собранный index уже отдавать asp проектом и его же использовать просто как web api. Тогда ничего мешаться не будет.

Худший ответ:
Вы можете посмотреть как работает связка React + SignalR + ASP.NET Core в проекте  https://github.com/directlinkcore/directlink
Вопрос: Хочу изучить Node.js

Лучший ответ:
Есть еще скринкасты от  Ильи Кантора.

Худший ответ:
Вот несколько статей из цикла «NODE.JS FOR PHP PROGRAMMERS»
dotheweb.posterous.com/nodejs-for-php-programmers-1-event-driven-pro
Вопрос: Как мониторить медленные и прожорливые места скрипта?

Лучший ответ:
потребление памяти: https://pypi.python.org/pypi/memory_profiler
Для замера времени выполнения в боевых условиях использую обычно такой менеджер контекста:class Profiler(object):
    def __init__(self, message_format='Elapsed time: {:.3f} sec'):
        self._message_format = message_format

    def __enter__(self,):
        self._startTime = time.time()

    def __exit__(self, rtype, value, traceback):
        print(self._message_format.format(time.time() - self._startTime))
использовать крайне просто:with Profiler():
    <код время выполнения которого необходимо замерить>
1. Код программы почти не нуждается в изменении.
2. минимальные накладные расходы(крайне важно поскольку "нормальные" профилировщики сильно всё затормаживают, но и выдают гораздо более детальную информацию)
3. замерит время в любом случае, если даже произойдёт исключение.
4. аналогичную конструкцию(с минимальными изменениями для работы с logging) использую и в продакшене.

Худший ответ:
По мониторингу быстродействия есть хороший доклад с обзором инструментов и примерами:
https://moscowdjango.ru/meetup/13/profiling-django/
Вопрос: Как сделать ns сервер на php для создания хостинга?

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

Худший ответ:
Для начала вам нужно базово разобратся как обычно работает ауторитативный ДНС(какие задачи выполняет) и вобще система днс и зачем она нужна.
 Судя по ващему вопросу вы этого не понимаете. А писать программу не понимая какие задачи она будет выполнять мягко говоря нелепо.
P.S. да ип нужен и порт не 80 а 53
Вопрос: Как делается отслеживание объектов, запись координат в базу?

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

Худший ответ:
Я так понял вы разрабатываете свою электронику. Думаю ардуино будет хорошим началом. Он может получить данные с GPS датчика а данные записать в память, или передать по сети на сервер ваш собственный. Просто отправлять GET запросом на какойто РНР скрипт. А тот уже сохранять в базу. Если соединения нет можно сохранять локально, на флешке, и залить все на сервер, как только появиться соединение. К нему можно будет подключить и другие датчики.  Но я думаю что про топливо в баке, это расчетный показатель, не думаю что это читается с датчика или OBD. Наверно просто грузовик выезжает заправленный, и по километрам ведется расчет сколько примерно грузовик сжег.
Вопрос: Библиотека IT-шника

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

Худший ответ:
Советую почитать Элия Голдратт и связанные книги с Теорией ограничения 
На rutracker есть подборка, в русском и английском варианте, прочел 2 книги не отрываясь.
Вопрос: Указатели и динамическая память в С++?

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

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

Лучший ответ:
А как насчет перехвата исключения и в блоке catch определять тип "Division by zero" и возвращать 0.

Худший ответ:
 с помощью функции eval() 
Говнокод. Забудьте про эту функцию.например, "1 - $a / $b",if ($b != 0) ...
Вопрос: Поддержка меток (тегов) в custom post type wordpress?

Лучший ответ:
Вот так получилось добиться нужного!
Здесь при регистрации нового типа записей не регистрируется новая таксономия для меток, а в аргументы, одной строкой, добавляется параметр 'taxonomies' => array('post_tag') , выделил его переносами строк.
Метки, добавленные таким способом, работают как надо.
Остается вопрос почему не работал первый способ, может кто знает?
Для лучшего понимания WP было бы полезно.
Рабочий код добавления меток к кастомному типу записей:add_action( 'init', 'mbds_products_custom_post_types' );

function mbds_products_custom_post_types() {
	$labels = array(
		'name'               => _x( 'Продукция', 'post type general name' ),
		'singular_name'      => _x( 'Продукция', 'post type singular name' ),
		'menu_name'          => _x( 'Продукция', 'admin menu' ),
		'name_admin_bar'     => _x( 'Продукция', 'add new on admin bar' ),
		'add_new'            => _x( 'Добавить продукт', 'mbds_products' ),
		'add_new_item'       => __( 'Добавить новый продукт' ),
		'new_item'           => __( 'Новый продукт' ),
		'edit_item'          => __( 'Редактировать продукт' ),
		'view_item'          => __( 'Показать продукт' ),
		'all_items'          => __( 'Вся продукция' ),
		'search_items'       => __( 'Найти продукт' ),
		'not_found'          => __( 'Продукция не найдена' ),
		'not_found_in_trash' => __( 'Нет продукции в корзине' )
	);

	$args = array(
		'labels'             => $labels,
        'description'        => __( 'Описание.' ),
		'public'             => true,
		'publicly_queryable' => true,
		'show_ui'            => true,
		'show_in_menu'       => true,
		'query_var'          => true,
		'rewrite'            => true,
		'capability_type'    => 'post',
		'has_archive'        => true,
		'hierarchical'       => false,
		'menu_position'      => 8,
		'menu_icon'          => 'dashicons-portfolio',
		'supports'           => array( 'title', 'thumbnail', 'page-attributes', 'editor' ),

		// добавит поддержку меток к custom post type
		'taxonomies' => array('post_tag')
	);

	register_post_type( 'mbds_products', $args );
}

Худший ответ:
Попробуйте аргумент hide_empty = true.
Как то так:wp_tag_cloud( array( 
  'taxonomy' => 'mbds_products_tag',
  'hide_empty' => true
) );
Вопрос: "Программируем на Python" не получается решить задачу?

Лучший ответ:
print("Общая сумма = ", ch1)
print("Общая сумма = ", ch2)
Тут должны быть запятые, а не точки

Худший ответ:
Если я верно вкурил 3.5print ('Общая сума: {0!s}'.format(many / 100 * 15))
Вопрос: Как самому сделать кнопки для наушников/гарнитуры(громче, тише, пауза/плей)?

Лучший ответ:
Кнопка Play/Pause/прием звонка/отбой реализуется как замыкание линии микрофона на GND. Для андроида остальные кнопки могут быть реализованы как замыкание линии микрофона на GND через резисторы определенных номиналов. Для Apple все то же самое, но там еще есть дополнительный чип. Его назначение мне не очень понятно. Может быть он отвечает за распознавание дополнительных кнопок. Может служит признаком подключения оригинальной гарнитуры. В любом случае я не гарантирую, что без этого чипа все будет работать.

Худший ответ:
Зачем делать самому то, что уже сделано?
Очевидно ответов два
1. чтобы сделать лучше/удобнее и етс...
2. нет возможности использовать уже существующее решение. 
в 1 случае придется самому изобретать.
во 2 случае проще купить на том же али или ебее...
например - гарнитура
там в одном из вариантов на пульте есть не только кнопка ответа но и ползунок громкости. Причем по качеству наушники вполне достойные.
Вопрос: Стоит ли читать книги для понимания верстки?

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

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

Лучший ответ:
Что-то вы все в дебри ушли. Если человек владеет пакетом акций 100% и хочет без геморроя получить деньги, он как Гражданин РФ может их получить в формате дивидендов с уплатой 13% налога.
По сути все действия сводятся к 2-м шагам:
1. Перевод себе на личный счет как выплата дивидендов
2. Заявка в налоговую и уплата 13% налога
Обход легальный - нанимается знакомый на контракт, сразу выплачивается и закрывается. Он получает деньги и уплачивает налог. Нанимать себя и выплачивать себе будет глупо.
Вы поймите что по новым ФЗ уже взялись за офшоры и счета в иностранных банках, включая компании. У вас исходов может быть несколько:
1. Вы очень красиво обводите различными схемами и выводите бабки с минимальными комиссиями 5-10% но для этого вам нужен или человек который знает как и/или мозги и много времени чтобы понять как/что/зачем (что вам не хочется)
2. Вы выводите бабло через транзитные карты и прочие сервисы, но вполне возможен вариант когда вас поймают за руку. Поясню тут: Тут сложно вообще прогнозировать и угадать. Например самый распространенный вариант отлова – человек один (семьи нет и прочее), а банковский счет на солидные суммы и такие же траты. Запрашивают, находят компанию и начинают копать. >1.2млн неуплата налогов – фин преступление с последующим УК РФ 6-12 лет.
PS: Даю подсказку для самых бесстрашных. Много денег сейчас выводят через биткоин. На маленькую сумму покупают и сразу скидывают на сервисах типа localbitcoins. Но тут чуток геморроя. Более чем 50к рублей играть при таком прыгающем графике – лотерея

Худший ответ:
Revolut уже снова стали  давать небелым людям?
корп карта в тру банке всегда веселее, поскольку епейментовские постоянно лочат / меняют правила, именно из-за их характера, с (1) рыбку и сесть не получится, если вы владелец foreign entity, либо снимайте, "забыв" об отчетах, либо будьте готовы
вы или стройте бумагамарочную систему с 15-20% итоговым налогом или юзайте анонимные карты / обмениики в РФ и именные за границей
Вопрос: Виджет для игры &quot;Жизнь&quot; на Qt?

Лучший ответ:
А чем неудобно-то?
void mousePressEvent( QMouseEvent* e ) {
    int row = e->pos().y() / CellSize;
    int column = e->pos().x() / CellSize;

    // do whatever you want

}



Худший ответ:
Либо QGraphicsScene, либо создать свой виджет(наследуемый от QWidget) со своим paintEvent
Вопрос: Где и как лучше рисовать дизайн?

Лучший ответ:
Можешь не благодарить zeplin

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

Лучший ответ:
Вейвлет-преобразование. Вроде, используется в Jpeg-2000.

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

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

Худший ответ:
Художественная школа. Там же где дети занимаются. Можно туда походить. Думаю препод тебя не выгонит. Там основы построения композиции, натюрморт, пейзаж, ну и наконец тело.
Вопрос: Вопрос по гипертекстовым печенькам (HTTP Cookie)

Лучший ответ:
Нельзя. Задать можно домен и путь, а все параметры игнорируются.
Почему нельзя в самом test.php не учитывать куки, если ему переданы определённые параметры?
Как вариант, можно настроить rewrite путей. Вместо test/test.php?ddd=sss будет test/ddd/sss
И задать куки, которые работают для test/, но не работают для test/ddd

Худший ответ:
Куки отправляются при любом запросе к серверу. Я не знаю какая у вас задача, но можно сделать форму с input type=«hidden», которая будет появляться только на «test/test.php» и заполняться.
Вопрос: Как отследить открытия email писем?

Лучший ответ:
Например, добавь в письмо картинку, логотип и т.п., с ссылкой <img src="http://example.com/emailopen.php?email=contact@example.me"/>, отдавай всем изображение по этой ссылке, так же, ты сможешь отслеживать, кому отдается картинка, по get запросу. можно настроить nginx например и отдавать картинку по урлу <img src="http://server.com/email.jpg?contact@example.me"/>

Худший ответ:
лог NGINx'а
чем угодно, пыхом тоже можно обработать, но проще всякими нодами/го/Питоном
Вопрос: load balancer — как лучше сделать и где воткнуть varnish?

Лучший ответ:
Может стоит для начала кэширование как следует настроить?

В магазинах, как правило, основная динамика — это поиск и заказ. Последний происходит относительно редко и большой нагрузки не представляет. Поиск надо оптимизировать на стороне приложения. Все остальные страницы, в том числе, страницы с описаниями товаров лучше всего генерировать только при добавлении\изменении информации на них, а дальше уже отдавать статически.

Худший ответ:
магазин, куча пользователей на одном сервере 16г\рам при 512М memory_limit,10к продутов база данных, хочется немного свободы для начала, разбавить народ по серверам идея интересная чем просто памяти еще впихнуть.
Вопрос: Как сделать пунктирную ссылку без border?

Лучший ответ:
для elem:after , elem:before - делайте border:size dotted color;

Худший ответ:
Есть 2 стула.
Первый:a {display:inline-block;position:relative;}
a:after {position:absolute;left:0;right:0;bottom:0;border-bottom:SZ dashed/dotted transparent;}
a:hover:after {border-color:#color;}
Второй:a:hover {outline-bottom:SZ dashed/dotted #color;}
Вопрос: Удалит ли команда rm -rf / содержимое внешних жестких дисков?

Лучший ответ:
Удалит если они примонтированы, т.е. если данные находятся где то по адресу /что-то-там то естественно удалит. 
Если конечно у вас хватит на это прав.

Худший ответ:
Удалит... Помнится на Радио-Т слушал поучительную историю как один пров таким образом затер данные клиентов вместе с бекапами, поскольку во время выполнения команды тома с бекапами тоже были примонтированы к системе.
Вот кстати эта поучительная история
Вопрос: Как искать для покупки/на алиэкспрессе кнопки на кабель(для починки/создания своей гарнитуры)?

Лучший ответ:
Надеюсь, поможет.

Худший ответ:
мембранные кнопки называются
membrane push button на али
Вопрос: Нужна ли статья про game-dev своих школьных времён?

Лучший ответ:
Это сугубо ваше личное дело! Однако почитать такие олдскульные статьи и вспомнить годы былые — Хабр любит!

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

Лучший ответ:
Оно даже у меня на десктопе тормозит. Вам не жалко ваших пользователей?
ЗЫ
Мне жалко тех людей, которые будут на мобильном пытаться до цен дойти.
100500 анимаций, туча бесполезной информации, а самое главное (цены) где-то в жопе.

Худший ответ:
Ну собственно юзайте хромовые отладки - функционал достаточно высок, в т.ч. и про мобильные устройства.
Кстати можно подключить устройство проводом и отлаживать на компе (Андроид можно на хроме 100%, но под ios вроде тоже что-то было).