#softdev

🚀 Несерьёзный Выдумщик 👨‍🔬grumb@shitpost.poridge.club
2025-07-10

Придётся на время отложить клонирование репозиториев:

Опубликованы корректирующие выпуски ... Git ..., в которых устранены уязвимости, позволяющие выполнить свой код на системе пользователя при выполнение операции клонирования репозитория, подконтрольного атакующему.
https://www.opennet.ru/opennews/art.shtml?num=63552

И ведь давно предупреждали git-сообщество, что доиграются до подобного. Наверняка в среде безопасников уже знатно нажрались и отметили этот исторический момент.
Примерно так же, как в своё время сообщество
#git профукало вопрос сотрудничества с #Facebook (выбравшего вливание ресурсов и сил в #mercurial). Из-за снобизма и упоротости git-сообщество отказывалось понять и признать необходимость ряда изменений в устоявшихся подходах к работе с репозиториями. Однако, этот культурный феномен сохранился, не став уроком и вылился теперь в куда более опасное явление.

#git #softdev #programming #DVCS

🚀 Несерьёзный Выдумщик 👨‍🔬grumb@shitpost.poridge.club
2025-07-02

Пример типичной системно-прикладной разработки, реализация своей «очереди сообщений» (event loop).
Использованием
#epoll, вместо «традиционных» select & poll, для асинхронной работы через polling’а (и мультиплексирования).

Отслеживание файловых дескрипторов через
#epoll выглядит более современно, меньше копирования памяти между user space и kernel space. А при появлении ожидаемых данных можно напрямую переходить к объекту или структуре данных, что важно при наблюдении за несколькими файлами и\или соединениями. Устраняется поиск «сработавшего» файлового дескриптора в индексных массивах, полноценное О(1) во всех случаях. Можно сразу же работать с теми экземплярами объектов, которые оборачивают тот файл или udp-поток, tcp-, quic-соединение, где появились новые данные.

Есть несколько готовых к использованию «очередей сообщений» (event loop'ов) —
#libev, #libuv, #libevent. Для некоторых агент-серверные решений и брокера #RabbitMQ это подходит. Однако, в некоторых случаях AMQP-библиотеки не скрещиваются с уже готовыми «очередями сообщений». Потому что агентская часть может активно использовать асинхронно-реактивное программирование с хорошей и проверенной «горизонтальной масштабируемостью». Т.е. на агентской части выполняется много работы и реализация сделана через sharing nothing многопоточность. Это такая парадигма, когда не просто достигается не только горизонтальная масштабируемость через lock-free\wait-free, а так же исключается много вредного, как тот же cache ping-pong или false sharing. Внутри агентов идёт своё управление потоками с выделениями памяти. Не только в плане «динамической памяти» (heap, аллокаторы а-ля #jemalloc от #Facebook), но и приколами вокруг pinning страниц, учёта #NUMA и даже huge pages(меньше промахов в #TLB).

Почему бы не использовать epoll?
Библиотека не обязана вычитывает данные целиком из потока (сокета), а может забирает данные лишь до тех пор, пока не насытится автомат состояний (finite-state machine). Например, выполняется парсинг сущностей AMQP-протокола, которые, по мере накопления, передаются в обработчики указанные клиентом библиотеки.
И это плохо соотносится с тем, что используя
#epoll надо выбирать какой вариант оповещений использовать:
• «по уровню» (level-triggered),
• «по фронту» (edge-triggered).

Особенности поведения отдельно взятой библиотеки может не позволять использовать работу «по фронту» (edge-triggered), т.к. библиотека не вычитывает полностью все данные из файловых дескрипторов.

Можно быть хоть пять раз technical lead и всё это прекрасно знать, но следует помнить, что как только в коде появляется флаг EPOLLET, то необходимо проводить аудит работы с потоками данных. Это избавляет команду от многих заморочек вокруг тестирования и ковыряния с каким-то совершенно непонятным поведением кода.

Про
«Edge Triggered Vs Level Triggered interrupts»

#programming #linux #softdev #трудовыебудни

🚀 Несерьёзный Выдумщик 👨‍🔬grumb@shitpost.poridge.club
2025-06-25

Как на счёт того, что на работу надо нанимать лишь профессионалов с должным уровнем знания языков программирования?
А не тех, кто считает, что этот код выведет −1.

#include <vector>
#include <numeric>
#include <iostream>

int average(const std::vector<int>& v) {
    if (v.empty()) {
        return 0;
    }
    return std::accumulate(v.begin(), v.end(), 0) / v.size();
}

int main() {
    std::cout << average({-1,-1,-1});
}
Если не верится, то https://godbolt.org/ в помощь.
Будучи собрано GCC или Clang для систем x86-64 оно выведет: 1431655764.

Ирония постиронией, а вот не смешно ни разу, поскольку никакой Clang-Tidy такого «не ловит»
bugprone-narrowing-conversions.
(извиняюсь за Керниган-Ричччи си-шный стиль в расстановке фигурных скобок, но так компактнее).

#программирование #C++ #С++ #Cpp #programming #softdev #staticanalysis #ClangTidy @russian_mastodon@mastodon.social @Russia@3zi.ru

🚀 Несерьёзный Выдумщик 👨‍🔬grumb@shitpost.poridge.club
2025-06-10

О, да! Ребята, как же я вас обожаю. Вы соль земли, не даёте рынку труда стагнировать, выполняете роль компрессии в цилиндрах двигателя. Благодаря вам моя профессия не девальвирует, а нужна и востребована.
Кстати, помимо таких мелких начальников (недо-менеджеров) есть должности сеньор-манагера, люди болтающиеся как дерьмо в проруби. Это народ недоразвившийся до уровня топ-менеджера, но свято верующий, что в топ-манагеры не удаётся пробиться по другим причинам.

#softdev #softwaredev #ИТ @russian_mastodon@mastodon.social @rur@social.sley.nl

RE: https://hub.hubzilla.de/item/6a7272c8-018c-45bd-8a79-f639a5168a20

🚀 Несерьёзный Выдумщик 👨‍🔬grumb@shitpost.poridge.club
2025-06-08

Неплохой доклад по оптимизационным подходам от разработчиков реальных компиляторов в контексте C++. Докладчик автор книги «Оптимизирующие компиляторы. Структура и алгоритмы» 2024 года ISBN: 978-5-17-167965-1
С кучей других сотрудников занимается доведением до ума ряда компиляторов.

Т.е. имеется RISC-V процессоры и компания
Syntacore делающая свои такие процессоры с этим instruction set architecture (ISA). Производителю процессоров естественно приходится развивать свой Dev Tools Kit дорабатывая и реализуя поддержку в известных C++ компиляторах. Вот докладчик представитель того отдела или департамента, кто этой работой занимаются.

Подкрутили слегка в известных и стандартных компиляторах — получили от 8% до 12% повышения скорости работы C++ кода. Буквально на ровном месте без какой-либо необходимости что-то менять в этом коде. Просто за счёт использования важной информации из семантики языка во front-end и back-end частях компилятора (если говорить в терминологии llvm toolkit).

Всё русскоязычное и всё это делается в РФ, связь такая, что «КНС Групп» владеет этим самым
https://syntacore.ru/ уже стоя в подмосковье фабрику по производству RISC-V процессоров. Пока не ясно будут ли это на первых порах лишь контроллеры HDD/SSD/NVMe и для бытовой техники или же сразу начнут делать замену для PowerPC & Intel процессоров под свои нужды для СХД (систем хранения данных). Изначально все серверные СХД решения были на PowerPC-процессорах, но последние года пришлось перейти на Intel'ы в силу проблем из-за односторонних рестрикций от IBM.

Последние года этот холдинг как пылесос вобрал в себя очень много сотрудников EMC, той самой, что всегда делала СХД для корпоративного сектора и не так давно была замешана в сделке на $56-58 миллиардов.

#programming #softdev #программирование #C++ #RISC-V #книги #books @russian_mastodon@mastodon.social @rur@social.sley.nl @Russia@3zi.ru

tallisibyn enwandung-esterhazybyn@skyhoppers.club
2024-12-19

I've been working on this little #Python project for the last few months, and I'm getting very close to calling it ready for production (even though I'VE been using it in prod for weeks now):

github.com/ferretbreeder/pytho

It's a very org-specific utility used to add tracking UTMs to links in #HTML emails, but maybe could have other applications someday.

I'm not a developer by any means and I'm a GitHub novice, so if you check this out any feedback is appreciated!

#development #foss #softdev

2024-07-10

bookmarked this "iceberg model" article on the patriarchy in software development... sparks some good new mental models! mechanical-orchard.com/insight

can't remember who originally posted but thank you... #patriarchy #softdev

2023-10-15

Has anyone worked on/with internal systems that are decoupled enough to permit a team to use the Staging environment of dependencies for their Development work?

To be clear, isolated Dev environment and isolated Staging environment. But a team working in Development can choose to use the 'stable' Staging resources from others.

How did this work in practice? Events? Permissions? Authentication? Networking?

I'd love some links and reading on best practice here 🙏 Boosts appreciated!

#softdev

Eric Maugendreeric@social.coop
2023-05-07

When a team creates, it needs a direction but the road does not exist yet.
We are designing a software product. Here is the dependency weakness that we are using as #roadmap: data.yt/#presentations #DataKit #governance #softwareDevelopment #softDev #dev #product #dataRetention #archiving #retrieval #dataMining #dataDon

Big bubbles serve to show feature packages and are labeled "FP1: conformance", "FP3: index+search", etc.
Dependencies do not show!
2023-02-05

im getting better at this #softdev #homeerp

Eric Maugendreeric@social.coop
2022-11-28

#Nomenclature 🎯#naming pause:
In the #software environment, the #fork system call causes a running process to #split itself into two identical copies.

"The purpose of fork() is to create a new process, which becomes the #child process of the caller."

Taking the #code out of an app and modifying it without the original community is #forking. The #GNUProject in 1996 already used the word for a schism and not a subgroup: groups.google.com/g/gnu.misc.d

#dev #history #etymology #softDev #freeSoftware 👇🏾

Sketch of a fork() system call from the Michigan Tech University
Karl Beckerkarlbecker
2018-08-21

I’ve done since I was young, from to , to , a bit of and more and these days. I play , and love listening to all kinds of music.

I’m the proud cofounder of a company that helps researchers explore the world.

I’m married to an amazing woman who helps me better understand and appreciate the world.

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst