Pull to refresh
16
-1
Юрий @frazer

Программист

Send message

Такое впечатление, что никто не понял смысл поста, Павел не говорил о том, что будут платить меньше, что не будут платить или что будут платить мало. В МТС, хорошие зарплаты и хорошие премии, я помню, за год 3 раза премии выплачивались и даже когда, и не должны были, под новый год по инициативе МТС, были выплачены дополнительные премии. Павел говорил, что кроме денежных вознаграждений, что в МТС и так хорошо, есть еще много других факторов. Если работа не интересная человеку, то работать хорошо он никогда не будет, сколько ему не плати. Кроме того, атмосфера и взаимоотношение в коллективе должна соответствовать. Что касается МТС, это была как одна большая семья, где уютно и комфортно. Когда просили работать в ночь, из-за жестких сроков, это воспринималось позитивно, так-как задачи были интересные и все работали за общий результат.

Если мы говорим о Linux и FreeBSD, то нужна версия OpenSSL с поддержкой SCTP, по умолчанию в системе он собран без этой поддержки. Понятно, что не всем она нужна, но моей задачей была показать работу всех возможностей библиотеки на данном этапе. После реализации HTTP/2, сделаю сборку с поддержкой динамических библиотек из системы, для тех кому не нужны SCTP, может и репозитории сделаю, как я понял проект никому не понравился.

Хорошая идея с названием, мне нравится, изменил заголовок.

Потому, что это и есть конструктор протоколов, что есть вся базовая составляющая, а реализация протокола лежит на плечах разработчика. Как вы по другому представляете конструктор протоколов? На каком-то языке разметки описать сколько байт отправляется в какой момент и куда? Так, это все тоже самое, протоколы могут быть очень сложные и реализация даже того же "ping" в каждом протоколе будет своя, и за вас ни один генератор этот код не напишет. Здесь все как я вижу придрались к заголовку поста, что это мол не конструктор, а что тогда конструктор? Хоть бы кто пояснил. Я скорее прихожу к выводу, что либо не поняли суть проекта, либо не понимают понятия конструктора или вообще не знают что хотят.

Документацию сделаю

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

Для этого есть пример который разбит на разные виды сокетов (sample) UDP/TCP/UnixSocket ...

TCP клиент
#include <client/sample.hpp>

using namespace std;
using namespace awh;

class Client {
	private:
		log_t * _log;
	public:
		void active(const client::sample_t::mode_t mode, client::sample_t * sample){
			this->_log->print("%s client", log_t::flag_t::INFO, (mode == client::sample_t::mode_t::CONNECT ? "Connect" : "Disconnect"));
			if(mode == client::sample_t::mode_t::CONNECT){
				const string message = "Hello World!!!";
				sample->send(message.data(), message.size());
			}
		}
		void message(const vector <char> & buffer, client::sample_t * sample){
			const string message(buffer.begin(), buffer.end());
			this->_log->print("%s", log_t::flag_t::INFO, message.c_str());
			sample->stop();
		}
	public:
		Client(log_t * log) : _log(log) {}
};

int main(int argc, char * argv[]){
	fmk_t fmk;
	log_t log(&fmk);

	Client executor(&log);

	client::core_t core(&fmk, &log);
	client::sample_t sample(&core, &fmk, &log);

	log.setLogName("SAMPLE Client");
	log.setLogFormat("%H:%M:%S %d.%m.%Y");

	sample.mode(
		// (uint8_t) client::sample_t::flag_t::NOINFO |
		(uint8_t) client::sample_t::flag_t::WAITMESS |
		(uint8_t) client::sample_t::flag_t::VERIFYSSL
	);
	core.sonet(awh::scheme_t::sonet_t::TCP);
	core.affiliation(awh::core_t::affiliation_t::PRIMARY);

	sample.init(2222, "127.0.0.1");
	sample.on(bind(&Client::active, &executor, _1, _2));
	sample.on(bind(&Client::message, &executor, _1, _2));

	sample.start();

	return 0;
}

Т.е. пример без реализации какого-либо протокола вообще, я специально его расписал на множество видов подключения, там есть прием данных и отправка, дальше идет своя реализация. Да документация нужна по самой библиотеки и до неё руки ещё не дошли, но обязательно сделаю. В принципе на данный момент примеры довольно простые и с комментариями и человек работающий с C++, должен быстро разобраться.

Про реализацию своего стороннего протокола идея интересная

AWH это готовый клиент/сервер (не важно какой протокол) которые можно объединять, комбинировать, при этом легко например переходить от TCP к UDP или SCTP. При этом сжатие и шифрование данных уже реализовано, все это львиная доля работы в любом проекте клиент/серверной разработки, а реализация самого протокола дело тривиальное. LibEvent используется только как событийный фреймворк и не более. Библиотеки используются только стандартные, такие, какие нет смысла писать самому, например: OpenSSL, Zlib и прочее, эти же библиотеки используют все проекты, такие как Nginx или Curl, последний так и вообще использует столько зависимостей, что только их собрать уже подвиг. В отличии от остальных проектов, я реализовал статическую сборку, т.е. конечный проект будет без зависимостей вообще, как раз факт использования сторонних библиотек будет скрыт.

А что поправить, то что вы описали так это и работает, вы сами решаете как передавать данные, протокола тут нет, я не навязываю протокол, я на оборот показал реализацию нескольких различных протоколов на основе AWH, как это работает, а не предоставил пакет нескольких сервисов в одной библиотеке.

Именно так это и работает, с помощью библиотеки вы создаёте свой протокол, конструктор - это набор элементов позволяющий создать то что вы хотите, т.е. только платформа. Если вы как-то понимаете это иначе, пусть так, вопрос философский.

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

Ну в данной задаче аппаратная защита, вряд ли даёт преимущества, зашифрованным 256 битным ключом или даже 512 битным, уже не взломать. Вы имеете в виду защита от взлома бирнарника, после применении утилиты Envelope ?

А зачем использовать Sentinel, если есть OpenSSL и можно шифровать/дешифровать свободно и все ограниченно только личной фантазией?

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

1. сколько сутки идет дождь — Все слова верные, контекст не верен, если нажать кнопку проверить то этот контекст будет выделен синим
2. получилась посчитать — Аналогично пункту 1
3. он снул на диване — тоже самое, словно «снул» существует и означает умирать, засыпать.
4. онснулрукувреку — Сплит слов с ошибками не гарантирован, может просплитить а может и нет, здесь множество факторов влияет. Если ввести верный контекст то сплитит правильно: онсунулрукувреку => он сунул руку в реку
Версия для Python скоро будет, я сообщу. Конечно надо тестировать на датасете а не руками. В razdel разве есть датасет для французского языка?
Послушайте себя, это не конструктивный диалог. Может мы перестанем играть в угадайку? Пришлите конкретный результат, собственно тестирование я просил уже много раз. Вы же не знаете как он работает но зато много предположений. Если будут ошибки, я буду исправлять. Я ни разу не преподносил токенизатор как панацею от всех болезней и сразу сказал, что возможны баги.

Насчёт нормализации текстов don't -> do not — это не задача токенизатора, это совершенно уже другой продукт.

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

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

На самом деле в ALM два токенизатора, вернее есть надстройка над основной токенизатор которая используется отдельно. Токенизатор доступный как инструмент помимо языковой модели, выдает только токены которые он отловил, именно его работу я показывал. Надстройка в языковой модели уже выполняет распределение этих токенов по классам.

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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity