Pull to refresh
0
0
Send message

Различные вычисления, многопоточность, асинхронность и мультипроцессность в Python

Level of difficultyMedium
Reading time9 min
Views7.4K

Всем привет! Меня зовут Дмитрий Первушин, я лидер Python-компетенций трайба ИСУ в Сбере. 

Эта статья рассчитана на людей, которые уже знакомы с Python, хотя бы на уровне junior+. Я объясню, какие есть отличия и особенности в многопоточности, асинхронности и мультипроцессорности в Python, где и когда они используются. Как говорится в пословице: «Всё познаётся в сравнении», именно в таком стиле я подготовил примеры. Кроме этого, буду специально делать ошибки и рассматривать неправильные подходы, чтобы можно было сразу разобраться, убедиться и запомнить, почему так делать нельзя и какой другой подход в этом случае нужно использовать.

Читать далее
Total votes 21: ↑18 and ↓3+20
Comments16

Давайте сделаем крупное приложение на Flask (язык Python)

Reading time18 min
Views13K

На Хабре я часто вижу статьи о реализации тех или иных фич на Python-фреймворках. Я объединил все эти фичи в реальный проект с открытым исходным кодом, чтобы у вас сложилась целостная картина. Мы с вами создадим UX/UI на Figma, напишем фронтенд на HTML, CSS, SASS, Bootstrap и JavaScript, создадим ER-диаграмму в MySQL Workbench, напишем бекэнд на Flask, создадим регистрацию через социальные сети OAuth 2.0 в один клик, используем брокер сообщений и асинхронную очередь Celery для отправки писем на электронную почту, сделаем WYSIWYG-редактор, реализуем полнотекстовый поиск Elasticsearch, закешируем Redis, покроем тестами pytest и запустим в Docker-контейнерах, поговорим о многопроцессности для WSGI-шлюза Gunicorn.

Читать далее
Total votes 19: ↑19 and ↓0+25
Comments43

Пишем собственный макрос на Dart 3.5: глубокий разбор

Level of difficultyHard
Reading time36 min
Views1.2K

Я потратил месяц фул‑тайма, чтобы поиграть и разобраться с макросами. И вот всё, что вам нужно, чтобы быстро стартовать.

В первой части мы установили бета‑версию Dart для экспериментов с макросами, испытали макрос @JsonCodable, который команда Dart выпустила для демонстрации технологии, и написали свой hello‑world макрос.

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

Потребуются знания из первой статьи.

Осторожно: Макросы в Dart это пока эксперимент, и много всего сломается, пока они станут стабильными. Просто мне было слишком интересно.

Читать далее
Total votes 6: ↑6 and ↓0+10
Comments4

Создаём приложение на gtk

Reading time3 min
Views11K
Я вижу часто отсылки на то, как реализуется то или иное на qt, но gtk тоже хорош. Я пишу на C и не хочу учить каждые три года стандарты C++, чтобы быть на волне. Мне хватает простой сишечки и чтобы делать графический софт, выбор пал на gtk.
Читать дальше →
Total votes 26: ↑19 and ↓7+21
Comments31

Пишем приложение на GTK+ используя C++ и GTKMM библиотеку

Reading time5 min
Views24K

Эпиграф


Однажды попросила меня жена написать ей простенькую программку, которая сможет вычислять площади фигур, периметры, и другие параметры при наличии достаточных данных. Например, нужна площадь треугольника, указаны его стороны. Вводим стороны нажимаем кнопочку и получаем площадь. Или указана только сторона и два угла. В общем любые данные, достаточные для того чтобы вычислить остальное.
Стоит отметить, что я являюсь последние лет 5 только веб-разработчиком, в основном PHP, хотя конечно иногда что-то нужно сделать и на ruby и на perl. В общем язык для меня особо не проблема, главное понять смысл процессов в компьютере, а дальше хоть Assembler (когда-то даже занимался дизасемблированием и небольшим патчингом приложений под Windows). Но все-таки когда писал десктопные приложения уже и не помню. Но тут решил написать именно десктопное, чтобы жене было удобно им пользоваться при отсутствии интернета и не нужно было на ее ноутбук ставить вебсервер с PHP. Кроме того уже давно хотел попробовать себя в использовании языка C++. Ну что ж. У жены стоит на ноутбуке Linux Ubuntu. Графическая система — Unity, основанная на Gnome3. А там где Gnome, там GTK+.
Вот так и было решено написать десктопное приложение под Linux используя Gtk+. Интересно? Добро пожаловать под кат!
Читать дальше →
Total votes 21: ↑18 and ↓3+15
Comments20

Макросы на Dart: первые ощущения от использования и лайфхаки на будущее

Level of difficultyMedium
Reading time13 min
Views2.2K

Макросистема Dart — это новая важная языковая функция. Она добавляет поддержку статического метапрограммирования в язык Dart, но в настоящее время находится в разработке.

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

В отличие от генерации кода с помощью сторонних пакетов (например, build_runner) макросы полностью интегрированы в язык Dart и автоматически работают в фоновом режиме. Это делает макросы более эффективными, чем использование вспомогательного инструмента:

Читать далее
Total votes 4: ↑4 and ↓0+6
Comments4

Проектная, конструкторская или технологическая документация. Основные системы стандартов

Level of difficultyMedium
Reading time8 min
Views5.9K

Правовая основа стандартизации в России заложена в ст. 71 Конституции Российской Федерации — «В ведении Российской Федерации находятся: … р) метрологическая служба, стандарты, эталоны, метрическая система и исчисление времени; геодезия и картография; наименования географических объектов; метеорологическая служба; официальный статистический и бухгалтерский учет; …»

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

— Федеральный закон «О стандартизации в Российской Федерации» от 29.06.2015 N 162-ФЗ;
— Федеральный закон «О техническом регулировании» от 27.12.2002 N 184-ФЗ.

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

ИТ с пеленок. 6 игр, которые познакомят детей с программированием. Часть 1

Reading time3 min
Views11K

Если ты влюблен в программирование, перетащить своего ребенка «на эту сторону» тоже однажды захочется. Годовасику про JSON рассказывать, конечно, рано (хотя за колыбельную прокатит), а вот с детьми 4+ уже можно прикоснуться к основам. Помогут в этом специальные игры для детей — 6 из них собрали в этом посте. Некоторые подойдут для дошкольников, другие — для детей постарше.

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

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

Что нового в мире обхода блокировок Интернета в середине 2024

Level of difficultyEasy
Reading time13 min
Views116K

Представляю вашему вниманию короткий обзор что же произошло в России и в мире в области цензуры интернета и того, как этому противостоят энтузиасты. На всякий случай напоминаю, что статья «Надежный обход блокировок в 2024: протоколы, клиенты и настройка сервера от простого к сложному» заблокирована на Хабре для пользователей из РФ, но по‑прежнему без проблем открывается через прокси/VPN с иностранных адресов. Ну а мы сейчас разберем, что же изменилось с тех пор.

Сегодня в программе: Замедление YouTube — проблемы с Google Cache или намеренное вредительство? Можно ли заблокировать Shadowsocks и как РКН смог это сделать? Новые транспорты в XRay: HTTPUpgrade и SplitTunnel. Новости из мира Tor, и многое другое.

Читать далее
Total votes 167: ↑162 and ↓5+190
Comments102

Ускоряем код на Питоне с помощью расширений на Cи

Reading time7 min
Views13K

Питон — простой, но мощный язык, который заслуженно стал одним из самых популярных. Тем не менее, иногда ему не хватает скорости статически типизированных языков с предварительной компиляцией, таких как Cи и Джава.

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

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

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

Использование python-docx-template для динамического создания закладок и ссылок на них в документах Word

Level of difficultyEasy
Reading time2 min
Views7.9K

Я использую модуль python-docx-template для генерации файлов docx по шаблону.

Подробнее о модуле можно почитать здесь.

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

Здесь я предлагаю свой способ вставки закладок (bookmarks) и ссылок (hyperlinks) на них при помощи python-docx-template.

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

Настройка Git сервера с нуля

Level of difficultyEasy
Reading time12 min
Views11K

Любой начинающий DevOps начинает своё знакомство с Git. Этот инструмент стал неотъемлемой частью рабочего процесса разработчиков по всему миру. Во многих курсах и руководствах по DevOps описывается настройка серверов через популярные платформы, такие как GitLab, а иногда и Gitea. Однако мне стало интересно попробовать другой путь — использовать встроенный в Git инструмент GitWeb.

Подробнее
Total votes 28: ↑25 and ↓3+24
Comments21

Автоматизируем создание отчетов в Word с данными из Excel на Python

Level of difficultyEasy
Reading time7 min
Views39K

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

Читать далее
Total votes 35: ↑33 and ↓2+33
Comments55

Пишем собственный макрос на Dart 3.5 вместо старого генератора кода

Level of difficultyMedium
Reading time6 min
Views2.1K

В Dart 3.5 большое новшество: макросы. Это как старая генерация кода, но прямо в памяти, без временных файлов, плюс ещё много преимуществ.

В этой статье разбираем пилотный макрос JsonCodable, который команда Dart выпустила, чтобы мы разобрались в новой технологии. И пишем собственный простейший макрос.

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

В помощь джунам: как легко разместить сайт на VPS

Level of difficultyEasy
Reading time7 min
Views9.5K


Думаю, ни для кого не секрет, что… Чуть больше года назад именно с этой фразы начиналась наша статья о том, как разместить на виртуальном выделенном сервере свой сайт. Тогда мы на Linux-системе развернули стек LAMP, подняли FTP-сервер и с его помощью скопировали файлы сайта с локального компа на нашу виртуалку. Но всё-таки тема показалась нам недостаточно раскрытой. Как и тогда, данный материал рассчитан на не очень опытных пользователей, на тех, кто ещё только набирается опыта в вёрстке, кто пробует делать свой пет-проект на вебе, кто выполняет тестовое задание в качестве джуна-фронтендера. Речь пойдёт о том, как быстро и безболезненно перенести уже готовый сайт на только что созданный VPS.
Читать дальше →
Total votes 32: ↑26 and ↓6+30
Comments11

Механический квантовый компьютер

Level of difficultyMedium
Reading time15 min
Views10K

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


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


Читать дальше →
Total votes 19: ↑19 and ↓0+24
Comments25

Становление стандартов передачи телемеханических данных в электроэнергетике (МЭК 101/104) — особенности разработки

Reading time6 min
Views29K
Здравствуйте! Меня зовут Юрий.

Преамбула

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


Для краткости я введу некоторые сокращения:
  • МЭК -протоколы по ГОСТ Р МЭК 60870-5-101/104
  • МЭК 101, 101-ый — протокол по ГОСТ Р МЭК 60870-5-101
  • МЭК 104, 104-ый — протокол по ГОСТ Р МЭК 60870-5-104


Как все начиналось


Повышение требований к информационным системам в современной Энергетике России привело к развитию средств и технологий передачи данных. В энергетики это направление называется телемеханика. В качестве основы передачи телемеханической информации был взят стек протоколов IEC 870-5-101 и в 2001 году появился его отечественный перевод ГОСТ Р МЭК 870-5-101.
Для его локализации было несколько причин:
  1. на тот момент «развелось» огромное количество разновидностей реализаций протоколов передачи данных и весь этот «зоопарк» все сложнее и сложнее было как-то упорядочивать;
  2. у всех существующих протоколов было большое количество ограничений, по емкости передаваемых данных, по типу передаваемых данных, отсутствовали средства диагностики качества передаваемых данных, не было возможности для расширения и пр.;
  3. на наш рынок постепенно начали приходить зарубежные поставщики решений и оборудования, где процесс стандартизации уже давно шел.

Читать дальше →
Total votes 4: ↑3 and ↓1+2
Comments14

Основные типы распределений вероятностей в примерах

Level of difficultyMedium
Reading time15 min
Views21K

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

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

Самое понятное объяснение Специальной теории относительности

Level of difficultyMedium
Reading time13 min
Views113K

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

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

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

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

Читать далее
Total votes 385: ↑385 and ↓0+383
Comments391

Деплой Flutter-приложений и особенности платформ

Reading time8 min
Views3.1K

Всем привет! Меня зовут Александр Омельяненко, я Flutter-разработчик в AGIMA. Сегодня расскажу про релиз приложений в сторы. И поскольку работаю с кросс-платформой, речь пойдет как про Android, так и про iOS. Уверен, каждый участник команды должен понимать, что происходит с приложением, когда оно готово. Поэтому всё объясняю подробно: какие сторы использовать, каких подводных камней ожидать, что делать, если релиз отклонили.

Читать далее
Total votes 17: ↑17 and ↓0+17
Comments2
1
23 ...

Information

Rating
Does not participate
Registered
Activity