IT Ready
Качественные IT ресурсы, сайты, репозитории, курсы и инструменты для обучения. Информация ежедневно пополняется! Cотрудничество: @energy_c Реклама на бирже: https://telega.in/channels/+oQDlPHBPTg82MmU6/card РКН: https://clck.ru/3NJE9E
نمایش بیشتر📈 تحلیل کانال تلگرام IT Ready
کانال IT Ready در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 17 220 مشترک است و جایگاه 7 556 را در دسته فناوری و برنامهها و رتبه 37 989 را در منطقه روسيا دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 17 220 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 14 نوامبر, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر 88 و در ۲۴ ساعت گذشته برابر -10 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 8.73% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 4.63% واکنش نسبت به کل مشترکان کسب میکند.
- دسترسی پستها: هر پست به طور میانگین 1 503 بازدید دریافت میکند. در اولین روز معمولاً 797 بازدید جمعآوری میشود.
- واکنشها و تعامل: مخاطبان بهطور فعال حمایت میکنند؛ میانگین واکنش به هر پست 19 است.
- علایق موضوعی: محتوا بر موضوعات کلیدی مانند github, api, habr, собеседование, хабре تمرکز دارد.
📝 توضیح و سیاست محتوایی
نویسنده این فضا را محل بیان دیدگاههای شخصی توصیف میکند:
“Качественные IT ресурсы, сайты, репозитории, курсы и инструменты для обучения.
Информация ежедневно пополняется!
Cотрудничество: @energy_c
Реклама на бирже: https://telega.in/channels/+oQDlPHBPTg82MmU6/card
РКН: https://clck.ru/3NJE9E”
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 15 نوامبر, 2026)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامهها تبدیل کردهاند.
در حال بارگذاری دادهها
| تاریخ | رشد مشترکین | اشارات | کانالها | |
| 15 نوامبر | +2 | |||
| 14 نوامبر | +2 | |||
| 13 نوامبر | +1 | |||
| 12 نوامبر | +2 | |||
| 11 نوامبر | +1 | |||
| 10 نوامبر | 0 | |||
| 09 نوامبر | 0 | |||
| 08 نوامبر | +1 | |||
| 07 نوامبر | 0 | |||
| 06 نوامبر | +3 | |||
| 05 نوامبر | +1 | |||
| 04 نوامبر | +6 | |||
| 03 نوامبر | +4 | |||
| 02 نوامبر | +6 | |||
| 01 نوامبر | +8 |
| 2 | Диагностируем сетевые проблемы в Linux через tcpdump!
Иногда приложение не может подключиться к удалённому серверу, хотя маршруты настроены правильно и firewall не показывает явных блокировок. В таких случаях полезно посмотреть, что происходит с пакетами на самом деле.
Например, запрос завершается ошибкой:
curl https://api.example.com
Получаем Connection timed out, но непонятно, где именно возникает проблема. Для диагностики используем tcpdump, который позволяет перехватывать сетевые пакеты прямо на интерфейсах Linux.
Посмотрим весь TCP-трафик на HTTPS-порту:
sudo tcpdump -nn -i any 'tcp port 443'
Параметр -nn отключает преобразование адресов и портов в имена, а -i any захватывает трафик со всех доступных интерфейсов.
Если в выводе видим:
IP 10.0.0.15.42310 > 203.0.113.10.443: Flags [S]
Это SYN-пакет — попытка установить TCP-соединение. Если SYN повторяется, но ответа нет, стоит проверить маршрутизацию, сетевую фильтрацию и доступность удалённого сервера.
Если приходит ответ:
IP 203.0.113.10.443 > 10.0.0.15.42310: Flags [S.]
Это SYN-ACK — сервер отвечает на запрос соединения. Если клиент затем отправляет ACK, TCP handshake завершён, и дальнейшую диагностику можно сосредоточить на TLS или приложении.
На production удобнее фильтровать пакеты по конкретному адресу и порту. Например, при проверке соединения с PostgreSQL:
sudo tcpdump -nn -i any 'host 10.0.0.5 and tcp port 5432'
Так можно увидеть попытки подключения, повторные передачи и сбросы соединений, не анализируя посторонний трафик.
Для просмотра содержимого незашифрованных HTTP-запросов:
sudo tcpdump -A -s 0 -i any 'tcp port 80'
Флаг -A отображает данные в ASCII, а -s 0 захватывает пакеты целиком. Для HTTPS содержимое HTTP-запросов останется зашифрованным.
Если нужно сохранить трафик для последующего анализа в Wireshark:
sudo tcpdump -i any 'tcp port 443' -c 100 -w capture.pcap
Команда запишет первые 100 подходящих пакетов в файл, который можно изучить отдельно.
🔥 tcpdump помогает быстро определить, на каком этапе возникает сетевая проблема: при отправке пакетов, получении ответа или уже после установки TCP-соединения. Особенно полезно, когда логи приложения не дают никаких зацепок.
➡️ IT Ready | #практика | 896 |
| 3 | ❤️ Интересная статья на Хабре: «Деньги быстрее железа: что на самом деле обвалило акции ИИ‑компаний»!
В этой статье:
• Узнаете, почему акции Intel, Alphabet и Amazon резко упали, несмотря на сильные финансовые показатели и рост ИИ-направлений;
• Разберётесь, как дефицит оперативной памяти, нехватка электроэнергии и задержки строительства дата-центров тормозят развитие ИИ;
• Поймёте, почему миллиардные инвестиции в нейросети пока не обеспечивают ожидаемой отдачи и чем нынешняя ситуация отличается от пузыря доткомов.
🔊 Продолжай читать на Habr!
➡️ IT Ready | #статья | 997 |
| 4 | Bash позволяет повторно использовать команды из истории без их поиска и ручного ввода!
Например, набрали длинную команду, но забыли sudo и получили ошибку доступа. Вместо повторного ввода достаточно написать:
apt install nginx
sudo !!
Bash подставит вместо !! предыдущую команду целиком и выполнит её с повышенными правами.
А если нужно повторить команду, которую запускали несколько шагов назад, используйте относительный номер:
!-2
Bash выполнит команду, находящуюся на две позиции раньше в истории текущей оболочки.
Если помните только начало команды, можно найти последнее совпадение:
!docker
!grep
Bash найдёт последнюю команду, начинающуюся с указанного текста, и сразу выполнит её.
Команду можно сначала посмотреть, не выполняя. Для этого добавьте :p:
!docker:p
!grep:p
Так Bash покажет найденную команду, чтобы вы могли проверить её перед запуском.
🔥 Подстановка команд из истории Bash экономит время при работе с длинными командами и избавляет от постоянного поиска уже введённых инструкций. Главное помнить, что без :p найденная команда выполняется сразу.
➡️ IT Ready | #совет | 1 024 |
| 5 | 🔴В 2025 году Россияне заработали 5,3 млрд рублей на арбитраже криптовалют
По данным Минфин 32% граждан покинули своё место работы поскольку в среднем уже в первый месяц смогли заработать 250 000 рублей, а через 2-3 месяца с легкостью вышли на семизначные числа.
Самое смешное, что лишь 8% россиян что-то слышали об этой профессии хотя все инструкции бесплатно лежат на канале Арбитраж Криптовалют
Там объясняют, как имея телефон и доступ в интернет заработать свои первые $3000. Причём разжёвывают так доступно, что поймёт даже ребенок. Кстати, на канале сегодня вышла новая рабочая связка!
Ссылка для входа — https://t.me/+lvVed8tyOGg5ZWNi | 884 |
| 6 | 😎 Awesome RU — большая подборка интересных проектов с открытым исходным кодом от русскоязычных разработчиков!
В репозитории собраны библиотеки, инструменты и готовые решения для веб-разработки, машинного обучения, работы с базами данных, серверной инфраструктурой и не только. Среди них есть как известные проекты вроде ClickHouse, CatBoost и Nginx, так и менее популярные, но полезные разработки. У каждого проекта есть краткое описание и ссылка на исходный код.
Оставляю ссылочку: GitHub 📱
➡️ IT Ready | #репозиторий | 1 058 |
| 7 | Как безопасно проверить конфигурацию nftables на удалённом линукс сервере?
Ошибки в правилах nftables могут привести к блокировке SSH-доступа, особенно при использовании политики drop или изменении разрешённых портов. Перед применением новой конфигурации полезно проверить её и изучить действующие правила, не изменяя firewall.
Практика рассчитана на линукс с установленным nftables. Все команды ниже не изменяют активные правила фильтрации. Сначала посмотрим текущий набор правил:
sudo nft list ruleset
Команда покажет таблицы, цепочки, правила и другие объекты nftables.
Сохраним снимок текущих правил для диагностики:
sudo sh -c 'umask 077; nft list ruleset > /root/nft-rules-snapshot.conf'
Файл будет доступен только root. Это диагностический снимок, а не гарантированная резервная копия для восстановления динамических правил.
Теперь проверим подготовленную конфигурацию, например /etc/nftables.conf:
sudo nft -c -f /etc/nftables.conf
Параметр -c проверяет конфигурацию без применения изменений. Если обнаружены ошибки, nft выведет диагностическое сообщение. Успешная проверка не гарантирует сохранения SSH-доступа после применения правил.
Дополнительно посмотрим действующие цепочки, политики и идентификаторы правил:
sudo nft -a list ruleset
Особое внимание уделим базовым цепочкам с hook input, их приоритетам и политикам accept или drop.
Проверим, на каких TCP-портах сервер принимает подключения:
sudo ss -ltnp
Найдём SSH-сервер в выводе и убедимся, что его порт учтён в планируемой конфигурации. Прослушивание порта само по себе не гарантирует доступность через firewall.
Команды не изменяют действующие правила. Для их применения на удалённом сервере необходимы отдельный механизм отката и резервный консольный доступ.
🔥 Предварительная проверка через nft -c помогает обнаружить ошибки конфигурации без риска заблокировать SSH из-за её применения.
➡️ IT Ready | #практика | 1 190 |
| 8 | 😎 Handium — нейросеть для распознавания рукописного текста!
Сервис превращает фотографии, сканы и PDF с рукописным текстом в редактируемый документ. Нейросеть распознаёт прописной и печатный почерк, курсив, мелкие и трудночитаемые записи, а результат можно проверить и исправить во встроенном редакторе. Handium старается сохранить исходную структуру страницы: заголовки, списки, таблицы, расположение блоков и формулы.
📌 Оставляю ссылочку: handium.ru
🚪 AI Ready | #нейросеть | 1 472 |
| 9 | Как получить стек вызовов зависшей программы без отладчика?
Если Python-программа перестала отвечать и не выдаёт ошибок, определить причину бывает непросто. Для таких ситуаций в стандартной библиотеке есть модуль faulthandler.
Он позволяет вывести стеки вызовов Python-потоков по истечении заданного времени.
import faulthandler
faulthandler.dump_traceback_later(5)
while True:
pass
Через пять секунд Python выведет текущие стеки вызовов в stderr с указанием файлов и номеров строк. Это работает даже тогда, когда программа продолжает выполняться без исключений.
Для наблюдения за длительными зависаниями можно включить периодический вывод.
faulthandler.dump_traceback_later(5, repeat=True)
Теперь стеки будут выводиться каждые пять секунд, помогая определить, на каком участке кода находится каждый поток.
После завершения проверяемой операции запланированный вывод можно отменить.
faulthandler.cancel_dump_traceback_later()
Важно учитывать, что faulthandler не определяет зависание автоматически: вывод происходит по таймеру независимо от состояния программы.
🔥 faulthandler.dump_traceback_later() помогает диагностировать зависания без отладчика, показывая стеки Python-потоков с указанием файлов и номеров строк.
➡️ IT Ready | #совет | 1 571 |
| 10 | بدون متن... | 1 511 |
| 11 | Как научить AI-агента определять, когда нужен поиск в интернете?
Не каждый запрос требует внешних источников, базовые вопросы можно обрабатывать без поиска, а сведения о последних релизах и изменениях API необходимо проверять. Постоянные обращения к поисковым сервисам увеличивают задержку и расходы.
Реализуем LLM-маршрутизатор через OpenAI Responses API. Модель будет определять необходимость поиска и возвращать типизированное решение. Установим зависимости и настроим API-ключ:
pip install -U openai pydantic
export OPENAI_API_KEY="your_api_key"
Опишем структуру ответа через Pydantic. Поле need_search отвечает за выбор маршрута, а query содержит поисковую строку:
from openai import OpenAI
from pydantic import BaseModel
client = OpenAI()
class SearchDecision(BaseModel):
need_search: bool
query: str
Создадим функцию классификации. responses.parse() обеспечивает структурированный вывод согласно заданной схеме без ручного разбора JSON:
def route(question: str) -> SearchDecision:
response = client.responses.parse(
model="gpt-4.1-mini",
instructions=(
"Определи, нужен ли интернет-поиск. "
"Для актуальных данных используй поиск. "
"Для общих вопросов поиск не нужен. "
"Если поиск не нужен, query пустой."
),
input=question,
text_format=SearchDecision,
)
if response.output_parsed is None:
raise RuntimeError("No routing decision")
return response.output_parsed
Проверим маршрутизатор на двух запросах. Первый не требует актуальных данных, второй предполагает проверку последнего релиза библиотеки:
for question in [
"Что такое декоратор в Python?",
"Что изменилось в последней версии FastAPI?",
]:
print(route(question).model_dump())
Один из возможных результатов показывает, что модель выбирает разные маршруты. Конкретная поисковая строка может отличаться между запусками:
{'need_search': False, 'query': ''}
{'need_search': True, 'query': 'FastAPI latest release changes'}
Результат классификации используется в обработчике агента. При необходимости приложение выполняет поиск и передаёт найденные данные модели. Ниже показан фрагмент интеграции; search_web() и answer_with_llm() реализуются отдельно:
def handle(question: str):
decision = route(question)
if decision.need_search:
results = search_web(decision.query or question)
return answer_with_llm(question, context=results)
return answer_with_llm(question)
Маршрутизация не гарантирует правильного выбора и требует тестирования на реальных запросах. Дополнительный LLM-вызов также имеет стоимость, поэтому эффективность определяется экономией на поиске и общей задержкой обработки.
🔥 LLM-маршрутизация позволяет управлять вызовами внешних инструментов и исключать избыточный поиск там, где достаточно знаний модели.
➡️ IT Ready | #практика | 1 490 |
| 12 | Gemini Pro Argon на пол года по цене кофе?
Gemini Pro на 6 месяцев можно купить за 6$ (480₽ вместо 10.000₽), в 20 раз выгоднее чем официальная подписка.
> 4.0 Argon топ для вайбкодеров
> Nano Banana 2 PRO (картинки)
> Видео генерация (видео, нарезки, мувики)
> 5 ТБ облака в Google One
Для вайбкодеров есть API-токены в 2-3 раза дешевле официальных!
Приобрести можно в Магазине с 20.000+ покупок и 2000+ отзывов (есть возвраты и замены). | 1 297 |
| 13 | 🤔 Свежая и очень интересная статья с Хабр: «Как IaC, документация и бэкапы помогли восстановить сервисы, когда пострадали дата-центры Яндекса»!
В этой статье:
• Узнаете, как команда восстановила критичные сервисы на новой площадке менее чем за сутки после масштабной аварии;
• Разберёте, какую роль сыграли Terraform, Ansible, GitOps, документация и заранее проверенные бэкапы;
• Поймёте, почему для аварийного восстановления недостаточно просто сохранить данные и как правильно учитывать зависимости между сервисами.
🔊 Продолжай читать на Habr!
➡️ IT Ready | #статья | 1 456 |
| 14 | Запускаем инференс ML-модели на python через ONNX Runtime!
После обучения модели в scikit-learn её можно экспортировать в ONNX и выполнять предсказания через ONNX Runtime. Это позволяет запускать модель без установленного scikit-learn в окружении инференса, а в некоторых случаях — ускорить обработку данных за счёт оптимизированного выполнения.
Разберём, как конвертировать обученную модель в ONNX, запустить инференс и проверить корректность предсказаний. Для начала установим зависимости:
pip install scikit-learn skl2onnx onnxruntime numpy
Обучим классификатор RandomForestClassifier на встроенном датасете Iris. Он содержит характеристики цветков трёх видов ириса, а наша модель будет определять вид по четырём числовым признакам:
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
X, y = load_iris(return_X_y=True)
model = RandomForestClassifier(
n_estimators=100,
random_state=42
)
model.fit(X, y)
Теперь экспортируем обученную модель в ONNX с помощью skl2onnx. Конвертер преобразует структуру Random Forest в операции ONNX, сохраняя обученные параметры. Переданный массив задаёт тип входных данных float32 и количество признаков, а размер батча остаётся переменным:
from skl2onnx import to_onnx
import numpy as np
onnx_model = to_onnx(
model,
X[:1].astype(np.float32),
target_opset=12
)
with open("model.onnx", "wb") as f:
f.write(onnx_model.SerializeToString())
Получили файл model.onnx, содержащий всё необходимое для выполнения модели. Теперь создадим сессию ONNX Runtime, которая загрузит вычислительный граф и подготовит его к инференсу. Через CPUExecutionProvider явно укажем выполнение на процессоре:
import onnxruntime as ort
session = ort.InferenceSession(
"model.onnx",
providers=["CPUExecutionProvider"]
)
input_name = session.get_inputs()[0].name
Имя входного тензора получаем непосредственно из модели, поэтому его не нужно прописывать вручную. Передадим сразу пять объектов одним батчем, предварительно приведя данные к float32 — именно такой тип ожидает экспортированная модель:
samples = X[:5].astype(np.float32)
predictions = session.run(
None,
{input_name: samples}
)
print(predictions[0])
Метод session.run() выполняет инференс и возвращает список выходных значений. Для нашего классификатора первый элемент содержит предсказанные классы, а второй — вероятности классов.
Осталось проверить, что конвертация не изменила результат классификации. Получим предсказания исходной модели на тех же данных и сравним их с результатом ONNX Runtime:
sklearn_preds = model.predict(samples)
onnx_preds = predictions[0]
print(np.array_equal(
sklearn_preds,
onnx_preds
))
Ожидаемый результат — True. Предсказанные классы совпадают, но для других моделей после конвертации возможны численные расхождения.
ONNX Runtime может ускорить инференс за счёт оптимизаций, однако результат зависит от модели, размера батча и оборудования. Не все операции scikit-learn поддерживают конвертацию, а прирост скорости стоит проверять бенчмарками.
🔥 ONNX Runtime позволяет запускать ML-модели без зависимости от обучающего фреймворка, что удобно при развёртывании API и сервисов инференса.
➡️ IT Ready | #практика | 1 346 |
| 15 | Потолок зарплаты в IT — ВСЁ
Даже Senior-разработчики упираются в потолок. Дальше — менеджмент, смена компании или годы ожидания повышения.
Но есть другой путь — зарабатывать больше на уже накопленном IT-опыте. И для этого необязательно переучиваться с нуля.
Как именно, рассказывает Артём Алехин — экс-тимлид Сбера, работавший на валютных удаленках.
Он совмещал российский найм с валютным контрактом, зарабатывая $8–9 тысяч в месяц. Артем создал проект в рамках которого получил для своих 200 учеников 40+ офферов на 200к+.
Три направления, с которыми работает Артём:
— Валютная удалёнка: выход на зарубежный рынок и поиск офферов от $5 000.
— Монетизация экспертизы: превращать свой IT-опыт в доход через обучение и менторство
— Свой IT-продукт: запуск SaaS с проверкой спроса сервиса для селлеров.
Артём помогает выбрать подходящий путь и выстроить стратегию роста дохода, чтобы перестать зависеть от одного работодателя.
Переходи в канал Артёма и изучай: @artem_itishnaya | 1 053 |
| 16 | 🧐 Meshy AI — нейросеть для создания 3D-моделей по тексту и изображениям!
Сервис позволяет генерировать трёхмерные объекты по текстовому описанию или обычной картинке. Достаточно описать нужный предмет или загрузить референс — AI создаст 3D-модель, которую можно доработать и использовать в собственных проектах. Meshy поддерживает генерацию текстур, настройку материалов и экспорт моделей в популярные 3D-форматы. Помогает создавать персонажей, игровые объекты, реквизит, элементы окружения и другие модели без необходимости моделировать всё вручную.
📌 Оставляю ссылочку: meshy.ai
🚪 AI Ready | #нейросеть | 1 601 |
| 17 | Запускаем инференс ML-модели на python через ONNX Runtime!
После обучения модели в scikit-learn её можно экспортировать в ONNX и выполнять предсказания через ONNX Runtime. Это позволяет запускать модель без установленного scikit-learn в окружении инференса, а в некоторых случаях — ускорить обработку данных за счёт оптимизированного выполнения.
Разберём, как конвертировать обученную модель в ONNX, запустить инференс и проверить корректность предсказаний. Для начала установим зависимости:
pip install scikit-learn skl2onnx onnxruntime numpy
Обучим классификатор RandomForestClassifier на встроенном датасете Iris. Он содержит характеристики цветков трёх видов ириса, а наша модель будет определять вид по четырём числовым признакам:
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
X, y = load_iris(return_X_y=True)
model = RandomForestClassifier(
n_estimators=100,
random_state=42
)
model.fit(X, y)
Теперь экспортируем обученную модель в ONNX с помощью skl2onnx. Конвертер преобразует структуру Random Forest в операции ONNX, сохраняя обученные параметры. Переданный массив задаёт тип входных данных float32 и количество признаков, а размер батча остаётся переменным:
from skl2onnx import to_onnx
import numpy as np
onnx_model = to_onnx(
model,
X[:1].astype(np.float32),
target_opset=12
)
with open("model.onnx", "wb") as f:
f.write(onnx_model.SerializeToString())
Получили файл model.onnx, содержащий всё необходимое для выполнения модели. Теперь создадим сессию ONNX Runtime, которая загрузит вычислительный граф и подготовит его к инференсу. Через CPUExecutionProvider явно укажем выполнение на процессоре:
import onnxruntime as ort
session = ort.InferenceSession(
"model.onnx",
providers=["CPUExecutionProvider"]
)
input_name = session.get_inputs()[0].name
Имя входного тензора получаем непосредственно из модели, поэтому его не нужно прописывать вручную. Передадим сразу пять объектов одним батчем, предварительно приведя данные к float32 — именно такой тип ожидает экспортированная модель:
samples = X[:5].astype(np.float32)
predictions = session.run(
None,
{input_name: samples}
)
print(predictions[0])
Метод session.run() выполняет инференс и возвращает список выходных значений. Для нашего классификатора первый элемент содержит предсказанные классы, а второй — вероятности классов.
Осталось проверить, что конвертация не изменила результат классификации. Получим предсказания исходной модели на тех же данных и сравним их с результатом ONNX Runtime:
sklearn_preds = model.predict(samples)
onnx_preds = predictions[0]
print(np.array_equal(
sklearn_preds,
onnx_preds
))
Ожидаемый результат — True. Предсказанные классы совпадают, но для других моделей после конвертации возможны численные расхождения.
ONNX Runtime может ускорить инференс за счёт оптимизаций, однако результат зависит от модели, размера батча и оборудования. Не все операции scikit-learn поддерживают конвертацию, а прирост скорости стоит проверять бенчмарками.
🔥 ONNX Runtime позволяет запускать ML-модели без зависимости от обучающего фреймворка, что удобно при развёртывании API и сервисов инференса.
➡️ IT Ready | #практика | 1 612 |
| 18 | Очнись, твои крипта уже исчезла
Хакеры вынесли $6,3 млрд с Binance — через один ноутбук инженера. Крупнейший взлом в истории крипты занял 20 минут.
Теперь помни: твои деньги не только в крипте. Интернет-банк, карты, СМС-коды — всё это ломается через тот же самый ноутбук и смартфон. Через твой.
Если хочешь сохранить свои деньги и не стать следующей жертвой — подписывайся на «Пакет безопасности»
Здесь разбирают самые актуальные схемы мошенничества, инструменты приватности базу кибергигиены.
Без шуток, сейчас это один из самых полезных каналов в Телеге. Надеемся на лучшее, но к чему нужно готовиться — вы и сами понимаете: @package_security | 989 |
| 19 | 😍 MLCheatSheets — большая подборка шпаргалок по ключевым алгоритмам и методам!
В репозитории собраны краткие материалы, которые помогают разобраться в основных концепциях машинного обучения, повторить математические основы и освежить знания перед практикой. Удобный справочник, когда нужно быстро вспомнить важную формулу, принцип работы алгоритма или подготовиться к техническому собеседованию.
Оставляю ссылочку: GitHub 📱
➡️ IT Ready | #репозиторий | 1 802 |
| 20 | Самостоятельные стрелочные структуры в Python!
В Python объекты могут хранить ссылки на самих себя, образуя циклические структуры данных. Например, список можно добавить в качестве элемента этого же списка.
data = [1, 2, 3]
data.append(data)
После такой операции последний элемент не становится копией исходного списка. Он ссылается на тот же объект, что легко проверить с помощью оператора is.
print(data[-1] is data) # True
Интересно, что Python умеет корректно отображать подобные структуры. При выводе механизм repr() списка обнаруживает рекурсивную ссылку и обозначает её многоточием, предотвращая бесконечный вывод.
print(data) # [1, 2, 3, [...]]
Подобные связи встречаются в графах, объектных моделях и структурах с обратными ссылками. Однако при самостоятельном обходе таких данных необходимо учитывать циклы, иначе рекурсивный алгоритм может зациклиться.
Например, поверхностное копирование создаёт новый список, но сохраняет ссылки на исходные элементы:
copy = data.copy()
print(copy[-1] is data) # True
print(copy[-1] is copy) # False
При работе с циклическими структурами важно различать копирование контейнера и копирование всей связанной структуры объектов.
🔥 Понимание самоссылочных объектов помогает избегать ошибок при копировании, рекурсивном обходе и обработке графовых структур, где один объект может встречаться несколько раз.
👉 IT Ready | #совет | 1 818 |
