Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как распаковать многомерный список?

Лучший ответ:
Если глубина заранее неизвестна или варьируется, то проще всего сделать рекурсией. А чтобы не тратить лишнюю память, генераторами:
def flatten(x):
    if isinstance(x, list):
        for q in x:
            yield from flatten(q)
    else:
        yield x

>>> list(flatten([1,2,3, [1,2, [3, [[[[4]]]]]]]))
[1, 2, 3, 1, 2, 3, 4]

Худший ответ:
Рекурсия.
Итерируете по всем элементам списка проверяете 'а не список ли текущий элемент', если нет добавляете его к list2, если же да - проводите эту же операцию уже по этому списку
Вопрос: Безопасно ли отправлять данные по HTTPS?

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

Если злоумышленник не установит свой сертификат, то пользователь получит соответствующее сообщение, перед тем, как сайт будет открыт. Если пользователь проигнорирует все предупреждения и пройдёт через много уровней "обороны" с нажатием кнопок "да, я уверен, пустите меня", то злоумышленник точно также сможет перехватить.

В остальном всё безопасно. Вдвойне безопасно, если клиент проверяет, что подключение произошло именно с тем сертификатом, который ожидается.

В целом https-у вполне доверяют банковскую и всякую секретную государственную информацию (в этом случае вместо обычных сертификатов и шифрования используют специальные, но всё же)

Худший ответ:
Следует также помнить, что TLS защищает только передаваемый трафик. Если вредоносное ПО установлено на клиенте, или администратор сервера недобросовестный, либо сервер под контролем спецслужб - то трафик всё равно будет перехвачен, но не посередине, а в начальной или конечной точке.
Вопрос: Почему все setup мыльные и почему в кс го при высоком фпс игра идёт рывками?

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

На счёт cs go причины могут быть разные - надо смотреть.
Может ОЗУ не хватает, может перегрев происходит из-за высокого фпса, может ещё что.
Зависит ешё от того, что ты называешь рывками

Худший ответ:
По поводу размытия:

Откройте Параметры>Дисплей>О системе/О программе>Дополнительные настройки системы>Быстродействие - параметры>Обеспечить наилучший вид

Возможно это поможет устранить проблему, гарантий нет
Вопрос: Какие есть альтернативы хранению пароля в коде?

Лучший ответ:
Если вы хотите хранить пароль локально (на счет микроконтроллеров не знаю), то есть такая вещь как TPM модуль, можете еще посмотреть ответы на этот вопрос Как правильно хранить ключ шифрования для десктопных приложений? .

Худший ответ:
Зависит от контроллера. Большинство микросхем поддерживает Lock-Bit - после чего программатором прошивку считать практически невозможно (или очень сложно).
Вопрос: Что эффективнее использовать: SELECT COUNT или rowsCount() (PDO)?

Лучший ответ:
Это разные вещи, поведение PDOStatement::rowCount() для операторов, создающих наборы результатов, таких как SELECT, поведение не определено и может быть различным для каждого драйвера.

Худший ответ:
Нашел ответ, что эффективнее использовать SELECT COUNT

https://stackoverflow.com/questions/12864557/selec...
Вопрос: Рекомендуйте хорошую книгу про linux и про сети, на Русском языке?

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

Ну вот например - лучшая из известных мне книг. Правда цена у нее злобная, как голодная сторожевая собака

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

Лучший ответ:
ну так добавьте к регулярке кол-во матчей.
[a-z]{5,}

Худший ответ:
<?php
$str1 = "asas232%";
$str2 = "asZAZAas232%";

if(preg_match('![a-zA-Zа-яА-ЯёЁ]{5,}!usi', $str1)) {
    echo 'Great! $str1';
}

if(preg_match('![a-zA-Zа-яА-ЯёЁ]{5,}!usi', $str2)) {
    echo 'Great! $str2';
}
Вопрос: Можно ли скачать андроид документацию в fb2?

Лучший ответ:
fb2 плохо подходит для документации, так схемы и код не поддаются масштабированию. Для документации нужен 10-дюймовый экран, на котором можно читать pdf, свёрстанный под A4.

Худший ответ:
Как уже выше написали: FB2 - текстовый формат для прозы, с возможностью вставить обложки, картинки заголовков и тп. А также кастомизации выводимых шрифтов под любое устройство.
Документация имеет жесткий сверстанный формат, тк. множество частей выделены разными стилями и находятся в конкретной, определенной автором/редактором последовательности месте.
Поэтому электронная документация поставляется в уже сверстанных форматах. чаще стандартом является PDF.
Для чтения документации хороши 10-12" электронные книги желательно с трехцветным (белый, черный, красный) EINK экраном, но это не дешевое удовольствие.
Да и то на книжках обычно крайне урезанные просмоторщики не позволяющие быстро перескакивать по разделам, закладкам, оставлять пометки и тд, что затрудняет работу с документацией.
Вопрос: Как оптимизировать if else?

Лучший ответ:
Упростить можно, но по хорошему тут надо переделывать всё, и HTML, и CSS.
Например, блок
ramka5.classList.remove('activeramk2');
 ramka5.classList.remove('activeramk3');
   ramka5.classList.add('activeramk4');
  ramka5.classList.remove('activeramk5');
    ramka5.classList.remove('activeramk6');
  ramka5.classList.remove('activeramk7');
  ramka5.classList.remove('activeramk8');
  ramka5.classList.remove('activeramk9'); переделывается заменой класса на значение атрибута.
ramka5.dataset.activeBorder = '4'; и изменением в css селектора .activeramk4 на [data-active-border="4"]

Худший ответ:
Для начала разберитесь - вы используете jQuery или нативный JS? 
Далее для себя напишите алгоритм того, что и как должен выполнять будущий код. 
После этого сделайте демо на codepen или jsfiddle
И вот тогда можете структурированно, четко и с примерами задавать вопросы.
Вопрос: Возможно ли использование общего раздела между Windows и Linux?

Лучший ответ:
30гб под систему /
30гб под хомяк
остальное/файлопомойку монтировать куды тебе нужно.
почему так?
да патаму чта забэкапить 30гб проще,
я делаю только бэкап хомяка (раз в три года ))), т.к. уже всё отлажено-отстроено
и ничего другого, я в принципе не пользую,
а систему проще переставить с нуля (лет за 7 , пока сижу на линухе, переустанавливал всего пару-тройку раз (и то сам виноват =  эксперементировал ))) 
раз в месяц делаю бэкапы профиля браузеров хрома и лисы.
отдельно есть бэкапы виртуалок.
отдельно wine (лет пять не менял - точно.
раздел с файлопомойкой лучше форматировать в exfat, тогда его будет видно и под виндой
swap - 500мб в файле (при 6гб оперативы, используется очень редко
зы
у меня ssd 120гб
и хватает за глаза
весь мусор храню в облаках (в своё время на мылру выкружил 1тер )))
+яндекс (48гб
+гугл (не пользую, поэтому не помню сколько там, но 10гб должно быть
+бросай-коропка (dropbox) тоже гектар 100
этого и за фсю жизнь не заполнить )))

Худший ответ:
Если нужен доступ из windows, выбор файловых систем ограничен fat32/ntfs/exfat, доступ к ним из linux есть, с оговорками по производительности (ntfs на hdd будет работать из linux заметно медленнее, но с ssd проблем не будет)

Для linux достаточно гигабайт 20, на самом деле linux это не что то высеченное из камня - это конструктор, можно собрать рабочую систему и на пару гигабайт, а можно разбабахать на сотни гигабайт, все от задач зависит.

По поводу места, windows будет видеть разделы linux как неизвестная занятая область, трогать их не будет (кроме efi boot, см ниже), linux будет видеть все без проблем. Разделы размечать можно когда угодно, хоть сразу хоть потом, без разницы.

Совет, не устанавливай загрузчик grub (и/или efi) для запуска Linux и windows на один и тот же диск, линуксу пофиг но вот windows периодически показывает зубы, к примеру может с очередным обновлением затереть загрузчик linux, такое было. Решение - установить загрузчик linux на другой физический раздел или даже флешку. Загрузчик это grub-install и efi boot, все остальное можешь размещать где угодно, не подерутся.

Да, поковыряв вручную можно установить в меню загрузки windows пункт для linux или наоборот (grub сам находит windows и добавляет его в меню загрузки), но... проще на флешку.
Вопрос: Как подобрать для ноутбука ИБП с большой автономной работой?

Лучший ответ:
Более компактным и экономичным решением будет Powerbank с Type-C, только нужно смотреть, чтобы он был достаточно мощным - мой банк на 20А*ч например, мой ноут (тоже 180Вт), не вытягивает. 

Вот два банка последовательно и регулятор - точно справятся.

Худший ответ:
ВОт и ищите ИБП на 600 например Ватт. 
APC есть неплохие
Вопрос: Упала скорость загрузки моего сайта после начала СВО на украине, как восстановить?

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

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

Лучший ответ:
Лучше один раз увидеть...


Худший ответ:
Для начала надо выучить значение слова риторический
Вопрос: Почему TypeScript не допускает методы DOM элементов для Vue Ref'ов?

Лучший ответ:
Property 'scrollTo' does not exist on type 'Vue | Element | Vue[] | Element[]'
Ну так всё же написано )) Тип рефа Vue | Element | Vue[] | Element[]
Если точно знаете что это за элемент, то попробуйте так:
(this.$refs.list as HTMLDivElement).scrollTo(0, 0)

Худший ответ:
Также отличное решение в дополнение к ответу Алексей Ярков 
import Vue, { VueConstructor, VNode} from 'vue'

interface Refs {
  $refs: {
    list: HTMLElement,
    input: HTMLInputElement,
  }
}

export default (Vue as VueConstructor<Vue & Refs>).extend({
  ...
  methods: {
    dropdownTrigger (e: Event | undefined) {
      this.$refs.list.scrollTo(0, 0) // наконец то отлично отрабатывает
    }
  }
  ...
})
Вопрос: Windows 10 при подключени usb уходит в аут. Почему?

Лучший ответ:
С вероятностью 90% это физическая проблема с портом (точнее с разъёмом в корпусе). Обычно решается так: не использовать проблемный порт; чтобы не использовать по забывчивости, можно заклеить скотчем.
Другие методы:
Взять паяльник и исправить, если исправляется. :) Но таким мало кто занимается.
Купить новый корпус и перекидать всё железо из старого в новый корпус.

Оставшиеся 10% - это тоже физическая проблема, но на материнской плате. Первый способ решения (не использовать проблемный порт) работает и в этом случае.

Худший ответ:
В общем, у меня появилось немного времени и я переустановил Винду.
И всё. Пока данная проблема не наблюдается.
Но хотелось бы понять, как такой глюк системы вообще мог произойти.
Вопрос: В чем преимущества Route Model Binding?

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

Худший ответ:
К посту jazzus который не поленился и написал все что должен был сказать я, когда предлагал route model binding, добавлю

1. А нахрен в этом конкретном случае делать loadRelation('reviews')  - оно автоматом подгрузится при использовании во вьюхе $post->reviews. Eager loading имеет смысл когда вы грузите кучу моделей и у них надо подгрузить отношение - что бы избежать N+1. А в этом случае какое N+1 мы избегаем? Это еще имело смысл в случае loadRelation('reviews.user') - но просто loadRelation('reviews') - нет. Ну и всегда остается вариант когда вы with запихиваете на момент resolve model.

2. Вариант проверки статуса вполне возможно вообще выносить на уровень middleware для фронта через глобал скоуп, я так понимаю у вас этот статус сродни soft deletes

3. На счет количества файлов и разноса функционала. Я так понимаю у вас table-driven development. Ради интереса наберите Domain-Driven Development в ютубе и посмотрите как там. ну к примеру https://www.youtube.com/watch?v=7HXIrEsmlzM&ab_cha...
Вопрос: Backup системы Windows server как проверить работоспособность?

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

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

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

Раз в месяц заряжать, менять силикагель и обновлять маскировку.

Если обнаружили запчасти айфона в супчике, значит, замаскировали плохо.

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

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

Лучший ответ:
Мониторинг должен быть комплексным. Вы сейчас только нашли виновника торжества - теперь настала пора лезть в потроха СУБД, отслеживать запросы, при необходимости профилировать или копать в сторону приложения, эти запросы генерирующие.

А может у вас просто СУБД фигово настроена, кто знает.

Худший ответ:
Тогда нужно переключиться на средства мониторинга MySQL.
Виновником может быть запрос наподобиеselect * from users
без limit.
При наличии большого количества записей может забить весь канал.
Такой запрос от пользователя с достаточными привилегиями покажет какие текущие запросы выполняются долго и что выполняется в тот момент, включая операции по передаче данных по сети.
show full processlist
Вопрос: Как теоретически возможна установка зашифрованного канала?

Лучший ответ:
Это не совсем так работает. При симметричном шифровании да, вы должны обменяться ключами через доверенную среду. При не симметричном шифровании, есть открытый ключ и закрытый ключ, один из них шифрует данные, другой расшифровывает. Например, вы публикуете ключ шифрования, кто угодно может зашифровать данные, но расшифровать обратно можете только вы. Если я передам вам по открытым каналам шифрующий ключ, то вы можете быть уверены, что расшифровать ваше сообщение сможет только то, кто вам этот ключ передал( при сохранении тайны закрытого ключа ).
Здесь может быть реализована mitm атака, когда вам передает ключ не конечный получатель, а промежуточный. Для таких случаев вводят доверенную третью сторону, доверие которой устанавливается "предварительно".

Худший ответ:
то есть ключи видны провайдеру при нашем первичном взаимодейтсвии
Нет.
Гуглите "асимметричная криптография". Она как раз и придумана для установления соединения по прослушиваемому каналу. В лоб в настоящий момент сломать https невозможно, поэтому и идут в ход всяческие хитрости с установкой госсертификатов :)
Но с тором пример неудачный - само по себе использование тора оно уже маркирует Вас как человека, за которым стоит последить...
Вопрос: Что делать если заказчик затягивает оплату?

Лучший ответ:
Во-первых, у Вас есть письменно зафиксированные обязательства - Ваши и заказчика?
В договоре?
Если нет, то нужно зафиксировать - объем, сроки выполнения Ваших обязательств, сроки оплаты в разбивку по этапам. Очень четко. И удостоверить подписями, печатями. Желательно если подписывает кто-то по доверенности, получить и копию этой самой доверенности. Нотариальную. 
И никаких подписей-факсимиле! Гелиевой ручкой тоже не подписывать.
Желательно, чтобы у Вас были подписанные клиентом документы по приемке отдельных объемов Вашей работы. Точнее это обязательно нужно - зафиксировать сам факт (или факты) выполнения Вами каждого задания.
Иначе даже при наличии договора будет трудно доказать именно выполнение работы и ее приемку.
Договор читайте внимательно, очень внимательно. На предмет подвоха и всяких подводных камней не в Вашу пользу.
Во-вторых, Вам нужно четко для себя выстроить структуру задач.
Как я поняла, у Вас есть выполненные мелкие задачи. Есть по ним документ о выполнении и приемке?
Если нет - нужно оформлять. Тут Вы и увидите многое о заказчике.
Далее, есть большая задача. Она разбита на этапы? Как будет происходить приемка и когда?
Это тоже в условия договора. Так же как и условия по оплате.
И третье - дописки. Это отдельные задачи, которые также должны быть зафикированы. Как дополнительные соглашения к основному договору.
Это все минимальный фундамент для Вашей зашиты.
Обычно, по практике суд встает на сторону работника.
Но без всех описанных документов Вы предельно уязвимы для заказчика.
А вот эти отговорки - когда-нибудь завтра... Очень настораживают.

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

Лучший ответ:
Вместо:

joinedFile.open("D:/бот/joined.txt", 'a')

(который всё равно выдаст ошибку, потому что у файлового объекта нет метода open) сделать:

joinedFile = open("D:/бот/joined.txt", 'a')

Худший ответ:
Правильная рассылка пользователям телеграм - это спецгруппа «Группа желающих получать рассылку от моего бота». Кто подпишется на него - тот и получит рассылку в виде сообщения в группе. Дёшево, сердито и прямо.
Вопрос: Почему некоторые сайты определяют оригинальный адрес (вместо VPN)?

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

Худший ответ:
Скорее всего этот ВПН открывает только заблокированные сайты через себя, а всё остальное нет.
По крайней мере так работают многие ВПн для обхода блокировок
Вопрос: Опасно ли на сервере использовать http-зеркала репозиториев, вместо https? Есть ли риск того, что пакеты могут быть подделаны?

Лучший ответ:
Безопасно, если вы не отключали проверку GPG подписей

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

Лучший ответ:
Разместить программу на компьютере который не засыпает. Есть heroku, а ещё можно купить виртуалку.

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

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

через прокси тоже можно. тогда гуголь заблокирует учетную запись целиком, и проблема отключения рекламы станет неактуальной.

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

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

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

Лучший ответ:
Если вы Битрикс 1с специалист и не знаете 1с, то термин "внедрение 1с"  будет слишким широким для вас. 1с поделена на несколько ниш.  Специалисты 1с как правило охватывают пару-тройку из этотого. речь идет о конфигурациях 1с.  Кто то умеет торговлю внедрять, (УТ11. УТ10.3), кто то ERP2, кто то Зарплату (ЗУП), кто то всего понемножку. чтобы внедрить 1с недостаточно просто скачать инсталляшку и установить. Там надо еще помогать клиенту настраивать учет. множество настроек.  Когда надо внедрить 1с, то клиент обращается к 1с франчайзи компаниям и обрисовывет свою задачу.  Под его нужды продежкт менеджер или кто-нибудь еще выбирает конфигурацию 1с и назначает нужных специалистов под нее.  Ну и оговариваются моменты синхронизации 1с с имеющимися сервисами или системами клиента.    а всё знают только очень опытные специалисты, которые поработали в разных местах в том числе и в разных франчайзях. Они исходя из своих знаний могут вам порекомендовать что то.  но внедрять лучше если будет узкоспециализированный специалист каждый вид конфигурации 1с. Таких и отправляют.   Под бухгалтерию один, под зарплату другой, под производство третий.

При этом нужно иметь ввиду, что внедрение подразумевает в себе не только настройки параметров 1с через дружественное меню, но и доработки под нужды клиента. И если программист 1с не владеет в совершенстве конкретной конфигурацией (так называются программы написанные под 1с) то он может понаписать доп функционала, а потом выяснится что там уже такое предусмотрено и можно было бы потратить один час чтобы все настроить и дописать пару строк кода. 1с это целое направление где на каждое поднаправление свой специалист.

Худший ответ:
Я бы использовал гугл, чтобы найти ответ, но я не могу точно определить, то что меня интересуетОх...
https://novosibirsk.1cbit.ru/blog/plan-vnedreniya-...
https://mastersoft.ru/blog/etapy-vnedreniya-1s/
www.1c-victory.ru/vnedrenie-1c/tekhnologiya-proekt...
https://wiseadvice-it.ru/o-kompanii/blog/articles/...
https://sky1c.ru/node/95
К примеру, есть номенклатура и нужно ли ответственному за внедрение или установку человеку, лично вводить каждую номенклатуру в базу или это работа бухгалтера (менеджера).Стоимость рабочего времени 1С-специалиста довольно высока (иногда в разы выше стоимости времени бухгалтера\менеджера). Если компания согласна оплачивать так дорого такую элементарную работу, за которую можно посадить кого угодно, и если специалиста не оскорбляет такая работа (зависит от конкретного человека), то почему бы нет.

P.S. Из вашего вопроса непонятно, имеется в виду штатный 1С-программист или имеется в виду специалист сторонней организации (так называемые франчи), выполняющий разовую работу по договору.
Вопрос: Как решит вопрос с учеткой?

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

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

Лучший ответ:
У вас в ячейке текст. Значит сортировка идёт по правилу текста, а не цифр. Чтобы отсортировать так, как вы хотите - нужно отделить цифру от текста, например на ячейку ниже, и сортировать по ячейкам с цифрами.

Худший ответ:
Пример в Таблице https://docs.google.com/spreadsheets/d/1Up40Um17xR...

Формула не очень симпатичная, но простая



=INDEX(TRANSPOSE(SORT(
  {IFNA(--REGEXEXTRACT(TRANSPOSE(D5:H5);"^\d+");TRANSPOSE(D5:H5))\TRANSPOSE(D5:H5)};
1;1));2)
Вопрос: Законен ли парсинг БД ФНС?

Лучший ответ:
Законен ли парсинг БД ФНС?Да.
Данные открыты - любой может их получить, берите и получайте.
Но если парсинг создаст большую нагрузку на сервера и затруднит их нормальную работу, то это может быть расценено как DDoS атака, а там уж в зависимости от последствий можно пару статей из УК или ГК подобрать.

Поэтому парсите на здоровье, но не увлекайтесь отправкой запросов разом с тысячи хостов.

Худший ответ:
Нет. Всё легально.
А вообще единственное официальное апи - это FTP