1.84K subscribers
3.27K photos
130 videos
15 files
3.55K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
Зачем вообще в русском языке "жениться" и "выйти замуж"? Они означают по факту одно и то же, но при этом:

— Одно — просто глагол, второе — устойчивое словосочетание, глагол с дополнением.
— У них разные корни.
— Они требуют разных падежей от прямых дополнений (предложный и винительный).

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

Для сравнения, в английском языке есть глагол "marry", и он абсолютно симметричен при употреблении к обоим партнёрам.
👍31🤡12💯5😁1🤯1
This media is not supported in your browser
VIEW IN TELEGRAM
Ждём, когда запустят DoomPDF в LinuxPDF
Разработчик под ником ading2210 представил проект LinuxPDF — Linux в PDF в браузере. Проект открывается только в браузерах на базе Chromium, использующих движок PDFium. Код написан на C и опубликован на GitHub по лицензией GNU General Public License v3.0.

«Это Linux, работающий внутри PDF‑файла через эмулятор RISC‑V, основанный на TinyEMU», — пояснил автор решения.
. . .
Полная спецификация для JS в PDF была реализована только Adobe Acrobat, и она содержит некоторые нелепые вещи, такие как возможность выполнять 3D-рендеринг, делать HTTP-запросы и обнаруживать каждый монитор, подключенный к системе пользователя. Однако в Chromium и других браузерах была реализована только крошечная часть этого API из-за очевидных проблем безопасности. Благодаря этому мы можем выполнять любые вычисления, которые захотим, просто с очень ограниченным вводом-выводом.

Код C можно скомпилировать для запуска в PDF с использованием старой версии Emscripten, которая нацелена на asm.js вместо WebAssembly. С его помощью я могу скомпилировать модифицированную версию эмулятора TinyEMU RISC-V в asm.js, который можно запустить в PDF. Для ввода и вывода я повторно использовал тот же код отображения, который я использовал для DoomPDF. Он работает, используя отдельное текстовое поле для каждой строки пикселей на экране, содержимое которого задаётся различными символами ASCII. Для ввода есть виртуальная клавиатура, реализованная с кучей кнопок, и текстовое поле, в котором вы можете ввести текст, чтобы отправить нажатия клавиш в виртуальную машину.

Самая большая проблема здесь связана с производительностью эмулятора. Например, ядру Linux требуется около 30-60 секунд для загрузки в PDF, что более чем в 100 раз медленнее, чем обычно. К сожалению, нет способа исправить это, поскольку версия V8, которую использует движок PDF Chrome, имеет отключённый JIT-компилятор, что разрушает его производительность.

Для корневой файловой системы возможны как 64-, так и 32-битные версии. По умолчанию используется 32-битная система buildroot (которая была предварительно собрана и взята из оригинальных примеров TinyEMU), а также 64-битная система Alpine Linux. Однако 64-битный эмулятор примерно в два раза медленнее, поэтому обычно он не используется.

Представлен проект LinuxPDF — Linux в PDF в браузере
https://habr.com/ru/news/878542/

GitHub
https://github.com/ading2210/linuxpdf

Demo
https://linux.doompdf.dev/linux.pdf

Он же в прошлом году запускал DOOM на POS-терминале
https://t.iss.one/tech_b0lt_Genona/4308

А недавно в PDF
https://github.com/ading2210/doompdf
🤯13🎉1
✍️ кек #vercheniye_advice
👏8🍌5😭3🤣2💯1
Я тут подумал, что если у вас, дорогие подписчики и не только, есть какой-то проект (+/- релевантный с тематикой канала: железо, код, журналы, инфраструктура, игры и т.д. и т.п.), то пишите мне в личку @rusdacent, я буду рассказывать о них. Мне оно не сложно, а вдруг кому-то полезно и интересно будет.

Днём проектов объявляю четверг!

Так что если чего будет публиковать, то по четвергам буду выкладывать посты о вас и ваших проектах ❤️

Давно хотел такое заанонсить, но чего-то всё забывал, а тут и момент подходящий.
10👌1🌚1
Forwarded from KotaMota Games
🫡17❤‍🔥9😐6💯4😁2
😁49🤡1
#prog #meme про FP vs OOP
🤣22😁9🍌5👍1🔥1🤔1
Forwarded from ЛГБТ+ эшник
Шаман и Мизулина поцеловались. Теперь официально можно сказать, что они могут трансформироваться в сушество по имени Шизулина.

#mems
🔥20😁13💯4🤡2👍1
Forwarded from Generative Anton
Нашел золото: перевод слова "Нет" на офисный булшит.

Избранное (жизненное):
- Interesting idea, let's explore that next quarter
- What problem are we trying to solve?
- Let’s gather more data before moving forward
- Let’s keep this in mind for future consideration
👍7😁4❤‍🔥2💯2🤡1
13😐4😁3🤨1
Forwarded from Install Wizard
В калькуляторе Windows 11 есть построение графиков а-ля Desmos.

Я даже не могу затянуть старую песню про bloatware, это неиронично круто.
🤔43🔥1😁1😱1💯1😐1
Блог*
Photo
Кого-то всё-таки достало
😁20🙏7
#rustforlinux #suckassstory

TL:DR: Тем временем в Linux один активный долбоёб мейнтейнер Christoph Hellwig активно мешает #Rust for Linux.

DMA (Direct memory access) — технология, предоставляющая (относительно) прямой доступ к RAM для периферии. Это позволяет процессору управлять IO с устройствами асинхронно, не блокируясь на каждую операцию ввода-вывода. Использование DMA позволяет серьёзно повысить быстродействие системы в целом, а для, скажем, видеокарт и сетевых карт это и вовсе практически обязательная вещь из-за объёма обмениваемых данных.

Разумеется, в Linux есть свой API для DMA. По понятным причинам его используют практически все драйвера. Для того, чтобы сделать Rust for Linux практичным, нужно предоставить доступ к DMA для кода на Rust, и соответствующий патч от 8 января 2025 года именно это и делает. В нём добавляется минимально необходимый для использования код: RAII-обёртка над выделенными регионами памяти, операции для записи и небезопасная операция для чтения (почему unsafe? Потому что соответствующий метод read предоставляет доступ к выделенной памяти, как неизменяемый растовый слайс, и это пользователю API нужно удостовериться, что, пока слайс жив, железо не меняет данные под слайсом и тем самым не вносит UB).

Первым же ответом от Кристофа Хэллвига — человека, который отвечает за DMA в Linux — было "No rust code in kernel/dma, please". Да, это ответ целиком. Эта претензия абсолютно необоснована — достаточно взглянуть на первые строчки diff-а, чтобы понять, что меняется лишь растовый код, а не сишный в kernel/dma.

Последующий тред показал, что Кристоф абсолютно против существования растовой абстракции над DMA в любом виде, причём без предоставления внятных технических аргументов.

Скажем, вот как диалог пошёл после первого ответа:

(Miguel Ojeda): > What do you suggest?

> Keep the wrappers in your code instead of making life painful for others.

(Danilo Krummrich): > What does "your code" mean? Duplicated in every driver? Otherwise rust/kernel/dma.rs seems reasonable, no?

> Yes, interfaces to the DMA API should stay in readable C code and not in weird bindings so that it reminds greppable and maintainable.

Последующий обмен сообщениями показал, что Кристоф, судя по всему, считает, что этот код делает Linux многоязычным и потому автоматически плохим. Замечания от мейнтейнеров R4L о том, что никто не ожидает от Кристофа, что он будет заниматься поддержкой растового кода, ни к чему не привели. Сообщения Кристофа содержали такие занимательные цитаты:

(link)
If you want to make Linux
impossible to maintain due to a cross-language codebase do that in
your driver so that you have to do it instead of spreading this cancer
to core subsystems. (where this cancer explicitly is a cross-language
codebase and not rust itself, just to escape the flameware brigade).


(link)
Every additional bit that the another
language creeps in drastically reduces the maintainability of the kernel
as an integrated project. The only reason Linux managed to survive so
long is by not having internal boundaries, and adding another language
complely breaks this.
<...>
I do not want it [Rust — прим. моё] anywhere near a huge C code base that I need to
maintain.


(link)
> I do acknowledge your reservations about the possible maintenance burden
> due to the introduction of a rust (or another language) consumer of the
> dma-api. But I was hoping that we could arrive at some sort of common
> ground?

The common ground is that I have absolutely no interest in helping
to spread a multi-language code base. I absolutely support using
Rust in new codebase, but I do not at all in Linux.


Для понимания масштаба неадекватности претензий: R4L уже существует довольно продолжительное время, причём в транке, по понятным причинам там уже есть приличное количество абстракций над API ядра, а патч, с которого и начался весь сыр-бор, оборачивает один (1) сишный тип, две (2) сишные функции и пачку связанных с этими функциями флагов.
🤡3513🤬6👍2👎1🎉1
Схожие истории:

1. В конце августа 2024 года Wedson Almeida Filho добровольно покинул Rust for Linux:
I am retiring from the project. After almost 4 years, I find myself lacking the
energy and enthusiasm I once had to respond to some of the nontechnical
nonsense
[выделение моё], so it's best to leave it up to those who still have it in them.


2. Реакция на это от Asahi Lina, разработчика Asahi Linux (проекта по реализации дистрибутива Linux, работающего на компьютерах Apple с процессорами Apple Silicon):

I regretfully completely understand Wedson's frustrations.

<...>

A subset of C kernel developers just seem determined to make the lives of the Rust maintainers as difficult as possible. They don't see Rust as having value and would rather it just goes away.

When I tried to upstream the DRM abstractions last year, that all was blocked on basic support for the concept of a "Device" in Rust. Even just a stub wrapper for struct device would be enough.

That simple concept only recently finally got merged, over one year later [выделение моё].
😢144🖕2
Forwarded from Pragmatic Programmer (Nikita Bishōnen)
Решил протестировать сборку компилятором из коробки на Apple M1 Pro vs Ryzen 9 7900X3D (конечно же не холивара ради):

- Finished `release` profile [optimized] target(s) in 1m 47s
- Finished `release` profile [optimized] target(s) in 4m 35s

Угадайте какой процессор где?

Ответ: M1 4 минуты против AMD за 1 минуту
👍7🤔3🤡2🔥1
Блог*
#music Опять из #game dbsoundworks.bandcamp.com/track/disco-descent-1-1
#game

Вчера вышла Rift of the Necrodancer, спинофф Crypt of the Necrodancer. Эта игра ближе к традиционным ритм-играм, но при этом всё равно имеет свои фишки, перешедшие из прошлой игры.

Брать, скорее всего, стоит — я в своё время демку с жалкими четырьмя треками до дыр заиграл, а на фестивале Steam next fest демка вошла в топ 50 наиболее играемых (из более чем 3000!).

Ну и да, до 11 февраля на игру скидка 10%.
❤‍🔥6
Блог* pinned «#rustforlinux #suckassstory TL:DR: Тем временем в Linux один активный долбоёб мейнтейнер Christoph Hellwig активно мешает #Rust for Linux. DMA (Direct memory access) — технология, предоставляющая (относительно) прямой доступ к RAM для периферии. Это позволяет…»
Fuck Zodiac signs.

Tell me your TF2 class.
❤‍🔥11🔥3😁3💩2🥰1👏1😐1