neomer / binc Goto Github PK
View Code? Open in Web Editor NEWBasic International Network Currency
License: Apache License 2.0
Basic International Network Currency
License: Apache License 2.0
Должны поддерживаться следующие функции:
Работа с блокчейном
Создать класс class BaseException : public std::exception
и унаследовать все исключения, которые в данных момент наследуются от std::exception
на этот класс. Добавить в нем поддержку и корректное отображение QString.
Создать класс class TextProcessingException : public BaseException
расширение с возможностью указания номера строки/символа вызвавшего исключение.
Провести рефакторинг кода и убрать всю работы напрямую с std::exception
на работу через указанные выше классы.
в методе void Context::load()
вместо if (!settingFile.exists()) { throw ContextException("Configuration file not found!"); }
сделать корректную генерацию файла настроек с конфигурацией по умолчанию
В методе void IJsonSerializable::fromString(IJsonSerializable *object, QByteArray data)
не проверяется результат десериализации.
Внутри #42 появляется интерфейс #include <core/IIdentifyed.h>
, который представляет собой консолидацию методов для работы с сущностями имеющими идентификатор : Guid.
В связи с этим необходимо провести рефакторинг кода и унаследовать все подходящие под определение сущности от этого интерфейса.
Добавлено при #29
В методе void AbstractHTTPRequest::parse(QByteArray data)
выполняется проверка валидности HTTP запроса с помощью регулярного выражения
if (httpReqValidator.indexIn(sData.left(sData.indexOf('\n'))) == -1)
{
throw HTTPParsingException(0, "Data is not valid HTTP request!");
}
возможен вариант, когда запрос не является HTTP запросом, а строка будет передана в теле сообщения для обхода этой валидации.
Возможное решение проблемы - запоминать индекс первого вхождения регулярного выражения и отбрасывать всю информацию до этого вхождения.
Изменить с
class NetDataStreamException : public std::exception
на
class NetDataStreamException : public DataStreamException
Добавить в класс HTTPResponse доступ к Url, Query
При запуске Chat формируются одинаковые Guid для ConsoleInput и для UdpStream
в файле HTTPgetRequest не реализована возможность указания порта в заголовке Host.
изменить строку: "Host: " + getUrl().host() + "\r\n"
Должны поддерживаться следующие функции:
Класс должен содержать общие элементы для разных модулей системы
Сделать базовый абстрактный класс IMessageWithHeaders
Класс должен содержать виртуальный метод для статусной строки, реализовывать который должны потомки.
В нем же реализовать следующие методы
IMessageWithHeaders::compile()
,
IMessageWithHeaders::compileHeaders()
,
IMessageWithHeaders::setHeader(QString, QString)
,
IMessageWithHeaders::header(QString)
Унаследовать классы HTTPRequest, HTTPreponse от этого класса, выпилить весь повторяющийся код.
Приложение как клиент должно
Приложение как сервер должно
При запуске встать на прослушивание указанного в настройках порта, ожидая подключение к нему по протоколу HTTP.
Парсить HTTP-запрос.
При подключении и запросе списка узлов выдавать все известные активные(?) узлы.
В классах работы с HTTP проверить где версия http прописана константой. Вместо этого необходимо использовать IHTTPMessage::getVersion()
В класс IDataBlock и всем его наследникам реализовать возможность работы с блоками данных разбитыми на несколько пакетов.
Возможно ввести еще 1 слой абстракции, который бы разбивал IDataBlock на несколько сетевых пакетов.
в void INetMessageWithHeaders::parse(QString data)
при парсинге происходит ошибка определения конца блока заголовков.
Парсинг идет до тех пор, пока в сообщении есть \r\n, при этом не отрабатывает двойной перенос каретки и тело сообщение воспринимается как заголовок, если в нем присутствует символ ":".
В функции
HTTPResponse HTTPClient::get(QUrl url)
Есть инициализация QTcpSocket *socket = new QTcpSocket();
добавить удаление, так как потенциально приводит к утечке памяти.
Выпилить из интерфейса IJsonSerializable
статические методы и перенести из в другой класс.
Создать сериализуемый класс для хранения настроек приложения.
Доступ к классу осуществлять через класс Context.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.