topalias - утилита для генерации коротких алиасов по истории bash/zsh
На GitHub опубликована открытая утилита для генерации коротких алиасов на основании истории работы в bash или zsh. Утилита анализирует файлы ~/.bash_aliases, ~/.bash_history и ~/.zsh_history с историей выполнения команд в терминале Linux, после чего предлагает короткие аббревиатуры (акронимы) для длинных, долго набираемых и сложно запоминаемых, но часто используемых команд. Также поддерживается вывод статистики по истории работы в командной строке.
Если вы работаете в терминале десятки раз в день, алиасы — это мощный инструмент повышения эффективности. Но с ростом количества проектов и конфигураций .bashrc/.zshrc алиасов становится много: часть дублируется, часть устарела, некоторые перекрывают системные команды. topalias решает три задачи:
дать метрику использования алиасов (какие используются чаще всего);
упростить создание/удаление/пакетное управление алиасами;
находить конфликтные или опасные алиасы и предлагать безопасные альтернативы.
В статье — обзор возможностей, примеры использования, внутренняя архитектура и практические рекомендации для интеграции с bash/zsh/fish.
Ключевые возможности
Сбор статистики использования алиасов на основе shell-history.
Команда top — список наиболее часто используемых алиасов.
Интерактивный режим (TUI) для обзора, включения/выключения и редактирования.
Поддержка bash, zsh и fish.
Экспорт/импорт в виде конфигурационных файлов и git-репозиториев.
Поиск конфликтов (алиас затеняет системную команду) и предупреждения.
Генератор «умных» алиасов: на основе частых цепочек команд предлагает сокращения.
Пакетная миграция между машинами (pack/unpack).
Небольшой daemon/cron для частого обновления статистики (опционально).
Есть окружность с центром O, а также N, множество вершин многоугольника, вписанного в фигуру. Каждая вершина может быть расположена на длине окружности случайным образом. Нужно определить вероятность, что при случайном наборе N центр O будет внутри этого образованного многоугольника.
Задача
Напишите модель симуляции, например, на Python, вычисляющую вероятность, что случайно сгенерированный вписанный в окружность многоугольник будет заключать в своей площади центр O.
Как подойдете к задаче? Напишите свое решение в комментариях и сверьтесь с алгоритмом в Академии Selectel.
Представлена открытая библиотека Reduino, которая поможет программировать микроконтроллеры на Python. Знания сложного и запутанного C++ не нужны, разбираться в нюансах Arduino больше не надо. Можно легко запрограммировать RGB-ленты, датчики, сенсоры и другие девайсы на простом Python. Ресурс помогает использовать все синтаксические структуры без кучи манипуляций с памятью: условия, циклы, массивы, кортежи и понятное ООП. Библиотека преобразует код в C++.
Легендарный разработчик культовых игр Джон Кармак посоветовал разработчикам на Python никогда не переназначать и не обновлять переменную вне итеративных вычислений в циклах. По его словам, наличие всех промежуточных вычислений полезно в отладчике и позволяет избежать проблем, когда при перемещении блока кода он автоматически использует версию переменной, отличную от изначальной. А вот в C/C++ хорошей практикой является инициализация практически всех переменных как const. Кармаку хотелось бы, чтобы это было сделано по умолчанию, а mutable было ключевым словом.
Расскажем, как проводить нагрузочное тестирование на Python
Ждем вас через час, в 18:30 мск, на митапе для Python-специалистов. Как обычно, поговорим обо всем, что волнует сообщество. Сделаем глубокий разбор экосистемы mypy и протестируем ее. Выясним, как запускать задачи по расписанию от cron/systemd timers до чистого Python. Узнаем, насколько сильно можно нагрузить систему, прежде чем она сломается. Все это — в компании экспертных спикеров из Selectel, Яндекса и Райффайзен Банка.
Приходите лично или подключайтесь к трансляции.
Программа
18:35-19:05 — mypy в неестественной среде обитания Сделаем обзор gradual typing в Python и экосистемы mypy, разберем отличия от линтеров и других анализаторов типа.
19:05-19:35 — Все идет по cron-у. Или нет? Поговорим о том, как запускать задачи по расписанию: от cron/systemd timers до чистого Python и библиотек вроде APScheduler, Celery, а также Kubernetes CronJob и Redis Queue.
19:35-20:00 — Ломай меня полностью Разберемся, зачем и как проводить нагрузочное тестирование.
Workflow Wan 2.2 GGUF Speed ComfyUI - генерация девушки-кота на Хэллоуин
Недавно столкнулся с ошибкой при запуске ComfyUI - конфликт версий библиотеки tokenizers. Ошибка выглядела так: ImportError: tokenizers>=0.22.0,<=0.23.0 is required for a normal functioning of this module, but found tokenizers==0.21.4....Рассказываю, как я её исправил без поломки окружения и рабочих workflow.
Описание контекста: У меня Portable-версия ComfyUI, встроенный Python (папка "python_embeded", папка "update", рабочие workflow и боязнь обновлять всё подряд)
Конфликт: ComfyUI или один из плагинов требует tokenizers >= 0.22.0, а установлена старая 0.21.4. Ранее я уже точечно менял wheels и версию torch для работы с Nunchaku.
Решение: Прямые команды, выполненные через PowerShell в папке ComfyUI: (Чтобы ввести команды - нужно находясь внутри папки ComfyUI нажать Shift + ПКМ на свободном месте в этой папке и выбрать "Открыть окно PowerShell здесь" и ввести нужные команды)
Как итог - видео с разрешением 364 на 640px, продолжительностью 5 секунд, сгенерировалось за 8,5 минуты на 8гб VRAM + 32гб RAM.
Почему важно не трогать "update_comfyui_and_python_dependencies.bat" ? Чтобы не нарушить совместимость всего окружения. В таких случаях не стоит паниковать - достаточно понимать, как работают зависимости Python и виртуальные окружения.
Если вы работаете с ComfyUI или подобными пакетами, умение диагностировать и чинить зависимости - ваш надёжный инструмент в арсенале.
Пишу операционную систему для устройства на E-Ink, часть 1.
Всем привет! В своей первой новости (не буду оставлять ссылку) я говорил про некую читалку. Да, проект прикольный, но я собираюсь сделать такое же устройство только с 4.2 дюймовым таким дисплеем и 3 кнопками (влево, выбрать, вправо).
Проект будет на Raspberry Pi Pico W.
Сегодня я сделал библиотеки, нужную структуры (мне будет всё равно на то, что в конечном итоге останется 10 бит памяти) и сделал небольшое ядро.
Выглядит плохо, но старался. Короче сделав небольшое ядро, я почувствовал эту мощь правильной структуры. Когда сделал 100 строк, и тебе остается добавить по 10 в двух файлах, что бы все вызовы 100-го файла были вызваны.
Также все приложения будут написаны на Python.
Много чего ещё осталось сделать, но база уже есть.
Новые лекции Python + AI выпустили в Microsoft. В них эксперты собрали самую актуальную информацию про кодинг и создание продвинутых нейропомощников на основе последних разработок с подробными презентациями и примерами кода, в том числе RAG, эмбеддинги, агенты и MCP-протокол.
В своё время моё отношение к аудиокнигам изменилось благодаря легендарному проекту «Модель для сборки» с Владом Коппом. Именно благодаря МДС я понял, что книги можно не только читать, но и прекрасно воспринимать в формате аудио. Аудиоформат даёт возможность знакомиться с произведениями в дороге или во время прогулок. Прекрасно помню времена, как загружал в свой MP3-плеер на 512 МБ выпуски МДС и, вместо того чтобы ехать с работы в тесной маршрутке, устраивал себе полуторачасовые прогулки в компании очередного фантастического рассказа.
Эпоха аудиоизобилия
Сегодня выбор аудиокниг несравним с тем, что было пятнадцать лет назад. В интернете можно найти огромное количество как профессионально озвученных произведений, так и любительских версий. Однако даже при всём этом богатстве выбора нередко встречаются книги, которые до сих пор никто не озвучил.
Например, один из моих любимых циклов — «Зоны мысли» Вернора Винджа. «Пламя над бездной», «Глубина в небе» и «Болтушка» легко найти в сети. А вот заключительную часть — «Дети неба» — увы, никто не озвучил.
Поскольку мы живём в эпоху искусственного интеллекта, решение приходит само собой: если нужной аудиокниги нет — сделай её сам. Требования у меня простые, без претензий:
Качество должно быть приемлемым;
Платить не хочется, поэтому все должно быть полностью бесплатным.
Голос
Вспомнил я про сайт OpenAI FM — демо-площадку голосовой модели gpt-4o-mini-tts . Она звучит естественно и хорошо справляется с русским языком. Выбор из 11 разных дикторов. А так же есть классная фитча - промт инструкции для стиля речи, благодаря чему можно управлять «подачей» — делать её более спокойной, вдохновлённой или нейтральной . Поигравшись с промтами и выбрав голос, переходим к следующему этапу. На сайте можно бесплатно генерировать небольшие аудиофрагменты длиной до 999 символов. Ограничение не стало проблемой. Берем Python + Selenium WebDriver, и получаем программу, которая:
делит текст книги на чанки нужной длины,
отправляет их на сайт,
сохраняет аудиофайлы,
затем объединяет всё в одно произведение с помощью FFmpeg.
Результат получился неожиданно достойным. Да, между фрагментами иногда чувствуется разница в тембре, особенно в первые секунды. А ударения не всегда точны и изредка проскакивает лёгкий акцент. Но в целом — получилась полноценная озвученная аудиокнига.
Музыкальная подложка
После того как книга была готова, захотелось добавить фоновую музыку. Можно было просто подобрать подходящий трек, но ради спортивного интереса я решил сгенерировать музыку самостоятельно.
Платные сервисы вроде Suno или Udio я сразу отбросил. Зато вспомнил про Google AI Studio, где в разделе Build есть приложение PromptDJ MIDI. Оно позволяет создавать музыку прямо в браузере — достаточно задать стиль и параметры.
Скопировал прямо в Studio приложение, в промпте указал стиль space ambient и добавил возможность скачивания получившегося трека. Поигравшись с настройками в полученном приложении, получил именно то, что меня устроило.
Оставалось объединить музыкальную дорожку с голосом — снова помог FFmpeg.
Инструменты:
OpenAI FM — генерация речи;
Google AI Studio (PromptDJ MIDI) — генерация фоновой музыки;
Python + Selenium + FFmpeg — автоматизация и сборка.
Затраты: 0 долларов и несколько часов времени.
Итог: Получилась аудиокнига приличного качества с музыкальным сопровождением. Конечно, это не уровень профессиональных дикторов , но для личного использования — IMHO более чем достойно. Плюс абсолютно бесплатно.
17 открытых репозитариев, чтобы выучить Python с нуля:
30-Days-Of-Python — пошаговый курс на 30 дней: синтаксис, типы, функции, ООП, файлы, модули, мини-проекты и задания с решениями;
Python Basics — вся база и примеры по основам для новичков;
Learn Python — конспект тем с наглядными примерами и ссылками; удобно как быстрый справочник и повторение;
Python Guide — лучшие практики: окружение, управление пакетами, стиль, тестирование, деплой, инструменты;
Learn Python 3 — понятные ноутбуки и упражнения по Python 3. Лучший репо для самостоятельной практики;
Python Programming Exercises — 100+ задачек по базовым темам с решениями; Coding Problems — алгоритмические задачи, разбитые по темам и сложности. Идеально для подготовки к собеседованиям;
Когда люди слышат «QA-инженер», они обычно думают: «А, это тот человек, который нажимает все кнопки подряд и заносит баг-репорты в Jira». Ха-ха, мимо.
Всем привет! Я Настя, QA-инженер в «Финаме». Мой путь в тестировании начался с эксплуатации торгово-клиринговой системы «СПБ Биржи», а последние несколько лет я тестирую бэк-офисные и торговые системы. И за это время я убедилась: QA в финансовой компании — это отдельная вселенная.
Сегодня я хочу поделиться чек-листом навыков выживания и развития, которые просто необходимы любому QA в финтехе, — три кота, на которых всё держится.
Кот Смыслюня — с умным видом объясняет, что лимитка не равно рыночка, и спокойно может мурлыкать лекцию про хеджирование в три часа ночи.
В обычном QA баг-репорты выглядят как «пользователь нажал кнопку — система упала». В финтехе сценарий может звучать как «один трейдер выставил заявку на опционы через API ЦБ, а в это время сработала маржинальная проверка, в результате чего вышло несхождение в клиринговом отчете». Ничего не понятно?
Поэтому знание предметной области — основа QA в финансовой сфере. Здесь важно понимать терминологию, специфику работы и все бизнес-процессы: как проходят сделки, что такое дисконтирование, и почему неправильный расчет одного показателя может стать причиной ошибки на миллионы. Я пришла в IT из финансов, работала с брокерами и депозитариями, поэтому мне было немного проще.
Как прокачать предметку? Изучите бизнес-процессы. Разберите базовые термины. И не ленитесь изучать теорию финансов, а не только учебники по Java и Python.
Кошка Табличка —ловко таскает данные из разных таблиц и всегда возвращается домой с добычей. Иногда кусается, если забыли про типы данных.
Без знания SQL вы потеряетесь в финансовом секторе. Тут лучше иметь продвинутые SQL-навыки, например:
агрегаты (COUNT, SUM, AVG) — быстро сворачивают кучу данных в удобный формат;
временные таблицы — магический инструмент. Данные не лежат «готовыми», их нужно поймать, сохранить и присоединить к основной таблице;
JOIN’ы — мостики между таблицами. Без них ваши данные просто стоят отдельно, как несогласованные депозиты на разных счетах;
типы данных и кастинг — часто разные источники хранят одно и то же по-разному. Не забудьте привести к одному виду.
И не храните текст — ID гораздо быстрее. Умение работать с SQL в финтехе — не просто навык, а мастхэв для QA: чем лучше владеете этим языком, тем увереннее двигаетесь в мире цифр и транзакций.
Кот Скриптик —ленивый, но гениальный: «Зачем делать руками, если я могу запустить автотесты и спать дальше?» Избавляет QA от рутины, оставляя время на умные проверки и кофе.
Без автотестов в финтехе никуда, слишком много данных и проверок. Для меня топ — Python, идеален для тестирования SQL-запросов. Конечно, можно и на других языках, всё зависит от задач. Но если только начинаете, Python, простой и с кучей бесплатных курсов, будет вашим спасательным кругом. Я, кстати, стартовала на «Питонтьюторе» — и ничего, выжила!
Пара фишек:
pytest — швейцарский нож для автотестов. Параметризация позволяет запускать кучу тестов с разными данными, не плодя сотни копий кода;
и подружитесь со словариками: они как маленькие контейнеры для данных, очень удобны при работе с результатами SQL или параметрами тестов.
Мой главный совет — выбирайте одну-две рутинные проверки и автоматизируйте их хотя бы по одной в неделю. Через месяц вы не только прокачаете свои навыки, но и покрытие тестами вырастет, и ваша жизнь станет на порядок проще.
Что мы поняли из истории про трех котов? Предметка рулит. Для работы в финтехе нужно знать термины, процессы и специфику инструментов. SQL — ваш супергерой. Без него вы потеряетесь в горах таблиц и хранимок. Автотесты спасают ваши нервы и время. Даже пара тестов в неделю увеличит покрытие и прокачает навыки.
В следующих постах мы с коллегами расскажем больше о работе в финтехе. До скорых встреч!
Всем привет👋. Сегодня хочу рассказать новость: я начинаю свой новый проект который я ещё не назвал но название будет типа Pear PDA. Коротко говоря, это что-то типа устройства Palm III (НЕ РЕКЛАМА).
Будет на кнопках и на e-ink дисплее. У меня ещё нечего нету для сборки но если у вас имеется e-ink дисплея или какие ни будь кнопки то вы можете принять участие.
Народ жалуется на трудности поиска работы. В частности такие жалобы есть в группе русского QA коммьюнити в США. Написал для них следующий пост. Интересно сколько откликнется:
"Господа! В этом коммьюнити есть junior QA, которым могут быть полезны (например для поиска работы) рекомендации в LinkedIn. Я готов написать нижеследующую рекомендацию в обмен на несложную работу: проверить инструкцию и репозиторий для семинара, который я буду проводить в грядущий викенд в Cal Poly SLO (Калифорнийский политехнический государственный университет в Сан-Луис-Обиспо).
Рекомендация в LinkedIn будет звучать так:
"Товарищ такой-то/такая-то demonstrated reliable QA skills and verification creativity when testing a CI/CD workflow setup for an educational project aimed to help the universities to teach VLSI classes. The tested product is a variant of a Tiny Tapeout GitHub template for ASIC synthesis used during the Verilog Meetup at California Polytechnic State University in San Luis Obispo, California. The template includes JSON-based GitHub Actions and Python scripts to run Yosys/OpenROAD-based RTL-to-GDSII flow and cocotb/pytest-based verification for the digital designs coded in SystemVerilog. такой-то/такая-то wrote an informative report describing the observed usability problems and unclear parts in the instructions for the user. This work greatly contributed to the success of the CalPoly seminar and similar planned events in microelectronics workforce development.
Питон - предмет обожания секты питонистов, которые ходят по домам и всем говорят "Как, вы еще не выучили Питон? Он же учится за две недели!"
Допустим, но вот два практически идентичных репозитория (1, 2), которые я только что приготовил как форки от двух других практически идентичных репозиториев. Один для создания чипа на немецкой фабрике IHP (The Leibniz Institute for High Performance Microelectronics), а другой для создания чипа на американской фабрике SkyWater (аналог зеленоградского Микрона для военных).
clock = Clock(dut.clk, 10, unit="us")
assert not dut.uio_out.value [4];
Если во втором написать не "unit", а "units", оно пожалуется:
DeprecationWarning: The 'units' argument has been renamed to 'unit'.
DeprecationWarning: The 'units' argument has been renamed to 'unit'.
И типы данных поменялись:
unsupported operand type(s) for >>: 'LogicArray' and 'int'
А все почему? У питониcтов все время меняются версии, и в их коммьюнити не принято поддерживать обратную совместимость:
"Просто используй другую версию!", "Просто поставь виртуальные среды!", "Как, ты еще не используешь Докер? С ним это решается элементарно!" - "Ты просто не pythonian!"
Так можно две недели колупаться, после того как за две недели выучить питон.
Репозиторий Awesome Python с гигантским объёмом учебных материалов для начинающих разработчиков и опытных программистов. Есть все базовые темы: DevOps, NLP, нейросети и даже геймдев. Только практические задания для проектов: ML, API, ORM, CLI, кэширование и визуализация. Постоянно обновляется библиотеками и фреймворками. Всё с примерами. Поддерживается сообществом уже много лет.
Cооснователь OpenAI Андрей Карпаты представил открытый проект nanochat для клонирования LLM типа ChatGPT. Внутри 8000 строк чистого кода на Python, никаких лишних зависимостей, вся база модели: токенизатор, предобучение, файнтюн, обучение с подкреплением и оценка модели. Для запуска понадобится GPU в облаке и готовый скрипт.