Плазмоид + qt GUI для netctl

ghost
netctl-auto list ничего не показывает. Но у меня нет wifi адаптеров. Хотя один профиль есть eth_dhcp... (я так понимаю netctl-auto - это для wifi сетей автопереключатель профилей, по этому меня не смущает пустой list).
да, он только для вафли. Ну тогда, про$#ал проверку на пустой список где то, судя по всему, извиняюсь. Исправлю в ближайшее время.

Группа network нужна вроде только для запуска (на старте приложения или виджета) - если вы не стартуете хелпер средствами systemd на загрузке.
PGP 0x31361F01
arcanisrepo
а вообще интересно.

1. Крашиться не должно. Но я добавил еще тройку проверок на всякий.
2. В вашем случае он должен не дать работать с netctl-auto с дефолтными настройками - т.к. библиотека не сможет найти нужный интерфейс и должна выдать false еще на этапе запроса isNetctlAutoRunning(). Другое дело - если вы сами специально его зададите %)
PGP 0x31361F01
arcanisrepo
проверил:
подключил usb-wifi адаптер, не кашится.
создал профиль wifi - не крашится.
отключил адаптер - не крашится.
удалил профиль - не крашится.

Итого: теперь я немогу воспроизвести баг...
в ближайшее время планируется релиз 1.4.0 с адаптацией под kf5 стаф. Функционал перенесен практически полностью. На первых порах возможны баги, например, у меня пока не получилось сделать корректный ресайз на обновлении интерфейса (но корректно обрабатывается после рестарта плазмы).

Также старые настройки более несовместимы с новыми:
  1. настройки dataengine переименованы в plasma-dataengine-netctl.conf для отсутствия путаницы (в kf5 настройки хранятся в .config и /etc/xdg/)
  2. все настройки переписаны с shell-like синтаксиса на Ini формат, что позволило убрать свой велосипед для работы с настройками

После релиза 1.4.0 поддержка плазмоида для KDE4 будет выполняться по остаточному принципу (т.к. используется различная кодовая база из за несовместимость API/ABI).
PGP 0x31361F01
arcanisrepo
arcanis
в ближайшее время планируется релиз 1.4.0 с адаптацией под kf5 стаф

в ауре, qt4 и qt5 компоненты теперь разделены
PGP 0x31361F01
arcanisrepo
Евгений, благодарю за приложение.
Очень выручило в определенный момент, но сейчас, опять использую в основном скрипты, причина - плазмойд перестал работать.
Запускается, но профиль не включает (внизу стоть статус Updated и коротко меняется на Error). При попытке подключения к wifi, которого еще нет в профиле крэшится. Если просто оставить окно c выбором профилей и перейти на другое приложение через пару секунд опять крэшится.
Можно было заставить работать с танцами и бубном, аля сделать профиль по дефолту и перезагрузиться, но тоже через раз. Про более сложные подключения, типа принять канал с интернетом по wifi и раздать по статическому ethеrnet - вообще и речи не вставало. Хотя может быть это из-за того, что я еще под 4-ми KDE. И еще один моментик - после поднятия канала через Ваше приложение plasma - выходит в топ 3 пожирателя ресурсов (коньки говорят), раньше вообще ее в списне не видел. При подключении скриптами - gui показывает IP и состояние подключения, но систему это никак не напрягает. Возможно Вы сможете этот момент как-то оптимизировать - netctl очень мощный инструмент, а GUI к нему очень не хватает, руками писать профили процесс малоприятный. Хотел сначала послать Bugreport, но он тоже не работает, вот пишу сюда.
И еще раз благодарю за плазмоид, здорово, что есть люди, которые не бояться такие вещи запилить, еще и на лаунчер виндовский покушаются.
Всего Вам доброго и успехов.
хм, мне надо больше информации, вангую проблемы с доступом или еще чего (завел тикет на это дело)
покажите, пожалуйста (с генерацией краша, конечно)
groups
(JFYI: http://arcanis.name/devs/netctl-gui-security-notes.html - эта ссылка вроде была в post_install)
netctl-gui -d

DEBUG=yes plasma-windowed netctl
PGP 0x31361F01
arcanisrepo
Группы следующие:

sys disk lp wheel network video audio storage scanner power users

Вот полная выдача того, что говорит консоль перед крашем, при попытке подключения к wifi.


[neo@matrix ~]$ netctl-gui -d
[MainWindow::MainWindow] : about false
[MainWindow::MainWindow] : auto false
[MainWindow::MainWindow] : config "/home/neo/.config/netctl-gui.conf"
[MainWindow::MainWindow] : debug true
[MainWindow::MainWindow] : defaults false
[MainWindow::MainWindow] : essid "ESSID"
[MainWindow::MainWindow] : minimized 0
[MainWindow::MainWindow] : open "PROFILE"
[MainWindow::MainWindow] : options "OPTIONS"
[MainWindow::MainWindow] : select "PROFILE"
[MainWindow::MainWindow] : settings false
[MainWindow::MainWindow] : tab 1
[MainWindow::updateConfiguration]
[MainWindow::deleteObjects]
[SettingsWindow::addLanguages]
[SettingsWindow::createActions]
[SettingsWindow::getSettings]
[SettingsWindow::getSettings] : "CLOSETOTRAY=true"
[SettingsWindow::getSettings] : "CLOSE_HELPER=false"
[SettingsWindow::getSettings] : "CTRL_DIR=/run/wpa_supplicant_netctl-gui"
[SettingsWindow::getSettings] : "CTRL_GROUP=users"
[SettingsWindow::getSettings] : "FORCE_SUDO=false"
[SettingsWindow::getSettings] : "HELPER_PATH=/usr/bin/netctlgui-helper"
[SettingsWindow::getSettings] : "HELPER_SERVICE=netctlgui-helper.service"
[SettingsWindow::getSettings] : "IFACE_DIR=/sys/class/net/"
[SettingsWindow::getSettings] : "LANGUAGE=en"
[SettingsWindow::getSettings] : "NETCTLAUTO_PATH=/usr/bin/netctl-auto"
[SettingsWindow::getSettings] : "NETCTLAUTO_SERVICE=netctl-auto"
[SettingsWindow::getSettings] : "NETCTL_PATH=/usr/bin/netctl"
[SettingsWindow::getSettings] : "PID_FILE=/run/wpa_supplicant_netctl-gui.pid"
[SettingsWindow::getSettings] : "PREFERED_IFACE="
[SettingsWindow::getSettings] : "PROFILE_DIR=/etc/netctl"
[SettingsWindow::getSettings] : "RFKILL_DIR=/sys/class/rfkill/"
[SettingsWindow::getSettings] : "SKIPCOMPONENTS=false"
[SettingsWindow::getSettings] : "STARTTOTRAY=false"
[SettingsWindow::getSettings] : "SUDO_PATH=/usr/bin/kdesu"
[SettingsWindow::getSettings] : "SYSTEMCTL_PATH=/usr/bin/systemctl"
[SettingsWindow::getSettings] : "SYSTRAY=true"
[SettingsWindow::getSettings] : "USE_HELPER=true"
[SettingsWindow::getSettings] : "WPACLI_PATH=/usr/bin/wpa_cli"
[SettingsWindow::getSettings] : "WPASUP_PATH=/usr/bin/wpa_supplicant"
[SettingsWindow::getSettings] : "WPA_DRIVERS=nl80211,wext"
[SettingsWindow::~SettingsWindow]
[MainWindow::parseOptions]
[MainWindow::checkExternalApps]
[MainWindow::checkExternalApps] : Run cmd "which /usr/bin/kdesu /usr/bin/netctlgui-helper"
[MainWindow::checkExternalApps] : Cmd returns 0
[MainWindow::createObjects]
[MainWindow::createDBusSession]
[MainWindow::forceStartHelper]
[MainWindow::checkExternalApps]
[MainWindow::checkExternalApps] : Run cmd "which /usr/bin/kdesu /usr/bin/netctlgui-helper"
[MainWindow::checkExternalApps] : Cmd returns 0
[MainWindow::forceStartHelper] : Run cmd "/usr/bin/netctlgui-helper -c /home/neo/.config/netctl-gui.conf"
[MainWindow::forceStartHelper] : Cmd returns 0
[MainWindow::checkHelperStatus]
[MainWindow::isHelperActive]
[sendDBusRequest]
[sendDBusRequest] : Service "org.netctlgui.helper"
[sendDBusRequest] : Path "/ctrl"
[sendDBusRequest] : Interface "org.netctlgui.helper"
[sendDBusRequest] : cmd "Active"
[sendDBusRequest] : args ()
[sendDBusRequest] : is system bus true
[sendDBusRequest]
[sendDBusRequest] : Service "org.netctlgui.helper"
[sendDBusRequest] : Path "/ctrl"
[sendDBusRequest] : Interface "org.netctlgui.helper"
[sendDBusRequest] : cmd "Update"
[sendDBusRequest] : args ()
[sendDBusRequest] : is system bus true
[MainWindow::isHelperServiceActive]
[MainWindow::isHelperServiceActive] Run cmd "/usr/bin/systemctl is-active netctlgui-helper.service"
[MainWindow::isHelperServiceActive] : Cmd returns 3
[MainWindow::isHelperServiceActive] : Error ""
[TrayIcon::init]
[TrayIcon::createActions]
[AboutWindow::createUi]
[AboutWindow::createText]
[NetctlAutoWindow::createActions]
[SettingsWindow::addLanguages]
[SettingsWindow::createActions]
[MainWindow::createActions]
[MainWindow::createToolBars]
[MainWindow::updateToolBars]
service is "org.kde.StatusNotifierItem-16279-1"
Registering a client interface to the KStatusNotifierWatcher
[MainWindow::setTab]
[MainWindow::setTab] : Update tab 0
[MainWindow::updateTabs]
[MainWindow::updateTabs] : Update tab 0
[MainWindow::updateMainTab]
[MainWindow::checkExternalApps]
[MainWindow::checkExternalApps] : Run cmd "which /usr/bin/kdesu /usr/bin/netctl /usr/bin/netctl-auto"
[MainWindow::checkExternalApps] : Cmd returns 0
[sendDBusRequest]
[sendDBusRequest] : Service "org.netctlgui.helper"
[sendDBusRequest] : Path "/netctl"
[sendDBusRequest] : Interface "org.netctlgui.helper"
[sendDBusRequest] : cmd "isNetctlAutoActive"
[sendDBusRequest] : args ()
[sendDBusRequest] : is system bus true
[sendDBusRequest]
[sendDBusRequest] : Service "org.netctlgui.helper"
[sendDBusRequest] : Path "/netctl"
[sendDBusRequest] : Interface "org.netctlgui.helper"
[sendDBusRequest] : cmd "ProfileList"
[sendDBusRequest] : args ()
[sendDBusRequest] : is system bus true
[parseOutputNetctl]
[MainWindow::updateMenu]
[MainWindow::setMenuActionsShown]
[MainWindow::setMenuActionsShown] : State false
[MainWindow::updateMenuMain]
[MainWindow::setMenuActionsShown]
[MainWindow::setMenuActionsShown] : State false
[MainWindow::updateTabs]
[MainWindow::updateTabs] : Update tab 2
[MainWindow::updateWifiTab]
[MainWindow::checkExternalApps]
[MainWindow::checkExternalApps] : Run cmd "which /usr/bin/kdesu /usr/bin/wpa_cli /usr/bin/wpa_supplicant"
[MainWindow::checkExternalApps] : Cmd returns 0
[MainWindow::wifiTabSetEnabled]
[MainWindow::wifiTabSetEnabled] : State true
[MainWindow::checkExternalApps]
[MainWindow::checkExternalApps] : Run cmd "which /usr/bin/kdesu /usr/bin/wpa_cli /usr/bin/wpa_supplicant"
[MainWindow::checkExternalApps] : Cmd returns 0
[sendDBusRequest]
[sendDBusRequest] : Service "org.netctlgui.helper"
[sendDBusRequest] : Path "/ctrl"
[sendDBusRequest] : Interface "org.netctlgui.helper"
[sendDBusRequest] : cmd "WiFi"
[sendDBusRequest] : args ()
[sendDBusRequest] : is system bus true
[parseOutputWifi]
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false false
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false false
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false true
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false true
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false false
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false false
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false true
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false true
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false false
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false false
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false true
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false true
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false false
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false false
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false true
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false true
[MainWindow::updateMenu]
[MainWindow::setMenuActionsShown]
[MainWindow::setMenuActionsShown] : State false
[MainWindow::updateMenuWifi]
[MainWindow::setMenuActionsShown]
[MainWindow::setMenuActionsShown] : State false
[MainWindow::updateMenuWifi]
[MainWindow::setMenuActionsShown]
[MainWindow::setMenuActionsShown] : State false
[MainWindow::wifiTabStart]
[MainWindow::checkExternalApps]
[MainWindow::checkExternalApps] : Run cmd "which /usr/bin/kdesu /usr/bin/wpa_cli /usr/bin/wpa_supplicant"
[MainWindow::checkExternalApps] : Cmd returns 0
[MainWindow::connectToUnknownEssid]
[sendDBusRequest]
[sendDBusRequest] : Service "org.netctlgui.helper"
[sendDBusRequest] : Path "/netctl"
[sendDBusRequest] : Interface "org.netctlgui.helper"
[sendDBusRequest] : cmd "WirelessInterfaces"
[sendDBusRequest] : args ()
[sendDBusRequest] : is system bus true
[sendDBusRequest]
[sendDBusRequest] : Service "org.netctlgui.helper"
[sendDBusRequest] : Path "/ctrl"
[sendDBusRequest] : Interface "org.netctlgui.helper"
[sendDBusRequest] : cmd "Create"
[sendDBusRequest] : args (QVariant(QString, "netctl-gui-тут essid") ,  QVariant(QStringList, ("Connection==wireless", "Description=='Automatically generated profile by Netctl GUI'", "ESSID=='Тут essid'", "IP==dhcp", "Interface==wlp6s0", "Key=='Тут пароль'", "Security==wpa")) )
[sendDBusRequest] : is system bus true
[sendDBusRequest]
[sendDBusRequest] : Service "org.netctlgui.helper"
[sendDBusRequest] : Path "/ctrl"
[sendDBusRequest] : Interface "org.netctlgui.helper"
[sendDBusRequest] : cmd "Start"
[sendDBusRequest] : args (QVariant(QString, "netctl-gui-тут essid") )
[sendDBusRequest] : is system bus true
[sendDBusRequest]
[sendDBusRequest] : Service "org.netctlgui.helper"
[sendDBusRequest] : Path "/netctl"
[sendDBusRequest] : Interface "org.netctlgui.helper"
[sendDBusRequest] : cmd "isProfileActive"
[sendDBusRequest] : args (QVariant(QString, "netctl-gui-тут essid") )
[sendDBusRequest] : is system bus true
[sendDBusRequest]
[sendDBusRequest] : Service "org.netctlgui.helper"
[sendDBusRequest] : Path "/ctrl"
[sendDBusRequest] : Interface "org.netctlgui.helper"
[sendDBusRequest] : cmd "Remove"
[sendDBusRequest] : args (QVariant(QString, "netctl-gui-тут essid") )
[sendDBusRequest] : is system bus true
[MainWindow::updateWifiTab]
[MainWindow::checkExternalApps]
[MainWindow::checkExternalApps] : Run cmd "which /usr/bin/kdesu /usr/bin/wpa_cli /usr/bin/wpa_supplicant"
[MainWindow::checkExternalApps] : Cmd returns 0
[MainWindow::wifiTabSetEnabled]
[MainWindow::wifiTabSetEnabled] : State true
[MainWindow::checkExternalApps]
[MainWindow::checkExternalApps] : Run cmd "which /usr/bin/kdesu /usr/bin/wpa_cli /usr/bin/wpa_supplicant"
[MainWindow::checkExternalApps] : Cmd returns 0
[sendDBusRequest]
[sendDBusRequest] : Service "org.netctlgui.helper"
[sendDBusRequest] : Path "/ctrl"
[sendDBusRequest] : Interface "org.netctlgui.helper"
[sendDBusRequest] : cmd "WiFi"
[sendDBusRequest] : args ()
[sendDBusRequest] : is system bus true
[parseOutputWifi]
[MainWindow::updateMenuWifi]
[MainWindow::setMenuActionsShown]
[MainWindow::setMenuActionsShown] : State false
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false false
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false false
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false true
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false true
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false false
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false false
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false true
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false true
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false false
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false false
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false true
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false true
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false false
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false false
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false true
[MainWindow::checkStatus]
[MainWindow::checkStatus] : Status false
[MainWindow::checkStatus] : Return null false true


И выдача про Debug


DEBUG=yes plasma-windowed netctl

QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
The helper is running with EUID 1003. Some functions may not be available.
See security notes for more details.
Restore existing session.

Кстати забавный факт - только при включении окна с net-ctl-gui падает уже имеющееся на скриптах - wpa_supplicant и dhcpcd.

Благодарю за поддержку, как уже писал приложение оч. необходимое. Было бы здорово иметь реализацию похожую на ту, что на Cinamon в LinuxMint, но на net-ctl. Я думаю такая вещь могла бы быстро и в офф репы перекочевать.
пасип. Еще уточнение - я вижу, что отсутствует выхлоп для плазмоида. Флаг DEBUG=yes был введен вместо NETCTLGUI_DEBUG=yes в 1.4.0, можно уточнить версию у вас? Было бы также полезно узнать:

grep netctl-gui /var/log/pacman.log

С группами все ок у вас, на стороне гуйни тоже есть проверка на это дело. Посмотрю на вашу проблему, по ходу где то что то сломано

neobrave
Кстати забавный факт - только при включении окна с net-ctl-gui падает уже имеющееся на скриптах - wpa_supplicant и dhcpcd.
да, к сожалению, это известная проблема. Несмотря на то, что создается отдельный процесс с отдельным сокетом, старое соединение, почему то, падает.
neobrave
Благодарю за поддержку, как уже писал приложение оч. необходимое. Было бы здорово иметь реализацию похожую на ту, что на Cinamon в LinuxMint, но на net-ctl. Я думаю такая вещь могла бы быстро и в офф репы перекочевать.
согласно формальным требованиям могу хоть сейчас переместить в репы, только скромность не позволяет =)
PGP 0x31361F01
arcanisrepo
Евгений,

вот все что помнит Pacman о net-ctl-gui

$ grep netctl-gui /var/log/pacman.log
[2014-11-01 22:01] [PACMAN] Running 'pacman --color auto -U /tmp/yaourt-tmp-neo/PKGDEST.euG/kdeplasma-applets-netctl-gui-1.3.3-2-x86_64.pkg.tar.xz /tmp/yaourt-tmp-neo/PKGDEST.euG/libnetctlgui-1.3.3-2-x86_64.pkg.tar.xz /tmp/yaourt-tmp-neo/PKGDEST.euG/libnetctlgui-qt4-1.3.3-2-x86_64.pkg.tar.xz /tmp/yaourt-tmp-neo/PKGDEST.euG/netctl-gui-1.3.3-2-x86_64.pkg.tar.xz /tmp/yaourt-tmp-neo/PKGDEST.euG/netctlgui-helper-1.3.3-2-x86_64.pkg.tar.xz /tmp/yaourt-tmp-neo/PKGDEST.euG/netctlgui-helper-qt4-1.3.3-2-x86_64.pkg.tar.xz /tmp/yaourt-tmp-neo/PKGDEST.euG/netctl-gui-qt4-1.3.3-2-x86_64.pkg.tar.xz'
[2014-11-01 22:01] [PACMAN] installed kdeplasma-applets-netctl-gui (1.3.3-2)
[2014-11-01 22:01] [PACMAN] installed netctl-gui (1.3.3-2)
[2014-11-01 22:01] [ALPM-SCRIPTLET] See http://arcanis.name/devs/netctl-gui-security-notes.html#helper
[2015-01-31 15:24] [PACMAN] Running 'pacman --color auto -U /tmp/yaourt-tmp-neo/PKGDEST.0U5/libnetctlgui-1.4.0-1-x86_64.pkg.tar.xz /tmp/yaourt-tmp-neo/PKGDEST.0U5/netctl-gui-1.4.0-1-x86_64.pkg.tar.xz /tmp/yaourt-tmp-neo/PKGDEST.0U5/netctlgui-helper-1.4.0-1-x86_64.pkg.tar.xz /tmp/yaourt-tmp-neo/PKGDEST.0U5/plasma5-applet-netctl-gui-1.4.0-1-x86_64.pkg.tar.xz'
[2015-01-31 15:28] [PACMAN] Running 'pacman -U netctl-gui-1.4.0-1-x86_64.pkg.tar.xz'
[2015-01-31 15:28] [PACMAN] Running 'pacman -U netctl-gui-1.4.0-1-x86_64.pkg.tar.xz'
[2015-01-31 15:29] [PACMAN] Running 'pacman -U /tmp/yaourt-tmp-neo/netctl-gui-1.4.0-1-x86_64.pkg.tar.xz'
[2015-01-31 15:29] [ALPM] upgraded netctl-gui (1.3.3-2 -> 1.4.0-1)

А насчет скромности зря вы это... Огромная проблема общества то, что умные и ищущие люди часто полны сомнений, а идиоты решимости и уверенности в своей правоте)))
А уже (судя по постам) исходя из интереса к химии и уровня английского ко второй касте вас не причислишь никак. Скромность только мешает, когда хорошие дела делаются)
Всех вам благ и еще раз спасибо за ответы)
 
Зарегистрироваться или войдите чтобы оставить сообщение.