Privacy policyContactsAbout siteOpinionsGitHubDonate
© EVILEG 2015-2018
Recommend hosting
TIMEWEB
Jan. 23, 2019, 8:32 a.m.

Linux

Wine, Linux

Wine 4.0 теперь официально доступен как новый ежегодный стабильный выпуск Wine для запуска программ и игр для Windows в Linux и других операционных системах.

Dec. 2, 2018, 2:58 p.m.

Linux

Linux, Bash, getopts

When developing a site to automate the deployment process, I wrote several bash scripts.

To customize the behavior of scripts, I use the transfer of arguments, which are handled in the bash script by the getopts library.

a
Sept. 25, 2018, 8:51 a.m.
avovana

Здравствуйте, дорогие форумчане! Сделал специальную тему для такого вопрос.


У меня Debian 9.5.

Моё приложение не получилось запустить с помощью утилиты systemd.

Писал, что

QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
qt.qpa.screen: QXcbConnection: Could not connect to display 
Could not connect to any X display


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

Посмотрел в сторону обычной автозагрузке - Desktop Entry Files. Статья есть на этом сайте.

Автозагрузка прошла успешно. Но мне нужен еще и рестарт программы при её закрытие, крушение.


Посмотрел в сторону supervisor . Думал, что она меня спасет. Но нет. После переделывания тестового примера и попытки запуска получил тоже:

QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
qt.qpa.screen: QXcbConnection: Could not connect to display 
Could not connect to any X display.


Вот мой скрипт:


Файл: /usr/local/bin/long.sh                       

#!/bin/bash
/opt/control_block/b/bin/control_block

Вот кофиг:

Файл: /etc/supervisor/conf.d/long_script.conf

[program:long_script]
command=/usr/local/bin/long.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/long.err.log
stdout_logfile=/var/log/long.out.log

Не могли бы помочь, почему не хочет подключиться к X-Server?

Вручную запустить могу. Переменная DISPLAY установлена.


Здесь говорится о такой проблеме. Приводится код для устранения. Но и упоминается, что это:

QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
qt.qpa.screen: QXcbConnection: Could not connect to display

всего-лишь warning.

Aug. 9, 2018, 8:29 a.m.

Linux

Bash, rsync, Linux

During the development of the site on Django had to start to understand the Bash scripts to automate routine tasks. For example, creating and downloading a database dump from a site, as well as reserving media files.

We assume that you already have access to the server via ssh , and your user on the server that manages the site has access rights, with which he can dump the database.

Aug. 7, 2018, 7:10 a.m.

Linux

Git, Fun, Linux

Just for fun.

What can programmers measure? Of course, with their commits, at least their number in the Git repository.

To do this, you can use the git shortlog command, which summarizes the output of git log, providing a more concise output.

Options

This command has several options, but we use only two of them

-n
--numbed

Sorting output in accordance with the number of commits on the author

-s
--summary

Suppress the description of the commit and provide only the summary counter.

Jan. 9, 2018, 9:45 a.m.
Ruslan Polupan

Делаю небольшую утилиту по работе с базой Fierbird.

Под MinGW на win компилировалось без проблем.
На работе попробовал собрать про Linux выдало следующее:
Warning: Qt has caught an exception thrown from an event handler. Throwing
exceptions from an event handler is not supported in Qt.
You must not let any exception whatsoever propagate through Qt code.
If that is not possible, in Qt 5 you must at least reimplement
QCoreApplication::notify() and catch all exceptions there.

Подозреваю что что-то с потоками. Ибо только начал с ними разбираться. В потоке создаю подключение к базе данных для дальнейшего использования.

Класс подключения который передаю в поток.

dbaseconnect.h

#ifndef DBASECONNECT_H
#define DBASECONNECT_H

#include <QObject>
#include <QMap>

class DBaseConnect : public QObject
{
    Q_OBJECT
public:
    explicit DBaseConnect(QMap<QString,QString> opt, QObject *parent = nullptr);
signals:
    void connectionError(QString errorMeaage);
    void fin();
    void sendStatus(bool);
public slots:
    void createConnection();
private:
    QMap<QString, QString> config;
};

#endif // DBASECONNECT_H
dbaseconnect.cpp
#include "dbaseconnect.h"
#include <QtSql>
#include <QDebug>

DBaseConnect::DBaseConnect(QMap<QString,QString> opt, QObject *parent) : QObject(parent)
{
    config = opt;
}

void DBaseConnect::createConnection()
{

    ///Подключаемся к базе данных АЗС
    QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE","central");
    db.setHostName(config.value("server"));
    db.setDatabaseName(config.value("basename"));
    db.setUserName(config.value("login"));
    db.setPassword(config.value("password"));
    if(!db.open()) {
        emit sendStatus(false);
        QString errorString =  db.lastError().text();
        qDebug() <<  "Не возможно подключиться к базе данных." << endl << "Причина:" << errorString;

        emit connectionError(errorString);
        emit fin();
    }
    emit sendStatus(true);
    emit fin();
}

Подключение по кнопке в диалоге со писком подключений.
void ConnectionDialog::on_pushButtonConnect_clicked()
{
    thread = new QThread;
    progress = new QProgressDialog();
    isConnected =true;
    progress->setWindowModality(Qt::WindowModal);
    progress->setLabelText("Подключение к центральной базе данных...");
    progress->setCancelButton(0);
    progress->setRange(0,0);
    progress->setMinimumDuration(0);

    database.insert("server", ui->lineEditServer->text().trimmed());
    database.insert("basename",ui->lineEditDataBase->text().trimmed());
    database.insert("login",ui->lineEditLogin->text().trimmed());
    database.insert("password",ui->lineEditPassword->text().trimmed());

    DBaseConnect *dbConn = new DBaseConnect(database);

    connect(thread,SIGNAL(started()),this,SLOT(startDBConnect()));
    connect(thread,SIGNAL(started()),dbConn,SLOT(createConnection()));
    connect(thread,SIGNAL(finished()),this,SLOT(finishDBConnect()));
    connect(dbConn,SIGNAL(sendStatus(bool)),this,SLOT(getStaus(bool)));
    connect(dbConn,SIGNAL(connectionError(QString)),this,SLOT(errogConnectInfo(QString)));
    connect(dbConn,SIGNAL(fin()),thread,SLOT(terminate()));


    thread->start();
    dbConn->moveToThread(thread);
}
Слоты
void ConnectionDialog::startDBConnect()
{
    progress->show();
}

void ConnectionDialog::finishDBConnect()
{
    progress->cancel();
    if(isConnected) {
        this->accept();
    }
}

void ConnectionDialog::errogConnectInfo(QString str)
{
    QMessageBox::critical(0, qApp->tr("Не могу открыть базу данных"),
                              QString("Не могу установить соединение с центральной БД!\nПричина: %1\n Проверьте настройки подключения.").arg(str),
                              QMessageBox::Ok);
    isConnected=false;
}

void ConnectionDialog::getStaus(bool status)
{
    isConnected =status;
}

Подскажите что я делаю не так.

ЗЫ: Программирование это для меня небольшое хобби. Так что буду рад любым комментариям.
Jan. 16, 2017, 7:08 p.m.
Arrow

Доброго времени суток!

Подскажите, пожалуйста, как можно корректно в Linux перевести размер папки с байт в килобайты.

Проблема вот в чем:

1. Вычисляю суммарный размер папки с вложенными в нее папками в байтах.

2. Перевожу с байт в кБ, МБ, ГБ и т.д. простым делением в цикле размера в байтах на 1024. (Пропускаю "ссылку" на текущий и родительский каталог - " . " и " .. ").

3. Вывожу результат и перепроверяю его в Nautilus через свойства папки и получаю несовпадение (мое значение меньше).

В Windows все корректно работает.

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

Не могу понять где проблема.

P.S. Размер пустой папки в Linux - 8,0 КБ.

k
Jan. 15, 2017, 11:25 a.m.
kost_3

Есть приложение, написаное на qt, которому могут понадобиться root права при выполнение некоторых действий. Так вот, как это организовать?
P.S Нужно примерно как на картинке (при нажатии на кнопку "Разблокировать" открывается окно для ввода пароля)

Sept. 14, 2016, 5:18 p.m.

Linux

Linux, VDS, Ubuntu

Because a develop the resource EVILEG, I decided to move it to the domain COM, and transfer the website from CMS Wordpress to the framework Django. With Ruby On Rails somehow it did not work out, but with the Django process has gone almost immediately.

I did not choose another hosting, and I stayed with the current hosting TIMEWEB , by the way recommend to those who have not yet decided on his future hosting VDS.

And now we go to the initial setting up access to VDS, which provides TIMEWEB.

Aug. 25, 2016, 5 p.m.

Linux

Linux, 25 лет, Linux Kernel

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

В версии ядра 4.6 можно увидеть около 13,517 патчей влитых за 63 дня, что равно рекорду, установленному версией 3,15 в объёме 13,722 патчей 8 июня 2014.

Но изменения в ядро вносятся сломя голову последние 15 месяцев, с количеством в более чем 3 миллиона строк, добавленных в ядро Linux со скоростью 7,8 изменений в час.

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

Седьмое издание этого отчёта детализирует информацию по разработчикам, внёсшим вклад в ядро, и компаниям, в которых они работают, и наиболее важные изменения сделанные в коде в процессе разработки ядра с версии 3.18. Данные охватывают в основном разработку с последнего отчёта в Марте 2015 -- версии с 3.19 по 4.7 -- но некоторая статистика охватывает и 2005 год, когда разработка была перемещена в Git репозиторий, и даже охватывает первый выпуск Линуса Торвальдса в 1991 году.

МБ
April 21, 2019, 9:40 a.m.
Моисей Бушуев

Qt - Test 001. Signals and slots

  • Result:0points,
  • Rating points-10
AA
April 17, 2019, 7:40 p.m.
Anton Ablin

Qt - Test 001. Signals and slots

  • Result:73points,
  • Rating points1
E
April 17, 2019, 6:16 p.m.
Evgeny

Qt - Test 001. Signals and slots

  • Result:100points,
  • Rating points10
Last comments
April 21, 2019, 4:22 p.m.
Евгений Легоцкой

Через метод setIcon table.horizontalHeaderItem(0).setIcon("qrc://path/to/icon.png")
April 21, 2019, 3:48 p.m.
Евгений Легоцкой

Добрый день! Спасибо за комментарий. Там действительно лучше будет сделать с инициализацией по умолчанию.
U
April 18, 2019, 3:37 p.m.
Unreal_man

А как иконку в хедер задать?
u
April 18, 2019, 2:15 a.m.
uaa

доброго времени,большое спасибо за пример для начинающего)при адаптации к своему проекту столкнулся с таким ньансом:в vepolyline.h в 47 строке нужна инициализация по умолчанию: int m_pointF...
E
April 11, 2019, 12:49 p.m.
Evgeny

Спасибо за ответ) У меня компоновщик на нее ругался просто. Оказалось, просто забыл Q_OBJECT в начале класса указать.
Now discuss on the forum
April 23, 2019, 6:39 p.m.
BlinCT

Вопрос закрыт) проблема найдена
April 21, 2019, 4:16 p.m.
Евгений Легоцкой

Приветствую Нужно сохранять где-то выбранное значение, а потом восстанавливать его. Или использовать QSettings или добавить метод open(), в который передавать начальные значения для того...
R
April 19, 2019, 9:55 a.m.
RED_Spider

мені важко це зараз навіть перевірити, тому що знайшов коміт, це ще було в 2016 році, і цей код не буде працювати коректно зараз, єдине скажу що це були QThread
i
April 17, 2019, 3:03 p.m.
ilya.guzikov

BlinCT, на стороне ++ это делать необходимо так как в qml при использовании функции append происходит перерисовка всех точек лини(как я понимаю) и из-за этого при использовании больших массиво...
Join us in social networks

For registered users on the site there is a minimum amount of advertising