Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: В каких случаях логичней чтобы получить половину умножать на 1/2, а в каких делить на 2?

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

Если же речь о целочисленном делении на 2, то тут эта операция заменяется сдвигом вправо на 1 бит, что работает быстрее и умножения и деления. Впрочем подобные вещи компилятор сам в состоянии сделать при включенной оптимизации.

Худший ответ:
Возможно это не от математики а от практики программирования идет. Когда работают в вещественных числах (float, double) то умножают на 0.5.

А если какой-то особый случай и надо работать с рациональными дробями вида 3/15, 7/11 то подключают тип Rational и в нем получают более точный результат базовой арифметики чем например double.
Вопрос: Можно ли устанавливать безопасно файл apk, если вирустотал не нашёл каких либо вирусов в нем?

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

Худший ответ:
Так же как и программу на ПК

Если ты доверяешь издателю и сайту откуда её скачал - то да
Вопрос: Как подружить VS Code + Remote SSH + WSL?

Лучший ответ:
Ваша проблема в том, то Вы абсолютно не понимаете как работает WSL. Давайте немного объясню.

Начиная с WSL2 подсистема Linux крутится в полноценной виртуальной машине. И винда кстати тоже. Это работает следующим образом: когда Вы запускаете свой компьютер первой загружается на самом деле не винда, а гипервизор HyperV. Для пользователя происходит все прозрачно, так как HyperV настроен сразу запускать 2 виртуальные машины - с виндой и с линем. В машину с виндой HyperV сразу прокидывает все Ваши устройства (видеокарту, USB и прочее). Так же HyperV поднимает виртуальную сеть между этими двумя виртуалками. В машине с линем еще не Ваша Ubuntu, там легковесная ОС состоящая только из ядра и оркестратора LXC контейнерами (с ней кстати можно по взаимодействовать по сети, как это делает Docker Desktop например, ну или утилита wsl.exe). Ваша Ubuntu запускается в контейнере, так попросту быстрее ее запускать и останавливать, ибо ядро всегда висит в памяти. Опционально в линь монтируются папки (диски) из винды, делается это посредством патча ядра Linux от Microsoft. Обратный доступ предоставляется из винды посредством сетевого ресурса wsl$.
Главное что тут стоит понять - винда и линь в WSL по сути работают на разных компах, пусть и виртуальных.

Теперь ответьте на вопрос, на каком из этих компов работает Ваш VSCode?
Правильный ответ на винде. А значит и взаимодействовать он будет с виндой. И искать ключи для подключения к ssh будет в домашней папке юзера в винде.

Можете просто скопировать ключи из линя на винду и все заработает.

Худший ответ:
Помогло следующее:

 Создать ключ на локалке
ssh-keygen

Добавить открытый ключ на сервер в файл authorized_keys
cat ~/.ssh/id_rsa_vscodessh.pub | ssh username@hostname "umask 077; mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"

Если папка .ssh уже создана, то терминал покажет ошибку, но открытый ключ в authorized_keys добавит.

Вход на сервер без ключа
что бы зайти на сервер по ssh без пароля нужно ввести 
ssh -i ~/.ssh/id_rsa_vscodessh username@hostname



Источник: https://youtu.be/py6Km38tJBc
Вопрос: Как быстро получить случайное слово из файла на 12 ГиБ?

Лучший ответ:
Вариант с потолка: генерируйте случайную позиции в файле (от нуля до размера файла в байтах). Читаете все окружающие символы пока не найдете два символа новой строки ('\n') до и после исходной случайной позиции. Между этими символами новой строки и будет ваше случайное слово. 

Рандом, конечно же, не совсем честный и сильно зависит от различия в длинах строк в файле.

Худший ответ:
Какая максимальная длина слова? Ну допустим 20 символов.

Не в курсе насчет питона. Но я-бы убрал фактор плавающей длины. Например я-бы разбил
этот 12Гб файл на 20 файлов. Допустим в первом будут лежать все слова длиной в 1 символ.
Во втором 2 символа. И так далее.

Тогда формула будет такая. Считаем распределение слов по этим 20 файлам. Там гистограмма получается.
Типа допустим 5% на 8 символьные слова. 8% на 9 символьные и так далее. Выбираем случайный файл 
ну как-бы учитывая "перекос". И потом уже внутри этого файла просто ищем случайное слово. Будет
быстро потому-что слова уже имеют фиксированную длину.
Вопрос: Как уменьшить размер логического диска Ubuntu из под Windows?

Лучший ответ:
Есть ли какой то софт работающий с linux'овыми ФС? 

Есть - MiniTool Partition Wizard

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

Лучший ответ:
С помощью тени вряд ли ты это сделаешь, лучше используй псевдоелементы:
<div class="div"></div>

.div {
    position: absolute;
    width: 600px;
    height: 200px;
    background: hsl(240deg 100% 50%);
    border-radius: 20px;
    top: 300px;
}
.div::before {
    width: 500px;
    height: 30px;
    background: hsl(240deg 63% 90%);
    position: absolute;
    top: -17px;
    left: 50px;
    content: "";
    z-index: -1;
    border-radius: 20px;
}

Результат:

Надеюсь это поможет)

Худший ответ:
Откройте инструменты разработчика в своём браузере и посмотрите как это сделано. Есть вероятность, что это вовсе не тень, а отдельные блоки с закруглёнными углами и прозрачностью.
Вопрос: Как пользоваться модулем time?

Лучший ответ:
time.sleep(10)
Но если вы и этого не смогли понять когда читали в книгах и в интернете, я даже тогда не знаю....

Худший ответ:
time.sleep(2)
Функция sleep() предназначена для задержки кода на две секунды.
Надеюсь помог
Вопрос: Болят глаза через 5-10 минут, что можно сделать?

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

Вобщем глаза - твоё здоровье и не слушай советы дилетантов по поводу монториов или шрифтов. У тебя - медицинская проблема и ее надо решать с медициной.

Худший ответ:
дай глазкам отдохнуть=наверное пялишься до упора))=так нельзя
5минут каждый час
посмотри что то в далеке(в окно)
Вопрос: Android Studio для слабых ПК (2014)?

Лучший ответ:
1) Вместо эмулятора использую свой телефон.
2) Попробуй как здесь https://www.youtube.com/watch?v=t-ezDoKW6Eo 
(Ссылку получил отсюда https://www.fandroid.info/kak-uskorit-android-studio/)
3) Попробуй очистить свой комп от мусора и не нужных фоновых процессов (ТОЛЬКЛО ОСТОРОЖНО!)

Худший ответ:
Тут предыдущие версии.
Вопрос: Почему выдает ошибку "sqlite3.OperationalError: near "users": syntax error"?

Лучший ответ:
Ты пытаешься записать user id, а в таблице нет такого заголовка.
Т.е. ты создал таблицу с 3 полями. Id, money и bitcoin. А потом хочешь записать куда-то user id.

И проверь запрос на добавление данных.

Худший ответ:
INSERT OR REPLACE INTO users
Читаем документацию, не ленимся.
Вопрос: Как сейчас быстрее войти в мобильную разработку?

Лучший ответ:
А кто его знает как войти быстро. 5 лет учу и все равно считаю что не пройду собеседование на джуна.  Знают как быстро только владельцы курсов "мобильный разработчик за X дней/месяцев". 

Мое мнение только нативная разработка. Только хардкор на java для андроида и обжестив си под яблоко. 
Почему не котлин или свифт. А то что мне интересно никто не переписал. Слишком близко к ядру мои интересы лежат.

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

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

Худший ответ:
Сейчас непонятно, как во всем этом разобраться через боль.  Добро пожаловать в мир реального ИТ, а не в том, который ты на ютубчике смотрел. Гггг...

Кстати, увлекательное погружение в эти монстроподобные проекты с сотнями тыс строк кода у тебя будет до конца твоих дней работы программистом. Как сейчас, так и через 10-20 лет =))

Так что если взвоешь, бросай это, пока не поздно. Серьезно говорю.
Вопрос: Что лучше всего использовать при работе с данными?

Лучший ответ:
 Какие инструменты командной строки вы чаще всего используете при работе с большими данными?  
rar, tar+gzip, zip

В чем их плюсы?
Уменьшают размер больших данных

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

Python

В чем их плюсы?

Большое количество библиотек для работы с данными
Вопрос: Вопрос по ассемблеру во встраиваемых микропроцессорах и одной истории про это. Как пытался осуществить парень такую штуку?

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

И как он мог удалённо получить доступ к микропроцессору кардиостимулятора, чтобы перепрошить?
У кардиостимуляторов есть интерфейс для питания и настройки. Вероятно - через этот же интерфейс он нашёл способ перепрошивки.

И что именно он вообще пытался сделать с этим микропроцессором кардиостимулятора?
Не читал рассказ этот, но тут два варианта:
1. Добавить ещё одно устройство рядом с ним, которое бы меняло параметры работы кардиостимулятора
2. Изменить программу в самом кардиостимуляторе
Зачем? Чтобы например при физических нагрузках, когда нужен более высокий пульс, кардиостимулятор поддерживал этот повышенный пульс.

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

Вообще в реальной жизни я бы не пытался это провернуть, тк идея абсолютно суицидальная.

Худший ответ:
все на аналоговых схемах https://www.researchgate.net/figure/Schematic-of-t...

хотя вот еще
https://www.researchgate.net/figure/Schematic-of-t...

pic16f873
Вопрос: Удалились файлы, как вернуть?

Лучший ответ:
Вопрос нормально сформулируйте. Что делали, что произошло, что хотим получить

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

Лучший ответ:
зависит от приложения.  Привет мир получается замечательно. 
А реальность тыкает носом, что тебе помимо дарта надо выучить еще 5 платформ и их нативные подходы. 
Загляни на pub.dev в популярные пакеты и посмотри как они поддерживают кросплатформенность

Худший ответ:
Советую с начало изучить java.
Вопрос: Куда нужно прописывать @import в gulp 4,чтобы установить библиотеку?

Лучший ответ:
По поводу самой директивы @import в main.scss: сейчас рекомендуется использовать вместо неё @use, общий смысл остаётся тем же. Подробнее можете прочитать на официальном сайте.

Для подключения стилей библиотеки нужно прописать правильный путь до файла относительно того файла, в который подключаете, main.scss в вашем случае. Где у вас лежит библиотека, в node_modules? Относительный путь выглядит, например, так: ../../node_modules/tippy.js/dist/tippy.css: это значит выйти на один уровень папок выше два раза (две точки), затем зайти в несколько папок вглубь и выбрать нужный файл. Я думаю, вас запутал путь до CSS файла, указанный в описании пакета npm, там путь указывается для импорта с помощью ES modules в js файл, чтобы потом собирать с помощью бандлеров типа Webpack. Вы хотите подключить CSS файл в SCSS, так что попробуйте прописать путь, как я описал.

Для подключения JS части библиотеки потребуется import в ваш main.js или index.js с помощью ES modules, как описано на странице пакета библиотеки. В идеале потом, чтобы бандлер обработал Js: собрать в один файл, Babel, минификация и другие операции с JS кодом. Можно, конечно, и с помощью Gulp сконкатенировать все JS файлы без бандлеров, но нужно следить за порядком конкатенации, есть и другие нюансы, и это в целом неудобно. Я использую связку Gulp для всего кроме JS, а Webpack — для JS, соединяются они через webpack-stream.

Чтобы заработали ES modules, добавьте "type": "module" в ваш package.json.

Удачи)

Худший ответ:
А для чего вам gulp, если вы импортируете напрямую в файл?
Если у вас сборка на функциях то даю кусочек того как это реализовано у меня:
const { src, dest, watch, parallel, series } = require('gulp');
const sass         = require('gulp-sass')(require('sass'));
const concat       = require('gulp-concat');
const autoprefixer = require('gulp-autoprefixer');


function styles() {
	return src([  // в массиве прописываю все нужные мне пакеты
                'node_modules/tippy.js/dist/tippy.css', // так будет выглядеть в вашем случае
		'node_modules/swiper/swiper.min.css',
		'node_modules/jquery-custom-select/dist/css/jquery.custom-select.min.css',
		'src/sass/*.scss'
	])
		.pipe(sass({outputStyle: 'compressed'}))
		.pipe(concat('style.css'))
		.pipe(autoprefixer({
			overrideBrowserslist: ['last 8 versions']
		}))
		.pipe(dest('../build/css'));
}
Вопрос: Стоит ли менять роутер? С Asus RT-AX58U на Xiaomi AX9000 или другой?

Лучший ответ:
покрытие/скорость в порядке,
Стоит ли оно того?
не мешайте технике работать))

Худший ответ:
тебе больше 500мб зачем? если есть реальная необходимость - сервер стоит например - тяни провод

если всё работает и устраивает - ненадо ничего трогать

и не забывай, что при смене роутера на новый с последней версией вифи, чтобы она нормально работала, её должны еще и все устройства в сети поддерживать...

и тогда кроме роутеров - замена всех телефонов \ планшетов, покупка новой вифи к ноутам(карты), покупка \ апгрейд смарт ТВ итд )
Вопрос: Как Яндекс браузер получил мои пароли?

Лучший ответ:
Хром хранит пароли в конкретном известном месте, а Яндекс про это знает и в это место подсматривает. 
Вот статья, проливающая свет на происходящее: https://habr.com/ru/amp/post/134982/

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

Все пароли хром хранит в открытом виде у тебя на компе
Вопрос: Как разрешить пользователям доступ к серверу по RDP?

Лучший ответ:
Идея в том, что заходит рядовой пользователь на контроллер домена, эксплуатирует любой свежий баг с подъёмом привелегий - и вы сливаете в унитаз безопасность всего домена, всё предприятие разом, с сотнями или тысячами пользователей, с доступом к файлам пользователей, к рабочим машинам пользователей. Дальше можно делать в сети предприятия что вздумается. Всё зашифровать. Или получить доступ к финансам. Или годами скрытно воровать коммерческую информацию...
Такие вещи эникейщик должен выучивать в первый месяц стажировки на первом рабочем месте (если только там был поднят AD). И именно поэтому работодатели не хотят принимать на работу людей совсем без опыта - слишком велика ответственность, слишком легко одним неверным действием обанкротить всю контору.

Худший ответ:
1. вам нужно использовать учётную запись test@"domain"
2. политики запрета работают раньше разрешений, проверьте запреты
Вопрос: Как понять где +, а где -?

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

Худший ответ:
По фото видно, что штекер - круглый. У круглых штекеров внутри +, снаружи минус. Так что минус это корпус. (слева на фото)
Вопрос: Как сделать доступным интернет проект 24/7?

Лучший ответ:
Ну в целом сервер ненадо перезагружать, если только он не завис намертво. Да и есть ли смысл платить x2 а то и x3 каждый месяц из-за простоя в 60 секунд?

ПРоблема решается размещением 2х копий проекта в 2х разных дата центрах.
В DNS указывается 2 IP адреса, клиенты будут ходить на тот адрес. который им первым отдаст DNS

Худший ответ:
Обычно ставят умный балансировщик нагрузки который в час Х просто подменяет трафик.
Вопрос: Домашний хостинг?

Лучший ответ:
1. Да, можно.
2. Ту, которая точно стабильно работает с твоим ПО и которую ты умеешь администрировать.
3. Зависит от твоего провайдера.
Обычно это сводится к покупке статичного белого IP и проброс портов на твоём домашнем маршрутизаторе (инструкций достаточно)

Но для надёжности лучше всё-таки воспользоваться услугами colocation, а не размещать сервер в квартире.

Худший ответ:
Можно сделать. Порты открыть на твоем роутере (провайдер обычно закрывает порты только 135-139 и 25 порт, ну еще некоторые в целях безопасности), надо смотреть инструкцию к роутеру, но там обычно ничего сложного.
Самое важное условие - это наличие статического белого IP. Это надо для того, чтобы клиенты знали где сервер и всегда могли до него достучаться, ну и маршруты были указаны именно на этот сервер.
Крайне рекомендуется Linux Server, это самый надежный, безглючный и дешевый вариант (бесплатный вообще) к тому же куча инструкций как настраивается.
Вопрос: Можно ли настроить одну сеть для wan и lan портов?

Лучший ответ:
Про маску сети забыли.
Если 10.0.0.12-10.0.0.20 будут в одной сети, то согласно простой математике 10.0.0.10 будет в той же самой сети (маска /27 или меньше (/26, /25, /24,..) и вы не придумаете такую маску, чтобы отделить 10.0.0.10).

Но можно WAN 10.0.0.10/28 (от 10.0.0.1 до 10.0.0.14) и LAN 10.0.0.17/28, под DHCP 10.0.0.18..10.0.0.30
Можно ли настроить одну сеть для wan и lan портов?Одну - нельзя, потому что маршрутизация так не работает. А маршрутизация - это основная функция маршрутизатора. Маска как раз и разделяет диапазон адресов на разные сети. Предложенный мной пример - это не одна сеть, а две разные сети.

Худший ответ:
надеюсь ты понимаешь что такое одна сеть?

можно, это называется сетевой мост, нужно объединить lan и wan порты в одно сетевое устройство, кажется все роутеры должны это уметь
но провайдер (тот куда подключен wan) должен уметь роутить несколько ip адресов по твоему линку
Вопрос: Как установить Windows 7 с флешки на материнку LGA 1200?

Лучший ответ:
Он прям в ошибке и говорит в чем дело.
Ищите образ семерки под уефи. Или запишите образ с поддержкой уефи.

Худший ответ:
отключи ueffi  в БИОС
либо запиши флешку в режиме ueffi

а ты вообще посмотрел - есть ли драйвера под вин7 на эту материнку?

и чем тебя не устроила win10 LTSB ?
Вопрос: Как отключить предложение установить McAfee на windows 10?

Лучший ответ:
sysinternails autoruns - мощная утилита от майкрософт, показывает в одном списке практически все места где идет автоматический запуск, тут же можно удалить, тут же видно наличие цифровой подписи exe файла и ее владелец.

Если не понимаешь чья утилита висит в автозапуске и нужна ли она, можно в виртуалке поставить систему и так же запустить в ней autoruns и сравнить.

Есть еще task scheduler, бывает там тоже висят задачи (там вообще много что запускается, (например вся телеметрия от майкрософта туда вынесена), по той же схеме смотри и вычищай.

Худший ответ:
Притом установить тоже нельзя, как я понимаю, потому что в России заблокировали эту возможность.
Врубаем ВПН и делаем все необходимые манипуляции.
Вопрос: PHP curl стал выдавать ошибку?

Лучший ответ:
Судя по логу из спойлера, запрос делается к сайту который использует Cloudflare в качестве WAF и защиты от DDoS атак.
Как раз таки Cloudflare при блокировке поступающего запроса на защищаемый им сайт возвращает Error 1020 Access Denied (подробнее тут).
Либо администрация сайта усилила правила фильтрации поступающего HTTP трафика, либо система защиты от атак поняла что запросы с вашего IP или User-Agent'а являются автоматическими (ботом), в связи с чем начала блокировать их.

Попробуйте:

изменить значение для CURLOPT_USERAGENT, выставив реальный User-Agent обычного браузера
изменить IP с которого делается отправка такого запроса

Затем выполните вопрос и залогируйте полный ответ (тело), а не только http-статус ответа.
Если запрос пройдёт - значит всё отлично,  а иначе увидите полный html вывод ответа, на базе которого можно будет лучше понять какие дальнейшие действия можно предпринимать чтобы "обойти" защиту.

Если ответ помог, не забудьте отметить его как решение вашего вопроса. Успехов!

Худший ответ:
Блокировка запросов.
Ошибка curl 1020
Увеличить интервал между запросами.
Добавить стандартные заголовки в запросы, например, заголовок User-Agent.
Проверить, не ограничивает ли сервер ваш IP-адрес или ваш провайдер интернета.
Проверить, не изменился ли URL или структура запросов для этого API.

Интернет в помощь.
Вопрос: Новая материнская плата для R9 5950x или новая сборка на 7950x?

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

Если не хватает процессора, то конечно придётся менять все сразу: мать+проц+память.

Насчёт целесообразности перехода на новый сокет: скорее всего, сейчас соотношение цена/производительность будет на стороне вашей текущей конфигурации.

Худший ответ:
Лучше продать и собрать на интел i7 12700
По деньгам почти тож самое выйдет
Вопрос: Как узнать размер незаполненного массива в c++?

Лучший ответ:
Заполните изначально массив INT_MAX и затем заполните его на столько элементов, сколько нужно. Затем ищите первый элемент равный INT_MAX. Индекс этого элемента и будет длиной массива см. Как работает strlen.

Второй и наилучший вариант - использовать std::array или написать его аналог

Худший ответ:
Ну конечно уж я ерундой занимаюсь.
Ну мои методики:
Длина.
int m[5] = {1, 2, 3};
int length = 3; // исходно, массив содержит 3 элемента

// добавляем новый элемент в массив
m[length] = 4;
length++;

// теперь массив содержит 4 элемента

Незаполненный.

int m[5] = {1, 2, 3};
int length = 3;

// ищем незаполненный элемент
for (int i = 0; i < length; i++) {
  if (m[i] == 0) {
    std::cout << "Незаполненный элемент: " << i << std::endl;
    break;
  }
}
Вопрос: Как автоматизировать и чем заменить excel?

Лучший ответ:
Если вам хватало экселя, то не надо никаких 'приложений'.
На планшете браузер, в нем любое облачное решение типа google forms (или тот же яндекс).

Если не нравится требования интернета, то пилите свое (можно купить готовое типа офис, но там цены такие что луче нанять программиста) и запускайте в локальной сети.

Браузер в отличии от приложения не привязывает решение к версии, ос, и т.п. и способен запускаться (при наличии хоть какой то адекватной верстки под разные размеры экрана) хоть на планшетнике хоть на компьютере.

Худший ответ:
Всем спасибо!

Попробую переформулировать вопрос, мне кажется, после этого мы точно сможем приблизиться к разгадке