![](https://webcf.waybackmachine.org/web/20240823070355im_/https://habrastorage.org/r/w780/getpro/habr/upload_files/8dc/5be/dfd/8dc5bedfd9958fe625cad8ed0583ae5f.jpg)
Если вам приходится жить с тест-классами - насколько это плохая практика? Что если всё плохо, и что если вам нужно просто начать всё сначала, но у вас из помощи только вы и pytest?
Высокоуровневый язык программирования
Если вам приходится жить с тест-классами - насколько это плохая практика? Что если всё плохо, и что если вам нужно просто начать всё сначала, но у вас из помощи только вы и pytest?
Cat Walk — одна из интересных головоломок игры Puzzle Hunt Мельбурнского Университета 2012 года. Это задание было частью второго акта игры, и ему предшествовало небольшое повествование, которое продолжало ее сюжет. В соответствии с ним вы получаете от вашего странного компаньона небольшой сверток. Развернув его, вы находите внутри флешку, после чего выше внимание переключается на обертку: она, кажется, представляет собой страницу, которая была вырвана из книги с головоломками для детей. Вы долго и упорно разглядываете головоломку, изображенную на странице, и, похоже, вам удается ее решить. После этого вы обращаетесь к вашему компаньону, чтобы проверить свою догадку. Тот смотрит на вас в изумлении, быстро вставляет флешку в ноутбук, а затем радостно сообщает: «Это потрясающе! Ты разгадал пароль — это же всё, что нам требовалось...» Как оказалось, флешка содержала чрезвычайно важную информацию, а разгадка «детской» головоломки служила паролем для ее получения...
Сама же головоломка располагалась ниже. Она представляла собой лабиринт прямоугольной формы с разноцветными переходами между его частями: серого, красного, синего и зеленого цвета. Внизу лабиринта, около двух входов в него, сидел Кот Саймона, который показывал жестом, что хочет есть. Корм для кота находился на противоположном конце лабиринта, к которому вели 7 разноцветных выходов.
Первым шагом в решении головоломки было определить количество столбцов в лабиринте: их было 26, что соответствует числу букв в английском алфавите. Таким образом, каждому столбцу можно было присвоить соответствующую ему по номеру букву. Затем следовало обратить внимание на цвета переходов внутри лабиринта. Можно было попробовать пройти лабиринт, используя при этом переходы только одного цвета. Это было возможно сделать только для одного из цветов — для серого — и только единственным способом (если никогда не двигаться по уже пройденному пути).
Статья является заметкой про библиотеку aioquic и ее использование для WebTransport. Заметка была ранее написана как разбор чужого примера, при знакомстве с aioquic. Заметка описывает события QUIC и HTTP/3 реализованные в aioquic, опираясь на старый рабочий демонстрационнай пример. В худших академических традициях, к старой заметке была добавлена "вода" про кликер - о создании простейшего приложения которое увеличивает число по запросу пользователя.
Для тех, кому не не интересна "вода", лучше начать с раздела [Работа с WebTransport в Python используя aioquic].
Словари Python — мощные инструменты для работы с данными. Они поддерживают разные методы, но функция setdefault() выделяется способностью упрощать код и эффективно работать со значениями по умолчанию.
Мы перевели для вас статью о функции setdefault(). В ней рассмотрим синтаксис, сценарии использования функции и покажем её пользу на практических примерах, а в подробном заключении сделаем основные выводы.
Привет, чемпионы!
AI решение, которые я разберу в этой статье - после запуска в телеграм привлекло почти органически внимание 70 000 новых пользователей за месяц, а всего было произведено 400 000 генераций. Разбираю, как реализовал сама ML модель. Погнали!
Недавно я выложил свою первую статью, в которой рассказал об опыте создания шахмат на двоих на pygame. Там я встретил большое количество объективной критики: ошибок было действительно много. И поэтому сегодня попытаюсь исправить все свои косяки, написав чистый и структурированный код с учётом всей критики. Приступим
Несмотря на то, что искусственный интеллект – наиболее хайповая тема в современных ИТ, и учитывая тот факт, что предыдущая мега-история с Internet of Things и Edge Computing до сих пор не забылась, я удивился, что отсутствуют внятные обучалки типа «Hello world» по добавлению machine learning в мобильные приложения на Android. Ну они конечно есть, только совсем не начального уровня. Кроме того, в них предлагается использовать чужие модели для распознавания кошек от собак и рукописных букв в текст итд. Но вот чтобы взять регрессию и с ней поработать – нет (или я не нашел). И в книгах не нашел. Если есть – поделитесь. Ну а пока я буду добавлять свою модель в приложение и параллельно писать этот текст.
История моего приложения есть в публикациях 1, 2, 3. Если коротко, это программа RuLearn для запоминания лексики в иностранных языках или в любой другой области, которая требует механического заучивания. Ее эффективность определяется «кривой забывания» Эббингауза, но как выясняется, интервалы для повторения хорошо было бы адаптировать под сложность изучаемого материала. То есть обучающийся учит новые слова, а приложение учится на его ошибках и подстраивает алгоритмы повторения оптимальным образом. Напрашивается машинное обучение в обучении человека.
Современные ARM-процессоры в мобильных телефонах содержат NPU для работы с нейросетями. Возможно, до сих пор это наименее используемая часть аппаратного обеспечения в вашем мобильнике. Поэтому никакая клиент-серверная архитектура в данном случае не нужна, в финале нашей разработки машинное обучение будет идти на конечном устройстве (бонус - никто с серверной стороны не сможет посмеяться над ошибками пользователя). Но на промежуточном этапе придется использовать модель, созданную на десктопе. Сегодня этим и займемся.
Каждый из нас хоть раз в жизни сталкивался с плохой работой светофора на перекрестке: неравномерное движение трафика по нему, слишком долгие интервалы переключения и т. д. Всё это из‑за наивного способа переключения «зеленого» и «красного»: светофоры просто работают по расписанию, а где‑то за ними даже присматривают люди, чтоб вовремя переключить. Выглядит как проблема, которую надо решать. Поэтому наша команда поставила перед собой цель разработать «мозг» для светофора, где будут приниматься эффективные решения о переключении его сигналов.
Мы потратили день на разбирательство, почему на сервере часы начали прыгать туда-сюда на 3 часа. Этот текст написан в расчёте на то, что другие его найдут и сэкономят время.
Не тот язык, не так учил, не так мотивировал себя, не на то надеялся, недостаточно умный, недостаточно настойчивый, достаточно ограниченный и ленивый. В общем, советов было много и практически все они были по делу. Не то чтобы сразу после прочтения всех комментариев я бросился переучиваться. Или вообще решил возобновить учёбу. Тем не менее уверен, ваши советы очень помогут тем, кто только собирается окунуться в мир ИТ, выбирает направление, курсы, стратегии обучения. Сразу скажу, все комментарии было очень интересно читать. Спасибо, что делились своим опытом, подсказывали и искренне желали помочь.
ML‑эксперименты, по своей природе, полны неопределённости и сюрпризов. Небольшие изменения могут вести к огромным улучшениям, но иногда даже самые хитрые уловки не дают результатов.
В любом случае — успешная работа в сфере машинного обучения держится на систематическом применении итеративного подхода к экспериментам и на исследовании моделей. Именно здесь ML‑специалисты часто сталкиваются с беспорядком. Учитывая то, как много путей они могут избрать, им тяжело бывает удержать в поле зрения то, что они уже попробовали, и то, как это отразилось на эффективности работы моделей. Более того — ML‑эксперименты могут требовать много времени. С ними сопряжён риск пустой траты денег на повторные запуски тех экспериментов, результаты которых уже известны.
С помощью трекера экспериментов, вроде neptune.ai, можно скрупулёзно логировать сведения об экспериментах и сравнивать результаты разных попыток. Это позволяет выяснять то, какие настройки гиперпараметров и наборы данных вносят положительный вклад в эффективность работы моделей.
Но запись метаданных — это лишь половина секрета успешного ML‑моделирования. Нужно ещё иметь возможность проведения экспериментов таким образом, который позволяет быстро получать нужные результаты. Многие команды дата‑сайентистов, в основе рабочих процессов которых лежит система Git, сочли CI/CD‑платформы идеальным решением.
В этой статье мы исследуем вышеописанный подход к управления ML‑экспериментами и поговорим о том, в каких ситуациях его применение оправдано. Мы уделим основное внимание платформе GitHub Actions — системе, интегрированной в GitHub. Но освещённые здесь идеи применимы и к другим CI/CD‑фреймворкам. TL;DR под катом.
В прошлой статье я рассказал про проект симулятора инсулинотерапии SugarNorm. Данный проект пока не нашел интереса со стороны медицинских учебных заведений. Главным его недостатком, на мой взгляд, является исполнение в виде декстопного приложения. Дополнительными фишками симулятора инсулинотерапии являлись калькулятор перехода на помповую инсулинотерапию и калькулятор болюса. Поэтому появилась идея устранения главного недостатка проекта путем разработки телеграмм бота, способного реализовать следующие функции:
- калькулятор перехода на помповую инсулинотерапию;
- калькулятор болюса;
- калькулятор расчета ХЕ по упаковке продукта;
- таблица продуктов с переводом в ХЕ.
Формат в виде телеграмм бота мне показался очень удобным – нет необходимости в установке приложения, нет зависимости от операционной системы, простота апгрейда путем допиливания исходника телеграмм бота на стороне сервера. В качестве языка программирования был выбран Python. Теперь об особенностях реализации модулей.
!!!Данный бот предназначен исключительно для тестирования и определения актуальности разработки и не может использоваться для определения настроек помпы или количества инсулина без рекомендации врача!!!
MinIo, как система объектного хранилища данных, заслуженно пользуется любовью разработчиков: инструмент приятный и, довольно, простой в использовании и освоении. Вот и для одного из наших крупных проектов на работе недавно возникла потребность в использовании S3 хранилища, мы, однако, по корпоративным соображениям выбрали для применения в продакшене другой инструмент, а именно - IONOS (компания у нас немецкая и на ионосе много еще чего завязано), но для тестов и для локального запуска скриптов ничего лучше MinIo в голову нам не пришло. Подобное сочетание при этом вызвало необходимость в использовании такой Python библиотеки, которая могла бы работать и "на наших, и на ваших", а в нашем случае и на MinIo, и на IONOS (поменял параметры в конфиге и тот же самый код, что работал локально, начинает работать и с продакшеном) и этой библиотекой стал Boto3 (стандартный пакет minio для этих целей не подходил). Именно об этой констелляции - Python, MinIo и Boto3 - дальше мне и хотелось бы рассказать, ну а если вместо MinIo вы захотите использовать что-то другое, то "поменял параметры в конфиге и тот же самый код, что работал локально, начинает работать и с продакшеном".
13 мая 2024 года, OpenAI официально представила новую модель Omni.
Преимущества модели в том, что она умеет работать со всем контентом (текстом, звуком и изображениями) и знает 50 языков.
И сегодня мы интегрируем эту модель в небольшого бота на Python.
Unit of Work отслеживает все объекты, которые были загружены в память и изменены в ходе выполнения программы. Он управляет их состояниями и сохраняет изменения в базе данных в конце транзакции. Это делается с использованием сессий, которые действуют как контейнеры для всех изменений.
Когда работа завершена, Unit of Work выполняет commit для всех изменений, сохраняя их в базе данных. Если что-то пошло не так, выполняется rollback, и база данных возвращается в состояние до начала транзакции.
В данной статье рассмотрим, как реализовать паттерн Unit of Work с использованием SQLAlchemy.
rupersonaagent ― это небольшая библиотека для Python с функциями и классами для разработки русскоязычного персонифицированного диалогового агента с динамической долговременной памятью. Плюс в том, что каждый алгоритм можно переиспользовать отдельно для других задач — например, представленные в ней методы оптимизации можно применить для различных генеративных и ранжирующих моделей. Сегодня мы расскажем о нескольких новых модулях из обновления rupersonaagent и посмотрим, как их можно использовать для персонификации и повышения эмоциональности ответов диалогового агента.
Александр Теофил Вандермонд (28 февраля 1735 - 1 января 1796) - французский музыкант и математик, известный благодаря своей работе в области высшей алгебры.
Главным увлечением Вандермонда длительное время была лишь музыка, но к 35-ти годам юный ученый обратился к математике. Первым делом он провел исследование симметрических функций и решения круговых полиномов, после чего выпустил три статьи: про задачу о ходе коня, про комбинаторику и про основы теории детерминантов.
В честь Александра Теофила был назван специальный класс матриц - матрицы Вандермонда, о котором пойдет речь в данной статье. [1]
Идея: в медицинском учреждении выписные эпикризы (информация из истории болезни) пациентов хранятся в общегоспитальной локальной сети.
Необходимо сформировать базу данных пациентов с перенесенным заболеванием COVID-19 (один выписной эпикриз ДО заболевания COVID-19, один выписной эпикриз во время заболевания и один ПОСЛЕ заболевания).
Всем привет! Хочу поделиться недавним проектом, в котором я разрабатывал плагин для распознавания текста на иврите. Задача была непростая, особенно учитывая, что клиент уже пытался использовать Tesseract OCR, но точность распознавания оставляла желать лучшего. В этой статье расскажу о том, с какими трудностями я столкнулся и как их преодолел.
В этой статье я покажу, как сделать Telegram-бота для онлайн-магазина на Python, который позволяет пользователям просматривать каталог товаров, добавлять их в корзину и оформлять заказы. Мы также рассмотрим, как интегрировать платежи и работать с базой данных для хранения информации о товарах и корзинах пользователей.