Разработчик так устал смотреть, как его AI-агент пишет 500 строк для задачи на 5 строк, что сделал фикс.
Он назвал его Ponytail. В честь того самого человека, который есть почти в каждой команде: длинный хвост, овальные очки, работает там дольше, чем существует version control. Ты показываешь ему 50 строк, он молча смотрит на них и заменяет одной.
Теперь ваш агент делает то же самое. Перед тем как что-то написать, он сначала ищет причину не писать.
На 80–94% меньше кода. На 47–77% дешевле. В 3–6 раз быстрее.
Лучший код, тот, который вы вообще не написали.
GitHub: https://github.com/DietrichGebert/ponytail
Он назвал его Ponytail. В честь того самого человека, который есть почти в каждой команде: длинный хвост, овальные очки, работает там дольше, чем существует version control. Ты показываешь ему 50 строк, он молча смотрит на них и заменяет одной.
Теперь ваш агент делает то же самое. Перед тем как что-то написать, он сначала ищет причину не писать.
На 80–94% меньше кода. На 47–77% дешевле. В 3–6 раз быстрее.
Лучший код, тот, который вы вообще не написали.
GitHub: https://github.com/DietrichGebert/ponytail
❤13👍8🫡3😁2
4 MCP-сервера, о которых стоит знать каждому DevOps-инженеру
1. Kubernetes MCP
- расследовать pod’ы в
- дебажить неудачные деплои;
- анализировать состояние кластера.
Repo:
https://github.com/Flux159/mcp-server-kubernetes
2. AWS MCP
- разбирать резкие скачки расходов в AWS;
- находить неиспользуемые ресурсы;
- troubleshooting облачной инфраструктуры.
Repo:
https://github.com/awslabs/mcp
3. Terraform MCP
- проверять Terraform-планы;
- находить drift в инфраструктуре;
- объяснять изменения в инфраструктуре.
Repo:
https://github.com/hashicorp/terraform-mcp-server
4. Grafana + Prometheus MCP
- расследовать скачки latency;
- анализировать production-инциденты;
- объяснять alert storms.
Repos:
https://github.com/grafana/mcp-grafana
https://github.com/pab1it0/prometheus-mcp-server
ИИ может получать доступ к вашей инфраструктуре, понимать, что реально происходит, и помогать разбирать проблемы на основе настоящих данных, а не догадок.
1. Kubernetes MCP
- расследовать pod’ы в
CrashLoopBackOff;- дебажить неудачные деплои;
- анализировать состояние кластера.
Repo:
https://github.com/Flux159/mcp-server-kubernetes
2. AWS MCP
- разбирать резкие скачки расходов в AWS;
- находить неиспользуемые ресурсы;
- troubleshooting облачной инфраструктуры.
Repo:
https://github.com/awslabs/mcp
3. Terraform MCP
- проверять Terraform-планы;
- находить drift в инфраструктуре;
- объяснять изменения в инфраструктуре.
Repo:
https://github.com/hashicorp/terraform-mcp-server
4. Grafana + Prometheus MCP
- расследовать скачки latency;
- анализировать production-инциденты;
- объяснять alert storms.
Repos:
https://github.com/grafana/mcp-grafana
https://github.com/pab1it0/prometheus-mcp-server
ИИ может получать доступ к вашей инфраструктуре, понимать, что реально происходит, и помогать разбирать проблемы на основе настоящих данных, а не догадок.
👍8
Linux-инсайт: shell - это просто обычная программа
Ваш терминал не разговаривает с ядром напрямую магическим языком. Shell - это обычная userspace-программа. Просто таких программ целое семейство:
С точки зрения ядра все они делают примерно одну и ту же работу:
- читают байты из file descriptor
- парсят их как командный язык
- вызывают
- вызывают
- запускают другие программы
Разница почти вся живёт в userspace: какой синтаксис shell принимает, насколько он удобен в интерактивной работе, насколько строго следует POSIX и какие расширения добавляет сверху.
POSIX описывает shell-язык, который часто называют просто
Поэтому
Небольшой сюрприз: в Debian и Ubuntu
может вести себя не так, как вы ожидаете, если вы писали его «как bash-скрипт».
Проверьте у себя:
И вы увидите, какой shell реально стоит за /bin/sh на вашей машине.
Ваш терминал не разговаривает с ядром напрямую магическим языком. Shell - это обычная userspace-программа. Просто таких программ целое семейство:
bash, zsh, fish, dash, ksh, ash, встроенный shell из BusyBox.С точки зрения ядра все они делают примерно одну и ту же работу:
- читают байты из file descriptor
- парсят их как командный язык
- вызывают
fork- вызывают
exec- запускают другие программы
Разница почти вся живёт в userspace: какой синтаксис shell принимает, насколько он удобен в интерактивной работе, насколько строго следует POSIX и какие расширения добавляет сверху.
POSIX описывает shell-язык, который часто называют просто
sh. Большинство shell реализуют его как базу, а потом добавляют свои фичи.Поэтому
bash и dash - это не «разные терминалы». Это разные реализации одной идеи.Небольшой сюрприз: в Debian и Ubuntu
/bin/sh обычно не bash, а dash. Он проще, меньше и стартует быстрее. Поэтому скрипт с первой строкой:
#!/bin/sh
может вести себя не так, как вы ожидаете, если вы писали его «как bash-скрипт».
Проверьте у себя:
readlink -f /bin/sh
И вы увидите, какой shell реально стоит за /bin/sh на вашей машине.
👍6🔥3❤2
Linux tip: когда процесс завис, не убивайте его вслепую
Если процесс завис, не обязательно сразу делать
Можно подключиться к нему через
Команда:
Что это даёт:
видно, читает ли процесс данные
видно, пишет ли он куда-то
видно, какие файлы открывает
можно понять, ждёт ли он stdin, файл, сокет или pipe
не нужно менять код
не нужно перезапускать сервис
Например, если программа «висит», strace может показать, что она просто ждёт read() из file descriptor. То есть проблема не в CPU, не в deadlock и не в магии Linux, а в том, что процесс ждёт ввод.
Это особенно полезно в проде, когда нельзя просто взять и перезапустить сервис ради эксперимента.
Базовый сценарий:
И дальше вы видите, чем процесс реально занят.
strace - один из тех инструментов, которые превращают «оно зависло» в нормальный технический диагноз.
Если процесс завис, не обязательно сразу делать
kill -9 и гадать, что там произошло.Можно подключиться к нему через
strace и посмотреть в реальном времени, на каком системном вызове он застрял.Команда:
strace -p <PID> -e trace=read,write,open
Что это даёт:
видно, читает ли процесс данные
видно, пишет ли он куда-то
видно, какие файлы открывает
можно понять, ждёт ли он stdin, файл, сокет или pipe
не нужно менять код
не нужно перезапускать сервис
Например, если программа «висит», strace может показать, что она просто ждёт read() из file descriptor. То есть проблема не в CPU, не в deadlock и не в магии Linux, а в том, что процесс ждёт ввод.
Это особенно полезно в проде, когда нельзя просто взять и перезапустить сервис ради эксперимента.
Базовый сценарий:
pidof my_process
sudo strace -p <PID> -e trace=read,write
И дальше вы видите, чем процесс реально занят.
strace - один из тех инструментов, которые превращают «оно зависло» в нормальный технический диагноз.
👍16🔥9❤6
Рэй Брэдбери бы оценил: запрещённые книги теперь прячут в умных лампочках
Энтузиаст разобрал обычную Wi-Fi лампочку и превратил её микроконтроллер ESP32-C3 в маленький автономный веб-сервер.
Получился почти сюжет из «451 градуса по Фаренгейту»: лампа создаёт открытую Wi-Fi сеть, открывает портал и даёт читать книги, которые запрещали или ограничивали в школах.
SD-карту в тесный корпус встроить не удалось, поэтому библиотека живёт прямо во встроенной памяти. Всего 4 МБ, но для текста этого хватает.
Самое забавное, что такие лампочки уже давно вышли за пределы «умного дома». На похожем железе поднимают Minecraft-серверы, запускают DOOM и теперь ещё прячут мини-библиотеки.
Будущее странное: раньше книги сжигали, теперь они раздаются из лампочки.
https://www.richardosgood.com/posts/banned-book-library/
Энтузиаст разобрал обычную Wi-Fi лампочку и превратил её микроконтроллер ESP32-C3 в маленький автономный веб-сервер.
Получился почти сюжет из «451 градуса по Фаренгейту»: лампа создаёт открытую Wi-Fi сеть, открывает портал и даёт читать книги, которые запрещали или ограничивали в школах.
SD-карту в тесный корпус встроить не удалось, поэтому библиотека живёт прямо во встроенной памяти. Всего 4 МБ, но для текста этого хватает.
Самое забавное, что такие лампочки уже давно вышли за пределы «умного дома». На похожем железе поднимают Minecraft-серверы, запускают DOOM и теперь ещё прячут мини-библиотеки.
Будущее странное: раньше книги сжигали, теперь они раздаются из лампочки.
https://www.richardosgood.com/posts/banned-book-library/
❤11👍2🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Хватит держать сервер нараспашку: базовый хардэнинг Linux за 8 шагов
Большинство серверов взламывают не через киношные zero-day, а через базовые ошибки: парольный SSH, открытые порты, root-вход и отсутствие бэкапов.
В этом ролике короткий чек-лист, как обезопасить Linux-сервер с нуля.
Первое: вход только по SSH-ключу, парольную авторизацию отключить.
Второе: запретить прямой вход под root и работать через sudo.
Третье: закрыть все лишние порты через UFW или iptables.
Четвёртое: регулярно ставить security updates.
Дальше: fail2ban против перебора паролей, двухфакторка там, где возможно, минимум прав для пользователей и сервисов.
И обязательно бэкапы. Не “когда-нибудь”, а по расписанию и отдельно от сервера.
Финальный слой: логи и мониторинг, чтобы видеть подозрительную активность до того, как сервер уже лег.
Минимум, который реально нужен: SSH-ключи, firewall, обновления, fail2ban и бэкапы.
Полезно бэкендерам, DevOps и всем, кто держит VPS или продакшен.
#Linux #сервер #безопасность #DevOps #SSH #fail2ban #firewall #VPS #хардэнинг #кибербезопасность #бэкапы #системноеадминистрирование
Большинство серверов взламывают не через киношные zero-day, а через базовые ошибки: парольный SSH, открытые порты, root-вход и отсутствие бэкапов.
В этом ролике короткий чек-лист, как обезопасить Linux-сервер с нуля.
Первое: вход только по SSH-ключу, парольную авторизацию отключить.
Второе: запретить прямой вход под root и работать через sudo.
Третье: закрыть все лишние порты через UFW или iptables.
Четвёртое: регулярно ставить security updates.
Дальше: fail2ban против перебора паролей, двухфакторка там, где возможно, минимум прав для пользователей и сервисов.
И обязательно бэкапы. Не “когда-нибудь”, а по расписанию и отдельно от сервера.
Финальный слой: логи и мониторинг, чтобы видеть подозрительную активность до того, как сервер уже лег.
Минимум, который реально нужен: SSH-ключи, firewall, обновления, fail2ban и бэкапы.
Полезно бэкендерам, DevOps и всем, кто держит VPS или продакшен.
#Linux #сервер #безопасность #DevOps #SSH #fail2ban #firewall #VPS #хардэнинг #кибербезопасность #бэкапы #системноеадминистрирование
👍10❤8🔥4✍2
⚙️ ASMLings - подробный гайд на русском
ASMLings - это набор из ~32 коротких упражнений на ассемблере Intel 8086, выстроенных по возрастанию сложности: от mov ax, 0x1337 до 32-битного сложения через carry flag, циклов, подпрограмм, работы с памятью и стеком.
Полный русскоязычный гайд по asmlings — интерактивной песочнице для изучения ассемблера Intel 8086, в которой 16-битный x86-эмулятор написан на Rust.
Внутри: что это, как устроено под капотом, как установить, как читать и решать упражнения, разборы реальных задач из репозитория, готовые примеры в examples/ и шпаргалки.
https://github.com/justxor/-ASMLingsru/
ASMLings - это набор из ~32 коротких упражнений на ассемблере Intel 8086, выстроенных по возрастанию сложности: от mov ax, 0x1337 до 32-битного сложения через carry flag, циклов, подпрограмм, работы с памятью и стеком.
Полный русскоязычный гайд по asmlings — интерактивной песочнице для изучения ассемблера Intel 8086, в которой 16-битный x86-эмулятор написан на Rust.
Внутри: что это, как устроено под капотом, как установить, как читать и решать упражнения, разборы реальных задач из репозитория, готовые примеры в examples/ и шпаргалки.
https://github.com/justxor/-ASMLingsru/
❤2👍2
А вы знали, что Linux тоже можно забэкдорить?
Многие считают Linux почти неуязвимым. Но это не так.
В 2024 году злоумышленник почти 2 года тихо встраивал бэкдор в XZ Utils - базовую библиотеку сжатия, которая есть почти во всех крупных Linux-дистрибутивах.
Целью был
Один разработчик заметил проблему только потому, что
Именно из-за этого бэкдор не успел попасть в production-системы по всему миру.
Linux не неуязвим. Просто долгое время он не был главной целью. Теперь это меняется.
Многие считают Linux почти неуязвимым. Но это не так.
В 2024 году злоумышленник почти 2 года тихо встраивал бэкдор в XZ Utils - базовую библиотеку сжатия, которая есть почти во всех крупных Linux-дистрибутивах.
Целью был
sshd. При наличии правильного ключа шифрования можно было внедрять код через SSH-сертификаты входа. Тихо, без алертов, внешне всё выглядело полностью легитимно.Один разработчик заметил проблему только потому, что
sshd стал запускаться примерно на 500 мс медленнее обычного.Именно из-за этого бэкдор не успел попасть в production-системы по всему миру.
Linux не неуязвим. Просто долгое время он не был главной целью. Теперь это меняется.
👍9❤5🔥4😁1
⚙️ Cloud-native в России начинает собирать собственный инженерный «core team»
Первая в России независимая некоммерческая ассоциация, которая занимается развитием облачно-ориентированных технологий (АОТ), формирует экспертный совет. В него войдут девять практиков, которые работают с Kubernetes и современной облачной инфраструктурой не в презентациях, а в продакшене.
Фокус ожидаемо инженерный:
- Kubernetes
- платформенные решения
- DevOps и DevSecOps
- безопасность облачных систем
- observability
- устойчивость инфраструктуры
- применение AI в разработке
Если раньше cloud-native был набором отдельных инструментов, то сейчас это уже полноценное направление со своим профессиональным сообществом, исследованиями и отраслевой повесткой.
Похоже, Kubernetes окончательно перестал быть просто оркестратором контейнеров и превратился в фундамент современной инфраструктуры.
https://kod.ru/aot-experts/amp
Первая в России независимая некоммерческая ассоциация, которая занимается развитием облачно-ориентированных технологий (АОТ), формирует экспертный совет. В него войдут девять практиков, которые работают с Kubernetes и современной облачной инфраструктурой не в презентациях, а в продакшене.
Фокус ожидаемо инженерный:
- Kubernetes
- платформенные решения
- DevOps и DevSecOps
- безопасность облачных систем
- observability
- устойчивость инфраструктуры
- применение AI в разработке
Если раньше cloud-native был набором отдельных инструментов, то сейчас это уже полноценное направление со своим профессиональным сообществом, исследованиями и отраслевой повесткой.
Похоже, Kubernetes окончательно перестал быть просто оркестратором контейнеров и превратился в фундамент современной инфраструктуры.
https://kod.ru/aot-experts/amp
👍9❤1
Редкий Docker-трюк для баз данных: отдельный volume под WAL
У Postgres есть место, куда он пишет журнал изменений: WAL.
Если база активно пишет данные, WAL может стать узким местом. В Docker его можно вынести в отдельный volume:
Зачем это нужно:
1. данные базы лежат отдельно
2. журнал транзакций лежит отдельно
3. проще мониторить рост WAL
4. меньше риска забить основной volume логами
Особенно полезно для staging, pet-проектов с нагрузкой и локальных стендов, где внезапно «почему Postgres сожрал весь диск».
Мелочь, но уже уровень не “я просто поднял базу в Docker”, а нормальная инженерная привычка.
У Postgres есть место, куда он пишет журнал изменений: WAL.
Если база активно пишет данные, WAL может стать узким местом. В Docker его можно вынести в отдельный volume:
services:
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: postgres
POSTGRES_INITDB_WALDIR: /var/lib/postgresql/wal
volumes:
- pg_data:/var/lib/postgresql/data
- pg_wal:/var/lib/postgresql/wal
volumes:
pg_data:
pg_wal:
Зачем это нужно:
1. данные базы лежат отдельно
2. журнал транзакций лежит отдельно
3. проще мониторить рост WAL
4. меньше риска забить основной volume логами
Особенно полезно для staging, pet-проектов с нагрузкой и локальных стендов, где внезапно «почему Postgres сожрал весь диск».
Мелочь, но уже уровень не “я просто поднял базу в Docker”, а нормальная инженерная привычка.
❤12😁4👍2🔥1
10 GitHub-репозиториев, которые заставят вас навсегда забыть о платном ПО
Полностью бесплатно.
1.LocalSend / http://github.com/localsend/localsend
Воздушная передача файлов между платформами. Передача файлов между Windows, Mac, Linux, Android, iOS — без регистрации и облака
2.yt-dlp / http://github.com/yt-dlp/yt-dlp
Скачивание видео и аудио с любого сайта. YouTube, Bilibili, Twitter — всё покрыто, мощнее любого платного загрузчика
3.Stirling-PDF / http://github.com/Stirling-Tools/Stirling-PDF
Самостоятельный универсальный инструмент для PDF. Объединение, разделение, сжатие, конвертация в Word, добавление водяных знаков, OCR — замена всему семейству Adobe
4.FreeTube / http://github.com/FreeTubeApp/FreeTube
Десктопный плеер для YouTube. Без рекламы, без слежки, без аккаунта Google — что вы смотрите, знает только вы
5.Syncthing / http://github.com/syncthing/syncthing
Альтернатива Baidu Netdisk и iCloud. Прямая синхронизация файлов между устройствами, сквозное шифрование, данные не проходят через серверы третьих лиц
6.Vaultwarden / http://github.com/dani-garcia/vaultwarden
Самостоятельный менеджер паролей. Бесплатная замена 1Password и LastPass навсегда, данные хранятся только на вашем устройстве
7.Immich / http://github.com/immich-app/immich
Самостоятельный Google Фото. Автоматическое резервное копирование фото с телефона, распознавание лиц, поиск по ИИ — больше не платите аренду за хранилище ежемесячно
8.AdGuard Home / http://github.com/AdguardTeam/AdGuardHome
Блокировка рекламы по всей сети. Блокировка на уровне роутера — все устройства в доме, включая смарт-телевизоры, без рекламы
9.Jellyfin / http://github.com/jellyfin/jellyfin
Самостоятельный Netflix. Свои фильмы, сериалы и музыка — транслируйте сколько угодно, без ежемесячных платежей платформам
10.Uptime Kuma / http://github.com/louislam/uptime-kuma
Самостоятельная панель мониторинга. Следит за вашими сайтами и сервисами, мгновенно уведомляет о сбоях — замена платному мониторингу за $50 в месяц.
Полностью бесплатно.
1.LocalSend / http://github.com/localsend/localsend
Воздушная передача файлов между платформами. Передача файлов между Windows, Mac, Linux, Android, iOS — без регистрации и облака
2.yt-dlp / http://github.com/yt-dlp/yt-dlp
Скачивание видео и аудио с любого сайта. YouTube, Bilibili, Twitter — всё покрыто, мощнее любого платного загрузчика
3.Stirling-PDF / http://github.com/Stirling-Tools/Stirling-PDF
Самостоятельный универсальный инструмент для PDF. Объединение, разделение, сжатие, конвертация в Word, добавление водяных знаков, OCR — замена всему семейству Adobe
4.FreeTube / http://github.com/FreeTubeApp/FreeTube
Десктопный плеер для YouTube. Без рекламы, без слежки, без аккаунта Google — что вы смотрите, знает только вы
5.Syncthing / http://github.com/syncthing/syncthing
Альтернатива Baidu Netdisk и iCloud. Прямая синхронизация файлов между устройствами, сквозное шифрование, данные не проходят через серверы третьих лиц
6.Vaultwarden / http://github.com/dani-garcia/vaultwarden
Самостоятельный менеджер паролей. Бесплатная замена 1Password и LastPass навсегда, данные хранятся только на вашем устройстве
7.Immich / http://github.com/immich-app/immich
Самостоятельный Google Фото. Автоматическое резервное копирование фото с телефона, распознавание лиц, поиск по ИИ — больше не платите аренду за хранилище ежемесячно
8.AdGuard Home / http://github.com/AdguardTeam/AdGuardHome
Блокировка рекламы по всей сети. Блокировка на уровне роутера — все устройства в доме, включая смарт-телевизоры, без рекламы
9.Jellyfin / http://github.com/jellyfin/jellyfin
Самостоятельный Netflix. Свои фильмы, сериалы и музыка — транслируйте сколько угодно, без ежемесячных платежей платформам
10.Uptime Kuma / http://github.com/louislam/uptime-kuma
Самостоятельная панель мониторинга. Следит за вашими сайтами и сервисами, мгновенно уведомляет о сбоях — замена платному мониторингу за $50 в месяц.
❤9👍3🔥2
ИИ заставляет перестраивать инфраструктуру
Когда говорят про развитие ИИ, обычно обсуждают модели, агенты и новые возможности.
Но есть менее заметная проблема: всё это нужно где-то запускать. На infra.conf’26 Александр Чубинский из Яндекса рассказал, как компания перестраивает физическую и ML-инфраструктуру под растущие нагрузки.
Изменения происходят сразу на нескольких уровнях:
- вместо отдельных дата-центров развивают кампусы дата-центров мощностью до 180 МВт;
- внедряют жидкостное охлаждение, потому что традиционные подходы уже не всегда справляются с плотностью вычислений;
- запустили внутренний сервис Dev Cluster, который ускоряет эксперименты и разработку ML-моделей.
Чем больше ИИ, тем меньше это история только про софт.
Когда говорят про развитие ИИ, обычно обсуждают модели, агенты и новые возможности.
Но есть менее заметная проблема: всё это нужно где-то запускать. На infra.conf’26 Александр Чубинский из Яндекса рассказал, как компания перестраивает физическую и ML-инфраструктуру под растущие нагрузки.
Изменения происходят сразу на нескольких уровнях:
- вместо отдельных дата-центров развивают кампусы дата-центров мощностью до 180 МВт;
- внедряют жидкостное охлаждение, потому что традиционные подходы уже не всегда справляются с плотностью вычислений;
- запустили внутренний сервис Dev Cluster, который ускоряет эксперименты и разработку ML-моделей.
Чем больше ИИ, тем меньше это история только про софт.
👍3❤2🖕2
This media is not supported in your browser
VIEW IN TELEGRAM
Основы Git и GitHub за 30 секунд: настройка, коммиты, ветки, Pull Request
GitHub пугает новичков не сложностью, а количеством команд, в которых легко утонуть в первый же день. Эта шпаргалка собирает весь базовый путь от пустого терминала до открытого Pull Request, чтобы не держать всё в голове и не гуглить каждый шаг.
Сначала первая настройка: задаёшь имя и email, иначе коммиты уходят непонятно от кого. Дальше старт работы: клонируешь репозиторий, заходишь в папку и сразу создаёшь свою ветку под задачу. Потом ежедневный цикл, который повторяется каждый день: status, pull, add, commit, push. Проверил, обновил, добавил, закоммитил, отправил. Отдельно блок полезных команд на каждый день: log с графом, diff, stash, branch и переключение на main.
GitHub пугает новичков не сложностью, а количеством команд, в которых легко утонуть в первый же день. Эта шпаргалка собирает весь базовый путь от пустого терминала до открытого Pull Request, чтобы не держать всё в голове и не гуглить каждый шаг.
Сначала первая настройка: задаёшь имя и email, иначе коммиты уходят непонятно от кого. Дальше старт работы: клонируешь репозиторий, заходишь в папку и сразу создаёшь свою ветку под задачу. Потом ежедневный цикл, который повторяется каждый день: status, pull, add, commit, push. Проверил, обновил, добавил, закоммитил, отправил. Отдельно блок полезных команд на каждый день: log с графом, diff, stash, branch и переключение на main.
❤6🔥2❤🔥1👍1
Теорема Ферма говорит: не существует целых чисел, для которых выполняется:
`a³ + b³ = c³`Её доказал Эндрю Уайлс в 1995 году - спустя 358 лет после формулировки.
Но затем Джон Регер показал забавный пример: цикл, скомпилированный через
gcc -O2, мог напечатать:Fermat's Last Theorem has been disprovedВ коде происходило signed integer overflow - переполнение знакового int. А в C это undefined behavior.
Для компилятора это значит: «такого не должно происходить». Поэтому оптимизатор имеет право строить предположения, которые человеку кажутся абсурдными.
В итоге: программа выглядит так, будто нашла контрпример к великой теореме, хотя на деле просто попала в UB.
C не опроверг Ферма.
C просто напомнил, что undefined behavior - это не ошибка выполнения, а разрешение компилятору делать почти всё что угодно.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
C умел «объектный стиль» задолго до модных споров про ООП.
В Linux-драйверах это видно особенно хорошо. Каждый драйвер фактически реализует интерфейс, просто заполняя структуру с указателями на функции.
file_operations из include/linux/fs.h - хороший пример. Ядро говорит: вот набор операций, которые может поддерживать файл, сокет или устройство. Драйвер сам решает, какие обработчики дать:
open
read
write
release
mmap
fsync
unlocked_ioctl
Если операция не нужна, поле остаётся NULL, и ядро использует поведение по умолчанию там, где это возможно.
По сути это тот же контракт между системой и реализацией, только без классов, наследования и рантаймовой магии. Есть таблица функций, есть объект, есть набор действий, которые с ним можно выполнить.
Именно поэтому C до сих пор живёт в ядрах, драйверах и системном коде. Он не навязывает модель абстракций, но даёт достаточно низкоуровневых инструментов, чтобы собрать нужную модель самому.
Просто вместо красивого слова interface у тебя struct с function pointers.
#programming #linux #c
В Linux-драйверах это видно особенно хорошо. Каждый драйвер фактически реализует интерфейс, просто заполняя структуру с указателями на функции.
file_operations из include/linux/fs.h - хороший пример. Ядро говорит: вот набор операций, которые может поддерживать файл, сокет или устройство. Драйвер сам решает, какие обработчики дать:
open
read
write
release
mmap
fsync
unlocked_ioctl
Если операция не нужна, поле остаётся NULL, и ядро использует поведение по умолчанию там, где это возможно.
По сути это тот же контракт между системой и реализацией, только без классов, наследования и рантаймовой магии. Есть таблица функций, есть объект, есть набор действий, которые с ним можно выполнить.
Именно поэтому C до сих пор живёт в ядрах, драйверах и системном коде. Он не навязывает модель абстракций, но даёт достаточно низкоуровневых инструментов, чтобы собрать нужную модель самому.
Просто вместо красивого слова interface у тебя struct с function pointers.
#programming #linux #c
👍4👎1😁1🖕1
ScrapeComfort — бесплатный инструмент для безболезненного веб-скрапинга прямо с вашего рабочего стола.
Интуитивно понятный интерфейс обеспечивает бесперебойный процесс извлечения данных независимо от вашей технической подготовки.
Интуитивно понятный интерфейс обеспечивает бесперебойный процесс извлечения данных независимо от вашей технической подготовки.
👍1
Kroc - небольшой, но очень показательный проект для тех, кто хочет понять Kubernetes Operators не по слайдам, а по коду.
Идея простая: вы описываете CRD
Например, оператор может смотреть за
Внутри используется Go и Kubebuilder.
Самое интересное - реактивная модель.
Если исходный объект изменился, производные ресурсы пересоздаются.
Если кто-то вручную удалил созданный объект, оператор создаст его снова, чтобы вернуть кластер в нужное состояние.
По сути, это хороший минимальный пример того, как работает operator pattern в Kubernetes:
наблюдаем за состоянием
сравниваем с желаемым
создаём или пересоздаём ресурсы
держим систему синхронизированной
Архитектура тоже полезная для разбора: проект разделяет логику на несколько контроллеров.
Один отвечает за CRD и конфигурацию, второй наблюдает за внешними Kubernetes-объектами, третий создаёт производные ресурсы из шаблонов.
Для новичков в Kubernetes Operators это намного понятнее, чем сразу лезть в большие production-операторы.
Kroc хорошо показывает базовую механику: CRD, reconcile loop, watch, template rendering и управление жизненным циклом дочерних объектов.
https://github.com/pawelcit/kroc
Идея простая: вы описываете CRD
Kroc, указываете, за какими объектами в Kubernetes нужно следить, и задаёте шаблон ресурса, который должен быть создан на основе найденного объекта.Например, оператор может смотреть за
Deployment, брать из него нужные поля и автоматически создавать связанные Pod, Service, ConfigMap или другие Kubernetes-объекты.Внутри используется Go и Kubebuilder.
Самое интересное - реактивная модель.
Если исходный объект изменился, производные ресурсы пересоздаются.
Если кто-то вручную удалил созданный объект, оператор создаст его снова, чтобы вернуть кластер в нужное состояние.
По сути, это хороший минимальный пример того, как работает operator pattern в Kubernetes:
наблюдаем за состоянием
сравниваем с желаемым
создаём или пересоздаём ресурсы
держим систему синхронизированной
Архитектура тоже полезная для разбора: проект разделяет логику на несколько контроллеров.
Один отвечает за CRD и конфигурацию, второй наблюдает за внешними Kubernetes-объектами, третий создаёт производные ресурсы из шаблонов.
Для новичков в Kubernetes Operators это намного понятнее, чем сразу лезть в большие production-операторы.
Kroc хорошо показывает базовую механику: CRD, reconcile loop, watch, template rendering и управление жизненным циклом дочерних объектов.
https://github.com/pawelcit/kroc
Она называется OkcarOS. Это кастомная прошивка Android 13, которая напрямую общается с экраном автомобиля по протоколу CarPlay.
→ Подключение за 4 секунды
→ Видео 60 fps, битрейт 25 Мбит/с
→ Без потерь аудио PCM
→ Разрешение 1:1 с экраном в автомобиле
100% с открытым исходным кодом.
https://github.com/okcar-os/android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥3❤1
Забавная игрушка на ночь: GitHub-профиль теперь можно превратить в карточку в стиле FIFA.
GitFut прогоняет аккаунт по метрикам вроде коммитов, звёзд, репозиториев, подписчиков и активности, а потом собирает карточку с рейтингом от 0 до 99.
Идеально, чтобы внезапно узнать, ты GitHub-легенда или бронзовый запасной с одним pet-проектом.
https://gitfut.com/
GitFut прогоняет аккаунт по метрикам вроде коммитов, звёзд, репозиториев, подписчиков и активности, а потом собирает карточку с рейтингом от 0 до 99.
Идеально, чтобы внезапно узнать, ты GitHub-легенда или бронзовый запасной с одним pet-проектом.
https://gitfut.com/
❤2🔥2🥱2👍1
Алгоритму почти 70 лет, а он до сих пор живёт в ядре Linux.
В 1957 году Wilkes, Wheeler и Gill описали быстрый способ считать количество установленных битов в числе. Не циклом по одному биту, а через маски и арифметику сразу над группами битов.
Идея простая:
- сначала считаем биты парами
- потом группами по 4
- потом по байтам
- в конце умножение собирает сумму в старший байт
Если в процессоре нет инструкции POPCNT, Linux использует похожий подход в
Красивый пример того, как старый битовый трюк пережил десятилетия и всё ещё работает в современном системном коде.
В 1957 году Wilkes, Wheeler и Gill описали быстрый способ считать количество установленных битов в числе. Не циклом по одному биту, а через маски и арифметику сразу над группами битов.
Идея простая:
- сначала считаем биты парами
- потом группами по 4
- потом по байтам
- в конце умножение собирает сумму в старший байт
Если в процессоре нет инструкции POPCNT, Linux использует похожий подход в
__sw_hweight64.Красивый пример того, как старый битовый трюк пережил десятилетия и всё ещё работает в современном системном коде.
👍15❤5🔥1