создать новую тему раскрыть все
свернуть/развернуть ветвь Предложения об улучшениях [Дмитрий 02/07/2002 10:05] # написать ответ
 
Программа понравилась, расписывать не буду, все плюсы ей уже выставлены :-)
Через неделю плотной работы с ней родились следующие пожелания, которые очень хотелось бы увидеть:
1. Группировка счетов, возможность скрытия (только визуального)некоторых счетов для уменьшения загромождённости списка счетов (если их порядка 40 и все нужные, особенно долговые). Повторяюсь, конечно, это есть в плане работ, но хотелось бы побыстрее :-)
2. Если будет сделан п.1, то необходимость введения блока учёта долгов практически исчезает, хотя в первые дни работы с программой я думал, что это самое первое, что нужно сделать
3. Неплохо бы в разделе графики выбора счетов поставить кнопки "Выбрать все" и "Снять все", а то тыкать мышью в 20 счетов накладно :-)
4. ВАЖНО. В полях выбора даты мне кажется обязательно надо сделать при выборе числа, месяца или года возможность изменять их значения колесом мыши. Совсем хорошо, если такая возможность появится и в других полях ввода (счетов, корреспондентов и т.д.)
5. ВАЖНО. В форуме писали, но в плане работ над программой эта возможность почему-то не появилась. Если введён курс валют и есть его прогноз, то показ валюты в пересчёте на рубли (Графики-Остатки по счетам) должен быть не прямой линией, а как минимум, наклонной (рублёвый эквивалент-то меняется со временем), желательно как с учётом уже введённого курса валют, так и прогноза.
Я, например, использую специальный вид валюты - индекс потребительских цен и хотел бы видеть покрывает ли рост валюты рост цен на продукты (общий график растёт или падает).
 
6. ОЧЕНЬ ЖЕЛАТЕЛЬНО в графике Остатки по счетам иметь возможность видеть не только абсолютную величину денег на счете, но и относительно другого момента времени.
Реализовать это достаточно просто: при нажатии на CTRL на графике на месте указателя мыши появляется отметка и пока CTRL не отпущен, перемещение мышинного указателя по графику показывает сумму денег относительно этой отметки, - получаем очень удобный инструмент. Так сделано, например, в CAD Proteus.
7. Возможность использовать кросс-курсы валюты. Например, я задаю индекс потребительских цен относительно рубля. Можно было бы сделать чекбокс "Генерировать кросс-курсы" при выборе которого, появится курс индекса потребительских цен относительно доллара. Иначе приходится делать эту нудную работу с калькулятором.
8. Неплохая идея проскакивала - сделать механизм плагинов с открытым интерфейсом.
 
Всё. Спасибо за внимание. Извиняюсь, если утомил. Кстати, таких толковых форумов с обсуждением по делу давно не приходилось видеть.
 
Успехов автору.
 
Dervish: Спасибо за столь содержательные предложения! Если не возражаете, я отвечу на каждое предложение отдельным сообщением.
 
Что же касаемо толковости форума, то это заслуга его посетителей.
 
В планах есть, желание побыстрее понятно, стараюсь, делаю всё, что в моих силах.
 
Мне кажется, что необходимость в таком блоке всё-таки останется. И дело даже не в том, что этот блок будет делать какие-то супер-пупер вещи, а, скорее, такой блок может быть удобной оболочкой для повышения юзабилити программы.
 
Другой вопрос состоит в том, что я пока не совсем понимаю, как отнести счета к долговым в случае их иерархической организации. В общем, ещё большая тема для размышлений.
 
А если программа будет запоминать настройки каждой из страниц, это решит проблему?
 
Почему спрашиваю: просто жалко места на панелях настроек, его может просто не хватить.
свернуть/развернуть ветвь Кнопки "Выбрать всё" [Дмитрий 02/07/2002 17:29] # написать ответ
 
Групповой выбор нужен периодически. Если реализовывать, то лучше контекстным меню в поле "Названия счетов" - выбрать всё, снять всё.
свернуть/развернуть ветвь О колесе мыши [Dervish 02/07/2002 11:42] # написать ответ
 
Согласен, это нужно. Кстати, помогите определиться, в каком направлении надо вращать колёсико, чтобы увеличивать значение поля календаря (часов)?
свернуть/развернуть ветвь О колесе мыши [Дмитрий 02/07/2002 17:33] # написать ответ
 
Вообще-то стандартно во всех программах - колесо на себя - уменьшить значение, от себя - увеличить. (Как управление тягой двигателя в самолётах :-) Я уже о другом и помыслить не могу. Но если вопрос возник, можно и в настройки программы вынести...
 
Не появилось вот почему: на самом деле, там очень большой объём работ. Дело в том, что то, о чём Вы говорите, это ещё не всё. Сейчас график курсов валют строится так, что возможно получить на этом графике отрицательные значения курсов. Поставьте, скажем, за 1 мая курс 10:1, а за 2 мая укажите курс 1:1, а потом постройте график курсов за год. Да, программа всё будет считать правильно, но график построит именно таким, неудачным образом.
 
Есть мысль, как это исправить: в таких случаях график (и расчёт курса) должен быть нелинейным, а, скажем, параболическим. Но тогда, при некоторых граничных условиях, и остатки будут снижаться (повышаться) не линейно, а параболически.
 
В общем, я пока просто напуган объёмом труда, нужного для такой реализации.
свернуть/развернуть ветвь Динамика курсов валют. [Дмитрий 02/07/2002 19:32] # написать ответ
 
Не надо так всё усложнять. Эдак мы и до сплайновой интерполяции договоримся :-)
Не знаю, как Вы строите экстраполирующую прямую, но возможно, при вычислениях у Вас есть ошибка или неточность, потому что графики получаются какие-то странные - относительно ровные на реальных значениях и резко задранные вверх или вниз на прогнозах, хотя реально такой тенденции нет.
Предлагаю такое решение: За указанный период времени на вкладке "Графики" (ось X построения графика) берётся сумма разностей соседних значений по Y(n и n+1) и делится на указанный период. Получается величина наклона экстраполирующей прямой. Далее строится эта прямая на интервал НЕ БОЛЕЕ того, за какой учитывались значения, а за этим интервалом прямая строится пунктиром (т.е. недостоверный прогноз).
Таким образом, получаем
- простоту реализации. При одном значении курса валют в месяц для получения прогноза нужно 12 вычитаний, 12 сложений, 1 деление.
- исключение долгосрочных прогнозов на краткосрочных данных, как в приведённом Вами примере.
Кстати, в приведённом Вами примере нельзя дать вообще никакой прогноз - ни линейным, ни параболическим ни каким либо другим методом. Экстраполяция должна отражать ТЕНДЕНЦИЮ изменения курса, а спрогнозировать резкие колебания не сможет ни один математический метод, иначе бы мы купались в золоте :-). Указанный  вариант можно исключить, например, принудительным показом недостоверности прогноза (пунктиром) независимо от интервала выборки данных при падении прогнозируемого курса ниже 0 на интервале показа графика.
Этот же алгоритм, я думаю, можно применить для интерполяции (с определенными оговорками, естественно).
Математиков за столь вольную трактовку экстраполяции прошу сильно меня не пинать.
 
Dervish: Собственно, я потому и выделил прогнозируемые участки пунктиром, что они заведомо недостоверны. Абсолютно согласен с утверждением, что невозможна точная интерполяция, посему, быть может и не стоит особо копья ломать? Я затронул эту тему только лишь потому, что отрицательный курс выглядит на графике очень настораживающе, именно поэтому и возникает у меня желание исправить это, но (!) только это.
 
Если же говорить об эффективности, то, думаю, у Вас всё-таки нет нареканий на скорость работы программы. А сложность программы от такой переделки уменьшится несущественно.
свернуть/развернуть ветвь Динамика курсов валют [Дмитрий 02/07/2002 19:53] # написать ответ
 
В догонку к предыдущему. Кажется понял, как Вы считаете прогноз - за все введённые значения курсов валют, а надо бы только за интервал, попадающий в строящийся график. А то при прогнозе на июль 2002 по данным июня 2002 учитывается резкий скачок курса в 1998г.!!!
 
Dervish: Не совсем правильно Вы поняли. Не за все введённые значения, а только по самому первому и самому последнему значению. Именно через них проводится (красная пунктирная) линия.
 
Строить только по интервалу графика считаю неправильным, поскольку прогноз будет напрямую зависеть от диапазона построения графика.
свернуть/развернуть ветвь Ещё о динамике курсов... [Дмитрий 03/07/2002 09:33] # написать ответ
 
Честно говоря, удивлён :-O
Как можно строить прогноз всего по двум значениям, не учитывая промежуточные? Так, если одно из них август 1998г. или просто случайно выпавшее значение, оно так и будет влиять на все последующие прогнозы (даже на ближайший день), независимо от того, что курс стабилен и на дворе 2002 год? По моему, прогноз и должен напрямую зависеть от диапазона построения графика: краткосрочный прогноз (учитывая данные последнего месяца прогноз на следующий месяц) - один результат. Долгосрочный (по итогам года прогноз на следующий год) - другой результат.
Нельзя зафиксировав 1 раз трехкратный скачок доллара, определять, что тенденция роста доллара именно такая.
Мне кажется, неправильно в угоду скорости работы программы так упрощать алгоритм, и так несложный.
Очень бы хотелось услышать, что думаете по этому поводу Вы и пользователи программы...
 
Dervish: А почему, собственно, нельзя (так упрощать)? Неужели Вы думаете, что курс доллара реально отображает инфляционные процессы? Если же брать именно августовский кризис, то общеизвестно, что 17 августа "выстрелила" отложенная инфляция. Её пытались замаскировать, но всё-таки, она была. Если же брать долгосрочную перспективу, то (имхо) именно такая интерполяция и будет отражать реальное состояние инфляции.
 
И потом, Cash не предназначен для того, чтобы давать максимально реалистичные прогнозы курсов. Это просто невозможно. Кроме того, из опыта следует, что небольшие расхождения "будущих" курсов от их реального значения не оказывает существенного влияния на отчётность, которую генерирует Cash.
свернуть/развернуть ветвь Еще одно мнение. [Murdral 03/07/2002 10:02] # написать ответ
 
Как мне кажется вид экстраполяции в данном случае не сильно важен, все таки программа предназначена для подсчета личных финансов а не для прогноза ситуации на валютном рынке. То как она сейчас это делает мне вполне хватает. Но было бы неплохо если бы остатки по счетам коррелировали с курсом валют, я уже высказывал эту мысль.
 
Dervish: В общем, согласен.
 
Новое предложение. Спасибо.
 
Тогда внесу сюда еще одно предложение, на мой взглад ВАЖНОЕ.
Вертикальная линия в графике остатков по счетам не используется - значение суммы на этом участке абсолютно неинформативно, операция ведь мгновенна.
Предлагаю: на вертикальных участках, при наведении на них мыши, показывать тултипом операцию, согласно которой произошло это изменение
(счет, дата, сумма, статья, корреспондент, примечание).
Не страшно, что будет длинным.
Зато какая наглядность графика! Тут и суммы(горизонтальные участки) и причины изменения графика (вертикальные) и
прогноз (наклонные участки сплошной красной линией).
Что думаете?
 
Dervish: Думаю, что это очень хорошее предложение. Спасибо!
свернуть/развернуть ветвь Кросс-курсы [Dervish 02/07/2002 11:53] # написать ответ
 
В принципе, это возможно. Одна проблема: Cash не должен самостоятельно выбирать, через какую валюту считать курсы одной валюты по отношению к другой. Не должен потому, что в общем случае возможен пересчёт одной валюты к другой несколькими способами, через разные валюты. И, в общем случае, результат будет получаться разлиным.
 
Итак, цепочку валют для расчёта курсов должен задавать пользователь. Значит, (мне) надо придумать интерфейс ввода такой цепочки.
свернуть/развернуть ветвь Кросс-курсы. [Дмитрий 02/07/2002 17:59] # написать ответ
 
Это предложение - так, к сведению. Далеко не первой очереди оно. Будет время и желание - можно реализовать. Пока, как мне кажется, есть более важные дела.
свернуть/развернуть ветвь Плагины [Dervish 02/07/2002 11:58] # написать ответ
 
Помаленьку формируется желание сделать Cash автоматным COM-сервером. Причём, встроить в него язык скриптов. Основная сложность - в выборе самого языка.
 
Первый кандидат, конечно же, VBA. Но у него проблема в том, что он будет платным (чего не хотелось бы), а главное, он потащит за собой громадную среду, что (имхо) очень плохо.
 
Замечательный язык - REXX, но он, к сожалению, не столь распостранён, как VB и многим пользователям он просто не знаком.
 
Можно было бы использовать Java, но этот язык требует установленной Java-машины и он немного сложнее в освоении, чем VB.
 
В общем, пока считаю тему открытой.
свернуть/развернуть ветвь Во... [Explorer 03/07/2002 13:05] # написать ответ
 
и прикручивать потом к нему потом все что угодно. И закачку курсов с сайтов ЦБРФ и экспорт в разные программы и синхронизацию и автоапдейт сайтов по фтп и ежедневник-напоминалку-планировщик и базы данных на платежных агентов и экстраполяцию курсов валют и черта в ступе включая инвентаризацию приобретенного имущества с учетом амортизации и печать платежек и налоговых деклараций...
 
Работы - на всю жизнь
свернуть/развернуть ветвь Голосуем за Java! [Artem Fedorov 05/07/2002 11:54] # написать ответ
 
Узнаю здоровый скептицизм! To wink
 
Прочитав о VB в этой заметке я испугался. Ну уж дудки, с этим VB! Я его теперь даже учить боюсь. Про Rexx ничего сказать не могу, т.к. не знаю; единственное, что вспоминается -- это скриптовый язык из OS/2. Для меня очевидным был-бы выбор жабы. Виртуальная машина есть на всех компьютерах, за исключением новых XP, на которые MS отказалась ее ставить. Но пока в сети есть авторы, которые ткают жаба-апплеты туда и сюда, у пользователей всегда будет в наличии работающая жаба-машина. To wink) А как язык, Java -- очень удобный, приятныий, гибкий. Красивый к тому же. И несложный. Мне кажется, выбор очевиден. Ну только не VBA!
 
Dervish: Если не ошибаюсь, Rexx как раз и был скриптовым языком в OS/2.
 
С другой стороны, писать на VBA всё-таки проще, чем на Java. И в освоении он легче.
свернуть/развернуть ветвь Re:Плагины [Vit 08/07/2002 19:15] # написать ответ
 
Можно достаточно просто (по крайней мере, говоря про C++) добавить поддержку VB-Script`а в том числе с предоставлением пользовательским скриптам своих функций/переменных...
Насколько я знаю, поддержка VB Script имеется на любом Windows+IE, так что тут по крайней мере не будет вопросов с размерами дистрибутива...
Что ты об этом думаешь?
 
PS Как насчет предоставить пользователям возможность строить "свои" (plug-inы) графики?
 
Dervish: Про VB-Script: как? Где прочитать? И, главное, M$ обожает выпускать по десятку версий в год, как сделать так, чтоб вызовы были независимы от версии VB-Script?
 
RE: PS. Я не возражаю. Только, в нынешнем состоянии, пока нет скриптов, могу дать возможность только dll-ки вызывать. Будет ли этого достаточно?
свернуть/развернуть ветвь Плагины итд [Vit 09/07/2002 19:43] # написать ответ
 
По поводу VB-Script можно почитать в том же MSDN (см IActiveScriptSite и IActiveScriptParse), кроме того где-то в районе CodeGuru были исходники (если надо, могу выслать то, что у меня было) C++/MFC класса, который этим же и занимался.
Версии...ну честно говоря я не думаю что любые возможные изменения от MS будут сильно радикальные, а остальное уже зависит от тех, кто пишет скрипты.
 
Плагины/графики: ну то есть если в ближайшей версии не будет никакого другого способа (то есть каких-то скриптов), вариант с plugin/dll будет тоже прекрасно...
 
Dervish: Я вот тут подумал что, такой плагин должен:
 
1. Иметь доступ к данным текущей базы Cash. В принципе это не пугает, есть механизм COM, которым можно воспользоваться.
 
2. Иметь возможность рисовать в окне Cash. Как???? Если честно, то ничего путного в голову не приходит, кроме OLE, но это такая технология, которая лично меня просто пугает. Придётся очень сильно попотеть, чтоб дать такую возможность. Может, есть какие-нибудь мысли на этот счёт?
свернуть/развернуть ветвь Плагины итд [Vit 10/07/2002 11:50] # написать ответ
 
Ну раз уж ты решил использовать COM, с доступом к данным особых вопросов не должно быть так как можно придумать всевозможные интерфейсы, возвращающие данные, на твой и пользовательский вкус и реализовать их.
 
Что касается рисования в окне Cash, мне кажется что достаточно будет предоставить пользовательским pluginам HDC/RECT окна (ну то есть событие/ConnectionPoint соответствующее интерфейсу с такими аргументами) в котором должно происходить рисование - достаточно простой вариант IMHO.
 
Dervish: Хорошо, согласен, я несколько преувеличивал сложности рисования. Тогда остаётся последний вопрос: как быть с настройками? Любой плагин, чтоб нарисовать хороший график должен иметь возможность получать доступ к настройкам графика, управлять ими, а, ещё лучше, создавать новые настройки.
свернуть/развернуть ветвь Плагины итд [Vit 10/07/2002 12:55] # написать ответ
 
Кстати, насчет рисования - главное если делать события не забыть что еще желательно каким-то способом дать возможность pluginу по крайней мере выдавать tooltipы (еще одно событие?);
 
Касаемо настроек: я опять-таки сейчас программы перед собой не имею, но уверен что все "стандартные" настройки (т.е. те, которые уже есть) можно передать pluginу (ну и взять у него обратно) через соответствующие (созданные и реализованные) интерфейсы/методы;
 
Стоит рассмотреть imho еще "custom" настройки...а еще лучше (imho) сделать так, чтобы каждый plugin имел возможность (ну то есть чтобы имелись соответствующие интерфейсы/методы, вызываемые программой) создать "preset" из текущих настроек, удалить preset или вернуть список этих "preset"ов, который (список) программа и отобразила бы где-то рядом с графиком. Ну и соответственно рисовать график в соответствии с выбранным preset`ом..и еще метод (plugin`а) для редактирования текущего preset`а диалогом от самого plugin`а (на случай всяких дополнительных настроек). Не много? :-))
 
Dervish: Полно! Well Тема для кандидатской! Well
 
Посмотрел я в MSDN интерфейсы IActiveScript<...>, в принципе, всё реализуемо. Есть только одно "но". Стоимость VBA. Насколько я понял, MS передало права на лицензирование VBA какой-то своей дочерней фирме, которая данные о стоимости лицензирования не публикует. Пишет на своём сайте что-то типа "позвоните - договоримся"!!! Я даже обалдел!
 
Кстати - IActiveScript<xxx> там же в принципе все равно какой скрипт (ну то есть VB Script это один из вариантов, о котором просто известно что он есть на машине и поддерживает необходимые интерфейсы).
То есть в теории можно даже дать пользователю возможность выбрать язык скрипта (то есть ProgID по которому берется CLSID, у которого мы пытаемся "взять" нужные интерфейсы)...
 
Dervish: По моему, мы уже начинаем залезать в программистские дебри. В принципе, я понимаю, что если дать программистам возможность дописывать Cash, это может быть очень большим стимулом для развития программы. Но стоит ли бросать на это дело все доступные силы и возможности? Может быть, стоит уделить внимание вещам, которые сейчас просто необходимы для работы?
 
Кстати, не мешало бы всё-таки изменить формат базы данных, сделать его более гибким, чтоб впоследствии не возникало проблем с переносом плагинов на новые форматы базы.
свернуть/развернуть ветвь Плагины итд [Vit 10/07/2002 13:25] # написать ответ
 
Ладно с дебрями, я имел в виду только что теоретически могут быть и другие скриптовые языки, для поддержки которых ничего не предется менять в коде...но сказал хитро :-)
 
Насчет базы - если ты не собираешься менять логическую модель базы, то если ты предоставляешь доступ к ней через COM (не напрямую же!), на все возможные последующие изменения в физической структуре - понятное дело - можно не обращать внимание. Другое дело - является ли текущая логическая модель полной и достаточной для всевозможных нужд пользователей?
Ну это уже другой вопрос...и тут мне как раз пока все подходит :-)
 
Может стоит сделать ветку форума посвященную именно каким-то возможным изменениям в базе?
 
Dervish: Формат файла будет развиваться. Видимо, я постараюсь сделать его "динамическим", чтобы новые сущности могли добавляться в него без изменения кода программы. То есть, чтобы программа версии 2.0 могла открывать файл версии 4.0 Well Тогда вопрос полноты модели не будет стоять настолько остро.
 
Можете создать новую ветку, это не возбраняется! Well