Open plzombie opened 1 year ago
Hi @plzombie .
"Красивый" списочек. И частично к этому списку я руку приложил. Значительная часть сидит в src/filters/output
.
@zvezdochiot Ладно. В альт-линуксе там списочек, кстати, выглядит не таким ужасающим. Это в debian настройки по умолчанию какие-то уж слишком жёсткие. Можно в росреестр подавать заявку на совместимость с отечественной ОС🤣
@plzombie , что то эта "отечественная ОС" попахивает чем то средним между яндексом и РосНаном. Т.е. даже ежели она "отечественная", то непонятно о каком отечестве идёт речь.
PS: У таких старпёров, как я, слово отечественная всегда асоциируется с народом русским. В данном же случае ассоциация обратная.
Начну с
-Wreorder
Типовое вроде сообщение. В h-файле члены определены в одном порядке, а в cpp в списке инициализации конструктора - в другом. Visual Studio под виндой тоже на такое ругается. А если включить максимальный уровень предупреждений, там еще и не такая портяка вылазит.
У таких старпёров, как я, слово отечественная всегда асоциируется с народом русским.
Просто в русской традиции букву "ё" печатать как "е" для экономии чернил. На мониторе же для экономии энергии точки лучше, наоборот, включать, и писать полностью - "отёчественная". 🤣
@zvezdochiot @noobie-iv Да ладно вам. Это, наверное, действительно исконно русский, "НАШ", дистрибутив. Разрабатывает ООО "Базальт СПО", а не какой-то там кипрский офшор. Он от Red Hat откололся больше двадцати лет назад. Там уже и скрипты свои есть, и пакеты, и много чего модифицировано. Да и интерфейс мне честно нравится (не вот этот вот модный Gnome3/4), равно как и стабильная работа под виртуалкой
Я вас, кстати, поздравляю. Пакет с x86 версией Scantailor приняли в WinGet. Надо только доработать установщик, чтобы правильную версию и идентификатор отдавал
@zvezdochiot @noobie-iv можете мне подсказать, как вы сейчас в линуксе вообще авторизуетесь в git? Под виндой есть git credential manager, который поддерживает двухфакторную авторизацию. А тут - пароль приложения создавать?
Нашёл вот Надо индивидуальный пароль создать. Главное вот этот Token(Classic) ещё ничего. Но в новом Fine Graned, на который нас пытаются пересадить, там около сотни прав доступа и все их надо руками проставлять😩
@plzombie , не знаю, как остальные, а у меня в настройках авторизации и SSH-ключ прописан, и GPG-ключ прописан. Правда вторым я не пользуюсь, ибо эксплуатация муторная. А вот по SSH данные туда-обратно совершенно спокойно гуляют. Создайте себе SSH-ключ, активируйте его в ssh-agent
, а в конфигах git-ов поменяйте адреса реп с https-протокола на ssh-протокол.
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
PS: Про web-морду я уже писал, добавил addon в лису и с его помощью как то зашёл. Как? Сам не понял.
@zvezdochiot да у меня есть приложение. Получается, просто генерируешь в Developer Settings->Personal access tokens->Tokens (classic) себе индивидуальный пароль и его вводишь вместо основного
@plzombie , да я без понятия как это всё дерьмо работает. Для меня всё это просто конкретное МММ, то бишь разводилово. Я уж подумывал вообще валить с гитхаба, когда всё это увидел. Дураку же понятно, что никакую безопасность это дерьмо не делает, а лишь усложняет работу обычному пользователю.
Я под виндой сижу, вход через FF, плагин Authenticator. Когда вход выполнен - git тоже получает доступ. После этого работают и git-bash, и VSCode. Ничего больше не настраивал.
@noobie-iv у меня под виндой проще - Github app для телефона и git credentials manager (да, я прогнулся под корпорации и поставил приложение:)). А под линуксом я просто руками создал "Personal access token". По сути все эти плагины Authenticator-ы тем и заниманются, что создают токен, а потом его подсовывают вместо пароля.
С ssh я когда-то игрался. Но проще token вместо пароля создать (и просто тупо вместо пароля его вводишь, как раньше)
UPD: Github app, кстати, криворукие люди писали. Нельзя комментировать коммиты. Ты видишь, что кто-то его прокоментировал, ты нажимаешь на уведомление, а в ответ - ничего
Я вроде основные варнинги убрал. Там остался -Wmaybe-uninitialized в файле DewarpingImageTransform.cpp
, по котором я вообще не понимаю, что там происходит. И второй варнинг - это -Wpessimizing-move, который я не смогу пофиксить в силу своей квалификации, так как я больше сишник и ничего не знаю про все эти std::move. А из справки ничего не понятно. Предлагаю пока отложить это дело
@plzombie say:
std::move
Это определённая когда то "модная" фитча работы с кучей. Полностью тебя поддерживаю. Я сам все std::min
и std::max
из цветных фильтров и порогов вынес. На кой мне они, есжели есть простой и понятный выбор ({})?{}:{};
?
-Wpessimizing-move
Я простой инженер, и в плюсах не копенгаген. Но, насколько я знаю, move - это новый вид оптимизации, при передаче объектов, владеющих ресурами. В некоторых случаях, когда ресурс надо передать по цепочке, вызвается специальный конструктор перемещения, внутри которого просто переприсваивается указатель на ресурс, а не делаются лишние "выделим новую память, скопируем из старой, удалим старую". И вызов std::move - это подсказка компилятору, что этот объект - временный, и при копировании можно не копировать его ресурс, а забирать, потому что объект все равно удаляется.
А еще современные плюсы насобачились даже вообще пропускать вызовы конструкторов/деструкторов при возвращении переменной из функции (гуглить RVO-оптимизация). Видимо, в старых плюсах на возвращаемые значения надо было делать move, потому они по коду и раскиданы. А в современных компиляторах это наоборот, мешает оптимизации. Судя по типу предупреждения "pessimizing-move", тут оптимизация заблокировалась, и пошли лишние копирования с тормозами. В современных компиляторах достаточно просто возвращать результат, без move:
169: - return std::move(result); 169: +return result;
И потому же std::unique_ptr живет без конструктора копии - вместо него работает конструктор перемещения.
Кстати, студия на такое не ругается. Видимо, тут комплятор про себя матерится, и просто молча делает как надо.
-Wmaybe-uninitialized
Тут какая-то шаблонная магия, в которой я не разбираюсь. Но судя по сообщению, возможны баги с неинициализированной переменной. Деварпинг в этой версии - лучший из всех, но и он работает не идеально. Например, если его на эту книгу натравить: https://forum.dwg.ru/showpost.php?p=2046477&postcount=3713, то достаточно много страниц будут кривыми. Возможно, тут это предупреждение и вылазит - надо тестить. Может, это и не предупреждение даже, а реальная ошибка.
Я вообще, хоть и программист, но совершенно из другой обособленной области, и у нас тут абсолютно свой технологический стек. А c++ я учил ещё по книжкам pre-c++98. @noobie-iv спасибо, попробую разобраться хотя-бы с move
Я по книжке Страуструпа, по той, которой убить можно. Из открытого лучшее что видел по современным плюсам - курсы Константина Владимирова, МФТИ, на ютубе: Базовый курс C++ Магистерский курс C++
@zvezdochiot решил отдельно завести для варнингов под юниксы тикет, чтобы не загромождать под винду Вот debian12 x64 с
-D CMAKE_BUILD_TYPE=Release
, boost я в список не включал. Завтра попробую эту войну и мир разгрести. Начну с-Wreorder
, потому что это самое тривиальное, и там их куча, больше половины наверное