1.83K subscribers
3.24K photos
127 videos
15 files
3.52K links
Блог со звёздочкой.

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
💯10😢3
В сеть утекли фото админа
Forwarded from Живтоне/Animolz
Сыч (сычует)
❤‍🔥12🥰2
💯21❤‍🔥4😁3
#meme про переключатель
Forwarded from Полный Песец 🔞
я это даже комментировать не буду, я ору.
🍌12
Вы не поверите, но в России потребовали заблокировать Duolingo. Активисты нашли в приложении фразы, которые сочли пропагандой «нетрадиционных отношений». Например:

Бен и Питер любят друг друга. Они геи

Клара встретила свою жену Марию в гей-баре

Они думают, что мы друзья, но мы — гей-пара

У моей бабушки есть девушка

Питер и Макс счастливы в браке


Пожаловались на зелёную сову родители уфимских школьников, которые якобы не знают, как пояснить эти фразы детям, не травмировав их психику
😁20👍21
Телега такая телега
😁5🍌4🤝2👍1
Что такое глубокая связь?

Это трансатлантический оптоволоконный кабель.
🔥9😁1
#prog #rust #rustlib

embedded-cli — CLI in Rust with autocompletion, subcommands, options, help and history for embedded systems (like Arduino or STM32)

По понятным причинам требует предоставления внешних буферов для обработки аргументов.
🔥5
❤‍🔥9🤔2
Блог*
Photo
#prog #rust #rustasync #article

Цитата из статьи лодочника 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.
#prog #rust #article

Rust web frameworks have subpar error reporting

Автор излагает свои требования к репорту и обработке ошибок (TL;DR: ошибки не должны теряться ни для клиента веб-сервера, ни для админа веб-сервера), показывает, как в этом отношении не работают ни axum, ни actix-web (хотя последний близок) и показывает, как эта проблема решается в его новом веб-фреймворке, pavex.
#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, который оборачивал значение, реализующее интерфейс 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 вызывается в цикле, то выходит, что где-то половина работы источника случайности уходит в никуда.
🤔2