Программа для технического анализа рынка Forex (Есть среди линуксойдов трейдеры?)

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Аватара пользователя
devilr
Сообщения: 3696
ОС: Mandriva => Gentoo (~amd64)

Re: Программа для технического анализа рынка Forex

Сообщение devilr »

Хм. Вон вы как сделали! Кнопки управления в самом же окне. Не очень интуитивно (привычно), но может так и лучше.
Имхо, лучше было бы все-таки элементы управления вынести за пределы окон и сделать понятие "активное окно"
Если предполагать, что основных пар 11 + 4 дополнительные, то на небольшом экране (например 1024*768) элементы управления сьедят много экранного пространства. Понятно, что есть вкладки. Но лучше бы все видеть сразу - часто это надо бывает.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Программа для технического анализа рынка Forex

Сообщение sergeyvp »

devilr писал(а):
12.05.2008 01:09
Хм. Вон вы как сделали! Кнопки управления в самом же окне. Не очень интуитивно (привычно), но может так и лучше.
Имхо, лучше было бы все-таки элементы управления вынести за пределы окон и сделать понятие "активное окно"
Если предполагать, что основных пар 11 + 4 дополнительные, то на небольшом экране (например 1024*768) элементы управления сьедят много экранного пространства. Понятно, что есть вкладки. Но лучше бы все видеть сразу - часто это надо бывает.

Панели графика можно спрятать двойным кликом.
Для отображения большого количества графиков нужно купить большой монитор, а лучше два и большую ЖК панель. :)

Кстати ACER выпустила мониторы 24" с разрешением 1920x1200 всего за 400$. Как только появятся в продаже куплю себе такой, а может быть два. :)
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3696
ОС: Mandriva => Gentoo (~amd64)

Re: Программа для технического анализа рынка Forex

Сообщение devilr »

Ну, когда появятся такие мониторы, тогда и видно будет. Пока живу на старом 17' "стеклянном" мониторе.
Придется делать много вкладок, чтобы обьять необьятное. :)
Было бы хорошо, кстати, если бы можно было бы любое окно распахнуть на весь экран и свернуть обратно. Увеличить временно, так сказать. Если каждое окно было бы окном - было бы проще. Перетащить с места на место и т.д. Юзабельность была бы выше.
Тот же MetaTrader... впрочем, ваше дело, как разработчика, как окна размещать. :rolleyes:
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Программа для технического анализа рынка Forex

Сообщение sergeyvp »

devilr писал(а):
12.05.2008 09:40
Было бы хорошо, кстати, если бы можно было бы любое окно распахнуть на весь экран и свернуть обратно. Увеличить временно, так сказать. Если каждое окно было бы окном - было бы проще.

Скоро всё так и будет. :)
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3696
ОС: Mandriva => Gentoo (~amd64)

Re: Программа для технического анализа рынка Forex

Сообщение devilr »

Мда. Надо что-то делать с модальными окнами.
"Обновляю" базу данных - маленькое окошко (если "промахнуться") уходит на задний план, где и остается. И не видно, что же, собственно, делает. Ибо не обновляется. Говоря словами от M$ "событие PAINT не обрабатывается"
Подожду еще, вдруг обновится... хотя обьема обновлений не видно.

P.S. Либо обновление очень редкое... где-то раз в 5 мин. Возможно, это только у меня.
P.P.S. А косяк замечательный - если сбросить закачку путем угадывания кнопки "Отмена" (практически всплепую), то программу можно будет дальше запустить нормально. Но фоном будет висеть download_чего_то_там с wget в придачу. Отжирая трафик. Нехорошо.
При закрытии основной программы (нормально, через "Выход") заметил, что стало как-то все медленно. Убил процесс - все ОК
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Программа для технического анализа рынка Forex

Сообщение sergeyvp »

devilr писал(а):
12.05.2008 21:59
Мда. Надо что-то делать с модальными окнами.
"Обновляю" базу данных - маленькое окошко (если "промахнуться") уходит на задний план, где и остается. И не видно, что же, собственно, делает. Ибо не обновляется. Говоря словами от M$ "событие PAINT не обрабатывается"
Подожду еще, вдруг обновится... хотя обьема обновлений не видно.

P.S. Либо обновление очень редкое... где-то раз в 5 мин. Возможно, это только у меня.

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

devilr писал(а):
12.05.2008 21:59
P.P.S. А косяк замечательный - если сбросить закачку путем угадывания кнопки "Отмена" (практически всплепую), то программу можно будет дальше запустить нормально. Но фоном будет висеть download_чего_то_там с wget в придачу. Отжирая трафик. Нехорошо.
При закрытии основной программы (нормально, через "Выход") заметил, что стало как-то все медленно. Убил процесс - все ОК

Это я что-то не учёл. :)
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3696
ОС: Mandriva => Gentoo (~amd64)

Re: Программа для технического анализа рынка Forex

Сообщение devilr »

sergeyvp писал(а):
12.05.2008 22:29
Медленное обновление не связано с моим кодом, так как в качестве загрузчика используется wget. Скорей всего дело в пропускной способности сети или сервера.

Я, собственно, не про скорость закачки говорю. А о том, что не видно, сколько скачал и сколько еще качать. Ибо бегунок не обновляется нормально. В свое время, еще в Windows, наступал на эти грабли - решал дополнительным потоком. Иначе получалось именно так, как у вас сейчас.
При нормальном (не аварийном) завершении программы, имхо, должно закрываться все, что эта программа запустила. И wget тут исключением быть никак не может. Я же не документ с помощью вашей программы в ОО открываю.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Программа для технического анализа рынка Forex

Сообщение sergeyvp »

Проблема заключается в том что я использовал многопоточность и gtk+ нужно было инициализировать дополнительными вызовами.
http://library.gnome.org/devel/gtk-faq/stable/x482.html
В ближайшее время постараюсь разобраться с этой проблемой.
Спасибо сказали:
Аватара пользователя
TechnoMag
Сообщения: 298
ОС: Debian 8.0 Jessie

Re: Программа для технического анализа рынка Forex

Сообщение TechnoMag »

to sergeyvp вам как человеку знакомому с Forex вопрос: Meta Trader 4 нормально работает в среде wine? Может есть аналог для Linux?
- Домашний Linux -
Памятки для пользователя
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Программа для технического анализа рынка Forex

Сообщение sergeyvp »

TechnoMag писал(а):
16.05.2008 22:22
to sergeyvp вам как человеку знакомому с Forex вопрос: Meta Trader 4 нормально работает в среде wine? Может есть аналог для Linux?

Аналогов по-моему нет. А в wine работает вроде хорошо, я его толком не тестировал, просто поставил посмотреть, но люди говорят что никаких проблем с ним не возникает.
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Программа для технического анализа рынка Forex

Сообщение sergeyvp »

Очередной выпуск проекта. Основная концепция интерфейса сформирована, в дальнейшем будут вноситься незначительные косметические изменения.
В KDE всё должно работать так же как в GNOME, правда на полномасштабное тестирование не хватает время. :)



http://linfoline.homedns.org/TFX/download/...4052008.tar.bz2
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3696
ОС: Mandriva => Gentoo (~amd64)

Re: Программа для технического анализа рынка Forex

Сообщение devilr »

"Дочернее окно графика" - для чего оно? Оно явно модальное и опять не хватает скорости для отрисовки того, что под ним - белые прямоугольники.
"Загрузка данных" опять не отрисовывается. Т.е. белый квадрат, если провести над ним чем нибудь тогда, когда оно "занято" загрузкой данных. Если свернуть основное окно, тогда можно нажать "отмена".
Завтра может быть еще чего найду.

P.S. Мож мне в M$ пойти на тестера? Хотя нет, выгонят наверное... :rolleyes:
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Программа для технического анализа рынка Forex

Сообщение sergeyvp »

devilr писал(а):
24.05.2008 01:02
"Дочернее окно графика" - для чего оно? Оно явно модальное и опять не хватает скорости для отрисовки того, что под ним - белые прямоугольники.
"Загрузка данных" опять не отрисовывается. Т.е. белый квадрат, если провести над ним чем нибудь тогда, когда оно "занято" загрузкой данных. Если свернуть основное окно, тогда можно нажать "отмена".
Завтра может быть еще чего найду.

P.S. Мож мне в M$ пойти на тестера? Хотя нет, выгонят наверное... :rolleyes:

"Дочернее окно графика" - для быстрого увеличения графика, когда пространство разделено на большое количество фреймов. Так удобнее вносить изменения, всё что делается в дочернем окне, отражается и на родительском.

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

P/S За тестирование спасибо!
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3696
ОС: Mandriva => Gentoo (~amd64)

Re: Программа для технического анализа рынка Forex

Сообщение devilr »

Кстати, еще было бы неплохо добавить всплывающие подсказки к панели инструментов. Ибо пиктограммы не очень информативны. Кстати, часто с панели инструментов просто так пропадают кнопки. Иногда основное окно закрывается вообще без предупреждения и без сообщения об ошибке.
Кстати, "дополнительные окна" можно и не заметить. Визуально выглядит так, как будто окно просто распахнулось на весь экран. Пока шт. 5 этих окон не открыл - не заметил, что они в "панели задач" появляются. Это не глюк... но все же. :)
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Программа для технического анализа рынка Forex

Сообщение sergeyvp »

devilr писал(а):
24.05.2008 12:32
Кстати, еще было бы неплохо добавить всплывающие подсказки к панели инструментов. Ибо пиктограммы не очень информативны.

Подсказки и горячие клавиши я прикручу когда закончу отлаживать структуру программы и сформируется более-менее общая картина функций. То есть сначала нужно составить карту функций, потом прикрутить горячие клавиши и подсказки (это не сложно будет сделать).
Кстати, часто с панели инструментов просто так пропадают кнопки. Иногда основное окно закрывается вообще без предупреждения и без сообщения об ошибке.


Видимо опять что-то с KDE связано, такие падения можно с помощью gdb отлавливать.
То есть в консоли запустить программу с помощью
gdb ./tfx
появится дополнительное консольное приглашение в котором нужно дать команду
run
Программа запустится как обычно, но при критической ошибке не упадёт а зависнет, тогда в той же консоли нужно дать команду
bt
gdb даст вывод последовательность функций которые привели к краху.
Для выхода из gdb нужно напечатать там же
quit

P/S Это если вам совсем скучно будет и нечем будет заняться :)
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3696
ОС: Mandriva => Gentoo (~amd64)

Re: Программа для технического анализа рынка Forex

Сообщение devilr »

Код:

(gdb) run Starting program: /home/user/Work/My_Programming/Forex/tfx24052008/tfx (tfx:2730): GLib-GObject-WARNING **: invalid cast from `GtkFrame' to `GtkBox' (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed (tfx:2730): GLib-GObject-WARNING **: invalid cast from `GtkAlignment' to `GtkBox' (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed (tfx:2730): GLib-GObject-WARNING **: invalid cast from `GtkEventBox' to `GtkBox' (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed (tfx:2730): GLib-GObject-WARNING **: invalid cast from `GtkAlignment' to `GtkBox' (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed (tfx:2730): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: IA__g_object_set_valist: object class `GtkVSeparator' has no property named `page-size' (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): Gtk-CRITICAL **: gtk_widget_get_parent: assertion `GTK_IS_WIDGET (widget)' failed (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed (tfx:2730): Gtk-CRITICAL **: gtk_widget_get_parent: assertion `GTK_IS_WIDGET (widget)' failed (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed (tfx:2730): Gtk-CRITICAL **: gtk_widget_get_parent: assertion `GTK_IS_WIDGET (widget)' failed (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed ** (tfx:2730): CRITICAL **: tfx_rebuild_toolbar: assertion `GTK_IS_WIDGET( widget)' failed (tfx:2730): GLib-GObject-WARNING **: invalid cast from `GtkAlignment' to `GtkBox' (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed (tfx:2730): GLib-GObject-WARNING **: invalid cast from `GtkAlignment' to `GtkBox' (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed ** (tfx:2730): CRITICAL **: tfx_rebuild_toolbar: assertion `GTK_IS_WIDGET( widget)' failed (tfx:2730): Gtk-CRITICAL **: gtk_widget_get_parent: assertion `GTK_IS_WIDGET (widget)' failed (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed (tfx:2730): Gtk-CRITICAL **: gtk_widget_get_parent: assertion `GTK_IS_WIDGET (widget)' failed (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed (tfx:2730): Gtk-CRITICAL **: gtk_widget_get_parent: assertion `GTK_IS_WIDGET (widget)' failed (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed (tfx:2730): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject' (tfx:2730): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed ** (tfx:2730): CRITICAL **: tfx_rebuild_toolbar: assertion `GTK_IS_WIDGET( widget)' failed (tfx:2730): Gtk-CRITICAL **: gtk_widget_get_parent: assertion `GTK_IS_WIDGET (widget)' failed (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed (tfx:2730): Gtk-CRITICAL **: gtk_widget_get_parent: assertion `GTK_IS_WIDGET (widget)' failed (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed (tfx:2730): Gtk-CRITICAL **: gtk_widget_get_parent: assertion `GTK_IS_WIDGET (widget)' failed (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed (tfx:2730): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_BOX (box)' failed Program exited with code 01. (gdb)

От нечего делать :rolleyes:
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Программа для технического анализа рынка Forex

Сообщение sergeyvp »

devilr писал(а):
24.05.2008 16:26
От нечего делать :rolleyes:

Спасибо. У меня эта ошибка не проявлялась. Будем исправлять :)
А при какой операции это происходит, окно одно открыто или несколько?
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3696
ОС: Mandriva => Gentoo (~amd64)

Re: Программа для технического анализа рынка Forex

Сообщение devilr »

Ну, в общем то, стандартная операция для трейдера.
Открыли окно, разбили его на двое. Потом еще несколько раз. Распределили валютные пары и начали увеличивать по одному окну - настраивая каждое. Где-то могли ошибиться - перезакрыли, переоткрыли. В результате в консоли море таких вот ошибок.
Собственно, это не особо мешает. Но, если делать много раз - можно вообще вылететь с программы.
Временами, пропадают и появляются кнопки панели инструментов. Из-за того, что названий на них нет - могу сказать, что чаще всего это происходить с первой слева кнопкой.
Если разбить (по горизонтали) исходное окно на 11 окон (к примеру) по числу пар, а потом начать закрывать каждое окно - основное окно программы останется огромным. Но это так - особенность, наверное. :rolleyes:
Отрисовка окон стала медленнее - видны белые прямоугольники.
Завершения обновлений дождаться практически невозможно - хотя бы из-за того, что не вижу, сколько обновилось и сколько еще осталось. Правда скорость всего 64кбит - особенность "анлима" провинции.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Программа для технического анализа рынка Forex

Сообщение sergeyvp »

devilr писал(а):
24.05.2008 18:39
Отрисовка окон стала медленнее - видны белые прямоугольники.
Завершения обновлений дождаться практически невозможно - хотя бы из-за того, что не вижу, сколько обновилось и сколько еще осталось. Правда скорость всего 64кбит - особенность "анлима" провинции.

С кнопками панели вроде разобрался. Остальные предупреждения исправлю как только смогу воспроизвести у себя в системе :)
Что случилось со скоростью отрисовки пока понять не могу, я вроде механизм не менял.
Модуль загрузки данных скорей всего будет полностью переписан, возможно даже к следующему выпуску программы :)

Спасибо за тестирование!

P/S Для обновления данных можно просто запустить ./quotes/download_quotes.sh, скрипт загружает все данные за текущий год.
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3696
ОС: Mandriva => Gentoo (~amd64)

Re: Программа для технического анализа рынка Forex

Сообщение devilr »

Насчет прямоугольников - они просто стали более заметны, если использовать "дочернее окно графика".
Если, вместо него двигать окно about - прямоугольников почти не видно.
Возможно, что есть более оптимальный вариант отрисовывать рабочие окна :rolleyes:
Все таки, имхо, вы выбрали не тот вариант расположения окон. Я конечно понимаю, что хозяин - барин. При вашем раскладе нельзя одно окно сделать чуток больше, чем соседнее. Иногда нужно бывает. Я, хоть и не играл за нал, но около 3 лет провел за MetaTraider. Правда, выяснилось, что работать на суммы ниже 10-15 тыс. $ не имеет смысла - ибо слетаешь по марже. Просто брал реальные графики и смотрел - на виртуале все замечательно, а на реальных графиках есть провалы. И в этот момент я бы наверняка слетал, если бы работал за наличные. Но это offtop.
Идея такой программы очень хорошая, ибо никогда не знаешь, что замыслил MetaTrader.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Программа для технического анализа рынка Forex

Сообщение sergeyvp »

devilr писал(а):
24.05.2008 20:35
Насчет прямоугольников - они просто стали более заметны, если использовать "дочернее окно графика".
Если, вместо него двигать окно about - прямоугольников почти не видно.
Возможно, что есть более оптимальный вариант отрисовывать рабочие окна :rolleyes:
Все таки, имхо, вы выбрали не тот вариант расположения окон. Я конечно понимаю, что хозяин - барин. При вашем раскладе нельзя одно окно сделать чуток больше, чем соседнее.

Вариант более оптимального обновления графиков конечно есть, вот только я его ещё не придумал.
Как придумаю, так сразу реализую. :)
На счёт изменения размеров графиков вы просто не привыкли. Тем более теперь есть возможность создавать отдельные окна, более универсально интерфейса я пока придумать не смог. Рабочий стол по сути может выполнять то что делает MDI.
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3696
ОС: Mandriva => Gentoo (~amd64)

Re: Программа для технического анализа рынка Forex

Сообщение devilr »

При нажатии кнопки (видимо) "редактировать название рабочего пространства" TextEdit-ов будет столько, сколько раз нажал кнопку. При дребезге левой кнопки мыши получается вообще великолепно :rolleyes:
Окно "маркер" тоже не модальное. Стоит промахнуться и оно за основным окном программы. Очень хорошо создает видимость "зависшей" программы. С диалоговыми окнами надо что-то делать.
Если существует несколько "рабочих пространств" в каждом из котором несколько окон (что, видимо, и задумывалось для удобства) велика вероятность закрыть всю программу просто щелчком, выбрав одно из "рабочих пространств". Гарантированно повторить не удается, но - закрывается программа.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Программа для технического анализа рынка Forex

Сообщение sergeyvp »

devilr писал(а):
25.05.2008 12:04
При нажатии кнопки (видимо) "редактировать название рабочего пространства" TextEdit-ов будет столько, сколько раз нажал кнопку. При дребезге левой кнопки мыши получается вообще великолепно :rolleyes:

Действительно забавно получилось, я даже не додумался о повторном нажатии. Сейчас всё уже исправил, теперь в момент появления поля редактирования все кнопки на вкладке будут исчезать, от греха подальше :)
Окно "маркер" тоже не модальное. Стоит промахнуться и оно за основным окном программы. Очень хорошо создает видимость "зависшей" программы. С диалоговыми окнами надо что-то делать.

Делать что-то нужно, но вот что не пойму. Сейчас вроде исправил.
Если существует несколько "рабочих пространств" в каждом из котором несколько окон (что, видимо, и задумывалось для удобства) велика вероятность закрыть всю программу просто щелчком, выбрав одно из "рабочих пространств". Гарантированно повторить не удается, но - закрывается программа.

Это скорей всего программа просто падает, нужно этот баг через gdb отлавливать. Так очень сложно понять где собака зарыта. :)
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3696
ОС: Mandriva => Gentoo (~amd64)

Re: Программа для технического анализа рынка Forex

Сообщение devilr »

Так, закрытие программы еще поймать надо. Говорю же, что это эпизодически.
А еще, иногда, если стереть весь заголовок "рабочего пространства", то оно становится серым, т.е. нерабочим. Просто висит и все. Переключиться на него не получается.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Программа для технического анализа рынка Forex

Сообщение sergeyvp »

devilr писал(а):
25.05.2008 15:13
Так, закрытие программы еще поймать надо. Говорю же, что это эпизодически.

Значит этот баг будет иметь кодовое название "Неуловимый Джо" :)
А еще, иногда, если стереть весь заголовок "рабочего пространства", то оно становится серым, т.е. нерабочим. Просто висит и все. Переключиться на него не получается.

Выложил исправленный вариант, всё должно быть нормально

http://linfoline.homedns.org/TFX/download/...5052008.tar.bz2
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3696
ОС: Mandriva => Gentoo (~amd64)

Re: Программа для технического анализа рынка Forex

Сообщение devilr »

Скорость отрисовки выше не стала. Прямоугольники все так-же видны.
С диалоговыми окнами проблема осталась.
Проблема внезапного пропадания программы осталась.
Что касается ошибок... ну, например, как нибудь так :rolleyes:

Код: Выделить всё

Program received signal SIGSEGV, Segmentation fault.
0x080500a4 in tfx_rebuild_mainbar (widget=0x8bcdf30) at tfx_workspace.c:43
43        if( !GTK_IS_WIDGET( widget) ||

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

P.S. Был у меня один товарищ. Писал с морем глюков. На нем и натренировался их вылавливать. Не в обиду.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Программа для технического анализа рынка Forex

Сообщение sergeyvp »

devilr писал(а):
25.05.2008 17:52
P.S. Был у меня один товарищ. Писал с морем глюков. На нем и натренировался их вылавливать. Не в обиду.

Так наоборот спасибо большое, я как узнаю про ошибки если мне о них никто говорить не будет.
Я пока только редактирование названия вкладки изменил, поэтому всё остальное как было так и осталось :)
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3696
ОС: Mandriva => Gentoo (~amd64)

Re: Программа для технического анализа рынка Forex

Сообщение devilr »

Вы, перед выкладыванием, попробуйте сами найти ошибки. Помогает просто беспорядочное щелкание по кнопкам, вкладкам и кручение колесика мыши :rolleyes:
Мне вот интересно, а будет ли живая подкачка данных и отображение оных? Я к тому, что на 5-минутках наверняка будет полный беспорядок.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Программа для технического анализа рынка Forex

Сообщение sergeyvp »

devilr писал(а):
25.05.2008 18:34
Вы, перед выкладыванием, попробуйте сами найти ошибки. Помогает просто беспорядочное щелкание по кнопкам, вкладкам и кручение колесика мыши :rolleyes:

Я так и делаю :)
Ошибки меня просто боятся и прячутся пока я проект не выложу в сеть, а как выложу так сразу наружу вылазят покрасоваться :)
Диалоги поправил. А отрисовка в КДЕ действительно паршивая. У меня в GNOME у metacity включен композитный режим, поэтому никаких квадратов нет.
Буду думать что с отрисовкой делать, видимо я что-то упустил из виду.
Мне вот интересно, а будет ли живая подкачка данных и отображение оных? Я к тому, что на 5-минутках наверняка будет полный беспорядок.

Подкачка, в смысле он-лайн режим, конечно будет. А почему должен быть беспорядок именно на пятиминутках? В каком смысле беспорядок?
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3696
ОС: Mandriva => Gentoo (~amd64)

Re: Программа для технического анализа рынка Forex

Сообщение devilr »

Ну... про беспорядок я только предположил :rolleyes:
Я просто пока не смотрел исходники. Так, скомпилирую - запущу. Пользователь отдельный, для "побаловаться"
Просто может быть много вкладок с множеством окон с одной и той же валютной парой. И, насколько все это будет корректно отображаться на 5-минутках - еще вопрос. Я не сказал "будет коряво", но я не исключаю эту возможность.
Ну, паршивая или нет отрисовка в KDE - судить не буду. Но мне он нравится. Собственно, поудалял бы вообще все упоминания о гноме, если бы не некоторые программы, которые пользуются библиотеками гнома. Хотя на KDE4 пока переходить не собираюсь, хотя и экстремал. Уж больно KDE4 тормозит на моей машине.

А то, что программист не видит собственных ошибок - охотно верю. Я своих тоже не вижу. :)
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали: