LINUX.ORG.RU

Попытка номер 5(2)

 ,


3

4

Это моя вторая попытка написать клиент-серверное приложение в качестве теста для одной конторы. Меня послали и на этот раз. Внятных аргументов снова не дали, сказали что недостаточно опыта для их задач. В общем выкладываю на общее обозрение мою вторую поделку. В этот раз я подошел, с моей точки зрения, более обстоятельно. Сервер и клиент асинхронные. Компилируются и работают под x86 и amd64. Конвертация порядка байт есть. readme есть хоть и вордовый. Система сборки cmake. Зависимости: boost(вычитка/пересылка всех байт реализована автоматически) и poco. Есть небольшие недочеты: вызывается sleep в основных потоках, но это пофиксить очень просто и не думаю, что это должно как-то влиять на оценку. Использовал пару шаблонов проктирования: медиатор и шаблонный метод. Есть один модульный тест. В общем с моей точки зрения в этот раз все намного лучше, но снова чего-то нехватает, прошу посмотреть и оценить. Прошу в этот раз воздержаться от перехода на личности, особенно это касается анонов.

Ссылка

★★

Походу, при таких типах данных в коде:

struct Session
{
	static char PingType;
	/// Number that is only stored here without being sent and any modifications
	data_type SendValue;
	/// This data is being sent to a server
	DataPackage NetData; 
	/// Length of array that is being received from a server
	static unsigned int ResultLength; 
	/// Result array that is being received from a server
	static std::vector<data_type> Result;
};

вопросы о квалификации соискателя снимаются сами собой. Особенно доставили static-поля.

В общем, какой-то мутный код с заголовочными файлами вот такого вида:

// CommonTypes.h
#ifndef COMMON_TYPES_H
#define COMMON_TYPES_H

#include "DataType.h"
#include "Session.h"

#endif //COMMON_TYPES_H

// DataType.h
#ifndef DATA_TYPE_H
#define DATA_TYPE_H

/// Type of number that is sent to a server
typedef unsigned long long data_type;

#endif //DATA_TYPE_H
а так же поведение ТС в обсуждении еще больше убеждает в том, что здесь была высказана близкая к действительности гипотеза.

PS. Уже не на Java или C# вы раньше программировали?

eao197 ★★★★★
()
Ответ на: комментарий от Booster

окей перепутал с readsome

не отменяет факт, что код г..но.

#define SLEEP_TIME 500 //milliseconds

лол

500 миллисекунд!

	catch (...){}

за это тоже надо п..дь ногами.

anonymous
()
Ответ на: комментарий от anonymous

за это тоже надо п..дь ногами.

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

Booster ★★
() автор топика
Ответ на: комментарий от Booster

малчик, ты написал х..ню и пытаешься выё...ться.

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

anonymous
()
Ответ на: комментарий от Booster

За буфером следит asio. Там нужно только не накосячить с параллельным вызовом такой же асинхронной функции. Или имеешь ввиду что-то другое?

Берешь эталон: вот конкретно такой запрос бинарно выглядит так. Программно генерируешь этот запрос, сравниваешь с эталоном. Вот тебе и еще один тест.

Клиент читает 8 байтное число, а не 8 байт.

А в чем разница? :) UPDЯ все понял, сорри :)

В смысле кодировка имен файлов в кирилице или что? Имена то не в кирилице.

Описание программы, Тестовое задание UNIX.

А каким образом она описывается? UML диаграммы что-ли строить? Что же все так жирно нужно делать.

Я предпочитаю текстом, можно что-нибудь и вроде UML. В клиент-свервеном софте ИМХО самая понятная модель описания – dataflow. Ты начинаешь описание с того, в какой класс/метод приходит запрос и описываешь его жизнь до выхода наружу. Ну и аналогично в клиенте. Это позволит построить в голове твое решение и уже знаючи лезть в конкретные файлы исходников за деталями.

Что же все так жирно нужно делать.

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

staseg ★★★★★
()
Последнее исправление: staseg (всего исправлений: 1)
Ответ на: комментарий от Booster

без каких-либо советов

Вам не советы нужно давать, вас учить нужно. Желательно за деньги.

Чем статики не нравятся?

Тем, что объектов Session у вас создается множество, но вот ResultLength и Result для них всех оказывается общим. Что очень странно и подозрительно.

eao197 ★★★★★
()
Ответ на: комментарий от staseg

А в чем разница? :)

Ну и я тоже не понимаю. Читается 64 битное число.

По остальному согласен.

Booster ★★
() автор топика
Ответ на: комментарий от Booster

точно шизофреник

Какие тебе нужны таймауты если там есть keep alive?

как одно с другим связано?

anonymous
()
Ответ на: комментарий от eao197

Тем, что объектов Session у вас создается множество, но вот ResultLength и Result для них всех оказывается общим. Что очень странно и подозрительно.

И что теперь нельзя мешать статические и нестатические члены в одной структуре? Чего это вдруг?

Booster ★★
() автор топика
Ответ на: комментарий от Booster

keep alive?

OMG! Да ты еще более пробка, чем я думал.

anonymous
()

Все мне надоело тратить время на это говно. Здешние аноны это мегатроли на которых жалко тратиь время. Отписываюсь от этой темы и больше не хожу сюда. Аривидерчи.

Booster ★★
() автор топика
Ответ на: комментарий от Booster

Слабак!

Анивей, твой говносервер легко ддосится отрицательными числами B 5-6 клинетов. Иди читай букварь, чайник.

Олсо он легко ддосится простым питон скпритом, который нарушает протокол :D

напересдачу, короче.

anonymous
()
Ответ на: комментарий от anonymous

ЛОЛ! У клиента еще веселее

В коносле нажимаем Ctrl^D 
...
Sorry, but  is not a valid number.
Sorry, but  is not a valid number.
Sorry, but  is not a valid number.
Sorry, but  is not a valid number.
Sorry, but  is not a valid number.
Sorry, but  is not a valid number.
Sorry, but  is not a valid number.
Sorry, but  is not a valid number.
Sorry, but  is not a valid number.
Sorry, but  is not a valid number.
Sorry, but  is not a valid number.
Sorry, but  is not a valid number.
Sorry, but  is not a valid number.
Sorry, but  is not a valid number.^C

anonymous
()
Ответ на: комментарий от Booster

Снова кода говно, без каких-либо советов.

Подтверждаю: говно.

Чем статики не нравятся?

Неужели ты сам не догадываешься?

Manhunt ★★★★★
()
Ответ на: комментарий от Booster

Маня возвернулась! Валерьяночки принял? Давай попытку номер3, где тебя опять не возьмут, выкатывай.

anonymous
()
Ответ на: комментарий от Booster

лайв трансляцию с самовыпилом не забудь навернуть...ахаха

тупую тряпку по полу возят он еще возникает

иди выпиливайся нытик

sup9999
()

Это моя вторая попытка... Меня послали и на этот раз.

Быстро отвалил или ты считаешь у нас тобой может получится разгоовр, троль поганый.

я думаю, проблема не в коде

reprimand ★★★★★
()
Ответ на: комментарий от reprimand

Говно

Код - говно, аффтар - говно, анонимусы - сила!

anonymous
()
Ответ на: комментарий от Manhunt

хм, я до тех постов еще не дошел... Думал вдруг есть ссылка на весь архив его поделия

Практически не знаю С++, только лишь в С могу разобраться.

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

reprimand ★★★★★
()
Ответ на: комментарий от Manhunt

проблема в реакции на мир вокруг.
всего лишь...
а все остальное можно поправить.

rgB
()
Ответ на: комментарий от sup9999

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

иди выпиливайся нытик

А тебе не по барабрану вообще? Ты что меня знаешь или принимаешь виртуальный мир за реальный? Ты тряпка не лучше, сидишь и тратишь время на всякие ахахаха. Или ты считаешь твои ахахах способны меня вывести из себя? Убогие людишки.

Booster ★★
() автор топика
Последнее исправление: Booster (всего исправлений: 1)

4 страницы, а код на открытый файлообменник до сих пор никто не выкинул.

Позор!

anonymous
()
Ответ на: комментарий от anonymous

Не только не открыл, но и закрыл на google drive.Тема то уже закрыта, по причине непомерного срача и скатывания на личности.

Брысь

Сгинь, нечисть!

Что троллина жирная не нравится.

Booster ★★
() автор топика
Последнее исправление: Booster (всего исправлений: 1)
Ответ на: комментарий от Manhunt

В нем какой-то смысл появляется только в сочетании со специальной настройкой MMU. https://www.kernel.org/doc/Documentation/volatile-considered-harmful.txt

Ну, так там про платформозависимые штуки типа барьеров. Если они под рукой, то это конечно лучше. А в стандартных C/C++ - позор! - нет способа иначе справиться с врожденной семантикой синхронного исполнения кода.

// Если конечно не появилось чего-то за последние годы, не следил.

anonymous
()
Ответ на: комментарий от sup9999

Братюнь, чего это тебя так бомбануло?

Зря ты на первом курсе универ бросил! Сейчас был бы уже Сениуором и ж-пы вылизывали бы тебе.

anonymous
()
Ответ на: комментарий от Manhunt

Неужели ты сам не догадываешься?

Не догадываюсь, просвяти плиз. Я серьезно.

Тем, что объектов Session у вас создается множество, но вот ResultLength и Result для них всех оказывается общим. Что очень странно и подозрительно.

Тратить лишнюю память, чтобы только небыло подозрительно?

Booster ★★
() автор топика
Ответ на: комментарий от anonymous

Да, ддосится и что? В следующий раз не будет, спасибо за тестинг.

Booster ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.