Обновить
52
Dmitry@domix32

Жопа котика

0,4
Рейтинг
10
Подписчики
Отправить сообщение

Размерность это все же про то как измерять растояния - устанавливать размер, а измерения про по скольки осям это можно делать - измерять. Семантически вроде достаточно корректно.

Ну, а с парачастицами к вам вопрос - как бы вы их назвали в таком случае? квази уже заняты.

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

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

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

В этом смысле сишники давно изобрели errno

оно на маленьком коде может и хорошо, но иметь некоторое глобальное состояние да ещё и в многопотоке, довольно заметный минус для оптимизатора - появляются неоптимизируемые индирекции. Ну и как в си гадать от кого из стека прилетело -1 вместо того чтобы явно видеть DbError::AccessDenied имеет свои следствия для безопасности финального кода.

Это всегда один единственный yaml файл или как на github есть возможность завести какую-нибудь папочку .gitflic и складировать CI/CD конвееры туда?

Планируется ли что-то кроме JUnit для сбора покрытия?

Собственно вопрос - а почему не использовать nginx? На конфиг кажется ложится, только описание будет не таким лаконичным.

Как-то хреново оформлены флаги конфигурации. Разница между конфигурациями незаметна и похоже вы как-то так не заметили, что для AWS-LC дважды выставлены флаги линковки

общие флаги конфигураций
--prefix=/etc/angie
--conf-path=/etc/angie/angie.conf
--error-log-path=/var/log/angie/error.log
--http-log-path=/var/log/angie/access.log
--lock-path=/run/angie.lock
--modules-path=/usr/lib/angie/modules
--pid-path=/run/angie.pid
--sbin-path=/usr/sbin/angie
--http-acme-client-path=/var/lib/angie/acme
--http-client-body-temp-path=/var/cache/angie/client_temp
--http-fastcgi-temp-path=/var/cache/angie/fastcgi_temp
--http-proxy-temp-path=/var/cache/angie/proxy_temp
--http-scgi-temp-path=/var/cache/angie/scgi_temp
--http-uwsgi-temp-path=/var/cache/angie/uwsgi_temp
--user=angie
--group=angie
--with-file-aio
--with-http_acme_module
--with-http_addition_module
--with-http_auth_request_module
--with-http_dav_module
--with-http_flv_module
--with-http_gunzip_module
--with-http_gzip_static_module
--with-http_mp4_module
--with-http_random_index_module
--with-http_realip_module
--with-http_secure_link_module
--with-http_slice_module
--with-http_ssl_module
--with-http_stub_status_module
--with-http_sub_module
--with-http_v2_module
--with-http_v3_module
--with-mail
--with-mail_ssl_module
--with-stream
--with-stream_acme_module
--with-stream_mqtt_preread_module
--with-stream_rdp_preread_module
--with-stream_realip_module
--with-stream_ssl_module
--with-stream_ssl_preread_module
--with-threads
--feature-cache=../angie-feature-cache

дефолтная сборка из пакета к общим флагам докидывает параметры линковки

--with-ld-opt=
-Wl,-Bsymbolic-functions 
-Wl,--package-metadata=%7B%22type%22:%22deb%22%2C%22os%22:%22ubuntu%22%2C%22name%22:%22angie%22%2C%22version%22:%221.11.8-1~resolute%22%2C%22architecture%22:%22amd64%22%7D 
-flto=auto 
-ffat-lto-objects 
-Wl,-z,relro 
-Wl,-z,now

openssl немного подчищает флаги линковки от метаданных

--with-ld-opt=
-Wl,-Bsymbolic-functions 
-flto=auto 
-ffat-lto-objects 
-Wl,-z,relro 
-Wl,-z,now

и добавляет дополнительный флаг видимо ссылаясь на dev-пакет или исходники

--with-openssl=/root/openssl-4.0.1

Для AWS прокинуты как флаги линковки так и флаги компилятора

--with-cc-opt=
-fPIC 
-DNGX_DEBUG_PALLOC 
-DNGX_DEBUG_MALLOC 
-I/root/aws-lc-5.0.0/include

учитывая флаги отладочных аллокаторов есть вопросики к чистоте эксперимента

а потом подряд сначала накатываются ld флаги от openssl

--with-ld-opt=
-Wl,-Bsymbolic-functions
-flto=auto 
-ffat-lto-objects 
-Wl,-z,relro 
-Wl,-z,now

которые похоже перетираются собственными опциями

--with-ld-opt=
-Wl,-z,relro 
-Wl,-z,now 
-Wl,-rpath -L /root/aws-lc-5.0.0/build/ssl 
           -L/root/aws-lc-5.0.0/build/crypto 
-lssl 
-lcrypto 
-lstdc++

есть смутное сомнение, что оно не линкуется с чем вы пытались его линковать и rpath должен выглядеть как-то так

-Wl,-rpath,/root/aws-lc-5.0.0/build/ssl:/root/aws-lc-5.0.0/build/crypto 
-L/root/aws-lc-5.0.0/build/ssl 
-L/root/aws-lc-5.0.0/build/crypto 

либо он там вообще нинужон. Как результат есть шанс, что оно подцепило системные ssl и crypto. Ну и удалёние -Wl,-Bsymbolic-functions вероятно тоже могло внести некоторые коррективы в производительность, также как и прочие LTO оптимизации, которые не были добавлены в новый сетап и линковка с stdc++ (aws на с++?), что опять же добавляет вопросов к чистоте эксперимента.

Поправьте меня конечно, если я где-то был неправ.

Прикольно, после КБ планируете тренировать другие вымирающие языки? Коми или марийский, например?

KolibriOS (и MenuetOS) - полноценные и современные операционные системы

Они не очень современные и совершенно точно не полноценные. Особенно учитывая, что любой код исполняется от уровня ядра - из-за отсутвия хотя бы базового разделения на kernel/userspace и aslr любой блокнот ваши пароли сольёт кому угодно. Гуй прибит гвоздями, usb-стек минимальный и про 3.0 ничего не знает, про bluetooth вроде вообще не задумывались, не говоря уже про BLE; туда же современный WiFi, NVME, GPU. С учётом отсутвия слоев совместимости с Linux, BSD или хотя бы POSIX внешние драйвера или иной софт уровнем повыше они также не умеют запускать. Виртуализация, дедупликация зависимостей, высокоуровневых API для каких-то оптимизированных вычислений также нет. Оно прикольно как POC, но совершенно точное не как современная ОС. Сделать блокнот, paint или солитера вообще не проблема, те ещё на дисковых ОС были.

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

можно бахнуть final и молиться, что компилятор соизволит сделать тип плоским.

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

std::vector a{a.begin(), a.end()}; // получится vector<decltype(asd)::iterator>
std::vector<int> b{a.begin(), a.end()}; // попытается скопировать инты

placement new тоже в списке не вижу

std::vector<std::byte> buffer(1024);
MyClass* ptr = new (buffer.data()) MyClass();
ptr->~MyClass(); // звать деструктор надо ручками

В качестве отдельной категории можно ещё вспомнить thread local инициализацию.

еще есть скрытый rvalue_cast, но о нем чуть ниже.

core guidlelines добавляют ещё narrow_cast для сужения более длинных типов к более коротким: narrow_cast<int32_t>(int64_t{}). Всё для демонстрации понимания намерения.

Доказательством этого является то, что на нём пишут все меньше.

Как проверяли нисходящий тренд?

C++ это язык с небезопасной памятью

Во-первых, нет такого понятия как "небезопасная память". Есть небезопасный доступ к памяти - выход за пределы массивов, трансмутация одних типов в другие, несинхронный доступ к общей памяти из разных потоков и прочее. Во-вторых у плюсов есть все инструменты для безопасной работы с памятью - умные указатели, всякие view-like объекты, алгоритмы, поддержка аллокаторов, немалое количество примитивов синхронизации и прочее. Оно не эргономичное, да, но определённо не отсутствующее.

Ну вы б со всей серьёзностью хотя бы написали одинаковый код для разных языков по каждому из пунктов. Тот же проект с рефлексией и какой-нибудь простенький эхо сервер на корутинах. Померили бы LOC, производительность на каких-нибудь 10к соединений и уж исходя из этого какие-то плюсики раздавали. А то это ваше "рефлексию в плюсы ещё не завезли, но плюсик они всё равно получают" довольно выглядит смешно.

Я не очень в курсе в каком состоянии сейчас .net инфраструктура. В прошлом были только Microsoft .NET и опенсорсный кросплатформенный mono. Последний не покрывал всей инфраструктуры .NET насколько мне известно и желающих им пользоваться в среднем было стабильно мало, не говоря уже о полной миграции. То что запускается в докере работает нынче поверх микрослоповского дотнета или это моно приложения?

  1. статическая линковка, всякие ухищрения с запретом на LD_PRELOAD где-нибудь в _start секции. Ну и прочие способы защиты от TOCTOU атак.

  2. настройки линковки, конфигурация версий и путей поиска в сборочной системе

  3. На этапе сборки - опять же конфигурация в сборочной системе. На этапе запуска - резолвится силами системы. На линуксе в случае чего ругнётся, что версия библиотеки не подошла, на винде скорее всего скажет, что blabla.x.y.z.dll не найден.

Просто в C# проблемы бинарной совместимости возникают гораздо реже,

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

Забавно как концу статьи кода на плюсах становится всё меньше и меньше, а очки в его пользу растут всё также.

как говорится - гусь

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

Так вы же все вопросы игнорируете. Отвечали только на некоторые замечания, которые вам удобны. Или как по вашему должно выглядеть желание разобраться? Просишь у вас доказательств или ссылок на ресурсы "я научно-популярное пишу а не ваши догматы". Просишь как инженер инженера про методологии и замеры рассказать - просто игнор.

поэтому на данном этапе биопрограмма диктует послушание родителям и выполнение их приказов

Ну вы определённо не с этой планеты. Сделать ребёнка послушным - это биологическая программа родителя по сохранению рода. Ребёнок же лезет во все щели с безудержным интересом и до определённого момента у него вообще нет пониманию о собственной безопасности - потрогать горячую плиту, сунуть пальцы в розетку, съесть камни, червей-жуков, растений и вот это вот всё - тысяча и один способ отправиться к праотцам. О какой такой программе выживания вы вещаете? единственная программа ребёнка на этом этапе - получить достаточно ресурсов для достижения половозрелого возраста. Родитель диктует послушание, а не какая-то персональная биопрограмма.

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

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

в зрелости приоритет поменяется на социальную реализацию

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

Движение к сложности - усложнению форм и видов

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

Пропуск новых мутаций через барьер

Нет у организмов таких барьеров. Все мутацию отфильтровываются средой обитания, а не конкретными персонами - особь либо выживает и даёт потомство со своими параметрами в заданной среде, либо не выживает.

третий пункт теряет смысл исходя из вышеописанных пояснений.

с врождённой повышенной чувствительностью к дофамину и люди с повышенной чувствительностью к серотонину

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

С одной стороны, дофаминщики: художники, учёные, актёры, поэты, изобретатели и всякие визионеры-новаторы. С другой стороны, серотонинщики – политики, финансисты, силовики, чиновники?

Корелляции не есть причины. Это может работать с обратной стороны - выбор профессии делает более чувствительным к определённого рода гормонам и подкрепляется по мере вливания в профессию.

HR-диагностике

Что это и как этому помогает ваша идея?

мы с высокой точностью можем предсказывать:

пруфы?

Вот ключевые наблюдаемые признаки:

Выглядит, будто за пределами белых воротничков жизни нет.

Условно их можно назвать серотонинщиками и дофаминщиками.

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

1
23 ...

Информация

В рейтинге
2 672-й
Дата рождения
Зарегистрирован
Активность

Специализация

Десктоп разработчик, Разработчик игр
Старший
Git
C++
C
Английский язык
Python
Rust
Разработка программного обеспечения
Linux