Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Синхронный и асинхронный код, почему так называется?

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

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

Лучший ответ:
Для каких целей нужен гаджет?
Разные же устройства, так читалка для чтения великолепна, с ipad интернеты читать в дороге (или на диване) отлично плюс игрушки времяубивалки, нетбук может всё что остальные, только не так удобен в использовании.
Если просто потратить денег, то ничего не покупайте, потреблядство — зло.

Худший ответ:
Nook Color — интересная читалка (фактически) планшет на Android.
А вообще тут по потребностям — если только читать — Безусловно, киндл. С нетбука читать жутко неудобно.
Если читать+мультимедиа — планшет.
Вопрос: Какие можете дать рекомендации по составлению/ведению контекста для службы Такси?

Лучший ответ:
Тема дорогая, поэтому помимо рекламы по основным запросам "вызвать такси", "такси в аэропорт" лучше думайте и ищите смежные тематики. Например собирайте недорогой трафик с низкочастотных запросов "онлайн табло домодедово", "как добраться до мега теплый стан", "проезд до конференции риф 2016". То есть думайте не о своей услуге, а о нуждах ваших клиентов. Например, можно вообще создать ночную кампанию с запросами "как доехать до клуба ...", "добраться до клуба...", "где находится клуб...". Активно нужно будет использовать контекстно-медийный таргетинг. По интересам - на путешественников, любителей шопинга, любителей ночных развлечений. По площадкам - на сайты о путешествиях, той же ночной жизни и, например, сайты театров, дорогих ресторанов (куда не отправишься на метро, если нет своей машины). Обязательно ремаркетинг, особенно на тех кто уже заказывал.
В объявлениях обязательно указывайте конкурентные цены. И лучше акции - скидки, фиксированные цены, горящие предложения. Обязательно добавляйте все возможные расширения объявлений. Делайте мобильные объявления. Для мобильников нужно вообще делать повышенный коэффициент ставок в вашем случае.
А заявки отследить не сложно. Тут вам настройки целей в Google Analytics в помощь. Можно поставить коды отслеживания на отправку заявки с сайта. Или, если имеет ввиду отслеживание звонков, то устанавливайте систему колл-трекинга - CallTouch, CoMagic или CallTracking.

Худший ответ:
Если ЯД - то https://direct.yandex.ru/search . Смотрите объявления конкурентов, берете для себя что то оттуда. Грамотно проработайте минус-слова.
Вопрос: Не могу найти ошибку в коде?

Лучший ответ:
typedef	unsigned int un;
Работает. А если бы вы попытались самостоятельно стать препроцессором и подставили бы свои макросы, то увидели бы что в итоге получается unsigned int; a = 1, b = 2;
Просто уберите ; в конце макроса и будет вам щастье.

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

Лучший ответ:
Как-то так:
guides.rubyonrails.org/rails_application_templates.html
rusrails.ru/generators

Худший ответ:
Удобный интерактивный шаблон rails приложения.rails new myapp -m https://raw.github.com/RailsApps/rails-composer/master/composer.rb
Если не устраивает, то тут есть выбор
Вопрос: Startandroid, Брайн Харди, или оффициальные туториалы?

Лучший ответ:
+1 за Харди, что мешает взять книгу с собой в армию?

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

Лучший ответ:
Что бы я не выбирал в radiobutton, значение a и b, соответственно и strr остаётся таким же.Вы инициализируете переменные a и b, а пишете в $a и $b.strr у вас инициализируется один раз значенями из a и b - но это не значит, что при любом изменении a и b значение внутри strr изменится. Оно как сохранилось один раз, так и останется. Хотите сделать его динамическим - вычисляйте перед каждым использованием.не понял как передавать значение переменной из циклаВ вашем коде нет ни одного цикла.
Переменные в jQuery ничем не отличаются от переменных во всём остальном javascript.
Должно быть так - jsfiddle.net/koceg/zvo4c4e6/2

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

Лучший ответ:
> запушить туда продакшен
в этом месте у вас организационная ошибка. поток изменений должен идти от разработчика в продакшн, а не наоборот.

> сделать репозиторий на гитхабе
а это-то зачем? git init и вперёд по ssh, без всякого гитхаба

> Есть ли какой-то другой способ
rsync

но серьёзно, самая большая проблема — это в том, что у вас вообще есть задача перекидывать изменения из продашна в репозиторий.

Худший ответ:
Обычно синхронизация идет из репозитория на продакшен. Способ для ленивых — на сервере склониться из репозитория.
Вопрос: Где найти простые туториалы по php по созданию админок?

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

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

Лучший ответ:
Блестяще сформулирован вопрос. Браво! Уж сколько было копирайт-срачей, как только не поливали говном закон об авторском праве, но так кратко и емко еще никто не формулировал.

Худший ответ:
Трудовой договор?
Вопрос: Не подключается ни один js скрипт. В чем проблема?

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

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

Лучший ответ:
поменяйте на ссылках display: inline-block на inline

Худший ответ:
По идее, должно сработатьwhite-space: nowrap;
на span, содержащий всю ссылку.
Вопрос: Состоится ли переход на зимнее время 28 октября?

Лучший ответ:
www.rg.ru/2012/09/28/perevod.html
Переход страны на зимнее время, который мог состояться ровно через месяц, 28 октября, откладывается.

Комитет Госдумы по охране здоровья рекомендовал правительству заказать ученым исследования последствий перевода стрелок для здоровья людей и экономики страны. И лишь после этого сделать вывод, какое принять решение. 

www.ria.ru/state/20121022/905490417.html
Законопроект о переходе на зимнее время находится в правительстве, сообщил глава комитета Госдумы по охране здоровья Сергей Калашников, при этом он не исключил, что россияне все-таки смогут перевести стрелки часов в этом году.

Ранее Калашников внес в Госдуму законопроект о возвращении к зимнему времени, при этом сезонный перевод часов не предусматривался. Ряд парламентариев тогда указали на то, что по закону решение об установлении времени должно принимать правительство.

Калашников сообщил, что пока не отзывает свой законопроект, ждет реакции кабмина.

«Мне сообщили, что правительство взяло недельный тайм-аут для обсуждения этого вопроса», — заявил РИА Новости Калашников.

Он не исключил, что возврат к зимнему времени все-таки может состояться в этом году. Калашников отметил, что стрелки часов не обязательно переводить в последнее воскресенье октября, поскольку «эта дата условная».

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

Лучший ответ:
Как посылая запрос на 80 или 8080 порт, понять (программно "Python"), что перед нами веб панель роутера, а не сайт ? Никак.
По той простой причине что веб панель роутера это сайт.

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

Лучший ответ:
Используйте data-аттрибуты.<p data-product-id="1234">something</p>$('p[data-product-id]').on('click', function(){
    var id = $(this).data('data-product-id')
    ...
})

Худший ответ:
по айди и классу $(".buttonadd#id111").on("click", function(){
...
});
Вопрос: Что выбрать для изучения и дальнейшей работы?

Лучший ответ:
1. Нравится After Effect, изучение+практика = становитесь профессионалом — гребете бабло;
2. Нравится фронтэнд, изучение+практика =  становитесь профессионалом — гребете бабло.
Что Вы хотите услышать: учи фронтэнд — это будущее, риал круто, нет — афтер круче, лучше в сто раз?

Худший ответ:
Выбирайте то, что вам по душе!!! 
Люди ценят, когда работа выполнена с душой (и платят больше).
Вопрос: Почему съехала шапка?

Лучший ответ:
это BOM. сохраните ваши файлы в UTF-8 без BOM и будет все ок.

Худший ответ:
Запустите поиск по всем файлам строки ﻿
какой-то php скрипт выводит данную строку.
Вопрос: У JAVA есть будущее?

Лучший ответ:
Нет у нее будущего, настоящего, да и прошлого нет. Учите Dart, Go, someshit.js и еще какую-нибудь хипстерскую фигню. Будет еще больший дефицит на рынке труда и профит для java-разработчиков.
Какой десктоп ? Вы о чем вообще? Основная ниша для java - это server-side разработка крупных проектов для банков, телекомов и прочих серьезных дядек.

Худший ответ:
Пока Андроид популярен, будет и Java популярна. С учетом охвата ос ближайшее будущее точно будет перспектива.
Вопрос: Нужна ли экранированная витая пара при внешней прокладке к PoE оборудованию?

Лучший ответ:
1. При любой внешней прокладке витая пара нужна экранированная
2. Технология PoE не оказывает влияния на качество передачи данных. Для ее реализации используются свойства физического уровня Ethernet

Худший ответ:
в большинстве poe юзает свободные пары и гоняет трафик на  100 мегабит, так что выбирая оборудование надо смотреть, чтобы оно поддерживало пое на гигабит с обоих сторон.
экранированный кабель нужен если есть внешние помехи, также он усиливает отражение внутри кабеля и этим снижает его максимальную возможную длину.
Вопрос: Удалил ntfs, поставил ext4. Как восстановить файлы с удаленного раздела?

Лучший ответ:
Если через Линукс не пропускали большие объемы файлов (если решили скачать все сезоны любимой Санта-Барбары в HD и с тремя вариациями дубляжа то забудьте о старых файлах) то Testdisk Вам в помощь. Утилита консольная, запускать через sudo. Если более менее освоили Линукс (в часности консоль) - освоите и testdisk. Иначе лучше несите в сервис.

Худший ответ:
Вероятнее всего уже никак, можно попробовать погонять утилиты восстановления, но скорее всего пустая трата времени. Бэкапа я так понимаю тоже нет, что же поздравляю теперь вы из тех пользователей что не делают бэкапы скорее всего перейдете в группу тех, что уже делают.
Вопрос: Как переключаться между окнами (задачами) в Mac OS X?

Лучший ответ:
> Почему нельзя переключиться на окно по command-Tab
Потому что command-Tab не переключает между окнами. Оно переключает между приложениями. Между окнами одного приложения переключает command+тильда.

> Почем при разворачивании окна на весь экран я на самом деле получаю окно на отдельном рабочем столе
Потому что это кнопка разворачивания окна на отдельный рабочий стол.

> Например, невозможно переключиться на скайп, если до этого я закрыл кнопкой
Возможно. Вы именно переключаетесь на приложение Скайпа. У которого вы только что закрыли окно, да. Шоткат как открыть его обратно можно посмотреть в меню window.

Худший ответ:
Я вам очень рекомендую эту книгу: shop.oreilly.com/product/0636920025634.do
Вопрос: И снова 32 vs 64 bits OS?

Лучший ответ:
64 бита малек быстрее работают из-за расширения инструкций( хотя кто-как )
И не забываем на лимит 2048МБ на программу для 32. В сисистеме то может и больше памяти будет, то таже самая БД не сможет ее адресовать.
И никто не мешает запускать 32бита на х64

Худший ответ:
В LAMP+nginx такие издержки на фоне стоимости планки памяти смешны. 
При одинаковой нагрузке получается 1000 vs 800 мб. Тестил на debian lenny.
Вопрос: Как сделать кнопку live demo в портфолио в Drupal?

Лучший ответ:
там просто на странице предпросмотра подгружается в iframe демо страничка resumex.snappytheme.com
читайте основы html htmlbook.ru/html/iframe

Худший ответ:
Ajax (делаем запрос на сайт о блоке с портфолио) + javascript (ну css) делаем плавное переключение между вкладками. Как-то так.
Вопрос: Путь в математику. Существует ли аналог Ландсбергу?

Лучший ответ:
Если я вас правильно понял, то вы хотите понять математику как науку в единстве и многообразии, а не отдельные разделы. Наверное стоит посмотреть на научно-популярные книги по математике и философии математики - Р.Курант, Г.Роббинс "Что такое математика?", С.Строгац "Удовольствие от x" и другие в таком ключе, которые пишут профессиональные математики.

Худший ответ:
Есть еще такая книжка "Пухначёв Ю.В. Математика без формул"
Вопрос: Как на bash реализовать проверку аргументов?

Лучший ответ:
Вам нужен getopts

Худший ответ:
Вам shflags нужен - https://code.google.com/p/shflags/
Пример использования - https://debian.pro/files/anlamp/mksite.sh (в шапку скрипта смотрите)
Готовый пакетик для дебианов/убунт - https://debian.pro/files/anlamp/libshflags_1.0.3-y...
Вопрос: Где найти учебник по SQL?

Лучший ответ:
Мартин Грабер — Понимание SQL ( www.sql.ru/docs/sql/u_sql/ )

Я убедился на своём опыте, что для изучения этот учебник идеален. Когда я преподавал при помощи его, у меня сложные запросы даже двоешники могли написать.

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

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

Худший ответ:
Раз тема в топе по запросу продолжу тут.
На скриншоте установлены расширения Stylebot(мне хватало этого) и Stylish. Так вот им и можно переопределить все стили.
Вопрос: Как запустить код написанный на Haskell из под Java проекта?

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

Худший ответ:
Можно использовать named pipes.
Вопрос: Как навести порядок в html и css коде?

Лучший ответ:
если ты про форматирование - ctrl + alt + L в шторме (webstorm or phpstorm)

Худший ответ:
Есть средства типа jsbeautifier.org но они ж тупые, с шаблонными решениями. Это только для деобфускации/деминификации. Там хоть какое-то форматирование уже хорошо.
А если свой код писать, то надо просто пользоваться IDE, которая делает табы и пр. форматирование, хотя бы Notepad++.
А эти средства - если и применять, то осторожно.
Иногда лучше написать так:
if (условие) { команда(); }
if (условие) { команда(); }
Нежели вот так (как сделает такое средство):
if (условие) {
    команда();
}
if (условие) {
    команда();
}
Вопрос: Как по нажатию на кнопку открыть окно на весь браузер или на весь родительский элемент?

Лучший ответ:
Ну а в чем проблема реализовать данное на jquery которую вы указали в тегах?
Так и делаете =) Сначала по клику рассчитываете высоту и ширину окна браузера пользователя, далее создаете два div, один кладет тень на весь сайт другой под контент. Дивам даете ширину и высоту окна браузера, позицианируете как fixed и показываете preloader ajax gif картинку, а когда контент загружен, отвалидирован и распихан по Html тегам, убираете preloader и вставляете контент к див =)
Могу сделать вам за час, но не бесплатно)

Худший ответ:
Если вам самостоятельно реализовать подобный функционал сложно, то почему бы не воспользоваться fancybox. Останется только добавить на страницу скрытый див с width 100%, height 100% и добавить Js для обработки клика кнопки.
Вопрос: Стилизация checkbox, как лучше сделать?

Лучший ответ:
Аха. Опять эти ребята. Я делаю уличную магию. Особую. Хотите увидеть немного магии?

Худший ответ:
Один из вариантовif($("#id").is(':checked')) {
    $("#id span").text("Hide");
  }
  else {
    $("#id span").text("Show");
  }
Вопрос: Как подключать JQuery елементы в html код?

Лучший ответ:
learn.jquery.com/about-jquery/how-jquery-works - начните с официальной документации

Худший ответ:
<script type="text/javascript" src="//code.jquery.com/jquery-1.11.0.min.js"></script>
если файл скачан локально в ту же директорию, где и ваш html, то<script type="text/javascript" src="./jquery-1.11.0.min.js"></script>
Вопрос: Как вы относитесь к короткоживущим процессам в NodeJS?

Лучший ответ:
Создавать новый процесс для обработки пользовательского запроса, по-сути является шагом назад к протоколу CGI. Это будет медленно и накладно по ресурсам. Собственно поэтому и появился протокол FastCGI, чтобы сократить время отклика за счёт постоянно живущего процесса.
Безотносительно архитектуры приложения, ответить на ваш вопрос сложно. С одной стороны Node рассчитан на долгую жизнь процесса, по крайней мере головного. С другой стороны, реализация web-worker, запуск побочных процессов через spawn и даже в некоторых случаях воркеры в кластере (cluster) вполне могут быть короткоживущими для выполнения разовых задач. 
В общем надо плясать от вашей задачи. Очень интересно, что именно заставило вас думать в эту сторону.

Худший ответ:
Расскажу, какая ситуация с этим у меня в Impress и что меня в этом устраивает и не устраивает.
Сейчас процессы для обработки запросов порождаются при старте, и повторно порождаются при падении. Утечки памяти или падения процессов - считаю ненормальным поведением, но в реальности не все используемые библиотеки пушу я и даже не весь код приложений пишу я, поэтому нужно как-то с утечками и падениями бороться. Конечно падения минимизированны, т.к. весь прикладной код выполняется в sandbox`ах, и при утечках можно просто создать новый sandbox в том же процессе, восстановить в нем все нужные структуры данных, потом заменить ссылку со старого (утекшего или испорченного при исключении sandbox`а) на новый и убить старый. Это быстрее, чем порождать новый процесс.
Но иногда хочется ответвить обработку одного запроса в отдельный процесс, чтобы он не мешал другим. Сейчас у меня реализовано прозрачное для приложений порождение нового процесса для этих случаев, т.е. сделано нечто подобное воркерам. Но процессы запускаются относительно медленно. Кроме того, есть еще планировщик заданий, который должен выполнять часть бизнес-логики по расписанию.
Как я хочу сделать. Кроме процессов обработки запросов иметь еще некоторый пул подготовленных запущенных процессов, которые уже и соединение к БД установили и развернули все что нужно в памяти. С родительским процессом они связаны TCP-сокетом, через который налажен RPC (полноценный вызов удаленных процедур с поддержкой колбэков, событий, асинхронного вызова нескольких запросов и т.д.) И когда возникает необходимость ответвить обработку или выполнить задание по расписанию, то вместо порождения процесса будет браться первый свободный процесс из пула и ему по RPC приходит заказ. Когда он все выполнил, то он по RPC возвращает колбэк или событие.
Вот все у меня уже вроде готово для этого и сам RPC написан и отлажен, скоро реализую. А дальше по тому же RPC (но с транспортом через вебсокеты) собираюсь связать и клиентские приложения, чтобы они становились единым целым с серверными процессами и воркерами.
Вопрос: Облачный сервер телефонии с хорошим API?

Лучший ответ:
возможно все это можно сделать скритами voximplant, если нет то можно точно скриптами (js/lua/java,etc) freeswitch. 
Почитайте это для начала https://www.bionicspirit.com/blog/2009/02/20/tips-...
дальше придется думать.

Худший ответ:
Если есть программисты, то можно попробовать сервис от ringcloud.ru
У них есть API. =)
Вопрос: Что это за конструкция  ?

Лучший ответ:
Это типо<?echo $переменная;?>
А вот что она в себе хранит загадка, но у вас есть ключ.
Если просто, то это сокращение.

Худший ответ:
<?php $var='test'; echo $var; ?><?=$var?><?='test'?>
Результат одинаков:test
Вот более-менее хороший обзор подобных конструкций.
Вопрос: Какая программа делает авто-скриншот экрана программиста?

Лучший ответ:
Купите шапочку с GoPro и наденьте на голову программиста.

Худший ответ:
Программа для учета рабочего времени
Вопрос: Как сделать адаптивные блоки занимающие 100% vp?

Лучший ответ:
Я реализовывал это следующим образом:
на страницу ставим 2 блока <div class="container-fluid">
</div>
<div class="container-fluid">
</div>
Каждому container-fluid присваиваем стиль height:100%
Пример реализации zapraudu.info/referendum

Худший ответ:
В бутстрапе создаете блок  с классом container-fluidвнутри него блок с классом row и внутри него блок с классом col-xs-12
и последний блок будет на весь экран, при любых размерах
Вопрос: Нужно ли устанавливать видео драйвер?

Лучший ответ:
Микрософт берет драйвера не откуда то с потолка. Вероятность bsod такая же как и у производителя устройства (в большинстве это один и тот же драйвер). 
Что касается критично ли иметь драйвер видеокарты на сервере, то конкретно я считаю что НЕТ. Исключением являются сервера с проф картами для рендеренга.

Худший ответ:
На 2003/2008 проблем с дефолтным видеодрайвером ни разу не наблюдалось. Скорее нагрузка увеличится (в целом на систему) от дополнительных дров.
Вопрос: Как отследить что пользователь покинул страницу?

Лучший ответ:
iframe, который постоянное держит подключение с сервером по websocket.
Сайт обнавляется в ifreme который не трогает подключение, как закрется окно — сессию можно удалять. 

Из плюсов вижу возможность передавать всю информацию о клиенте: куда нажал, сколько грузится страница. 

С IE 6 можно подружить 

habrahabr.ru/post/94921/

Худший ответ:
function logout() {
    // удаляем куку и перезагружаем страницу
}
var is_focus = 1;
window.onfocus = function()
{
    is_focus = 1;
}

window.onblur = function()
{
    is_focus = 0;
}

setInterval(function(){
   if(is_focus != 1) logout();
}, 1000);