LINUX.ORG.RU

Сообщения bober

 

Есть ли какие-то зависимости от архитектур в результате приведения большего типа к меньшему?

Вот пример

unsigned i = string::npos;
assert(numeric_limits<unsigned>::max() == i)

На всех ли архитектурах (x86, arm, mips, прочие архитектуры с прямым и обратным порядком байт) справедливо i == numeric_limits<unsigned>::max() ?

 

bober
()

Не работает загрузка аватарки на ЛОРе.

Говорит что «Запрошенный Вами URL не был найден на этом сервере».

 ,

bober
()

Что за такая практика (дурацая?) писать юнит тесты не автрам кода?

Работаю удалённо, но в нашей небольшой компании юнит-тесты к своему коду пишет непосредственно разработчик кода.

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

«ведущие"разработчики пишут код.

Менее эффективных разработчиков отправляют покрывать всё юнит-тестами.

Уточню - это именно про юнит тесты конкретных модулей/частей программы. Это не про отдельных специалистов-тестеров, которые, наверное, используя какие-то своим собственные методологии тестируют продукт, не имея при этом скиллов разработчика (пока не довелось работать в компаниях где прям отдельные тестеры -недевелоперы имелись бы в штате, но именно так я их представляю, как специалистов, работающих по каким-то методологиям, а не в тупую тыкающих на кнопочки продукта, и речь не о них)

Вернемся к теме того что авторы кода не пишут к нему тесты.

Разве это нормально? Очевидно же что именно автор кода может (и должен) подробно проверить свой собственный метод, класс, модуль, прежде чем переключить свой контекст своего мозга на дельнейшие задачи, ибо именно он лучше всех знает то что должно приходить на вход и выходить на выходе как правильный результат. Именно он знает что есть ошибка а что нет.

И если за него обнаружат баг а он уже делает n+1 задачу -будет дороже его пофиксать же.

Зачем привлекать к написанию тестов людей которые:

1. должны будут где-то узнать что должно входить (контракты), и что на выходе есть ок а что не ок (это им придется тратить время, а если документации нет (как правило) - то дергать автора кода, и тормозить его этим)

2. в некоторых случаях им придется создавать искусственно окружение для тестирования. А у автора оно по любому было на момент разработки.

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

Или это как-то оправдано в компаниях где в приоритете время релизов а не качество продукта?

Объясните.

 , ,

bober
()

Хочу всеядный класс исключений, который не порождает сам исключения :)

Вопрос про хорошие пользовательские классы исключений в Си++.

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

Это конечно не какой-нибудь дамп многострочный, который наверное должен создаваться не через e.what() а через что-то специальное. Но хотелось бы чтобы в исключение можно было напихать как минимум char*, string, и любые другие от bool до double нативные типы. Потому что кажется что это было бы очень удобно с точки зрения использования:

throw SomeException() << "blabla " << "index " << i << " array_size" << arr.size() и т.п.

Ну и вот теперь вопрос - кто-нибудь такое делал, и как вы это сделали?

Это достаточно легко сделать средствами STL, берём std::string, берем std::to_string() и ура, если для числовых типов обернуть шаблоном, то вероятно потребовался бы один метод на все случаи :)

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

try{
  throw SomeException();
} catch (const SomeException &e) {
  //можем сюда не попасть.
}

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

Вопросы

Можно ли придумать что-то более лучшее чем:

1. std::string или динамически расширяемый char * заменить исключительно на char * константной длинны (массив) и в случае захода за длинну просто не заполнять его дальше, а конец массива сделать многоточием - что будет обозначать что это не весь текст исключения.

2. Взамен to_string напрашивается что-то из std::sprintf(buf, «%ld», value) - https://ru.cppreference.com/w/cpp/io/c/fprintf но к сожалению не знаю/не_помню и по ссылке не нашел, что будет если в buf не хватит размера для преобразования числа в строку?

3. И немного глупый вопрос про низкий уровень: если в коде есть строка

A << val1 << val2 << val3 << val4
то как тратится программный стек на это дело?

Правильно что хоть сколько в ряд таких операторов записать то стек не потратится больше чем на размещения вызываемого метода + входящей в него переменной?

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

А вот это грубо говоря просто пошагово должно быть: A << val1 << val2 << val3 << val4 это тоже самое что int a=0; a+=f(); a+=f(); a+=f(); т.е. хоть «беcконечность» таких a+=f(3); сделай - это не покрошит программу, т.к. не переполнит программный стек (ну разве что, безопасно для рантайма,переполнит тип int).

 

bober
()

valgrind и .so библиотека

Подскажите пожалуйста как искать утечки в .so либе.

Либа и приложение её использующее собраны с debug mode

Приблизительное расположение файлов: build_dir/bin buil_dir/lib/lib.so

В либе явно где-то есть утечка, в приложении её нет.

Валгринд хорошо показывает утечки и файлы где есть утечка - если утечка принадлежит как-бы приложению.

А как с его помощью можно конкретизировать место утечки в библиотеке?

 ,

bober
()

quake3 - нет ответа от мастер сервера

Есть ли тут любители данной классики?

С одного прекрасного момента игра перестала видить сетевые игры, с описанным в названии темы сообщением.

Файрволы и прочее тут точно не причём.

Вопросы: 1. У вас так-же? (Если нет то дело в моём провайдере, т.к. кое-какие сайты, не попавшие в РКН-Блок в нём сейчас недоступны и недоступны уже не первый день)

2. Где можно найти актуальный список мастер-серверов и как его установить в игру. Я находил какие-то в инете, вбивал их в по конпке «Уточнить» в игре - но результата не давало.

 

bober
()

Предложение по новой фичи механизма переноса скриншотов из «неподвержденных»

Предлагаю (исключительно для галереи) сделать новую фичу.

1. Скриншоты по прежнему попадают сначала в «неподтверждённые».

2. Модераторы МОГУТ (как и прежде) перенести из неподтвержденных в главный раздел галереи.

3. Рядовые пользователи могут голосовать за скриншоты (только в разделе не подтвержденные)

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

5. Модератор не может пополнить список «Последние удаленные неподтвержденные» если есть какие-то голоса за картинку и не прошел еще месяц. Если месяц прошел - и голосов не наборолось до некоего числа - может удалить.

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

 

bober
()

RSS подписка на новые темы