METANIT.COM – Telegram
METANIT.COM
5.76K subscribers
1.64K photos
80 videos
9 files
974 links
Канал о программировании и разработке сайта metanit.com
Download Telegram
Энтузиасты разработали сверхкомпактный дистрибутив Linux под названием Tiny Core Linux, который после установки занимает всего лишь 23 МБ. Это примерно в 1100 раз меньше объема, занимаемого только что установленной Windows 11. Схожий объем имеют фотографии, снятые на современные флагманские Android-смартфоны в высоком разрешении и без экономии качества

При этом система полноценна – у нее есть функциональный оконный интерфейс, напоминающий одновременно и Windows благодаря острым углам окон, и macOS за счет небольшой док-панели внизу экрана. Tiny Core Linux располагает даже собственным установщиком программ – он подключается к серверу и открывает доступ к десяткам приложений

Что еще более примечательно, ISO-образ Tiny Core Linux «весит» больше, нежели полностью установленная система – 25,1 МБ.

http://www.tinycorelinux.net/welcome.html
https://www.tomshardware.com/software/linux/tiny-core-linux-16-2-still-fits-a-proper-linux-desktop-into-a-23mb-download-but-it-has-grown-1mb-since-the-last-time-we-looked-at-it
👍23🆒87👀4
Стратегии индексирования баз данных в бэкенде
(продолжение в следующем посте)
😐5👍2🔥2👏1
Биты, P‑биты (вероятностные биты) и кубиты
(продолжение предыдущего поста)

### 1. Физическая природа и состояние

- Бит (классический):
- Дискретная единица информации в классических компьютерах.
- Может находиться только в одном из двух состояний: $0$ или $1$.
- Состояние строго определено (например, напряжение на транзисторе: есть — 1, нет — 0).
- Нет промежуточных значений.

- P‑bit (probabilistic bit, вероятностный бит):
- Может случайным образом переключаться между 0 и 1 под действием тепловых шумов.
- Состояние описывается вероятностью: например, P(0) = 0,7, P(1) = 0,3.
- Работает при комнатной температуре.
- Реализуется на наномагнитных элементах (stochastic magnetic tunnel junctions, sMTJ).

- Кубит (quantum bit, квантовый бит):
- Квантовый объект (электрон, фотон, ион и т. п.).
- Может находиться в суперпозиции состояний: α∣0⟩+β∣1⟩, где α и β — комплексные амплитуды (∣α∣^2 + ∣β∣^2 = 1).
- При измерении «коллапсирует» в 0 или 1 с вероятностями ∣α∣^2 и ∣β∣^2
- Требует крайне низких температур (близки к абсолютному нулю) для сохранения когерентности.

### 2. Принципы работы

- Бит:
- Логические операции (И, ИЛИ, НЕ) выполняются детерминированно.
- Вычисления — последовательные или параллельно-конвейерные.

- P‑bit:
- Использует естественную случайность физических элементов для вероятностных вычислений.
- Хорошо подходит для задач оптимизации, статистического вывода, генеративных моделей.
- Позволяет массовый параллелизм при низком энергопотреблении.

- Кубит:
- Оперирует квантовыми состояниями (суперпозиция, запутанность).
- Квантовые алгоритмы (Шора, Гровера и др.) дают экспоненциальное ускорение для некоторых задач.
- Требует коррекции ошибок из-за декогеренции.

### 3. Области применения

- Бит:
- Общие вычисления, логика, хранение данных.

- P‑бит:
- Оптимизация (например, задачи коммивояжёра).
- Генеративные модели ИИ (энергоэффективно).
- Статистический вывод.

- Кубит:
- Факторизация больших чисел (криптоанализ).
- Моделирование квантовых систем (химия, материалы).
- Поиск в неструктурированных базах данных.
- Квантовое машинное обучение.


### 4. Резюме

- **Бит** — основа классических вычислений: детерминирован, масштабируем, универсален.
- **P‑bit** — вероятностный элемент: использует случайность для энергоэффективных оптимизационных задач при комнатной температуре.
- **Кубит** — квантовый элемент: даёт суперпозицию и запутанность, но требует экстремального охлаждения и коррекции ошибок.
🤔95🔥3💯1🤣1
Сервис TIOBE опубликовал декабрьский рейтинг языков программирования. Неожиданностью стало попадание языка R в первую десятку. Ну а язык C#, судя по всему, станет языком 2025 года по версии TIOBE
Понятно, что рейтинг TIOBE - это рейтинг, высосанный из пальца, но тем не менее.
https://www.tiobe.com/tiobe-index/
👍19🤮9🤣5🤡4🔥2🤝2
Стратегии индексирования баз данных в бэкенде
(продолжение в следующем посте)
5👍2💯2
Стратегии индексирования баз данных в бэкенде
(продолжение предыдущего поста)

→ Индексирование — один из самых эффективных способов ускорить выполнение запросов к базам данных в бэкенд‑системах.
→ Грамотное индексирование сокращает время поиска, улучшает операции соединения (joins) и повышает общую производительность — без изменения логики приложения.

✓ 1. Первичные индексы
→ Автоматически создаются для первичных ключей.
→ Обеспечивают быстрый поиск по уникальным идентификаторам.
→ Всегда индексируйте поля первичного ключа для эффективного извлечения записей.

✓ 2. Вторичные индексы
→ Создаются для неключевых столбцов, часто используемых в поисках.
→ Идеальны для таких полей, как email, имя пользователя или статус.
→ Позволяют быстро фильтровать запросы без сканирования всей таблицы.

✓ 3. Составные индексы
→ Индексы, охватывающие несколько столбцов.
→ Оптимальны, когда запросы фильтруют или сортируют данные по нескольким полям.
→ Порядок имеет значение: индекс по (страна, город) поможет запросу с фильтрацией по обоим параметрам, но не по городу в одиночку.

✓ 4. Уникальные индексы
→ Гарантируют отсутствие повторяющихся значений.
→ Полезны для email, имён пользователей или любых полей, требующих уникальности.
→ Также повышают производительность, поскольку СУБД оптимизирует проверку уникальности.

✓ 5. Полнотекстовые индексы
→ Оптимизированы для поиска фраз и ключевых слов.
→ Полезны для блогов, поиска товаров, мессенджеров.
→ Поддерживают запросы на естественном языке вроде «найти посты о проектировании бэкенда».

✓ 6. Частичные (фильтрованные) индексы
→ Индексируют лишь часть таблицы (например, активных пользователей).
→ Уменьшают размер индекса и повышают скорость, если данные имеют предсказуемые шаблоны.

✓ 7. Покрывающие индексы
→ Включают все необходимые столбцы для запроса.
→ Позволяют СУБД ответить на запрос, используя только индекс — без сканирования таблицы.
→ Идеальны для нагрузок с частыми операциями SELECT.

✓ 8. Индексирование для операций соединения (joins)
→ Всегда индексируйте внешние ключи.
→ Убедитесь, что обе стороны условий соединения проиндексированы.
→ Значительно улучшают запросы с объединением нескольких таблиц.

✓ 9. Избегайте избыточного индексирования
→ Каждый индекс увеличивает объём хранимых данных.
→ Замедляет операции записи (вставка/обновление/удаление).
→ Создавайте индексы только для реальных, регулярно повторяющихся шаблонов запросов.

✓ 10. Мониторинг производительности индексов
→ Используйте команды EXPLAIN или ANALYZE для проверки использования индексов.
→ Удаляйте неиспользуемые индексы, чтобы снизить накладные расходы.
→ Постоянно корректируйте индексирование по мере эволюции данных и запросов.
7👍4💯2
This media is not supported in your browser
VIEW IN TELEGRAM
Линус Тольвальдс об ИИ:

- «Искусственный интеллект — это, безусловно, мыльный пузырь, но он изменит то, как выполняется большинство квалифицированных работ».
- «Программирование с помощью ИИ отлично подходит для начала изучения программирования, но поддерживать такой код — ужасная задача».
- «Я большой сторонник ИИ. Но я не большой сторонник всего, что связано с ИИ. Я считаю, что рынок и маркетинг в этой сфере находятся в плачевном состоянии. Неизбежен обвал».
🔥25💯15🤝9🖕1
Компания Amazon поделилась историей перехода на Rust с Kotlin и Go

На конференции AWS re:Invent 2025 компания AWS (Amazon) объявила, что Rust стал языком программирования по умолчанию для всех проектов в области data plane (обработка данных), подчеркивая его превосходство в производительности по сравнению с другими языками. AWS уже использует Rust в своих микро-виртуальных машинах, таких как Bottlerocket и Firecracker.
Компания сделала акцент на преимуществах Rust, прежде всего на отсутствии накладных расходов на сборку мусора, которые сильно влияют на языки вроде Kotlin и Go в крупных распределенных приложениях.

CTO AWS Вернер Фогелс отметил, что база данных Aurora DSQL (распределенная PostgreSQL-совместимая СУБД) была переписана с Kotlin на Go для решения проблем с производительностью, но Rust показал еще лучшие результаты: «Код на [Rust] был в 10 раз быстрее нашей тщательно настроенной реализации на Kotlin — несмотря на отсутствие попыток его оптимизации».

В качестве примера успешной интеграции приводится пример с агента мониторига Datadog - изначально написанный на Go и запущенный как расширение на AWS Lambda, имел время холодного старта 700–800 мс, что считалось «огромной нагрузкой» для serverless-observability. Переход на Rust сократил это до 80 мс.

Кроме того, Rust обрабатывал в разы больше точек данных в секунду (PPS), а в целом код на Rust был почти в 3 раза быстрее. Стайвенберг объяснил, что Go тратил 30% времени на сборку мусора из-за частых мелких аллокаций памяти для данных observability. Хотя оптимизация Go с использованием off-heap памяти возможна, она приводит к неудобоуправляемому коду. В итоге: «Идиоматичный код на Rust дает производительность тщательно оптимизированного кода на Go».

https://devclass.com/2025/12/08/aws-shows-rust-love-at-reinvent-10-times-faster-than-kotlin-one-tenth-the-latency-of-go/
🤡1412🤔6👍4😱1🤮1
Краткая шпаргалка по разрешениям файлов в Linux
16👍8❤‍🔥5
Владимир Путин предупредил о риске потерять «все, что дорого», из-за ИИ
Президент считает, что существует угроза раскола общества — на элиту, которая «действительно думает», и тех, кто умеет только «нажимать кнопку»

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

«Нам ни в коем случае нельзя потерять поколение совсем молодых наших граждан, которые вместо того, чтобы думать, будут просто нажимать кнопочку, и все. И сами не будут в состоянии решать элементарные задачи по математике, физике, химии. Да и историю знать, как следует, не будут. Вот это сложная задача. Чтобы у нас не возникла элита из двух десятых человек, которые действительно думают, которые что-то генерят, и основной массы людей, которые будут только уметь кнопку нажимать, и все», — сказал глава государства.

https://www.rbc.ru/technology_and_media/09/12/2025/6938392a9a794741ee23fbdf?from=from_main_9
👍43🤣12🤡11💩7🤔5👀32💯1🙊1
В руководство по сетевому программированию на Python добавлены материалы про Создание локального HTTP/HTTPS-сервера
https://metanit.com/python/network/2.1.php
#python
🔥21👍63🤮1
НАСТРОЙКА СЕТИ В LINUX
(продолжение в следующем посте)
4🥰1👏1
НАСТРОЙКА СЕТИ В LINUX
(продолжение предыдущего поста)

1. Введение

→ Linux предоставляет мощные и гибкие инструменты для настройки и управления сетевыми параметрами.
→ Эти настройки определяют, как ваша система подключается к локальным сетям, интернету и удалённым сервисам.
→ В зависимости от дистрибутива Linux, сеть можно настраивать с помощью утилит командной строки, конфигурационных файлов или NetworkManager.

2. Просмотр сетевых интерфейсов

→ Проверить все сетевые интерфейсы:

ip link
ip addr
ifconfig (устаревший инструмент)

→ Включить или отключить интерфейс:

sudo ip link set eth0 up
sudo ip link set eth0 down

3. Назначение IP‑адресов

→ Назначить временный IP‑адрес:

sudo ip addr add 192.168.1.50/24 dev eth0

→ Удалить назначенный IP‑адрес:

sudo ip addr del 192.168.1.50/24 dev eth0

→ Просмотреть назначенные IP‑адреса:

ip a

4. Постоянная настройка IP

→ Постоянные настройки зависят от дистрибутива Linux.

Debian/Ubuntu: /etc/netplan/*.yaml

Пример:
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]


→ Применить конфигурацию:
sudo netplan apply

RHEL/CentOS/Fedora: /etc/sysconfig/network-noscripts/ifcfg-eth0

Пример:
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.1.100
PREFIX=24
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=1.1.1.1


→ Перезапустить сетевую службу:
sudo systemctl restart NetworkManager

Arch Linux: /etc/systemd/network/*.network

Пример:
[Match]
Name=eth0

[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8


→ Перезапустить systemd‑networkd:
sudo systemctl restart systemd-networkd

5. Настройка DNS

→ Проверить настройки DNS:
cat /etc/resolv.conf

→ Установить DNS вручную:
Добавить в /etc/resolv.conf:
nameserver 8.8.8.8
nameserver 1.1.1.1


→ С использованием NetworkManager:
sudo nmcli dev show | grep DNS

6. Использование NetworkManager (nmcli)

→ Показать устройства:
nmcli dev status

→ Подключиться к Wi‑Fi:
nmcli dev wifi connect "SSID" password "PASSWORD"

→ Установить статический IP:
nmcli con mod "Wired connection 1" ipv4.addresses 192.168.1.100/24
nmcli con mod "Wired connection 1" ipv4.gateway 192.168.1.1
nmcli con mod "Wired connection 1" ipv4.method manual
nmcli con up "Wired connection 1"

7. Настройка маршрутизации

→ Показать маршруты:
ip route

→ Добавить маршрут:
sudo ip route add 10.0.0.0/24 via 192.168.1.1

→ Удалить маршрут:
sudo ip route del 10.0.0.0/24

8. Проверка сетевых подключений

→ Проверить доступность:
ping 8.8.8.8

→ Проверить разрешение DNS:
ping http://google.com

→ Проследить сетевой путь:
traceroute http://google.com

→ Отобразить открытые порты:
ss -tulnp

→ Проверить сетевую статистику:
netstat -tulnp (устаревший инструмент)

9. Настройка брандмауэра (кратко)

UFW (Ubuntu):
→ Включить: sudo ufw enable
→ Разрешить порт: sudo ufw allow 80

Firewalld (RHEL/Fedora):
→ Разрешить сервис: sudo firewall-cmd --add-service=http --permanent
→ Перезагрузить брандмауэр: sudo firewall-cmd --reload

10. Имя хоста и файл hosts

→ Показать имя хоста:
hostname

→ Изменить имя хоста:
sudo hostnamectl set-hostname new-name

→ Редактировать файл hosts:
/etc/hosts

Пример:
127.0.0.1 localhost
192.168.1.100 myserver.local


11. Инструменты для устранения сетевых неполадок

ip → основной инструмент для работы с интерфейсами, маршрутизацией, IP‑адресами
ss → проверка сокетов
tcpdump → захват пакетов
nmap → сканирование сети и портов
dig → запрос DNS
journalctl -u NetworkManager → просмотр журналов
👍10❤‍🔥83
JetBrains закрывает Fleet — легковесную IDE (текстовые редактор аля VS Code) нового поколения, развиваемую параллельно с IntelliJ IDEA. Fleet позиционировался как лёгковесная многопрофильная IDE, а затем — как редактор с интеллектуальной поддержкой кода.
Несмотря на технический успех и влияние на другие продукты компании, Fleet не смог занять устойчивую нишу. Команда признала, что поддержка двух похожих линеек IDE лишь запутывала пользователей. Вместо этого JetBrains переориентируется на новый вектор — агентную разработку, где код пишут AI помощники.

https://blog.jetbrains.com/fleet/2025/12/the-future-of-fleet/
👎12🤮6🤷‍♂5👍3😁1
Nvidia будет программно отслеживать местонахождение своих чипов для борьбы с контрабандой

Nvidia разработала технологию определения местоположения своих ИИ-ускорителей. Это поможет компании предотвратить контрабанду чипов искусственного интеллекта в страны, куда их экспорт запрещён.

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

Функция сначала станет доступна на новейших чипах Blackwell, которые обладают наибольшим количеством функций безопасности «аттестации» по сравнению с предыдущими поколениями Hopper и Ampere, но Nvidia изучает варианты внедрения технологии и для этих более старых ускорителей.

Таким образом компания стремится на призывы Белого дома и законодателей от обеих основных политических партий в Конгрессе США и принять меры по предотвращению контрабанды чипов ИИ в Китай и другие страны (например, в Россию), где их продажа ограничена.

https://www.reuters.com/business/nvidia-builds-location-verification-tech-that-could-help-fight-chip-smuggling-2025-12-10/
👎26🤮8👍4🤯3😁2🤬2🤡2
Поддержка Rust переведена из экспериментальных в основные возможности ядра Linux

На проходящей конференции Maintainers Summit разработчики ядра Linux признали успешным эксперимент по добавлению в ядро Linux компонентов на языке Rust и решили перевести поддержку языка Rust из статуса экспериментальной в полноценную,

Возможность разработки драйверов и модулей на языке Rust была добавлена в ядро 6.1 три года назад . С тех пор в состав ядра были включены абстракции для разработки на Rust драйверов для GPU и других компонентов

Сторонники продвижения Rust считают, что Rust исключает появление большинства ошибок, выявляемых в ядре и вызванных особенностями языка Си (обращение к памяти после её освобождения, выход на границу буфера и т.д.), и что применение Rust для нового кода позволяет сократить время разработки, благодаря снижению трудозатрат на отладку и брагодаря выявлению ошибок на ранней стадии написания кода.
Противники же внедрения Rust в ядро считают недопустимым использование нескольких языков программирования в сложных проектах - смешанные кодовые базы усложняют работу мэйнтейнеров, так как ставят их в зависимость от кода на другом языке.

https://lwn.net/Articles/1049831/
👎19🔥76🤮54🥰3🤔2👍1🎉1
Современная экосистема HTTP

PS. Относить CSS к языкам программирования - это, конечно, сильно
😁304🤯4👍2💩1😭1
Распространенные стратегии масштабирования базу данных:
(продолжение в следующем посте)
6👍2👏1