🚀 Удобная система сборки для нескольких языков с rigx
rigx — это экспериментальная система сборки для C, C++, Go, Rust, Zig, Nim и Python, которая упрощает процесс разработки, обеспечивая изоляцию и кэширование. Все зависимости управляются автоматически, а сборки выполняются в песочнице, что исключает проблемы с "работает на моем компьютере".
🚀 Основные моменты:
- Простая декларативная конфигурация через rigx.toml.
- Поддержка многопоточности и интеграционных тестов.
- Кэширование выходных данных для ускорения сборок.
- Совместимость с Nix для управления зависимостями.
📌 GitHub: https://github.com/unofficialtools/rigx
#python
rigx — это экспериментальная система сборки для C, C++, Go, Rust, Zig, Nim и Python, которая упрощает процесс разработки, обеспечивая изоляцию и кэширование. Все зависимости управляются автоматически, а сборки выполняются в песочнице, что исключает проблемы с "работает на моем компьютере".
🚀 Основные моменты:
- Простая декларативная конфигурация через rigx.toml.
- Поддержка многопоточности и интеграционных тестов.
- Кэширование выходных данных для ускорения сборок.
- Совместимость с Nix для управления зависимостями.
📌 GitHub: https://github.com/unofficialtools/rigx
#python
❤9👍4🔥2🎉1
🌟 Интуитивные голосовые интерфейсы с Moonshine Voice
Moonshine Voice — это открытый инструмент для разработчиков, позволяющий создавать голосовые приложения в реальном времени. Все работает на устройстве, обеспечивая высокую скорость и конфиденциальность без необходимости в учетных записях или API-ключах. Поддерживает множество языков и предлагает высокую точность распознавания речи.
🚀 Основные моменты:
- Оптимизирован для приложений с низкой задержкой.
- Поддержка множества платформ: от Python до IoT-устройств.
- Простые в использовании API для транскрипции и синтеза речи.
- Высокая точность моделей, превосходящая Whisper Large V3.
- Многоязычная поддержка для STT и TTS.
📌 GitHub: https://github.com/moonshine-ai/moonshine
#python
Moonshine Voice — это открытый инструмент для разработчиков, позволяющий создавать голосовые приложения в реальном времени. Все работает на устройстве, обеспечивая высокую скорость и конфиденциальность без необходимости в учетных записях или API-ключах. Поддерживает множество языков и предлагает высокую точность распознавания речи.
🚀 Основные моменты:
- Оптимизирован для приложений с низкой задержкой.
- Поддержка множества платформ: от Python до IoT-устройств.
- Простые в использовании API для транскрипции и синтеза речи.
- Высокая точность моделей, превосходящая Whisper Large V3.
- Многоязычная поддержка для STT и TTS.
📌 GitHub: https://github.com/moonshine-ai/moonshine
#python
🔥8❤3
Она позволяет командам взаимодействовать с агентами, которые выполняют задачи в изолированных средах Kubernetes, обеспечивая безопасность и гибкость.
🚀 Основные моменты:
- Slack-агенты для выполнения задач и получения ответов.
- Изолированные среды для безопасного выполнения команд.
- Поддержка пользовательских инструментов и плагинов.
- Долговременные рабочие процессы с возможностью восстановления.
- Хранение состояния для повторного подключения без потери данных.
📌 GitHub: https://github.com/paradigmxyz/centaur
#python
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥3👍2
🚀 GPU-библиотека для классического машинного обучения
FlashLib предлагает высокопроизводительные реализации операторов машинного обучения, таких как kmeans, PCA и DBSCAN, с использованием Triton и CuteDSL. Библиотека позволяет эффективно обрабатывать данные на GPU, обеспечивая простоту использования и высокую скорость выполнения.
🚀Основные моменты:
- Поддержка 15 высокоуровневых примитивов для машинного обучения.
- Информативный API для оценки производительности операций.
- Оптимизированные реализации для кластеризации, регрессии и декомпозиции.
- Легкая интеграция с PyTorch и sklearn.
📌 GitHub: https://github.com/FlashML-org/flashlib
#python
FlashLib предлагает высокопроизводительные реализации операторов машинного обучения, таких как kmeans, PCA и DBSCAN, с использованием Triton и CuteDSL. Библиотека позволяет эффективно обрабатывать данные на GPU, обеспечивая простоту использования и высокую скорость выполнения.
🚀Основные моменты:
- Поддержка 15 высокоуровневых примитивов для машинного обучения.
- Информативный API для оценки производительности операций.
- Оптимизированные реализации для кластеризации, регрессии и декомпозиции.
- Легкая интеграция с PyTorch и sklearn.
📌 GitHub: https://github.com/FlashML-org/flashlib
#python
❤5👍4
🔍 Обнаружение уязвимостей с помощью Audit
Audit — это агент для поиска уязвимостей, использующий 8-ступенчатую методологию, основанную на взаимодействии узких агентов и принципе "умышленного несогласия". Он интегрируется с Claude Pro и предлагает структурированные отчеты о безопасности.
🚀 Основные моменты:
- Многопоточность: узкие агенты работают параллельно для поиска уязвимостей.
- Умышленное несогласие: второй агент проверяет выводы первого.
- Отслеживание доступности: подтверждает, что уязвимости могут быть достигнуты злоумышленником.
- Обратная связь: находит новые задачи на основе обнаруженных уязвимостей.
📌 GitHub: https://github.com/evilsocket/audit
#python
Audit — это агент для поиска уязвимостей, использующий 8-ступенчатую методологию, основанную на взаимодействии узких агентов и принципе "умышленного несогласия". Он интегрируется с Claude Pro и предлагает структурированные отчеты о безопасности.
🚀 Основные моменты:
- Многопоточность: узкие агенты работают параллельно для поиска уязвимостей.
- Умышленное несогласие: второй агент проверяет выводы первого.
- Отслеживание доступности: подтверждает, что уязвимости могут быть достигнуты злоумышленником.
- Обратная связь: находит новые задачи на основе обнаруженных уязвимостей.
📌 GitHub: https://github.com/evilsocket/audit
#python
👍13❤5🔥4
Как создать аннотированный график с помощью #Python и matplotlib 🐍📊
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤7🔥1🎉1
Возможности
- проверка корректности телефонного номера
- определение страны и оператора связи
- поиск упоминаний через Google, Bing и DuckDuckGo
- поиск номера в открытом коде на GitHub
- поиск публикаций и обсуждений на Reddit
- создание отчётов в форматах JSON и PDF
- параллельная обработка запросов
- управление через простой CLI
Инструмент пригодится для OSINT-исследований, threat intelligence и проверки открытых источников.
Используйте его только законно и с соблюдением права на конфиденциальность.
🔗 GitHub: https://github.com/HackUnderway/SearchPhone
#OSINT #CyberSecurity #Python #OpenSource #GitHub #ThreatIntelligence #InfoSec
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍6🔥5
Обычный вызов LLM часто напоминает лотерею: модель может нарушить формат, пропустить требование или вернуть ответ, который сложно проверить.
Mellea предлагает писать такие системы как типизированные generative-программы.
Достаточно описать Python-функцию:
from pydantic import BaseModel
from mellea import generative, start_session
class UserProfile(BaseModel):
name: str
age: int
@generative
def extract_user(text: str) -> UserProfile:
"""Извлеки имя и возраст пользователя."""
m = start_session()
user = extract_user(
m,
text="Alice is 31 years old."
)
Mellea превращает docstring в инструкцию, аннотации типов - в схему ответа, а затем проверяет результат и при необходимости автоматически повторяет генерацию.
Возможности проекта:
- структурированные ответы через Pydantic;
- проверяемые требования и автоматический repair;
- rejection sampling и majority voting;
- поддержка OpenAI, Ollama, Hugging Face, Bedrock, LiteLLM и WatsonX;
- интеграция с существующим кодом;
- публикация generative-программ как MCP-инструментов.
Проект начат в IBM Research, написан на Python и распространяется под лицензией Apache 2.0.
https://github.com/generative-computing/mellea
#python #ai #llm #opensource #agents
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🔥8👍5
🐍 collections.Counter: больше, чем подсчёт частот
Большинство используют Counter только ради most_common(), хотя у него есть куда более интересные возможности.
Можно складывать и вычитать частоты:
Пересечение и объединение счётчиков:
Удалить элементы с нулевой и отрицательной частотой:
Получить общее число элементов:
Развернуть счётчик обратно в последовательность:
Особенно удобно для анализа логов, событий, токенов, категорий и любых данных, где важна частота появления.
#Python #Collections #Backend
Большинство используют Counter только ради most_common(), хотя у него есть куда более интересные возможности.
from collections import Counter
a = Counter("abracadabra")
b = Counter("barbecue")
Можно складывать и вычитать частоты:
a + b
a - b
Пересечение и объединение счётчиков:
a & b # минимальные значения
a | b # максимальные значения
Удалить элементы с нулевой и отрицательной частотой:
clean = +a
Получить общее число элементов:
a.total()
Развернуть счётчик обратно в последовательность:
list(a.elements())
Особенно удобно для анализа логов, событий, токенов, категорий и любых данных, где важна частота появления.
#Python #Collections #Backend
❤10👍6🔥4
🐍 Python-совет: как объединить списки разной длины и не потерять данные
Обычный zip() останавливается на самом коротком списке:
Элементы 4 и 5 просто исчезнут. Чтобы сохранить их, используйте zip_longest():
Результат:
А когда списки обязаны иметь одинаковую длину, в Python 3.10+ лучше включить проверку:
Вместо тихой потери данных Python сразу выбросит ValueError.
Полезно при обработке таблиц, CSV, результатов API и параллельных наборов данных.
#Python #Programming #PythonTips
Обычный zip() останавливается на самом коротком списке:
numbers = [1, 2, 3, 4, 5]
letters = ["a", "b", "c"]
print(list(zip(numbers, letters)))
# [(1, 'a'), (2, 'b'), (3, 'c')]
Элементы 4 и 5 просто исчезнут. Чтобы сохранить их, используйте zip_longest():
from itertools import zip_longest
result = zip_longest(
numbers,
letters,
fillvalue="нет значения",
)
print(list(result))
Результат:
[
(1, "a"),
(2, "b"),
(3, "c"),
(4, "нет значения"),
(5, "нет значения"),
]
А когда списки обязаны иметь одинаковую длину, в Python 3.10+ лучше включить проверку:
zip(numbers, letters, strict=True)
Вместо тихой потери данных Python сразу выбросит ValueError.
Полезно при обработке таблиц, CSV, результатов API и параллельных наборов данных.
#Python #Programming #PythonTips
🔥8❤6👍5🎉1
🚀 Neo4j без сервера: GraphForge запускает полноценный Cypher прямо внутри Python-скрипта
GraphForge занимает редкую нишу между NetworkX и серверными графовыми БД. Вы получаете встроенный графовый движок на Rust, полный openCypher и хранение проекта в обычной директории.
Что внутри:
- четыре независимых слоя на Rust: parser → IR → planning → execution;
- результаты сразу возвращаются как Apache Arrow Table;
- данные легко передаются в Pandas и Polars;
- постоянное хранение построено на Parquet;
- встроены PageRank, Louvain и гибридный текстово-векторный поиск;
- Python- и Node.js-биндинги работают поверх одного движка.
При этом GraphForge честно позиционируется как инструмент исследовательского и notebook-масштаба. Для миллиардных графов, высокой нагрузки и многопользовательского доступа по-прежнему нужна серверная БД.
Python и Node.js доступны сейчас, Swift и Kotlin находятся в планах. Лицензия — Apache 2.0.
https://github.com/CurateLabs/graphforge
#RustLang #Python #OpenSource #GraphDatabase #DataScience #KnowledgeGraph
GraphForge занимает редкую нишу между NetworkX и серверными графовыми БД. Вы получаете встроенный графовый движок на Rust, полный openCypher и хранение проекта в обычной директории.
Что внутри:
- четыре независимых слоя на Rust: parser → IR → planning → execution;
- результаты сразу возвращаются как Apache Arrow Table;
- данные легко передаются в Pandas и Polars;
- постоянное хранение построено на Parquet;
- встроены PageRank, Louvain и гибридный текстово-векторный поиск;
- Python- и Node.js-биндинги работают поверх одного движка.
from graphforge import GraphForge
graph = GraphForge("research/")
result = graph.execute("""
MATCH (a)-[:CITES]->(b)
RETURN a.title, b.title
""")
print(result.to_pandas())
При этом GraphForge честно позиционируется как инструмент исследовательского и notebook-масштаба. Для миллиардных графов, высокой нагрузки и многопользовательского доступа по-прежнему нужна серверная БД.
Python и Node.js доступны сейчас, Swift и Kotlin находятся в планах. Лицензия — Apache 2.0.
https://github.com/CurateLabs/graphforge
#RustLang #Python #OpenSource #GraphDatabase #DataScience #KnowledgeGraph
❤7👍6🔥2
XY - новая open-source библиотека визуализации от команды Reflex. Она пытается объединить удобство Matplotlib с интерактивностью браузерных графиков и производительностью Rust.
Для больших датасетов Rust-ядро XY вычисляет только то, что реально можно показать при текущем разрешении экрана. При приближении данные уточняются и появляются исходные точки.
Есть даже совместимость с привычным стилем Matplotlib:
По собственному бенчмарку разработчиков на Apple M5 Pro:
- 100 млн точек в density-режиме - ~0,081 с;
- 100 млн реальных маркеров без агрегации - ~1,34 с;
- библиотека уже использовалась для визуализации датасета OpenStreetMap примерно на 10 млрд точек.
Под капотом:
Графики интерактивные: pan, zoom, hover, selection и linked charts. Их можно использовать в Jupyter и веб-приложениях, а затем экспортировать в HTML, PNG, SVG или PDF.
Установка:
Если подход оправдает себя, XY может стать интересной альтернативой связке Matplotlib + Plotly для действительно больших датасетов.
Источник:
https://github.com/reflex-dev/xy
#Python #DataScience #Visualization #Rust
Для больших датасетов Rust-ядро XY вычисляет только то, что реально можно показать при текущем разрешении экрана. При приближении данные уточняются и появляются исходные точки.
import xy
chart = xy.line_chart(
xy.line(
[1, 2, 3, 4, 5],
[120, 180, 165, 240, 310]
)
)
chart
Есть даже совместимость с привычным стилем Matplotlib:
import xy.pyplot as plt
fig, ax = plt.subplots()
ax.plot(x, y)
plt.show()
По собственному бенчмарку разработчиков на Apple M5 Pro:
- 100 млн точек в density-режиме - ~0,081 с;
- 100 млн реальных маркеров без агрегации - ~1,34 с;
- библиотека уже использовалась для визуализации датасета OpenStreetMap примерно на 10 млрд точек.
Под капотом:
Python API
↓
ColumnStore
↓
Rust compute
↓
binary buffers
↓
WebGL2 / Canvas
Графики интерактивные: pan, zoom, hover, selection и linked charts. Их можно использовать в Jupyter и веб-приложениях, а затем экспортировать в HTML, PNG, SVG или PDF.
Установка:
pip install xy
Если подход оправдает себя, XY может стать интересной альтернативой связке Matplotlib + Plotly для действительно больших датасетов.
Источник:
https://github.com/reflex-dev/xy
#Python #DataScience #Visualization #Rust
❤7🔥5👍3
🐍 Django-разработчикам: `DEBUG=True` в проде опаснее, чем кажется.
Это не просто красивые страницы ошибок. При включённом DEBUG приложение может раскрывать stack trace, настройки, пути файлов, middleware, URL-паттерны и другие детали окружения.
Главная рекомендация - fail closed:
То есть по умолчанию DEBUG всегда выключен, а включается только локально.
Даже staging, QA и preview-среды, доступные из интернета, лучше запускать с
Отдельная ловушка - переменные окружения:
Здесь
Лучше явно парсить boolean или использовать
Мелкая настройка, которая однажды может спасти production от очень неприятной утечки.
https://lincolnloop.com/blog/setting-djangos-debug-safely/
#Python #Django #Backend #Security #DevOps
Это не просто красивые страницы ошибок. При включённом DEBUG приложение может раскрывать stack trace, настройки, пути файлов, middleware, URL-паттерны и другие детали окружения.
Главная рекомендация - fail closed:
DEBUG = False
То есть по умолчанию DEBUG всегда выключен, а включается только локально.
Даже staging, QA и preview-среды, доступные из интернета, лучше запускать с
DEBUG=False.Отдельная ловушка - переменные окружения:
DEBUG = os.environ.get("DEBUG", "False") != "False"
Здесь
DEBUG=false или DEBUG=0 могут неожиданно превратиться в True.Лучше явно парсить boolean или использовать
django-environ.Мелкая настройка, которая однажды может спасти production от очень неприятной утечки.
https://lincolnloop.com/blog/setting-djangos-debug-safely/
#Python #Django #Backend #Security #DevOps
👍6❤5🔥1😁1🎉1🤩1
🐍 В Python у
Выглядит непривычно:
Блок
Но есть важный нюанс. Если внутри сработает
Из-за этого
Например, цикл пытается найти нужное значение. Если нашёл, делает
Синтаксис существует в Python давно, но до сих пор выглядит как маленькая пасхалка языка.
#Python #Programming #Backend #PythonTips
while есть else. И многие разработчики узнают об этом спустя годыВыглядит непривычно:
number = 0
while number < 5:
print(number)
number += 1
else:
print("Цикл завершился")
Блок
else выполнится, если цикл закончился естественно, то есть условие while стало ложным.Но есть важный нюанс. Если внутри сработает
break, else уже не выполнится.
number = 0
while number < 5:
if number == 3:
break
number += 1
else:
print("Сюда не попадём")
Из-за этого
while...else удобно использовать там, где нужно отличить нормальное завершение поиска от досрочного выхода.Например, цикл пытается найти нужное значение. Если нашёл, делает
break. Если дошёл до конца без успеха, срабатывает else.Синтаксис существует в Python давно, но до сих пор выглядит как маленькая пасхалка языка.
#Python #Programming #Backend #PythonTips
❤5👍3🔥2😱2