Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: JS. Централизованная обработка ошибок

Лучший ответ:
Никто за вас не решит, что лучше.

Конечно, можно и нужно иметь try/catch на самом верхнем уровне. И дать ему какое-то полезное поведение — записать в лог, вывести красивое окошко и т.п., чтобы не пугать пользователя системными сообщениями.

Это необходимый минимум.

А дальше смотрите глубже. Что вам даст функция-обработчик внутри объекта исключения? Во многих случаях она уже бесполезна; она слишком далеко от точки возникновения ошибки, чтобы попробовать ее исправить (например, вызвать код повторно со значением по умолчанию, подождать освобождения ресурса и т.п., короче, какой-нибудь while/try).

Перед каждым вызовом функции, которая может выбросить исключение, перед каждым входом в компонент у вас есть три пути:


обработать какие-то (или все) исключения здесь
обработать и передать выше (повторный throw)
ничего не делать (передать сразу наверх)


Вам придется опускать обработку исключений глубже хотя бы там, где понадобится finally код. И там, где вы можете сделать что-то осмысленное, прежде чем полностью отваливаться с криками в лог.

И вот там, поглубже, внутри компонента, уже действует ряд разумных рекомендаций:

1. Не ловить всё подряд. Обрабатывать только те исключения, с которыми известно, что делать. Если не совсем известно, делать re-throw.

2. re-throw делать аккуратно. Не надо, опять же, хватать больше от жадности, а потом пропускать исключения ненужных классов. Для ява-скрипта это выражается вот в чем:

Нехорошо:
try {
     // ...
} catch (e) {
     if (! e instanceof MyError) {
          throw e;
     }
    // ...
}


Хорошо:
try {
     // ...
} catch (e if e instanceof MyError) {
    // ...
}


3. То, что вы делаете в finally, важнее, чем то, что делаете в catch. Есть что подчистить — надо подчистить.

4. Не надо терять информацию об ошибке (генерить или ре-генерить исключение более широкого класса). Правда, при разработке либы лучше наоборот, свои мелочи держать в себе и заменять низкоуровневые ошибки на более общие.

Ну, что хотел сказать, то сказал. Удачи.

Худший ответ:
JS-приложение основано на обработке событий, как вы его поместите в один try-catch?
Вопрос: Как исправить ошибку при запуске простейшего Django приложения?

Лучший ответ:
Если у вас Win7 то советую попробовать вот так:python.exe manage.py runserver 0.0.0.0:8000
По крайней мере для версии 1.7 помогало

Худший ответ:
Просмотрите кодировки py-файлов проекта.
Там, где кодировка не указана явно, укажите:# -*- coding: utf-8 -*-
Вопрос: Кому-нибудь еще кроме меня приходил именной спам от новой политической соцсети?

Лучший ответ:
Спам не приходил, а насчёт ассиметричного ответа.
В своё время попал в какую-то базу, и когда пришла рассылка от местной юридической фирмы, меня это достало (особенно достало ФИО напротив почты). Я позвонил на номер, что был в письме и наехал за 152 ФЗ, мужик на том конце пытался отбрехиваться, но потом бросил трубку. Я нашел сайт, позвонил по второму номеру. Там бросили быстрее. По третьему номеру директриса уже не отвечала на звонок. И знаете, через некоторое время весь подобный спам прекратился.

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

Лучший ответ:
html, css, js, довольна просто и сможете легко найти заказы на том же фрилансе.

Худший ответ:
Если говорить о программировании_вообще - то неплохим началом будет являться python.
Вопрос: Почему комп запускается иногда не с первого раза, в чем причина?

Лучший ответ:
Это 100% конденсаторы в блоке питания. Через 2-3-4-5 месяцев он совсем перестанет запускаться. Лично один раз перепаивал на блоке питания ATX и один раз на блоке питания монитора. 
Или, с меньшей вероятностью, конденсаторы на материнской плате.
Ну и самое маловероятное это неправильные настройки ACPI Power в BIOS.

Худший ответ:
ligisayan: если у вас вздутые конденсаторы - то именно это и проблема. Обычно конденсаторы достаточно крупные, и если у вас сгорела мать, у вас на ней могли остаться нормальные конденсаторы, перепаять их - это не чипы паять, вполне можно сделать в домашних условиях.
в 99% случаев причина - конденсаторы или недостаточный блок питания. Поэтому или мириться, пока мать вообще не перестанет включаться, или рискнуть перепаять.
Вопрос: Достаточно ли Apple MacMini для полноценной сборки приложений для iOs?

Лучший ответ:
Достаточно.

Худший ответ:
Вполне даже старого хватит.
Мы для аналогичных задачь используем аналог хакинтоша (VM + Jenkins), с Xcode 5. Никаких проблем. Даже для отладки образ VM используем.
Вопрос: Как задавать namespace динамически?

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

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

Лучший ответ:
Использовал до позавчерашнего дня связку HDD+примокеш, и 16 гб озу
вчера пришёл халявный SSD особого ускорения не заметил, но менюшки у "холодного" фотошопа перестали тормозить( у CC однозначно кривой интерес раз он зависит от скорости обращения к диску)
теперь сижу на связке SSD + примокеш, вау эффекта нет.
sleep и много много озу наше всё.

Худший ответ:
Не важно сколькиядерный у вас процессор, реальная многозадачность начинается с установки ssd.
Вопрос: Не виснущий Wi-fi роутер. Существует ли?

Лучший ответ:
ASUS WL-500 gP, уже 3 года. Не помню, чтобы его приходилось специально перезагружать, кроме как при перенастройке.

Худший ответ:
Через dd-wrt поставить на перезагрузку раз/два в сутки или реже.
Вопрос: Как можно реализовать такой функционал всплывающего окна?

Лучший ответ:
намекну:

Худший ответ:
Наймите фрилансера, не мучайте себя.
Вопрос: Эмуляция медленного канала для отладки ajax. http-cервер под windows?

Лучший ответ:
Ставите Fiddler, в нем включаете эмуляцию модемного канала, и дебажите на здоровье.

Вообще — как можно разрабатывать веб без Fiddler-a? (:

Худший ответ:
nginx, например
nginx.org/ru/docs/http/ngx_http_limit_conn_module.html
nginx.org/ru/docs/http/ngx_http_limit_req_module.html
а вообще есть и другие решения:
habrahabr.ru/post/127274/
habrahabr.ru/post/24931/
и еще много наподобие.
Самый крутой пожалуй www.netlimiter.com/
Вопрос: Устройство на работу?

Лучший ответ:
Ходят слухи, что надо что-нибудь уметь, чтобы что-то делать.

Худший ответ:
Если ты умеешь программировать - да. Если не умеешь - нет.
Вопрос: Как подключить Basecamp к Slack?

Лучший ответ:
Так https://zapier.com/zapbook/basecamp/slack/

Худший ответ:
Например 1 и 2. Встроенной интеграции к сож нет сейчас у них.
Вопрос: Проблема с работой веб-камеры в Linux (Raspbian)?

Лучший ответ:
На правах пальцем в небо: судя по тому, что сверху изображение прорисовано, не хватает процессорной мощности для обработки потока с камеры?

Худший ответ:
Какие конкретно модели проверялись? В этом списке они присутствуют?
Вопрос: Ubuntu 8.10 upgrade. Как?

Лучший ответ:
Меняем в /etc/apt/apt.list источники на нужную версию.
Потом sudo apt-get update && apt-get upgrade && apt-get dist-upgrade
Так всегда работало :) И через версии перепрыгивало.

Худший ответ:
Посмотрите список пакетов, которые обновятся, для начала.

>> Стандартная процедура обновления не работает, т.к. следующая версия 9.04 (конечно же тоже не LTS) уже тоже не поддерживается и пакеты не доступны.

archive.ubuntu.com/

А в целом, процент того, сколько будет проблем, зависит от того, что и сколько софта крутится на сервере.
Вопрос: Почему crontab не всегда выполняет поставленные задачи?

Лучший ответ:
Бедный ваш крон. 
Можно писать в формате 2-57/5 * * * * и так далее. 
А "не запускается" проверяйте в /var/log/syslog, там будут примерно такие записи: 
Apr 10 16:59:01 isera CRON[7545]: (inkvizitor68sl) CMD (echo 1)
Apr 10 17:01:01 isera CRON[7864]: (inkvizitor68sl) CMD (echo 1)
Apr 10 17:03:01 isera CRON[7883]: (inkvizitor68sl) CMD (echo 1)
(у меня echo 1 запускался по крону)

Худший ответ:
С чего вы взяли, что задания не запускаются ? Может удаленный сайт не отвечает поэтому файл не появляется. Вы лог крона проверьте.
P.S. У вас в одно и тоже время указан запуск одновременно несколько wget, видимо с того же самого сайта. Такое может блокироваться с той стороны. Поделите ваши вызовы на два простых шелл скрипта и вызывайте их.
И почитайте синтаксис крона, можно использовать */5
Вопрос: Звезды на фоне?

Лучший ответ:
Ловите

Худший ответ:
Посмотрите исходники. Как там?
Вопрос: Что происходит с зарубежным рынком front-end разработки?

Лучший ответ:
Добро пожаловать на международный рынок, друг.
Шутки ради, расскажу одну идею нашу. Создать веб-студию в Таджикистане. Грамотные ребята везде есть, даже компьютером пользоваться умеют (без шуток). Решили одних верстке научить, других дизайну (ну, там, колористика, оформление, в стоке картинок набрать...). Ну а что, за 500 рублей в день он работает 10 часов без перерыва на обед и потерь производительности. Но, это шутка была.
Так вот, я так понял, что Тостер — это не только сервис, позволяющий задать конструктивные вопросы. Это сервис, позволяющий выразить недоумение.
Чем я с радостью и воспользуюсь. И еще снабжу это все личным мнением. Это же комментарии. =)
Начну с этого личного мнения. Делать карьеру фрилансера — глупо изначально. Фриланс - это постоянная конкуренция. С индусами в том числе. А воевать с индусами — все равно что воевать со статистикой. Бесполезно.
Искать лучше всего уверенный долгострой, наш, отечественный. Не только такой, чтобы просто взять, сделать и забыть. А такой, чтобы с юзерами. Чтобы постоянно его дорабатывать, дорабатывать, дорабатывать. Гордиться плодами своего творения, умиляться скорости загрузки и няшному поведению объектов при работе с сайтом. Чувствовать по космическим каналам то удовольствие, которое получает пользователь, когда говорит: «Ох, вот это интерфейс, ядрёна мать!»
Конечно, напоследок у меня немного реальности. Это четко спланированная замануха совершенно случайно так совпало. Дело в том, что нам сейчас остро необходим фронт-энд разработчик. И мы его ищем. Да, мы только запускаемся (меня тошнит от слова «стартап»). Но, тем не менее, готовы платить за реализацию прикладных задач. Однако, интересуют более те, разумеется, кому проект интересен в перспективе.
Так вот, нужен нам фронт-энд разработчик! js, jquerry, less. А попадаются всякие верстальщики. Люди без глубокого понимания поведения тех или иных элементов. Такие вот русские индусы. :(
Еси чё, посоны — скайп в профиле.

Худший ответ:
Вы верстальщик, но не фронтендер. Фронтенд это по большей части javascript, и не jquery, а pure js +/or backbone, angular, etc. По моему опыту, написать крутой живой одностраничный интерфейс огромного сайта на чистом js довольно приличная задача (учитывая IE6). Я не писал сайтов на PHP до фронта, боялся, что на порядки сложнее - оказалось, что средний сайт типа хабра может чуть сложнее, но не так, чтобы избегать такой задачи. Делайте вывод что такое фронтенд. Нормальный фронтендщик осилит верстку большого сайта не более чем за полчача, без шаблонов - только notepad++ и emmet (как пример, вообще по нормальному IDE).
Вопрос: Как перенести настройки темы Wordpress на хостинг?

Лучший ответ:
Где то в настройках должен быть пункт экспорт настроек(нужно с локальной версии делать). Затем соответственно сделать импорт. Где этот пункт находится точно не могу сказать. Помню что сталкивался с такой же проблемой.

Худший ответ:
Забейте на ручные переносы. Возьмите плагин Duplicator - он вам всё перенесёт без остатка
Вопрос: Какую книгу выбрать?

Лучший ответ:
Для начала - любой учебник по С++, кроме учебников по VisualC++ и BorlandC++ (эти плохому научат).
Потому что С++ имеет такую особенность: 80% языка принципиально непонятны и чужды тому, кто еще не освоил базовые 20% и не имеет достаточного практического опыта их применения. 
Вам нужно самостоятельно написать километры говнокода, чтобы понять правильный подход к ООП в С++, шаблоны, достоинства ссылок перед указателями, применение const и т.п. Никакой учебник тут не поможет.

Худший ответ:
Игорь Соколов искать не пробовали? Видел несколько таких вопросов, например Какую лучше взять книгу по C++ для начинающего? Выбор книги для новичка в с++. Какая из этих двух подойдет лучше?
Вопрос: Агрегатор и парсер syslog логов?

Лучший ответ:
Logstash+kibana, graylog2, sentry, тысячи их. 
Есть и коммерческие с бесплатными версиями: Splunk, HP-Arcsight logger, LogRythm, LogLogic и т.п.

Худший ответ:
Здесь последняя статья по поводу логов и отправки уведомлений
https://habrahabr.ru/post/345968/
Вопрос: Как называется элемент сайта?

Лучший ответ:
imakewebthings.github.com/jquery-waypoints/sticky-elements/
imakewebthings.github.com/jquery-waypoints/#examples

С доками думаю разберешься, и примеры там есть

Худший ответ:
можно это назвать «плавающий блок»
Вопрос: Создание 3D презентации с ffmpeg

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

Худший ответ:
Вам нужно извлечь альфаканал, привести его к монохромному виду, при помощи программы определить границы прозрачной (и прямоугольной!) области в каждом кадре, и сопоставить смену координат с номером кадра/временем. На чем нить типа PHP+ImageMagick это можно сделать. После этого формировать видео из фоток в соответствии с этими данными. С этим (в теории) сам ffmpeg справится, ему надо будет подставить соотв параметры в командную строку. Боюсь только представить ее длину =)
Вопрос: Как оптимизировать  PHP код?

Лучший ответ:
WAT? зачем? Есть APC/opcache, которые хранят уже готовые к выполнению опкоды.
Или вам минификацию html?

Худший ответ:
Перед тем как осуществлять оптимизацию или сжатие файла PHP задайтесь вопросом! А в будущем, если понадобится доработать функционал или внести изменения в код сможете ли вы разобраться с тем, что получите на выходе!
Сервис: htmlcompressor.com/compressor
Вопрос: Сложный проект одним или двумя словами?

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

Худший ответ:
эм, "Сложный проект"?
Не совсем понятно что вы ищите, может это?
Вопрос: Как обернуть каждое слово в строке в span, оставляя при этом на месте br?

Лучший ответ:
https://jsfiddle.net/a3eo68qo/5/var mainSlideWordWrap = function() {
  // Переберём все блоки контента и обернём слова в span
  $('.mainSlideContent').each(function() {
    var result = $(this).html().replace(/[\wа-яё]+/gim, function(s) {
      return s === "br" ? s : "<span>" + s + "</span>"
    });
    
    console.log('<span class="mainSlideWordWrap">'+ result + '</span>');
  });
};

mainSlideWordWrap();

Худший ответ:
Проверять содержимое slideText[i] и если там 'br' не оборачивать
Вопрос: Как вывести все подкатегории при выборе категории?

Лучший ответ:
Как вариант, при выборе первого collection_select отправлять ajax запрос на сервер с параметром category_id, который вернет, например, json всех подкатегорий. А уже потом их вставлять с помощью JS в форму.

Худший ответ:
Если кому-то понадобится:
view:
<%= f.collection_select :category_id, Category.all, :id, :title, {prompt: 'Выберите категория'} %>
<%= f.collection_select :subcategory_id, Subcategory.all, :id, :title, {prompt: 'Выберите подкатегорию'} %>
update_sub_categories.js (в одной папке со вьюхой):
$("#booking_subcategory_id").empty().append("<%= escape_javascript(render(:partial => 'subcategory', :collection => @cats, :as => :cat)) %>");
routes.rb:
get 'update_sub_categories' => 'bookings#update_sub_categories'
get 'bookings/update_sub_categories' => 'bookings#update_sub_categories'
контроллер:
def update_sub_categories
    @cats = Subcategory.where(category_id: params[:category_id]).all
    respond_with(@cats)
  end
_subcategory.html.erb:
<%= cat.title %>
Вопрос: Как «извне» определить вызов другой функции?

Лучший ответ:
Попробуйте написать обертку:var go = function(arg) {
  alert('Hello, ' + arg);
};

var users = [];

var _go = go;
go = function(arg) {
  users.push(arg);
  return _go(arg);
};

go('WolF');
go('Alex');
go('John');

alert(users.join(' | '));

Худший ответ:
а вызывать из своего кода Вы ее можете?
Вопрос: На что способен D945GCLF2?

Лучший ответ:
как по мне, atom совсем не игрок и лучше уже смотреть в сторону плат с распаянным celeron-ом.
например, ASRock Q1900B-ITX стоит в районе $70-75, за которые вы получаете уже более-менее современную машинку: 4х-коровый celeron j1900 2GHz с графикой, sata-3, usb-3 и до 16Gb DDR3.

Худший ответ:
Потянет с определенным скрыпом. И игры старинные потянет. Картинку с троллейбусом нагуглите и покажите себе самостоятельно.
Вопрос: Cтатистика по irc серверам

Лучший ответ:
Взгляните, возможно это то, что вы ищите searchirc.com/networks Есть статистика по количеству пользователей, каналов, предоставляемым сервисам, некоторая информация о сети, есть так же раздел истории сети конкретной.

Худший ответ:
Ух ты, кваканет уделала фринод оО
Вопрос: Безопасно ли запускать виртуальную машину с реальной партиции?

Лучший ответ:
Желательно не давать двум виртуальным машинам использовать один и тот же раздел одновременно. Насчет остального проблем быть не должно.

Худший ответ:
Желательно не давать двум виртуальным машинам использовать один и тот же раздел одновременно. Насчет остального проблем быть не должно.
Вопрос: Почему Ember выводит данные только после перезагрузки страницы?

Лучший ответ:
При клике на категорию в каталоге, в качестве модели в роут передается сама модель категории (как у вас app/router.js и написано), и стадия загрузки модели пропускается, так как модель уже есть.
Когда вы перезагружаете страницу, то модель роута грузить как ей и полагается так как это не переход по ссылке.
Потому и отличия.
Вам в link-to нужно передавать не модель категории, а его id если хотите чтобы model в роуте выполнялся всегда.

Худший ответ:
Ну или в место findAll использовать query, так как первое в случае если модель уже в store повторно в сеть не лезет, ваш К.О.
Вопрос: Стоит ли уходить с фрилансорской конторки?

Лучший ответ:
"через год мы уже будем что-то получать в виде зар. платы, но не факт." - никогда не понимал, зачем работать бесплатно, если те же знания можно получать не работая? Ладно ваша "контора", получают бесплатную рабочую силу, но вам-то какой смысл? Вы можете потратить это время:
1. Работая в конторе, которая будет платить стажерам (потому что черт возьми, работа стажера тоже приносит фирме прибыль, пускай и несоразмерную с работой мидла или сениора и отнимает время у коллег, но приносит). Будущее стоит связывать с компаниями, способными потратить деньги на обучение специалистов, а не теми, кто обещает что-то через год, да и то не факт;
2. Устроиться на другую работу, не связанную с вашей непосредственной деятельностью и обучаться в оставшиеся промежутки времени (выходные например). Если устроитесь охранником или сторожем, то сможете обучаться прямо на месте работы. Я так работая в магазине освоил веб-разработку в достаточной мере, чтобы уйти на фриланс, парень знакомый работая охранником завел паблик по продаже игрушек и в итоге тот вырос в небольшой магазин в оффлайне. Так и деньги будете иметь и навык прокачивать.
3. Просто посвятить время самообразованию дома. Все равно вам деньги не платят. При этом сможете изучать все что угодно, а не задачу, которая вам неинтересна (в которой не видите потенциала).
А получение опыта в конторе посредством просмотра ютуб роликов - это сильно. Опыт в конторе - это когда с тобой сидят прокачанные ребята и говорят: "вот тут лучше так не делать, потому что в нашей задаче это приведет к тому-то в будущем, лучше сделай так", а не просмотры ютуб роликов.
И да, на всякий случай, не идите на фриланс, пока опыта не набрались, тут и так полно говнокода.

Худший ответ:
если там есть кто то кто может ответить на вопросы пока походи, а сам ищи мелкие заказы ))
Вопрос: Возможен ли «перехват» домена при делегировании на DNS Яндекса

Лучший ответ:
Вообще то при переносе требуется подтвердить что ты владелец домена (файлом и т.д.) а потом он его только примет, так что нет.

Худший ответ:
Вопрос был задан более 3х лет назад, но напишу ответ. Мало ли кому пригодится.
"Перехват" такого рода как описан в вопросе возможен на любом публичном DNS-сервере. У Яндекса для исправления и подтверждения прав при ошибочном делегировании существует алгоритм. Если Вы делегировали домен на NS Яндекса и через пару дней права на него не подтверждены сделайте несколько действий:Обращаемся в тех.поддержку ПДД (почты для домена) с письмом о просьбе подтверждения правСотрудник ТП делает WHOIS запрос и видит почту администратора домена или ссылку для связи с ним. Через эту форму ТП отправляет код, который вы должны получить на почту, которую указывали при регистрации домена. Дожидаемся полученияСообщаем этот код сотруднику ТП в тикетеНаслаждаемся подключенным доменом к ПДД
Вопрос: Совместимы ли эти блок питания и материнская плата?

Лучший ответ:
Подойдет. 20+4 это блок из 20pin + блок с 4pin,
В БП это сделано для универсальности, некоторым материнкам нужно питание 20pin, некоторым 24.
PS: с CPU аналогично.
Картинки:
youpk.ru/wp-content/uploads/2012/09/24-kontakta.jpg
www.playtool.com/pages/psuconnectors/eps4plus4.jpg

Худший ответ:
20+4 означает, что коннектор разламывается на 2:    20 и 4 пина для совместимости с оч древними 20пиновыми материнками. В остальном это то же самое.
4+4 означает что можно использовать 4 коннетора для питания старых процессоров и 8(4+4) для тех что поновее.
Вопрос: Почему так тупит админка Wordpress?

Лучший ответ:
1. Перейти на Nginx, последняя версия ветки mainline
2. Перейти на последнюю версию PHP5-FPM с OPcache
3. Перейти на MariaDB 10
4. Установить Memcached, модуль php5-memcached (c буквой d в конце, НЕ php5-memcache)
5. Для профита от п.4 установить плагин Memcached Redux
Можно в обратном порядке - Memcached, MariaDB, свежий PHP c OPcache, потом уже Nginx. Кроме того, неплохо бы протюнить настройки MySQL (или MariaDB) - особенно кеши. Но для этого надо проработать в штатном режиме хотя бы недели две, чтобы накопилась статистика. Лучше месяц.
У вас, скорее всего, затык в связке php-mysql, запросы обрабатываются долго. Попробуйте поставить плагин Query Monitor и посмотреть узкие места.

Худший ответ:
есть такое, на сохранение 2-3 секунды.
Вопрос: Как разблокировать microSD?

Лучший ответ:
Постановка вопроса таким образом не подразумевает получение ответа.
P.S.   Да, а РНР тут - каким боком?

Худший ответ:
Вам нужно просто её разблокировать и все!
Вопрос: Обработка запросов в базах данных?

Лучший ответ:
Вот, например, как это делается в Oracle Database: SQL Statement Execution.
По PostgreSQL можно начать вот отсюда: Overview of PostgreSQL Internals.

Худший ответ:
Вам сильно повезло. Гугл по каждому из шагов гигабайты документов находит. :)
Вопрос: Усиление gsm сигнала?

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

Худший ответ:
Кроме покупки активной антенны бюджетного ничего не вижу. Только с продавцом договариваться, чтобы можно было взять «на попробовать», с возвратом, если не спасёт.
Кстати, оглядитесь, возможно, рядом есть мощный источник помех.
Вопрос: Аналогия switch

Лучший ответ:
Скорее всего или одинаково, или свитч эффективнее.
Производительность свитча от размера не зависит, поскольку всё равно там таблица переходов.
Если цель поднять производительность, я бы посоветовал начать с профилирования и поиска реально тормозящих мест; замена свитча на массив функций в этом отношении ничего не даст.

Худший ответ:
1) о какой эффективности вопрос: быстродействие, размер кода, понятность кода?
2) предложенный код однозначно дополнить проверкой допустимого диапазона i.