👨🔧 CoreNN — база данных для работы с векторами и эмбеддингами в масштабе миллиардов, с сублинейным временем отклика на обычных серверах.
📌 Пример: поиск по 1 млрд эмбеддингов комментариев Reddit из индекса 4,8 ТБ на диске занимает всего 15 мс.
🔧 Ключевые особенности:
- Работает на дешёвых SSD/flash-накопителях, а не в дорогой DRAM → в 40–100 раз дешевле.
- Масштабирование: от 1 до 1 млрд векторов в одном индексе.
- Upsert и delete оптимизируют локальный граф, освобождают место и сохраняют скорость — без полной перестройки.
- Поддерживает параллельные запросы и обновления без блокировок.
🔗 https://github.com/wilsonzlin/CoreNN
📌 Пример: поиск по 1 млрд эмбеддингов комментариев Reddit из индекса 4,8 ТБ на диске занимает всего 15 мс.
🔧 Ключевые особенности:
- Работает на дешёвых SSD/flash-накопителях, а не в дорогой DRAM → в 40–100 раз дешевле.
- Масштабирование: от 1 до 1 млрд векторов в одном индексе.
- Upsert и delete оптимизируют локальный граф, освобождают место и сохраняют скорость — без полной перестройки.
- Поддерживает параллельные запросы и обновления без блокировок.
🔗 https://github.com/wilsonzlin/CoreNN
❤3👍1🤔1
🎯 Разбор задания с подвохом (Python, собес)
Задание
> Сформируйте список функций
> Затем вызовите их по очереди (или из потоков/таймеров) — ожидаемый вывод:
Наивное решение (почти все так пишут)
Что выведет?
2 2 2 — и это не баг интерпретатора.
В чём подвох
- Замыкание поздно связывает имя i: лямбды не «копируют» значение, а смотрят на переменную i, когда вы их вызываете.
- К моменту вызова цикл уже закончился, i == 2, значит все три лямбды печатают 2.
Правильные варианты
Привязать значение через параметр по умолчанию (часто лучший баланс читаемости)
Заводим фабрику функций (прямо подчёркивает намерение)
functools.partial — когда нужно просто «прикрутить аргументы»
А если таймеры/потоки?
Мини-чеклист для собеса
- Лямбды/внутренние функции в цикле → проверь, не упираешься ли в late binding.
- Если нужна «заморозка» значения, используй параметр по умолчанию, фабрику или partial.
Не путай с другой классикой: изменяемые значения по умолчанию (например, def f(x, acc=[])), это другая ловушка.
Вывод
В Python замыкания захватывают имена, а не значения.
Привязывай нужное значение в момент создания функции — и подвох исчезнет.
Задание
> Сформируйте список функций
callbacks
, где каждая функция при вызове печатает свой индекс.> Затем вызовите их по очереди (или из потоков/таймеров) — ожидаемый вывод:
0 1 2
.Наивное решение (почти все так пишут)
callbacks = [lambda: print(i) for i in range(3)]
for f in callbacks:
f()
Что выведет?
2 2 2 — и это не баг интерпретатора.
В чём подвох
- Замыкание поздно связывает имя i: лямбды не «копируют» значение, а смотрят на переменную i, когда вы их вызываете.
- К моменту вызова цикл уже закончился, i == 2, значит все три лямбды печатают 2.
Правильные варианты
Привязать значение через параметр по умолчанию (часто лучший баланс читаемости)
callbacks = [lambda i=i: print(i) for i in range(3)]
for f in callbacks:
f() # 0 1 2
Заводим фабрику функций (прямо подчёркивает намерение)
def make_printer(i):
def _f():
print(i)
return _f
callbacks = [make_printer(i) for i in range(3)]
for f in callbacks:
f() # 0 1 2
functools.partial — когда нужно просто «прикрутить аргументы»
from functools import partial
callbacks = [partial(print, i) for i in range(3)]
for f in callbacks:
f() # 0 1 2
А если таймеры/потоки?
import threading
for i in range(3):
# ПЛОХО: замкнёт одно и то же i
# threading.Timer(1, lambda: print(i)).start()
# ХОРОШО: привяжем значение сразу
threading.Timer(1, lambda i=i: print(i)).start()
Мини-чеклист для собеса
- Лямбды/внутренние функции в цикле → проверь, не упираешься ли в late binding.
- Если нужна «заморозка» значения, используй параметр по умолчанию, фабрику или partial.
Не путай с другой классикой: изменяемые значения по умолчанию (например, def f(x, acc=[])), это другая ловушка.
Вывод
В Python замыкания захватывают имена, а не значения.
Привязывай нужное значение в момент создания функции — и подвох исчезнет.
👍9❤5🔥5
🚀 Фишка на Python: Скачивание нескольких файлов параллельно с помощью
Этот скрипт использует
ThreadPoolExecutor
Этот скрипт использует
urllib.request
+ concurrent.futures
, чтобы загружать файлы одновременно и значительно ускорить процесс.
import os
import urllib.request
from concurrent.futures import ThreadPoolExecutor, as_completed
def downloader(url):
"""Скачивает указанный URL и сохраняет его на диск"""
req = urllib.request.urlopen(url)
filename = os.path.basename(url)
ext = os.path.splitext(url)[1]
if not ext:
raise RuntimeError('URL не содержит расширения')
with open(filename, 'wb') as file_handle:
while True:
chunk = req.read(1024)
if not chunk:
break
file_handle.write(chunk)
return f'Загрузка завершена: {filename}'
def main(urls):
"""Создаёт пул потоков и скачивает указанные файлы"""
with ThreadPoolExecutor(max_workers=5) as executor:
futures = [executor.submit(downloader, url) for url in urls]
for future in as_completed(futures):
print(future.result())
if __name__ == '__main__':
urls = [
"http://www.irs.gov/pub/irs-pdf/f1040.pdf",
"http://www.irs.gov/pub/irs-pdf/f1040a.pdf",
"http://www.irs.gov/pub/irs-pdf/f1040ez.pdf",
"http://www.irs.gov/pub/irs-pdf/f1040es.pdf",
"http://www.irs.gov/pub/irs-pdf/f1040sb.pdf"
]
main(urls)
👍5❤1🔥1🐳1
🚀 PySentry — это сверхбыстрый сканер уязвимостей для Python-проектов, написанный на Rust, который справляется с аудитом зависимостей быстро и надёжно.
Основное:
- Автоматически анализирует файлы зависимостей:
- Сверяет зависимости с базами уязвимостей: PyPA Advisory Database, PyPI JSON API, OSV.dev
- Поддерживает вывод в формате: человекочитаемом, JSON, SARIF или Markdown — отлично подходит для CI/CD и IDE-интеграций (например, GitHub Security)
- Написан на Rust с асинхронной обработкой, многоуровневым кэшированием и оптимизированной резолюцией — очень быстро и эффективно
🟢 Github
Основное:
- Автоматически анализирует файлы зависимостей:
uv.lock
, poetry.lock
, Pipfile.lock
, pyproject.toml
, Pipfile
, requirements.txt
и др. - Сверяет зависимости с базами уязвимостей: PyPA Advisory Database, PyPI JSON API, OSV.dev
- Поддерживает вывод в формате: человекочитаемом, JSON, SARIF или Markdown — отлично подходит для CI/CD и IDE-интеграций (например, GitHub Security)
- Написан на Rust с асинхронной обработкой, многоуровневым кэшированием и оптимизированной резолюцией — очень быстро и эффективно
uvx pysentry-rs /path/to/project
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥1
Forwarded from Machinelearning
Alibaba Group и Alibaba Cloud возглавили консорциум по финансированию шэньчжэньского стартапа X Square Robot (осн. 2023). Участвовали HSG, Meituan и Legend Star.
Это часть стратегии Alibaba — компания планирует вложить $53 млрд в ИИ-инфраструктуру. Цель сделки — новое поколение «умной робототехники», где ИИ отвечает за автономность и принятие решений. Инвестиция также отражает курс Китая на ускоренное развитие сектора ИИ и робототехники.
mktnews.com
Китайский производитель гуманоидных роботов Unitree планирует выйти на шанхайскую биржу STAR Market в IV квартале. Цель — оценка $7 млрд (почти в 6 раз выше июльского раунда).
Компания — лидер в Китае по производству роботов-гуманоидов, её продукция используется в университетах и на публичных мероприятиях. Unitree уже прибыльна: выручка >1 млрд юаней ($140 млн). За спиной — Alibaba, Tencent и Geely. Успешное IPO станет ключевым индикатором интереса инвесторов к физическим воплощениям ИИ.
reuters.com
Стоимость генерации видео в Veo 3 упала: стандартная версия — с $0.75 до $0.40 за секунду (-47%), Veo 3 Fast — до $0.15 (-62.5%). Теперь поддерживаются вертикальные форматы (9:16) и качество 1080p. Обе модели стабильны и доступны через Gemini API.
Это сигнал к масштабированию и ценовой конкуренции на рынке видео-ИИ. Veo 3 уже применяется в проектах Invisible Studio, Saga, Mosaic для ускорения контент-продакшена.
X.com
Anthropic расширила возможности ассистента Claude на мобильных устройствах. При разрешении пользователя ИИ теперь может использовать геолокацию, календарь и другие данные для планирования мероприятий и рекомендаций.
Это шаг к созданию по-настоящему персональных ИИ-агентов, работающих с контекстом пользователя. Такой подход усиливает конкуренцию среди мобильных ассистентов и закрепляет тренд интеграции ИИ в повседневные процессы.
Скачать
Компания официально выступила в поддержку инициативы сенатора Скотта Винера, регулирующей передовые ИИ-системы. Ключевые положения:
• публикация принципов безопасности и прозрачности
• уведомление о критических инцидентах в течение 15 дней
• защита осведомителей и санкции за нарушения
• порог для регулирования — >10²⁶ FLOPs
Anthropic отмечает, что закон закрепляет уже применяемые практики и создаёт равные условия для конкуренции. Это первый случай открытой поддержки крупной ИИ-лабораторией регуляторных инициатив.
anthropic.com
- Флэшкарты и квизы: формат «вопрос–ответ» + тесты с настройкой сложности.
-Reports: авто-рекомендации форматов (блог, white paper, стади-гайд и др.), кастомизация промптов.
- ИИ-подкасты: новые режимы — Deep Dive, Brief, Critique, Debate; поддержка всех языков.
Примеры, видео, квиза и карточек прикрепили к посту.
Notebooklm
@ai_machinelearning_big_data
#news #ai #ml
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
🐍 Полезные фишки парсинга в Python
1️⃣ Парсинг JSON без лишних усилий
2️⃣ HTML/XML-парсинг с BeautifulSoup
3️⃣ Парсинг аргументов командной строки с argparse
4️⃣ Быстрый CSV-парсинг
5️⃣ Регулярки для гибкого текста
🔥 Эти трюки помогают парсить JSON, HTML, CSV, аргументы CLI и даже “грязный” текст.
Подойдут как для скриптов, так и для продакшн-кода.
👉 Сохрани, чтобы не забыть!
1️⃣ Парсинг JSON без лишних усилий
import json
data = '{"name": "Alice", "age": 25}'
parsed = json.loads(data)
print(parsed["name"]) # Alice
2️⃣ HTML/XML-парсинг с BeautifulSoup
from bs4 import BeautifulSoup
html = "<h1>Hello <b>Python</b></h1>"
soup = BeautifulSoup(html, "html.parser")
print(soup.h1.text) # Hello Python
3️⃣ Парсинг аргументов командной строки с argparse
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--name")
args = parser.parse_args()
print(f"Hello, {args.name}")
4️⃣ Быстрый CSV-парсинг
import csv
with open("data.csv") as f:
reader = csv.DictReader(f)
for row in reader:
print(row["username"], row["score"])
5️⃣ Регулярки для гибкого текста
import re
text = "Email: test@example.com"
match = re.search(r"\w+@\w+\.\w+", text)
print(match.group()) # test@example.com
🔥 Эти трюки помогают парсить JSON, HTML, CSV, аргументы CLI и даже “грязный” текст.
Подойдут как для скриптов, так и для продакшн-кода.
👉 Сохрани, чтобы не забыть!
❤5🔥2🤯1
🔥 Полезный Python-трюк для работы с сетями: `ipaddress` в стандартной библиотеке
Когда нужно быстро проверить IP-адреса, маски подсетей или принадлежность хоста сети — не обязательно тянуть внешние пакеты. В Python уже есть мощный модуль
📌 Чем полезно
Проверка принадлежности адреса подсети
Удобный парсинг IPv4 и IPv6
Генерация диапазонов IP
Всё встроено в Python — никаких сторонних зависимостей
🔥 Отлично подходит для написания сетевых тулзов, firewall-скриптов, DevOps-автоматизации и тестов.
#Python #Networking #Tips #DevOps
Когда нужно быстро проверить IP-адреса, маски подсетей или принадлежность хоста сети — не обязательно тянуть внешние пакеты. В Python уже есть мощный модуль
ipaddress
.
import ipaddress
# Создаём сеть
net = ipaddress.ip_network("192.168.1.0/24")
# Проверяем, входит ли IP в сеть
print(ipaddress.ip_address("192.168.1.42") in net) # True
print(ipaddress.ip_address("10.0.0.5") in net) # False
# Перебираем все адреса подсети
for ip in net.hosts():
print(ip)
break # выведет первый адрес
# Работаем с IPv6 так же просто
ipv6 = ipaddress.ip_network("2001:db8::/32")
print(ipaddress.ip_address("2001:db8::1") in ipv6) # True
📌 Чем полезно
Проверка принадлежности адреса подсети
Удобный парсинг IPv4 и IPv6
Генерация диапазонов IP
Всё встроено в Python — никаких сторонних зависимостей
🔥 Отлично подходит для написания сетевых тулзов, firewall-скриптов, DevOps-автоматизации и тестов.
#Python #Networking #Tips #DevOps
👍8❤4
⚡️ Библиотека EasyOCR для распознавания текста на картинках
Поддерживает 80+ языков.
Выдаёт результат в виде списка, каждый элемент которого представляет собой координаты ограничивающей рамки, обнаруженный текст и уровень уверенности модели.
Установка:
🟢 Репозиторий
Поддерживает 80+ языков.
Выдаёт результат в виде списка, каждый элемент которого представляет собой координаты ограничивающей рамки, обнаруженный текст и уровень уверенности модели.
Установка:
pip install easyocr
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍1🥰1
В Python можно писать собственные контекстные менеджеры с помощью декоратора
contextlib.contextmanager
. Это позволяет красиво управлять ресурсами (файлами, соединениями, блокировками) без лишнего кода.
from contextlib import contextmanager
import time
@contextmanager
def timer(name: str):
start = time.time()
try:
yield
finally:
end = time.time()
print(f"[{name}] elapsed: {end - start:.4f} sec")
# Использование
with timer("heavy calc"):
sum(i * i for i in range(10_000_000))
🔥 Фишка: можно легко оборачивать любой ресурс (БД, сокет, API) и гарантировать его закрытие или освобождение.
Это делает код чище и надёжнее.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3🔥2
🚀 Автоматизация задач на Python за пару строк
Вместо ручного запуска можно поручить Python выполнять действия по расписанию.
Библиотека schedule делает это максимально просто 👇
💡 Каждые 5 секунд скрипт будет выводить напоминание.
Можно легко заменить на любое действие: запуск бэкапов, парсинг сайтов или проверку API.
Вместо ручного запуска можно поручить Python выполнять действия по расписанию.
Библиотека schedule делает это максимально просто 👇
import schedule
import time
def greet():
print("⏰ Hello! Time to learn Python!")
schedule.every(5).seconds.do(greet)
while True:
schedule.run_pending()
time.sleep(1)
💡 Каждые 5 секунд скрипт будет выводить напоминание.
Можно легко заменить на любое действие: запуск бэкапов, парсинг сайтов или проверку API.
👍9❤6🥰2
В этом гайде собраны реальные и актуальные вопросы из интервью в крупных технологических компаниях и стартапах (Google, Amazon, Stripe, Booking и др.).
Каждая тема разобрана через призму того, что именно проверяют интервьюеры, как лучше структурировать ответ и какие подводные камни важно учитывать.
👉 Гайд: https://uproger.com/gajd-po-sobesedovaniyu-python-razrabotchika-middle-2025-goda/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤3👍3
⚡️ Depyler — транспилятор Python → Rust, созданный для высокой производительности и энергосбережения.
Он переводит код Python в безопасный и быстрый Rust, снижая энергопотребление на 75–85%.
Проект сделан без технического долга и соответствует строгим принципам качества (Toyota Way).
Основные возможности
Транспиляция ядра
- Разбор Python AST и преобразование в HIR для безопасных трансформаций
- Интеллектуальный вывод типов с поддержкой аннотаций
- Автоматическая работа с памятью: владение и заимствование
- Direct Rules Engine — перевод конструкций Python в Rust по шаблонам
- Оптимизация строк — интернирование часто используемых литералов
Производительность и эффективность
- Энергопотребление на 75–85% ниже по сравнению с Python
- Бинарная оптимизация: LTO,
- Работа со строками без лишних копирований (через `Cow`)
- Использование LLVM-бэкенда для агрессивной оптимизации
- Авто-интернирование строк, встречающихся более 3 раз
Безопасность и верификация
- Property-based тестирование для проверки семантической эквивалентности
- Анализ памяти: защита от use-after-free и гонок данных
- Автовставка проверок границ при необходимости
- Контрактное программирование: верификация предусловий и постусловий
- Архитектура, готовая к формальной проверке (SMT)
Интеграция ИИ
- Поддержка MCP v1.0 (модель контекстного протокола)
- Интерактивный AI-режим для подсказок в транспиляции
- Рекомендации по аннотациям и оптимизации
- Оценка сложности миграции
Инструменты разработчика
- Поддержка LSP (VSCode, Neovim и др.)
- Отладка с сопоставлением исходников
- Профилирование и оптимизация «горячих точек»
- Автогенерация документации API из Python
🔗 Репозиторий: https://github.com/paiml/depyler
Он переводит код Python в безопасный и быстрый Rust, снижая энергопотребление на 75–85%.
Проект сделан без технического долга и соответствует строгим принципам качества (Toyota Way).
Основные возможности
Транспиляция ядра
- Разбор Python AST и преобразование в HIR для безопасных трансформаций
- Интеллектуальный вывод типов с поддержкой аннотаций
- Автоматическая работа с памятью: владение и заимствование
- Direct Rules Engine — перевод конструкций Python в Rust по шаблонам
- Оптимизация строк — интернирование часто используемых литералов
Производительность и эффективность
- Энергопотребление на 75–85% ниже по сравнению с Python
- Бинарная оптимизация: LTO,
strip
, panic=abort
- Работа со строками без лишних копирований (через `Cow`)
- Использование LLVM-бэкенда для агрессивной оптимизации
- Авто-интернирование строк, встречающихся более 3 раз
Безопасность и верификация
- Property-based тестирование для проверки семантической эквивалентности
- Анализ памяти: защита от use-after-free и гонок данных
- Автовставка проверок границ при необходимости
- Контрактное программирование: верификация предусловий и постусловий
- Архитектура, готовая к формальной проверке (SMT)
Интеграция ИИ
- Поддержка MCP v1.0 (модель контекстного протокола)
- Интерактивный AI-режим для подсказок в транспиляции
- Рекомендации по аннотациям и оптимизации
- Оценка сложности миграции
Инструменты разработчика
- Поддержка LSP (VSCode, Neovim и др.)
- Отладка с сопоставлением исходников
- Профилирование и оптимизация «горячих точек»
- Автогенерация документации API из Python
🔗 Репозиторий: https://github.com/paiml/depyler
❤3👍1🔥1