Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: SetTimeOut возвращает отрицательное значение?

Лучший ответ:
8.4 TimersEach object that implements the WindowTimers interface has a list of active timers. Each entry in this lists is identified by a number, which must be unique within the list for the lifetime of the object that implements the WindowTimers interface.
Это число и оно должно быть уникальным в пределах данного объекта, реализующего этот интерфейс. То есть спека не запрещает ему быть отрицательным. То есть это implementation specific. 
Я бы не стал полагаться, что оно может быть отрицательным или только положительным. А вам критично разграничивать?

Худший ответ:
static int timeoutId()
{
    static int lastUsedTimeoutId = 0;
    ++lastUsedTimeoutId;
    // Avoid wraparound going negative on us.
    if (lastUsedTimeoutId <= 0)
        lastUsedTimeoutId = 1;
    return lastUsedTimeoutId;
}
исходя из этого кода - негативным timeoutID быть не может. Там есть проверка, если все id-шки закончились и пошло переполнение - то ресетится в единицу. Но это хром. В других браузерах может быть все совсем по другому. Главное не привязывать логику к формату timeoutID и все будет хорошо.
Вопрос: Как разработать плагин для WordPress?

Лучший ответ:
сюда гляньте

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

Лучший ответ:
Крути, верти на здоровье. 
owlgraphic.com/owlcarousel

Худший ответ:
С недавних пор использую:
smoothdivscroll.com
Просто в использование и много настроек.
Вопрос: Как спарсить xml страничку?

Лучший ответ:
Как я понимаю, Вам надо достать курс белорусского рубля. Это несложно сделать используя xpath с помощью библиотеки lxml.import urllib

import lxml.etree as etree


def get_xml(url):
    response = urllib.urlopen(url)
    return response.read()

if __name__ == '__main__':
    xml = get_xml('http://www.cbr.ru/scripts/XML_daily.asp?date_req=02/03/2002')

    xml_data = etree.fromstring(xml)
    bel_rub = xml_data.xpath("/ValCurs/Valute[@ID='R01090']/Value")[0].text

    print(bel_rub)

Худший ответ:
например www.crummy.com/software/BeautifulSoup/bs4/doc
Вопрос: Как реализовать ленту новостей для социальной сети?

Лучший ответ:
Ну, join'ить это дело можно (подозреваю что там ещё и union'ом прийдётся заливать), но так обычно не делают, потому что это решение потом невозможно будет отмасштабировать. Запрос тяжелый, кеширование поможет плохо, так как активность большая и кеш часто сбрасываться будет и база будет дергаться не многим меньше, ну и если базу надо распилить на 2 и больше серверов, то останемся лапу сосать с join'ами.
Для начала можно сделать так - для конкретного `user_id` (владелец новостной ленты):
1) Первым запросом стягиваем айди всех друзей
2) Вторым запросом стягиваем айди всех групп, в которых состоит
3) Третьим запросом стягиваем из comments все записи WHERE `user_id` IN (группы + друзья) ORDER BY/LIMIT по вкусу.
Преимущества:
Меньшая нагрузка на базу, она будет делать меньше дорогостоящих операций с временными таблицами. По индексам быстрее будет отдавать результат.
Первые 2 запроса можно спокойно закешировать, так как добавляются/удаляются друзья гораздо реже, чем сами посты. Потому по сути сводится всё к одному запросу на сами посты без join'ов.
Минусы:
Больше кода на обработку 3х запросов. Чуть более длительное выполнения скрипта, что, в принципе, не будет ощущаться пользователем, и вообще будет не справедливо, если первые 2 запроса кешировать.
Но если стоит задача масштабироваться, то и такого подхода к делу недостаточно. Там уже надо будет скорее всего жертвовать лишним местом, чтобы сократить расходы на собирание размазанных данных по всем серверам баз, например, вести отдельную таблицу ленты новостей для каждого пользователя, которая будет агрегировать все необходимые айдишники.UPD: ...как и указал @jarvis

Худший ответ:
Я делал через очередь сообщений, то есть сообщение человека или группы добавляется в ленты каждого его подписчика(многократно)
Все пока одна таблица(пока одна, потом придется увеличить в процессе масштабирования) и такой запрос на получение ленты пользователя с user_id:  select * from 'feeds_table' where user_id=id пользователя...., а сама таблица feeds содержит такие поля  как user_id( пользователь, которому принадлежит лента, author_id - id автора(кто оставил запись, без разницы группа или пользователь), post (сама запись и вложения). Таким образом запись многократно дублируется, но зато позволяет быстро и в один простой запрос получать ленту.
Вопрос: Почему продажи через Google Play идут где угодно, но только не в США?

Лучший ответ:
Американцы пользуются iPhone`ами.

Худший ответ:
Что за приложение? Может, американскому рынку просто не очень итересно такое?
У меня штаты на первом месте по покупкам — примерно 40% от всех стран.
Вопрос: 3 * 2 = 4 каким образом можно получить?

Лучший ответ:
Привет, на ноль делить нельзя

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

Лучший ответ:
Никак. Добро пожаловать в интернет.

Худший ответ:
Методом грубой силы. Дешевле выйдет.
Вопрос: Когда использовать $scope а когда ControllerAs?

Лучший ответ:
Controller As желательно всегда, а уж инджектить или нет в контроллер $scope зависит от того, нужно ли вам:
 - подписываться на события
 - ватчеры в контроллерах
Случай когда вы именно хотите из контроллера задать что-то что должно наследоваться во всех скоупах я нарочно опускаю ибо так делать не стоит. Если уж хотите, это можно сделать в run модуля через $rootScope. Но не из контроллера, они по возможности должны быть изолированными и не должны зависить от иерархии.
Если вам удается обходиться без этого и все это берут на себя директивы и сервисы - славно, значит верной дорогой идете... скорее всего.
Единственое что... почему вы пишите SomeController as vm... По идее вы должны писать там алиас контроллера что бы было понятно у кого методы дергаются. Понятно в смысле не ангуляру а вам.

Худший ответ:
На https://docs.angularjs.org/api/ng/directive/ngCont... пишут, что:Используя "Controller as" становится очевидным к какому контроллеру вы обращаетесь в шаблоне, когда несколько контроллеров.Более лёгкий доступ к свойствам и методам.Поскольку всегда существует .  , вам не придется беспокоиться о багах в наследование.
И вот еще обсуждение stackoverflow.com/questions/24330266/when-to-use-s... самому интересно и сейчас буду читать.
Вопрос: Laravel: Первые шаги?

Лучший ответ:
Начинайте с версии 4.2.
5 стабильную  только к концу этого месяца обещают.
laravel.ru - Русс. сообщество
vk.com/laravel_rus - Группа в ВК. туда выкладывают все новости в том числе ссылки на новые мануалы/видео и т.д по ларавел.

Худший ответ:
В PhpStorm пишите. Очень удобная программа.
Вопрос: [решено] Кросс-доменная аутентификация вконтакта

Лучший ответ:
На самом деле при входе на ВКонтакте POST-запрос идет на https://login.vk.com/. Оно чего-то сохраняет в куки и делает редирект на http://vkontakte.ru/login.php с каким-то хешем в GET-параметрах. Вот так оно и работает.

Худший ответ:
Вы вычистили не все приватные данные. 

p.s. После удаления кук на vkontakte.ru/vk.com должно разлогинивать. Вы что-то делаете не так.
Вопрос: Где прочитать про сетевые технологии, как говорится, in a nutshell (чтобы коротко и просто)?

Лучший ответ:
Поддерживаю предыдущего оратора. 8. Сети для самых маленьких. Часть восьмая. BGP и ...7. Сети для самых маленьких. Часть седьмая. VPN6. Сети для самых маленьких. Часть шестая. Динамич...5. Сети для самых маленьких: Часть пятая. NAT и ACL4. Сети для самых маленьких: Часть четвёртая. STP3. Сети для самых маленьких: Часть третья. Статиче...2. Сети для самых маленьких. Часть вторая. Коммутация1. Сети для самых маленьких. Часть первая. Подключ...0. Сети для самых маленьких. Часть нулевая. Планир...

Худший ответ:
Самое лучшее, что есть по сетям - это книги CCNA. Там есть все!
Вопрос: Как сделать уникальные просмотры статей по IP адресу?

Лучший ответ:
Узнаем IP пользователя:if (!empty($_SERVER['HTTP_CLIENT_IP'])){
    $ip = $_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else{
    $ip = $_SERVER['REMOTE_ADDR'];
}
Предположим, что человек решил обновить страницу, но IP уже есть в вашей базе, следовательно остается только проверить на соответствие и в случае совпадения не засчитывать просмотр.$query = mysql_query("SELECT `ip` from `table` where `ip` = '$ip'");
mysql_fetch_array($query);
if(isset($query['ip'])){
    // Если ip есть, то не засчитываем
}else{
    // Иначе засчитываем посещение и делаем sql запрос для увеличение счетчика
}
Вы наверное поняли, что для IP адресов вам нужно создать отдельную таблицу в БД и записывать их туда когда пользователь зайдет на страницу в первый раз и тогда после обновления страницы вы уже будете знать, что данный человек посещал страницу.
Возможно у вас возникнет вопрос об определении IP адреса, мол зачем там аж три разных варианта получения ip. Тык вот $_SERVER['HTTP_CLIENT_IP'] и $_SERVER['HTTP_X_FORWARDED_FOR']) содержат реальный ip адрес пользователя, то есть, если он зайдет к вам, используя прокси сервер, то вы получите не ip прокси, а ip его компа. Но на случай, если в этих двух переменных не будет ip адреса, то воспользуемся $_SERVER['REMOTE_ADDR'].
Есть еще вариант реализации с привязкой к кукки. Почитайте и попробуйте. Принцип тот же.
Я думаю, достаточно информации для того, чтобы вы сейчас пошли и сделали уникальный просмотр по IP адресам. Так что дерзайте :). А вообще почитайте о том, как лучше делать уникальные просмотры, ибо делать только по ip адресу не есть корректно.

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

Лучший ответ:
Базовый английский, основы линейной алгебры. Отличный курс для начинающих:https://www.coursera.org/course/ml

Худший ответ:
1. Математика. В основном линейная алгебра, как уже сказали. Но если с азов хотите начинать, то и теория вероятности со статистикой не лишние будут
2. Основы Python и/или R
3. Основы БД. Без этого никуда. Машинное обучение на 70-80 % про обработку данных и только на 20 про алгоритмы
4. Основы предметной области, в которой хотите применять МО
Вопрос: Rails transaction rollback

Лучший ответ:
В MyISAM нет поддержики транзакции. 
ALTER TABLE table_name engine=INNODB;

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

Лучший ответ:
Выравнивайте через css:/*выравнивание первой колонки таблицы */
table tr td{
  text-align:center;
}
/*выравнивание второй колонки таблицы */
table tr td+td{
  text-align:right;
}

Худший ответ:
Про братский селектор все забылиtable tr td{
  text-align: right;
}
table tr td ~ td{
  text-align: left;
}
Вопрос: Sphinx: Как изменить стандартный метод ранжирования?

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

Худший ответ:
Согласен с Пума Тайланд !
Можно использовать подход отсюда, который даёт более лучший результат (исходя из DEMO-примера).
Вопрос: Эмуляция Ajax-ответов?

Лучший ответ:
Создайте поддомен и напишите rewrite-правило, которое передаёт всё одному единственному скрипту. Напишите скрипт, который выдаёт псевдорендомные JSON-данные. И тестируйте в своё удовольствие. Все запросы посылайте на этот поддомен (DEFINE сделать не забудьте), сохраняя параметры get-запроса.

В скрипте дотаточно сделать блочок с задержкой, блочок с генерацией нормальных данных и генератор бреда, который срабатывает раз на 10% (сделайте мусоро-константу и назовите её MurphyConst). Вперёд на тест!

Худший ответ:
чем ajax-запросы принципиально отличаются от обычных http-запросов?
Вопрос: Как избавиться от рекламы в браузере?

Лучший ответ:
Первым делом проверьте дополнения к браузеру, поудаляйте все, которые вы не устанавливали сами.
Вторым делом проверьте файл hosts.

Худший ответ:
"Не могу кататься на роликах, помогите настроить. Обе ноги охвачены гангреной, но оперироваться нет возможности. Что подкрутить в роликах?"
У вас явно протроянен роутер. Что значит - нет доступа? Вы ворованным интернетом пользуетесь, всем этим парком? Ну, так окажите любезность хозяину - помогите ему полечить аппарат, глядишь, воровать не придется...
Вопрос: Как влияет на SEO одинаковый текстовый шаблон на страницах с товарными категориями в Интернет-магазине?

Лучший ответ:
@Slava90 уникальность текста на страницах никакая будет, 100500 страниц с 99% одинаковым текстом поисковик проиндексирует без особого удовольствия, как мусор. :)
 Уникальность контента лишь один из сотен параметров, которые ПС учитывают при ранжировании, но параметр достаточно важный. Лучше добавляете в описание меньше информации, но конкретно по товару и не используйте для всех страниц одну и ту же фразу со сменой пары слов.

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

Лучший ответ:
Используйте unionfs. Эта фс позволяет создать многоуровневую точку монтирования примерно с таким раскладом:
0 — RO — ваш хоум по нфс
1 — RW — tmpfs

Все это отобразится в /home/user. Запись будет происходить только в уровень 1.
Примерная маунт команда:

mount -t unionfs -o cow /home/user_tmpfs=rw:/home/user_nfs=ro /home/user

Худший ответ:
На ум приходят только самописные костыли c использованием FUSE, готовые решения как-то даже не гуглятся.

Берем за основу нечто подобное:
www.matthewgkeller.com/software/rofs.c.txt

и во всех коллбэках на запись радостно возвращаем 0. 
Предсказываю падение производительности.
Вопрос: Как запустить celery на production-сервере?

Лучший ответ:
Используйте лучше supervisor для демонизации селери.
Вот вам пример разжевывания michal.karzynski.pl/blog/2014/05/18/setting-up-an-...

Худший ответ:
Это:wget https://raw.githubusercontent.com/celery/celery/3.1/extra/generic-init.d/celeryd
сохраняете в:/etc/init.d/celeryd
Даете ему права:chmod +x /etc/init.d/celeryd
То, что приведено в "Example configuration" кладете в /etc/default/celeryd.
Запускаете так:/etc/init.d/celeryd start
# или так
service celeryd start
Дальше все настройки по конфигурации celery производите в /etc/default/celeryd.
Вопрос: Имеет ли смысл учить язык Ассемблера?

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

Худший ответ:
Имеет ли смысл задавать подобные вопросы, 
отвечая себе всего лишь на один - знания лишними бывают?
Ассемблер для доярки может быть не актуальным, но кто его знает куда шагнут технологии : )
Вопрос: Как использовать Live jquery?

Лучший ответ:
Вместо $('.some-selector').click(function(){}) используйте $(document).on('click', '.some-selector', function(){});$.live() - устаревший метод и боле не поддерживается.

Худший ответ:
Кроме того, рекомендую помимо return false сделать e.preventDefault$(document).on('click','a[href]',function(e){
if ( typeof e != 'undefined' && typeof e.preventDefault == 'function') {// Hi, IE!
	e.preventDefault();
}
/* some code */
return false;
});
Вопрос: VPS 512mb centos 6.5 nginx php-fpm почему съедает всю оперативку в спокойном режиме?

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

Худший ответ:
Это всегда так, оперативка везде почти вся занята по максимуму
Вопрос: Существует ли такое ПО под linux?

Лучший ответ:
x-ming
но наличие иксов на машине, к которой подключаетесь - необходимо

Худший ответ:
Любой vnc клиент + x11vnc. (если не ошибаюсь)
Вопрос: Существует ли простенький видеоредактор?

Лучший ответ:
ffmpeg.
30 Мегабайт, куда ещё проще.
Альтернативно: Movie Maker

Худший ответ:
OpenShot - простой и легкий в обращении.
Вопрос: Программирование. Реактивный старт — помощь начинающему

Лучший ответ:
Советов много, а комплексного подхода никто не предложил…

Ребята, всё полностью зависит от задачи. И, если не хотите распыляться, проведите прежде всего концептуальный анализ критичных мест архитектуры.

Ответьте себе на следующие вопросы:
 — Насколько «быстрым» должно быть клиентское приложение?
 — Какая нагрузка планируется на сервер?
 — Какие данные и способы их отображения будут в клиентском приложении? Как с ним будет взаимодействовать пользователь?
 — Какие требования предъявляются к каналу передачи данных между клиентом и сервером (задержки, real-time-требования)?
 — Какие предельные сроки?
 — Сколько времени планируется поддерживать проект (ставка на качество или на скорость разработки)?
 — Планируется ли продавать исходники или поддерживать проект самостоятельно?

Выбор инструментов сильно зависит от ответов на эти вопросы.

Мой хороший друг рекомендует использовать те инструменты, которыми я владею. Не забывайте, серебрянную пулю до сих пор так и не изобрели, и для одной и той же логики на любом языке так или иначе придётся написать примерно одинаковое число строк кода.

Худший ответ:
Вы с сетью работать собираетесь или с веб?
Вопрос: Где можно найти простые примеры конечного автомата (finite state machine) на javascript?

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

Худший ответ:
Любопытства ради, какая разница, на каком языке реализовывать автомат? Имеется в виду что вам будет проще найти материалы с примерами на c/c#python и т.д. а портировать в js не хитрое. Ничего сильно специфичного все же в них нету...
Ну а так...
lamehacks.net/blog/implementing-a-state-machine-in...
podefr.tumblr.com/post/20126646784/140-bytes-finit...
Вопрос: Как работать с backbone?

Лучший ответ:
Не сочтите за рекламу, но мне очень могли курсы по backbone на codeschool.com. Они платные, но 30$ за месяц обучения, как по мне, не такие большие деньги.

Худший ответ:
Посмотрите на backbonetutorials.com/organizing-backbone-using-modules/
Мне такой подход (и структура) понравился, использую.
Вопрос: Как реализовать подобный эффект?

Лучший ответ:
Абсолютное позиционирование, вырезание картинок, before/after... Ох и понапридумывают всякого....example {
    background: linear-gradient(to right, #F0F3BD, #F0F3BD), // левая граница
        linear-gradient(to right, #F0F3BD 0%, #F0F3BD 70%, #fff 70%, #fff 100%), // верхняя
        linear-gradient(to right, #F0F3BD 0%, #F0F3BD 70%, #fff 70%, #fff 100%), // нижняя
        linear-gradient(to right, #fff, #fff); // правая
    background-size: .5rem 100%, 100% .5rem, 100% .5rem, .5rem 100%;
    background-position: top left, top left, bottom left, top right;
    background-repeat: no-repeat;
}
Один элемент. Один фон. Для всего остального есть CSS.codepen

Худший ответ:
А исходный код можно посмотреть?
Вопрос: Алгоритм френдленты

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

Худший ответ:
Если боитесь заставить пользователя ждать — обрабатывать вариант 2 через очередь.
Вопрос: Какую просить сумму зарплаты стажеру/джуниору Android в СПб?

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

Худший ответ:
1.5 зарплаты рядового работника Макдональдса.
Вопрос: Фреймы — является ли хорошим тоном их использовать?

Лучший ответ:
Юзайте  и готовьтесь к головной боли :) На мобильных устройствах будет совсем ужась.
Не хотите подгружать форму сразу - подгружайте скриптом. Экономия на CSS очень сомительна. А у вас, кстати, css сжатый клиентам отдается или с кучей пробелов, комментариев и переводов строк?

Худший ответ:
Короткий ответ - нет. Плохой тон и не стоит использовать, за исключением тех случаев, когда фрейм вам наверняка нужен, именно фрейм. Но тогда вы бы не задавали этот вопрос. В вашем случае - забудьте.
Что касается скриптом и стилей - не так уж там и много грзуится, а когда они минифицируются, конкатенируются и гзипятся - разница вообще мизерная. Впрочем, если уж совсем чистого кода хочется, то есть варианты подгружать по мере необходимости. Для этих случаев есть ajax.
Вопрос: Обработка get или пост параметров в PHP

Лучший ответ:
if(isset($_GET['param1']) && $_GET['param1'] == 'value1'){
    exec(...);
}

С пост, аналогично только массив $_POST

Худший ответ:
Получилось немного проще.

$channel=($_GET['channel']);
$command="-".($_GET['command'])."_ch"; 
$level=($_GET['level']);
exec(«noolite -api $command $channel $level»);

Собственно, мне не хватало конструкции ($_GET['channel']).
Вопрос: Постоянно получаю спам в ICQ, как избавиться?

Лучший ответ:
Очень просто — переходите на Jabber.

Ну а в случае с ICQ придется сменить клиент на тот, который поддерживает отключение приема «отказов в авторизации», qutim точно так умеет.

Худший ответ:
Тоже несколько дней назад пачкой шли такие сообщения, я не придал им большого значения и более они не появляются.
Вопрос: Почему приложение на C# съедает в 5 раз больше ожидаемого объема памяти?

Лучший ответ:
1. List<> выделяет память кусками «про запас». Это называется capacity и отвечает за него одноимённое свойство. Если вы знаете, что ваш список в среднем будет содержать не больше N элементов, то это N нужно передать в соответствующий конструктор List<>.
2. Можно подсчитать байты и использовать выравнивание. Процесс трудоёмкий, но если сейчас много «пустого места», то в итоге вполне могут выйти желанные ~80МБ.
3. Ну и упомянутые утечки памяти. GC.Collect и memory profiling вам в помощь.
Ну а людям ноющим о медленности «управляемых» языков, больших DLL и 100 МБ памяти для .NET по-умолчанию и предлагающих перейти на другие языки, я предлагаю пойти поучиться у англоязычных коллег, которые не ноют по каждому случаю, а стараются действительно помочь разобраться в проблеме, в данном случае — увеличить производительность. Извините, накипело.

Худший ответ:
Возьмите WinDbg, подключите sos/psscor, снимите дамп да посмотрите, что за объекты у вас в памяти. Опыта тут большого не нужно, инфы по анализу .NET-памяти этим способом в инете полно.
Вопрос: Какой оптимальный размер файла hosts?

Лучший ответ:
Обычно этот файл состоит из пары-тройки строк на тему localhost.
Когда он начинает так разрастаться, сразу возникают вопрос: Почему в этой сети игнорируют существование DNS?!
А если этот файл используется, как замена прокси/файерволу, и в него ручками написаны названия неугодных хостов... ну это тотальный мрак.

Худший ответ:
И что же на 85 мб можно запихнуть в текстовый файл?
Вопрос: Проверка строки на присутствие кириллицы?

Лучший ответ:
if( preg_match("/[А-Яа-я]/", $text) ) {}

Худший ответ:
Если из стандартного набора Вам выше написали варианты с preg_match, а так нашёл функцию которая проверяет наличие в строке русских букв в кодировке UTF-8 и windows-1251(cp1251) и возвращает true или файле

$string = "Строка с русскими буквами";
$res = isContainsRussianLetters($string);//получаем true или false в зависимости есть ли русские буквы в строке

Сам код функции по ссылке blog.ivru.net/?id=232

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