Pull to refresh
215
0
gribozavr @gribozavr

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

Send message
Ну конечно же только при логине, один раз. Я и не говорил что в каждом сообщении. Как версия клиента может поменяться не разрывая TCP соединение? Никак.
> Поскольку MKV на Eee Pad не лицензирован
Welcome to the Home of Matroska the extensible, open source, open standard Multimedia container. (matroska.org, emphasis mine)
Я где-то говорил что вы плохо пишете? Я сказал, что у вас есть типичная ошибка, которую делают при проектировании протоколов, форматов файлов и прочих форматов кодирования информации: отсутствие поля с версией протокола. Даже если нет поддержки нескольких версий одновременно, это поле всё равно нужно, чтобы старый клиент (например, из кеша, если говорить про веб) не парсил новый протокол, а прямо сказал пользователю «нажми F5» (или дёрнул JS). Или если при деплое вы задеплоите старый сервер и у клиентов начнутся непонятные ошибки (а если протокол поменялся чуть-чуть, они будут только «если пойти туда, иметь при себе то-то и сделать то»). Или если при отладке запустить неподходящую комбинацию. Вариантов того, как могут встретиться неподходящий клиент и сервер — море, а всего одна проверка избавит вас от необходимости совершенно ненужной отладки.
> Тот кто на таких статьях пытается сделать коммерческий продукт как говорится ССЗБ

Значит, вы считаете, что на хабр стоит выкладывать только малоинформативные статьи про то, как сделать полурабочее нечто?

> Можете написать лучше меня? Возьмите и напишите.

«Не нужно быть поваром, чтобы сказать, что суп пересолен.» И откуда вы знаете, что я не пишу?
Местами ерунду пишет. Кто-то его прочитает и сделает как он написал. А мне и вам потом этим пользоваться.
А когда вы научитесь писать? Если статья для профи, которые и так знают как разрабатывать протоколы — то ваша статья им не нужна. Если статья для новичков — то лучше вообще не писать, чем недоговаривать.
> Вполне достаточно при авторизации передать версию клиента и если она старая, то обновить. И без обновления не пускать клиента на сервер.

В простейшем случае — да. Где это в статье?
И ещё, если уж решили изобретать свой протокол, то где поле «номер версии протокола»? «Нет планов развития» — не ответ (это сегодня их нет).
> Что касается бинарных протоколов, то в них нет разметки как в XML или JSON

ASN.1 DER
Нет, процессу другого пользователя посылать сигнал нельзя.
Brainfuck. Полон по Тьюрингу. Показывайте функции.
Проблемы:
* когда перешли от гистограмм к графику, появилась возможность неправильной интерпретации. Измерения являются ежемесячными, а кривая графика непрерывна. Если бы мы измеряли температуру и сделали бы такую линейную интерполяцию, было бы допустимо, потому что температуру имеет смысл измерять в точках между теми, когда мы действительно измеряли. А что значит точка между августом и сентябрём на вашем графике? Чтобы было понятно, я обычно ставлю маркеры в настоящих точках данных.

* на последнем графике не понятно что хорошо, плюс или минус.
ОС, в том числе и *nix, безусловно, контролирует ресурсы. Но есть такая вещь как модель поведения. Так вот, в Windows и *nix модель поведения в ситуации «удалить открытый файл» отличается. Корнями всё уходит в устройство файловой системы: в Windows изначально поддерживалась только FAT, а там у каждый файл мог «находиться» только в одном каталоге. В этом случае системный вызов удаления файла мог означать только одно — удалить данные насовсем. Поэтому Windows запрещает удалять открытые файлы. В *nix изначально поддерживались множественные ссылки на файл из разных каталогов и поэтому системного вызова «удалить файл» как такового нет, есть «удалить ссылку на файл», а данные удаляются после удаления последней ссылки и закрытия файла. Поэтому удавление открытого файла разрешено: ссылка на файл будет удалена из каталога, но программа, владеющая дескриптором, может продолжать с ним работать.

Процесс может удалить связь файла в то время, как другому процессу нужно, чтобы файл оставался открытым. (Даже процесс, удаляющий связь, может быть процессом, выполнившим это открытие).

— Морис Дж. Бах. Архитектура операционной системы Unix, 1986
Спасибо за тест! Разница в 7%… Какая у вас версия gcc?
apt-get install qt4-dev-tools
cd arrays_vs_containers && qmake && make
Если у вас есть 32-разрядная машина с современным gcc, я бы хотел вас попросить провести тесты. Чуть выше я проводил тест на x86-64 и после приведения кода в точное соответствие друг другу получил разницу меньше 1%.
1) Использовать плоский массив (для вектора тоже применимо): arr = new int[n*m]; use(a[i + j * n]); Преимущество: меньше нагрузка на аллокатор. Для больших размерностей аллокатор с большей вероятностью посчитает такой массив как large object и не будет его выделять из своих пулов, а сразу вызовет mmap(). (В то время как одна отдельная строка может и не считаться large object)
и вы таки хотите сказать, что _сервер_ позволит удалить его открытые файлы?

Сразу видно, что вы никогда не работали на *nix. Сначала изучите ОС, а потом пишите такие комментарии.

Я понимаю что так короче, но парсить вывод, предназначенный для пользователя — дурной тон.

Information

Rating
Does not participate
Location
Украина
Registered
Activity