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

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
Forwarded from мне не нравится реальность (вафель 🧇)
Имплементируешь нестабильный трейт из стд для своего типа
@
Его изменили 11 дней назад
@
У тебя старый найтли компилятор и ты имплементировал старую версию
@
В CI НОВЫЙ КОМПИЛЯТОР И CI ВАЛИТСЯ
Если бы Рик Эстли писал бы Never gonna give you up в наши дни, то в ней, вероятно, была бы строчка "Never gonna send dickpic"
#prog #rust #article

Офигенная статья о заблуждениях касательно лайфтаймов. Очень хорошее подспорье новичкам. Как пишет автор в своём первом посте:

While learning Rust I was struggling with certain concepts so I tried to organize my thoughts by writing them down in markdown files and well... I soon had several markdown files. I thought "Maybe I should start a blog?" but then I realized "I probably shouldn't, my posts will never be as good as anything written on Rust by Niko Matsakis, Saoirse Shipwreckt, Huon Wilson, David Tolnay, Alexis Beingessner, Daniel Keep, Carl Fredrik Samson, Aleksey Kladov, Amos Wegner, Pascal Hertleif, Dimitri Sabadie, Daniel Henry-Mantilla, Steve Klabnik, Jake Goulding, or Carol Nichols". That list isn't even exhaustive, there's easily dozens of people I left out! There's lots of super smart folk who are already writing about Rust. However, I have one unique advantage that none of those people have: I'm dumb. Super smart people tend to write super smart articles that only other super smart people understand. There's a gap in the market for us dummies, and it's that gap I intend to fill with my writing.

Советую приглядывать за этим блогом, это явно что-то многообещающее.

github.com/pretzelhammer/rust-blog/blob/master/posts/common-rust-lifetime-misconceptions.md
1
#prog

Есть искусство. Есть современное искусство. А есть ну совсем современное искусство: сайт, который исчезнет, если на нём в течение суток не будут размещать ни одного сообщения.
👌1
#prog #cpp #article

Разбор устройства и процесса запуска простейшей программы на C++. В шоу выступают секции бинарника, скрипты компоновщика, запускатели программ и легаси, а также ещё много всего.

На самом деле, весьма познавательное чтиво.

oneraynyday.github.io/dev/2020/05/03/Analyzing-The-Simplest-C++-Program/
#blog #art #gamedev

Кстати, написано частично на расте с компиляцией в WASM
Forwarded from Backtracking (Дима Веснин)
This media is not supported in your browser
VIEW IN TELEGRAM
🌀⭐️ orb.farm ⭐️🌀

виртуальный аквариум со своей экосистемой: водорослями, дафниями, бактериями и, конечно, золотыми рыбками

автор: Макс Битткер
На вопросы "а что с блогом стало" буду теперь отсылать на этот пост.

(thanks @aftertime)
6
Forwarded from oleg_log (Oleg Kovalov)
Стало интересно собрать статистику по Cloud & SaaS. Кто и что использует на работе или просто для себя. На текущем месте работы, а так же и на прошлом.

Даже если вы с этими вещами не работаете (в силу специализации), но знаете, что есть в вашей фирме используется - попрошу вас ответить :)

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

https://forms.gle/v4wppXeC1thfHJ4J9

Спасибо.
🤡1
#prog #web

Хозяйке на заметку: как делать скриншоты в Firefox, включая скриншоты отдельных элементов с разрешением, отличным от экранного

developer.mozilla.org/en-US/docs/Tools/Taking_screenshots
Блог*
Ради чего вы подписаны на канал?
Всем новоподписавшимся предлагаю пройти опрос
C++20 has has me me seeing seeing double double

#prog #cpp
twitter.com/slurpsmadrips/status/1266080792012140545
Блог*
C++20 has has me me seeing seeing double double #prog #cpp twitter.com/slurpsmadrips/status/1266080792012140545
#prog #cpp

И это не бессмыслица, как может показаться с первого взгляда.

Что означает noexcept(noexcept(iter.dereference()))? Это одинаковые имена для разных вещей.

Первое использование noexcept — это noexcept specifier, который является частью типа функции (но не участвует в перегрузке, т. е. две функции не могут отличаться только этим) и описывает, бросает ли функция исключения. Если исключение должно покинуть noexcept функцию, вместо этого вызывается std::terminate, что обычно означает завершение работы программы. После ключевого слова noexcept в скобках может стоять константное булево выражение. В этом случае то, является ли функция не-бросающей-исключения, зависит от того, во что это выражение вычисляется. Это полезно, если функция шаблонная и она пробрасывает исключения из внешних функций.

Второе использование noexcept — это noexcept operator. Он применяется к выражению в скобках и возвращает, является ли выражение noexcept (в смысле спецификации noexcept). Этот оператор можно использовать везде, где требуется выражение булевого типа, но чаще всего он используется вкупе с noexcept specifier. Таким образом, сложив два и два, получаем, что noexcept(noexcept(iter.dereference())) означает, что функция dereference не бросает исключения только в том случае, если метод iterator_type::dereference не бросает исключения.

Что же за история с requires requires? Тут ситуация похожая, но несколько более сложная.

Первое употребление requires относится к require clause. Это, гм... Спецификатор? ...Который принимает константное булево выражение и запрещает инстанцирование шаблона, если выражение вычисляется в false. Это фича предназначается для раннего отсечения неправильного использования шаблонов, раньше, чем инстанцирование будет сделано до конца. Принципиально эта фича, строго говоря, не добавляет нового функционала, поскольку подобные проверки можно было делать и раньше с использованием идиомы SFINAE (тот же std::enable_if), но использование requires приводит к куда более ранним диагностикам и, как следствие, более понятным сообщениям об ошибках.

Второе употребление requires относится к requires expression. Это оператор, который применяется к, гм, "requirement-seq" (это кусок синтаксиса с грамматикой, отличающейся от грамматики C++) и отвечает на вопрос, является код после него well-formed — т. е. компилируется ли он вообще. Как и оператор noexcept, этот оператор может быть использован всюду, где ожидается булево выражение. В итоге мы получаем, что requires requires { iter.dereference(); } означает "эта специализация шаблона определена только тогда, когда на переменной iter можно вызвать метод dereference (и это не приведёт к ошибке компиляции)".

Дополнительное чтение: вопрос на Stack Overflow про requires requires.
Блог*
C++20 has has me me seeing seeing double double #prog #cpp twitter.com/slurpsmadrips/status/1266080792012140545
Лучшая реакция (моего знакомого) на этот твит: "Да-да".

А ещё, пока я писал этот пост, на канале появился 333 подписчик, ура!
(Почему я не писал про это тогда, когда подписчиков было действительно 333? Потому что в число этих подписчиков вхожу и я сам)
⬇️ шутка про borrow checker