Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Плагин/индикатор для индикации статуса синхронизации с Yandex-disk  (Прочитано 146575 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

Оффлайн Sly_tom_cat

  • Автор темы
  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11845
  • Xubuntu 18.04 (64bit)
    • Просмотр профиля
Zirrald, ну как бы нормальная настройка среды GO - это общий вопрос на прямую к проекту отношения не имеющий.

Я на сколько понял если окружение go нормально не настроить - там вообще фиг что соберешь....

Про зависимости я там вроде писал, но там уже новые добавились... это надо побравить....

А вот -d в go get - это зачем? Обязательно? Просто я всегда просто go get <пакет> делал - не очень понимаю - чем это хуже, лучше.... я в Go еще новичек...

Пользователь добавил сообщение 12 Январь 2018, 14:31:44:
... а не про получение зависимостей я только в wiki написал.... да в ридми надо тоже добавить. Спасибо что обратили внимание...

Но у меня пока по проекту еще очень много косяков. особенно с документацией и локализацией: Интерфейс только английский, вики - только русская, большая часть кода толком не задокументирована. Я тут только пакет llog немного причесал, чтобы он через dodoc нормальную доку мог сформировать.


Пользователь добавил сообщение 12 Январь 2018, 14:39:07:
Zirrald, а может правильнее будет написать скрипт со всеми командами необходимыми для сборки?
« Последнее редактирование: 12 Январь 2018, 14:39:07 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн Zirrald

  • Любитель
  • *
  • Сообщений: 84
  • Manjaro KDE
    • Просмотр профиля
В вику я что-то не догадался глянуть ) Виноват...
А вот -d в go get - это зачем? Обязательно? Просто я всегда просто go get <пакет> делал - не очень понимаю - чем это хуже, лучше.... я в Go еще новичек...
get с флагом -d просто загружает зависимости. Без флага, как я понял, он еще и пытается выполнить инструкции на установку. Нужно или нет сам не знаю, но с этим флагом команда выполняет ровно то, что нужно.

Кстати, глянул вику, там для каждой зависимости своя команда get. Можно просто запустить go get -d и он автоматом все зависимости просмотрит и скачает.
Цитировать
Zirrald, а может правильнее будет написать скрипт со всеми командами необходимыми для сборки?
Хорошая идея :coolsmiley:
Опыт позволяет нам ошибаться гораздо увереннее.

Оффлайн Sly_tom_cat

  • Автор темы
  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11845
  • Xubuntu 18.04 (64bit)
    • Просмотр профиля
Спасибо за идеи, буду пробовать. Я вообще пока только нос засунул в Go а глаза уже разбежались... тут и формирование документации из исходников, и профайлинг по производительности и по памяти встроенный, и автоматическое форматирование и заполнение раздела импорта, и мощнейший пакет тестирования включая тестовый веб сервер, который одной строкой кода создается (ну это если хендлер не считать). Покрытие тестами вообще шикарно покаказывается.

Тут на даче был так с интернето трудности были - думаю - надо бы по библиотекам локально доку поиметь... а оказалось надо надо было просто
godoc http localhost:6060&
xdg-open http://localhost:6060
выполнить - и у тебя есть локальная дока на все включая даже твои собственные пакеты. :o

От каналов и горутин я до сих пор в восторге как маленький ребенок от большой конфеты.  :D :2funny:
« Последнее редактирование: 12 Январь 2018, 15:31:10 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн Zirrald

  • Любитель
  • *
  • Сообщений: 84
  • Manjaro KDE
    • Просмотр профиля
Нашел небольшую проблему с подменю списка последних синхронизированных файлов.

 :( не пашет парсер?
После java туго воспринимаю go  ;D
Опыт позволяет нам ошибаться гораздо увереннее.

Оффлайн Sly_tom_cat

  • Автор темы
  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11845
  • Xubuntu 18.04 (64bit)
    • Просмотр профиля
Это похоже на то, что у jzyken.... что у вас за дистрибутив?

Там какаято хрень полная в кедах с GTKшным подменю.... Я надеялся что go версия будет лучше.... но чуда кажется не произошло... в go там все супер-аккуратно с меню и подменю сделано.... но видать это какие-то классовые противоречия кед с gtk...

По логам у вас все нормально - 10 файлов в списке последних синхронизированных появляется при переходе из статуса none в paused (ydisk.go:139:  D: Change:  none > paused T false L 10 E false - выводится при обнаружении изменения в состоянии демона). Т.е. все распарсилось отлично. А вот в меню упорно ничего не добавляется, хотя ошибок никаких не возникает (yd.go:229: D: Change handled - выдается после обработки обновления меню)... Могу добавить чуть больше дебаггинга. может что-то и накопаем....


Пользователь добавил сообщение 12 Январь 2018, 19:43:36:
В мастер закоммитил добавленный вывод в дебаг числа элементов добавленных в меню.
Попробуйте обновленный вариант. Листинг отладки можно и текстом.
« Последнее редактирование: 12 Январь 2018, 19:43:36 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн Zirrald

  • Любитель
  • *
  • Сообщений: 84
  • Manjaro KDE
    • Просмотр профиля
Судя по выхлопу, похоже что все значения в массиве. Видимо надо копать в сторону systray.

(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 12 Январь 2018, 20:37:42 от Zirrald »
Опыт позволяет нам ошибаться гораздо увереннее.

Оффлайн Sly_tom_cat

  • Автор темы
  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11845
  • Xubuntu 18.04 (64bit)
    • Просмотр профиля
Подменю в systray допиливал я сам, но там все под копирку с того, что сделано для оригинального меню. Практически все те же вызовы GTK за исключением одного единственного, который добавляет подменю.

Причем все это работает у меня на XFCE как швейцарские часы автомат Калашникова (потому как очень быстро строчит, а не медленно и печально тикает).

Сделано там (в С-ишной части) все очень аккуратно, все действия по обновлению интерфейса делаются основным потоком (это требование GTK - там строго одно-поточная обработка всего GUI), тот поток, что запрашивает действие, просто вешает в очередь событий эвет (с call-back вызовом), который активируется при переходе основного потока в idle. И уже коллбек (исполняясь в явно свободном основном потоке) делает все изменения.

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

Я уже подумываю попробовать QT... но упорный гуглеж в течении нескольких часов, дал печальную картину:

- большинство go-проектов используют тот самый systray, который я допиливал... т.е. GTK
- пара альтернативных решений - не доступна под linux (практически все заброшено 2-3 года тому назад)
- две библиотеки обеспечивающие интерфейс от go к QT не протаскивают нужный QSystemTrayIcon.
- примеры на плюсах с использованием QSystemTrayIcon - не слишком сложные, уж не сложнее gtk-шного решения.

Т.о. путь пока видится один - пилить интерфейс к QSystemTrayIcon самому либо отдельно, либо в форке одной из библиотек, второе может быть заметно проще т.к. прокидывать там нужно будет только один-два вызов (я надеюсь).... но и вписать код в чужой проект - сложнее (надо разобраться как там все сделано). Да и с с/с++ у меня очень поверхностное знакомство. Я на сях чуть-чуть писал ... лет 20 тому назад... Тут вот systray допиливал - очень изрядно мозгами скрипел  :idiot2: что-бы вспомнить/разобраться как там что и что для чего в том С...


Пользователь добавил сообщение 13 Январь 2018, 12:01:42:




УРА!!! Заработал наконец Launchpad. yande-disk-indicator версии 1.9.15 (с правками от периодического краша на старте) доступен для Trusty, Xenial, Zesty, Artful и Bionic. Обновляйтесь на здоровье. :)
« Последнее редактирование: 13 Январь 2018, 12:41:39 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн Zirrald

  • Любитель
  • *
  • Сообщений: 84
  • Manjaro KDE
    • Просмотр профиля
Sly_tom_cat, наткнулся тут на одну библиотеку, может ты уже и видел ее, но она доступна под linux и вроде есть нужный QSystemTrayIcon (погляди goqt/ui/qt_gui.go, может я и не прав).
Опыт позволяет нам ошибаться гораздо увереннее.

Оффлайн Sly_tom_cat

  • Автор темы
  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11845
  • Xubuntu 18.04 (64bit)
    • Просмотр профиля
Нет, эту не находил... да QSystemTrayIcon есть. Меню тоже есть, так что можно будет попробовать еще на QT налабать индикатор. Надо будет попробовать ...

Пользователь добавил сообщение 16 Январь 2018, 14:15:16:
Пока что-то не очень... так и не смог запустить тестовые задачки.... :-\
Совсем все по инструкции не получается - часть команд не исполняются как они написаны... но не мытьем так катаньем вроде все проделал, но ругается на недоступность шаренного объекта при загрузке либы (уже есть такое ишью на гитхабе https://github.com/visualfc/goqt/issues/50 - но без ответа автора с 10 ноября 2017).

Да и там как-то очень слабо что-то движется с этой либой. С марта прошлого года ни одного обновления и только куча открытых ишью без ответов... :(

Пользователь добавил сообщение 16 Январь 2018, 16:08:11:
Ура, разобрался: либы после сборки оказывается ручками надо было скопировать в /usr/lib а не в /usr/bin (я наивно полагал, что если они собрались в bin, то их в /usr/bin и надо копировать, а не куда то еще).

Примеры вроде бы заработали, можно пробовать индикатор выпиливать. Тут под рукой оказался на работе талмуд в 5 см толщиной по Qt4.5 - там пример индикатора есть на C++ (на 3-х страницах), так что шаблон кода есть.
« Последнее редактирование: 16 Январь 2018, 16:08:11 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн Zirrald

  • Любитель
  • *
  • Сообщений: 84
  • Manjaro KDE
    • Просмотр профиля
Sly_tom_cat, чтож... ждемс опытные образцы для тестов ;)
Опыт позволяет нам ошибаться гораздо увереннее.

Оффлайн Sly_tom_cat

  • Автор темы
  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11845
  • Xubuntu 18.04 (64bit)
    • Просмотр профиля
Zirrald, у вас 64 разряда или 32?

Для 64 разрядов собрал примитивный индикатор - иконка, меню с двумя пунктами: подменю с одним элементом и выход.

Выложил тут https://yadi.sk/d/7P938Qak3RWX5m

В принципе в кедах должно работать без дополнительных либ - все Qt-шное должно быть "изкаропки".

Надеюсь Qt-шное подменю у вас показывается таки будет.

В крыске то меню конечно выглядит страшновато (прямо 98-ю винду вспомнил):
 


Пользователь добавил сообщение 16 Январь 2018, 19:41:56:
...а не, возможно еще вот https://yadi.sk/d/M_09kHvH3RWZAU эти либы надо будет в /usr/local/lib затолкать....

Но попробуйте сначала без них.
« Последнее редактирование: 16 Январь 2018, 19:41:57 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн Zirrald

  • Любитель
  • *
  • Сообщений: 84
  • Manjaro KDE
    • Просмотр профиля
Sly_tom_cat, у меня 64 бит.

Что то не допру :-\ Либы запихнул, а он не видит :(


Пользователь добавил сообщение 16 Январь 2018, 21:02:50:
Так с либами разобрался.. все работает ))
« Последнее редактирование: 16 Январь 2018, 21:02:51 от Zirrald »
Опыт позволяет нам ошибаться гораздо увереннее.

Оффлайн Sly_tom_cat

  • Автор темы
  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11845
  • Xubuntu 18.04 (64bit)
    • Просмотр профиля
Ну и отлично.

А что с либами было не так? Там какой-то странный набор: либа, 3 ссылки и один бинарик.... я не уверен что куда надо разложить чтоб взлетело... я пока разбирался куда только не скопировал этот набор... надо будет вычистить ненужное... но лучше что бы вы подсказали как правильно в кедах надо разложить. Я в скриптец установочный это запишу.
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн Zirrald

  • Любитель
  • *
  • Сообщений: 84
  • Manjaro KDE
    • Просмотр профиля
 Либы не цеплялись из /usr/local/lib, пока не заставил ldconfig цеплять их. Не знаю насколько это специфично для разных дистров, но у себя я сделал файлик user-lib.conf в директории /etc/ld.so.conf.d/ с одной строкой /usr/local/lib. В случае отсутствия такой папки, насколько знаю, можно эту директорию (или любую другую где нужно библы искать) запихнуть в файл /etc/ld.so.conf. После чего обновить кэш запустив ldconfig (с правами администратора).

Тоже как решение:
Код: Bash
  1. LD_LIBRARY_PATH=/usr/local/lib
  2. export LD_LIBRARY_PATH
Опыт позволяет нам ошибаться гораздо увереннее.

Оффлайн Sly_tom_cat

  • Автор темы
  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11845
  • Xubuntu 18.04 (64bit)
    • Просмотр профиля
У меня прокатывает если в /usr/lib скопировать. Но не уверен что это правильно. Вроде бы /usr/local/lib - для всякого левака.
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

 

Страница сгенерирована за 0.071 секунд. Запросов: 24.