1.96K subscribers
3.85K photos
147 videos
15 files
4.02K links
Блог со звёздочкой.

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
Как называется процесс диагностики нейроотличных состояний?

Спектральный анализ
😁21
#meme про тормоз
🥰9😁3
Forwarded from Добрый вечер, я диспетчер
Авиасейлс
12😁12
#meme про бисексуальную повестку
13🌚8😁2
Forwarded from Random Rust Dev
😁23👌5👍3
Incident Report: CVE-2026-LGTM

Необычный жанр: #itsec-сатира (и ещё немного #ml)
😁4
We deserve a treat ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚11😭2
Forwarded from k8s (in)security (r0binak)
Massimiliano Oldani (sgrakkyu) опубликовал PoC, который из непривилегированного процесса внутри изолированного по сети контейнера даёт полноценный побег на хост с root. В основе — свежезакрытая уязвимость IPv6-стека ядра Linux: при сборке UDPv6-фрагментов через splice() ядро выделяло буфер только под заголовки, забывая про перенос выровненных байтов (fraggap), и запись уходила за конец объекта прямо в служебную структуру skb_shared_info.

Дальше один испорченный байт nr_frags разворачивается в page use-after-free и технику Dirty Pagetable с произвольным чтением/записью ядра: KASLR обходится через SMP-трамплин, SELinux глушится подменой пролога avc_denied(), а сам побег из контейнера делается через core_pattern. Всё срабатывает детерминированно, без heap-grooming и без каких-либо привилегий.

Баг тихо жил с ядра 6.0, но эксплуатировать его стало возможно только с версии 6.6, после которой он попал во все поддерживаемые ветки и был незаметно убран коммитом в середине июня — без CVE, без advisory и без бэкпорта в stable, что автор и критикует: фикс лежит в открытом дереве, фактически раздавая рабочий 0-day. Опубликованный PoC намеренно ослаблен и работает только на ядрах без CONFIG_INIT_ON_ALLOC (RHEL/CentOS). Боевую версию обещают после выхода патчей.
🤩21
...вообще всё
💯18🥰4😁1
#гейчят радует:

Если муж и жена — одна сатана, то муж и муж — один уж
💯5🍌3
I think LLM is a Literal Lies Machine.


#ml #quotes
😭7👍3😢2😁1🤩1
PRIDE MONTH IS OVER

STOP BEING GAY
💔19💯10🎉7❤‍🔥1
Блог*
#prog #csharp #suckassstory C# — пример того, как не надо делать язык программирования. C# очень странно относится к затенению переменных. Обычно он это запрещает. Вот такой код, например, не компилируется: string x = "Hi"; if (true) { string x = "Bye";…
#prog #csharp #suckassstory

using System;
using System.Collections.Generic;

var arr = new int[] {1, 2, 3};
Console.WriteLine(arr); // System.Int32[]
var list = new List<int>{1, 2, 3};
Console.WriteLine(list); // System.Collections.Generic.List`1[System.Int32]


Блин, спасибо, очень полезно.

Для сравнения, #java:

import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;

class Main {
public static void main() {
var arr = new int[] {1, 2, 3};
System.out.println(arr); // [I@251a69d7
System.out.println(Arrays.toString(arr)); // [1, 2, 3]
var list = new ArrayList<>(List.of(1, 2, 3));
System.out.println(list); // [1, 2, 3]
}
}
😁5🍌5
Блог*
#prog #csharp #suckassstory using System; using System.Collections.Generic; var arr = new int[] {1, 2, 3}; Console.WriteLine(arr); // System.Int32[] var list = new List<int>{1, 2, 3}; Console.WriteLine(list); // System.Collections.Generic.List`1[System.Int32]…
Справедливости ради, в C# всё же можно добиться желаемого через

Console.WriteLine($"[{string.Join(", ", arr)}]"); // [1, 2, 3]


Но выглядит как-то слишком многословно для такой базовой операции. Даже в Java для этого сделали отдельный метод, пусть и на util-классе
👍3
Forwarded from AlexTCH
You can now connect your JetBrains IDE to LinkedIn and showcase your real tool usage rather than relying solely on self-reported skills.

This is so disgusting...

1. Like, being proficient in IDE usage is the most important skill for a developer now? What, the code is now being written by an LLM "agent", and the "programmer" needs only to know what buttons to click in an IDE to close a ticket in Jira?

2. If I say I know my way around an IDE, I cannot be trusted? I need to prove it now?

3. Surveillance and automatic time tracking. "I'm loving it!"

Great job, folks. Thank you so much.
11🌚6🤯3😢2
Forwarded from Random Rust Dev
- Copilot, collect this Iterator into Vec
- Say no more
😁16🤮7💩1
#prog #rust #rustreleasenotes

(в силу непонятных причин я почему-то полностью пропустил этот релиз, который был аж 28 мая)

Вышла версия Rust 1.96.0! Как всегда, тут только избранные части, а всё целиком в детальных заметках о релизе.

▪️До стабильной версии дошли Range, RangeFrom и RangeInclusive из core::range. В отличие от существующих типов диапазонов, эти типы реализуют IntoIterator, но не Iterator. Это позволяет им быть Copy и иметь публичные поля без подводных камней, присущих неявно копируемым итераторам. Как вы могли заметить, в этот список не входят RangeTo и RangeFull, но они и так не могли быть итераторами и потому реализовывали Copy. В следующей edition планируют переключить синтаксис диапазонов на создание этих новых типов. До этого переключение между типами облегчено за счёт реализаций From между новыми и старыми типами.

▪️Стабилизировали макросы assert_matches! и debug_assert_matches!, которые проверяют не на равенство, а на соответствие паттерну (и потому могут дать более внятное сообщение об ошибке, чем assert_eq!. Пример из блога:

use core::assert_matches;

/// [Random Number](https://xkcd.com/221/)
fn get_random_number() -> u32 {
// chosen by a fair dice roll.
// guaranteed to be random.
4
}

fn main() {
assert_matches!(get_random_number(), 1..=6);
}


Пример сообщения об ошибке:

use core::assert_matches;

fn main() {
let x = ('a', None::<i32>);
assert_matches!(x, ('a' | 'b' | 'c', Some(42)));
}


⬇️

thread 'main' (31) panicked at src/main.rs:5:5:
assertion `left matches right` failed
left: ('a', None)
right: ('a' | 'b' | 'c', Some(42))
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


Как и другие assert*-макросы, туда можно добавить аргументы для дополнительного форматирования при панике.

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

▪️Теперь можно итерироваться по диапазонам из беззнаковых `NonZero` чисел.

▪️Определение "valid to read/write" для сырых указателей теперь явно исключает null. Некоторые функции, тем не менее, всё ещё позволяют пользоваться null-указателями для доступов нулевого размера, но теперь это исключения из общего правила.

(согласно CAD97 — члену команды операционной семантики — такое поведение было и раньше, просто теперь оно задокументировано)

▪️Манифесты для cargo теперь поддерживают назначение флагов для rustdoc в зависимости от cfg-предикатов.

▪️rustdoc теперь не вырезает <p>-теги из сообщений о устаревании (deprecation).

▪️rustdoc теперь разделяет функции на типе в боковой панели на ассоциированные функции (которые нельзя вызвать через точку) и методы. Полезно, но терминология, на мой взгляд, неудачная: методы тоже являются ассоциированными функциями.

▪️repr(Int) меняет представление enum-ов, делая явный дискриминант всегда существующим... По крайне мере, в теории. Оказалось, что ранее для ненаселённого типа включались оптимизации раскладки, которые меняли размер таких типов в ноль, вопреки тому, что обещала документация. Теперь это пофиксили.

▪️Приватные типы в RPITIT ("return position impl trait impl trait") теперь являются ошибкой компиляции.
5👍2
Какая ирония

(справа кнопка для суммирования поста через "ИИ")
🌚12🤩2