Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как создать серверную архитектуру для приложений?

Лучший ответ:
Application server - основной сервер, где обрабатывается логика ваших приложений, которую нельзя обрабатывать на клиентах. Application server имеет доступ к серверу баз данных (Database server). Очень часть Application server и Database server размещают на одном сервере, пока это позволяет нагрузка на приложение.
На Application server как правило устанавливают веб-сервер и обработчик какого-либо языка программирования. Например, apache + php, nginx + ruby и пр. Иногда встречаются и более экзотичные варианты. Всё зависит от того, какими инструментами ведется разработка приложения.
На Database server устанавливают какое-либо ПО для СУБД. Например, MySQL, SQL Server, Oracle Database и пр. Через специальные библиотеки и конфигурационные файлы Application server "привязывается" к Database server.
Loadbalancer  используется для того, чтобы, в случае наличия нескольких Application серверов, направить пользовательский запрос на менее загруженный Application server. Тут есть много разных вариантов реализации.
Utils и Tools - фишки исключительно очень больших проектов. Например, если нужно пересчитывать количество записей в базах по сложным медленным запросам или удалять ненужные изображения на дисках сервера - для этого и предназначены эти инструменты.

Худший ответ:
Application server - основной сервер, где обрабатывается логика ваших приложений, которую нельзя обрабатывать на клиентах. Application server имеет доступ к серверу баз данных (Database server). Очень часть Application server и Database server размещают на одном сервере, пока это позволяет нагрузка на приложение.
На Application server как правило устанавливают веб-сервер и обработчик какого-либо языка программирования. Например, apache + php, nginx + ruby и пр. Иногда встречаются и более экзотичные варианты. Всё зависит от того, какими инструментами ведется разработка приложения.
На Database server устанавливают какое-либо ПО для СУБД. Например, MySQL, SQL Server, Oracle Database и пр. Через специальные библиотеки и конфигурационные файлы Application server "привязывается" к Database server.
Loadbalancer  используется для того, чтобы, в случае наличия нескольких Application серверов, направить пользовательский запрос на менее загруженный Application server. Тут есть много разных вариантов реализации.
Utils и Tools - фишки исключительно очень больших проектов. Например, если нужно пересчитывать количество записей в базах по сложным медленным запросам или удалять ненужные изображения на дисках сервера - для этого и предназначены эти инструменты.
Вопрос: Key/value значения. Как выбрать оптимальный способ хранения?

Лучший ответ:
Еще можно использовать redis

Худший ответ:
О каком объеме данных/запросов идет речь?
Если у Вас база меньше 250-300к юзеров, думаю, нет особой разницы где хранить - в мемкэше, или в mysql, в плане скорости и нагрузки.
На мой взгляд, если это не является на текущий момент узким горлышком, то это преждевременная оптимизация.
Вопрос: Почему долго загружается windows c перемещаемым профилем?

Лучший ответ:
мне помогла смена имени сервера с короткого на полный в настройках профиля учётных записях AD, было
\\srv\userprofiles\username
сделал
\\srv.domen\userprofiles\username

Худший ответ:
В свое время помогло прописывание корректных DNS-серверов соответствующих контроллеру домена на клиентских компьютерах.
AD использует DNS для своих целей.
Вопрос: Слишком быстрый скролл двумя пальцами по тачпаду

Лучший ответ:

На моем Леново помогло
https://www.youtube.com/watch?v=melnRAfR1Ac&list=L...

Худший ответ:
кто-то нашел уже фикс? пожаалуйста :(
Вопрос: Как печать на термопринтере (для чеков) с сервера автоматически?

Лучший ответ:
Как совершенно простой велосипед - просто скидывать чеки файлами через любой удобный способ в папку (гугл диск, почта с автоматическим извлечением файлов, промежуточный ftp/ssh сервер), а на сервере в пределах одной подсети с принтером организовать по крону или другому удобному демону проверку файлов в этой папке и печать чеков из нее.

Худший ответ:
а что за термодифузионник? у Зебры и Интермека, к примеру, очень развитый язык, там совсем не сложно сразу скриптом сформировать  задание на встроенном языке, и потом его просто выплюнуть в порт. без всяких драйверов и прочей мишуры. 
 по взаимодействию - я пару лет назад реализовывал что-то подобное, там сервер с приложением формировал у себя задание, клал его в БД (у записи был признак "обработано/не обработано"), сервер печати с некоторой переодичностью дергал таблицу, если находил необработанную запись - печатал ее и апдейтил запись.  Получался PULL-механизм, сервер печати из защищенной сети к  серверу БД в незащищенной обращаться мог, обратное - нет.
Вопрос: Схема бэкапа клиент-сервер vs сервер-клиент?

Лучший ответ:
Не держите в принципе бизнес-данные на пользовательских машинах - пусть держат всё в расшаренной папке на сервере. И уже эту папку архивировать на другой физический диск на сервере, или синхронизовать - как удобно. При этом доступа Юзеров к другому диску быть не должно.
А на рабочем компе пусть держат что угодно - котиков, домашние фото, музыку, порнуху, ... - админ за сохранность этого не отвечает.

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

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

Худший ответ:
Разберитесь сначала, что такое протокол HTTP, как работает браузер, как формируется веб-страница у вас на экране после ввода адреса.
Затем без логики сделайте с помощью HTML/CSS эти контролы (инпуты, комбо-боксы и т.д.)
После возвращайтесь с теми вопросами, что останутся и появятся
Вопрос: Можно ли отследить активацию вкладки в браузере?

Лучший ответ:
Можно., используя Visibility API или вот эту кросс-браузерную билиотеку: Visibility.js

Худший ответ:
Как минимум onmousemove, как максимум window.onfocus и window.onblur
Вопрос: Как вам редизайн facebook?

Лучший ответ:
Как по мне, ужасно. Напомнило чем-то аляповатость дизайна от майкрософт в последнее время.

Худший ответ:
В принципе классно, но только если бы не эти шрифты курсивом.
Вопрос: Стоит ли написать статью про сервисы «Пробки» отличные от Yandex?

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

Худший ответ:
Обязательно пишите! Потому что сравнивав пробки от Прогорода, Яндекса и Гугла — порой получаются противоречащие друг другу маршруты, и если у вас есть информация откуда каждый из этих сервисов берет информацию о пробках- то это просто превосходно! 
Пишите пожалуйста, будет очень интересно!
Вопрос: Математика и программирование

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

Худший ответ:
ошибочным в вашем рассуждении делать выводы на основании мнения "одного знакомого". Насколько знания математики могут понадобиться вам, в вашем конкретном случае, в вашей настоящей и возможно будущей деятельности как программиста знать не может никто, нужно начинать пробовать заниматься, тем чем вам интересно, а дальше всё покажет время, нужно будет — нырнете в ту область математики, которая будет вам необходима конкретно, подтянете, подучите, что-то возможно и с нуля придется, но в этом ничего страшного нет, когда человек в чем либо очень сильно заинтересован и главное увлечен.
Вопрос: Приложения для конвертирования php/html/javascript/css в android файл?

Лучший ответ:
phonegap
p.s. не заметил php..... кроме php, спасибо Александр Варакосов

Худший ответ:
смотрите в сторону ionic framework,
пожалуй самый удобный способ..
Вопрос: С чего начать изучение C++?

Лучший ответ:
 вообще можно создать при помощи C++ красивые приложения, или без C# некак? 
Нет, только страшные. Видимо вам придётся выбрать другой язык.

Худший ответ:
)И вообще можно создать при помощи C++ красивые приложения, или без C# некак?
Да, можно, на winApi можно создавать самые крутые приложения ;)
Вопрос: Удаление похожих слов?

Лучший ответ:
Используйте любой из алгоритмов нечёткого поиска, например вычисляйте Расстояние Левенштейна для каждой парый слов. В зависимости от полученных значений решайте, какие слова удалять, а какие оставить.var str = 'тест тост тест тесто';
var words = str.split(' ');
var result = [];
for (var i = 0; i < words.length; i++) {
    result.push(words[i]);
    for (var j = i + 1; j < words.length; j++) {
        if (levenshtein(words[i], words[j], {}) < 2) {
            words.splice(j--, 1);
        }
    }
}
https://jsfiddle.net/9hz8wmz6/

Худший ответ:
Ну как вариант вам надо разбить текст на массив слов. А затем в цикле по этому массиву применять к тексту регулярное  выражение в котором вы укажите что текущее слово повторяющееся более 1 раза друк за другом заменится на одно. Или сравнивайта элементы друг с другом и при совпадении удаляйте дубль (что-то типа пузырькового метода; Вы же знаете о чёмя?). Потом склейти элементы в строку. Только это очень нагрузить клиента.
Вопрос: Наиболее полный список актеров

Лучший ответ:
www.kinomania.ru/actor/int/1 не подойдет?

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

Лучший ответ:
Вам, наверно, тяжело искать заказчиков :)
Вот как скажу Вам: Вы можете свободно заключать договор со своими партнерами, делать работу и спокойно пугать судом. Более того, даже если с этим договором пойдете в суд, а по нему, например, не заплачены налоги, суд спокойно рассмотрит всё это дело и вынесет какое-то решение. Все дело в том, что:
1) Суд не интересует - платили Вы налоги или нет, так как это совсем другой вопрос из сферы хозяйствования. И такими делами, сперва, занимается должна налоговая - все проверить и т.п.
2) Суды рассматривают вопросы только касательно заявленного дела.
Платит налоги за Вас Ваш контрагент или нет - это все остается на его совесть: если не заплатил - ну и ладно, осталось на его совести. Не заплатил - значит пустил в черную. При этом, все равно договор носит юридическую силу по своим взаимоотношениям.
Я бы на Вашем месте регистрировал ИП на УСН с 6%, потому как знаю что для предприятия значит - оформлять сделку и проводить её по бухгалтерии с физиком. Больно много гемору, особенно для большой компании, где и без Вас хватает работы у бухов. Для Вас же - это возможность проще разговаривать с заказчиком, не обременяя его налогами и взносами.
При этом, учитывая все выше сказанное, Вас также, никто не заставляет платить налоги - не заплатили, значит пустили в черную: ни кто не запретит судиться по договору, а налоги - это Ваши хозяйственные дела, лежащие за договором, спрашивать за которые Вас будут совсем другие органы и по другому поводу.
P.S.: из практики скажу, ИПшек у нас, налоговики очень мало интересуют, да и вообще - пока не будет подозрения, что Вы вертите миллионами - Вы ни кому не интересны, что вы ИП что ООО.

Худший ответ:
Могу ошибаться, но некоторые биржи фриланса, например fl.ru, оказывают услугу "безопасной сделки". Так вот это "безопасную сделку" заказчик может оплатить безналом. Причем еще и с НДС.
Естественно при этом посредник съедает неслабый кусок от оплаты.
И сразу как минус: у fl.ru с безопасной сделки вывод средств только на идентифицированный веб кошелек. Для некоторых фрилансеров это проблематично.
Вопрос: Кастомизация ползунка в android?

Лучший ответ:
<SeekBar ...
	android:thumb="@drawable/seekbar_thumb"
	android:progressDrawable="@drawable/seekbar">
</SeekBar>
Если будут проблемы с несоответствием центра ползунка текущему значению SeekBar'а — поиграйтесь со свойством android:thumbOffset.

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

Лучший ответ:
Что заказчику надо, то и отдавайте. Если он не знает что ему нужно, посылайте его лесом.

Худший ответ:
Ну, иногда надо натянуть, тогда так и говорят — «верстка шаблонов под WordPress», иногда просто статику. Сомневаетесь — спросите заказчика:)
Вопрос: user-frendly WIKI CMS ?

Лучший ответ:
Мне нравится Dokuwiki. Правда, поиском не пользовался. Остальное перечисленное есть.

Худший ответ:
Sharepoint для ваших целей не подходит?
Вопрос: В PHP можно ли создать свой формат для файлов (например файл с расширением ".lang")?

Лучший ответ:
Можна.

Худший ответ:
Да ему абсолютно пофиг на расширение, это всего лишь часть имени файла.
Вопрос: MySQL: Узнать количество &quot;пройденных&quot; SELECT`ом строк

Лучший ответ:
Постановка вопроса несколько странная. По-моему РСУБД никогда не скажет, сколько строк она обработала до получения результата. Более того, «маршрут сканирования» и его порядок в разных условиях будет разным.

Худший ответ:
Только написать процедуру. Там у Вас будет указатель на конкретную строку в которой ща мускул.
Вопрос: Посоветуйте тяжелую CMS на PHP

Лучший ответ:
Битрикс, особенно если в него много товаров забить

Худший ответ:
Поставьте любую современную CMS с большим каталогом товаров на denwer под windows с отключенным акселератором PHP.
Вопрос: Почему в школах до сих пор преподают Pascal а не Python?

Лучший ответ:
Ведь этот язык лучше и востребованней чем тот Pascal который сейчас преподают.
Школьная программа не предполагает подготовку специалистов, а базовые понятия алгоритмизации можно спокойно давать и на паскале. Все остальное - смотреть ответ Армянское Радио

Худший ответ:
Ладно хоть что то преподают. У нас такого нет(
Вопрос: Где найти радиоэлектронщика?

Лучший ответ:
Попробуйте связаться с пользователем habrahabr.ru/users/dihalt/

Худший ответ:
Здесь специальный раздел на профильном форуме electronix.ru: Предлагаю работу
Вопрос: Как изменить «желаемый уровень дохода», если уже озвучил его работодателю?

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

Худший ответ:
Скажи что рассчитываешь на 700, но хочешь хххх получать
Вопрос: Как такое сверстать?

Лучший ответ:
Держи, немного поправил один из своих старых набросков.
snippet
Принцип работы примерно, как описал Максим Морев в своем ответе.

Худший ответ:
Если верстать с нуля, структура примерно такая:

<div class="road" style="display: flex; justify-content: space-between; position: relative;"> 

  ::before (картинка с полоской уходящей вверх)

  <div class="road__line" style="width: 100%; position: absolute;"> 
      прямая полоска  
  </div>
  <div class="road__point"> 
      ...
  </div>
  <div class="road__point"> 
      ...
  </div>
  <div class="road__point"> 
      ...
  </div>

  ::after (картинка с полоской уходящей вниз)
</div>
Вопрос: Как вести разработку уже рабочего проекта (в продакшене)?

Лучший ответ:
1. Vagrant, или docker с системой максимально похожей на production сервер. Разработку ведем там.
2. Если никакая vcs не используется - пи"№;ц конечно, но быстро подключайте, иначе бида обеспечена. Рекомендую git + git-flow.
3. Правки в БД ТОЛЬКО на основе миграций, при этом создавайте как up, так и down.
4. Возьмите готовую систему для диплоя, либо напишите свой скрипт для этого. Цель в том, что бы минимизировать человеческий фактор при обновлении продакшна на столько, на сколько это возможно.
5. Все, что находится в /vendor - обязательно должно быть заигнорировано в vcs, composer.json И composer.lock (спс OnYourLips) должен ссылаться на фиксированные версии пакетов.
6. Код ОЧЕНЬ-ОЧЕНЬ-ОЧЕНЬ желательно покрыть тестами. Самый кульный вариант - запуск тестов после push изменений в главный репозиторий. Для этого можно использовать связку gitlab + gitlab-ci.
7. На счет доменов - в чем проблема то? Вынесите домен в конфигурацию, и создайте конфиги для локального, тестового и боевого окружений.
8. На счет записей в БД: да, они обязаны отличаться. По хорошему на проде руками в принципе можно только смотреть, а записывать нельзя. Для тестовой БД - пишите фикстуры.
9. сразу подумайте на счет логов: если их over-дофига, имеет смысл использовать системы типа logstash, или sentry.

Худший ответ:
Когда делали проект - надо было учитывать это и делать домены и прочее настраивыми.
Но вообще домены можно экранировать, подменять. Если у вас на win-машине будет прописано в hosts.txt, что домен microsoft.com ведёт на айпишник 213.180.193.3, то запросы до серверов майкрософта даже не дойдут - сразу улетят в яндекс. Этого приёма достаточно в вашем случае, хотя он и создаст определённые трудности.
Вопрос: Как правильно заполнить таможенную декларацию на ShipITo.com?

Лучший ответ:
Мой личный опыт: я всегда ставлю Merchandise, прошу сотрудников Шипито убрать все докуметы из посылки (услуга стоит 8,5 баксов) и после этого указываю разумную цену ниже предела растаможки. Работает 100%. Тип посылки не привлекает внимания таможенников, отсутсвие платежных документов не дает оснований увидеть расхождения декларированной цены и реальной.
Для айфона советую написать «Portable communication unit» и цену около 100 долларов. Если будут спрашивать, можно сказать, что купил при супер-распродаже, хотя, конечно, лучше внимание таможни не привлекать.

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

Лучший ответ:
1. Чем сильнее ветер - тем сложнее квадрокоптеру удержаться на его маршруте. В дождь/снег - тоже самое. Я не подскажу как это влияет на камеру, но на саму возможность полета осадки влияют катастрофически.
2. Несколько километров до подзарядки. В среднем квадрокоптер на 30-40 минут полета сейчас вполне несложно собрать практически в домашних условиях, потратив несколько тысяч $
3. Зависит от технологии. Можно и по мобильной связи, тогда - везде где она есть.
4. Регулярный облет наверное не очень, в силу того что провести наземный кабель вдоль нефтепровода, и прицепить на него химические датчики для определения утечки должно быть дешевле и надежнее. Квадрокоптеры можно сделать для того, чтобы в случае ложной тревоги, можно было бы быстро выслать на место камеру "посмотреть", если лень идти пешком, или условия наземного прохождения тяжелые, а по воздуху быстро и надежно. Но опять же зависит от погодных условий. Вы должны решить экономический вопрос - как часто нужно выезжать на место, и поможет ли просто камера выяснить что нужно делать, учитывая ее дальность действия.
5. да
6. теряется стабилизация. Падает по-разному, в зависимости от того, на что упадет. Кроме вертикальной скорости есть горизонтальная, а там могут встретиться деревья, и аппарат например перевернется, зацепившись за ветки. В принципе самое хрупкое - винты и камера, остальное при таком весе может пережить несколько падений.

Худший ответ:
Видать неплохая идея
Вопрос: Проверка имени владельца банковской карты

Лучший ответ:
en.wikipedia.org/wiki/Address_Verification_System
Работает не для всех банков. Для СНГ не работает вообще, если не ошибаюсь.
Насчет поддержки со стороны payment gates не могу точно сказать, но как минимум Authorize.Net позволяет сделать отдельный запрос на проверку billing info.

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

Лучший ответ:
Лучше папку именовать не как id, а как какая-нибудь простая хеш-функция от этого id. Причем, не класть всё на один уровень, а распределить их на 2-3. Ниже пример для статьи с id=123md5(123) = 202cb962ac59075b964b07152d234b70
берем первый символ хеша - 2, создаем папку "2" в /uploads/images
берем второй символ хеша - 0, создаем папку "0" в /uploads/images/2
создаем папку "202cb962ac59075b964b07152d234b70" в /uploads/images/2/0/
кладём в /uploads/images/2/0/202cb962ac59075b964b07152d234b70 нужные файлы
Плюсом такого рещения будет то, что из-за хеш-функции папок будет фиксированное количество и файлы по ним будут относительно равномерно размазаны. Если файлов будет очень много, можно добавить ещё один уровень. Путь этот вычислить программно будет не сложно, если метод его вычисления будет находиться в одном месте.

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

Лучший ответ:
Без покрытия сети(ей) - никак. Номер 112 является частью стандарта GSM, и поддержку его использования обязан иметь оператор. Ваш телефон это приемник и передатчик, ваша симка является вашим идентификатором в наборе услуг оператора(ов).
Насчет емких статей не скажу, но вы можете погуглить описание стандарта GSM ;)  или вот

Худший ответ:
Если не ошибаюсь, используются сети любого оператора, доступного в данной местности.
Вопрос: Альтернатива доменной зоне .com

Лучший ответ:
У каждой зоны есть свое предназначение! Если на это обратить внимание, то Ваш вопрос выглядит примерно так:
Какая по вашему мнение самая близкая альтернатива домена для коммерческих организаций — национальный домен верхнего уровня Камеруна, Колумбии, Самоа?

Найдите подходящий .com или .net

Худший ответ:
US неплох и не занят) я бы такие критерии пользовал при поиске:
1 хорошо звучит(лучше без двойных гласных и согласных, если обобщать)
2 получается осмысляемая фраза\сокращение (cackle.me letit.be), 
3 добавляется смысловой оттенок (bit.ly art.sy)
4 буквы из домена содержатся в названии (сс занят, lc не очень звучит и дороговат)
5 буквы из домена можно воспринимать как сокращение из вашей области (wanted.vc — vc как venture capital)
Вопрос: Оптимизация ssd в Windows 8.1, значит ли это дефрагментация?

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

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

Лучший ответ:
Используйте методы расширения Linq Where и Contains. Также для поиска элемента в массиве можно использовать метод IndexOf.

Худший ответ:
Можно, выражение запроса зависит от того что будете искать, где, и какие условия поиска.
Вопрос: android + офферные системы

Лучший ответ:
Вам нужен свой сервер для этого. На котором буде БД хранящая счет игрока, что он купил и т.д.

Худший ответ:
По-хорошему, вам действительно понадобится свой сервер для хранения всей информации и проверки действий игрока. 

Но можно попробовать выкрутиться и с помощью андроид.маркета: 1. Создаёте несколько бесплатных продуктов
2. Каждый продукт — некая сумма в вашей валюте (например, 1р, 2р, 5р, 10р, 50р, 100р, если валюта рубли)
3. Вы программно управляете покупкой валюты (насколько я понимаю — пользователю всё равно будет предложено зайти на андроид.маркет для подтверждения оплаты покупки (даже бесплатной)) за какие-нибудь действия игрока

Минусы очевидны: если приложение взломали, то злоумышленник может купить вашу валюту в любом количестве, т.к. это контролируется только на стороне клиента.
Вопрос: Как сгенерировать код с++ из php?

Лучший ответ:
А вот это не читали habrahabr.ru/post/252215 ?

Худший ответ:
то мне нужно было сделать сайт на си++
вы ничего не перепутали?
Я могу вам дать пару советов, но не уверен, что они вам нужны.
EDIT: простейший вариант - SPA с JSON WebAPI на плюсах (например, связка cpp-netlib.org + https://github.com/nlohmann/json/ )