Всем привет! Хочу рассказать о консольной утилите, которая значительно увеличила мою продуктивность работы с Git, и, надеюсь, ускорит и вашу также. Называется она tig и была написана канадским программистом Джонасом Фонсека (Jonas Fonseca) ещё в далёком 2006-м году, но по настоящий день она активно развивается и поддерживается в великолепном состоянии. Я хочу показать её функционал (внимание, есть относительно тяжелые gif-ки внутри) и поделиться самыми удобными способами использования.
Полное руководство по модулю asyncio в Python. Часть 1

Python-модуль asyncio
позволяет заниматься асинхронным программированием с применением конкурентного выполнения кода, основанного на корутинах. Хотя этот модуль имеется в Python уже много лет, он остаётся одним из самых интересных механизмов языка. Но asyncio
, при этом, можно назвать ещё и одним из модулей, которые вызывают больше всего недоразумений. Дело в том, что начинающим разработчикам бывает трудно приступить к использованию asyncio
.
Перед вами — подробное и всестороннее руководство по использованию модуля asyncio
в Python. В частности, здесь будут рассмотрены следующие основные вопросы:
Как GPU-вычисления буквально спасли меня на работе. Пример на Python
Сегодня мы затрагиваем актуальнейшую тему — Python для работы с GPU. Автор рассматривает пример, тривиальный в своей монструозности, и демонстрирует решение, сопровождая его обширными листингами. Приятного чтения!

Изучаем сопромат с CalculiX
Сдал сопромат — можно жениться!
Введение
Метод конечных элементов (МКЭ или FEM, у них за рубежом) прочно вошел в практику инженерных расчетов при проектировании сложных систем. В значительной степени это касается прочностных расчетов механики. Применения этого метода, реализуемого соответствующим программным обеспечением существенно сокращает цикл разработки конечного устройства, позволяя исключить массу экспериментальных проверок, необходимых при использования классических расчетов на основе методов сопромата и строительной механики. На текущий момент разработана масса прикладного ПО, реализующего МКЭ. Во главе угла стоит мощный ANSYS, по бокам от него и в почетном удалении — CAD-системы со встроенным FEM-модулем (SolidWorks, Siemens NX, Creo Parametric, Компас 3D).
CalculiX силен, но труден и непонятен. Исправим это?

Естественно, МКЭ проник и в сферу образования — чтобы использовать его в реальных задачах, нужна подготовка соответствующих специалистов. В столицах, в крупных технических вузах обстановка в этой области более-менее нормальная, да и у нас в регионе тот же ANSYS применяется, например, на кафедре теории упругости ЮФУ. Но по периферии, в узко специализированных и не богатых университетах ситуация плачевна. И всё просто — ANSYS стоит порядка 2 млн. рублей за одно рабочее место, а место требуется не одно. К сожалению не все вузы могут позволить себе выложить 30-40 миллионов на организацию компьютерного класса для обучения применению МКЭ.
Одной из альтернатив может служить применение в учебном процессе свободного ПО. К счастью таковое ПО имеется. Однако, русскоязычных материалов по его использованию практически не существует. Исправляя эту ситуацию, данную статью я собираюсь посвятить в введению в CalculiX — открытый, свободный программный пакет, предназначенный для решения линейных и нелинейных трёхмерных задач механики твёрдого деформируемого тела и механики жидкости и газа с помощью метода конечных элементов.
Domain-driven design, Hexagonal architecture of ports and adapters, Dependency injection и Python
Пролог
- Глянь, статью на Хабр подготовил.
- Эм... а почему заголовок на английском?
- "Предметно-ориентированное проектирование, Гексагональная архитектура портов и адаптеров, Внедрение зависимостей и Пайто..."
С пронзительным хлопком в воздухе материализуется обалдевший Сатана в обличии сине-жёлтого питона.
--
Эта техническая статья о применении практик гексагональной архитектуры и всего остального вышеперечисленного в разработке приложений. На примере рассматривается как элегантно вплести гексагональную архитектуру в устоявшуюся, консервативную и казалось бы совершенно безкомпромиссную структуру веб-приложений на Django
Интуитивное использование методов Монте-Карло с цепями Маркова
Легко ли это? Я попробовал
Алексей Кузьмин, директор разработки и работы с данными «ДомКлик», преподаватель направления Data Science в Нетологии, перевел статью Rahul Agarwal о том, как работают методы Монте-Карло с цепями Маркова для решения проблем с большим пространством состояний.
Генераторы непрерывно распределенных случайных величин
Генератор случайных чисел во многом подобен сексу: когда он хорош — это прекрасно, когда он плох, все равно приятно (Джордж Марсалья, 1984)
Популярность стохастических алгоритмов все растет. Многие из них базируются на генерации большого количества различных случайных величин. Далеко не всегда равномерно распределенных. Здесь я попытался собрать информацию о быстрых и точных генераторах случайных величин с известными распределениями. Задачи могут быть разными, разными могут быть и критерии. Кому-то важно время генерации, кому-то — точность, кому-то — криптоустойчивость, кому-то — скорость сходимости. Лично я исходил из предположения, что мы имеем некий базовый генератор, возвращающий псевдослучайное целое число, равномерно распределенное от 0 до некого RAND_MAX
unsigned long long BasicRandGenerator() {
unsigned long long randomVariable;
// some magic here
...
return randomVariable;
}
и что этот генератор достаточно быстрый. Я имею ввиду, что дешевле сгенерировать с десяток случайных чисел, нежели чем посчитать логарифм или возвести в степень одно из них. Это могут быть стандартные генераторы: std::rand(), rand в MATLAB, Java.util.Random и т.д. Но имейте ввиду, что подобные генераторы редко подходят для серьезной работы. Зачастую они проваливают разные статистические тесты. А также, помните, что вы полностью зависите от них и лучше использовать свой собственный генератор, чтобы иметь представление о его работе.
В статье я буду рассказывать об алгоритмах, суть которых должна быть понятна каждому, кто хоть иногда сталкивался с теорией вероятностей. Совсем необязательно быть знакомым с теорией меры, как правило, достаточно примерно понимать, что из себя представляют функция распределения и функция плотности распределения:

Каждый алгоритм я буду сопровождать кодом, небольшим количеством математики и гистограммой из десятка миллионов сгенерированных случайных величин.
Равномерное распределение


Создаём собственный физический 2D-движок. Часть 1: основы и разрешение импульсов силы

Приступить к созданию собственного физического движка можно по разными причинам: во-первых, для освоения и усвоения новых знаний в математике, физике и программировании; во-вторых, собственный физический движок может обрабатывать любые технические эффекты, которые сможет создать его автор. В этой вводной статье я расскажу, как создать собственный физический движок с нуля.
Физика даёт игроку потрясающие возможности для погружения в игру. Думаю, что освоение физического движка будет очень полезным умением для любого программиста. Для более глубокого понимания внутренней работы движка можно в любой момент вносить любые оптимизации и специализированные особенности.
В этой части туториала мы рассмотрим следующие темы:
- Простое распознавание коллизий
- Генерирование простого многообразия
- Разрешение импульсов силы
Метод Монте-Карло и его точность
математических задач при помощи моделирования случайных величин. Представление об истории метода и простейшие примеры его применения можно найти в Википедии.
В самом методе нет ничего сложного. Именно эта простота объясняет популярность данного метода.
Метод имеет две основных особенности. Первая — простая структура вычислительного алгоритма. Вторая — ошибка вычислений, как правило, пропорциональна
Однако одну и ту же задачу можно решать различными вариантами метода Монте-Карло, которым отвечают различные значения
Domain-Driven Design: тактическое проектирование. Часть 2

Здравствуйте, уважаемые хабрапользователи! В предыдущей статье мы рассмотрели стратегическое моделирование с помощью подхода DDD. В ней было показано, как выделять концептуальные границы, в рамках которых решаются отдельные задачи предметной области –
ограниченные контексты
.Для реализации конкретного
ограниченного контекста
используется ряд более низкоуровневых тактических шаблонов, которые имеют технический характер, то есть эти шаблоны используются для решения технических задач. Такими шаблонами являются: сущность
, объект-значение
, службы предметной области
, события
, модули
, агрегаты
, фабрики
и хранилища
. Именно о них пойдет речь в этой статье.Markdown в науке

Интернет и эпоха Web 2.0 существенно изменили метод подготовки научных публикаций. Сейчас мы читаем статьи с экранов компьютеров, смартфонов и электронных книг, а не только с бумаги. Крайне желательно, чтобы работа над текстом по превращению журнальной статьи в энциклопедическую вики-справку, в презентацию, или же в содержимое сайта, не требовала чрезмерных усилий. Далее мы рассмотрим решение означенной проблемы с помощью текстовой разметки Markdown и попробуем представить себе дальнейшее развитие технологий.
Как мы разрабатываем документацию в открытом проекте Embox

Являясь одним из разработчиков открытого проекта Embox, я часто слышал (в последнее время слишком часто) о том, что проект интересный, но поскольку документации нет, его невозможно использовать. Мы отвечали, что документация в каком-то виде есть, что мы всегда можем ответить на вопросы, что в крайнем случае можно попытаться разобраться самостоятельно, ведь проект открытый, но все это не подходило. Пришлось заниматься данной, очень неприятной для разработчиков, темой. Но естественно, статья не о том, что документацией заниматься “неприятно”! A о том, как мы сделали процесс разработки документации более комфортным. Ведь в любом более менее большом проекте, обязательно возникают вопросы, связанные с документацией.
Для тех, кому лень читать, сразу скажу, что в итоге мы пришли к разработке документации в формате markdown. Ну а тех, кому интересны детали, причины, почему именно markdown и какие есть плюсы и минусы у данного подхода, прошу под кат.
История и будущее специальных функций

Перевод статьи Стивена Вольфрама (Stephen Wolfram) "The History and Future of Special Functions".
Выражаю огромную благодарность Кириллу Гузенко за помощь в переводе.
Статья представляет собой запись выступления, сделанного на Wolfram Technology Conference 2005 в Шампейне, штат Иллинойс, как часть мероприятия в честь 60-летия Олега Маричева.
Так, хорошо, сейчас я бы хотел вернуться к той теме, которую поднимал сегодня утром. Я бы хотел поговорить о прошлом и будущем специальных функций. Специальные функции были предметом моего увлечения как минимум последние 30 лет. И, полагаю, моя деятельность оказала весомое влияние в продвижении использования специальных функций. Однако, получилось так, что я никогда ранее не поднимал эту тему. Теперь пора исправить это.
В узком смысле под С. ф. подразумеваются С. ф. математич. физики, которые появляются при решении дифференциальных уравнений с частными производными методом разделения переменных.
С. ф. могут быть определены с помощью степенных рядов, производящих функции, бесконечных произведений, последовательного дифференцирования, интегральных представлений, дифференциальных, разностных, интегральных и функциональных уравнений, тригонометрических рядов, рядов по ортогональным функциям.
К наиболее важным классам С. ф. относятся гамма-функция и бета-функция, гипергеометрическая функция и вырожденная гипергеометрическая функция, Бесселя функции, Лежандра функции, параболического цилиндра функции, интегральный синус, интегральный косинус, неполная гамма-функция, интеграл вероятности, различные классы ортогональных многочленов одного и многих переменных, эллиптическая функция и эллиптический интеграл, Ламе функции и Матъё функции, дзета-функция Римана, автоморфная функция, некоторые С. ф. дискретного аргумента.
Теория С. ф. связана с представлением групп, методами интегральных представлений, опирающихся на обобщение формулы Родрига для классических ортогональных многочленов и методами теории вероятностей.
Для С. ф. имеются таблицы значений, а также таблицы интегралов и рядов.
История многих понятий и объектов математики прослеживается ещё со времён древнего Вавилона. Ведь ещё 4000 лет назад в Вавилоне была разработана и активно использовалась 60-ричная арифметика с различными сложными операциями.
В то время операции сложения и вычитания считались довольно простыми. Но это не касалось операций умножения и деления. И для того, чтобы производить подобные действия, были разработаны некоторые подобия специальных функций.
По сути, деление сводилось к сложению и вычитанию обратных величин. А умножение довольно хитрым образом сводилось к сложению и вычитанию квадратов.
Таким образом, практически любые вычисления сводились к работе с таблицами. И, конечно, археологам доводилось находить вавилонские таблички из глины с таблицами обратных величин и квадратов.
То есть у вавилонян уже была идея о том, что существуют некоторые кусочки математической или вычислительной работы, которые можно использовать многократно, получая весьма полезные результаты.
И, в какой-то мере, история специальных функций начинается с открытия принципов работы с последовательностями из этих самых «кусочков».
Следующие «куски» были, вероятно, теми, которые включают тригонометрию. Египетский папирус Ринда 1650-го года до н.э. уже содержал некоторые проблемы касательно пирамид, решение которых требовало тригонометрии. Стоит упомянуть, что была найдена вавилонская табличка с таблицей секансов.
Астрономы тех времён со своей моделью эпициклов, безусловно, уже вовсю использовали тригонометрию. И, опять-таки, все математические операции сводились к работе с небольшим количеством «специальных» функций.
Создай, оформи, опубликуй. Sphinx — незаменимый помощник в мире Python документации

В данной статье пройдём путь от знакомства с мощным инструментом для документации Sphinx до публикации нашей собственной документации на GitHub Pages. Мы узнаем насколько широко Sphinx используется в мире открытого исходного кода, включая такие проекты как Django, The Linux Kernel, TensorFlow, Pandas и многие другие.
БЭМ-методология: с чего всё начиналось и зачем это всё нужно

Конечно, все началось с собственных потребностей Яндекса. Вместе с тем, как он рос, росло и количество сотрудников, которые занимаются фронтендом. Постепенно команда увеличилась настолько, что стало очевидно — без единых стандартов работать будет сложно. К тому же, мы находимся в офисах Яндекса в разных городах. Возникла идея создать общую методологию, которая поможет организовать процессы в большой команде, работающей над разными проектами. А главное то, что мы хотели не только упорядочить и ускорить разработку, но и снизить порог входа в проект для нового разработчика.
Как я Markdown парсер выбирал

Недавно я решил создать свой сайт, и мне понадобилось выбрать парсер Markdown для отрисовки статей в блоге.
То, что начиналось как: «Окей, гугл, какой парсер выбрать?», – вылилось в полноценное исследование существующих реализаций парсеров.
О том, какие открытия меня ждали на этом пути, и будет данная статья.
Извлечение текста из файлов PDF при помощи Python

▍ Введение
В эпоху больших языковых моделей (Large Language Model, LLM) и постоянно расширяющейся сферы их применений непрерывно растёт и важность текстовых данных.
Существует множество типов документов, содержащих подобные виды неструктурированной информации, от веб-статей и постов в блогах до рукописных писем и стихов. Однако существенная часть этих данных хранится и передаётся в формате PDF. В частности, выяснилось, что за каждый год в Outlook открывают более двух миллиардов PDF, а в Google Drive и электронной почте ежедневно сохраняют 73 миллионов новых файлов PDF (2).
Поэтому разработка более систематического способа обработки этих документов и извлечения из них информации позволит нам автоматизировать процесс и лучше понять этот обширный объём текстовых данных. И в выполнении этой задачи, разумеется, нашим лучшим другом будет Python.
Что не так с вашей консольной программой?

Мы еще в школе научились вызывать функцию print. Что может пойти не так в консольной разработке? Да, и если бы не растущая сложность программ, проблем бы у нас не было до сих пор. А в реальности — то в тексте трудно найти нужную информацию, то он не влезает в экран по ширине и по длине, а от многочисленности цветов рябит в глазах.
Но как часто мы обсуждаем наши повседневные инструменты с точки зрения читабельности, хотя пишем под web и каждый день используем консольные утилиты? Сегодня Андрей Светлов расскажет, что со всем этим делать, и чем он пользуется для консолей. Помимо того, что Андрей CPython Core developer и понемногу развивает Python, в свободное от работы время он эксперт по asyncio, со-автор aiohttp, yarl, multidict и прочим популярным библиотекам.
Зачем знать индустрию, в которой работает твоя компания?

Всем привет!
Неоднократно сталкивался в ИТ-сообществе с мнением, что разработчикам бы работу работать, а не “вот это вот все”. Под “этим всем” скрываются видео и круглые столы от менеджмента, разъясняющие стратегию компании, полезные тренинги от HR, всякая социальная активность типа бейджиков на корпоративном портале, и конечно же, понимание сферы бизнеса - индустрии, в которой работает компания.
Максимум на что готовы многие коллеги по сфере ИТ - понятные им исследования поведения юзеров с помощью A/B или UX тестирования и прочей бигдаты (не к ночи будь помянута :)). То есть, цифры.
Вопрос в том, а можно ли качественно выполнять свою работу, не понимая, что (а точнее, кто) за этими цифрами скрывается? Какие в индустрии правила игры? Чего ждут от компании-лидера? Какие фичи стоит приоритизировать, а на какие не стоит тратить сил и времени? Почему этот коммерческий директор так настойчиво уже год пушит эту непонятную доработку???
Возможно, для джуна, выполняющего простые задачки, это и не критично, но что насчет мидлов и сеньоров? Особенно для тех, кто планирует расти в продактов и выше. Ведь никакая бигдата не сможет объяснить, почему новая фича не встретила успеха у юзеров. Чтобы видеть полную картину происходящего и развивать свои продукты в правильном направлении, нужно понимать, чем живет рынок и его обитатели.
В статье ниже буду рассказывать, как команда управления знаниями решает эту задачу, и почему это вообще лежит в зоне ответственности knowledge management.
Эффективный Django. Часть 1

Представляю вам перевод статей о Django с сайта effectivedjango.com. Наткнулся я на этот сайт во время изучения данного фреймворка. Информация размещенная на этом ресурсе показалась мне полезной, но так как нигде не нашел перевода на русский, решил сделать сие доброе дело сам. Этот цикл статей, как мне думается, будет полезен веб-разработчикам, которые делают только первые шаги в изучении Django.
Information
- Rating
- Does not participate
- Registered
- Activity