pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Что случилось с юзером DeadFine?

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

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

Лучший ответ: Wireshark в помощь. Пров сможет увидеть ровно то же самое.

Худший ответ: Есть такая область в информационной безопасности - traffic fingerprinting. Предмет области - распознавание определенных видов трафика, связывание их с определенными протоколами, приложениями, сервисами. Достаточно часто это возможно сделать, даже если сам трафик зашифрован. То есть содержимое передаваемых данных остается неизвестным, но известным становится факт использования какого-то сервиса или приложения. Признаки для этого могут быть самые разные - от вполне конкретных байт в IP-пакете или конкретных адресов серверов, к которым вы обращаетесь, до статистического анализа.
От первых двух вариантов, например, тот же VPN спасает, заворачивая соединение в тоннель, из которого оно выходит только после VPN-сервера, которым вы пользуетесь (который, вероятно, находится вне досягаемости вашего провайдера). Но наличие самого VPN-соединения провайдер определить, скорее всего, сможет.
Что касается конкретных мессенджеров - нужно изучать каждый случай и читать исследования на эту тему. Анализаторы трафика (в т.ч. коммерческие) могут иметь списки обнаруживаемых протоколов в документации.
Вопрос: Кто зарабатывает больше программиста?

Лучший ответ: Депутаты))))

Худший ответ: Что касается высшего тех. образования (не IT) то единственное что я знаю, это то что мой отец работает в IKEA, платят инженерам там ну ооочень хорошо, попасть по блату туда невозможно. В обязанности входит обслуживание систем пожарной безопасности, работы эскалаторов, лифтов и тп.
Вопрос: Apache, NGINX, PHP-FPM — что лучше?

Лучший ответ: Наши тесты показали значительное ускорение при nginx +php5-fpm по сравнению с apache+mod_php. Пора уже использовать прогрессивные технологии, а не ставить по старинке Apache. Вот наш рецепт:
 — собственно nginx+php5-fpm
 — apc для локального кэша, memcached для сетевого
 — бд Percona XtraDB, потом перешли на MariaDB+XtraDB
 — ssd для оси, выключить журналирование, включить trim
 — ежедневный backup на hdd, недельный через сеть.
В общем данные мероприятия существенно увеличили производительность.

Худший ответ: Был опыт хостинга сайтов на этом типе инстанса. По памяти и скорости связка nginx+php-fpm показала себя лучше да и сейчас не вижу смысла начинать проект с апачем. БД будет тесно по оперативке и она будет периодически выдавать фризы, связанные с работой с диском.
Опять же из опыта на t2-micro прикручивание CloudFlare дает ощутимое снижение нагрузки на сервер за счет кеширования статики и, соответственно, снижения количества запросов на сервер.
Вопрос: Существует плагин для firefox позволяющий пускать отдельные сайты через прокси?

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

Худший ответ: Существует стандарт на автоконфигурацию прокси в браузере - pac файл, который можно прописывать в виде http ссылки на него, это javascript файл с методом, который по url должен вернуть прокси, с помощью которого его нужно открывать. работает во всех браузерах без исключений.
https://habr.com/ru/sandbox/19972/
Вопрос: Ebay-помогите, не могу выкупить лот

Лучший ответ: Напишите в супорт.

Худший ответ: А попробовать повторно купить товар не пробовали ?
Вопрос: Как сложить пропускную способность нескольких интернет-каналов от разных провайдеров?

Лучший ответ: en.wikipedia.org/wiki/Link_aggregation#Link_Aggregation_Control_Protocol
Я правда не уверен, сможете ли вы использовать это поверх PPP линков.

Худший ответ: Если вы хотите разделить одно TCP соединение на нескольких провайдеров… Блин, это сложно. Крайне сложно. А вот, например, те же торренты, где куча TCP, легко можно распараллелить на несколько провайдеров в линуксе, например.
Вопрос: Как вернуть владельца корня системы по шаблону на ubuntu server?

Лучший ответ: forum.ubuntu.ru/index.php?topic=159923.msg1177393#...
нда, у rpm есть ключик, позволяющий восстановить права по данным в rpm базе

Худший ответ: я при помощи find искал и исправлял права доступа по шаблону как то раз, можно ли сделать то же самое но изменить владельца?
Вопрос: CSS — обязательно же ставить в конце строчки «;»?

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

Худший ответ: Ставить обязательно. И обязательно использовать минификатор CSS. Это не дело — при написании кода заботиться о его минификации за счёт синтаксиса.
Вопрос: Какую систему управления хостингом поставить?

Лучший ответ: Никакую. Для панели надо хотя бы 1Гб оперативы, тем более с Apache.
Для управления доменами разве у хостера нет панели? DNS ведь все равно не у себя будете на VPS держать, у Вас там и так памяти еле-еле на Apache + MySQL. А для создания и заведения виртуальных хостов для домены Вам панелька не нужна. Копируете конфиг, редактируете и делаете a2ensite + рестарт Apache.
А вообще для такого слабенького сервера надо Nginx, PHP5-FPM с OPcache, MariaDB. Для Apache и стандартного MySQL памяти маловато. Купите лучше Digital Ocean за $5/мес - 512Мб будет получше, хотя разница не разительная. Зато трафика побольше, процессор пошустрее, места в 4 раза больше, еще и SSD.

Худший ответ: ispconfig половина фич отключается
вы после конфигуации серверов можете ее просто отключить
Все конфиги будут жить в файлах
и проверьте crontab -l
Вопрос: Javascript. Цепочка вызовов по очереди?

Лучший ответ: А что вас в приведенном примере не устраивает? Оно же и будет по цепочке вызываться.

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

Лучший ответ: Такое впечатление, что вы сейчас находитесь в каком-то своём уютном мирке и там сами себе придумываете проблемы и пытаетесь их решить.
Давайте вы ещё 2 годика поработаете, а там может вопрос и сам отпадёт.

P.s. А если будете нормальным специалистом, HR-ы сами вас найдут.

Худший ответ: Будущее как по мне за облачными вычислениями. То есть за портальными решениями. Да и работы во фрилансе до фига по данному направлению в отличие от того же c# и Java. Так как вы больше пишете на js. Посоветовал бы Вам посмотреть в сторону node.js. На нем не только серверную часть но и простые десктопные приложение можно писать. В силу вашей локации и текущих знаний советовал бы на веб больше делать уклон. Данные знания и в маленьких городах полезны. Сейчас все больше частников заказывают сайты.  Вот тут давал хорошую ссылку на обучение node.js
Вопрос: Есть ли возможность отследить местоположение сайта?

Лучший ответ: Платный доступ на alexa.com.
там есть такая статистика.

Худший ответ: Есть ещё myip.ms - там есть определённые функции геолокации - но простого способа найти все IP (привязанные по геолокации к определённой местности) нет. Уже упоминалась Alexa, которая также даст часть сведений (только об известных сервису ресурсах).
Вопрос: Стоит ли приступать к изучению Jquery, если ты занимаешься Javascript 2 недели?

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

Худший ответ: Можно и нужно.
Насчёт неактуальности jQuery не согласен с Алексей Уколов.
Считаю, что взаимодействие с DOM у jQuery более простое, а поэтому и более понятное.
Но, безусловно, синтаксис javascript надо научиться понимать, чтобы избегать тривиальных ошибок.
Вопрос: Как в XMLHttpRequest readyState и status получать одновременно?

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

Худший ответ: Проблема заключалась в том, что у кнопки формы тип стоя submit и на сервере не хватало заголовков для кросдоменной работы.
Кнопке поменял атрибут на type="button" и на сервере дописали пачку заголовков:var result = new HttpResponseMessage();
result.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
result.Headers.Add("Access-Control-Allow-Methods", new[] { HttpMethod.Post.Method, HttpMethod.Get.Method });
result.Headers.Add("Access-Control-Allow-Headers", new[] { "*" });
Вопрос: Что бы учить Laravel, обязательно знать php полностью или основы подойдут?

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

Худший ответ: необходимо знать основы ооп а там по месту разберешся, что и куда)
Вопрос: Google apps переход с платного аккаунта на бесплатный

Лучший ответ: Как давно? Если 30 дней не прошло — решается простым отказом:

1. Зайти в админку -> настройки домена -> подписки (Subscriptions & Billing)
2. Нажать отмета для Google Apps для бизенеса, подтвердить

Если больше 30 дней — попадалово ( www.google.com/support/a/bin/answer.py?answer=1257646 ).

Худший ответ: Больше 30 дней:( Спасибо за ссылку.
Вопрос: Нужна программа для определения цвета на экране, выглядела она в виде прямоугольника с прицелом. Есть варианты?

Лучший ответ: даю официальное разрешение набрать tray color  grabber в поиске гугла

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

Лучший ответ: Я видел lighthttp и httpd, без субд (нужны в омновном настройки, они заносятся в ini или cfg файл), работают через cgi (fast), по этому обработка на чем угодно, но чаще на баше или php

Худший ответ: Проще всего самопальный. Все равно нет нужды в полноценном сервере. Можно и на вебсокетах сделать.
Вопрос: Как правильно писать код на jquery?

Лучший ответ: 1. Прекратите писать транслитом.
2. Кешируйте элементы DOM в переменных.
3. Вы трижды(и это только в одном куске кода) выбираете один элемент и применяете к нему метод .css(). Это делается одним обращением. А ещё лучше давать ему заранее заготовленный класс, вместо .css() метода
4. Имена переменных пишете в camelCase
5. Переменные с объектом jQuery предваряйте $

Худший ответ: Много $(document).ready ? Этому есть, как минимум, одно оправдание. Если страница формируется динамически из разных компонентов(view) и заранее неизвестно какие из них будут отображены. Хотя можно придумать механизм и в этом случае. Если у вас на одной view - 4 $(document)ready - это косяк, собирайте в одну. Всякие парные show/hide часто можно заменить на toggle/toggleClass. .hover если кроме проставления стилей не делает ничего - наверно тоже стоит вынести в css
Вопрос: Удаление вложенных классов в элементах табов?

Лучший ответ: Добавьте$('.tab-el.'+selected_member+'').siblings().find('.appear').removeClass('appear')
Даже так:$('.inject').on('click', function(event){
      event.preventDefault();

      $(this).addClass('tab-color').siblings().removeClass('tab-color');
      var selectedTab = $('.tab-el.'+$(this).data('type'));
      selectedTab.closest('ul').find('.appear').removeClass('appear');
      selectedTab.addClass('appear').find('.project').addClass('appear');

Худший ответ: Если я правильно понял, то при нажатии на любой таб должны скрываться (удаляться класс appear) все элементы .project и устанавливаться класс apper только у связанного по data-type блока. Тогда можно сделать так: $('.project').removeClass('appear');
А уже потом $('.tab-el.'+selected_member+'').find('.project').addClass('appear');
То есть логика такая: убрали у всех, установили у нужных
Вопрос: Лицензионное ПО в организации

Лучший ответ: Было вроде уже обсуждение — все бумаги будут использованы против вас, т.к. докажут, что вы изначально были вкурсе того, что нарушаете закон — и шли на это осознанно. Так что все подобные «договоры» только подтвердят вину и усугубят ситуцию.
Если вас вынуждают ставить нелегальное ПО — вы должны отказаться, при попытке уволить — обратиться в полицию о с жалобой, что работодатель просил нарушить закон и уволил за отказ. В таком случае разбираться уже будет прокуратура.
Дорожить компанией, которая вас подставляет под суд своим нежеланием платить, не имеет смысла.

Можете действительно попробовать прописать явно в договоре, что вы занимаетесь только обслуживанием, и явно же прописать, что вы не уполномочены заниматься установкой софта. Ну и естественно — следовать договору и софт не ставить. Тогда по идее должно быть труднее привлечь вас к ответственности, работодателю нужно будет доказать, что софт ставили вы. Правда тут получается такая ситуация, что вы знали о преступлении обсуждали что его будете совершать не вы — и ничего не сказали полиции, уж не знаю как это закон трактует.

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

Лучший ответ: отличный сайт по восстановлению флешек .

скачиваешь програмку чтоб определить PID&VID. По этим данным потом на этом же сайте находишь програмку чтоб перепрошить контроллер(или чтото там ) во флешке.

а восстановить инфу можно например Ontrack easy recovery  ( если увидит )

Худший ответ: Самое интересное, что мне помогла банальная Gparted (хотя и пользуюсь Kubuntu)(ГЛАВНОЕ - НИ В КОЕМ СЛУЧАЕ НЕ ПОЛЬЗОВАТЬСЯ КУБУНТОВСКИМ ПАРТИШЕН-ЕДИТОМ, ИЛИ КАК ОН ТАМ НАЗЫВАЕТСЯ, А ИМЕННО ГПАРТЕДОМ!!!)- просто пересоздал раздел и отформатировал. После этого нормально работает.
Кстати, тоже Transcend.

PS
Ох, сорри!
не понял, что она даже в lsusb не видится... Тогда мой совет не подойдет... :(
Еще раз извиняюсь!
Вопрос: Есть ли решение для чтение больших прайсов xls,xlsx?

Лучший ответ: Немного костыль, ноlibreoffice --headless --convert-to csv price.xls
А дальше работать с 1—2 мегабайтным CSV, это уже не проблема.

Худший ответ: В первую очередь нужно разобраться, из-за чего они столько весят. Например, если в них используются изображения, их нужно оптимизировать (никаких прозрачных PNG, BMP, TIFF - все изображения обработать в Photoshop). Если прайс велик из-за количества позиций - разделить на части. К примеру, один прайс для одной категории товаров, второй - для другой. Вот так мы решили проблему в своей компании.
Вопрос: Доступ к файлам посетителя из браузера — как объяснить что запрещен?

Лучший ответ: Объяснить так - скинуть ссылку, перейдя по которой он увидит: Все ваши файлы теперь зашифрованы, переведите $100500 на кошелек 64578934725243457938 чтобы получить ключ для расшифровки.

Худший ответ: Просто браузера недостаточно - установи клиенту на пк что-то типа https://docs.python.org/2/library/simplehttpserver.html и отдавай ему на локалхосте директорию, что ему нужна.
Вопрос: Для чего нужны пространства имен в PHP?

Лучший ответ: Ответ на ваш вопрос таков:Для чего нужны пространства имен в PHP?Правда по PHP не читал особо документации
RTFM, LMD

Худший ответ: using namespace std;
using namespace whatever;

cout >> foo() >> endl;
Что будет в C++, если whatever.cpp определяет cout ?
Вопрос: На чём можно написать чат?

Лучший ответ: > как?
Бесконечное количество возможных вариантов.
> на чём?
Удобней всего будет на NodeJS, можно на Golang попробовать.
> Суть проста: я запускаю, ввожу адрес страницы откуда он бёрет сообщения и выводит мне на экран.
Шта?? Либо вы имеете очень... своеобразное представление о том, что такое чат, либо вы хотите не чат, нечто другое.

Худший ответ: как сделать чат
Вопрос: Как сделать такой красивый бекграунд?

Лучший ответ: видеобг.джеэс гугл в помощь

Худший ответ: Ну как варианты:
1. BIGVIDEO.JS
2. Подборка из 5ти плагинов
Собственно когда-то использовал 1й плагин. А так-то да, гуглъ в помощь.
Вопрос: Как ускорить выполнение SQL запроса?

Лучший ответ: Таблица по status проиндексирована?

Худший ответ: SELECT COUNT(*) as count, status FROM users WHERE status = %status_id%
group by дорогая операция
для дальнейшего разбора запости EXPLAIN запроса
www.sitepoint.com/using-explain-to-write-better-my...
ИМО вешать триггер на таблицу с большим количеством апдейтов не очень хорошо
Вопрос: Спасает ли «сборка» email-адреса на странице с помощью javascript от спама?

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

Худший ответ: Нет, не спасает. Современные роботы построены поверх «безголовых» браузерных движков, например, phantomjs. После загрузки страницы, исполняется весь js-код. Большого умения для создания такого скрейпера не надо, единственное, он жрет много ресурсов, и скрейпить весь нет ним не будут. Если у вас будет засвечена большая база ценных мейлов, то вас это не спасет. Если же обычный сайтик-бложек, то вполне нормальное решение.
Вопрос: Как проанализировать количество одновременных звонков в определенную минуту?

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

Худший ответ: интересная задачка, у меня получилось как-то так. решал для себя, но вдруг пригодится:# -*- coding: utf-8 -*-
from pprint import pprint
from datetime import datetime, timedelta
from collections import defaultdict


INTERVAL = 15


assert 0 < INTERVAL <= 60, "алгоритм работает не совсем корректно при значениях интервала больше 60"


def get_time_list(start, end, interval):
    """
        Список "времен" в которые попадает звонок
    """
    t = start + timedelta(seconds=(interval - ((start.second % interval) or interval)))  # стартовое время в которое попадает звонок с учетом интервала
    res = []

    while t.time() <= end.time():  # используем .time() т.к. если сравнивать datetime можно перейти на следующий день
        res.append(t.time().isoformat())

        t = t + timedelta(seconds=interval)

    return res


with open('calls.log', 'r') as f:
    res = defaultdict(int)

    for line in f.readlines():
        start_time, duration = line.split()
        start_time = datetime(1, 1, 1, *map(int, start_time.split(':')))  # используем datatime вместо time, потому что к time нельзя прибавить timedelta
        end_time = start_time+ timedelta(seconds=int(duration))
        time_list = get_time_list(start_time, end_time, INTERVAL)

        for t in time_list:
            res[t] += 1

    pprint(res)
результат на вашем наборе:
{'11:02:15': 1,
 '11:02:30': 2,
 '11:02:45': 2,
 '11:03:00': 2,
 '11:03:15': 3,
 '11:03:30': 3,
 '11:03:45': 2,
 '11:04:00': 2,
 '11:04:15': 2,
 '11:04:30': 2,
 '11:04:45': 2,
 '11:05:00': 1,
 '11:05:15': 1,
 '11:05:30': 1,
 '11:05:45': 1,
 '11:06:00': 1,
 '11:06:15': 1,
 '11:06:30': 1}
Вопрос: Второе высшее тех.образование, стоит ли?

Лучший ответ: Только если ради диплома. Знаний не получите никаких. Разве что по математике и физике.

Худший ответ: Тут пишут, что диплом не нужен работодателю, возможно, это правда, но если вы хотите эмигрировать, то диплом по специальности очень даже нужен для иммиграционной службы.
Вопрос: В чем отличия void от Id в objective-c?

Лучший ответ: Вы наверное имели ввиду void* ?
Отличие в том, что id указатель на objective - c объекты, а void* указатель на неопределенный тип, или просто область в памяти (в которой может хранится все что угодно). 
stackoverflow.com/questions/1304176/objective-c-di...

Худший ответ: id - это объект objective-c
void - это пустота/ничто в С
void* - это указатель на переменную неизвестного типа в СUPD.
Если быть совсем точнее, то id это указатель на структуру объекта в objective-c
Если очень интересно, то можно посмотреть подробнее в usr/include/objc/objc.h/// Represents an instance of a class.
struct objc_object {
    Class isa  OBJC_ISA_AVAILABILITY;
};

/// A pointer to an instance of a class.
typedef struct objc_object *id;
Вопрос: Настенный док + таблетка

Лучший ответ: Могу порекомендовать взять какой-либо чехол для таблетки — для iPad родной чехол сидит как влитой — и уже чехол крепить к стене, что будет попроще.

Худший ответ: Может подпилить напильником автомобильное крепление?
Ebay: bit.ly/nx2ycH
Вопрос: Язык программирования в книге?

Лучший ответ: Freeduino/Arduino программируется на специальном языке программирования – он основан на C/C ++, и позволяет использовать любые его функции. Строго говоря, отдельного языка Arduino не существует, как и не существует компилятора Arduino – написанные программы преобразуются (с минимальными изменениям) в программу на языке C/C++, и затем компилируются компилятором AVR-GCC. Так что фактически, используется специализированный для микроконтроллеров AVR вариант C/C++.

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

Лучший ответ: Если хорошо знаете С# и .Net — оставайтесь с ними. Аргументы:
1. На фрилансах часто (но не так часто как веб) появляются небольшие проекты, которые возможно (и вероятно проще) делать на этой платформе, без денег не останитесь.
2. Изучение php, очень вероятно, приведет вас к тому, что вам прийдется конкурировать по стоимости со школьниками и другими слабыми программистами.
3. Лучше знать хоть что-то хорошо, чем знать многое но плохо. Став экспертом в области .Net вы легко сможете потом найти хорошую работу с over $n000 зарплатой.

P. S. Но, если в душе вы романтик, путь воинов света — с/с++))).

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

Лучший ответ: Вам нужно просто пробросить порты

Худший ответ: Поскольку "достучаться до внутреннего IP" на самом деле означает "достучаться до конкретного сервиса (порта) на конкретном внутреннем IP", обычно делают NAT-туннель (по другому именуемый "проброс портов").
Из Вашего описания непонятно, выполняет ли Usergate-сервер еще и NAT, либо просто маршрутизацию. Если выполняет NAT, то необходимо решить, нужен ли Вам второй NAT, а если нужен то туннелировать дважды.
Если же Вы хотите отображение ВСЕХ портов одного из внутренних АРМ один-в-один в некий белый IP, то Вам соответственно нужен отдельный (второй) белый IP на этом роутере и проверить, умеет ли он полный NAT (т.н. full-cone NAT)
Вопрос: SSL сертификаты в качестве механизма лицензирования программы

Лучший ответ: Двухсторонняя авторизация по сертификатам, доступ клиента регулировать отзывом клиентского сертификата со статусом 6 (On hold). Надо развертывать центр сертификации и интерфейс к нему. В умелых руках задача решается за пару дней, включая разработку архитектуры.

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