Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Кэшбэк. Как реализовать интеграцию с партнёрскими интернет — магазинами?

Лучший ответ:
Давайте порассуждаем:
Интеграцию с партнерским интернет магазином логично разделить на две составляющих:
1. Фиксация факта, что пользователь пришел из кешбек-сервиса
2. Передача кешбек-сервису суммы и статуса оплаты заказа из магазина
Первый пункт решается просто, тут действительно почти всегда используют utm метки и js-скрипт, который их перехватывает и отдает нотификацию серверу кешбек-сервиса о том, что к такому-то партнеру пришел пользователь. 
Второй пункт не так очевиден, и задача выходит за рамки просто программирования, поскольку существует ряд проблем:Сумма заказа иногда включает в себя стоимость доставки на этапе корзины, иногда не включает и рассчитывается вручную магазином (в не зависимости от того распространяется кешбек на доставку или нет, это создает неудобство)Перечень товаров  в заказе иногда может быть изменен после оформления (какой-то позиции не оказалось на складе, клиент попросил добавить еще что-то к заказу и т.д.)Оплата не всегда осуществляется сразу, почти все интернет-магазины доставляют товары наложеным платежом или с оплатой курьеру, поэтому существует вероятность отказа от заказа при получении с последующей его отменойИ еще куча нюансов связанных с оффлайновыми бизнес-процессами
Поэтому почти все кешбек-сервисы и CPA-сети предлагают парнерским интернет-магазинам API, куда они могут в автоматическом режиме отправлять информацию об отгруженных и оплаченных заказах. Как правило интеграция с таким API ограничивается разработкой одного метода на стороне партнерского магазина и редко занимает больше часа, под популярные CMS можно сделать плагины для повторного использования.

Худший ответ:
сохраняем утм в кукис, в заказе реализуем передачу данных через веб хук
Вопрос: Как сделать call-центр для интернет–магазина самому?

Лучший ответ:
Если для маленького магазина то смотрите в сторону виртуальной атс и дешевле и геморроя меньше ))). К тому же если слабо разбираетесь в вопросе! Но это мое мнение....

Худший ответ:
Добрый день!
Вашу задачу закроет Облачная АТС.
Сможем помочь с многоканальным номером, голосовым приветствием, приемом звонков на мобильных телефонах.
Ждем вашего звонка 0989004545.
Компания - Stream Telecom.
Вопрос: Почему флеш умер?

Лучший ответ:
https://www.wired.com/story/adobe-finally-kills-fl...
Адоб не понял с кем соревнуется флеш
Адоб не сделал адекватную систему доставки обновлений и не сделал нормальную баг баунти программу
Адоб не стал совещаться с компаниями, которые создавали браузеры
Адоб не отдал флеш в опенсорс
Причины смерти такие же как и у джавы в браузерах

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

Лучший ответ:
Купи ардуину и делай что хочешь.

Худший ответ:
Я в общем то из кибуца, но посоветую вам не слишком напирать на этот факт. А по факту мышь это HID device ищите в гугле ваш язык программирования и это непонятное заклинание
Вопрос: Как реализовать анимацию падающих сверху страницы блоков?

Лучший ответ:
Пользуйся
snippet

Худший ответ:
Particle.js смотрели? Погуглите "снегопад на js", вам такое нужно?
Вопрос: Почему docker значительно медленнее чем native?

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

Худший ответ:
Попробуй добавить network_mode: "host" там где используешь docker NAT т.е. там где ты мапишь 80:80
version: "3.3"

services:
  backend:
    image: backend
    container_name: backend
    build:
      context: .
      dockerfile: ./docker/backend/Dockerfile
    expose:
      - "9000"
    volumes:
      - .:/var/www/app
    networks:
      - test-network

  nginx:
    image: nginx:1.19.0
    container_name: nginx
    ports:
      - "80:80"
    volumes:
      - .:/var/www/app
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    networks:
      - test-network
    network_mode: "host"

  mysql:
    image: mysql:8.0.20
    container_name: mysql
    ports:
      - "3306:3306"
    environment:
      MYSQL_USER: test
      MYSQL_PASSWORD: test
      MYSQL_DATABASE: test
      MYSQL_ROOT_PASSWORD: test
    volumes:
      - ./docker/mysql/initialization:/docker-entrypoint-initdb.d
      - mysql:/var/lib/mysql
    command: --default-authentication-plugin=mysql_native_password
    networks:
      - test-network
    network_mode: "host"

networks:
  test-network:

volumes:
  mysql:
Вопрос: Куда подать жалобу на хостинг провайдера?

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

Худший ответ:
Куда подать жалобу на хостинг провайдера?Жаловаться можно кому угодно - это не запрещено.

Я имею ввиду не милицию и прокуратуру, а профильные организации дающие разрешение/лицензии на данную деятельность в Украине.У профильных организаций - профильный интерес.
Если вы например пожалуетесь в организацию контролирующую связь - на то что хостинг провайдер использует не разрешенные ему радиочастоты - они отреагируют.
Если же вы пожалуетесь что вас хостинг провайдер вас обманул, обокрал, ограбил или кого-то убил, то они скажут, что это не их дело, обращайтесь в полицию. Ибо им на это вообще наплевать.
Вопрос: Почему не работает функция php?

Лучший ответ:
Ни каких ошибок не появляется.Это не говорит о том что их нет. Для отладки на дев окружении должны быть включены выводы всех нотисов и варнингов, либо через конфиг php.ini, либо в коде при старте указать ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

Худший ответ:
Данный вопрос решил с помощью redbeanphp. Спасибо за ответы. Код прилагаю ниже.function SendNotice($p1, $p2) {
            
		$user = R::findOne('users', 'login = ?', array($p1));
		if ($user) {
			
		$id = $user->id;
			
		$notice = R::dispense('notices');
		$notice->uid = $id;
		$notice->status = 0;
		$notice->data = date("H:i d:m:Y");
		$notice->text = $p2;
		R::store($notice);	
			
		} else {
			
		echo 'Ошибка при добавлении оповещения!';
			
		}
		
    }
Вопрос: Как узнать какую минимальную версию Android требует приложение из Google Play Market?

Лучший ответ:
Если не поддерживается, это не обязательно из-за версии. Может быть хардварных или софтварных фичей не хватает. А так "Google apk analize online", и смотреть манифест.

Худший ответ:
если программа ставиться на телефон, то посмотреть манифест
https://play.google.com/store/apps/details?id=jp.s...

uses-sdk android:minSDKVersion 

Из номера SDK можно легко найти торговое (коммерческое название)
https://source.android.com/setup/start/build-numbers

Или любым другим способом загляните в манифест.

Но часто приложение не доступно из-за аппаратных или других требований, которым разработчик выставил require true (требуются обязательно). А мог целое семейство мобильных отправить в не поддерживаемые из-за частых ошибок на них.
Вопрос: Почему говорят не учить РНР?

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

Худший ответ:
Смотрю тут все PHP нахваливают. Надо бы объективности ради указать и на вполне банальные недостатки - средний уровень зарплат в PHP - один из самых низких "по больнице":
По этому, если вы подходите к выбору языка исключительно по уровню зарплат в нем - то да, PHP не лучший выбор. Конечно, даже в России на PHP есть зарплаты и 200+ и 300+ тысяч - но дорастают до таких зарплат не многие (и знать нужно далеко не один PHP).
P.S. На мой субъективный взгляд - GO сейчас лучший язык для "входа в ИТ" с максимально быстрым выходом на хорошие зарплаты.
Вопрос: Можно ли проверить почту на существование?

Лучший ответ:
Можно. Но гарантий того, что тебе сказали правду - никаких. Именно с целью защиты от спамеров я могу на существующий адрес сказать, что он не существует (но почту все равно принять и доставить по адресу), а на несуществующий - что он существует и почту принять в /dev/null.

Худший ответ:
Очередная погоня за воображаемыми проблемами.

Тебе русским шрифтом пишут, сервер не раскрывает, существует ли учетная запись. Что в этом предложении не ясно?

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

А "репутация" поддерживается совсем другими средствами, а не случайными телодвижениями на основе ночных фантазий
Вопрос: Что означает «$arr[] = +$var»?

Лучший ответ:
Это правильно называется унарный плюс (1, 2)
Пытается конвертировать значение в int или float.
Похожая штука есть и в js, и похоже, что оба они унаследовали эту фичу из C.

Худший ответ:
Означает добавить в массив $arr значение, равное +$var
Вопрос: Как написать числа прописью javascript?

Лучший ответ:
Готовое: meritt.github.io/rubles

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

Еще вероятно понадобится учитывать род, типа тридцать два / тридцать две.

Вот похожее на английсом, можете посмотреть как устроено
https://www.npmjs.com/package/num-words
Вопрос: Хотел улучшить качество подключения интернета через команды bat файла, стало только хуже, как отменить?

Лучший ответ:
Не знаю при чем тут message queueing (первая строка)
но остальное по идее может быть приведено в дефолтное состояние двумя командами: 
netsh int tcp reset
netsh int ip reset
Повторю: дефолтное для системы. Это не приведет состояние tcp и ip стека к тому виду которое было до внесения правок.Для пущего эффекта лучше после этого перезагрузиться

набор команд
ipconfig /release
ipconfig /renew
ipconfig /flushdns
необходим для обновления сетевых настроек, очистки локального ДНС кеша и никак не должен влиять на качество работы вашего WiFi 

P.S. Надеюсь, вы сделаете выводы, что без понимания, что именно делают команды, запускать всякие батнички из "этих ваших интернетов", обещающие оптимизировать систему, не только глупо но и опасно

Худший ответ:
Откатить Винду к точке восстановления, не вникая.
Вопрос: "Дешевле" фильтр по массиву js или запрос к API?

Лучший ответ:
Следуйте эмперическому правилу, если нет пэджинга или Инфинити скрула то обрабатывайте все на клиенте.

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

Лучший ответ:
По-моему, всё перечисленное умеет Excel из коробки. Ну разве что можно приправить VBA по вкусу.

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

Лучший ответ:
m+6 Копировать текущую строку и сохранить ее в буфере обмена

Худший ответ:
> но этот буфер не переносится в другое окно putty
Выделить строку мышкой в одном окне putty;
Переключиться на другое окно;
С помощью курсорных клавиш установить курсор в нужное место;
Нажать shift+ins или ПКМ для вставки.

Это если в лоб для putty.
Вопрос: Как создать сайт конструктор дизайна футболок?

Лучший ответ:
Html, css и js

Худший ответ:
Вопрос не совсем по теме)), но да как уже было написанно: html/css/js
- Для начала разработайте UX/UI и учтите все моменты вашего конструктора,
- Дальне нужно определиться на какой технологии фремворке вы будете реализовывать ваш конструктор, чтобы в случае чего потом не переписывать по 10 раз
- Дальше нужно все хорошо сверстать и реализовать логику 
Вот я делал www.tustin.justtwic.art/product-page.html когда-то тут примитивно ток html/Css логика увы уже отдельно ребята решили делать под свой фрейм как там обстоят дела я не знаю!)
Вопрос: Какой стек использовать, React+...?

Лучший ответ:
Раз у вас вообще нет никаких требований - то возьмите что-нибудь веселое, Fortran какой-нибудь, или хотя бы Erlang.

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

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

Посмотреть детальнее, что за правила и как их выполнять можно в таком большом количестве мест в интернете что перепечатывание сюда будет порицаемо в любом приличном обществе. 

Один момент - не все принципы одинаково полезны и применимы в веб-разработке, но знать и понимать их все в любом случае на пользу.

Худший ответ:
Есть обалденная статья от 2015 года
https://blog.bullgare.com/2015/05/%D0%BF%D1%80%D0%...
Вопрос: Как получить доступ к полям выключенного объекта?

Лучший ответ:
привидите пожалуйста пример где именно обращение к инвентарю и что именно там в инвентаре за код.
и отчасти Константин Китманов ошибается. а freeExec  отчасти верно  вам говорит. что при ссылке на объект у вас доступ к полям и методам будет.
и вот что важно бы вам уяснить, на ВЫКЛЮЧЕННЫХ объектах не работает НИКАКОЙ ПОИСК.
GetComponentInChildren - это тоже ПОИСК. и все ему подобное не сможет ничего найти на выключенных объектах.
может в инвентаре у вас не просто получение значенияinventory.ItemList[0].cost
а что то в духеinventory.GetItemInfo(0);
///
void ItemInfo(int itemIndex)
{
something.GetComponent<T>();
}
и такое не будет отрабатывать, потому не ленитесь побольше кода прикладывать)) хотя и весь проект целиком тоже не стоит. хм, тут не просто угадать))

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

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

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

Лучший ответ:
правильно
ты, главное, идею пойми
а как поймешь - поймешь что csrf лучше ставить JS кодом, уже сложнее для атакующего, ну и прочие навороты
ну и проверка-то правильная
а вот вставил ли ты ее ВО ВСЕ страницы где она нужна?

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

Лучший ответ:
Прям с нуля: A Byte Of Python
Более глубокое изучение: Лутц Марк - Изучаем Python
Информация в целом актуальная, естественно за время с выхода этих книг появилось кое-чего новое, а что-то изменилось, но это никак не отражается на процессе обучения. После книг всегда можно почитать документацию и списки изменений.

Худший ответ:
"Как устроен Python. Гид для разработчиков, программистов и интересующихся":
https://litres.ru/mett-harrison/kak-ustroen-python...
Полистал доступный фрагмент - понравилось, с визуализацией. Вспомнился курс на stepic, там тоже парань доходчиво объясняет на схемах, например про наследование:
https://stepik.org/course/512/promo
Вопрос: На чем реализовать проект, аналог ADVCASH, PAYEER и т.п.?

Лучший ответ:
А лицензию на платежные услуги уже получили?

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

гугление по запросу "programming language for fintech" говорит что python, C++ и java популярнее других.
Вопрос: Как покрыть подобный метод юнит тестом?

Лучший ответ:
Ведь если я укажу существующие сейчас clientId, и с ними пройдут юнит тесты, и когда то удалят эти clientId из БД, то юнит тесты зафейлятся
Юнит тесты ходят в реальную бд? Это неправильно.
Нужно заменять в тесте слой взаимодействия с бд заглушкой, которая будет возвращать нужные данные, либо для тестов своя бд, где перед тестом она заполняется нужными данными

Худший ответ:
Сделайте мок тестируемого сервиса, переопределите методы, которые находятся в тестируемом методе, но нет необходимости их тестировать, верните ожидаемое для тестового сценария значение:$serivceMock = $this->getMockBuilder(Service::class)
            ->setMethods(['read',])
            ->getMock();
$serviceMock->expects($this->once())
            ->method('read')
            ->willReturn($preparedResult);
$serviceMock->execute($clientId);
// there is checks about work with preparedResult
Или, например, при проверке ситуации с ненайденным пользователем$serivceMock = $this->getMockBuilder(Service::class)
            ->setMethods(['read',])
            ->getMock();
$serviceMock->expects($this->once())
            ->method('read')
            ->willThrowException(new NotFoundException());
$serviceMock->execute($clientId);
// there is checks about work with not found exception
Вопрос: Почему сайт гуляет на мобильных экранах?

Лучший ответ:
@media (max-width: 730px) {
  .team-people {
    width: 700px;
  }
}
Вот зачем 700px для мобильных?

И сразу же
.team-people {
    width: 785px;
}
И в ту же степь
.portfolio-form {
    width: 510px;
}

Если уж прям очень нужно ограничить ширину, то нужно ставить max-width и верстку не сломаешь.

Худший ответ:
Хотел помочь увидел структуру 
<header class="header">
        <div class="container">
            <div class="header-block">
                <div class="header-logo">
                    <div class="header__img">
                        <img src="img/logo.png" alt="BAK-ONE">
                    </div>
                    <div class="header__text">
                        <!-- /.header__logo -->
                        <div class="header__title">BAK-ONE</div>
                        <!-- /.header__title -->
                        <div class="header__subtitle">One Page Flat Template</div>
                        <!-- /.header__subtitle -->
                    </div>
                    <!-- /.header-text -->
                </div>
                <!-- /.header-img -->

закрыл сразу
Вопрос: Как наблюдать за логами запущенной программы в консоль?

Лучший ответ:
1. Использовать nohup - тогда программа не только запустится в фоне, но и отвяжется от вашей консоли, а логи автоматом попадут в файл nohup.out
nohup ./programma &

2. Запускать программу в фоне с перенаправлением вывода
./programma >programma.log 2>programma_errors.log &

3. Запускать программу в фоне с перенаправлением вывода и через nohup, тогда программа уйдет в фон, отвяжется от консоли, но вы можете указать конкретные имена файлов логов
nohup ./programma >programma.log 2>programma_errors.log &

4. Можно стандартный вывод и вывод ошибок в один и тот же файл кинуть:
nohup ./programma >programma.log 2>&1 &

Худший ответ:
https://wiki.archlinux.org/index.php/GNU_Screen_(Р...
https://wiki.archlinux.org/index.php/Tmux
Вопрос: Laravel не показывает изображение что делать?

Лучший ответ:
Не может быть у вас там путь ../../public, потому что public это корень куда смотрит вебсервер изначально.
т.е. относительно сайта картинка будет в ./image/bg1.jpg или /image/bg1.jpg, лучше второй вариант.

Худший ответ:
это скрин не ларавел, а вашего кода.
public - это document_root (если, конечно, настроено так, как дOлжно), корень того, что может быть доступно публично. совершенно естественно, что при попытке вылезть за его пределы, получается не то, что ожидается.
решение: перенос ресурсов в публично доступное место, и исправление их адресов.
Вопрос: Есть ли готовые утилиты linux для работы с bind?

Лучший ответ:
А можно просто взять PowerDNS..

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

Лучший ответ:
В любом из перечисленных ниже:
https://towardsdatascience.com/the-roadmap-of-math...
https://www.datasciencecentral.com/profiles/blogs/...
https://habr.com/ru/post/432670/
https://www.quora.com/How-do-I-learn-mathematics-f...
https://proglib.io/p/obuchenie-data-science-kakie-...
Только вот я бы сказал, что без умения самостоятельно Гууглить изучать Data Science будет чрезвычайно тяжело.

Худший ответ:
Учите в интернет ресурсах , если не понятна какая-то тема в математике, то нужно временно отойти назад, к более простым вещам. осуществить тактическое отступление. вкладывайте силы чтобы максимально понять текущую мат программу, решайте школьные олимпиадные задачи. и раз в пол года возвращайтесь к тому, что было для вас слишком сложно до этого. в какой-то момент понимание начнёт появляться.
Пару советов которие мне помогли:
 1.матана много знать не надо, только понять что такое оптимизация
2. курс Andew Ng на youtube тоже норм базу обьясняет
3. udacity курс по Data science очень детально покрывает минимальную базу по математике
4. потом читайте Gareth James "Introduction to Statistical learning", там с виду сложновато, формулы особенно итд итп, но по сути все очень просто, если на них не слишком сложным взглядом смотреть
Вопрос: Почему градиент в svg странно накладывается?

Лучший ответ:
Надо использовать значение userSpaceOnUse для gradientUnits.
<linearGradient gradientUnits="userSpaceOnUse" ...>

Когда вы пишите <svg class="inline-svg-icon" fill="url(#red-blue)"><use...> по сути каждый элемент просто наследует этот атрибут fill. И по умолчанию градиент рисуется в границах элемента. Если же указать userSpaceOnUse, то градиент будет рисоваться в пределах текущего viewport.

https://codepen.io/alexeyten/pen/rNLQKbm?editors=1000

Худший ответ:
fill применяется к каждому svg-объекту по отдельности, поэтому получается такой эффект. 
Думаю, одним из самых простых решений будет использование маски. 
То есть создаете один большой объект, который заливаете градиентом, а саму svg используете как маску для этого объекта.
Вопрос: Какие технологии выбрать для web/desktop app?

Лучший ответ:
Electron или Qt например.

Худший ответ:
Если приложение автономное, не взаимодействует с интернетом во время запуска и работы: Архив с html/js/css файлами и последующим запуском index.html-файла через браузер (через "ярлык" или напрямую: через проводник и т.п.) запаковать любой инсталляшкой.
Вес - небольшой (5-7мб), функционал калькуляции - рабочий.

Иначе: nwjs.io. Вес "пустого" приложения от 85Мб.