Пулер PgDoorman: больше запросов, меньше ожидания
Разработчики команды Ozon Tech выкатили в опенсорс свой многопоточный пулер соединений PostgreSQL. В опубликованных тестах он показывает производительность в 4 раза выше PgBouncer.
Кэширование подготовленных запросов, fallback через Patroni и другие преимущества смотрите на страничке пулера: https://ozon.tech/pg_doorman
Разработчики команды Ozon Tech выкатили в опенсорс свой многопоточный пулер соединений PostgreSQL. В опубликованных тестах он показывает производительность в 4 раза выше PgBouncer.
Кэширование подготовленных запросов, fallback через Patroni и другие преимущества смотрите на страничке пулера: https://ozon.tech/pg_doorman
👍13
C может превратить число 1 078 530 011 в число π. И это не магия!
В Python преобразование
В C можно сделать совершенно другое: интерпретировать те же самые 4 байта как число другого типа.
Что здесь происходит?
-
-
- IEEE 754 интерпретирует их как число с плавающей точкой.
- На выходе получаем приблизительное значение π:
Два принципиально разных действия:
-
-
Этот приём называется *type punning*. Через
Условие: здесь предполагается 32-битный IEEE 754
Один и тот же набор битов может означать совершенно разные вещи в зависимости от типа данных.
В 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
Технический директор 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
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 с помощью
Последовательные вызовы
Как это работает: перед выходом функция сохраняет номер строки в
Зачем это нужно: обработчик протокола или парсер можно написать последовательным кодом, выдавая результат по частям.
Есть ограничения: обычные локальные переменные не сохраняются между вызовами, два
www.chiark.greenend.org.uk/~sgtatham/coroutines.html
Создатель 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
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/
Давно хочешь выучить 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
Команда 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 выложено всё, чтобы разобраться в концепте: вводные руководства с разбором устройства системы, инструкция по самостоятельной проверке доказательства, отдельные тексты о том, что именно доказывается и как прячутся веса, спецификация протокола и формата, словарь терминов, замеры и списки известных ограничений и ошибок.
В примерах лежат принятое доказательство, доказательство полного размера и отклонённые, с разбором причин.
@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
В 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
10 ноября 2009 года Google впервые публично представила язык Go. Его создали Роб Пайк, Кен Томпсон и Роберт Гризмер.
Несколько интересных фактов:
🐹 Go разрабатывали как ответ на сложности больших C++-проектов и медленную компиляцию.
⚡ Компилятор Go изначально проектировали с упором на скорость сборки.
🧵 Goroutines позволяют запускать тысячи и даже миллионы лёгких конкурентных задач.
📡 Каналы (channels) стали одним из главных инструментов взаимодействия между горутинами.
☁️ Docker, Kubernetes, Prometheus и Terraform написаны на Go.
Сегодня Go используют для облачной инфраструктуры, микросервисов, DevOps-инструментов и высоконагруженных backend-систем.
17 лет, а язык по-прежнему активно развивается.
С днём рождения, Go! 💙
@Golang_google
#golang
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉9❤7👍2🔥1