Forwarded from 💞Gay Mems🔥 | Гей мемы 💪
Вы не поверите, но в России потребовали заблокировать Duolingo. Активисты нашли в приложении фразы, которые сочли пропагандой «нетрадиционных отношений». Например:
Пожаловались на зелёную сову родители уфимских школьников, которые якобы не знают, как пояснить эти фразы детям, не травмировав их психику
Бен и Питер любят друг друга. Они геи
Клара встретила свою жену Марию в гей-баре
Они думают, что мы друзья, но мы — гей-пара
У моей бабушки есть девушка
Питер и Макс счастливы в браке
Пожаловались на зелёную сову родители уфимских школьников, которые якобы не знают, как пояснить эти фразы детям, не травмировав их психику
😁20👍2❤1
💞Gay Mems🔥 | Гей мемы 💪
Photo
https://daily.afisha.ru/news/84557-sibirskie-aktivisty-usmotreli-propagandu-lgbt-v-duolingo-i-potrebovali-zablokirovat-prilozhenie/
Оригинальный источник — сайт vn . ru, но он у меня не открывается
Оригинальный источник — сайт vn . ru, но он у меня не открывается
Афиша
Сибирские активисты усмотрели пропаганду ЛГБТ* в Duolingo и потребовали заблокировать приложение
Сибирская правозащитная группа «Радетель» попросила у Роскомнадзора заблокировать приложение для изучения языков Duolingo, найдя в нем пропаганду ЛГБТ*. Об этом сообщает VN.ru.
👍3🤡1
#prog #rust #rustlib
embedded-cli — CLI in Rust with autocompletion, subcommands, options, help and history for embedded systems (like Arduino or STM32)
По понятным причинам требует предоставления внешних буферов для обработки аргументов.
embedded-cli — CLI in Rust with autocompletion, subcommands, options, help and history for embedded systems (like Arduino or STM32)
По понятным причинам требует предоставления внешних буферов для обработки аргументов.
GitHub
GitHub - funbiscuit/embedded-cli-rs: CLI in Rust with autocompletion, subcommands, options, help and history for embedded systems…
CLI in Rust with autocompletion, subcommands, options, help and history for embedded systems (like Arduino or STM32) - funbiscuit/embedded-cli-rs
🔥5
Блог*
Photo
#prog #rust #rustasync #article
Цитата из статьи лодочника Let futures be futures, в которой он аргументирует против попыток унифицировать синхронный и асинхронный код.
Цитата из статьи лодочника Let futures be futures, в которой он аргументирует против попыток унифицировать синхронный и асинхронный код.
❤2
Блог*
#prog #rust #rustasync #article Цитата из статьи лодочника Let futures be futures, в которой он аргументирует против попыток унифицировать синхронный и асинхронный код.
#prog #article
В этой статье лодочник ссылается на Futures aren't ersatz threads. Говорящее название.
Futures present a concurrent programming model that is appealing on its own [выделение моё]. They should not be seen as a poor-man’s version of threads.
В этой статье лодочник ссылается на Futures aren't ersatz threads. Говорящее название.
Futures present a concurrent programming model that is appealing on its own [выделение моё]. They should not be seen as a poor-man’s version of threads.
#prog #rust #article
Rust web frameworks have subpar error reporting
Автор излагает свои требования к репорту и обработке ошибок (TL;DR: ошибки не должны теряться ни для клиента веб-сервера, ни для админа веб-сервера), показывает, как в этом отношении не работают ни axum, ни actix-web (хотя последний близок) и показывает, как эта проблема решается в его новом веб-фреймворке, pavex.
Rust web frameworks have subpar error reporting
Автор излагает свои требования к репорту и обработке ошибок (TL;DR: ошибки не должны теряться ни для клиента веб-сервера, ни для админа веб-сервера), показывает, как в этом отношении не работают ни axum, ни actix-web (хотя последний близок) и показывает, как эта проблема решается в его новом веб-фреймворке, pavex.
Lpalmieri
Rust web frameworks have subpar error reporting
None of the major Rust web frameworks have a great error reporting story. We try to implement robust error logging with both axum and Actix Web and then compare the results with Pavex, an upcoming Rust web framework.
#prog #go
6 февраля вышла версия Go 1.22.
Среди прочего в стандартную библиотеку добавлен пакет math/rand/v2. Примечательно это по двум причинам.
Первая: это первый случай, когда в стандартную библиотеку Go добавляют вторую версию пакета. На мой взгляд, это вполне себе довод в пользу того, чтобы не делать std слишком богатой. (Конечно, тут ещё далеко до безобразия Python с urllib3, но кто знает, может, и до этого дойдёт).
Вторая: в proposal на этот пакет упомянуто следующее:
2. Remove Source.Seed, Rand.Seed, and top-level Seed. Top-level Seed is deprecated as of Go 1.20. Source.Seed and Rand.Seed assume that the underlying source can be seeded by a single int64, which is only true of a limited number of sources. Specific source implementations can provide Seed methods with appropriate signatures, or none at all for generators that cannot be reseeded; the details of seeding do not belong in the general interface. [выделение моё]
В оригинальном дизайне rand получение случайных значений действовало через тип
Для сравнения, в растовом rand инициализация из начального значения вынесена в отдельный трейт SeedableRng, где сид определяется через ассоциированный тип.
===========
Другая вещь, которая куда как более стрёмная — это тот факт, что тип
6 февраля вышла версия Go 1.22.
Среди прочего в стандартную библиотеку добавлен пакет math/rand/v2. Примечательно это по двум причинам.
Первая: это первый случай, когда в стандартную библиотеку Go добавляют вторую версию пакета. На мой взгляд, это вполне себе довод в пользу того, чтобы не делать std слишком богатой. (Конечно, тут ещё далеко до безобразия Python с urllib3, но кто знает, может, и до этого дойдёт).
Вторая: в proposal на этот пакет упомянуто следующее:
2. Remove Source.Seed, Rand.Seed, and top-level Seed. Top-level Seed is deprecated as of Go 1.20. Source.Seed and Rand.Seed assume that the underlying source can be seeded by a single int64, which is only true of a limited number of sources. Specific source implementations can provide Seed methods with appropriate signatures, or none at all for generators that cannot be reseeded; the details of seeding do not belong in the general interface. [выделение моё]
В оригинальном дизайне rand получение случайных значений действовало через тип
Rand
, который оборачивал значение, реализующее интерфейс Source
:type Source interface {
Int63() int64
Seed(seed int64)
}
В v2 метод Seed
убрали, а метод Int63
поменяли на Int64
— и совершенно верно, ибо в этом интерфейсе торчали уши конкретной дефолтной реализации Source
. Однако заявление "the details of seeding do not belong in the general interface", как мне кажется, вызвано не общими соображениями, а ограничениями Go. Именно, в идеале у каждого источника случайности должен быть свой тип для сида — но в Go нельзя сделать тип, который является частью интерфейса и который может быть определён реализацией.Для сравнения, в растовом rand инициализация из начального значения вынесена в отдельный трейт SeedableRng, где сид определяется через ассоциированный тип.
===========
Другая вещь, которая куда как более стрёмная — это тот факт, что тип
Rand
может запрашивать данные из Source
только через метод Int64
, а потому остальные методы не могут эксплуатировать тот факт, что они работают с конкретным типом источника случайности, и потому не могут использовать специфичные для этих типов оптимизации. В частности, реализация Rand.Int32
попросту зовёт Int64
на внутреннем Source
и делает битовый сдвиг, отбрасывая младшие 33 бита. Если Rand.Int32
вызывается в цикле, то выходит, что где-то половина работы источника случайности уходит в никуда.go.dev
Go 1.22 is released! - The Go Programming Language
Go 1.22 enhances for loops, brings new standard library functionality and improves performance.
🤔2