Telegram Web Link
ChatGPT отупел окончательно.

Есть такой давний крейт axum-server-dual-protocol - умеет слушать сразу и http и https и если надо, редиректить первое на второе. Удобно, если у вас все равно нестандартный порт у приложения.

Так вот, появилась как раз такая задача. То что крейт существует - помню, но название забыл. GPT4 мне пол часа доказывал, что такого крейта не существует и никогда не было. И предложил 100500 имплементаций, как это сделать самому (естественно, все не рабочие). Поисковик же выдал нужную ссылку примерно с третьего запроса.

Я уже серьёзно подумываю отменить подписку. Игрушка стала бесполезной. Кто там говорил, как ИИ убьёт всех программеров - подождите ещё лет 50.
😁48👍10👎3
Иногда, не имея overload функций, названия в foreign API в Расте получаются довольно забавные.

Как тебе такое, Java?
😁32💩7🔥4👍3
Когда долго играл в Rust, иногда вылазит боком
😁62👍6💩5👎1
Некоторые наблюдения современного шиндовса 11

- в WSL2 совершенно кривой wayland, если работаете с гуем, лучше его вырубите. WAYLAND_DISPLAY="" спасает ситуацию

- кто-то совершенно упоротый упростил CPU profiles до примитива, теперь шиндовс по каким-то своим правилам, в зависимости от железа, решает с какой частотой должны работать ядра (ну или вы через API). но если хотите обычный нормальный Processor performance boost mode control в Power options, то его можно и включить:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\be337238-0d82-4146-a960-4f3749d470c7" -Name "Attributes" -Value 2


Недокументированные возможности и страшные ключи. Как я от этого отвык. Шиндовс - система не для простого юзера.
😁25👍14
жиза
😁36👍8🔥2
В Rust есть такая функция std::env::current_exe(), которая возвращает вам имя текущего исполняемого файла. Например "/bin/my". Но если файл был удален или заменен другим, значение будет "/bin/my (deleted)".

Почему? Rust тут ни при чем. Хотя частично и при чем - один из способов выяснения полного пути к текущему файлу - это определить его абсолютный путь из args[0] при запуске, либо приклеить к нему текущую папку вручную. Но поскольку в Rust рантайм минимальный - он резолвит путь файла программы в момент запроса, используя ссылку /proc/self/exe.

Которая и меняется "волшебным" образом с "/my/file" на "/my/file (deleted)", как только инода исполняемого файла помечается как удаленная (тоесть cp -f и mv тоже считаются). Почему так? В ядре любят этот суффикс исторически, чуть позже он перекочевал без изменений в пути cgroups. Считается, что это более безопасно, ядро ОС каким-то образом хочет передать вам информацию об изменении, но много вариантов у него нет.

"Фичу" следует учитывать если вы делаете продукт, который например апдейтит сам себя. Заодно она помогает от и мамкиных хакеров, у которых самообновляющиеся руткиты начинают глючить в самый неподходящий момент.

p.s. В случае если каким-то непонятным образом в системе уже есть файл "/bin/my (deleted)" поведение линка в procfs станет непредсказуемым - указывать он будет якобы на существующий, но при open по ссылке там будет находиться ваш удаленный бинарник. Вот такие чудеса.
👍16🔥9💩4
MS Copilot не умеет распознавать лица исторических личностей. Он бы может и мог, но при заливке фото другой ИИ находит и замазывает лицо, поэтому первому остаётся только догадываться.

Война ИИ в прямом эфире.
😁31👍1🔥1
жиза
😁55👍3
Ученые: квантовые компьютеры перевернут мир!
Айтишники:

https://80.lv/articles/doom-can-now-run-on-quantum-computers/
😁27👍6
use std::os::unix::net::UnixDatagram;

fn main() {
let sock = UnixDatagram::bind("./sock").unwrap();
let addr = sock.local_addr().unwrap();

sock.connect_addr(&addr).unwrap();
sock.send(b"test").unwrap();
sock.recv(&mut [0; 4]).unwrap();
}


I expected to see this happen: no crash of the operating system

Instead, this happened: macOS 15.0.1 crashed


https://github.com/rust-lang/rust/issues/131374

Ставьте шиндовс!
😁30👍3🔥2💩2
Некоторые опции и фичи git, которыми я пользуюсь и про которые почему-то мало знают:

rerere.enabled = true - если вы один раз решили мерж-конфликты, а потом что-то пошло не так и вы отменили мерж, при повторе операции гит порешает известное сам.

pull.rebase = true - ненавижу merge при pull. эта опция говорит гиту перенести ваши новые коммиты выше тех, что приехали и история остается красивой.

ну и конечно git push --force-with-lease - если уже делаете force push, это не даст вам затереть изменения коллег.
👍40🔥12💩2
В современном эмбеде HDMI out встретишь чаще, чем uart на консоль, поэтому такие штуки must have. Эмулирует монитор, на другой стороне видно как обычный usb video device, так что картинку смотреть можно чем угодно.

Конкретные модели не даю, так как не реклама. От 15$ примерно все работают нормально.
👍17🔥2
Embed-клава с тачпадом к вчерашнему "монитору". Из минусов - свисток легко потерять, я бы предпочёл wired. Но вариантов, которые влазят в карман, не так много.

(это на говноклава для мобил с блютусами, а нормальное usb)
👍9🔥6💩1
Как-то мимо меня вышла в этом году Operation Galuga (да, лично от легендарной Konami). По сути римейк классической контры NES, но с более расширенным функционалом. И на фоне валят оригинальные треки в современных ремиксах.

Дидам играть всем, взять валокардин, чтоб не сильно ностальгировать о лихих 90х, когда еще всё мог.

Еще выпустите римейк Hard Corps и можно помирать.
🔥18👍4
"but it works on my computer!"
😁58👍1
При использовании асинхронного кода, необходимо всегда помнить про синхронную нагрузку и запускать такие задачи в отдельных потоках, чтобы не блокировать async runtime. Особенно это важно при разработке real-time приложений, где блокировка рантайма уже на пару миллисекунд может сломать всю вашу low-latency конструкцию.

Кроме традиционных синхронных задач (шифрование, сериализация, компрессия и т.д.) часто забывается, что malloc - тоже очень неприятная штука. Например, 10 мегабайт на вектор может выделяться до пары миллисекунд на приличном процессоре уровня AMD 5950X, ембед же уровня Cortex A-72 может на таком застрять и на 10ms. В случае невозможности использования re-use буфера (например он уже пошел отправляться клиентам, а мы читаем следующий), аллокацию памяти необходимо выносить в синхронные задачи.

В последней BUS/RT мы добавили брокеру опцию direct_alloc_limit, позволяющую вынести аллокации выше лимита (это делается, когда sender прислал большой блок данных) на отдельный вспомогательный аллокатор. Который, в зависимости от структуры проекта, может просто создавать векторы в spawn_blocking, либо общаться с отдельным, отвечающим за это потоком, который находится на отдельной группе CPU. Также, аллокатор может вообще запретить выделение блока, руководствуясь собственной логикой относительно идентификатора клиента, либо общей.

Таким образом, в нашем IPC-брокере появилась крутая возможность безопасно совмещать low-latency (<100us) клиентов с high-load, читающими гигабайты из баз. В одной системе и без ущерба друг для друга.
🔥25👍12
жиза
😁48👍10🔥3
Небольшой юбилей, на меня подписалось 1500+ человек.

Канал, напоминаю, задумывался как место для записок, пока в телеге не было Saved messages. А потом я привык, что их комментируют.
😁46👍12🔥9
Сейчас по телеге ходит "вирус", присылают apk, требуют запустить "или аккаунт удалится". Пару дней назад сломали бота украинского резерв+, тоже слали какой-то zip (там вроде ехе под шиндовс).

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

Кстати, apk ещё надо умудриться запустить. В Android в настройках все заблокировано по-умолчанию, кроме магазина. А если у вас Apple - сами не запускайте, просто перешлите друзьям.

Как-то так и живём.
😁46👍6
Опять пересрались с HR в LinkedIn. HR сейчас деградировали как и все остальное и 99% стали синонимом спамера. Естественно, на этот спам в соцсетях ведутся полтора джуна и выхлоп почти нулевой.

А как было раньше? Помню HRы конкурента вычисляли нашу курилку и ходили туда с нашим персоналом. Учитывая, что курить нужно было почти с каждым, а HRов было мало, в среднем один HR выкуривал несколько пачек за рабочий день. Одного даже забрала скорая. Ещё их вычисляли и били. Тогда они ротировались.

В другой раз HR устроился к нам админом на RedHat и *BSD и успешно работал месяца три. HR'а хвалили, обещали премию. Но внезапно он пропал. С ним пропали два наших админа и главный джавист, который писал подключение к биллингам.

Мы злились, конкурент торжествовал.
😁116🔥17👍7👎2
2025/09/16 08:20:07
Back to Top
HTML Embed Code: