Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как подходить к поиску мобильных разработчиков?

Лучший ответ:
Смотря каков ваш бюджет.
Вообще, цены реально могут отличаться на порядки, в зависимости от студии. 
Региональные будут сильно дешевле, Москва-Питер сильно дороже. 
При наличии дизайна и backend будет, конечно, дешевле, но понадобится время на согласование деталей (доки по апи, необходимость адаптации дизайна под гайдлайны iOS/Android, есть ли  у вас готовые экраны...)
Индивидуальные разработчики (фрилансеры) сделают дешево, но качество может страдать.
Если бюджет небольшой, до 500 тыр, я бы советовал поискать в Нижнем, там хорошие студии и делают не дорого.
Обязательно спросите, использует ли студия тесты, Unit, UI/UX и что для этого используется, определяется ли покрытие кода тестами. Без этого можно получить неподдерживаемый продукт и кучу проблем в будущем.

Худший ответ:
Смотря каков ваш бюджет.
Вообще, цены реально могут отличаться на порядки, в зависимости от студии. 
Региональные будут сильно дешевле, Москва-Питер сильно дороже. 
При наличии дизайна и backend будет, конечно, дешевле, но понадобится время на согласование деталей (доки по апи, необходимость адаптации дизайна под гайдлайны iOS/Android, есть ли  у вас готовые экраны...)
Индивидуальные разработчики (фрилансеры) сделают дешево, но качество может страдать.
Если бюджет небольшой, до 500 тыр, я бы советовал поискать в Нижнем, там хорошие студии и делают не дорого.
Обязательно спросите, использует ли студия тесты, Unit, UI/UX и что для этого используется, определяется ли покрытие кода тестами. Без этого можно получить неподдерживаемый продукт и кучу проблем в будущем.
Вопрос: Получить список файлов из ZIP

Лучший ответ:
Как-то так:

import java.io.FileInputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public class LsZip {
    public static void main(String[] args) throws Exception {
        byte[] zipBytes = ...;
        ZipInputStream zis = new ZipInputStream(new ByteArrayInputStream(zipBytes));
        ZipEntry entry;
        while ((entry = zis.getNextEntry()) != null) {
            // здесь делайте то, что вам требуется с entry.getName()
        }
    }
}


Худший ответ:
Ну и собственно пример выше, разобранный чуть подробнее:

50 4B 03 04 //сигнатура хедера локального файла, читать как 0x04034b50
14 00 // version needed to extract, зависит от фич, использованных при 
      // создании архива, в основном различные алгоритмы сжатия
      // 0x14 соответствует версия 2.0
	
00 00 // general purpose bit flag - свалка различных флагов. Некоторые используются
      // разными алгоритмами, некоторые не используются вообще, некоторые зарезервированы
      
08 00 // метод сжатия, в данном случае Deflate
0D 9D и  5E 43 // DOS-время последней модификации файла, см. структуру FILETIME в WinAPI

33 C3 3A 4D // CRC-32 файла
30 04 00 00 // размер сжатого файла, 1072 байт
80 08 00 00 // размер исходного файла, 2176 байт
0C 00 // совершенно верно, длина имени файла
1C 00 // длина дополнительного поля
50 65 72 73 6F 6E 2E 63 6C 61 73 73 // собственно искомое имя файла. Никакого юникода, старый добрый ASCII

Надеюсь это помогло, если остались вопросы - задавайте, я в своё время немало головной боли помел с зип-файлами.
Вопрос: Mail Forwarding сервис со складом в безналоговых штатах

Лучший ответ:
Бандеролька

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

Лучший ответ:
Даже думать не надо ) явный лохотрон. Однажды, в самом начале карьеры фрилансера, сталкивался с такими "работодателями", начал переписку, в процесе тетка проболталась и выдала название печатного издания, от имени которого они работают. Представилась HR менеджером, назвала свое имя. Погуглив название конторы, нашел их сайт. Издание действительно сущетвует, но в разделе "Вакансии" такой вакансии небыло, более того - HR менеджер был совсем другой человек. Почта тоже была загадочная, типа Вашей labirint-press@labirint-freelance.ru )) ни один контакт что она мне скинула не нашел на их сайте. Погуглив, нашел даже форум, где этот вопрос уже много раз поднимали. После этого, раз и навсегда закрыл для себя эту тему )

Худший ответ:
Работа авито набита битком такими вакансиями. Этот вариант, как и работа бегунком (закладка наркоты) самые невинные, т.к. легко узнаваемые.
Есть еще менее очевидные работы для разнорабочих в зонах с особым контролем, например таможенный допуск порты, аэропорты, там стригут на оформление документов, вполне белых, нафиг не нужных. За 3000 вам сделают настоящий пропуск, а далее сам)))
Тот же грабель с визами, в Питере оч популярная вакансия на права категории В извоз в финку. Для работы нужно иметь деловую (рабочую) визу, далее по схеме ))
Более мерзки компании типа рекрутеры. Обшарпаная домина, пара комнат на 4 этаже падающего флигеля. Работают из под брендов, типа персонал нанимают. Типовой договор это ваши обязанности и штрафы за неисполнение.
Вопрос: Как подгрузить данные в ListView из SQLite при прокрутке списка?

Лучший ответ:
Используйте CursorAdapter. Он такие операции (подгрузка данных из БД окном) выполняет "под капотом".

Худший ответ:
1. Считать из базы некоторое кол-во данных.
2. Передать их в адаптер ListView
3. Установить обработчик скроллинга ListView
4. Поймать конец списка во время прокрутки
5. Подгрузить из базы следующую порцию данных
6. Передать их в адаптер
7. notifyDataSetChanged
Вопрос: Из кого должна состоять команда разработчиков для создания мобильного приложения?

Лучший ответ:
все просто: нужен динайн - нужен дизайнер, количество программистов минимальное обычно равно количеству задействованных частей (iOS, Android, сервер). В редких случаях какие-то компоненты может делать один разработчик (например и iOS и Android). При добавлении дополнительных людей производительность не будет расти линейно, так что все завист от уровня команды, возможностей по распаралеливанию работы над частями приложения, уровнях взаимодействия и масштабов проекта.
По поводу организации команды - это должно определиться внутри команды. Вы же менеджер. Введите дейли/стэндап/планинг митинги, скамы/канбаны, continious integration и delivery... Технические моменты можно определить командой.

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

Лучший ответ:
Какая задача? Задача? Зачем?
В настоящее время требуется уменьшать размер контента для тех же мобильных устройств.
Например: 
На странице слайдер с изображением размерами 1920x500 пикс. в формате *.jpg весом в 40-50 Кбайт., 3 штуки – 150 Кб.
Представляете сколько можно сэкономить времени на загрузку страницы отдавая клиенту значительно меньшие по размеру изображения зная размер экрана клиента.

Худший ответ:
все что ушло на клиент (а JS отрабатывает только на клиенте) обратно в php уже не получить. Только AJAX-ом отправить данные на сервер с клиента.
Вопрос: Как сделать, что бы windows 10 не впадал в глубокую спячку?

Лучший ответ:
Правой кнопкой на значке "Пуск" - Панель управления - Электропитание , там ваши настройки. Сейчас у вас режим сна включен.

Худший ответ:
Отключение "гибернации"
1. Нажмите кнопку Пуск и введите cmd в поле Начать поиск.
2. В списке результатов поиска щелкните Командная строка правой кнопкой мыши и выберите Запуск от имени администратора.
После появления запроса контроля на основе учетных записей пользователей нажмите кнопку Продолжить.
В командной строке наберите powercfg.exe /hibernate off и нажмите клавишу ВВОД. Как отключить автоматический переход в спящий режи...Изменение действия при закрывании крышки ноутбука
Вопрос: Игровой ноутбук до 30 тыр

Лучший ответ:
Любой ноут с Intel Core i5/i7 + 4Gb RAM + дискретное видео (для игр лучше от nvidia, не будет проблем с PhysX) потянет современные игрушки на минималках. Для большего нужен бюджет больше в несколько раз.

Худший ответ:
Lenvo Y560P. Пока лучшее, в соотношении цена/качесто, что есть на рынке.
Вопрос: Алгоритм подбора одинаковых вещей?

Лучший ответ:
красных сумок одинакового цвета
?

Худший ответ:
посмотреть в сторону OpenCV и далее, например, в сторону поиска одинаковых изображений (можно попробовать разные методы: гистограммы, bag of words и т.п.)

вот, например, недавно статья пробегала — habrahabr.ru/post/198338/
Вопрос: Необходимо реализовать уведомления на сайте в режиме реального времени, как это сделать?

Лучший ответ:
Варианта два: 
- Стучаться запросами через $.ajax, если количество пользователей небольшое и периодичность опроса достаточно длительная (например раз в 15-30 сек.);
- Установить и настроить socket.io

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

Лучший ответ:
Так напишите сами хоть на PHP, хоть на bash.
Там работы на час, включая гугление.

Худший ответ:
#!/bin/bash                                                                                                                                                                                           

get_hardware () {
    echo "'"
    grep 'model name' /proc/cpuinfo | uniq | sed 's/model name/CPU/' |sed 's/[[:space:]]/ /g'
    echo "RAM: $(free -m | awk '/Mem:/ {print $2}') MB"
    echo "Disk model: $(LANG=C sudo lshw -class disk | awk '/product:/ {gsub ("       product: ", "") ; print}')"
    echo "Disk capacity: $(LANG=C sudo lshw -class disk | awk '/size:/ {gsub ("       size: ", "") ; print}')"
    echo "'"
}

convert -size 1600x900 xc:transparent -font Ubuntu-Regular -pointsize 72 -channel RGBA -fill black -draw "text 20,55 $(get_hardware)" fuzzy-tweaks.png
Страшненький пример, но для примера сойти должно )
Вопрос: Как разобраться с Redux?

Лучший ответ:
Добрый день, внесу свою лепту - https://www.gitbook.com/book/maxfarseer/redux-cour...
Подробный туториал (на русском) как сделать на редукс приложение, использующее VK API
Разобраны асинхронные запросы, миддлевэйр и все все все, что нужно для комфортного написания приложений без гугла. Если будут вопросы - буду рад ответить.

Худший ответ:
В данном редьюсере вы берете из массива state объект с индексом index и устанавливаете для него completed = true. Это и есть обработка экшена редьюсером.
Вот так, например, будет выглядеть редьюсер который сохраняет пользователя в стейт:function todos(state = [], action) {
  switch (action.type) {
/*этот редьюсер написал я*/
  case ADD_USER_ACTION:
    return [ ...state, action.user ];
  default:
    return state;
  }
}
Далее, чтобы получить стейт - вам нужно использовать коннектор. Я последний месяц не смотрел редукс, так что API уже может отличатся, но примерно так:@connect( state => ({ pictures: state.myPicturesReducerName }) )
export default class Card extends Component { 
  // ... 
 // yourPicturesReducer state -> this.props.pictures
  // ...
}
Вопрос: Как скрыть базу данных, не принадлежащую текущему пользователю?

Лучший ответ:
Снимите все галочки в глобальный правах пользователя на базы данных. Иначе говоря - забрать все права. Хоть 1 галка будет в любом из разделов - базы будут видны.

Худший ответ:
мне помнится (я могу ошибаться) в конфиге phpmyadmin была опция, о том показывать ли БД, которыми не владеет юзер
Вопрос: Asus RT-n66U. Редирект на страницу с ошибкой при отсутствии интернета

Лучший ответ:
Использую альтернативную прошивку с данным роутером — Tomato, там данной страницы нет.
Если вам не критично использование стандартной прошивки — попробуйте Tomato, не разочаруетесь.

Худший ответ:
проще всего — попросить мерлина сделать websredirect опциональным, там в 2 строчки + галка в web ui
Вопрос: Выбор антивируса DrWeb или Nod32?

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

Худший ответ:
Антивирус это инструмент, которым нужно уметь владеть. Один лишь антивирус вам защиты не даст, какие средства защиты вы еще используете? Nod32 этот видит но зато может не видеть 10 других которые DrWeb обезвредит. Dr.Web Enterprise Security Suite у вас?
Вопрос: Как вы организуете devel окружение?

Лучший ответ:
Нууу как это сделано у большинства:
у разработчика есть локальная копия репозитория (иначе зачем вам git), и он пишет все у себя локально. Локально интегрирует код других девелоперов со своим ну и т.д. То бишь разработка исключительно локально.

Сервер только один, выкатывать туда можно либо на прямую из git (скажем в gitlab можно добавить доступ по ssh только на чтение) и пулить туда мастер. По сути на сервере всегда должна быть стабильная версия кода, мол с уже заимплеменченными фичами. ну или можно собирать билд в ci по пушу и автоматически разворачивать его.

Худший ответ:
Мне сложно понять эту проблему, поскольку сам я сижу под осью того же семейства, что стоит на боевом. 
Так что, в моем понимании, девел-сервер — это не единственное место, где программист может запустить написанный на локальном компе код, а сервер, максимально приближенный к боевому, для окончательной обкатки и показа всем причастным к задаче лицам. 

Соответственно, разумная организация представляется мне такой
1. Разработчик разрабатывает на своей локальной машине. Именно разрабатывает — пишет, запускает, отлаживает. Разработанное заливает в Git
2. На devel-сервере реализовано динамическое создание поддоменов. Создал девел папку t12 в /opt/www/bob — автоматически появился сайт t12.bob.devel.mysite.com.
3. Делаем в этой папке git clone (или pull) — и таким образом обновляем код.
Вопрос: Актуальна ли на Upwork разработка лендингов и сайтов?

Лучший ответ:
Очень востребованы

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

Лучший ответ:
Если вам хочется реальный геоид, а не гротескный, то берите обычный глобус в форме шара: разницы между сферой и геоидом на глаз не заметно.
И ландшафт: самая высокая гора и самая глубокая впадина — меньше 0.2% радиуса. Вам придется глобус делать двухметровым, чтобы можно было разглядеть и нащупать рельеф Земли (Эверест в этом случае будет иметь высоту около полутора миллиметров).

Худший ответ:
Вот эти люди такое могут, я полагаю.
У них и 3D принтер есть и глобусы они с его помощью производят с рельефом.
Подмосковье. Нормально идут на контакт.
И тема их просто: www.3dservice.ru
Вопрос: Redis стоит ли переходить с mysql?

Лучший ответ:
Вы - PM (Project Manager), ваша задача - управлять человеческими ресурсами, НЕ лезьте в разработку.
Задача программиста, согласно вами описанными правилами - реализовывать функционал, однако инструменты для этого он должен выбирать самостоятельно, согласно ТЗ.
То, что вы указали несколько цифр - это архитектурные требования и они ВНЕ вашей компетенции.
Вы указали требования на запись/чтение, а что на счет целостности, себестоимости, сложности внедрения и поддержки?
Redis - это key-value хранилище (чаще всего используется как кэш, и pub/sub роутер), MySQL - это реляционна БД. Это как сравнивать мотоцикл и фуру, они предназначены для разных целей.

Худший ответ:
хочу сменить бд
по велению левой пятки? :)запрос id, затем чтение нужного поля.
редис это NoSQL хранилище.
Все записи хранятся в виде ключ - значение т.е. тут не выборок по параметру в принципе, в обычном понимании. Разве что только перебором искать.
Все что вы описали имеется в mysql. Никто не мешает вам масштабировать его.
Цифры все с потолка или уже имеются данные такие?
Чем не устраивает mysql и почему это не современное решение?
Вопрос: Как делают сложные gif анимации?

Лучший ответ:
Это не запись с экрана, after effects+photoshop, в фотошопе подготавливают дизайн, в after effects переходы, композицию и т.д., потом в шопе импорт видео, дорабатывают напильником и оптимизируют для экспорта в гиф, вот для примера урок: developertodesigner.wordpress.com/2014/05/09/how-t...

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

Лучший ответ:
А pdd разве просит менять DNS? Там только нужно mx и txt дописать. 
NS можете оставить свои.

Худший ответ:
ПДД не активирует вам почтовые ящики, пока не обнаружит "правильной" MX записи. 
Так что MX запись (а следом и SPF) менять всё же придется. 
Делегировать на dns1/2.yandex.ru не обязательно.
Вопрос: ICQ снова в отключке?

Лучший ответ:
Уже давно забил на аську, использую jabber.
Больше хлопот, чем пользы.

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

Лучший ответ:
Для начала, не надо было пытаться так экономить. Судя по тому, что на решение задачи тратятся месяцы - вы искали самого дешевого программиста, и с вами согласился сотрудничать новичок. Он сейчас скорее всего жалеет о том, что с вами связался. Простите, но вы сами виноваты. Семь шапок из одной овцы не выкроишь никак.
Любая задача решается не более, чем за одну неделю. Подавляющее большинство программ выпускаются в бету за 2-3 месяца. Если дольше - нужно бить тревогу. Или неправильное планирование, или проблемы в команде.
Мониторить просто - по списку задач в трекере и/или по коммитам. Не нужно ожидать, что разработчик будет выдавать какой-то прогресс ежедневно. Программирование - это не линейный процесс. Можно день-два протупить, а потом за десять минут сделать - такое происходит постоянно. Удобными для всех будут ежеденедельные итерации. Например, каждый понедельник проверять прогресс за неделю, и при необходимости, скорректировать его.
Не выносите разработчику мозги длинными беседами. У программистов мозг несколько иначе устроен, и длинными беседами вы ему мозг выносите. После чего ему работать сложно - таким образом вы сами создаете проблемы. Пишите вопросы текстом, и делайте это не чаще, чем один раз в неделю. Накапливайте вопросы, прежде чем отправить их письмом. Если вы нашли ответ на вопрос самостоятельно - удалите его из списка. Проверьте, нет ли ответов на вопросы в интернете. 
Это удивительно, но многие, будто конченные олигофрены, не понимают, что консультации отнимают и силы, и время. И именно поэтому должны быть регламентированы. С консультациями, как с сексом. Хотите, чтобы было качественно? Тогда нужно хорошо подготовиться.  И вести себя прилично. Всегда. Хотите хорошие ответы? Продумайте свои вопросы.
В состоянии потока любая хрень может отвлечь и нарушить рабочее состояние. Особенно - вопросы. Особенно  - глупые вопросы. Глупые не с вашей точки зрения, а с точки зрения разработчика. Программист работает циклами по 2-4 часа. Если нарушить цикл (например, задав глупый вопрос или позвонив по телефону) - теряется ПОЛОВИНА ДНЯ.
Поэтому мое второе замечание - проверьте, а не мешаете ли вы ему работать?

Худший ответ:
Есть отличные тайм-трекеры , причем некоторые логают все , запущение программы, делают скриншоты и все это шлется на сервис в котором вы как главный, Вы главный и поэтому Вы будете как  - менеджер, продюссер и тим лидер, который должен уметь контролировать все эти вопросы. Плюс, когда вы думаете работать с удаленным программистом, то - надо понимать какими методами разработки вы будете следовать, далеко ходить не надо и взять к примеру,  Agile. Ознакомьтесь с ним чтобы уяснить что Вам нужно от программиста и ему от Вас, здесь я больше указываю на  так называемые - "стори". Также , знакомьтесь с портфолио программиста, проводите интервью с ним же, сделайте список вопросов перед этим. Ну и главное , у Вас должен быть хороший капитал. Ну и посоветую книжку прочесть - Идеальный программист. Есть вопросы пишите. отвечу.
Вопрос: Подскажите алгоритм синхронизации массива строк в javascript с хранимыми на серевере строками в mySQL. Как синхронизировать несколько компьютеров с сервером

Лучший ответ:
Данные:
1. Время синхронизации брать с сервера.
2. На клиенте хранить собственно данные, последнее время синхронизиции (прислонное с сервера) и id данных, измененных после последней синхронизации. Если данные еще нет, то последнее время синхронизации принимаем за 0.
3. На сервере хранить данные с дополнительным полем last_update или журнал изменения (отдельная таблица) с временем изменения и id записи (В любом случае такой журнал можно сжать до размера самих данных, удалив старые дубликаты id).
Описание:
1. Клиент стучится на сервер отправляю последнее время синхронизации и изменненые данные после последней синхронизации.
2. Сервер сохраняет данные если не было конфликтов, и возвращает обновленные данные после последнего пользовательского обноновления (можно без пользовательских обновлений), новую дату обновления. А клиент обновляет данные и удаляет отосланные id записей после синхронизации.
3. Если были конфликты (дата последнего изменнения пользователя меньше последнего изменения на сервере и хеши данных отличаются), то можно отложить обновление и передать пользователю данные для мержа, при этом обновив last_update таких записей до даты синхронизации возвращаемой пользователю. После чего пользователь снова синхронизируется. Если опять возник конфликт, то повторять до тех пор, пока не разрешится.
Запрос:
{time: , data: []}
Ответ:
{time: , data: [], mergeData: []}
Замечания:
Те localStorage хранит до 5 метров по спецификации, то возможно не стоит заморачиваться по поводу большого объема данных. Хотя можно добавить на сервер метод, который будет возвращать количество обновлений в байтах по последнему времени изменений и завязать дополнительную логику. Если данных больше 5 мб, то стоит использовать indexed db или web sql (привет ie 8 и 9), но в браузерах реализован асинхронный API.

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

Лучший ответ:
В тех, где используется XSLT.

Худший ответ:
Посмотрите на ExpressionEngine или для совсем простых сайтов на их же разработку MojoMotor
Вопрос: C чего начать вёрстку сайтов?(html+css)?

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

Худший ответ:
для начала подойдет и notepad++, позже можно будет перейти на IDE webShtrom phpShtorm
Для старта подойдет ресурс htmlbook.ru
Вопрос: Как разделить логику моделей в Yii2 advanced?

Лучший ответ:
Делать две независимых модели.

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

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

Худший ответ:
если представить самый экстримальный вариант, у тебя не будет 30 сек :)
Вопрос: Erlang, Reia — для каких практических задач используется и с чего лучше начать обучение?

Лучший ответ:
Erlang используется в распределенных СУБД, разнообразных веб-серверах, множестве веб-фреймворков, телекомах и многих других проектах.
Reia лучше пока не трогать. Хорошего(по сравнению с Erlang) в ней все равно ничего нет(даже «настоящие» строки вовсе не настоящие).
Начинать обучение лучше с Erlang Programming и Programming Erlang.

Худший ответ:
ejabberd наше все