This media is not supported in your browser
VIEW IN TELEGRAM
Появилась новая нейронка для генерации веб-приложений — Adaptive. Пользователи уже успели сделать с ней клона ChatGPT и других сайтов.
В Adaptive можно добавлять ИИ-функции, встроить прием платежей и систему регистрации пользователей. При этом API-ключ других нейронок для работы не нужен.
Пробуем здесь (https://adaptive.ai/). Бесплатно дают сделать десять приложений.
@python_be1
В Adaptive можно добавлять ИИ-функции, встроить прием платежей и систему регистрации пользователей. При этом API-ключ других нейронок для работы не нужен.
Пробуем здесь (https://adaptive.ai/). Бесплатно дают сделать десять приложений.
@python_be1
Media is too big
VIEW IN TELEGRAM
🐱Статьи, графики, таблицы — новый ИИ-агент Suna делает всё за вас
Вышел бесплатный ИИ-инструмент Suna, который превращает любую задачу в детальный и чёткий доклад с графиками, таблицами и выводами.
Что умеет:
— Сам планирует, ищет и обрабатывает инфу — вы даёте только тему;
— Управляет браузером, Excel и даже кодом;
— Сканирует сотни источников;
— Генерирует визуально оформленные отчёты — всё уже готово к презентации.
Подходит для студентов, аналитиков, маркетологов и просто ленивых. Бесплатно.
Запускаем на ПК через GitHub (https://github.com/Kortix-ai/Suna) или онлайн — здесь (https://www.suna.so/).
5️⃣
@python_be1
Вышел бесплатный ИИ-инструмент Suna, который превращает любую задачу в детальный и чёткий доклад с графиками, таблицами и выводами.
Что умеет:
— Сам планирует, ищет и обрабатывает инфу — вы даёте только тему;
— Управляет браузером, Excel и даже кодом;
— Сканирует сотни источников;
— Генерирует визуально оформленные отчёты — всё уже готово к презентации.
Подходит для студентов, аналитиков, маркетологов и просто ленивых. Бесплатно.
Запускаем на ПК через GitHub (https://github.com/Kortix-ai/Suna) или онлайн — здесь (https://www.suna.so/).
5️⃣
@python_be1
Ваш первый бэкенд на Django — пошаговый учебник
Бесплатный самоучитель по Django (https://tutorial.djangogirls.org/), созданный специально для новичков. Шаг за шагом вы создадите веб-приложение (блог) на Python с использованием фреймворка Django.
По ходу дела объясняются все необходимые основы — от базового Python до шаблонов HTML/CSS. К концу у вас будет собственный рабочий блог на сервере и понимание принципов бэкенд-разработки.
#бэкенд #python #django
@python_be1
Бесплатный самоучитель по Django (https://tutorial.djangogirls.org/), созданный специально для новичков. Шаг за шагом вы создадите веб-приложение (блог) на Python с использованием фреймворка Django.
По ходу дела объясняются все необходимые основы — от базового Python до шаблонов HTML/CSS. К концу у вас будет собственный рабочий блог на сервере и понимание принципов бэкенд-разработки.
#бэкенд #python #django
@python_be1
🖥 PDF Craft — библиотека на Python для конвертации PDF (в первую очередь сканированных книг) в Markdown и EPUB с использованием локальных AI-моделей и LLM для структурирования содержимого
GitHub
🌟 Основные возможности
- Извлечение текста и макета
Использует сочетание DocLayout-YOLO и собственных алгоритмов для детектирования и фильтрации заголовков, колонтитулов, сносок и номеров страниц
- Локальный OCR
Распознаёт текст на странице через OnnxOCR, поддерживает ускорение на GPU (CUDA)
- Определение порядка чтения
С помощью layoutreader строит поток текста в том порядке, в котором его воспринимает человек
- Конвертация в Markdown
Генерирует .md с относительными ссылками на изображения (иллюстрации, таблицы, формулы) в папке assets
- Конвертация в EPUB
На основе промежуточных результатов OCR передаёт данные в LLM (рекомендуется DeepSeek) для построения оглавления, глав, корректировки ошибок и включения аннотаций
Установка и требования
Python ≥ 3.10 (рекомендуется 3.10.16).
`pip install pdf-craft и pip install onnxruntime==1.21.0 (или onnxruntime-gpu==1.21.0 для CUDA).`
Для EPUB-конвейера нужен доступ к LLM-сервису (например, DeepSeek).
🟡 Github (https://github.com/oomol-lab/pdf-craft)
@python_be1
GitHub
🌟 Основные возможности
- Извлечение текста и макета
Использует сочетание DocLayout-YOLO и собственных алгоритмов для детектирования и фильтрации заголовков, колонтитулов, сносок и номеров страниц
- Локальный OCR
Распознаёт текст на странице через OnnxOCR, поддерживает ускорение на GPU (CUDA)
- Определение порядка чтения
С помощью layoutreader строит поток текста в том порядке, в котором его воспринимает человек
- Конвертация в Markdown
Генерирует .md с относительными ссылками на изображения (иллюстрации, таблицы, формулы) в папке assets
- Конвертация в EPUB
На основе промежуточных результатов OCR передаёт данные в LLM (рекомендуется DeepSeek) для построения оглавления, глав, корректировки ошибок и включения аннотаций
Установка и требования
Python ≥ 3.10 (рекомендуется 3.10.16).
`pip install pdf-craft и pip install onnxruntime==1.21.0 (или onnxruntime-gpu==1.21.0 для CUDA).`
Для EPUB-конвейера нужен доступ к LLM-сервису (например, DeepSeek).
🟡 Github (https://github.com/oomol-lab/pdf-craft)
@python_be1
Товарищи! А есть библиотека для экспериментов, имитации процессов (химия, физика, оптика)? Везде только библиотеки для создания игр, это не совсем то что нужно...
@python_be1
@python_be1
1️⃣0️⃣0️⃣0️⃣ гайдов для разрабов в одном репозитории — разраб из Твиттера собирал огромный сундук знаний целых 10 лет.
В нем есть буквально ВСЁ: от шпаргалок по горячим клавишам для ускорения работы до фундаментальных гайдов по языкам программирования для веба, разработки ПО и курсов по устройству сетей, безопасности и многому другому.
• Инструменты для работы с CLI и GUI, вебом и локальными сетями.
• Список всех актуальных фреймворков и библиотек в 2025 году.
• Гайды по тестированию и хакингу приложений.
• Шпаргалки по взаимодействию с командной строкой.
• ТОННА блогов, Ютуб-каналов, колонок в онлайн-СМИ и журналах, чтобы поддерживать свежесть знаний и не отставать от прогресса.
Фолиант мудреца читаем — здесь. (https://github.com/trimstray/the-book-of-secret-knowledge?tab=readme-ov-file#manualshowtostutorials-toc)
👍
@python_be1
В нем есть буквально ВСЁ: от шпаргалок по горячим клавишам для ускорения работы до фундаментальных гайдов по языкам программирования для веба, разработки ПО и курсов по устройству сетей, безопасности и многому другому.
• Инструменты для работы с CLI и GUI, вебом и локальными сетями.
• Список всех актуальных фреймворков и библиотек в 2025 году.
• Гайды по тестированию и хакингу приложений.
• Шпаргалки по взаимодействию с командной строкой.
• ТОННА блогов, Ютуб-каналов, колонок в онлайн-СМИ и журналах, чтобы поддерживать свежесть знаний и не отставать от прогресса.
Фолиант мудреца читаем — здесь. (https://github.com/trimstray/the-book-of-secret-knowledge?tab=readme-ov-file#manualshowtostutorials-toc)
👍
@python_be1
Что такое collections.Counter?
collections.Counter — это специальный класс, предоставляющий удобный способ подсчета хэшируемых объектов. Он является подклассом словаря и предоставляет функциональность для подсчета количества вхождений каждого элемента в последовательность (список, кортеж, строку и т.д.).
@python_be1
collections.Counter — это специальный класс, предоставляющий удобный способ подсчета хэшируемых объектов. Он является подклассом словаря и предоставляет функциональность для подсчета количества вхождений каждого элемента в последовательность (список, кортеж, строку и т.д.).
@python_be1
🖥Задача: "Динамическое кэширование с ограничением памяти и частотой запросов"
🔖 Условие:
Реализуйте класс `SmartCache`, который работает следующим образом:
- Метод `put(key: str, value: Any)`:
- Сохраняет значение по ключу.
- Если суммарный объем памяти, занимаемый всеми элементами, превышает лимит (например, 10 MB), автоматически удаляются наименее "ценные" элементы.
- Метод `get(key: str) -> Any`:
- Возвращает значение по ключу.
- Увеличивает счётчик использования элемента.
- Если элемент отсутствует — возвращает `None`.
Что значит "ценность" элемента:
- Ценность = количество обращений (`hit count`) к элементу.
- При очистке кэша сначала удаляются элементы с наименьшим количеством обращений.
Ограничения:
- Класс должен корректно считать объём памяти, занимаемый элементами.
- Нужно учитывать, что элементы могут быть сложными структурами (`dict`, `list`, вложенные объекты).
- Решение должно быть эффективным: операции должны быть быстрыми даже при большом количестве элементов.
---
▪️ Подсказки:
- Для оценки размера объектов можно использовать модуль `sys.getsizeof`, но для сложных вложенных структур нужен рекурсивный подсчет.
- Для хранения частоты обращений стоит использовать дополнительную структуру данных (`collections.Counter` или `dict`).
- При очистке лучше сначала группировать элементы по "ценности", а затем удалять самые "дешевые".
---
▪️ Что оценивается:
- Умение работать с ограничениями по памяти.
- Аккуратная обработка ссылок и размеров объектов.
- Эффективность очистки кэша.
- Чистота и читаемость кода.
---
▪️ Разбор возможного решения:
Идея архитектуры:
- Храним:
- `storage`: словарь `{key: value}`.
- `hits`: счётчик `{key: hit_count}`.
- `size`: общий размер всех объектов.
- При `put()`:
- Добавляем элемент.
- Пересчитываем суммарный размер.
- Если размер превышает лимит:
- Удаляем наименее популярные элементы до тех пор, пока не уложимся в лимит.
- При `get()`:
- Увеличиваем `hit_count` элемента.
- Возвращаем значение или `None`.
Оценка размера объектов:
- Простого `sys.getsizeof` недостаточно для коллекций.
- Нужна функция, рекурсивно подсчитывающая размер всех вложенных объектов.
Мини-пример функции подсчета размера:
```
import sys
def deep_getsizeof(obj, seen=None):
"""Рекурсивно считает память объекта и его вложенных объектов"""
size = sys.getsizeof(obj)
if seen is None:
seen = set()
obj_id = id(obj)
if obj_id in seen:
return 0
seen.add(obj_id)
if isinstance(obj, dict):
size += sum([deep_getsizeof(v, seen) + deep_getsizeof(k, seen) for k, v in obj.items()])
elif isinstance(obj, (list, tuple, set, frozenset)):
size += sum(deep_getsizeof(i, seen) for i in obj)
return size
```
Мини-пример интерфейса `SmartCache`:
```
class SmartCache:
def __init__(self, max_size_bytes):
self.max_size = max_size_bytes
self.storage = {}
self.hits = {}
self.total_size = 0
def put(self, key, value):
# добавить логику добавления и очистки при переполнении
pass
def get(self, key):
# увеличить hit_count и вернуть значение
pass
```
---
▪️ Дополнительные вопросы:
- Как ускорить очистку кэша без полного перебора всех элементов?
- Как сделать потокобезопасную версию кэша?
- Как адаптировать `SmartCache` для распределённой архитектуры (кэш между несколькими машинами)?
---
@python_be1
🔖 Условие:
Реализуйте класс `SmartCache`, который работает следующим образом:
- Метод `put(key: str, value: Any)`:
- Сохраняет значение по ключу.
- Если суммарный объем памяти, занимаемый всеми элементами, превышает лимит (например, 10 MB), автоматически удаляются наименее "ценные" элементы.
- Метод `get(key: str) -> Any`:
- Возвращает значение по ключу.
- Увеличивает счётчик использования элемента.
- Если элемент отсутствует — возвращает `None`.
Что значит "ценность" элемента:
- Ценность = количество обращений (`hit count`) к элементу.
- При очистке кэша сначала удаляются элементы с наименьшим количеством обращений.
Ограничения:
- Класс должен корректно считать объём памяти, занимаемый элементами.
- Нужно учитывать, что элементы могут быть сложными структурами (`dict`, `list`, вложенные объекты).
- Решение должно быть эффективным: операции должны быть быстрыми даже при большом количестве элементов.
---
▪️ Подсказки:
- Для оценки размера объектов можно использовать модуль `sys.getsizeof`, но для сложных вложенных структур нужен рекурсивный подсчет.
- Для хранения частоты обращений стоит использовать дополнительную структуру данных (`collections.Counter` или `dict`).
- При очистке лучше сначала группировать элементы по "ценности", а затем удалять самые "дешевые".
---
▪️ Что оценивается:
- Умение работать с ограничениями по памяти.
- Аккуратная обработка ссылок и размеров объектов.
- Эффективность очистки кэша.
- Чистота и читаемость кода.
---
▪️ Разбор возможного решения:
Идея архитектуры:
- Храним:
- `storage`: словарь `{key: value}`.
- `hits`: счётчик `{key: hit_count}`.
- `size`: общий размер всех объектов.
- При `put()`:
- Добавляем элемент.
- Пересчитываем суммарный размер.
- Если размер превышает лимит:
- Удаляем наименее популярные элементы до тех пор, пока не уложимся в лимит.
- При `get()`:
- Увеличиваем `hit_count` элемента.
- Возвращаем значение или `None`.
Оценка размера объектов:
- Простого `sys.getsizeof` недостаточно для коллекций.
- Нужна функция, рекурсивно подсчитывающая размер всех вложенных объектов.
Мини-пример функции подсчета размера:
```
import sys
def deep_getsizeof(obj, seen=None):
"""Рекурсивно считает память объекта и его вложенных объектов"""
size = sys.getsizeof(obj)
if seen is None:
seen = set()
obj_id = id(obj)
if obj_id in seen:
return 0
seen.add(obj_id)
if isinstance(obj, dict):
size += sum([deep_getsizeof(v, seen) + deep_getsizeof(k, seen) for k, v in obj.items()])
elif isinstance(obj, (list, tuple, set, frozenset)):
size += sum(deep_getsizeof(i, seen) for i in obj)
return size
```
Мини-пример интерфейса `SmartCache`:
```
class SmartCache:
def __init__(self, max_size_bytes):
self.max_size = max_size_bytes
self.storage = {}
self.hits = {}
self.total_size = 0
def put(self, key, value):
# добавить логику добавления и очистки при переполнении
pass
def get(self, key):
# увеличить hit_count и вернуть значение
pass
```
---
▪️ Дополнительные вопросы:
- Как ускорить очистку кэша без полного перебора всех элементов?
- Как сделать потокобезопасную версию кэша?
- Как адаптировать `SmartCache` для распределённой архитектуры (кэш между несколькими машинами)?
---
@python_be1
🖥 Задача: "Кэширование и ленивые вычисления в многопоточном окружении"
🔜 Условие:
Вам нужно реализовать декоратор `@thread_safe_cached`, который:
- Кэширует результат вызова функции по её аргументам (аналог `functools.lru_cache`, но свой).
- Если несколько потоков одновременно вызывают функцию с одинаковыми аргументами:
- Только один поток реально выполняет функцию,
- Остальные ждут, пока результат будет вычислен, и получают готовый результат.
- Кэш никогда не удаляется (неограниченный размер).
Ограничения:
- Решение должно работать для произвольных функций и аргументов (hashable).
- Нельзя использовать готовый `functools.lru_cache` или другие библиотеки кэширования.
- Нужно обеспечить корректную работу в многопоточной среде без гонок данных.
---
▪️ Подсказки:
- Для кэширования подойдёт `dict` с ключами по аргументам (`*args`, `**kwargs`).
- Для защиты доступа к кэшу понадобится `threading.Lock`.
- Для ожидания завершения вычисления другими потоками можно использовать `threading.Event`.
- Продумайте carefully: как отличить "результат уже посчитан" от "результат в процессе вычисления".
---
▪️ Что оценивается:
- Умение работать с многопоточностью в Python.
- Правильная организация кэширования.
- Чистота и лаконичность кода.
- Умение обрабатывать тонкие случаи, например: одновременные вызовы.
---
▪️ Разбор возможного решения:
Основная идея:
- Создать кэш `cache: Dict[Key, Result]`.
- Одновременно создать словарь "ожиданий" `in_progress: Dict[Key, threading.Event]`.
- Если кто-то начал считать значение:
- Остальные ждут `Event`, пока оно не будет установлено.
Пример реализации:
```
import threading
import functools
def thread_safe_cached(func):
cache = {}
in_progress = {}
lock = threading.Lock()
.wraps(func)
def wrapper(*args, **kwargs):
key = (args, frozenset(kwargs.items()))
with lock:
if key in cache:
return cache[key]
if key not in in_progress:
in_progress[key] = threading.Event()
in_progress[key].clear()
creator = True
else:
creator = False
if creator:
try:
result = func(*args, **kwargs)
with lock:
cache[key] = result
finally:
in_progress[key].set()
with lock:
del in_progress[key]
return result
else:
in_progress[key].wait()
with lock:
return cache[key]
return wrapper
```
---
▪️ Пояснения к коду:
- При первом вызове для новых аргументов поток создаёт `Event` и начинает считать результат.
- Остальные потоки видят `Event` и вызывают `wait()`, пока первый поток не установит `set()`.
- Как только результат посчитан, `Event` сигнализирует всем ждущим потокам, что данные готовы.
- Доступ к `cache` и `in_progress` защищён через `lock` для избежания гонок.
---
▪️ Возможные подводные камни:
- ❗ Если не удалять `Event` из `in_progress`, кэш постепенно раздуется мусором.
- ❗ Если ошибка случится внутри `func`, необходимо всё равно освободить `Event`, иначе потоки будут вечно ждать.
- ❗ Нельзя держать `lock` во время выполнения тяжёлой функции `func`, иначе все потоки будут блокироваться.
---
▪️ Вопросы на собеседовании по этой задаче:
- Как изменить реализацию, чтобы кэш имел ограничение по размеру (например, максимум 1000 элементов)?
- Как адаптировать декоратор под асинхронные функции (`async def`)?
- Что будет, если `func` иногда бросает исключения? Как кэшировать ошибки или не кэшировать их?
- Как изменить реализацию так, чтобы кэш удалял устаревшие данные через TTL (Time-To-Live)?
---
@python_be1
🔜 Условие:
Вам нужно реализовать декоратор `@thread_safe_cached`, который:
- Кэширует результат вызова функции по её аргументам (аналог `functools.lru_cache`, но свой).
- Если несколько потоков одновременно вызывают функцию с одинаковыми аргументами:
- Только один поток реально выполняет функцию,
- Остальные ждут, пока результат будет вычислен, и получают готовый результат.
- Кэш никогда не удаляется (неограниченный размер).
Ограничения:
- Решение должно работать для произвольных функций и аргументов (hashable).
- Нельзя использовать готовый `functools.lru_cache` или другие библиотеки кэширования.
- Нужно обеспечить корректную работу в многопоточной среде без гонок данных.
---
▪️ Подсказки:
- Для кэширования подойдёт `dict` с ключами по аргументам (`*args`, `**kwargs`).
- Для защиты доступа к кэшу понадобится `threading.Lock`.
- Для ожидания завершения вычисления другими потоками можно использовать `threading.Event`.
- Продумайте carefully: как отличить "результат уже посчитан" от "результат в процессе вычисления".
---
▪️ Что оценивается:
- Умение работать с многопоточностью в Python.
- Правильная организация кэширования.
- Чистота и лаконичность кода.
- Умение обрабатывать тонкие случаи, например: одновременные вызовы.
---
▪️ Разбор возможного решения:
Основная идея:
- Создать кэш `cache: Dict[Key, Result]`.
- Одновременно создать словарь "ожиданий" `in_progress: Dict[Key, threading.Event]`.
- Если кто-то начал считать значение:
- Остальные ждут `Event`, пока оно не будет установлено.
Пример реализации:
```
import threading
import functools
def thread_safe_cached(func):
cache = {}
in_progress = {}
lock = threading.Lock()
.wraps(func)
def wrapper(*args, **kwargs):
key = (args, frozenset(kwargs.items()))
with lock:
if key in cache:
return cache[key]
if key not in in_progress:
in_progress[key] = threading.Event()
in_progress[key].clear()
creator = True
else:
creator = False
if creator:
try:
result = func(*args, **kwargs)
with lock:
cache[key] = result
finally:
in_progress[key].set()
with lock:
del in_progress[key]
return result
else:
in_progress[key].wait()
with lock:
return cache[key]
return wrapper
```
---
▪️ Пояснения к коду:
- При первом вызове для новых аргументов поток создаёт `Event` и начинает считать результат.
- Остальные потоки видят `Event` и вызывают `wait()`, пока первый поток не установит `set()`.
- Как только результат посчитан, `Event` сигнализирует всем ждущим потокам, что данные готовы.
- Доступ к `cache` и `in_progress` защищён через `lock` для избежания гонок.
---
▪️ Возможные подводные камни:
- ❗ Если не удалять `Event` из `in_progress`, кэш постепенно раздуется мусором.
- ❗ Если ошибка случится внутри `func`, необходимо всё равно освободить `Event`, иначе потоки будут вечно ждать.
- ❗ Нельзя держать `lock` во время выполнения тяжёлой функции `func`, иначе все потоки будут блокироваться.
---
▪️ Вопросы на собеседовании по этой задаче:
- Как изменить реализацию, чтобы кэш имел ограничение по размеру (например, максимум 1000 элементов)?
- Как адаптировать декоратор под асинхронные функции (`async def`)?
- Что будет, если `func` иногда бросает исключения? Как кэшировать ошибки или не кэшировать их?
- Как изменить реализацию так, чтобы кэш удалял устаревшие данные через TTL (Time-To-Live)?
---
@python_be1
Что выведет этот код при запуске на Python 3.10+ (например, 3.11)?
📌 Подсказка: [спойлер: Подумайте о порядке проверок, о том, какие атрибуты попадают в others, и об использовании __match_args__.Ответ:Automatic mode
Mode manual, other keys: ['threshold', 'debug']
Low threshold 0
Краткое пояснение:
Для первого объекта (mode="auto", threshold=10) срабатывает первый case Config(mode="auto") → Automatic mode.
Для второго (mode="manual", threshold=5, debug=True) первый не совпадает, второй с threshold<5 не проходит (5 < 5 → False), зато третий case Config(mode=mode, **others) — биндинг mode='manual', остальные ключи (threshold и debug) попадают в others → Mode manual, other keys: ['threshold', 'debug'].
Для третьего (threshold=0) первый и третий не подходят (нет mode), а второй — case Config(threshold=threshold) if threshold<5 — срабатывает (0<5) → Low threshold 0.]
@python_be1
📌 Подсказка: [спойлер: Подумайте о порядке проверок, о том, какие атрибуты попадают в others, и об использовании __match_args__.Ответ:Automatic mode
Mode manual, other keys: ['threshold', 'debug']
Low threshold 0
Краткое пояснение:
Для первого объекта (mode="auto", threshold=10) срабатывает первый case Config(mode="auto") → Automatic mode.
Для второго (mode="manual", threshold=5, debug=True) первый не совпадает, второй с threshold<5 не проходит (5 < 5 → False), зато третий case Config(mode=mode, **others) — биндинг mode='manual', остальные ключи (threshold и debug) попадают в others → Mode manual, other keys: ['threshold', 'debug'].
Для третьего (threshold=0) первый и третий не подходят (нет mode), а второй — case Config(threshold=threshold) if threshold<5 — срабатывает (0<5) → Low threshold 0.]
@python_be1
🖥 PyXL — аппаратный процессор, исполняющий Python без интерпретатора
Разработчик представил PyXL — уникальный аппаратный процессор, который исполняет Python-программы без использования традиционного интерпретатора или виртуальной машины.
Архитектура PyXL:
Python → CPython Bytecode → собственный набор инструкций для прямого исполнения на "железе".
Основан на стековой модели, полностью конвейерный, с сохранением динамической типизации Python без ограничений статических типов.
⏩ Бенчмарк GPIO:
PyXL выполняет переключение GPIO с задержкой всего 480 наносекунд.
Для сравнения: MicroPython на Pyboard — 14–25 микросекунд, несмотря на более высокую частоту (168МГц против 100МГц у PyXL).
Разработчик самостоятельно создал:
Компилятор, линкер и генератор кода
Аппаратную реализацию процессора
Проект демонстрирует, что возможно аппаратное исполнение Python с высокой скоростью и без потери гибкости языка. Полные технические детали будут представлены на PyCon 2025.
🎬 Демо и подробности: https://runpyxl.com/gpio
@python_be1
Разработчик представил PyXL — уникальный аппаратный процессор, который исполняет Python-программы без использования традиционного интерпретатора или виртуальной машины.
Архитектура PyXL:
Python → CPython Bytecode → собственный набор инструкций для прямого исполнения на "железе".
Основан на стековой модели, полностью конвейерный, с сохранением динамической типизации Python без ограничений статических типов.
⏩ Бенчмарк GPIO:
PyXL выполняет переключение GPIO с задержкой всего 480 наносекунд.
Для сравнения: MicroPython на Pyboard — 14–25 микросекунд, несмотря на более высокую частоту (168МГц против 100МГц у PyXL).
Разработчик самостоятельно создал:
Компилятор, линкер и генератор кода
Аппаратную реализацию процессора
Проект демонстрирует, что возможно аппаратное исполнение Python с высокой скоростью и без потери гибкости языка. Полные технические детали будут представлены на PyCon 2025.
🎬 Демо и подробности: https://runpyxl.com/gpio
@python_be1
🧪 Pocket Science Lab — карманная лаборатория для экспериментов. Это компактное устройство с открытым исходным кодом, превращающее смартфон или ПК в полноценную лабораторию для физических и инженерных экспериментов.
Проект предлагает приложение с впечатляющим функционалом: осциллограф, генератор сигналов, люксметр, датчики давления и даже управление сервоприводами для робототехники. Интересно реализована работа с реальными данными, например, можно анализировать звуковые волны через микрофон или строить графики на основе показаний акселерометра.
🤖 GitHub (https://github.com/fossasia/pslab-android?tab=readme-ov-file)
@python_be1
Проект предлагает приложение с впечатляющим функционалом: осциллограф, генератор сигналов, люксметр, датчики давления и даже управление сервоприводами для робототехники. Интересно реализована работа с реальными данными, например, можно анализировать звуковые волны через микрофон или строить графики на основе показаний акселерометра.
🤖 GitHub (https://github.com/fossasia/pslab-android?tab=readme-ov-file)
@python_be1
Вышла интерсная штука — padws!
Это бесконечная онлайн-доска с встроенным редактором кода и терминалом.
Поддерживает импорт объектов из VSCode и Cursor.
Посмотреть демо можно здесь, а селф-хост версию скачать на GitHub здесь.
https://github.com/pad-ws/pad.ws
#padws #coding #onlinewhiteboard #selfhost
@python_be1
Это бесконечная онлайн-доска с встроенным редактором кода и терминалом.
Поддерживает импорт объектов из VSCode и Cursor.
Посмотреть демо можно здесь, а селф-хост версию скачать на GitHub здесь.
https://github.com/pad-ws/pad.ws
#padws #coding #onlinewhiteboard #selfhost
@python_be1
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 TUIFIManager
Это кроссплатформенный терминальный termux-ориентированный файловый менеджер, предназначенный для использования с проектом Uni-Curses
📌 Как использовать:
Запустите tuifi в терминале, или импортируйте его в один из ваших проектов Uni-Curses как компонент, например:
`from TUIFIManager import *`
Установка
sudo pip3 install tuifimanager —upgrade
pip3 install TUIFIManager —upgrade
https://github.com/GiorgosXou/TUIFIManager
@python_be1
Это кроссплатформенный терминальный termux-ориентированный файловый менеджер, предназначенный для использования с проектом Uni-Curses
📌 Как использовать:
Запустите tuifi в терминале, или импортируйте его в один из ваших проектов Uni-Curses как компонент, например:
`from TUIFIManager import *`
Установка
sudo pip3 install tuifimanager —upgrade
pip3 install TUIFIManager —upgrade
https://github.com/GiorgosXou/TUIFIManager
@python_be1
🚀 DeepWiki-Open: автоматическая генерация вики-документации с ИИ
Это open-source инструмент для автоматического создания интерактивной вики-документации на основе исходного кода репозитория. Идеально подходит для разработчиков и команд, которые хотят быстро структурировать знания о проекте.
## 🔍 Что умеет DeepWiki
- Анализирует код и его архитектуру
- Генерирует документацию по компонентам и их связям
- Создает визуальные диаграммы (например, с помощью Mermaid)
- Структурирует всё в вики с удобной навигацией
✨ Особенности
✅ Мгновенная генерация вики
✅ Поддержка приватных репозиториев
✅ Интеллектуальный анализ кода с помощью OpenAI и Google Gemini
✅ Автоматические архитектурные диаграммы
✅ Удобный интерфейс
🛠️ Стек технологий
- Backend: Python (FastAPI)
- Frontend: Next.js + React
- Визуализация: Mermaid
- Контейнеризация: Docker, docker-compose
🚀 Быстрый старт
```
git clone https://github.com/AsyncFuncAI/deepwiki-open.git
cd deepwiki-open
echo "GOOGLE_API_KEY=ваш_google_api_key" > .env
echo "OPENAI_API_KEY=ваш_openai_api_key" >> .env
docker-compose up
```
▪ GitHub (https://github.com/AsyncFuncAI/deepwiki-open)
@python_be1
Это open-source инструмент для автоматического создания интерактивной вики-документации на основе исходного кода репозитория. Идеально подходит для разработчиков и команд, которые хотят быстро структурировать знания о проекте.
## 🔍 Что умеет DeepWiki
- Анализирует код и его архитектуру
- Генерирует документацию по компонентам и их связям
- Создает визуальные диаграммы (например, с помощью Mermaid)
- Структурирует всё в вики с удобной навигацией
✨ Особенности
✅ Мгновенная генерация вики
✅ Поддержка приватных репозиториев
✅ Интеллектуальный анализ кода с помощью OpenAI и Google Gemini
✅ Автоматические архитектурные диаграммы
✅ Удобный интерфейс
🛠️ Стек технологий
- Backend: Python (FastAPI)
- Frontend: Next.js + React
- Визуализация: Mermaid
- Контейнеризация: Docker, docker-compose
🚀 Быстрый старт
```
git clone https://github.com/AsyncFuncAI/deepwiki-open.git
cd deepwiki-open
echo "GOOGLE_API_KEY=ваш_google_api_key" > .env
echo "OPENAI_API_KEY=ваш_openai_api_key" >> .env
docker-compose up
```
▪ GitHub (https://github.com/AsyncFuncAI/deepwiki-open)
@python_be1