farplugins / calculator Goto Github PK
View Code? Open in Web Editor NEWAdvanced configurable calculator, plugin for Far Manager
License: BSD 3-Clause "New" or "Revised" License
Advanced configurable calculator, plugin for Far Manager
License: BSD 3-Clause "New" or "Revised" License
обнаружено и исследовано под Win10 1607 x64 + Far x86
Far b5049 — последний, в котором эффект не обнаружен.
начиная с b5055, эффект возникает и с нарастающей силой проявляется вплоть до крайней ночной (b5210).воспроизведение.
архив с Far распаковывается в отдельную папку, туда же, в папку плагинов распаковывается Calculator v3.23 x86
запускается Far строкой (я использовал батник):
Far.exe -s Profile
вызываем калькулятор: F11 "calculator" "calculator"
в поле выражения вводится:
12345.67/543.21*135.24*12345.67/543.21*135.24*12345.67/543.21*135.24*12345.67/543.21*135.24
теперь все готово к демонстрации.
у проблемы есть два проявления: визуальное и быстродействие. в вышеописанной тестовой конфигурации действует только визуальное: зажимаем BS и смотрим на строки результата вычислений — помимо естественного мельтешения цифр видим хаотичные цветовые моргания разных строк результата. если же использовать реальную конфигурацию со всеми настройками, скриптами и плагинами, то дополнительно еще появляется падение скорости: например, упомянутая строка выражения удаляется ~4.45 вместо ~3.45 секунды. в более поздних билдах эффект усилился до того, что падение скорости можно обнаружить и на тестовой минимальной конфигурации, а для реальной конфигурации оно увеличивается (время удаления может достигать ~5 с, в отдельных случаях до 6 с).
Проверял вопрос VDVolkov с руборда и действительно х64 сборка на b3702 при запуске вызывает AV в GetPluginInfoW()
Исключение: Нарушение доступа (чтение из 0x000000000000000A)
Адрес: 0x000007FEE73A1346
Функция: GetPluginInfoW
Модуль: \3702 x64\Far\Plugins\Calculator.3.26.0.x64\calc.dll
пока только это, попробую сдампить и поглядеть...
Предлагаю такую коррекцию файла calcset.csr
--- calcset.csr.bak Tue Feb 02 21:18:58 2021
+++ calcset.csr Tue Feb 02 21:18:31 2021
@@ -200 +200 @@
- <func syntax="log" mean="_ln(op0) / _ln(op1)"/>
+ <func syntax="log" mean="_ln(op1) / _ln(op0)"/>
Логичнее писать, ну, например, для десятичного логарифма: log(10,какое-то-число), а не log(какое-то-число,10).
Полагаю, эта строка — просто недоделанная копипаста, если сравнить со строками выше (в патче не приведены).
С точки зрения нашего удобства вариант записи digit_E_знакdigit удобнее, но с точки зрения математики вариант digit_E_digit/digit_E-digit_ считается допустимым. Я встречал его в математических работах, хотя для чтения он менее удобен чем вариант со знаком экспоненты. По крайней мере когда я учился наши преподаватели и после мы на кафедре знак экспоненты никогда не опускали, что ускоряет чтение сложных формул "с листа" и одновременно снижает число сомнений в правильности трактовки прочитанного.
Функция реализована в файле calcset.csr
Вопрос уже поднимался и аргументировался, но решение не было принято в транк.
Предлагаемый патч
--- calcset.csr.bak Tue Feb 02 21:07:19 2021
+++ calcset.csr Tue Feb 02 21:08:50 2021
@@ -182 +182 @@
- <func syntax="round" mean="_if( frac(op0) >= 0.5, _if(op0>0, ceil(op0), floor(op0)), _if(op0>0, floor(op0), ceil(op0)) )"/>
+ <func syntax="round" mean="floor(op0+0.5)"/>
Результат вычислений запредельно длинный. Это не имеет никакого практического смысла, и это вносит неудобство. После каждого нажатия Enter мы видим дальний хвост цифр, который не имеет значения, а начальные, реально нужные цифры уходят за горизонт влево.
Возможны разные решения.
Давно и безутешно хочется вызывать плагин из VisualCompare, который по паспорту является Dialog.
sin(pi)=0 sin(2*pi)=0 sin(3*pi)=2.7934029957198183141977422640250350414588333968801578468407214574845709946978656626697036035310753364907384805902947876516425e-250 sin(4*pi)=0
Американский дюйм сейчас это ровно 2,54 см, а не 2,5399956. Исправьте пожалуйста.
Best calculator ever. But has a bug in saving the configuration. In api-far3.cpp, function SettingsSet and SettingsGet must be instead of "FarSettingsItem item = {0};" f.e. "FarSettingsItem item = {sizeof(FarSettingsItem), 0, name, FST_STRING};".
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.