Блог* – Telegram
1.9K subscribers
3.46K photos
135 videos
15 files
3.7K links
Блог со звёздочкой.

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
Жизнь, сука, бессовестнее любой литературы.
Надысь на Мамаевом Кургане устроили фейерверк с салютами, ёпта. Потому что там, панимаш, святыня -- потому и жгли.
А нонче заломали мужика из Ростова, который там файер запалил. Потому что там, панимаш, святыня, а он зажёг.
Ять, ять, ять.
У меня уже лицо устало смеяться.
😁7🔥4🥴1
УК РФ = Украинский кодекс Российской Федерации
🤡14🥴9💩4🌚2👍1💯1
#meme про общественное давление
Forwarded from TrapsWorld
😁10🤡41💩1
#rust #article #abnormalprogramming

Читателям моего блога, вероятно, знакомо такое понятие, как квайн: программа, организованная таким образом, что при запуске печатает собственный текст (буквальное обращение к файлу с исходником считается читерством).

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

Что из этого следует? Можно создать архивный аналог квайна: архив, который распаковывается в сам себя. В статье Zip Files All The Way Down рассказывается о том, как этого можно достичь.
🔥6
#prog #article #suckassstory

Why Chrome Crashes the Rust Book’s Web Server

TL;DR: Chrome в целях оптимизации загрузки может открыть больше одного TCP-соединения к серверу для доступа к одной веб-странице и при этом закрыть их, так ничего и не послав.
🤔3🤯3
#культурнаяпрограмма

Coding Machines

Небольшой научно-фантастический рассказ, вдохновлённый "Reflections on trusting trust" Кена Томпсона (да, источник вдохновения является спойлером)
🥰14👍4🌚3
This media is not supported in your browser
VIEW IN TELEGRAM
👍10
👍18💩11💯7❤‍🔥2👎2
👍16🌚4🍌2💩1
Forwarded from The After Times
😘 Хакеры Гей-Фурри взломали ядерную лабораторию США и требуют начать исследования по созданию кошкодевочек

В недавнем инциденте кибербезопасности, группа хакеров SiegedSec, самоопределяющаяся как "Гей Фурри Хакеры", осуществила взлом Американской ядерной лаборатории INL. Эта группа, известная своими атаками на серверы НАТО, на этот раз получила доступ к персональным данным сотрудников INL, включая социальные номера и домашние адреса.

В ответ на взлом, хакеры предложили необычную сделку лаборатории:

Мы готовы заключить сделку с INL. Если они начнут исследования по созданию в реальной жизни кошкодевочек, то мы все удалим.


Помимо прочего, SiegedSec известна своими политическими мотивами, включая атаки на правительственные организации в знак протеста против нарушений прав человека и дискредитацию трансгендеров.

INL, филиал Министерства энергетики США, работает над различными проектами, в том числе в области ядерных реакторов и устойчивой энергетики, насчитывая более 5000 сотрудников.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰13😁2👎1
#prog #rust хайлайты:

▪️На реализациях метода Debug::fmt, сгенерированных derive-макросом, теперь добавляется #[inline]. Суммарно это привело к меньшему времени компиляции (!) на громадном количестве компиляторных бенчмарков. Подробнее в разборе (ищите Emit #[inline] on derive(Debug)).

▪️Парсер теперь восстанавливается от ключевых слов перед fn с дубликатами или в неправильном порядке. (для справки, порядок pub, default, const, async, unsafe, extern)


▪️Компилятор теперь предупреждает при использование нестабильной фичи через флаг -Ctarget-feature. Да, раньше не предупреждал.

▪️Стабилизировали Option::inspect и Result::{inspect, inspect_err}:

impl Option<T> {
pub fn inspect<F: FnOnce(&T)>(self, f: F) -> Self;
}
impl Result<T, E> {
pub fn inspect<F: FnOnce(&T)>(self, f: F) -> Self;
pub fn inspect_err<F: FnOnce(&E)>(self, f: F) -> Self;
}


▪️Как я рассказывал, в модуле fmt стандартной библиотеки есть хелперы DebugList и прочие для облегчения кастомной реализации Debug. Их недостатком можно назвать тот факт, что методы для форматирования очередной порции структуры (например, DebugList::entry) принимают на вход значение, реализующее Debug, и вызывают на нём метод Debug::fmt. Как рассказывается в мотивации, это на практике приводило к использованию одноразовых типов, необходимых лишь ради их реализации Debug. Теперь к этим типам добавили методы, которые форматируют очередную порцию при помощи переданной аргументом функции, принимающей на вход ссылку на fmt::Formatter.

▪️В настоящий момент Rust поддерживает атрибуты на item-ах, но не на отдельных выражениях. В частности, в Rust нельзя непосредственно навесить пару атрибутов #[cfg(..)] на два выражения в конце функции (которые предназначены для возврата значения из функции). Попытка записать такой код приводила к не самой полезной ошибке Unexpected token: expected ;, found #. Esteban Kuber внёс изменение в парсер, которое распознаёт эту ситуацию и предлагает обходной путь: добавление точки с запятой или оборачивание выражений в фигурные скобки.

▪️Компилятор теперь предупреждает о неиспользуемых Pin<P>, где на P есть атрибут #[must_use]. В частности, теперь компилятор предупреждает о коде вроде такого (пример из PR):

fn foo() -> Pin<Box<dyn Future<Output = i32>>> {
Box::pin(async { 42 })
}

// call `foo`, but forget to await the result
foo();


▪️Если выражение с оператором сравнения не компилируется из-за того, что типы разные за вычетом ссылки с одной стороны, то компилятор теперь предлагает разыменовать ссылку вместо взятия ссылки для другого аргумента. Пример:

fn main() {
let i: &i64 = &1;
if i < 0 {}
}


До:


error[E0308]: mismatched types
--> src/main.rs:3:12
|
3 | if i < 0 {}
| ^ expected `&i64`, found integer
|
help: consider borrowing here
|
3 | if i < &0 {}
| +

После:


error[E0308]: mismatched types
--> src/main.rs:3:12
|
3 | if i < 0 {}
| ^ expected `&i64`, found integer
|
help: consider dereferencing the borrow
|
3 | if *i < 0 {}
| +

▪️Как я уже писал, компилятор предлагает вызвать конструктор при попытке сконструировать структуру с приватными полями. Реализовано это было довольно костыльно: компилятор просто искал метод на типе с именем new и предлагал его, вообще не смотря на типы. Теперь компилятор предлагает все методы, которые возвращают Self. Кусочек из тестов:
👍21