LINUX.ORG.RU

Избранные сообщения ox55ff

Flux — C++20 библиотека алгоритмов с другой моделью итераций

Форум — Development

Это header-only (~405 KB) C++20 библиотека в духе C++20 Ranges, Python IterTools, итераторов Rust и других, и предоставляет набор функций, в целом эквивалентный C++20 Ranges, но использует немного другую модель итерации, основанную на курсорах, а не итераторах.
Курсоры Flux - это обобщение индексов массивов, в то время как итераторы STL - обобщение указателей массивов.
Возможности:

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

Документация: https://tristanbrindle.com/flux/index.html
Код: https://github.com/tcbrindle/flux
Лицензия: Boost 1.0.
Пример:

constexpr auto result = flux::ints()                        // 0,1,2,3,...
                         .filter(flux::pred::even)          // 0,2,4,6,...
                         .map([](int i) { return i * 2; })  // 0,4,8,12,...
                         .take(3)                           // 0,4,8
                         .sum();                            // 12

static_assert(result == 12);

Он же в Compiler Explorer: https://flux.godbolt.org/z/KKcEbYnTx.


Проект от автора библиотеки NanoRange – C++20 Ranges для C++17.

 , ,

dataman
()

Записи докладов с C++Russia 2023

Форум — Development

В преддверии конференции C++Russia 2024 организаторы выложили на YouTube записи докладов с прошлогодней C++Russia 2023. Публикация прошлогодних докладов началась месяца три назад но по одному докладу в неделю, а пару дней назад вроде как выложили вообще все.

На данный момент на канале конференции доступны следующие видео (если к докладу прилагались слайды, то рядом приведена и ссылка на PDF-ку):

Евгений Григорчук — GPU Driven Rendering Pipeline, или Как пишется графика в современных видеоиграх, PDF

Юрий Грибов — Как правильно писать компараторы, PDF

Илья Казаков — Кастомизируем ASIO, PDF

Дмитрий Мельник — Безопасный компилятор: надежная оптимизация и улучшение защищенности кода, PDF

Эрнест Асанов — Модель асинхронности в C++: теория и практика

Антон Сысоев — Dynamic Libraries for Bare Metal, PDF

Илья Шишков — Что-то у меня тормозит: заглядываем внутрь С++ контейнеров, PDF

Тот самый стендап от Павла Филонова на C++ Russia 2023

Дмитрий Ермолов — Roren — С++ фреймворк для описания пайплайнов распределенных вычислений, PDF

Ростислав Михеев — Эффективное использование GPU на примере разработки игр, PDF

Олег Сенин — Sizecoding: взгляд изнутри

Максим Кита — Техники оптимизации производительности, PDF

Александр Еналдиев — C++ Experiments: The Battle Continues: Cpp2 vs Carbon, PDF

Иван Смирнов — YsonStruct: дешевая сериализация иерархических JSON-структур, PDF

Владимир Ситников — B-tree индексы в базах данных на примере SQLite и PostgreSQL

Артем Хорошев — Ускоряем синтез: от TensorRT до CUDA C++, PDF

Аяз Салихов — Имплементируем класс tuple в 100 строк кода, PDF

Ashot Vardanian — Advanced Linux Kernel Bypass Techniques in 2023

Егор Суворов — Санитайзеры и стандарт не спасут, PDF

Александр Ганюхин — Машина состояний: непридуманная история

Rainer Grimm — Concurrency Patterns, PDF

Денис Легезо — Злые фреймворки и генерируемый ими позиционно-независимый код, PDF

Елена Веселовская — Как перейти от ученичества к работе, PDF

Андрей Аксенов — Про алгоритмы в поисковых движках

Техническое интервью: Архитектурная секция

Сергей Ларин, Владислав Столяров — Как сделать фронтенд компилятора в домашних условиях, PDF

Антон Потапов, Антон Малахов — Учим Кукушку Летать, или ConcurrentHashMap with Seqlocks, PDF

Александр Фокин — Designing Robust APIs: C++ Code that’s Safe, Extensible, Efficient & Easy to Use, PDF

Дмитрий Стародубцев, Ольга Кузьмичева — Практическое применение dev-контейнеров, PDF

Степан Дятковский — Почти полноценный RTTI с контролируемым overhead, PDF

Иван Афанасьев — Loop unrolling в деталях, PDF

Александр Ляпунов — Максимально быстрый и максимально удобный С++ msgpack-кодек

Марсель Галимуллин — Back to Basics: Lock-free, PDF

Алексей Степанов, Евгений Зуев — Исходный код: скрытое знание и как его показать?, PDF

Павел Новиков — Про flat_map, PDF

Антон Ласточкин — Мониторим FSM во встраиваемом ПО, PDF

Александр Бычук — Производство ПО глазами разработчика и менеджера, PDF

Константин Владимиров — Семантические процессы в C++

Александр Кирсанов — nocc — распределенный компилятор для гигантских проектов на C++, PDF

Евгений Ерохин — Back Deep to Basics: Наследование и виртуальность в C++ (Часть 1), PDF

Евгений Опарин — Опыт использования Bazel

Семен Буденков — С Conan за кроссплатформенностью, PDF

Сергей Талантов — С++ и безопасность: правда ли все так плохо?, PDF

Александр Боргардт — Колоночное хранилище в памяти: void* и шаблоны

Петр Советов — Автоматизация программирования в СССР. Трансляторы (60–70-е годы), PDF

Александр Корнилов — Идея по улучшению многопоточного кода, PDF

Александр Кухаренко — Демосцена: в погоне за wow-фактором, PDF

Виктор Шампаров — Компилятор LCC и оптимизация слияния кода, PDF

Евгений Зощук — Вперед в прошлое, или Разрабатываем фреймворк под Windows 95 в 2023 году, PDF

Михаил Лукин — Практика программирования тензорных ядер

Вадим Винник — Элементы функционального программирования в языке C++, PDF

Антон Соснин — С++ в мемах, PDF

Антон Полухин — C++ трюки из userver

Нужны ли профсоюзы в IT?

Тренды от HR

Интервью с Максимом Бабенко

PS. Практически все доклады перечислены в том порядке, в котором их мне показывает YouTube, никакой сортировки по какому-либо принципу здесь нет.

PPS. Сам ничего из этого не смотрел, никаких рекомендаций на тему «интересно/не интересно» дать не могу.

 

eao197
()

Игры на вяленом без Xwayland

Галерея — Скриншоты

Частенько на своей печке играю, решил поглядеть, как дела с запуском игорей нативно без XWayland.
DE: GNOME 45.
Собственно, игры:

  • Minecraft (glfw);
  • Red Dead Redemption 2 (wine);
  • freegish (SDL2).

Всё запущено без иксов, как видно в выводе xlsclients. Зачем – вопрос сложный, так-то и с иксами работает не хуже. А то и лучше, т.к. в Wayland нет возможности установить кастом иконку окна без .desktop файла. Пока.

В Wine и SDL2 играх проблем не заметил – всё играется, курсор из окна не убегает. SDL2 ещё и libdecor поддерживает нормально искоропки, так что в гномовском композиторе заголовки у таких игр нормальные. glfw его тоже поддерживает, но работает кривовато из-за VulkanMod. А без него завести Minecraft нативно ещё-то приключение. Но, как проверял давно, связка работала неплохо. (потом только в 1.17 отломали).

Окно в glfw ресайзится кривовато, баг в реализации CSD и в нормальных композиторах (Kwin/wlroots) не проявляется.

Из других игорей ещё проверял Cyberpunk 2077, работает так же отлично. Конкретно wine-wayland – win, хотя есть проблемы с контекстным меню и сворачиванием. В играх оно, естественно, не нужно и не проявляется.

P.S. Вообще, изначально ждал wine-wayland из-за неприятного бага с зависанием игр на RAGE при любом вводе. Но в итоге в winex11 его тоже починили, хотя изначально думал, что вот она, победа wayland.

Завести несложно:
SDL2 - SDL_VIDEODRIVER=wayland (можно добавить в /etc/environment, но не советую).
wine (9.0+) - wine regedit -> HKCU\Software\Wine\Drivers\Graphics установить в значение wayland,x11.
Minecraft (как в других играх с GLFW не представляю) - поставить VulkanMod, игра запустится с wayland автоматически. Был способ завести без него, но работает ли он - не знаю. У меня игра просто игнорирует существование внешнего libglfw с включённым wayland.

Как я уже написал, смысла от такого не особо много. Но оно работает.

P.S. Пока писал, ничего в фоне не вылетело. Вдруг кому интересно.

Железо видно на самом скриншоте, разве что видеокарта - RX 580, но с прошивкой от 470. Потому что я ниосилил нормально андервольтнуть видеокарту, проще стало потерять 4% фпс путём «даунгрейда». Заодно потребление упало, и кулеры почти не слышно.

>>> Просмотр (1920x1080, 2374 Kb)

 , ,

whbex
()

Samsung 870 EVO

Форум — Linux-hardware

В нескольких местах в инете прочитал что у этой модели проблемы с линуксом. В том числе на лоре: Ubuntu server 20.04.2 + Samsung 870 EVO 1TB

Но то всё старые заметки, и тема 2021 года. Это ещё актуально или уже всё починили и будет работать из коробки?

Я вижу что автор там подкрутил в sysfs длину ncq очереди и вроде у него после этого заработало, но это ж костыль и плохо сказывается на производительности.

 , ,

firkax
()

Навеяно свежей дырой в Xorg

Форум — Development

Привет, ЛОР!

Ты, наверное, уже видел свежую дыру в Xorg, патч для которой выглядит буквально вот так:

-        else
+        else {
             free(to->button->xkb_acts);
+            to->button->xkb_acts = NULL;
+        }

В связи с этим у меня возник вопрос: а почему в стандартной библиотеке C нет макроса SAFE_FREE()?

#define SAFE_FREE(ptr) do{free(ptr);(ptr)=NULL;}while(0)

Напомню, что значение указателя после вызова free() является неопределённым согласно стандарту. Не только значение памяти, на которое он указывает, но и значение самого указателя, и работа с ним представляет собой жуткое undefined behaviour, а значит единственное что можно сделать – занулить его.

Так вот, почему даже таких банальных вещей нет? Я уже не говорю про строковый тип, а то даже Эдичка тут строки не осилил.

Моя гипотеза тут: C – это язык культа страданий во имя страданий.

 , ,

hateyoufeel
()

Если вам не хватало UB в C, то вам принесли ещё

Форум — Development

Привет, мои дорогие любители сишки!

Если вам начало казаться, что разработчики стандарата языка C стали предсказуемыми и больше не могут удивлять вас новыми идеями, то вы ошибались. В новом стандарте C23, комитет постановил:

— zero-sized reallocations with realloc are undefined behavior;

То есть вот это валидный код:

void *ptr = malloc(0);
free(ptr);

А вот это – UB:

void *ptr = malloc(4096);
ptr = realloc(ptr, 0); <-- хаха UB

И это несмотря на то, что в манах уже давно написано следующее:

If size is equal to zero, and ptr is not NULL, then the call is equivalent to free(ptr)

Изменение вносится задним числом, наделяя кучу корректного (согласно документации glibc) кода способностью полностью изменить логику работы программы. Ведь это то, чего нам так не хватало!

В тред призываются известные эксперты по C: @Stanson и @alex1101, возможно они смогут нам объяснить, зачем разработчики стандарта C постоянно пытаются отстрелить себе обе ноги самыми нелепыми способами.

 ,

cumvillain
()

переход с virtual-box на xen/qemu/virt-manager

Форум — Desktop

день добрый, господа колдуны! :о)

версия vbox, которая нужна - не собирает модули ядра в «новой версии» slackware, а те версии vbx-а, которые работают - сильно не устраивают.

подыскиваю замену, перерыл много инфы, вижу единственный вариант (subj)

поделитесь опытом, кто работает с данной связкой: плюсы, минусы, доп. пакеты, «заточки», на что обратить внимание, !!! особенно версии ядра/пакетов !!!

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

требования номер ноль:
- нормальная, безглючная работа share-папок (удобное конфигурирование)
- прямой проборос (мост) сетевой карты на реальную (удобство настроек, конфигурирования)

slackware-14.2/x64 
kernel  - 4.4.301 / nvidia-gts250
xen     - 4.13.1
qemu    - 4.1.1
libvirt - 4.5.0

 , , , ,

sunjob
()

Lisp Asp .Net MVC

Форум — Development

C# официально устарел и отправляется в помойку, т.к. теперь веб-фреймворк Asp .Net Core MVC доступен из Common Lisp.

Можно так писать:

;; Asp.Net MVC controller
(define-dotnet-callable-class (example-controller
                               (:base-type . ControllerBase))
    ()
  ;; Echo the 'Hello' message to client
  (:method index :string ((name :string))
    (format nil "Hello~:[~;, ~:*~a~]!" name)))

https://github.com/Lovesan/bike/blob/master/examples/aspnet-mvc.lisp

На линуксе работает на SBCL и на CCL, проверял.

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

Также, пока bike не поддерживает аттрибуты, но это наверное добавлю позже.

Ну и с extension-методами пока не придумал что делать, пока их классы надо руками писать.

 , , , ,

lovesan
()

Разработка сетевой библиотеки на C++20: интеграция асинхронности и алгоритма Raft (часть 2)

Статьи — Разработка
Разработка сетевой библиотеки на C++20: интеграция асинхронности и алгоритма Raft (часть 2)

Эта статья является продолжением предыдущей публикации, в которой описывается разработка сетевой библиотеки на C++20. В данном продолжении акцент сделан на более детальном описании разработки алгоритма Raft и его интеграции с сетевой библиотекой.

( читать дальше... )

 , , ,

Reset
()

Чем занимаются IBM и Red Hat, когда не портят дистрибутивы?

Форум — Talks

Тут такая интересная инфа просочилась в инфополе. Оказывается, у IBM и Red Hat в ходу корпоративные расистские тренинги. Ну, вернее, они подаются как «прогрессивные анти-расистские», конечно, но так и Северная Корея себя называет «демократической республикой». А на самом-то деле всё совсем наоборот. Так и тут.

Вот тут можно полюбопытствовать, что же утекло: https://conservativenerds.locals.com/post/4996525/ibm-red-hat-whistleblower-l...

Материалы есть презанятнейшие. Кроме утверждений, что «только белые люди могут быть расистами» (от создателей «только ситхи всё возводят в абсолют»), там есть такие перлы, как «древние греки ездили в Африку учиться наукам, потому что там уже всё было». Ну и не хочется чрезмерно цитировать, чтоб не дай бог не показалось чего-то не того, но всё вращается вокруг откровенного расизма в классическом смысле и странных заявлений. Я бы даже сказал, это уже клиническая зацикленность на расовой теме, граничащая с параноидальными идеями.

Такие дела, котаны. А мы-то думаем, почему они везде пихают вяленого, выпиливают функции из гнома, щемят CentOS и закрывают сорцы. Мне теперь вполне стало ясно, какие там настроения владеют умами... жалко, что до линукса и опен-сорса докатилась эта корпоративная «прогрессивная» чума.

 , ,

Smacker
()

Разработка сетевой библиотеки на C++20: интеграция асинхронности и алгоритма Raft (часть 1)

Статьи — Разработка
Разработка сетевой библиотеки на C++20: интеграция асинхронности и алгоритма Raft (часть 1)

Введение

С годами работы в области распределённых систем, я понял, что мой опыт не будет полным без реализации алгоритма Raft. Это осознание побудило меня к действию: я решил создать свою реализацию, используя асинхронные возможности C++20.

( читать дальше... )

 , , , ,

Reset
()

Как мониторить буст отдельных ядth CPU с amd_pstate=active?

Форум — Linux-hardware

Здравствуйте, товарищи.

Решил попробовать amd_pstate=active. В теории штука замечательная — процессор сам скейлит свою частоту в зависимости от нагрузки и может моментально перейти с минимальных «оборотов» на максимальные, не дожидаясь команды от ядра.

Но возникла вот такая проблема. Раньше с acpi_cpufreq я мог отслеживать частоту отдельных ядер в /proc/cpuinfo. Но с amd_pstate=active /proc/cpuinfo сообщает, что якобы только одно (нулевое) ядро разгоняется, а все остальные сидят на 550 MHz. Если бы это было так, то производительность в многопроцессных задачах должна была бы существенно просесть, чего не наблюдается.

Есть ли какой-то другой, более достоверный способ отслеживать частоту ядер?

 , ,

annulen
()

Закон Гудхарта в действии: «неравенство полов» на конференции исправлялось «вручную». В прямом смысле слова.

Форум — Talks

Есть такой закон Гудхарта — говоря по-простому, целевой показатель эффективности становится самоцелью. Если качество чего-то начинают измерять по какому-то показателю, то этот показатель тут же становится бесполезным для применения по прямому назначению. Потому что данные начинают подтасовывать.


И вот, http://www.seoded.com/2023/11/28-devternity.html

Есть такая мера качества нынче — представленность женщин. Хитрые орги конференции во имя ПОВЕСТОЧКИ стали плодить фейковых спикерок (спикересс? спикерынь?), которые само собой будучи зявленными в программе не появлялись на мероприятии, но были снабжены некоторым фейковым присутствием в соцсетях. Но не долго музыка играла, не долго фраер танцевал — спалили. Теперь все осуждают и от конференции отказываются. Мол, не по-людски. Хотя как по мне так как раз по-айтишному.

🤡🌏

А вы сталкивались с таким?

 ,

Smacker
()

Протестировал Text generation web UI

Галерея — Скриншоты

Text generation web UI — это программа, предназначенная для создания текстов с использованием нейросетей. Написана на питоне. При использовании c использованием Model loader «ctransformers» и модели «tinyllama-1.1b-chat-v0.3.Q2_K.gguf» показала себя хорошо, результат получался через несколько секунд. Текст немного не соответствует персонажу, но считаю, что для наименьшей модели это хороший результат.

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

После этого следует:

  • скачать нужную модель (это делается прямо в настройках, нужно просто указать название);
  • подождать пока она загрузится;
  • выбрать загрузчик модели совместимый с данной моделью и нажать load;
  • подождать завершения загрузки модели.

Затем надо выбрать персонажа. Я нашел расширение «CAI Tools» для firefox и просто скачал с помощью этого расширения персонажа прямо с https://beta.character.ai/

После этого загрузил этого персонажа и выбрал в настройках. Затем зашел на вкладку «Чат», создал новый чат и начал общаться с персонажем. Гитхаб.

Модель которую я использовал.

И для сравнения. . Та же модель, но максимальная версия. Отличия только в том что я переместил все слои на GPU и выбрал пресет космического пришельца.

>>> Просмотр (1920x1080, 523 Kb)

 , ,

vbcnthfkmnth123
()

В OpenZFS выявлена ошибка, которая может привести к повреждению файлов

Форум — Talks
Доступен промежуточный выпуск проекта OpenZFS 2.2.1, развивающего реализацию файловой системы ZFS для Linux и FreeBSD. Выпуск примечателен добавлением поддержки ядра Linux 6.6 и попыткой устранения проблемы, приводящей к повреждению данных (обнулению части блоков) в файлах после их копирования.

Изначально предполагалось, что проблема проявляется только в ветке 2.2.x и вызвана ошибкой во включённом в OpenZFS 2.2.0 механизме клонирования блоков, позволяющем создать копию файла или его части без дублирования данных, используя во второй копии ссылки на уже существующие блоки данных исходного файла без их фактического копирования. В версии OpenZFS 2.2.1 для блокирования проблемы механизм клонирования блоков был отключён по умолчанию, а для возвращения поддержки данного режима добавлена настройка zfs_bclone_enabled.

Позднее разработчики заявили о воспроизведении проблемы и в конфигурациях с веткой OpenZFS 2.1.x. Не подтвердились и предположения, что проблема проявляется на системах со старыми выпусками пакета coreutils - ошибку удалось воспроизвести во FreeBSD и в Linux-дистрибутивах со свежим выпуском coreutils 9.4.

Повреждение файлов проявляется при достаточно редком стечении обстоятельств, например, выполнение в Gentoo команды "emerge -1 dev-lang/go" приводит к установке инструментария для языка Go с повреждением файлов в каталоге /usr/lib/go/pkg/tool/linux_amd64/compile. Предполагается, что ошибка начала проявляться после выставления по умолчанию параметра "zfs_dmu_offset_next_sync=1" в версии openzfs 2.1.4. Источник ошибки пока не выявлен. В качестве рекомендованного обходного пути блокирования ошибки предложено выставить в 0 параметр "/sys/module/zfs/parameters/zfs_dmu_offset_next_sync". 

https://www.opennet.ru/opennews/art.shtml?num=60167

EXT4-БОЯРЕ НА МЕСТЕ?

 , , ,

MoldAndLimeHoney
()

Отключить в масштабирование для определенного окна или workspace

Форум — Desktop

Постепенно перехожу на wayland(в лице hyprland) и по факту осталась одна серьезная проблема. Суть в следующем:

Мой экран:

monitor=DP-3,3840x2160,auto,1.75,bitdepth,10

Мне для работы нужно подключение по rdp, а xfreerdp довольно глючен. Нашел следующие способы как-то работать:

0. Ничего не делать. xfreerdp мерцает, wlfreerdp(и sdl-freerdp) мылят.

1. Выставить XWAYLAND_NO_GLAMOR=1, xfreerdp работает отлично, но не запускается steam(поиграть после работы). Приходится для стима менять сессию после работы.

2. Поставить масштаб 1.0, вместо 1.75. Тогда wlfreerdp работает хорошо, но всё остальное мелко.

Т.е. я нашел, что wlfreerdp мылит при глобальном масштабировании(в кедах при таких настройках просто окно с удаленным экраном в экран не влезает).

Пока что вижу решением(но не знаю как сделать), отключать как-то глобальное масштабирование для одного окна\воркпейса. Ну либо найти как заставить стим работать с XWAYLAND_NO_GLAMOR.

Может кто подскажет насколько это реально? Или время писать фичреквесты в hyprland и/или засылать баг в xfreerdp(тут они очень не шустрые по issues, судя по багтрекеру)?

Вот нашел что-то в багтрекере xfreerdp, но либо я ничего не понял, либо в моем случае не помогает, либо они просто отписку написали.

https://github.com/FreeRDP/FreeRDP/issues/7608

PS: Кстати, bitdepth,10 в настройках экрана, это чтобы с невидией шаринг экрана работал. С большим трудом нагуглил решение, вдруг кому понадобится.

 , , ,

Loki13
()

argparse 3.0

Новости — Разработка
argparse 3.0
Группа Разработка

Состоялся выпуск 3.0 C++ (стандарт C++17) header-only библиотеки парсинга аргументов командной строки argparse, распространяемой по лицензии MIT.

( читать дальше... )

>>> Подробности

 , , , ,

dataman
()

NoteCAD - онлайн САПР

Форум — Science & Engineering

Добрый день, товарищи. Вот и настал тот день, когда я решил продолжить разработку NoteCAD- бесплатной, условно-открытой системы автоматизированного проектирования.

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

Что реализовано на данный момент:

  • Работа в браузере - открываем url и попадаем сразу в программу, минуя ненужные шаги по регистрации, скачиванию и установке. В теории, работает под любую ОС, где имеется достаточно современный браузер и достаточно современное железо. Размер скачиваемой информации при загрузке программы через сайт - всего 10 Мегабайт!

  • Продвинутая 2D чертилка, поддерживающая стандартный функционал редактирования (создание геометрии, размерных ограничений, копирование-вставка, сохранение-загрузка в понятный формат XML, undo-redo и т. д. и т.п.). Поддерживается геометрия, заданная произвольными функциями, например, можно построить цепную линию, спираль Корню, да что уж там, можно и циклоиду и эвольвенту. При этом можно работать с такими примитивами, как с обычными - линией, окружностью и т. д.

  • Быстрый и очень функциональный решатель геометрических ограничений, по многим параметрам рвущий в клочья конкурентов. OpenSource, естественно, но буду благодарен, если вы сравните с промышленными CAD системами. На мой взгляд, SolidWorks, например, проигрывает со свистом. Поддерживаются очень сложные ограничения включая произвольные уравнения, уравнения с условиями, позволяющие строить сложные функции, заданные различными функциями на интервалах (кусочно). Решатель позволяет анализировать кинематику механизмов, поскольку поведение объектов с наложенными ограничениями близко к физическому поведению. Этого, кстати, нельзя даже в промышленных САПР - при перетаскивании, например, в SolidWorks, чертеж ведет себя отвратительно. С помощью такого анализа я помогал моделировать кинематику парового двигателя для парового мотоцикла Лёхи Романтика. Файл здесь.

  • Начальные возможности по созданию 3Д объектов - выдавливание, вращение с шагом (для создания резьбы)

  • Импорт и Экспорт в некоторые форматы, список будет пополнен

  • Редактирование STL. Можно импортировать STL и работать с ним - что-то отрезать, что-то залепить, изменить размер, просверлить отверстие. Работают те же функции, что применимы к 3д объектам, созданным в NoteCAD.

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

Что сделано в новой версии:

  • Изменен шрифт на ГОСТ
  • Добавлена геометрия смещения (offset)
  • Улучшена производительность решателя (в несколько раз)
  • Добавлена производная для if(condition, then, else), так что стало возможно создавать функции, заданные кусочно, и накладывать на них ограничения. Например, годится для создания кулачкового профиля сложной формы (безударный кулачок)

Что планируется в ближайшее время:

  • Перевод на русский
  • Упрощенная версия для школьников и студентов (черчение.online)
  • Хотелось бы сделать нативные билды под Линукс и засунуть их в какой-нибудь репозиторий, но в этом я слабо разбираюсь, поэтому нужна помощь

Программу NoteCAD можно протестировать здесь:

 

EvilSpirit
()

Осваиваем STM32 снизу: часть 4

Статьи — Разработка

Часть 1 Часть 2 Часть 3 Часть 4 Часть 5 Часть 6 Часть 7 Часть 8 Часть 9

Часть 4: Начинаем работать с C

Знание ассемблера важно, но многие программы разумней писать на C. В этой части мы напишем простую программу на C, скомпилируем её, исследуем получившийся объектный файл, правильно скомпонуем и запустим. После этого ещё немного изучим gdb.

( читать дальше... )

 ,

vbr
()

Сколько каких реакций поставили под вашими сообщениями? (+юзерскрипт)

Форум — Linux-org-ru
// ==UserScript==
// @name        LOR count-reactions
// @match       https://www.linux.org.ru/notifications?filter=reaction
// @version     1.2
// @author      CrX
// @description Show reaction count on reactions notifications page
// @grant		    GM_xmlhttpRequest
// ==/UserScript==

var res = {"🤡": 0, "👍": 0, "👎":0, "🤦": 0, "🔥": 0, "😊": 0, "🤔": 0, "😱":0, "☕☕":0, "🪗": 0};
let newdiv = document.createElement("div");
newdiv.setAttribute("id", "scriptedReactions");
h1 = document.getElementsByTagName("h1")[0];
h1.parentNode.insertBefore(newdiv, h1.nextSibling);

function countReactions(pageDom) {
  Array.from(pageDom.getElementsByClassName('reaction')).forEach((e) => {
    for (var r in res) {
      if (e.innerText.search(r) != -1) { res[r]++; }
    }
  });
  let reacttext = "| ";
  var items = Object.keys(res).map(function(key) {
    return [key, res[key]];
  });
  items.sort(function(first, second) { return second[1] - first[1];});
  for (var r in items) {
    reacttext += items[r][0] + ": " + items[r][1] + " | ";
  }
  document.getElementById("scriptedReactions").innerHTML = reacttext;
}

function scrapePage(pageurl) {
  GM_xmlhttpRequest({
    method: "GET",
    url: pageurl,
    onload: function(response) {
      var parser      = new DOMParser ();
      var responseDoc = parser.parseFromString(response.responseText, "text/html");
      countReactions(responseDoc)
      let nextlink = responseDoc.querySelector('a[rel="next"]');
      if (nextlink) {scrapePage(nextlink);}
    }
  });
}

countReactions(document);
scrapePage(document.querySelector('a[rel="next"]'));

(upd: скрипт обновлён, исправлены неверные результаты, если в настройках количество уведомлений отлично от 100)

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

Можно копипастить сюда, у кого что.

Топ клоунов — это хорошо, но там только «лучшие из лучших». А что у вас? А баянов кто-нибудь уже успел насобирать?

Моё на момент написания сообщения: | 🤡: 31 | 👍: 322 | 👎: 16 | 🤦: 11 | 🔥: 62 | 😊: 61 | 🤔: 9 | 😱: 13 | ☕☕: 157 | 🪗: 0 |

 , , violentmonkey, ,

CrX
()