DevOps
23.9K subscribers
1.25K photos
159 videos
15 files
1.09K links
По всем вопросам- @workakkk

@itchannels_telegram - 🔥полезные ит-каналы

https://t.me/Golang_google - Golang программирование

@golangl - golang chat

@GolangJobsit - golang channel jobs

@golang_jobsgo - jobs

РКН: clck.ru/3FmvZA

#VRHSZ
Download Telegram
Пулер PgDoorman: больше запросов, меньше ожидания

Разработчики команды Ozon Tech выкатили в опенсорс свой многопоточный пулер соединений PostgreSQL. В опубликованных тестах он показывает производительность в 4 раза выше PgBouncer.

Кэширование подготовленных запросов, fallback через Patroni и другие преимущества смотрите на страничке пулера: https://ozon.tech/pg_doorman
👍13
C может превратить число 1 078 530 011 в число π. И это не магия!

В Python преобразование int в float создаёт число с новым числовым значением.

В C можно сделать совершенно другое: интерпретировать те же самые 4 байта как число другого типа.


#include <stdio.h>
#include <stdint.h>
#include <string.h>

int main(void) {
uint32_t bits = 0x40490fdb;
float pi;

memcpy(&pi, &bits, sizeof(pi));

printf("%.6f\n", pi);
// 3.141593

return 0;
}


Что здесь происходит?

- 0x40490fdb - набор из 32 бит.
- memcpy копирует эти биты в память переменной float.
- IEEE 754 интерпретирует их как число с плавающей точкой.
- На выходе получаем приблизительное значение π: 3.1415927.

Два принципиально разных действия:

- float(123) - преобразовать числовое значение.
- memcpy - перенести битовое представление без изменения.

Этот приём называется *type punning*. Через memcpy его можно реализовать в C без нарушения правил strict aliasing.

Условие: здесь предполагается 32-битный IEEE 754 float.

Один и тот же набор битов может означать совершенно разные вещи в зависимости от типа данных.
👍6❤2🔥2
Discord переписывают на Rust. Electron отправляют на пенсию

Технический директор Discord Станислав Вишневский подтвердил, что компания разрабатывает новый клиент на Rust, полностью отказываясь от Electron на десктопе и React Native на мобильных устройствах.

Вместо Electron разработчики используют GPUI, нативный UI-фреймворк на Rust с GPU-ускорением. Мобильные приложения сохранят нативный интерфейс, но будут использовать общую с десктопом логику на Rust.

Тестовый клиент Discord Phoenix потребляет всего 290,2 МБ оперативной памяти. Для сравнения, нынешний Discord у некоторых пользователей занимает 1-2 ГБ и больше. Правда, полноценного сравнительного тестирования пока нет.

Discord использует Rust ещё с 2018 года: на нём уже работают части инфраструктуры, голосовые технологии и отдельные компоненты клиента.

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

Источник: https://x.com/svishnevskiy/status/2118081920194203799
❤9🥴1
От скриншота до интерфейса: GitHub-проекты для генерации UI и дальнейшей разработки.

1. screenshot-to-code
Загружаете скриншот – получаете код интерфейса. Поддерживает HTML, Tailwind, React и Vue.

https://github.com/abi/screenshot-to-code

2. OpenUI
Описываете интерфейс словами, смотрите результат и уточняете его в диалоге. Подходит для быстрого прототипирования.

https://github.com/wandb/openui

3. shadcn/ui
Готовые настраиваемые компоненты для сборки интерфейсов. В исходной подборке ошибочно назван «клоном v0»: сам репозиторий не преобразует скриншоты в код.

https://github.com/shadcn-ui/ui

4. OpenHands
Среда для работы с ИИ-агентами над проектом: полезна на этапе реализации и доработки приложения.

https://github.com/OpenHands/OpenHands
👍4❤3🔥1
Функция на C может вернуться из `return`, а при следующем вызове продолжить с того же места. Для этого хватит трёх макросов.

Создатель PuTTY Саймон Тэтем описал трюк, который имитирует корутины в обычном C с помощью switch/case и __LINE__.


#define crBegin \
static int state = 0; switch (state) { case 0:

#define crYield(x) do { \
state = __LINE__; return (x); \
case __LINE__:; \
} while (0)

#define crFinish }

int next_value(void) {
crBegin;
while (1) {
crYield(10);
crYield(20);
crYield(30);
}
crFinish;
}


Последовательные вызовы next_value() вернут 10, 20, 30, 10…

Как это работает: перед выходом функция сохраняет номер строки в static`-переменной. При следующем вызове `switch переводит выполнение к соответствующему case, прямо за предыдущий return.

Зачем это нужно: обработчик протокола или парсер можно написать последовательным кодом, выдавая результат по частям.

Есть ограничения: обычные локальные переменные не сохраняются между вызовами, два crYield нельзя размещать на одной строке, а static хранит одно общее состояние для всех вызывающих. Для независимых экземпляров состояние выносят в отдельную структуру.

www.chiark.greenend.org.uk/~sgtatham/coroutines.html
❤6🤓6
CEO Portainer больше не рекомендует Docker. Разработчикам предлагают готовиться к Kubernetes

Neil Cresswell, CEO Portainer, заявил, что больше не может рекомендовать Docker для долгосрочного использования. Причина - безопасность в эпоху автономных приложений и ИИ-агентов.

Проблема в том, что Docker Engine предоставляет агентам с доступом к Docker socket очень широкие полномочия. Демон работает с правами root, а компрометация контейнера при определённых условиях может привести к выходу на хост и доступу к другим контейнерам.

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

Поэтому Portainer меняет стратегию.

Что изменится:

Portainer 3 станет Kubernetes-first. Новые возможности управления политиками безопасности, GitOps и инфраструктурой будут в первую очередь развиваться для Kubernetes.

Docker, Docker Swarm и Podman сохранят поддержку исправлений ошибок и уязвимостей, но новых функций для них практически не планируется.

Portainer CE продолжит существовать на ветке 2.x. Версия 2.45 LTS станет последней основной версией этой линейки. Отдельной сборки Community Edition для Portainer 3 не будет, однако сама Portainer 3 останется бесплатной в рамках программы 3 Nodes Free.

Для миграции компания предлагает Portainer-D2K. Это слой совместимости, который переводит Docker API в операции Kubernetes. Можно продолжать пользоваться Docker CLI и Docker Compose, разворачивая приложения в Kubernetes.

Позиция Portainer показательна: с появлением автономных ИИ-агентов привычная модель безопасности контейнеров требует пересмотра. Управлять тем, что агент может запустить, становится не менее важно, чем контролировать сам контейнер.

Источник: https://www.portainer.io/blog/portainer-3-is-kubernetes-first-not-kubernetes-only
😁6❤2👍1👎1🥰1
Rust, который наконец становится понятным 🦀

Давно хочешь выучить Rust, но ownership, borrowing и lifetimes выглядят как отдельный вид боли?

Этот курс проведёт тебя с самого начала до уровня, где ты уже пишешь реальные системные и сетевые программы.

Ты разберёшь:
Ownership → Borrowing → ошибки → коллекции → Generics → Traits → модули → тесты → сетевой код

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

🔥 Rust с нуля
🔥 5–6 часов в неделю
🔥 Практика после каждого урока
🔥 Подойдёт после Python, JavaScript, Java и других языков
🔥 Можно начать сразу

В конце у тебя будет понимание Rust, с которым уже можно писать быстрые backend-сервисы, сетевые приложения и системные утилиты, а не смотреть на borrow checker как на врага.

Пора добавить Rust в свой стек. Начинай курс и пиши первый код уже сегодня: https://stepik.org/a/294885/
❤2🔥2👍1
Forwarded from Machinelearning
🌟 Anthropic выложила систему криптографической верификации инференса моделей

Команда Frontier Red Team опубликовала открытый прототип FlashProve, доказуемого вывода на zkSNARK.

Claude участвовал в разработке - он подобрал способы применить свежие методы из криптографической литературы и написал спецификацию протокола.

Эту технику знают по криптовалютам, где она подтверждает правильность транзакции, не раскрывая её содержимого.


Здесь её используют когда пользователь платит по API за конкретную модель и не может быть полностью уверен, что отвечала именно она.

Например, маршрутизатор способен подставить модель подешевле, а злоумышленник - вмешаться в поток токенов.


🟡 Механика

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

Проверяющему нужны отпечаток, запрос и ответ, веса не нужны, заново запускать модель тоже не надо.

🟡 Тесты

Опыт проводили на открытых четырёхбитных весах Llama 4 Maverick объёмом 232 ГБ.

Подготовительная фаза на одном H100 и 24 ядрах CPU заняла около 39 минут, выпущенного отпечатка хватает примерно на 16 млн запросов.

Дальше та же H100 выдаёт доказательства со скоростью около 110 токенов в секунду, одно весит примерно 19 МБ на запрос с окном в 1024 токена.

Проверка обходится без GPU - 17 секунд на 24 потоках процессора, 21 секунда на одном, плюс скачать отпечаток на 6,5 МБ.

Профит по сравнению с существующими открытыми системами получился заметный - VerInf на той же модели выдавал около 0,02 токена в секунду при доказательстве на 93,6 ГБ.


🟡Нюансы

На пакете из 24 запросов доказательства съедают примерно в 72 раза больше времени GPU, чем обычный вывод той же модели на vLLM, а на самой высокой из проверенных нагрузок - до 94 раз.

Одно доказательство подтверждает один выходной токен, окно контекста ограничено 1024 токенами, и до полных контекстов топовых моделей технологию ещё предстоит попилить.

Гарантия относится к целочисленной версии и к режиму greedy decoding, когда модель каждый раз берёт самый вероятный следующий токен, так что ответы с плавающей точкой или с семплированием могут расходиться.

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

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

В примерах лежат принятое доказательство, доказательство полного размера и отклонённые, с разбором причин.


📌Лицензирование: Apache 2.0


🟡Статья
🟡Техотчет
🖥GitHub


@ai_machinelearning_big_data

#AI #ML #LLM #FlashProve #Anthropic
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Почему все переписывают всё на Rust? Объясняю за 60 секунд

В C и C++ память управляется вручную, и около 70% серьёзных уязвимостей в Chrome и Windows связаны именно с ней. Rust решает это через владение: у каждого значения один владелец, ссылки на чтение можно раздавать многим, а на изменение только одну. Всё проверяет компилятор, без сборщика мусора и без потери скорости.

Учим Rust каждый день: https://t.me/rust_code

https://youtube.com/shorts/3b4Ch9Ju8ZA?si=GqRjb05g_HSAnobT

Большой бесплатный курс по Rust - https://www.youtube.com/watch?v=98KlcWVYiXw
👍7🔥6❤2
Forwarded from Golang
🎂 Go исполнилось 17 лет!

10 ноября 2009 года Google впервые публично представила язык Go. Его создали Роб Пайк, Кен Томпсон и Роберт Гризмер.

Несколько интересных фактов:

🐹 Go разрабатывали как ответ на сложности больших C++-проектов и медленную компиляцию.

⚡ Компилятор Go изначально проектировали с упором на скорость сборки.

🧵 Goroutines позволяют запускать тысячи и даже миллионы лёгких конкурентных задач.

📡 Каналы (channels) стали одним из главных инструментов взаимодействия между горутинами.

☁️ Docker, Kubernetes, Prometheus и Terraform написаны на Go.

Сегодня Go используют для облачной инфраструктуры, микросервисов, DevOps-инструментов и высоконагруженных backend-систем.

17 лет, а язык по-прежнему активно развивается.

С днём рождения, Go! 💙

👣Go-папка в честь др!

@Golang_google

#golang
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉9❤7👍2🔥1