pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Подойдет ли Python для сложных математических расчетов?

Лучший ответ: Подойдет. https://habr.com/post/312268/

Худший ответ: Язык Julia похож на MatLab и по-моему больше подходит для сложных математических расчетов. Но о Python больше пишут, так что при помощи его библиотек тоже можно.
Есть еще Фортран.
Вопрос: Можно ли заменить полноценную БД на файлики json?

Лучший ответ: Защита от редактирования это не самая большая проблема которая вас ждет. 
Зачем вообще, по-вашему, придумали сложные и толстые системы для хранения  
данных? Только потому что кому-то делать было нечего?
Под угрозой целостность и непротиворечивость данных (нет транзакций, связей), скорость обработки больших данных (посмотрим на ваши файлики когда они будут весить 5гб). 
А защитить от редактирования данные локально можно просто зашифровав их.
Можно заменить базу файлами только в том случае, если объемы данных незначительны или проект не имеет дальнейшего развития и не будет использоваться

Худший ответ: Я использую файлики в проектах типа мини-админки, где нужно запаролить пару-тройку страниц и пользователей - один-два. Редактируется-сохраняется от силы 100 параметров, да еще и не каждый день, файлик самое то!!!
Вопрос: Есть ли вариант Live CD Ubuntu/Debian, чтобы я загрузился сразу в командную строку?

Лучший ответ: alexxzhuravlev: установите ubuntu server себе на флешку и грузитесь с неё. вот вам и рабочая система и нет графической оболочки. как раз при включении будете сразу в командой строке

Худший ответ: Ubuntu server ?
В параметры загрузки прописать без графического интерфейса?
Вопрос: PostgreSQL — почему не работает индекс на 50000 записях?

Лучший ответ: Postgresql посчитал что seq scan будет сделать быстрее. Почему они не используют мои индексы?

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

Лучший ответ: Открываешь файл проекта с расширением sln в Visual Studio, компилируешь и запускаешь.

Худший ответ: вам бы сначала разобраться какие проекты на .net бывают
Вопрос: Кто проходил сертификаты для тестировщиков — ISTQB или другие — это улучшило ваши навыки программиста?

Лучший ответ: Готовлюсь к ISTQB.
Это ни как не повлияет на ваши навыки программиста. Узнаете о тестировании о разных его методах и подходах, но в реальной жизни это ничего вам не даст если вы не собираетесь менять квалификацию. 
Стизя программистов это unit тестирование - вот об этом и читайте/изучайте ISTQB вам здесь не поможет.

Худший ответ: Есть поговорка "Встречают по одежке, а провожают по уму". 
На собеседовании вам по-любому надо будет показать свои знания. Но ведь надо еще сделать так, чтоб вас на него позвали! Любой сертификат это способ выделиться из массы других подобных специалистов. Не более. Более того качественная сертификация структурирует ваши знания. Возможно поможет посмотреть на себя со стороны. Повысит вашу уверенность в себе, а разве это плохо? Уверенный в себе и своих силах как правило большего добивается
Вопрос: Как обеспечить изменение жирности текста в значениях 300, 400, 600?

Лучший ответ: Скачать полный набор шрифтов?

Худший ответ: Это можно сделать только в том случае если подобные начертания поддерживает шрифт. Иначе браузер считает, что всё bold.
Вопрос: Как изменять данные внутри Angular 1.5 Component через внешний Service?

Лучший ответ: Немного странно, что компонент не должен знать о сервисе для отправки данных.
Вы можете пихнуть action через биндинги компонента {action: '&'}, если планируется, что эта форма будет использоваться с разными сервисами отправки данных.
Но это конечно очень странно : )

Худший ответ: На stackoverflow.com мне ответили:resolve: {
  values: function(Users) {
    return Users.get();
  },
  onUpdate: function(){
    return Users.update.bind(Users);
  }
);

bindings: {
    values: '<',
    onUpdate: '<'
},
И вы можете вызвать функцию так: $ctrl.onUpdate(data).then(...
Это вправду работает, как нужно.
Вопрос: Что должен знать джун (фронтенд) о linux?

Лучший ответ: Видел я людей, которые называли себя программистами и при этом до жути боялись открыть консоль и что-то в ней сделать. Думаю вы встречали таких. Их еще обычно издалека можно опознать по стремлению извратиться как угодно и поставить 100500 плагинов в свою ide, только чтобы не запускать консольку. Они как будно боятся мигающего курсора. Обычно это сопровождается боязнью экспериментов и вообще изучения нового. В первую очередь требование уметь работать с linux отсеивает подобных кандидатов.
В моем окружении фраза "навыки работы в Linux-системах" подразумевает, что вы можете настроить свое рабочее окружение, можете управлять зависимостями, запускать сборку, тесты, и при этом не отвлекать коллег тупыми вопросами в духе "я вошел в vim и теперь не знаю, как из него выйти". Какое-то серьезное администрирование наша профессия не предполагает (в компаниях, где оно вообще есть, обычно есть и отдельный админ), а вот все, что связано с повседневными задачами вы должны делать сами.

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

Лучший ответ: Жесть какая. 
Если это ваше постоянное место работы — могу лишь посоветовать бежать оттуда скорее.

Худший ответ: Заниматься своим делом, т. е. полиграфией. Почему-то в типографию никто не отдает sketch файлы.
Видно, что UI вашим коллегам не сдался, иначе бы они были бы в курсе отраслевых стандартов программного обеспечения. А значит там наверняка есть проблемы с юзабельностью и адаптивом - если они даже общепринятую среду осваивать не хотят. 
Figma бесплатная и осваивается на раз.
Вопрос: Где подобрать макеты для изучения CSS (верстка в Linux)?

Лучший ответ: Более менее популярные решения:AvocodeBrackets

Худший ответ: Мне было удобно юзать онлайн-фотошопТакой, например
Figma, кстати, прекрасна, сейчас все макеты на работе отдают в ней.
Ну, и наиболее популярная "замена фотошопу" в линуксе - GIMP
Вопрос: Где вы хостите email для каждого нового проекта?

Лучший ответ: Нахрена?
Google, Yandex, Mail - все давно уже много лет как обеспечивают почту на домене.
С антиспамом, надежным хранением и пр.
Потягаться с их возможностями - очень даже не просто.
И не стоит терять время.
Ведь у них это бесплатно на небольшом числе почтовых ящиков в домене

Худший ответ: На Яндексе держу DNS и мыло.
Вопрос: Как в VSCode переименовать открывающий и закрывающий тэги дновременно?

Лучший ответ: Придумал свой вариант: нажать Ctrl+D после двойного клика по одному тэгу, а дальше можно печатать новое название, и оно изменится сразу в двух

Худший ответ: Если я не ошибаюсь, Emmet встроен по умолчанию в этом редакторе. И в нем для переименования есть специальная команда - editor.emmet.action.updateTag.
Вопрос: Что за ошибка при попытке выполнить action?

Лучший ответ: Видимо ошибка тут:import {ADD_USER} from '../constans/appConstants';
Попробуйте вывести в консоль ADD_USER, скорей всего там undefined.
Возможно опечатка в пути импорта.
И еще, старайтесь в actionCreator возвращать полезную нагрузку в ключе payloadexport const addUser = (name, age) => {
    return {
        type: ADD_USER,
        payload: {
            name: name,
            age: age,
        },
    }
};

Худший ответ: может проблема в том что у вас файл appConstants без .js
Вопрос: В каких типах бекенда PHP лучше NODE.js?

Лучший ответ: Всё, что умеет php, можно написать на node. Может недоставать каких-то сторонних библиотек или фреймворков, но по возможностям нода превосходит php.
Только там совсем другая парадигма, поэтому человеку привыкшему к php может быть сложно перестроиться.

Худший ответ: в каких случаях NODE.js не заменит PHPВ случаях, когда на хостинге доступен только PHP. ;-)
Вопрос: С чего лучше начинать VisualBasic или C#?

Лучший ответ: VisualBasic (тот, что .NET) почти ничем не отличается от C#, кроме синтаксиса. Есть даже конвертеры из одного языка в другой - пишете программу на VB, получаете на выходе C# (и наоборот). Но я не советую начинать с VB, так как это фактически мёртвый язык, несмотря на то, что в самом авторитетном рейтинге популярности языков программирования он выше C#. Причина тому - США. Там до сих пор активно нанимают VB-разработчиков, которым приходится поддерживать устаревший код. Особенно это касается банковского сектора. Платят за VB больше, но копаться в легаси - то ещё удовольствие.
В общем, учитывая, что оба языка - детища Microsoft, и что сама компания активно продвигает C#, лучше сразу начинать с него.

Худший ответ: Учите платформу, пишите код на C#
Вопрос: JavaNetSim. Как пропинговать от роутера к ПК, который за другим роутером?

Лучший ответ: ну а как вы его без маршрута собрались пинговать? 
Оооо Рональд Макдональд добрый вечер, коллега) Только начинаю изучение построения сетей. 
Я так понимаю вы еще даже первую страницу не дочитали))
Router5:
route –p add 192.168.1.0 mask 255.255.255.0 128.100.30.2
Могу ошибиться с синтаксисом, ибо давно не писал маршруты, но суть я думаю донёс.
Прошу к ознакомлению: https://linkmeup.ru/blog/14.html

Худший ответ: На Router5 нет маршрута к подсети PC1, роутер не знает, куда направлять эти пакеты. От роутера к роутеру связь есть, потому что есть маршрут.
Пропишите на нём маршрут до подсети 192.168.1.0 на eth1.
Вопрос: Почему x64 система потребляет больше ресурсов, чем x86?

Лучший ответ: Указатели занимают в 2 раза больше места в RAM.

Худший ответ: >>x64 использует больше ОЗУ, нежели x86, с чем это связано, ведь по логике x64 должна быть в два быстрее, т.к. шина на 64 бита.
в x86 адресная шина и fpu имеет размер 64 бита  с первого Pentium.   
>>Почему x64 система потребляет больше ресурсов, чем x86 ?
Ну так регистр был из 32 бит, стал 64.  Все целые числа, строки, структуры выравниваются по границе 64 бита. Вот тебе из размер вырос.
Вопрос: Вывести случайное число которое делится на 3 без остатка?

Лучший ответ: Можете просто умножить любое случайное число на 3

Худший ответ: var randomNum = 0;
  do {
    randomNum = Math.floor(Math.random() * 10) + 1 ;
  } while( randomNum % 3 == 0)
Попробуйте в последней строке заменитьwhile( randomNum % 3 == 0)
наwhile( randomNum % 3 != 0)
Вопрос: Возможно ли форкнуть сырцы программы, чтобы сворачивать произвольный софт в трей при нажатии на «крестик»?

Лучший ответ: Давно ищу на этот вопрос ответ, пока нашёл только RBtray 
Там есть исходники, но они настроены так что нажимать надо правой кнопкой мышки, и по кнопке свернуть, а не по кнопке "Закрыть", надо както переделать этот блок кода который отвечает за это, если вы можете, то сделайте пожалуйста и отпишитесь если сможете, тоже интересует такая функция очень нужна для всех программ
Source-файлы RBtray:

Худший ответ: Обычно такое реализуется со стороны софта. Сомневаюсь что кто-то писал такое решение, но теоретически это возможно - перехватить сообщение WM_WINDOW_DESTORY(не передавая его обработку в программу - hook), свернуть, добавить в трей(область уведомлений) значок, убрать с панели задач окно. При щелчке на значок, добавть окно на панель задач, развернуть окно. В новых версиях windows такие хуки(вмешательство в другую программу) могут не работать - потому что их использовали всякие adware и прочая гадость.
Вопрос: Как в адресной строке сайта скрыть IP-адрес сервера?

Лучший ответ: если апач то в .htaccess RewriteEngine on
RewriteCond %{HTTP_HOST} !^mysite.com$ [NC]
RewriteRule ^(.*)$ http://mysite.com/$1 [L,R=301]
если nginx то в его конфиге:if ($http_host !~ "^mysite.com$"){
rewrite ^(.*)$ http://mysite.com$1 redirect;
}

Худший ответ: настройте апач на прием только с домена и все) как? пишите в поддержку хостинга - так просто не расскажешь
Вопрос: Куда семантичнее класть H1 — в HEADER или в MAIN?

Лучший ответ: В упрощенном видео обычно либо <header><nav></nav></header>
<main> 
  <section class="hero"><h1></h1></section>
</main>
либо<header>
   <nav></nav> 
   <section class="hero">
     <h1></h1> 
   </section>
</header>
У меня лично это зависит от того, разные ли hero-секции на страницах или однообразны. Не вижу особой разницы в смеантике между двумя вариантами.

Худший ответ: В заголовок это куда? В title что ли? И что такое MAIN? Заголовок должен быть в теле документа.
Вопрос: Как определить что крадёт место на сервере, когда физически занято не более 30% диска, но ncdu установить невозможно?

Лучший ответ: На корневом разделе слишком много файлов - свободные айноды (inodes) закончились.

Худший ответ: Вопрос был конечно глупый. Была забита папка tmp
Если кому понадобится простое решение:find . -type f -exec rm -v {} \;
Вопрос: Как лучше начинать отсчет ID, с нуля или единицы?

Лучший ответ: Понятия не имею, о какой РСУБД/СУБД идёт речь, но в некоторых нулевой индекс зарезервирован под primary key.
Короче, вопрос из разряда "я тут еду по дороге, ехать мне налево или направо?".

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

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

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

Лучший ответ: Сервлеты - это не старая технология. Последней версии чуть больше года.

Худший ответ: Особенно пугает куча конфигураций через xmlЭто потому что вы сами не писали конфигураций ))). XML/JSON, иногда ini. Больше ничего по сути и нет.
Вопрос: Когда стоит переходить на новые версии Python и когда это надо?

Лучший ответ: Это зависит от вашего темперамента.
Если вы во всём гонитесь за последними веяниями, переходить, конечно же, надо.
Если же вы придерживаетесь более консервативных взглядов и вас не парит, что вы в мейнстриме - тогда не обязательно.
Вы только что прочли наилучший материал по вашему вопросу.
UPD.
Версии на 100% совместимы снизу вверх.  Спокойно можно.

Худший ответ: Можно ли спокойно писать на 3.5 потом перейти на 3.6 и.т.д.
Да, ветка 3.х обратно совместимая (на 99,9%), хотя некоторые либы забивают на старые версии, что вообщем то не страшно, а иногда и оправдано.
PS: Я уже на 3.7 с недавних пор...
Вопрос: В чем преимущество Vagrant (если сравнивать с OpenServer или даже DENWER)?

Лучший ответ: плюс докера(и вагранта и т.д. - т.е. контейнеров) в том, что когда Вы создадите свой проект, клиенту можно будет отдать контейнер.  в таком виде все однозначно заработает у клиента - т.к. это работало у вас. Заработавшее на OpenServer далеко не факт что заработает на хостинге, на Denwer  и т.д. - начиная от путей и прав, и заканчивая версиями библиотек\настроек php. Плюс с контейнерами просто релизовать тестирование Вашего кода в разных версиях php\mysq и т.д.  
 т.е. если  Вы только начинаете и учитесь PHP -  начинать с OpenServer вполне можно. Но освоить линукс в будущем в минимуме придется.

Худший ответ: на счет вагранта и докера ничего не скажу не работал. для себя использовал такую схему:
ставил виртуал бокс туда centos и далее LAMP и заливал по фтп файлы, эмулируя работу хостинга. 
Я понимаю примитивно и старо как Hello world но мне так лучше нежели  денверы и опенсерверы
Вопрос: Как оплатить $99 iOS Developer Program Membership без CVV проверки?

Лучший ответ: Не именные карты (они же unembossed) и electron/maestro не предназначены для оплаты в онлайне.
CVV2 у visa (он же CVC2 у mastercard) есть на всех картах предназначенных для оплаты в Интернете. 
Опять же проблем с оплатой 3ds у эппла нет, т.к 3ds реализуется целиком на стороне банка выпустившего карта.
У сбера с этим традиционно проблемы (как впрочем и со всем остальным)
Закажите карточку в нормальном банке, например в Альфе.
PS
Конкретно сбербанк придумал такую гадость как "внутрибанковские карты" (туда попадают все социальные, часть зарплатных и раньше точно попадали electron/maestro).
Cуть в том что не смотря на то что на карте написано visa/mastercard на самом деле эта карта просто выпущена по технологии visa/mastercard, но к единому процессингу не подключена, visa/mastercard про неё ничего не знают и соответственно использовать карту вне терминальной сети банка эквайера не получится (при этом CVC2 на карте может быть).

Худший ответ: А вы пробовали и не получается? 3ds штука не обязательная и зависит от настроек эквайринга, поэтому если в РФ вам будет всегда выпадать 3ds то при оплате в США может запросто пролететь без него
Вопрос: Как сделать post запрос swift?

Лучший ответ: Собственно лови:
Pod Alamofire 
https://cocoapods.org/?q=alamofire
Pod SwiftyJSON
https://cocoapods.org/?q=json
Pod SwiftyXMLParser
https://cocoapods.org/?q=lang%3Aswift%20XML
Ну и в добавок поставь RealmSwifty для хранения данных
https://cocoapods.org/?q=Realm
Думаю, что разберетесь как их закинуть в проект.
И да когда будешь гонять на симуляторе в plist'e разреши соединения с сетью.

Худший ответ: Вот простой рабочий пример: https://www.youtube.com/watch?v=0bV9r1rY2cw (смотреть вторую половину видео, в первой рассказывает про GET)
Вопрос: Как удалять файлы с рабочих столов пользователей?

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

Худший ответ: Создал в лесу группу добавил пользователей, и применял к компьютеру и к конфигураций пользователей. может сценарий нужно создать. Что при выключений компьютера,  запускать данный батник?
Вот сам батник:
@Echo off
shutdown -a 
Echo "Внимание! Сейчас будет произведена очистка компьютера."
timeout 5 /NOBREAK
echo Поиск файлов и папок.
2>nul (for /f "eol=: tokens=*" %%i in ('WHERE /F /R C:\Users\%username%\Desktop\ *.doc, *.xls, *.pdf, *.tiff, *.png, *.xml., *.cvs, *.git, *.rtf, *.bmp, *.jpeg, *.rar, *.zip, *.xmind') do del %%i)
echo Удаляем временные файлы системы.
del C:\Users\%username%\AppData\Local\Temp\* /S /Q
del C:\Users\%username%\Downloads\* /S /Q 
del C:\Windows\Prefetch. /Q
del C:\Windows\Temp. /Q
del C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Recent\* /S /Q 
del /F /S /Q "C:\Users\%Username%\AppData\Local\Microsoft\Windows\Temporary Internet Files\*"
shutdown -s -f -t 0
exit /b
Вопрос: POST вместо DELETE?

Лучший ответ: Нормально лиНе огонь, но нормально. Главное, не GET.Вроде как многие большие компании упрощают таким образом.Что они упрощают?Какие последствия?Рой Филдинг, автор концепции REST, по ночам будет сниться и смотреть с укоризной.

Худший ответ: Нормально лиНе огонь, но нормально. Главное, не GET.Вроде как многие большие компании упрощают таким образом.Что они упрощают?Какие последствия?Рой Филдинг, автор концепции REST, по ночам будет сниться и смотреть с укоризной.
Вопрос: Почему не работает функция help в Python?

Лучший ответ: Потому что у вас python 2.7, скорее всего.help():Invoke the built-in help system. (This function is intended for interactive use.) If no argument is given, the interactive help system starts on the interpreter console. If the argument is a string, then the string is looked up as the name of a module, function, class, method, keyword, or documentation topic, and a help page is printed on the console. If the argument is any other kind of object, a help page on the object is generated.

Худший ответ: Работает. Это встроенная справка, в ней нет информации об объектах созданных пользователем.>>> help('spam')
No Python documentation found for 'spam'.
Use help() to get the interactive help utility.
Use help(str) for help on the str class.
 Для строки попробуйте:help(str)    # в python3 можно help('')
Вопрос: Как поступить с приемом платежей в интернет магазине?

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

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

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

Худший ответ: Всё это относительно. Все хостинги (нормалные) делают ограничения по пользователю - т.е. права только в его (пользователя) папке. Т.е. дальше этой папке "хакер" ни куда не продвинется. Максимум могут залить какой нить вирус (или другое подобное ПО, которые насолит вам и/или вашим пользователям) и т.п.
Так что лучше делайте валидацию на работу с данными.
Вопрос: Как правильно агрегировать коммутаторы?

Лучший ответ: Предлагаю посмотреть:
1. Как настроена балансировка?
2. Как замерялась скорость?
Эти вопросы связаны, на самом деле: для того, чтобы понять, в какой порт LAG засунуть Ethernet-кадр, коммутатор вычисляет хэш-функцию от выбранных при настройке полей кадра и берёт остаток от деления хэша на количество линков в LAG.
По умолчанию, как правило, хэш считается от Source MAC + Destination MAC.
Также, обычно можно руками включить использование для вычисления хэша:
 - Source ip/Destination ip
 - Source port/Destination port
На практике же это означает, что:
1. Чем больше _разных_ MAC/ip-адресов проходит через LAG, там равномернее распределяется трафик
2. А вот установленное TCP-соединение не "размажется" по линкам и при, например, загрузке файла по FTP скорость всё равно упрётся в скорость одного-единственного линка, будь их там хоть все восемь

Худший ответ: Я понимаю что я получаю 400 по скоростям :) 
Нет, etherchannel это в первую очередь технология отказоустойчивости, а не повышения пропускной способности линковНе совсем понимаю как будет работать данная схема если у всех chanell-group 1 mode on
номера групп имеют локальное значение и не обязаны совпадать на разных коммутаторах
Вопрос: Как изучить китайский рынок приложений перед разработкой образовательного приложения?

Лучший ответ: примерно так
Как находить доски объявлений других стран?
+на инглише бывают топовые обзоры от внутренних китайцев
но проще переехать в Шенчжень и поесть ухи

Худший ответ: Поехать в Китай это же дешёво нынче
Вопрос: Как самостоятельно написать мессенджер на Java?

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

Худший ответ: Как написал Igor Vorobiov - изучить сокеты. Как вариант - двигаться в сторону своей реализации протокола XMPP. Для начала можно взять готовый сервер и написать к нему клиент. Потом посмотреть как сделан сервер (Openfire на Java) и написать свой. А можно вообще круто завернуть и написать свой протокол.