?

Log in

No account? Create an account
 

Переносимость

About Уничтожить всех уродов

Previous Entry Переносимость 26 апр, 2016 @ 07:20 Next Entry
Qt такая интересная штука: позволяет написать переносимые программы, компилирующиеся и под линуксом, и под виндой, но при этом под линуксом они работают, а под виндой - не очень...
Оставить комментарий
[User Picture Icon]
From:qlman
Date:Апрель, 26, 2016 04:33 (UTC)
(Link)
Я из продуктов на ём довольно долго пользуюсь Transmission-Qt (торрент-клиент), под виндой. Работает, гм, довольно странно... Впрочем, всё равно лучше вконец скурвившегося utorrent.
[User Picture Icon]
From:kincajou
Date:Апрель, 26, 2016 04:48 (UTC)
(Link)
вожусь тут с одной самоделкой. По сути, простейшая штука - некое устройство высылает некие пакеты с данными, а мы тут их интерпретируем и отображаем. Никаких многомегабайтных потоков нет, ничего экзотического, по выглядит всё так, словно данные где-то в системе застревают ... какой-то буфер, возможно. Т.е. пакет пришёл - ок, система его захавала, но сигнал о готовности данных не выдала. Пришёл ещё один - ок, сожрём и его, молча. И ещё один - тоже сожрём! А программе не скажем, пусть ждёт. Потом идёт обмен другими пакетами и вдруг винда решает вывалить те, предыдущие.

В линуксе такой хуйни нет! пришёл пакет - сразу на.
[User Picture Icon]
From:qlman
Date:Апрель, 26, 2016 04:55 (UTC)
(Link)
Не пробовал в порядке эксперимента присвоить процессу обработчика присвоить приоритет реального времени? Изменится что-то, нет...
[User Picture Icon]
From:kincajou
Date:Апрель, 26, 2016 04:57 (UTC)
(Link)
пакет в буфере может сидеть бесконечно долго. Дело вовсе не в приоритете.
[User Picture Icon]
From:kincajou
Date:Апрель, 26, 2016 05:03 (UTC)
(Link)
прим.: я не уверен, что это именно "пакет застрял в буфере", а не что-то другое. А чтобы счастье было полным, некоторые пакеты, совершенно рандомно, приходят по два раза. А то и по три. Я бы ещё понял, если бы это был UDP, но ведь я же TCP читаю.. Там же, если таймаут прошёл и данные какие-то приняты, они обязательно должны быть выданы читающему процессу. Но оказывается, что это не так обязательно!
[User Picture Icon]
From:metaclass
Date:Апрель, 26, 2016 06:19 (UTC)
(Link)
TCP и сокеты вообще очень leaky абстракция.
Плюс сигналы-слоты Qt и можно вообще упороться до основания.

Впрочем, конкретно в случае TCP понятия "пакет" не существует, он поток байт, а не пакеты.
[User Picture Icon]
From:kincajou
Date:Апрель, 26, 2016 13:26 (UTC)
(Link)
я понимаю, но под ним всё равно UDP и пакеты. И вот где-то что-то "застревает" и не выталкивается из временного пристанища до тех пор, пока новые данные не придут
[User Picture Icon]
From:aterentiev
Date:Апрель, 26, 2016 05:46 (UTC)
(Link)
Qt как минимум на винде со своим GUIем меня бесит особенностью реализации компонентов не на основе виндовых хендлеров окон, они сами все картинками рисуют. Может, это и мульти, но как-то херово.

Я недавно пытался автоматизировать один софт , на ентом Qt написанный. Обычно я программу запускал, каким-нибудь spyxx находил места/окошки полей ввода или кнопок и посылал туда сообщения клавиатуры и мыши, софт прыгал, как я хочу. А тут - хрен, только наугад по координатам...
[User Picture Icon]
From:metaclass
Date:Апрель, 26, 2016 06:26 (UTC)
(Link)
Скриншот и распознавание образов :)
Но вообще нестандартная отрисовка контролов знатно бесит, что в Qt что в java какой-нибудь.
[User Picture Icon]
From:aterentiev
Date:Апрель, 26, 2016 06:31 (UTC)
(Link)
axa, еще нейронную сетку реализовать, чтоб кликнуть куда надо... бесит - это то самое слово.
[User Picture Icon]
From:mbr
Date:Апрель, 26, 2016 06:36 (UTC)
(Link)
Одни костыли на другие не легли? :)
[User Picture Icon]
From:aterentiev
Date:Апрель, 26, 2016 06:43 (UTC)
(Link)
неа :)
[User Picture Icon]
From:aterentiev
Date:Апрель, 26, 2016 06:47 (UTC)
(Link)
A вообще, меня очень бесит, что любой софт off-the-shelf не поддерживает автоматизацию функциональности извне. Этого иногда очень не хватает.
[User Picture Icon]
From:mbr
Date:Апрель, 26, 2016 07:03 (UTC)
(Link)
Поддерживают. Винду просто не нужно использовать. Правильный linux-way это консоль/демон с прикрученным гуем. К сожалению, это не кроссплатформенное решение.
[User Picture Icon]
From:aterentiev
Date:Апрель, 26, 2016 07:24 (UTC)
(Link)
Правильный linux-way предполагает, что программист будет делать именно так. Мне желается это на уровне операционки...
[User Picture Icon]
From:mbr
Date:Апрель, 26, 2016 08:06 (UTC)
(Link)
Личное желание супротив принятых правил и есть костыли ;)
[User Picture Icon]
From:ping_ving
Date:Апрель, 26, 2016 06:09 (UTC)
(Link)
Надо же.
Ну чисто java.
[User Picture Icon]
From:mbr
Date:Апрель, 26, 2016 06:29 (UTC)
(Link)
Причина всех бед всегда одна - говнокод. Размашитастая стейт-машина и си-стайл программирование не очень совместимы с асинхронной объектной обработкой данных в крестах.
[User Picture Icon]
From:kincajou
Date:Апрель, 26, 2016 13:29 (UTC)
(Link)
я понимаю, но под линуксом-то работает!!!
(Оставить комментарий)
Top of Page Разработано LiveJournal.com