mirror of
https://github.com/Horizontal42/summarum.git
synced 2026-11-10 16:51:59 +03:00
169 lines
11 KiB
Markdown
169 lines
11 KiB
Markdown
# Summarum
|
||
|
||
[English](README.md)
|
||
|
||
**Калькулятор, который работает как блокнот.** Пишешь что думаешь — каждая строка сразу даёт ответ в правой колонке. Никаких кнопок, никакого синтаксиса формул, просто текст.
|
||
|
||
```
|
||
# Поездка в Лиссабон
|
||
билеты $420
|
||
отель $95 * 4 ночи
|
||
еда 30€ в день * 4 дня и музеи 25€
|
||
итого → $1,066.97
|
||
|
||
5 дюймов в см → 12.7 cm
|
||
100 км/ч в миль/ч → 62.14 mph
|
||
$2000 в рублях → 144,060 ₽
|
||
скидка 20% от 1500 → 1,200
|
||
сегодня + 6 недель → 22 Июля 2026
|
||
1000 USD в EUR на 2024-01-01 → € 917.30
|
||
? * 1.2 = 1000 → 833.33
|
||
AAPL в USD → $213.55
|
||
дней до 2027-01-01 → 183 day
|
||
график → ▂▄▇█▆
|
||
```
|
||
|
||
Работает на **английском и русском одновременно**: `5 метров в см`, `20$ в евро`, `сумма` — переключать язык не нужно.
|
||
|
||
## Установка
|
||
|
||
Скачай последний `Summarum_*_x64-setup.exe` (или `arm64-setup.exe` для Windows on ARM) из [Releases](../../releases), запусти — готово. Весь установщик около 2 МБ. Дальше обновления проверяются сами.
|
||
|
||
Требования:
|
||
|
||
- **Windows 10 (1803+) или Windows 11**, 64-бит.
|
||
- **[WebView2 Runtime](https://developer.microsoft.com/en-us/microsoft-edge/webview2/)** —
|
||
уже встроен в Windows 11 и большинство обновлённых Windows 10; если отсутствует,
|
||
установщик скачает его автоматически.
|
||
- Интернет нужен только для живых курсов и рыночных данных — всё остальное работает офлайн
|
||
(курсы берутся из кэша или встроенного снимка).
|
||
|
||
## Что понимает
|
||
|
||
**Обычная математика** — `2 + 2`, `8 / (45 - 20%)`, скобки, `^`, `sqrt`, `sin`,
|
||
факториалы, `случайное()`, `случайное(1; 6)`. Точная десятичная арифметика:
|
||
`0.1 + 0.2` это `0.3`, а не `0.30000000000000004`.
|
||
|
||
**Слова как операторы** — `12 плюс 4`, `20 делить на 4`, `5 и 3`. Текст вокруг
|
||
математики игнорируется: `потратил 20 на пиццу и 5 на кофе` даст 25.
|
||
|
||
**Единицы** — длина, масса, объём, площадь, температура, время, углы, данные
|
||
(`1 ГиБ в МБ`), CSS px/em, скорость, давление, энергия, мощность, частота, расход топлива:
|
||
|
||
```
|
||
6 футов в метрах 1 атм в мм рт.ст. 8 л/100км в mpg
|
||
2 часа 30 мин в мин 150 л.с. в кВт 32 px в em
|
||
```
|
||
|
||
**Деньги** — ~150 валют и топ-20 криптовалют с живыми курсами
|
||
(обновляются раз в час, кэшируются для офлайна). `$100 + 20%`, `5 eth в USD`,
|
||
`9800 рублей в долларах`.
|
||
|
||
**Живые рыночные данные** — котировки акций и сырья обновляются каждые 15 минут:
|
||
`100 AAPL в USD`, `2 GC=F в USD` (фьючерс на золото), `MSFT + GOOGL`.
|
||
|
||
**Исторические курсы** — `1000 USD в EUR на 2024-01-01` запрашивает курс ЕЦБ
|
||
за этот день (через frankfurter.app) и кэширует его навсегда.
|
||
|
||
**Проценты по-человечески** — `20% от 80`, `скидка 20% от 1500`, `5 это сколько % от 25`,
|
||
`20% от какого числа равно 30`.
|
||
|
||
**Даты и время** — `сегодня + 2 недели`, `завтра - сегодня`, `время в Нью-Йорке`,
|
||
`сейчас в unix`, `1750000000 как дата`. ISO-даты: `2024-01-01 + 30 дней`,
|
||
`дней до 2027-01-01`, `дней с 2020-03-15`.
|
||
|
||
**Поиск неизвестного** — поставь `?` на место неизвестного и `=` с нужным результатом:
|
||
`? * 1.2 = 1000` → `833.33`, `100 - ? = 30` → `70`. Работает для любых выражений,
|
||
решаемых линейным методом или бисекцией.
|
||
|
||
**Для программистов** — `0xFF & 0x0F`, `1 << 4`, `255 в hex`, `в binary`,
|
||
плюс `в дроби` (0.75 → 3/4) и `в roman` (2026 → MMXXVI).
|
||
|
||
**Листы с переменными** — переменные (`аренда = $500`), нарастающие итоги
|
||
(`сумма`, `avg`, `prev`, `количество`, `минимум`, `максимум`, `произведение`),
|
||
заголовки `#`, комментарии `//`. Строка статуса всегда показывает итог листа;
|
||
выдели несколько строк — увидишь их сумму. Добавь `график` в конце блока чтобы
|
||
нарисовать спарклайн.
|
||
|
||
**Ссылки между листами** — тяни значение из другого листа через `@`:
|
||
`@Бюджет.total`, `@Бюджет.аренда`, `@[Поездка в Лиссабон].еда`. Лист из одних
|
||
ссылок становится живым дашбордом: `@Активы.total - @Долги.total`. Дай листу-
|
||
источнику постоянное имя (не автоматическое), иначе ссылка сломается при
|
||
правке первой строки.
|
||
|
||
## Удобные мелочи
|
||
|
||
- **Ctrl+Alt+N** (настраивается — поле в настройках записывает нажатые клавиши)
|
||
показывает/скрывает окно из любого места. Закрытие прячет в трей.
|
||
- **Ctrl+W** закрывает текущий лист (спрашивает подтверждение если есть содержимое).
|
||
- **Ctrl+F** (или кнопка 🔍) ищет сразу по всем листам — по тексту или по значению
|
||
результата: `>1000`, `<50`, `=100`, `~100` (±1%). Клик по результату — переходишь туда.
|
||
- **Клик по результату** копирует его. Копирование строки копирует её *вместе с ответом*
|
||
(`аренда * 3 = $1,500`). **Ctrl+Shift+C** копирует весь лист с ответами.
|
||
- **Экспорт картинкой** — меню ⤓ содержит «Скопировать картинкой»: рендерит лист
|
||
в PNG и кладёт в буфер обмена (при ошибке предлагает сохранить файл).
|
||
- **Потяни разделитель** чтобы изменить ширину колонки результатов.
|
||
- **Брось файл `.numi`, `.sum`, `.txt` или `.md`** в окно — откроется как лист.
|
||
- **Закрепление и порядок листов** — нажми значок булавки на любом листе в сайдбаре
|
||
чтобы закрепить его вверху; кнопки ↑↓ меняют порядок.
|
||
- **Резервные копии автоматические**: ежедневный снимок всех листов (хранятся 14 дней),
|
||
удалённые листы лежат в корзине 14 дней (настраивается) — верни перетащив обратно.
|
||
Настройки → Backups откроет папку.
|
||
- **Папка данных настраивается** — укажи OneDrive/Dropbox и листы синхронизируются
|
||
между машинами.
|
||
- **Поверх всех окон** (в настройках) закрепляет окно над остальными.
|
||
- Приложение само проверяет обновления при запуске и предлагает установить —
|
||
вручную скачивать и переустанавливать не нужно.
|
||
- Светлая/тёмная тема, интерфейс en/ru, настраиваемая точность и разделители.
|
||
|
||
## Расширения
|
||
|
||
> **Внимание:** расширения запускаются как доверенные локальные скрипты с доступом к вашим файлам. Загружайте только код, который вы написали сами или полностью доверяете.
|
||
|
||
Брось `.js`-файл в папку расширений (Настройки → Extensions folder) и перезапусти.
|
||
API совместим с расширениями Numi:
|
||
|
||
```js
|
||
numi.setVariable("ндс", { double: 20 });
|
||
numi.addUnit({ id: "этаж", phrases: "этаж,этажей", baseUnitId: "meter",
|
||
format: "эт", ratio: 3 });
|
||
numi.addFunction({ id: "гипот", phrases: "гипот" },
|
||
(v) => ({ double: Math.hypot(v[0].double, v[1].double) }));
|
||
```
|
||
|
||
Тогда `5 этажей в метрах` → `15 m` и `гипот(3; 4)` → `5`.
|
||
|
||
## Баги и идеи
|
||
|
||
Открой [issue](../../issues). Строка того что написал и что ожидал увидеть — достаточно.
|
||
|
||
## Для разработчиков
|
||
|
||
Устройство движка, структура проекта и как добавлять единицы/валюты:
|
||
см. [ARCHITECTURE.ru.md](ARCHITECTURE.ru.md).
|
||
|
||
```bash
|
||
npm install
|
||
npm test # тесты движка (113 кейсов)
|
||
npm run tauri dev # запустить приложение
|
||
npm run tauri build # собрать установщик
|
||
```
|
||
|
||
Для сборки нужны:
|
||
|
||
- [Node.js](https://nodejs.org/) 22.6 или новее
|
||
- [Rust](https://rustup.rs/) (stable, MSVC toolchain)
|
||
- [Visual Studio Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/)
|
||
с компонентом «Desktop development with C++» (нужен линковщик MSVC)
|
||
- Если что-то не собирается — см. [Tauri prerequisites](https://tauri.app/start/prerequisites/)
|
||
|
||
Стек: [Tauri 2](https://tauri.app) + TypeScript + CodeMirror 6.
|
||
|
||
## Благодарность
|
||
|
||
Вдохновлён [Numi](https://numi.app) от Дмитрия Николаева —
|
||
если ты на macOS, купи его. Summarum — независимый проект, написанный с нуля для Windows.
|
||
|
||
## Лицензия
|
||
|
||
[PolyForm Noncommercial 1.0.0](LICENSE) — бесплатно для личного, образовательного и другого некоммерческого использования. Коммерческое использование (включая перепродажу или репакинг) запрещено.
|