Forwarded from ☕️ Мерлин заваривает τσάι 🐌
Оказывается, содержимое картирджей (2кБ) для Atari 2600 помещается на обычный QR-код (макс 7кБ). Осознав этот факт, программист инди игр из Японии разработал и собрал эмулятор консоли на основе Raspberry Pi 3, который принимает бумажные карточки с QR кодами в качестве ROM картриджей.
В статье он приводит ссылки на код и 3D проект для печати, но опасается показывать QR коды с играми полностю, так как это может повлечь за собой обвинение в пиратстве. Впрочем, ROM образы игр всегда можно скачать с множества фанатских сайтов
https://www.codedojo.com/?p=2251
В статье он приводит ссылки на код и 3D проект для печати, но опасается показывать QR коды с играми полностю, так как это может повлечь за собой обвинение в пиратстве. Впрочем, ROM образы игр всегда можно скачать с множества фанатских сайтов
https://www.codedojo.com/?p=2251
#prog #article
Немного (реально немного) о том, почему надо думать о атомарности и модели памяти и о том, как это сказывается на вполне себе прикладном коде. А ещё в кои-то веки внятно рассказано про то, почему операции чтения и записи значений могут быть переставлены.
Немного (реально немного) о том, почему надо думать о атомарности и модели памяти и о том, как это сказывается на вполне себе прикладном коде. А ещё в кои-то веки внятно рассказано про то, почему операции чтения и записи значений могут быть переставлены.
Хабр
Модели памяти C++ и CLR
Это расшифровка-перевод доклада Саши Гольдштейна, признанного лучшим на конференции DotNext 2016 Piter. С годами этот доклад стал лишь актуальнее прежнего: появл...
#prog #rust #article
Толян David Tolnay когда-то писал о том, как можно до некоторой степени сымитировать специализацию для частных случаев, используя тот факт, что Rust может автоматически вставлять ссылку при использовании синтаксиса вызова метода через точку. У этого подхода есть несколько ограничений. Одно из них — это то, что, в отличие от истинной специализации, оно не работает в обобщённых контекстах — и потому не ломает параметричность и пригодно в основном для макросов. Другое — это то, что таким способом можно получить не более двух вариантов различного поведения.
Lukas Kalbertodt развил этот подход, опираясь на в каком-то смысле противоположную фичу deref coercions, и получил подход, позволяющий иметь более одного варианта обобщённого поведения и, более того, явно задавать приоритет применения impl-ов, а не неявно через отношение "строго более специализирован".
Lukas Kalbertodt развил этот подход, опираясь на в каком-то смысле противоположную фичу deref coercions, и получил подход, позволяющий иметь более одного варианта обобщённого поведения и, более того, явно задавать приоритет применения impl-ов, а не неявно через отношение "строго более специализирован".
GitHub
case-studies/autoref-specialization at master · dtolnay/case-studies
Analysis of various tricky Rust code. Contribute to dtolnay/case-studies development by creating an account on GitHub.
Forwarded from partially unsupervised
image_2021-06-29_19-54-41.png
250.8 KB
Дорогие подписчики присылают контент для рубрики "Нерды шутят". Статья, кстати, реально существует.
Forwarded from Linker Unsafe
Boris Usievich:
от макросов надо держаться подальше в 99% случаев
Andrey Davydov:
Спасибо за совет, но я просто держусь подальше от C++
//из @ProCxx
от макросов надо держаться подальше в 99% случаев
Andrey Davydov:
Спасибо за совет, но я просто держусь подальше от C++
//из @ProCxx
Forwarded from мне не нравится реальность (вафель')
Как проверить что строка совпадает с
"a"
? Проще простого!Forwarded from мне не нравится реальность (вафель')
Параноикам просьба отойти от этого поста.
Mara (m_ou_se, активная контрибьюторка раста) придумала как с помощью стабильного компилятора компилировать код, использующий nightly фичи.
Оригинальный пост: [twitter]
Тред с объяснением: [twitter] (честно, я сам не до конца понял как это работает)
Mara (m_ou_se, активная контрибьюторка раста) придумала как с помощью стабильного компилятора компилировать код, использующий nightly фичи.
Оригинальный пост: [twitter]
Тред с объяснением: [twitter] (честно, я сам не до конца понял как это работает)
X (formerly Twitter)
Mara (@m_ou_se) on X
Oh no. It works. On stable.
#prog #rust
На всякий случай, Vec::dedup_by принимает в качестве аргумента функцию от двух
На всякий случай, Vec::dedup_by принимает в качестве аргумента функцию от двух
&mut T
, где левый аргумент — это элемент, который находится правее, а правый аргумент — это аргумент, который находится левее (если считать, что элементы в векторе расположены слева направо). Да, это написано в документации, но кто ж её читает...doc.rust-lang.org
Vec in std::vec - Rust
A contiguous growable array type, written as `Vec<T>`, short for ‘vector’.
#prog #rust
Вы ведь, наверное, слышали про макросы file!, line! и column!, которые разворачиваются в имя файла, строку и колонку места в файле в месте, где они были раскрыты? Это — "магические" макросы, встроенные в компилятор, вы такие написать сами не можете... Точнее, не могли до версии Rust 1.46.
Что поменялось в этой версии? В этой версии появился атрибут
Вы ведь, наверное, слышали про макросы file!, line! и column!, которые разворачиваются в имя файла, строку и колонку места в файле в месте, где они были раскрыты? Это — "магические" макросы, встроенные в компилятор, вы такие написать сами не можете... Точнее, не могли до версии Rust 1.46.
Что поменялось в этой версии? В этой версии появился атрибут
#[track_caller]
(кстати, когда его только предлагали, он назывался blame_caller), который позволяет функции узнать информацию о месте, в котором она была вызвана (ну, почти: месте вызова выше по стеку в первой функции в стеке без этого атрибута). Эта информация предоставляется при помощи магического конструктора std::panic::Location::caller, который возвращает &'static Location<'static>
, и, как показывает пример из документации к конструктору, у Location
есть геттеры, покрывающие функционал вышеуказанных макросов. Таким образом, ничто не мешает написать свой, скажем, line!
, который будет разворачиваться в ::core::panic::Location::caller().line()
.doc.rust-lang.org
file in std - Rust
Expands to the file name in which it was invoked.