Как стать автором
Обновить
3
0

Пользователь

Отправить сообщение

Как растить мышцы двумя тренировками в неделю? Подход для людей с полной занятостью и готовый план на 2 дня

Время на прочтение9 мин
Количество просмотров108K

Силовые тренировки уже давно не инструмент для соревновательного бодибилдинга и пауэрлифтинга. Сегодня силовые — неотъемлемый инструмент здоровой и качественной жизни, в котором вы должны быть заинтересованы.

Только вот некоторые культурные и даже профессиональные мифы повышают порог вхождения в тренажерный зал. Взращивают ментальный барьер, к которому нужно морально готовиться, настраиваться и из-за этого постоянно откладывать начало тренировок. Один из таких барьеров — время. Многие думают, что тренировки обязательно должны быть продолжительными, чтобы быть эффективными. Второй барьер — утомление. Не редко можно услышать что-то из разряда “не устал = не потренировался”, “не болит = не растет”.

Сейчас я постараюсь показать и доказать, что это не так и можно действовать намного эффективнее, опираясь на науку об упражнениях, а не мифы. С помощью рационального подхода делать хороший результат ценой приемлемых усилий. Это не будет материал из разряда “фигура Апполона за 10 минут в день”, но кое-что более изящное, чем классический убийственный метод и подходящее вам — людям с полной занятостью, которым хочется ввести силовые в жизнь, чтобы поддерживать организм и получать от этого бонусы внешнего вида.

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

Читать далее
Всего голосов 97: ↑61 и ↓36+38
Комментарии220

Мелкая питонячая радость #9: консольные приложения с человеческим лицом

Время на прочтение3 мин
Количество просмотров15K

Философы говорят, что людей нужно оценивать не по тому, как высоко они могут забраться, а по тому, как низко они могут пасть.


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


Сегодня мы поговорим о том, как сделать лучше программы, на которые большинству плевать — одноразовые консольные утилитки и скрипты.


image

Читать дальше →
Всего голосов 35: ↑33 и ↓2+31
Комментарии7

tig — улучшаем продуктивность работы с git

Время на прочтение3 мин
Количество просмотров44K

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


Читать дальше →
Всего голосов 107: ↑105 и ↓2+103
Комментарии47

Полное руководство по модулю asyncio в Python. Часть 1

Время на прочтение11 мин
Количество просмотров137K

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

Перед вами — подробное и всестороннее руководство по использованию модуля asyncio в Python. В частности, здесь будут рассмотрены следующие основные вопросы:

Читать далее
Всего голосов 21: ↑19 и ↓2+27
Комментарии8

Как GPU-вычисления буквально спасли меня на работе. Пример на Python

Время на прочтение12 мин
Количество просмотров66K
Привет, Хабр!

Сегодня мы затрагиваем актуальнейшую тему — Python для работы с GPU. Автор рассматривает пример, тривиальный в своей монструозности, и демонстрирует решение, сопровождая его обширными листингами. Приятного чтения!


Читать дальше →
Всего голосов 35: ↑32 и ↓3+38
Комментарии52

Изучаем сопромат с CalculiX

Время на прочтение12 мин
Количество просмотров20K
Сдал сопромат — можно жениться!

Введение


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

CalculiX силен, но труден и непонятен. Исправим это?



Естественно, МКЭ проник и в сферу образования — чтобы использовать его в реальных задачах, нужна подготовка соответствующих специалистов. В столицах, в крупных технических вузах обстановка в этой области более-менее нормальная, да и у нас в регионе тот же ANSYS применяется, например, на кафедре теории упругости ЮФУ. Но по периферии, в узко специализированных и не богатых университетах ситуация плачевна. И всё просто — ANSYS стоит порядка 2 млн. рублей за одно рабочее место, а место требуется не одно. К сожалению не все вузы могут позволить себе выложить 30-40 миллионов на организацию компьютерного класса для обучения применению МКЭ.

Одной из альтернатив может служить применение в учебном процессе свободного ПО. К счастью таковое ПО имеется. Однако, русскоязычных материалов по его использованию практически не существует. Исправляя эту ситуацию, данную статью я собираюсь посвятить в введению в CalculiX — открытый, свободный программный пакет, предназначенный для решения линейных и нелинейных трёхмерных задач механики твёрдого деформируемого тела и механики жидкости и газа с помощью метода конечных элементов.
Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии55

Domain-driven design, Hexagonal architecture of ports and adapters, Dependency injection и Python

Время на прочтение23 мин
Количество просмотров22K

Пролог

- Глянь, статью на Хабр подготовил.
- Эм... а почему заголовок на английском?
- "Предметно-ориентированное проектирование, Гексагональная архитектура портов и адаптеров, Внедрение зависимостей и Пайто..."

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

--

Эта техническая статья о применении практик гексагональной архитектуры и всего остального вышеперечисленного в разработке приложений. На примере рассматривается как элегантно вплести гексагональную архитектуру в устоявшуюся, консервативную и казалось бы совершенно безкомпромиссную структуру веб-приложений на Django

Читать далее
Всего голосов 7: ↑6 и ↓1+6
Комментарии10

System Design 101

Уровень сложностиСредний
Время на прочтение42 мин
Количество просмотров107K



О сложных системах простыми словами.


В шпаргалке на высоком уровне рассматриваются такие вещи, как протоколы коммуникации, DevOps, CI/CD, архитектурные паттерны, базы данных, кэширование, микросервисы (и монолиты), платежные системы, Git, облачные сервисы etc. Особую ценность представляют диаграммы — рекомендую уделить им пристальное внимание. Полагаю, шпаргалка будет интересна всем, кто хоть как-то связан с разработкой программного обеспечения и, прежде всего, веб-приложений. Буду признателен за помощь в уточнении/исправлении понятий, терминологии, логики/алгоритмов работы систем (в рамках того, что по этому поводу содержится в оригинале), а также в обнаружении очепяток.


Выражаю благодарность Анне Неустроевой за помощь в редактировании материала.


Возможно, немного другой формат шпаргалки покажется вам более удобным.


System Design (сборник на английском языке).

Читать дальше →
Всего голосов 79: ↑79 и ↓0+79
Комментарии17

Собираем генератор данных на Blender. Часть 4: Сборка проекта и рендеринг

Время на прочтение5 мин
Количество просмотров3.1K

Привет, Хабр! На связи Глеб, ML-разработчик Friflex. В предыдущих статьях мы научились работать с объектами, настраивать свет и камеры, редактировать материалы (aka. текстуры) через api. В заключительной части знакомства с Blender мы рассмотрим две темы: сборка проекта из разных файлов и запуск рендеринга через консоль. В Friflex мы используем Blender в работе над idChess (интеллектуальной платформой для распознавания и трансляции шахматных партий) и другими проектами по оцифровке спорта.

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Интуитивное использование методов Монте-Карло с цепями Маркова

Время на прочтение9 мин
Количество просмотров6.1K

Легко ли это? Я попробовал


Алексей Кузьмин, директор разработки и работы с данными «ДомКлик», преподаватель направления Data Science в Нетологии, перевел статью Rahul Agarwal о том, как работают методы Монте-Карло с цепями Маркова для решения проблем с большим пространством состояний.
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии0

Генераторы непрерывно распределенных случайных величин

Время на прочтение15 мин
Количество просмотров119K
Генератор случайных чисел во многом подобен сексу: когда он хорош — это прекрасно, когда он плох, все равно приятно (Джордж Марсалья, 1984)

Популярность стохастических алгоритмов все растет. Многие из них базируются на генерации большого количества различных случайных величин. Далеко не всегда равномерно распределенных. Здесь я попытался собрать информацию о быстрых и точных генераторах случайных величин с известными распределениями. Задачи могут быть разными, разными могут быть и критерии. Кому-то важно время генерации, кому-то — точность, кому-то — криптоустойчивость, кому-то — скорость сходимости. Лично я исходил из предположения, что мы имеем некий базовый генератор, возвращающий псевдослучайное целое число, равномерно распределенное от 0 до некого RAND_MAX

unsigned long long BasicRandGenerator() {
    unsigned long long randomVariable;
    // some magic here
    ...
    return randomVariable;
}

и что этот генератор достаточно быстрый. Я имею ввиду, что дешевле сгенерировать с десяток случайных чисел, нежели чем посчитать логарифм или возвести в степень одно из них. Это могут быть стандартные генераторы: std::rand(), rand в MATLAB, Java.util.Random и т.д. Но имейте ввиду, что подобные генераторы редко подходят для серьезной работы. Зачастую они проваливают разные статистические тесты. А также, помните, что вы полностью зависите от них и лучше использовать свой собственный генератор, чтобы иметь представление о его работе.

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


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

Равномерное распределение





Читать дальше →
Всего голосов 44: ↑42 и ↓2+40
Комментарии7

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

Время на прочтение14 мин
Количество просмотров69K
image


Приступить к созданию собственного физического движка можно по разными причинам: во-первых, для освоения и усвоения новых знаний в математике, физике и программировании; во-вторых, собственный физический движок может обрабатывать любые технические эффекты, которые сможет создать его автор. В этой вводной статье я расскажу, как создать собственный физический движок с нуля.

Физика даёт игроку потрясающие возможности для погружения в игру. Думаю, что освоение физического движка будет очень полезным умением для любого программиста. Для более глубокого понимания внутренней работы движка можно в любой момент вносить любые оптимизации и специализированные особенности.

В этой части туториала мы рассмотрим следующие темы:

  • Простое распознавание коллизий
  • Генерирование простого многообразия
  • Разрешение импульсов силы
Всего голосов 42: ↑41 и ↓1+40
Комментарии21

Метод Монте-Карло и его точность

Время на прочтение5 мин
Количество просмотров241K
Под метдом Монте-Карло понимается численный метод решения
математических задач при помощи моделирования случайных величин. Представление об истории метода и простейшие примеры его применения можно найти в Википедии.

В самом методе нет ничего сложного. Именно эта простота объясняет популярность данного метода.

Метод имеет две основных особенности. Первая — простая структура вычислительного алгоритма. Вторая — ошибка вычислений, как правило, пропорциональна
\sqrt{D\zeta/N}, где D\zeta — некоторая постоянная, а N — число испытаний. Ясно, что добиться высокой точности на таком пути невозможно. Поэтому обычно говорят, что метод Монте-Карло особенно эффективен при решении тех задач, в которых результат нужен с небольшой точностью.

Однако одну и ту же задачу можно решать различными вариантами метода Монте-Карло, которым отвечают различные значения D\zeta. Во многих задачах удается значительно увеличить точность, выбрав способ расчета, которому соответствует значительно меньшее значение D\zeta.

Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии10

Domain-Driven Design: тактическое проектирование. Часть 2

Время на прочтение16 мин
Количество просмотров83K


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

Для реализации конкретного ограниченного контекста используется ряд более низкоуровневых тактических шаблонов, которые имеют технический характер, то есть эти шаблоны используются для решения технических задач. Такими шаблонами являются: сущность, объект-значение, службы предметной области, события, модули, агрегаты, фабрики и хранилища. Именно о них пойдет речь в этой статье.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии27

Инструменты Domain Driven Design

Время на прочтение11 мин
Количество просмотров25K
Синий кит — отличный пример того, как проектирование сложного проекта пошло не по плану. Кит внешне похож на рыбу, но он млекопитающее: кормит детенышей молоком, у него есть шерсть, а в плавниках до сих пор сохранились кости предплечья и кистей с пальцами, как у сухопутных. Он живет в океанах, но не может дышать под водой, поэтому регулярно поднимается на поверхность глотнуть воздуха, даже когда спит. Кит самое большое животное в мире, длиной с девятиэтажный дом, а массой как 75 автомобилей Volkswagen Touareg, но при этом не хищник, а питается планктоном.

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



Для создания проектов, которые помогают бизнесу зарабатывать, а не похожих на морское животное, которое не может дышать под водой, есть DDD. Это подход, который фокусируется не на инструментах или коде, а на изучении предметной области, отдельных бизнес-процессов и на том, как код или инструменты работают для бизнес-логики.

Что такое DDD и какие инструменты в нем есть, мы расскажем в статье на основе доклада Артема Малышева. Подход DDD в Python, инструменты, подводные камни, контрактное программирование и проектирование продукта вокруг решаемой проблемы, а не используемого фреймворка — все это под катом.
Всего голосов 24: ↑21 и ↓3+25
Комментарии26

Markdown в науке

Время на прочтение10 мин
Количество просмотров20K

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

Читать далее
Всего голосов 38: ↑38 и ↓0+38
Комментарии21

Как мы разрабатываем документацию в открытом проекте Embox

Время на прочтение7 мин
Количество просмотров4.3K
imageДобрый день.

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

Для тех, кому лень читать, сразу скажу, что в итоге мы пришли к разработке документации в формате markdown. Ну а тех, кому интересны детали, причины, почему именно markdown и какие есть плюсы и минусы у данного подхода, прошу под кат.
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии6

История и будущее специальных функций

Время на прочтение26 мин
Количество просмотров21K

Перевод статьи Стивена Вольфрама (Stephen Wolfram) "The History and Future of Special Functions".
Выражаю огромную благодарность Кириллу Гузенко за помощь в переводе.


Статья представляет собой запись выступления, сделанного на Wolfram Technology Conference 2005 в Шампейне, штат Иллинойс, как часть мероприятия в честь 60-летия Олега Маричева.

Так, хорошо, сейчас я бы хотел вернуться к той теме, которую поднимал сегодня утром. Я бы хотел поговорить о прошлом и будущем специальных функций. Специальные функции были предметом моего увлечения как минимум последние 30 лет. И, полагаю, моя деятельность оказала весомое влияние в продвижении использования специальных функций. Однако, получилось так, что я никогда ранее не поднимал эту тему. Теперь пора исправить это.

Выдержка из Математической энциклопедии (под редакцией И. М. Виноградова)
СПЕЦИАЛЬНЫЕ ФУНКЦИИ — в широком смысле совокупность отдельных классов функций, возникающих при решении как теоретических, так и прикладных задач в самых различных разделах математики.

В узком смысле под С. ф. подразумеваются С. ф. математич. физики, которые появляются при решении дифференциальных уравнений с частными производными методом разделения переменных.

С. ф. могут быть определены с помощью степенных рядов, производящих функции, бесконечных произведений, последовательного дифференцирования, интегральных представлений, дифференциальных, разностных, интегральных и функциональных уравнений, тригонометрических рядов, рядов по ортогональным функциям.

К наиболее важным классам С. ф. относятся гамма-функция и бета-функция, гипергеометрическая функция и вырожденная гипергеометрическая функция, Бесселя функции, Лежандра функции, параболического цилиндра функции, интегральный синус, интегральный косинус, неполная гамма-функция, интеграл вероятности, различные классы ортогональных многочленов одного и многих переменных, эллиптическая функция и эллиптический интеграл, Ламе функции и Матъё функции, дзета-функция Римана, автоморфная функция, некоторые С. ф. дискретного аргумента.

Теория С. ф. связана с представлением групп, методами интегральных представлений, опирающихся на обобщение формулы Родрига для классических ортогональных многочленов и методами теории вероятностей.

Для С. ф. имеются таблицы значений, а также таблицы интегралов и рядов.

История многих понятий и объектов математики прослеживается ещё со времён древнего Вавилона. Ведь ещё 4000 лет назад в Вавилоне была разработана и активно использовалась 60-ричная арифметика с различными сложными операциями.

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

По сути, деление сводилось к сложению и вычитанию обратных величин. А умножение довольно хитрым образом сводилось к сложению и вычитанию квадратов.

Таким образом, практически любые вычисления сводились к работе с таблицами. И, конечно, археологам доводилось находить вавилонские таблички из глины с таблицами обратных величин и квадратов.

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

И, в какой-то мере, история специальных функций начинается с открытия принципов работы с последовательностями из этих самых «кусочков».

Следующие «куски» были, вероятно, теми, которые включают тригонометрию. Египетский папирус Ринда 1650-го года до н.э. уже содержал некоторые проблемы касательно пирамид, решение которых требовало тригонометрии. Стоит упомянуть, что была найдена вавилонская табличка с таблицей секансов.

Астрономы тех времён со своей моделью эпициклов, безусловно, уже вовсю использовали тригонометрию. И, опять-таки, все математические операции сводились к работе с небольшим количеством «специальных» функций.
Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии5

Создай, оформи, опубликуй. Sphinx — незаменимый помощник в мире Python документации

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров14K

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

Узнать больше
Всего голосов 3: ↑2 и ↓1+1
Комментарии2

От «Бурана» до мейнфрейма: история отказоустойчивости в космосе и на земле

Время на прочтение5 мин
Количество просмотров4.3K
image

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

Впервые об отказоустойчивости начали говорить в XIX веке — еще до появления первых ЭВМ. В 1837 году английский математик и изобретатель Чарльз Бэббидж опубликовал научную работу, где упомянул отказоустойчивость — fault tolerance — математических вычислений.

Мы решили поговорить об этом подробнее — рассказать об отказоустойчивых системах, разработанных во времена, когда не было привычных суперкомпьютеров, дата-центров и всего интернета.
Читать дальше →
Всего голосов 19: ↑15 и ↓4+13
Комментарии9

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность