LINUX.ORG.RU

Сообщения deep-purple

 

Вы уже догадались, опять Qt5

У меня уже начинает подгорать.

Нужно сделать возможность запуска и в кли и в гуй режиме.

Смотрим: http://doc.qt.io/qt-5/qapplication.html мотаем до «Detailed Description», читаем, есть пример. Ок. Чё? фор аргв? Мухаха!!! Ну ладно, бывает, в одном месте можно и по старинке.

А если у меня много опций и для гуя и для кли? Оу, ну конечно. http://doc.qt.io/qt-5/qcommandlineparser.html#process читаем, смотрим пример. Ок.

Пробуем запустить... Парсер просит инстанс аппликейшна ДО своего запуска. Что, простите? А, ну да, один раз фор фор для но-гуй опции, дебильный иф с кастами.. Эммм.. А как насчет неизвестной опции но-гуй когда запустим процесс парсинга? В парсер тоже добавлять ради чтобы его заткнуть? Иначе он ДЕЛАЕТ ЭКСИТ(1) СРАЗУ после неуспешного парсинга. Ок.

О! парсер можно попросить только спарсить! http://doc.qt.io/qt-5/qcommandlineparser.html#process Используй parse() вместо process(), проверь успех и.. Вроде все работает.. Но, я же как честный и правильный делал parser.addHelpOption() надо проверить parser.showHelp() .. Чё? Опять требует инстанс аппликейшна и достает из штанов большой и толстый СЕГФОЛТ!!!

Т.е. я без самого главной опции хелп остаюсь? Отлично!!!

А теперь серьезно. Вопрос: как правильно разрулить гуй-негуй, создав правильный инстанс апликейшна + пропарсить опшны парсером + показать хелп?

Пока вы отвечаете, я ушел переделывать на «фор аргв + иф с дебильным кастом», по идее после этого showHelp() должно заработать.

 , , , ,

deep-purple
()

И снова про qt5

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

В исходниках обычно пишется QObject::tr(«This is runglish token») где позже лупдейт находит эти токены и генерит хмл файлы для других желаемых языков.

Вопрос в том, почему токенами используется английский? Я не зря там написал, мол, рунглиш, т.к. есть фразочки такие, что написаны мной некорректно.

И вот я хочу не париться с написанием по англицки, а продолжить работу над кодом и писать ака, например для пункта меню «Файл» QObject::tr(«lang_mainmenu_file») т.е. писать действительно токены, а не рунглиш, ну а в лупдейт просить генерить еше и английский.

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

Что это дает? Отсутствие необходимости перекомпиливать приложение изза ошибок в англ тексте прямо в сорцах.

Ваше мнение — оно того стоит или какие-то минусы я не вижу?

 ,

deep-purple
()

Баш условия и коды возврата

Есть скрипт. Нужна возможность на любом этапе его выполнения остановить работу. Т.е. все, что в нем вызывается, если нажали Ctrl+C то нужно остановить полностью, а не только ту шляпу, которая сейчас выполнялась.

Я нагуглил http://stackoverflow.com/questions/5195607/checking-bash-exit-status-of-sever...

Там предлагают варианты проверки кода возврата. Ок. Это я беру.

А что насчет Ctrl+C? Будет ли это действовать на эту провреку? И вообще как правильно сделать?

Ну вот пример:

if [ что-то ]; then
    вот тут работаем долго и можем вернуть ошибку, а могут и нажать Ctrl+C
fi
а вот тут работаем только если ранее не вернули ошибку или не остановили работу
Мне не хочется делать вложенные условия, т.к. таких мест достаточно много и получится не маленькая такая ёлочка.

Как это правильно приготовить?

 , , ,

deep-purple
()

Qt5 QMenu QMenubar пропускает один клик

Вобщем код:

 menuBar = menuBar(); // QMainWindow
a1 = new QMenu(menuBar);
a1->setTitle(tr("&File"));
// ... добавление QAction's в a1, всякие там: new, open, save, save as
menuBar->addMenu(a1);
Собирается. Кликаю — выпало меню. Кликаю — скрылось. Кликаю — ноль эмоций. Кликаю — выпало. Кликаю — скрылось. Кликаю — ну вы поняли, снова ноль эмоций и так по кругу.

Пропускает один клик. Что за хрень?

 

deep-purple
()

Qt, wxWidgets как правильно приготовить большой гуй?

Я тыкаю палочкой пока только wxWidgets, но, в тред приглашаются и культи-ваторы, т.к. принцип должен быть одинаков.

Первый вопрос касается коммуникации между элементами гуя и данными. Например при каком-то событии/состоянии нужно задизаблить вот этот, этот и этот элемент выпадающего меню, а так же обновить вот то и вот то подменю вот такими титлами. Это простейший пример, может быть гораздо сложнее.

Я вижу два пути:

1) Сеттить все что нужно без событий. Для этого нужно написать кучу помогалок дергающих сеттеры. Где создавать эти помогалки дергающие кучку сеттеров? Одним классом и в нем методы? Это будет адъ и может быстро случиться зависимость «b» от «a» и a" от «b».

2) Коллбеки на события, по айди. Где объявлять эти коллбеки? В каждом элементе, который будет уметь меняться или в одном месте? Если в каждом, то хрен поймешь кто где лежит и за что отвечает, если в одном месте, то чем это отличается от первого варианта?

Наличие тредов склоняет ко второму варианту. Отработал — и только потом событие, а там сами разберутся кто куда. Это по крайней мере удобнее. Пока ты не подготовил данные, никто не рыпнется, мьютексы/семафоры не понадобятся(?).

Второй вопрос будет комплексным:

Как правильно разложить по полочкам структуру приложения? Как правильно минимизировать связность между объектами данных и гуевыми компонентами, или это не нужно и наоборот пользовать объекты тулкита (если таковые имеются) и для данных?

Что я там такое делаю? Да ничего не делаю кроме изучения. Ну нашел я туториалы, ну покопипастил куски кода, ну работает. Дальше что? Мне нужны истории успеха куда сложнее, чем пара кнопок в одном оконце. Смотреть сорцы приложений? Увольте. Там нихрена не понятно из-за огромного кол-ва «мусора», скрывающего архитектурные решения и совершенно без объяснения почему был сделан именно такой выбор архитектуры.

Кто-то скажет — если не знаешь что лепишь, то и не получится архитектуру набросать. Отчасти да. Но я не о самой архитектуре, а о выборе пути для построения правильной архитектуры и порядка в исходниках.

Можете просто рассказать о том как это все делается в виде: «я обычно кладу эти компоненты сюда, а те туда, а вот это делается вот так, потому что тут и тут позже иначе будет узкое место».

 , ,

deep-purple
()

Они снова выпилили ffmpeg и предлагают av*?

Debian 8. Сволочи, удалили из репозиториев ффмпег под чистую и подсунули этот сраный авконв.

Помните у них был срач году так в 14-м? Еще выскакивало сообщение при запуске ффмпег, мол, ффмпег устарел, ставьте скорее авконв. Троллинг такой.

Теперь вот опять видимо. Только вообще из репо вырезали.

Почему бы не оставить ффмпег просто добавив авконв как альтернативу? Да это чистой воды очередной троллинг.

Либав то один, но оболочки то разные, и порядок и наличие опций разные. Эт чо, чтобы люди не расслаблялись и скрипты переписывали и «другие» инструменты изучали? Свобода выбора, говорили они!

З.Ы. Да, я уже нашел в бекпортах.

 , , ,

deep-purple
()

Либа для редактирования SVG

Есть ли готовые библиотеки для мышечного редактирования SVG?

В идеале — некая сишная или плюсовая либа, ну или часть приложения которую можно будет легко выковырять, которая наиболее простым способом добавится в проект и в гуйчике можно будет быстро прикрутить готовое визуальное отображение path'ей и прочего где можно это все крутить мышкой.

В худшем случае — просто SVG либа с нормальным апи. Тут уж гуй придется делать самому.

Рад буду получить любой пинок в правильном направлении для поиска и изучения этого вопроса.

 , , ,

deep-purple
()

Видюха, два монитора и переходники DVI-VGA

Есть видюха GeForce 7600 GT, там два выхода DVI. Есть два монитора с шнурами VGA. Есть два переходника чтобы это все соединилось.

Оба монитора при подключении через один из переходников определяются по своим именам и есть возможность выбрать любое из поддерживаемых ими разрешение.

А через другой переходник определяются как CRT-N и доступно только разрешение 320 или 640 и частотка только 60. Попытке задать нужные параметры внаглую результатов не дает.

Методом перетыкания обнаружено что виноват второй переходник, НО!

Такое вообще бывает? Всмысле что в переходнике не вся цоколевка распаяна или он какого-то другого типа?

cast Zubok, помню при тебе поднимался вопрос с VGA шнурами, но шнуры точно нормальные.

Что делать? Какой переходник покупать чтобы оно точно заработало?

 , , ,

deep-purple
()

Кажется я положил пых

Код вполне себе такой:

<?php

class a
{
    public function getNewB()
    {
        $b = new b();
        $b->a = $this;
        return $b;
    }
}
class b
{
    public $a = null;
    public $b = null;
}
class x
{
    public static $a = null;
    public static $b = null;
    public static function foo()
    {
        self::$a = new a();
        self::$b = self::$a->getNewB();
        self::bar(self::$b);
    }
    public static function bar($b)
    {
        $b->b = self::$a->getNewB();
        self::bar($b->b);
    }
}
x::foo();
Запуск:
~$ php test.php 
Segmentation fault
Т.е. не память, не время, а сразу — херак и всё.

Про окружение:

~$ php -v
PHP 5.6.22-0+deb8u1 (cli) (built: Jun 13 2016 07:55:54) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
32 бит если что.
~$ cat /etc/debian_version 
8.5
Подтверждаете? Или это платформо-версионно зависимое?

Kilte, KRoN73

 , , ,

deep-purple
()

Лексер, парсер, интерпретатор и все такое

Скажу сразу — Я НЕ ПИШУ СВОЙ ЯП!

Задача у меня такая: есть выражение, которое нужно распарсить, оно, в принципе, лексически простое.

И тут есть одно «НО». Например для "(a+b+(((c-d))))" необходимо вынести «бессмысленно вложенный» кусок на самый возможно высокий уровень и привести к виду "(a+b+(c-d))" еще ДО запуска. Т.е. нормализовать. Это просто пример, сами же выражения могут быть монструозными, а вариантов нормализации больше одного, и эти выражения нужно как-то облагородить, сократить.

Например https://ru.wikipedia.org/wiki/Алгоритм_сортировочной_станции не подходит (она тупо берет по токену и «гори оно огнем»).

Выходит, я должен забыть об однопроходном принципе и разделить парсинг на задачи:

1) лексер — пройдет и соберет все токены, какие получилось.
2) валидатор — провалидирует синтаксис выражения.
3) парсер — построит АСД как есть (может быть объединен с валидатором, строим дерево сразу, и если ошибка, то прерываемся).
4) нормализатор — вот это вот все про перестроение дерева.

Все я правильно думаю? Есть что прокомментировать? Есть какой-то менее раздутый подход к решению этой задачи?

Кастую тех кто засветился на первой странице поиска ЛОРа по фразе «свой ЯП»:

holuiitipun, true_admin, Zubok, Int64 и наверное intelfx, он вроде головастый.

Остальные так же приглашаются — еще одна голова свежих мыслей никогда не будет лишней.

UPD:

Для ( a+(-b) ) | ( a+(-c) ) = два результата a-b и a-c

(a+b) равно ли (b+a) ? — да

a+(b|c)+d+(b|c) — дубликаты зависит от ситуации, для этого примера так:

a+(b|c)+d+(b|c)
    => [a+b+d+b, a+b+d+c, a+c+d+b, a+c+d+c] // развернули в 4
    => [a+b+d, a+b+d+c, a+c+d+b, a+c+d] // удалили дубликаты (в 1 и в 4)
    => [a+b+d, a+b+d+c, a+c+d] // удалили третье как дубликат второго

Предугадываю насчет вопроса про разнознаковые:

a+(-b|-c)+d+(b|-c)
    => [a-b+d+b, a-b+d-c, a-c+d+b, a-c+d-c] // развернули в 4
    => [a+d, a-b+d-c, a-c+d+b, a-c+d] // -+ сожгли др друга, для -- просто убрали дубликаты
    // среди деревьев дубликатов нет

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

Все значения будут известны, на момент выполнения может «сгореть» какой-то результат по вине значений, но это уже другая история.

 ,

deep-purple
()

Кеширование динамики (конкретная ситуация)

Есть: сущность «А» и сущность «Б» и есть меж ними связь мэни ту мэни. Сущностей и связей сейчас пока мало, а будет много.

Есть такой ф-ционал, где выбрав несколько «Б» мы получаем постраничный список всех «А», которые с этими «Б» связаны. Но, при выводе этих «А», под каждым «А» мелким шрифтом перечисляются все «Б» которые связаны с этим конкретным «А» (ну и там еще кое-какие данные, но там все эти группировки, юнионы, для большого кол-ва сущностей будет тяжело).

Что кешировать и как? Руками первым зашедшего пользака или по крону — эти вопросы я не обсуждаю. Тут все понятно и есть из чего выбирать. У меня совсем другой вопрос.

Еще раз, что кешировать и как?

Ну например — делать токен из айдишников «Б» а-ля «bid1-bid2-bid-3-bidN» и ждать его в запросе (или вообще от строки запроса), типа айдишник кеша получается, если кеш есть, то отдавать кеш, если нет, то генерим кеш и сохраняем.

Все просто скажете вы? Неа.

Если некто «модератор1» удалил сущность «Б» которая была связана с парой тысяч сущностей «А». Какие кеши я должен удалить/перегенерить? в токене кеша доступны айдишники «Б» которые а-ля точка входа для получения списка «А» которые собсно в кеше хранятся, НО! у каждой такой «А» есть свои «Б» )) Рекурсия, однако..

Как это сделать правильно?

 , ,

deep-purple
()

Вертексы, эджы, фейсы и все все все

Я было дело спрашивал В какой прожке можно вменяемо набросать план дома? в какой программе можно набросать вменяемый план дома. В итоге как-то сошлись на том, что майсвитхом совершенно для этого не годится. И правда.

Вобщем я тут оседлал сдуру вингс3д. В целом все вменяемо для «набросать правильных блоков».

Но я столкнулся с ограничениями. Оно не может склеивать два и более блока так, чтобы в итоге это был один блок с вогнутыми и выпуклыми фейсами. Под прямыми ли углами или нет — все одно. А умеет только «бридж» между двумя отставленными друг от друга блоками, да и то оставляет старые грани (инструменты для очистки лишнего гогна там есть но они толи не работают толи я не допер как).

Я пробовал соединять мостом два абсолютно придвинутых друг к другу блока — это адъ, получилось в одном из пяти случаев, камера внутрь мелких деталей не пролезает чтобы выделить нужные фейсы.

А еще мне нужно бы как-то добавлять новые вертексы, эджи и фейсы. Вингс3д как я понял этого не умеет. Смех в том что удалять умеет.

От оно: https://s13.postimg.org/t1nn2817b/w3d.png

Вобщем вопросы такие..

В какую программу соскочить? Ну допустим порекомендуете блендер. Тогда объясните плиз (как для дебила) как там делаются: кастомные вертексы, эджи и фейсы, какие менюшки тыкать (в идеале, выделить нужные, применить инструмент).

AP

 , ,

deep-purple
()

ClamAV log files - too big

Кламав пожрал все место на диске. 970 ГБ как не в себя. Аж другие сервисы работать нормально отказались.

Вот тут аналогичный свежак: http://support.immunet.com/index.php?/topic/2657-clamav-log-files-too-big-too...

За исключением того, что я успел посмотреть содержимое логов парой дней ранее (те же попытки маллока), а сегодня остановил это чудовище и дропнул его логи.

А тут (хоть и тоже свежак) вообще про оффтопик: http://support.immunet.com/index.php?/topic/3102-immunet-and-disk-space-usage/

Вот щас сижу и думаю что с этим делать, там очень старый дистр, а сервисы то работают. Боязно. Чем-то одним это не обойдется, если уж делать, то полностью, видимо, с переустановочкой ибо апгрейд там не пройдет — много ручных сборок.

А, собсно, вопросы:

1) У вас такого не случалось в последний месяц на старых машинках?

2) Как решили эту проблему малой кровью?

 , , ,

deep-purple
()

Нравится ли вам PVS-Studio?

В треде PVS-Studio для Linux возникли некоторые разногласия, как по поводу того что все «линукс разработчики» говорят о PVS, так и про то что «всему ЛОРу не нравится PVS».

Так давайте же проверим:

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

Перемещено jollheef из polls

 ,

deep-purple
()

Какие сейчас вменяемые есть донат-виджеты?

Мне нужно прикрутить виджет (кнопку/форму) донатов на сайт.

Кто чем пользовался/пользуется подскажите что лучше выбрать и почему?

Для получателя — нужна возможность или привязать к карте или иным способом выводить средства.

Для жертвующих — максимально большое кол-во вариантов платежа. Ну как вменяемый вариант: телефон, карта, вебмани, яндексбабло.

Для всех — минимальные комиссии.

Я уже успел посмотреть вебмани и яндексбабло виджеты. Ну так, вроде ничего. Но я ж их не использовал. Потому и спрашиваю что может быть есть лучше чем это. И где какие подводные камни бывают.

 , , ,

deep-purple
()

Как такое может быть?

Наткнулся я на видос какой-то, мол, космоса нет.
Видели вы наверное такие желтушные.

Но там говорят такое.. Решил проверить. Погуглил пару фактов:

МКС «висит» на высоте 400 км (400000 м).

Смотрим «Атмосфера стандартная»: http://nearspace.ru/tech/Gost4401-81AtmosferaStandartnaya.pdf

Идём на стр. 138, там начинается: Таблица 4. Параметры атмосферы на высотах от 80000 до 1200000 м. Мотаем эту таблицу до наших 400 км (стр. 149).

Смотрим: +995,90 по кельвину.
Это: +722,75 по цельсию.

А я слышал что в космосе холодно.

Педивикия сказала — алюминий плавится при +660,1 по цельсию. Кто из вас паяльником себе руки обжигал? Больше чем в два раза горячее паяльника, это ощутимо. А из чего тогда скафандры сделаны если там так жарко? Они же выходят в открытый космос находясь на высоте 400 км.

Как такое может быть? Кто может объяснить в чем подвох или ошибка?

Тема, считаю, не толксовая, т.к. предоставлена официальная информация и на её основе заданы конкретные вопросы.

 ,

deep-purple
()

Флеш и /tmp

Флешплеер гадит своими кешами прямо в /tmp а это отдельно примонтированый раздел. Забивает всё подчистую. Как этому ублюдку указать чтобы он клал свои какахи в другое место?

 , ,

deep-purple
()

Что еще есть такого же?

N7 (Naturally Seven)
PMJ (Postmodern Jukebox)
PTX (Pentatonix)


Что еще есть такого же уровня?
Всякие «одночеловые» варианты типа DubFX не интересуют.

Онтопик тут при том что я через него и музыку иногда слушаю.

 

deep-purple
()

Нужна ваша помощь по выбору железа и кое-какие подсказки

Мне нужно чтобы при трёх мониторах, на двух из них всегда показывалось одно и то же рабочее место (виртуальный стол). Вопросы такие:

1) Какую видео-карту брать? На три-четыре гнезда сразу или можно как-то разветвить (у меня уже есть карта с двумя DVI)? Возможно, вывестись на VGA, это не принципиально. Но, в любом случае не хотелось бы велосипедить квадратные колеса на соплях. Даже если нельзя разветвить проводами, всеравно остается вопрос какую карту брать чтобы точно завелась в нужном режиме на онтопике и дровишки подхватили ускорение?

2) Как это все разруливать в софте? Понимаю, зависит от карты, невидия, ати и пр. Тем не менее, мне хотя бы нужен базовый пинок в нужную сторону. Конфиг иксов? Настройки в гуе дровины?

3) Какой максимальной длины возможен кабель до дублирующего монитора? Я в принципе и сам удлинить могу, чай руки не из жопы. Вопрос чисто технический, при какой длине кабеля на мониторе появятся какие-либо какахи и какие?

4) То понятно, что мониторы лучше брать одинаковые и не париться с разницей в разрешениях и частотках. Кстати, какие щас не очень кусачие по цене и вменяемые?

5) Еще мне нужен хардварный рейд. Я хочу сделать рейд на хомяка из двух дисков. И третий железный диск под систему. Как это делается? Тут опять же, готовые команды в консоль мне не нужны, а нужен пинок в правильную сторону. Как инфо, скажу что,изначально, это точно будет дебиан нетинсталл образ.

 , , ,

deep-purple
()

Куда?

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

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

Как пример, форматы статей будут с таким уклоном: Озвучка видео в линуксе и, возможно, при правильной подаче, являться потенциально рекомендоваными к прикреплению в подходящий раздел форума.

Так вот вопросы:

Как оно вообще должно выглядеть с точки зрения модератора? На основании чего будет приниматься решение о правильной подаче?

Где можно увидеть требования к оформлению?

Куда кроме разделов форума может быть прикреплен материал?

Будут/могут ли корректоры принимать участие в доводке материала под требования? Мой скор не позволит сейчас придти завтра и поправить/дописать свой же пост. Плодить новые версии одного поста — 3.14. Это необходимо обойти хотя бы путем вида «корректор, допили мне дверь, вот пила, вот очередная доска».

Вики вроде мертва, да?

 , , ,

deep-purple
()

RSS подписка на новые темы