Как стать автором
Обновить
34
0
Василий @qdx

Пользователь

Отправить сообщение
Как минимум было бы хорошо, если бы поправили воспроизведение видео.
Проблема подобного решения: а что если, сайт\блог закрыли? Искать в веб архивах? Насколько я понимаю Evernote хранит копию, и делает полнотекстовый поиск по контенту.
QNetworkAccessManager — высокоуровневая обертка над сокетами. Я думаю, что в большинстве случаев, будет достаточно этого класса, в котором многие вещи уже сделаны за нас, например, уведомление о прогрессе. Я понимаю, что можно сделать самому, но гораздо проще связать прогресс бар с этим сигналом и забыть. То же касается многих вещей по мелочи, вроде авторизации, куков и т.п.

Пример из статьи переписанный с QNetworkAccessManager, так как считаю, что пример из статьи стоит убрать из-за неактуальности. Было бы отлично, если бы Вы переписали этот пример с сокетами, для полноты картины :-).

Handler::Handler(QObject *parent) : QObject(parent)
{
    manager = new QNetworkAccessManager(this);
}
void Handler::doHttp()
{
    QNetworkRequest request;
    request.setUrl(QUrl("google.com"));
    QNetworkReply *reply = manager->get(request);
    connect(reply, SIGNAL(finished())this, SLOT(requestFinished()));
    connect(reply, SIGNAL(error(QNetworkReply::NetworkError))this, SLOT(requestError(QNetworkReply::NetworkError)));
}
void Handler::requestFinished()
{
    QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
    QByteArray bytes = reply->readAll();
    QString stringData(bytes);
    qDebug() << stringData;
    reply->deleteLater();
}
void Handler::requestError(QNetworkReply::NetworkError error)
{
}
А в чем проблема? QNetworkReply является QIODevice, т.е. нет никакой проблемы скормить его тому же QJson. Конечно, пример выше сильно упрощен и на реальном проекте скорей всего понадобятся подписки на сигналы QNetworkReply для того чтобы, например, читать данные как только они готовы, следить за процессом и т.п.
Странно, как по мне как раз наоборот. Пример из документации для GET:

QNetworkAccessManager *manager = new QNetworkAccessManager(this); connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*))); manager->get(QNetworkRequest(QUrl("http://qt-project.org")));

Или, тут когда-то давно писал про POST.
На Qt, если совсем по простому, то лучше использовать QNetworkAccessManager.
Теперь на днях я решил прикрутить этот код к юзабельному интерфейсу, с PyQt4, мой первый опыт работы с написанием графики…
self.labelFilename.move(10, 5)


Изучите как работает QLayout в Qt, который позволит избежать ручного размещения компонентов по координатам и добавит опциональную «резиновость» интерфейсу.
И заодно можно посмотреть QDesigner, чтобы понять как работает каждый из видов Layout, да и в целом я советую разрабатывать UI там, чтобы скрыть сотни строк шаблонного кода.
// отсоединяемся от сигнала, на время установки элементам флажков
disconnect(standartModel, SIGNAL(itemChanged(QStandardItem*)), this, SLOT(slotModelItemChanged(QStandardItem*)));

У QObject есть метод blockSignals, придуманный как раз для этого. Удобного создать «умную структуру-глушилку» — в конструкторе блокируем сигналы, в деструкторе разблокируем.

// присоединяемся к сигналу
disconnect(standartModel, SIGNAL(itemChanged(QStandardItem*)), this, SLOT(slotModelItemChanged(QStandardItem*)));

Тут, наверное, имелось ввиду — connect. Знаю опечатка, но в данном контексте думаю уместно указать.

(void)parent;
(void)start;
(void)end;

Возможно, вопрос стиля, но в Qt для этого есть макрос Q_UNUSED.

У QComboBox есть метод setModel(), думаю стоило написать свою модель и не подписываться на событие rowsInserted, так как в этом случае список выбранных элементов хранился бы на уровне модели, где ему и место.

Полностью согласен с написанным в статье, и хочу добавить, если только начинаете попробуйте StrongLifts 5x5(не имею ничего общего с этим проектом). Отзанимался 12 недель по программе и набрал порядка 8 килограмм мяса при соответствующем питании. Общая идея — не стоит сильно заморачиваться на изолированных упражнениях, а нужно тупо делать базу: присед, становая тяга, жим лежа.
Также подтверждаю, что самое сложное — это умять такое количество еды.
Все относительно.
Конечно есть и шаблоны — много ли их? — встречаются, да и сам иногда пишу небольшие.
Вопрос в другом — в какую сторону смотреть, чтобы ситуацию улучшить, вот раньше упоминали модульность, которой как таковой в проекте сейчас немного, может есть у кого опыт постепенного обновления архитектуры проекта?
Только недавно интересовался подобной информацией относительно больших C++ проектов, но к сожалению информации не так много.
Было бы интересно узнать о той оптимизации кода, которую провели на начальном этапе.
На данный момент работаем над проектом, архитектура которого не самая удачная и требует реорганизации, но из-за размеров (более 300 проектов в солюшене) провести мгновенную оптимизацию невозможно. На текущий момент, пересборка проекта, с IncrediBuild занимает порядка 1.5 часа, иногда больше.
Может быть есть у кого подобный опыт, чтобы подсказать в какую сторону копать, и как постепенно привести проект к более лучшей организации, и как результат уменьшить время сборки?
P.S проект написан на C++, платформа Windows.
Если Вы имели ввиду последнее изображние из поста, то это лог IncrediBuild.
Я думаю не стоит в архив паковать .DS_Store.
mejedi осмелюсь предположить, что Вы, наверное, использовали код вроде этого(взял пример из HIDRAW API):
/* Linux */
#include <linux/types.h>
#include <linux/input.h>
#include <linux/hidraw.h>

/* Unix */
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

/* C */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>

const char *bus_str(int bus);

int main(int argc, char **argv)
{
	int fd;
	int i, res, desc_size = 0;
	char buf[256];

	/* Open the Device with blocking reads.*/
	fd = open("/dev/hidraw0", O_RDONLY);

	if (fd < 0) {
		perror("Unable to open device");
		return 1;
	}

	memset(buf, 0x0, sizeof(buf));

	/* Read data from the device */
	while (1)
	{
		res = read(fd, buf, 16);
		if (res < 0) {
			perror("read");
                        break;

		} else {
			printf("read() read %d bytes:\n\t", res);
			for (i = 0; i < res; i++)
				printf("%hhx ", buf[i]);
			puts("\n");
		}
	}

	close(fd);

	return 0;
}

Я же говорю о коде автора, который не использует HIDRAW API и читает напрямую файловым потоком C++, отсюда и загрузка процессора.
Поэтому прошу tsymbaliuk обратить внимание на этот код, и использовать его, предварительно поправив тело цикла свою т.к. данный код просто читает полученные данные и выводит их.
P.S я не системный программист, но было бы очень интересно узнать, почему код, который я привел, производит только чтение, но все равно требует прав рута для открытия устройства?
Хм, либо я что-то недопонимаю, либо все таки чтение происходит постоянно, а иначе как мы еще можем получить уведомления, что что-то изменилось?
P.S собрал, запустил — 100% загрузка ядра.
Решение конечно работает, но такие бесконечные циклы могут намертво повесить систему, вот и сейчас, если запустить Вашу программу, то на 2-х ядерном процессоре, 1 ядро будет загруженно на 100%
Забавно, но не рекламы ради, посмотрите на дату моего поста. Не стал сюда писать из-за того, что особо описывать то и нечего :-).
На офсайте можно качать по прямой ссылке.
Соглашусь, так как если ничего не разрабатывается, то и шумихи никакой не будет.
Но с другой стороны, лично мне ничего неизвестно, что там в той же военке, ведь Россия достаточно много тратит денег на нее, хотя нет никаких гарантий того, что эти деньги не уходят в пустую.
Еще мне кажется стоит отметить, что вся эта шумиха вокруг заморского космоса существует благодаря какой не какой, а открытости разработок той же NASA. У нас же все так или иначе государственное относят к военке, а там все закрыто.
Например, марсоход Curiosity: помимо фотографий, разработчики также рассказали о том, что код программы написан на Си и для какого микропроцессора, казалось бы — мелочь, а ведь сколько ретвитов и репостов было об этом, да и самому было интересно узнать о том, как, даже очень абстрактно, ведется разработка таких проектов.

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

Информация

В рейтинге
Не участвует
Откуда
Bayern, Германия
Зарегистрирован
Активность