Pull to refresh

Новый Numpy 1.20.0 — что туда завезли и стоит ли обновлять?

Reading time3 min
Views5.1K

Друзья, только недавно вышел новый релиз Numpy 1.20.0 и самое время обсудить, что туда завезли интересного.

Само собой, обсуждать будем не все - иначе мы просто с головой погрязнем в изучении доки. Публикуем только самое интересное (на наш скромный и неправильный взгляд). Если Вы для себя выделяете еще что-то важное, о чем мы не упомянули - поделитесь в комментариях!

Итак, приступим.

Читать далее
Total votes 5: ↑4 and ↓1+6
Comments0

Все числа равны, но некоторые равнее. Как в Python сравниваются Int и Float

Reading time17 min
Views13K

Ещё одна причуда Python, исследование её подноготной и попытка понять, почему так случается.

Недавно в сети X был популярен этот твит (см. скриншот), и я обратил внимание. Это очередной сюрприз в Python, связанный с характерными для него уникальными деталями реализации.

Читать далее
Total votes 40: ↑38 and ↓2+44
Comments32

Анализ повторяемости инцидентов

Level of difficultyMedium
Reading time5 min
Views1K

Привет, Хабр!

Здесь начинаем разбирать анализ текстовых данных. По-разному «от руки» написанных отчетов о причинах возникновения инцидентов. Сегодня о том, как я пытаюсь выявлять паттерны возникновения Инцидентов, другими словами, искать мелкие Проблемы.

Эта статья не будет полезна матерым дата-сатанистам, но может быть полезна менеджерам, которые хотят отследить повторяемость похожих задач, или как я – похожих технических неполадок.

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments1

Триггербот для Rainbow Six Siege на Python

Level of difficultyEasy
Reading time4 min
Views3.5K

Доброго дня, если это день. Мне немного жаль тратить время на такие развлечения, как компьютерные игры, но иногда не могу отказать себе в удовольствии чуть-чуть пострелять в виртуальном пространстве. Одной из игр, которая находится в моем арсенале, является Rainbow Six Siege, онлайн шутер с элементами тактико-специальной подготовки.

Одной из "фишек" игры являются индивидуальные умения оперативников. И в данной статье рассмотрена реализация бота-помощника, написанного за 5 минут на Python, который помогает играть за российского оперативника GLAZ.

Читать далее
Total votes 8: ↑6 and ↓2+5
Comments15

Про то, как мы распиливали монолит на MSA

Reading time9 min
Views1.5K

Введение

В наше время, с развитием бизнеса и увеличением объемов автоматизации и бизнес-процессов, эффективная автоматизация некоторых таких бизнес-процессов становится ключевым фактором успеха для многих компаний. Наша компания не является исключением. По мере роста и развития нашего бизнеса наша CRM-система столкнулась с проблемами медленной работы и увеличения блокировок в базе. Увеличившееся количество бизнес-процессов и интеграций привело к сильной загрузке системы, что начало вызывать блокировки в базе данных и временные остановки процессов внутри компании – ситуация, которую нельзя оставить без изменений.

Мы поняли, что для продолжения успешной работы нам необходимо решение, способное справиться с ежедневной нагрузкой, интегрировать новые сервисы и обрабатывать сложные процессы без задержек. Таким образом, мы столкнулись с вопросами: как избавиться от проблем блокировки, как оптимизировать интеграции и как эффективно обрабатывать сложные запросы, не загружая при этом базу данных.

В результате наших размышлений мы приняли решение разделить нашу CRM-систему на микросервисы. В этой статье я хотел бы поделиться с вами нашим опытом разгрузки CRM-системы и показать, какими путями мы шли для решения выше поставленных вопросов.

Самое начало

Изначально наша CRM-система была загружена не сильно. Было несколько бизнес-процессов, которые в основном отвечали за обновление суммы счета при изменении товара в нем. Все эти процессы были реализованы с использованием триггеров, поскольку наша система, к сожалению, не предоставляла других возможностей. Однако со временем количество таких бизнес-процессов, реализованных на триггерах, стало увеличиваться.

Читать далее
Rating0
Comments1

Майним крипто-пойнты с помощью цветового автокликера на Python

Level of difficultyEasy
Reading time4 min
Views8.3K

Привет, Хабр! Я продолжаю цикл небольших статей для энтузиастов и начинающих программистов о том, как интересно, а иногда и с выгодой, можно применять свои навыки.

В последнее время широкое распространение получили разные крипто-проекты, которые обещают пользователям материальные вознаграждения за определенную активность. Особенно актуальны они стали после успеха Notcoin, который очень неплохо отблагодарил своих пользователей. Не буду углубляться как это всё работает, откуда там деньги, и много ли среди таких проектов скама (да), нас интересует лишь тот момент, что большинство этих проектов можно автоматизировать, а значит не терять драгоценное время.

Читать далее
Total votes 8: ↑3 and ↓5-2
Comments13

Запускаем Steam игры в Proton c поддержкой Native Wayland

Level of difficultyMedium
Reading time17 min
Views8.5K

Proton Wayland


Иллюстрации к статье подготовлены нейросетью freepik.com.


В первой части нашей статьи, мы научились собирать Wine с поддержкой Wayland и запустили игру Overwatch 2. Но для большинства геймеров конечно же больший интерес представляет запуск игр Steam, и этот вопрос мы не пройдем стороной. Преимущество нашей сборки Proton будет ещё и в том, что она будет работать напрямую с системными библиотеками и оборудованием, когда обычный Proton и GE Proton Custom загружаются в виртуальном контейнере, подгружают свои библиотеки и драйвера. Тем самым мы получим чуть лучшую производительность и избавимся от еще одного ненужного слоя.


Если вас заинтересовала статья, то добро пожаловать под cut.

Читать дальше →
Total votes 30: ↑30 and ↓0+30
Comments12

Пишем драйвер ядра Linux для неизвестного USB-устройства

Reading time15 min
Views16K
image

В этой статье объяснен весь процесс, на выходе которого получается рабочий драйвер ядра Linux для недокументированного USB-устройства. Выполнив обратную разработку коммуникационного протокола USB, я покажу архитектуру драйвера ядра для USB. Кроме драйвера ядра в этой статье будет рассказано о простом инструменте для пользовательского пространства; при помощи этого инструмента можно управлять таким устройством. Конечно, придется углубиться в подробности, касающиеся конкретного прибора, но не сомневайтесь – описанный процесс с тем же успехом применим и к другим USB-устройствам.
Читать дальше →
Total votes 45: ↑44 and ↓1+57
Comments9

Как мы создали HR-приложение и выиграли 250 тыс. рублей в хакатоне

Level of difficultyMedium
Reading time7 min
Views2.2K

Привет! В этой статье узнаете, как студенты Университета МИСИС создавали HR-приложение, выиграв с ним 250 000 рублей в хакатоне «Лидеры цифровой трансформации. Якутия». Сервис отслеживает активность сотрудников на рабочем месте, анализирует ее и прогнозирует вероятность увольнения. Разработка признана полноценным коммерческим продуктом — её можно успешно внедрить в любой офис в качестве комплексного инструмента управления персоналом.

Читать далее
Total votes 9: ↑3 and ↓6-1
Comments10

Введение в gRPC: Основы, применение, плюсы и минусы. Часть I

Level of difficultyEasy
Reading time4 min
Views8K

Эта статья содержит краткую теорию о gRPC, обсудит преимущества и особенности использования данной технологии для создания высокопроизводительных и масштабируемых микросервисов.

Читать далее
Total votes 7: ↑2 and ↓5-1
Comments2

Как я писал свой первый проект на Python

Level of difficultyEasy
Reading time9 min
Views12K

Кто-то в качестве своего первого серьезного проекта пишет калькулятор, другие веб-сайт и в принципе идея ограничивается только скилами и вашей собственной фантазией (или фантазией преподавателя, если у вас такой есть). Калькулятор мне писать не хотелось (как минимум из-за наличия прекрасной функции eval частично заменяющей его), а для веба на тот момент я был слишком зелен и ничего не понимал в протоколах, html, фреймворках и т.д.

Но месяцы за изучением Python были пройдены, сотни задач на Stepik, Leetcode и подобных ресурсах решены, десятки часов Хирьянова и других святил на Youtube с упоением просмотрены и руки невероятно чесались написать что-то «своё, масштабное и нужное».

Чтитать далее
Total votes 19: ↑18 and ↓1+19
Comments13

Планировщик на основе искусственного интеллекта

Level of difficultyEasy
Reading time8 min
Views973

Часто ли нам приходится пользоваться записными книжками? Удобно ли это? Всегда ли
тот кусочек бумаги, на котором записано время и место встречи, под рукой? Насколько
 быстро можно записать необходимую информацию? Все эти вопросы не открывают
Америку, всем понятно, что цифровые планировщики гораздо практичнее, нежели
традиционные письменные. Но что может быть не так с электронными записными
книжками? Например, для внесения очередной записи необходимо произвести большое количество действий: от создания плана новой встречи до ручного ввода места и времени встреч в каждое отдельное поле. Казалось бы, пустяк, да и отнимает не так уж много времени. Но ведь нет предела совершенству! Как раз для улучшения данного аспекта: планирования повседневной (и не только) жизни, предназначен мой проект. Стоит отметить, что он будет полезен в основном для бэк‑офиса: поможет не опоздать на важную встречу, не пропустить совещание и не забыть про дедлайн. И так, перейдем от пустых слов, непосредственно к разработке. В последующей статье описан мой опыт по разработке такого рода проекта, а я это делал впервые, поэтому сильный хейт не принимается:‑)

Читать далее
Total votes 2: ↑0 and ↓2-2
Comments2

Магия динамического маппинга. Реализация универсальной обработки файлов нефиксированной структуры на Python

Level of difficultyMedium
Reading time15 min
Views1.4K

Привет! На связи Никита Ильин из Spectr, Backend-разработчик с опытом более 5 лет. 

Один из проектов, с которым мы работаем, — IBP-платформа для планирования и прогнозирования спроса и продаж в ритейле. В статье поговорим о конкретной реализации для одной из задач в рамках этой платформы на Python и Django. При этом сама концепция может быть реализована абсолютно на любом фреймворке или платформе: Spring, .NET, Laravel.

Узнать о магии больше
Total votes 5: ↑5 and ↓0+5
Comments1

Получение списка людей, посещающих определенные места

Level of difficultyEasy
Reading time2 min
Views3.1K

Представьте: вы ведете Telegram-канал о животных и хотите пригласить в него посетителей зоопарка. Или вам нужно собрать контакты потенциальных клиентов, посещающих определенный торговый центр. Как это сделать?

Полиция может легко получить такую информацию от мобильных операторов, но что делать обычному человеку?

Ответ – использовать Telegram и его функцию "Люди рядом" в сочетании с Python-скриптом.

Читать далее
Total votes 7: ↑1 and ↓6-5
Comments7

От нуля до Тетриса: наше приключение с Python

Reading time3 min
Views2.8K

Часть 1: Денис, 10 лет

Привет всем! Меня зовут Дениска, и я хочу рассказать вам о нашем с папой увлекательном проекте! Всё началось с того, что играл с другом в мобильную игру. Мне стало очень интересно, как всё это работает: персонажи, графика, всё-всё! Я побежал к папе и спросил: "Папа, ты знаешь, как это приложение работает?".

Читать захватывающее приключение!
Total votes 10: ↑8 and ↓2+7
Comments8

Крепкие сборки с планировщиками контейнеров, только без контейнеров

Reading time7 min
Views2.7K
image

Если мы с вами похожи, то, всякий раз, когда вы пишете Dockerfile, вам приходится снова следить, что он выкинет. Заходя в какой-то контейнер через+ exec, вы не представляете, будет ли там bash, sh или какая-нибудь другая оболочка. Вы также не знаете, какой контейнерный init сейчас рекомендуется как наилучшая практика. Я определенно до сих пор не знаю, что за фрукт этот Moby.
Читать дальше →
Total votes 11: ↑7 and ↓4+7
Comments0

Как мы обучали нейросеть распознавать юридические документы

Level of difficultyMedium
Reading time5 min
Views2.4K

Проверка юридических документов с помощью визуальных помощников может оказаться важной задачей. Если человек способен хранить в голове одновременно в зоне его мозговых вычислений 6-8 параметров, ну может и больше, если гений... А остальные держать в блокноте. То ИИ учитывает больше параметров, те же модели LLM доступны с количеством 70 миллиардов параметров. То есть мы-то тоже ежедневно принимаем решения на основе большого количества входных параметров: купить ли сегодня эту вещь, поехать ли отдыхать на море, бросив все, доехать на такси или на автобусе. Но учитываем не все сразу, хотя что-то учитывается на подсознательном уровне. Эдакое дело вкуса, когда просто чувствуешь, что так правильнее, и в итоге не прогадал.

Правда люди еще не научились влиять на решения сети. У нейросетей особенные вкусы. Если GAN-сеть создает нам девушку, у которой 2 руки, то для каких-нибудь художников эпохи Сюрреализма это могло бы показаться гениальным. Двумя руками обнимает парня, словно вцепилась в него всей душой и влюбилась всем сердцем... К сожалению или к счастью, в задачах создания юридических документов мало необходимости творить что-либо на уровне латентного вектора в цепочке между кодировщиком и декодировщиком. Но работа с юридическими документами – тот самый скоп задач, где важно найти судебную практику, предшествующие документы и просто оформить все примерно также.

Таким образом, работа с юридическими документами – лакомый кусочек уже лет так 5, особенно на зарубежном рынке, где задача автоматизации рутинной деятельности сводится именно к тому, чтобы из исторически предшествующих документов собрать что-то стоящее, применимое к текущему документу. По семантическому окрасу и истории работы с документом можно понимать, что именно перед тобой: проигрышная трактовка, выигрышная трактовка, доводы, играющие в пользу истца или аргументы, помогающие ответчику, если дело идет о судебных исках.

Читать далее
Total votes 3: ↑1 and ↓2-1
Comments0

Как я создавал аудиоплеер на python с FFmpeg

Level of difficultyEasy
Reading time4 min
Views4.2K

Всех приветствую. Сегодня хочу поделиться опытом создания своего первого проекта на Python. Мой проект — это простой аудиоплеер, и я хочу рассказать, как я его создавал, с какими сложностями столкнулся и что из этого вышло.

Читать далее
Total votes 16: ↑15 and ↓1+17
Comments18

Где лучше всего пробовать идеи для обучающихся систем?

Level of difficultyMedium
Reading time2 min
Views1.3K

Для того, чтобы разобраться в сложной и объемной теме машинного обучения, попробовать свои силы и отточить навыки, оптимально подходит библиотека scikit-learn (sklearn).

Читать далее
Total votes 1: ↑0 and ↓1-1
Comments0

Решение задачи о приближении иррациональных

Reading time24 min
Views18K
В данной статье рассматриваются различные методы приближений иррациональных чисел
Попутно затрагиваются вопросы, косвенно связанные с этой темой



В сборнике Арнольда есть следующая задача

38. Вычислить сумму:

$\frac{ 1 }{ 1\cdot2 } + \frac{ 1 }{ 2\cdot3 } + \frac{ 1 }{ 3\cdot4 } + ... + \frac{ 1 }{ 99\cdot100 }$


(с ошибкой не более 1% от ответа)

Ниже представлен алгоритм для вычисления частичных сумм этого ряда на языке Scheme (Lisp), который позволяет производить вычисления в обыкновенных дробях

#lang racket
(define series_sum
 ( lambda (n)
  (if (= n 0) 0
    (+ (/ 1 (* n (+ n 1))) (series_sum(- n 1)))
  ) ) )
(series_sum 10)
(series_sum 100)
(series_sum 1000)
(series_sum 10000)
(series_sum 100000)
(series_sum 1000000)

(define series_sum_1
 ( lambda (n)
  (if (= n 0) 0 
    (+ (/ 1.0 (* n (+ n 1.0))) (series_sum_1(- n 1.0)))
  ) ) )
(series_sum_1 10)
(series_sum_1 100)
(series_sum_1 1000)
(series_sum_1 10000)
(series_sum_1 100000)
(series_sum_1 1000000)

Читать дальше →
Total votes 24: ↑18 and ↓6+12
Comments26
1
23 ...