pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Есть ли доступ у Российских правоохранителей к серверам gooole?

Лучший ответ: когда налоговая и ФСБ располагала всеми данными с почты и вирутального жесткого диска mail.ru через сутки после начала расследования
99.75% вероятность, что причина в человеческом факторе. Для прикрытия своих информаторов типично создаются подобные легенды про безграничные технические возможности доступа, как будто у Них есть ключ от любых замков. В этой легенде есть доля истины, ключ у Них действительно есть, и этот ключ - человек. Совсем не обязательно, что он сотрудничает добровольно, ему, скорее всего, просто сделали "предложение, от которого невозможно отказаться".

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

Лучший ответ: lancemonitor.com
а вообще рекомендую стремиться к studio.envato.com

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

Лучший ответ: На jQuery$("#select").change(function(){
      var txt = $("#select :selected").text();
      $("#image").attr("src", txt);
});

Худший ответ: Вот тебе решиние:)<script>
function fsrc(n){
document.getElementById("images").src=n;
}
</script>
<select onclick="if(this.value)(fsrc(this.value))">
<option value="1.jpg">option 1</option>
<option value="2.jpg">option 2</option>
<option value="3.jpg">option 3</option>
</select>
<img id="images" src="">
Вопрос: Как управлять расположением блоков при адаптивной верстке ?

Лучший ответ: решение на css с медиа запросами
ссылка на пример внизу
html:<div class="box">
  <div class="block block_1">block # 1</div>
  <div class="block block_2">block # 2</div>
  <div class="block block_3">block # 3</div>
</div>
css:.box{
  width: 400px;
  margin: 50px auto;
}

.box:before {
  background-color: rgb(100, 250, 100);
  display: block;
  content: "full";
}

.block {
  width: 33.3333%;
  height: 100px;
  border: 1px dotted black;
  box-sizing: border-box;
  display: inline-block;
}

.block_1 {
  float: none;
}

.block_2 {
  float: left;
}

.block_3{
  float: right;
}

@media (max-width: 600px) {
  .box:before {
    background-color: rgb(150, 150, 250);
    content: "mobile";
  }

  .block_1 {
    width: 100%;
  }

  .block_2 {
    width: 50%;
  }

  .block_3{
    width: 50%;
    float: left;
  }
}
codepen.io/iusfof/pen/Lmiep?editors=110 код в действии

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

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

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

Лучший ответ: Есть такой сайт, с говорящим адресом: www.themoviespoiler.com/

Худший ответ: на фильмы, которые вышли «не вчера», на кинопоиске много обзоров, и со спойлерами, и с эмоциями, и пр…
Вопрос: Нужно сделать фон прозрачный, а картинку нет?

Лучший ответ: Можно сделать проще.blocks {
background: rgba(#284d88, 0.7);
}
Ну или переводишь свой цвет в rgb, и добавляешь альфа канал

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

Лучший ответ: Thinkpad посмотрите. По субъективному опыту — надежные машинки, если из классической серии.

Худший ответ: лично сам выбрал себе Acer Aspire TimelineX — никаких проблем
Sony VAIO дороговат, HP ломок
Вопрос: Как найти ошибку в моем скрипте (python)?

Лучший ответ: Не пойму, а зачем вы используете вместо логических значений строки?

Худший ответ: У вас в процедуре Simple при n <= h цикл while не выполняется. Следовательно, переменная itog не определяется. Не буду обсуждать ваш алгоритм нахождения простых чисел, но попробуйте установить itog в False перед циклом. Как-то так:def Simple(n):
    h=2
    itog = False
    while n > h:   
        if n%h != 0:
            itog = True
        else:
            break
        h = h+1
    if itog == "True":
        print ("{0} - Простое число".format(n))
    else:
        print("{0} - Сложное число".format(n))
n = int(input("Введите число:\n"))
while n > 1:
    Simple(n)
    n = n - 1
P.S. Как уже написали выше, вместо строк нужно использовать True/False без кавычек.
P.P.S. Ещё пара замечаний:
1. Если тип переменной - логический (boolean), то можно вместоif itog == True
использовать простоif itog
2. Обычно функции (процедуры) в Питоне пишутся со строчной буквы (under_score-нотация). С заглавной (CamelCase) принято именовать классы.
Вопрос: Стоит ли изучать и использовать haxe вместо js и php?

Лучший ответ: Haxe - язык, который можно скомпилировать почти в любой другой. Но нельзя сказать, что можно выучить haxe для его последующий компиляции в php не зная php. Ведь haxe как язык ничего нового не принес в этот мир, а лишь повторяет api языков в которые компилируется.
Так же я никогда не видел чтобы эксперты анализировали полученный код. Все говорят что у кода полученного с помощью haxe выше производительность (это не имеет отношения к inline), но лично мне кажется что это из-за пренебрежения канонами ооп.
Я бы не стал его рекомендовать учить как язык.

Худший ответ: Это, само собой, вопрос, достойный ожесточенного спора.
Но нет, пока что (2015-й год) — не стОит. Нерентабельно.
Вопрос: Можно ли отключить светодиод (LED-индикатор), который включается при включение веб-камеры через драйвера или еще как то?

Лучший ответ: Еще как-то можно: выпаиваете и готово!

Худший ответ: Без шуток, я нашёл лучший вариант! Взял акриловую густую краску (подойдёт и гуашь) и кисточкой совсем чуть-чуть капнул в индикатор. Выглядит не заметно и проблема решена!
Вопрос: Какой IoC контейнер для .NET лучше? Unity или Ninject?

Лучший ответ: Могу посоветовать Ninject — имеет очень активное сообщество, существуют расширения для MVC3, NLog, Glimpse + много чего.
Лично мне нравится сам API. если хотите убедиться в простоте использования, то можно на примере ASP.NET MVC:

1) назначаем привязки
class RepoModule : NinjectModule
{
    public override void Load()
    {
        Bind<ICategoryRepository>().To<CategoryRepository>();

        Bind<IProductRepository>().To<ProductRepository>();
    }
}


2) загружаем ядро
var modules = new INinjectModule[]
            {
                new RepoModule()
            };
            var kernel = new StandardKernel(modules);
            RegisterServices(kernel);
            return kernel;


3) пишем наш контроллер
public class ProductsController : Controller
{
    private readonly IProductRepository productRepository;

    public ProductsController(IProductRepository productRepository)
    {
        this.productRepository = productRepository;
    }
}


Худший ответ: ну unity все таки делают в ms и они его не бросят и буду пилить под каждую платформу. мы на прошлой работе его использовали и были довольны. 
Ninject кстати быстрее по крайней мере на winrt портировался. я когда зимой его смотрел, то они уже работали, а unity был только для ctp и не совместим с winrt cp/beta уже. 

Я бы выбрал unity почему-то я доверяю им больше.
Вопрос: Почему музыкальный плеер выключается после погашения экрана?

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

Худший ответ: Что именно за плеер? Что за девайс? Пробовали в других проигрывателях воспроизвести проблему? В том же PowerAMP?
Вопрос: Пишу на PhpStorm. Стоит ли переходить на Sublime Text 3?

Лучший ответ: Все фичи тяжелых IDE, как правило не нужны, да и работают они медленно. В тоже время Sublime работает очень быстро, легко расширяется и плагинами и темами. Есть целый репозиторий для расширений Sublime Text.
Однозначно стоит попробовать перейти. Пару лет назад я также перешёл с одной из IDE от jetbrains и назад абсолютно не хочется. Думаю насколько он вам подойдет зависит от того, что вам больше нравится тяжелые комбайны все-в-одном или легкие и гибкие инструменты с широкими возможностями для кастомизации.

Худший ответ: Вот несколько скринкастов про Sublime. Правда там про второй, но с третьим разница не большая.
net.tutsplus.com/articles/news/perfect-workflow-in...
Вопрос: Шаблонные функции. Какие преимущества?

Лучший ответ: но меня смущает вызов 2 дополнительных функций в шаблонеФункции заинлайнятся, за производительность тут переживать не стоит.У вас немного разные алгоритмы. В шаблоне никто не запрещает вам пройтись циклом по итераторам и посчитать среднее тем же способом, что и в первом варианте.Использование stl-функций предпочтительнее своего велосипеда. Читать код легче. Я увидел accumulate и сразу подумал о свёртке. А в первый пример пришлось вчитываться. К тому же он ещё и не оптимальный - ведь деление можно вынести из цикла.Данный вариант с шаблоном намного гибче - его можно использовать с любым контейнером, который реализует итератор.

Худший ответ: Реализации функций не эквивалентны и будут возвращать разный результат, практически со 100% вероятностью.
В первом случае суммируется частное от значения и количества элементов, а во втором элементы сперва суммируются, а потом делятся на число элементов. В первом случае больше накопление погрешностей вычислений, больше операций деления, следовательно, меньшая точность вычислений и меньшая скорость работы.
Если в первом варианте деление вынести из цикла, то различие будет только в гибкости кода.
Вопрос: Mikrotik RB750 и IP камера?

Лучший ответ: 1. Нужно понять какой динамический ип-адрес выдал камере ваш роутер.
для этого нужно дать команду:/ip dhcp-server lease print
2. По номеру строки (предположим -- 5) привязать в списке dhcp-аренд адрес вашей камеры:/ip dhcp-server lease make-static 5
3. Адрес вашей камеры нужно указать в пробросе портов. Сделать это можно так:/ip firewall nat add action=dst-nat chain=dstnat \
 comment="port forward for my ip-cam-1" dst-port=52855 \
 in-interface=ether1 protocol=tcp to-addresses=192.168.88.161 to-ports=80
-- поясняю: в этой строке настраивается проброс внешнего порта 52855 на внешнем интерфейсе ether1 протокола tcp на локальный хост 192.168.88.161 (пример) на локальный порт 80.
4. В файерволе нужно убедиться, что ваш внешний порт 52855 будет доступен снаружи. Для этого до блокирующего правила нужно прописать разрешение:/ip firewall filter add chain=input \
 comment="allow port fwd to my ip-cam-1" dst-port=52855 protocol=tcp place-before=5
-- пояснение надеюсь не нужно. :)
З.Ы. Настоятельно советую убедиться, что доступы на ваш роутер извне открыты только доверенным хостам или лучше вообще закрыты. Не стоит давать шансы кому-то на подбор пароля к вашему роутеру.

Худший ответ: что я не так делаю, то хоть на веб морду роутера кидало теперь - вообще невозможно отобразить эту стр.
Если у меня подключение к инету - рррое, то в входящем интерфейсе надо указывать рррое, или ethe1 ?
Вопрос: Как сделать текст «не копируемым» в HTML?

Лучший ответ: Можно с помощью свойств CSS:-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select: none;
user-select: none;

Худший ответ: На счет части текста не  знаю, а если всю страницу сделать некопируемой, то вот это помогает. Естественно, кто сильно захочет, тот из исходников скопирует.function nocopy(event) { 
    var event = event || window.event; 
    if (event.preventDefault) { event.preventDefault(); } 
    else { event.returnValue = false; } 
    return false; 
} 

document.onmouseup = nocopy; 
document.onmousemove = nocopy; 
document.ondragstart = nocopy; 
document.onselectstart = nocopy; 
document.ontextmenu = nocopy; 
document.oncopy = nocopy;
Вопрос: Как на LESS указать несколько значений CSS свойства?

Лучший ответ: Лично я делаю это чутка иначе..shadow (@shadow) {
	-webkit-box-shadow: @shadow;
	   -moz-box-shadow: @shadow;
			box-shadow: @shadow;
}
При таком виде можно ставить сколько угодно теней.class1 { .shadow(~"1px 2px red, inset 5px 5px green");}

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

Лучший ответ: Есть класс Dispatcher. Думаю он решит вашу проблему

Худший ответ: queue прикрутить. один поток выгребает из очереди все и делает дело, остальные потоки дергают платы и если надо - добавляют сообщение в очередь.
на примитивах типа Monitor.Wait / Monitor.Pulse очередь очень простая получается. 
заодно решается проблема, когда значения изменяются быстрее, чем обрабатывается факт изменений.
Вопрос: Расход памяти под методы объектов?

Лучший ответ: Виртуальная машина (JVM) хранит данные экземпляров классов и их методы в разных областях памяти. 

При умножении количества экземпляров одного класса умножения копий его методов не происходит.

Более развёрнуто можно почитать в главе The Structure of the Java Virtual Machine спецификации JVM: The Java Virtual Machine Specification

Худший ответ: Думать вам надо не о памяти, занимаемой смешными 50к объектов (на сервер можно запихнуть и 32гб ОЗУ). Вам надо думать о том, как вы будете обеспечивать целостность вашей базы данных при зависании или рестарте сервера. Возможность откатиться минут на 5-10 раньше зависания может оказаться бесценной.
Вопрос: Как реализовать ссылку с номер whatsapp на сайте?

Лучший ответ: Добавлю новостей из 2к21 :)

Вот такую ссылку можно вставить на сайт:
https://api.whatsapp.com/send/?phone=79200000000
или её короткий вариант:
https://wa.me/79200000000

Такая же ссылка, но с текстом:
https://api.whatsapp.com/send/?phone=79200000000&text=Здравствуйте%2C+у+меня+есть+вопрос
или короткий вариант:
https://wa.me/79200000000?text=Здравствуйте%2C+у+меня+есть+вопрос
.
Но есть другой вариант - поставить на сайт виджет CHAT-BAR - это ссылки на мессенджеры, соц.сети и телефон, которые открываются прямо в приложениях на телефоне. Можно написать свой Call-to-action и поставить ссылку на Ватсап, Вайбер, Инстаграм, Ютуб и т.п. посмотрите здесь https://skobelkin.ru/ 
Вот плюсы виджета:

Виджет бесплатный
Все ссылки открываются сразу в приложениях на Андроиде и iOS правильно
Конвертирует мобильный трафик в подписчиков
Позволяет быстро связаться с компанией по любым средствам связи

---------------------
Есть конструкторы ссылок для Ватсап, выбирайте:
https://cli.co/US-49CH
https://cli.co/Hsi6gZv
https://cli.co/hvBtrev

Худший ответ: Ссылка должна быть вида "<a href="whatsapp://+1234567890"></a>". 
Со скайпом такое прокатывает. (<a href="skype://+1234567890"></a>).
P.S. Насчёт правильности ссылки на WhatsApp не знаю, поэксперементируй :)
Вопрос: Что использовать при кешировании запросов MySQL в PHP

Лучший ответ: Еще почитайте про redis. Сам его использую для кеширования. Может лучше подойдет вашему проекту, чем мемкеш.

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

Лучший ответ: например, вот www.albahari.com/threading/ 
у Рихтера тоже довольно хорошо, доходчиво описано
Ещё очень хорошая книжка Joe Duffy: Concurrent Programming on Windows

Худший ответ: Обзор особенностей в .net 4.0 — видео и статья
Вопрос: Сервис отзывов об организациях — могут ли засудить?

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

Худший ответ: могут
Вопрос: Установка некруглого количества процентов на долю инвестора?

Лучший ответ: Размывать доли лучше так, чтобы у учредителей было 2/3 %% акций, а остальное у инвесторов. Это дает право вашего голоса. 
Но тут все зависит от Устава… там можно прописать что угодно. ИМХО.

Худший ответ: Аргументация любая. Вообще на сколько значимы эти 40% прописывается в уставе и договоре. Можно, например, запретить эти 40% продавать или продавать дороже (дешевле) чем… Так что надо смотреть не на %% долей, а на то что реально можно с этими процентами сделать и что кроме денег получить за передаваемую долю.
Вопрос: Софт (SaaS) для управления проектами?

Лучший ответ: Незнаю удовлетворт ли все ваши требования — assembla.com

Худший ответ: Если кто-то будет искать решение:

Остановился пока на codebasehq.com, не все идеально, но оптимально, из того что было.
Вопрос: Как в htaccess реализовать правила для url'ов со слешами?

Лучший ответ: Можно. Суть такая: 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

Худший ответ: Попробовал, прописал в .htaccess следующее:AddDefaultCharset windows-1251

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.php
но по адресу tesla-wave.ru/buy отображает следующее:
The requested URL /i was not found on this server.
Вопрос: Как локально обновить пакеты на ubuntu 10.4?

Лучший ответ: На машине, где нужно обновиться:
# apt-get --print-uris -y dist-upgrade |grep ^\'|awk -F "'" '{print $2}' > urls.lst
Файлик копируем на машину с инетом. И там:
# wget -i urls.lst
Что накачает несем обратно на первую и запускаем по папке с накаченным:
# dpkg -R 

Худший ответ: Все ребят, спасибо, совершенно забыл про dpkg

Как решил задачу:
скопировал кэш с сервера 1 на сервер 2 в /home/user/arc и выполнил там sudo dpkg -i *
Вопрос: Как проверить доступность сайта с помощю Python?

Лучший ответ: В requests при совершении запроса по-умолчанию сходу читаются только HTTP-заголовки ответа, а у тела ответа "ленивая" загрузка, то есть оно не начнет загружаться (и не процесс не останавливается в ожидании) до тех пор, пока не будет прямого обращения к свойствам text или content. Если смотреть только заголовки и не обращаться к телу, то размер HTML-страницы не будет влиять на скорость опроса адреса на доступность.

Худший ответ: не поможет: aderkin.ru/posts/162 ?
то есть получаем не страницу а только код ответа
Вопрос: Есть ли у ВКонтакта аналог фейсбукового User.third_party_id?

Лучший ответ: В своём проекте, для авторизации мы используем их Open API, а точнее его метод VK.Auth. В базе храним ID пользователя, потому что т.к. запросы подписываются с помощью md5 — подменить их невозможно.

Худший ответ: В общем, решил проблему следующим образом:

1. Клиентским приложением производится авторизация OAuth с целью получения access token.
2. Access token передаётся на наш внутренний сервер, который обращается к ВКонтакте и получает ID пользователя по access token.
Вопрос: Какой JS фрэймворк/библиотеку использовать совместно с laravel?

Лучший ответ: AngularJS и выстроить структуру js-файлов по принципу MVC

Худший ответ: Какую js-либу лучше знаете, ту и применяйте. Если никакую не знаете - поищите учебные материалы, и то, что вам покажется проще, то и юзайте. Для laravel абсолютно перпендикулярно, какой js-фреймворк вы выберете.
Вопрос: SMS-шлюз — работающий по миру?

Лучший ответ: www.nexmo.com/
есть ещё www.twilio.com/sms, но там долгая регистрация для российского номера — пока не успел их попробовать.

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

Лучший ответ: Вы выбираете все элементы с классом link, соответственно вам возвращается не элемент, а объект. Если, так же как и я, не шарите в javascript, то добавьте ID необходимому элементу и замените getElementsByClassName на getElementById ))

Худший ответ: Вариант с jQuery обработчиком собычтия on() - подпишите ваши элементы просто: $( "link" ).on( "click", function() {
    // ваша логика обработки клика
});
Чтобы имитировать клик потом - используйте .click()
Вопрос: Как, верстая в текстовом редакторе, быстро искать нужный блок/элемент?

Лучший ответ: Охренеть, что за туча букв.
Отвечу на вопрос в заголовке - чтобы искать нужную строку в css мне помогает firebug(ну или по вашему желанию можно и консолем пользоваться).
В самом редакторе, чтоб поискать нужное мне помогают две сочетания клавиш - Ctrl+G - для перехода на нужную строку, Ctrl+F - для поиска данных в документе.
Поиск файлов с каким-то текстом - totalCommander + его удобный поиск.
А если крупный проект, то PHPStorm и его удобства помогают

Худший ответ: Не читал стену, в саблайме Ctrl+R
Вопрос: Праздники и традиции в it-сфере ?

Лучший ответ: www.denaie.ru/?p=145 обширный список наших праздиков, о половине из которых я даже и не знал до сегодняшнего дня :)

Худший ответ: www.denaie.ru/?p=145 обширный список наших праздиков, о половине из которых я даже и не знал до сегодняшнего дня :)
Вопрос: Где найти информация по Angularjs + MongoDB ?

Лучший ответ: Так там же все верно ответили. Не знаю, понимаете ли Вы или нет, но Angular - это фреймворк для клиентской части приложения. Он работает на страничке в браузере у пользователя, который открывается Ваш сайт. Ему совершенно до лампочки какой у Вас сервер, и это может быть хоть Node, хоть Java, хоть PHP. Общаться с сервером Вы все равно будете по HTTP. А доступ к базе в Вас будет только на сервере, из серверного кода. И какой язык и фреймворк Вы будете использовать для запросов к базе - это уже Вам выбирать.
Именно поэтому Вам трудной найти ответ на вопрос о связке Angularjs + MongoDB, потому что они никак не связаны. Они вообще друг с другом не встречаются никогда, между ними всегда есть еще кто-то.

Худший ответ: Между ангуляром и монго у вас чего-то не хватает :) 
На scotch.io есть хорошие вводные статьи.
Вопрос: Ошибки авторизации и голосования на Хабре?

Лучший ответ: deniskin балуется)

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