Pull to refresh
3
0.5
Дмитрий Померанцев @pda0

User

Send message

Нотация моделирования архитектуры С4 — примеры диаграмм и инструменты

Level of difficultyMedium
Reading time19 min
Views62K

Если возникает вопрос об описании архитектуры системы, то есть несколько основных решений где и как это сделать. Среди популярных нотаций для визуализации схемы архитектуры можно выбрать C4, разработанную Саймоном Брауном.

В этой статье я хочу показать пример применения нотации C4, который вы сможете использовать как ориентир в своей работе, а также инструменты для её создания. В частности, выделяю Structurizr.

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

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

Structurizr инструкция для начинающих

Level of difficultyMedium
Reading time4 min
Views850

Всем привет!

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

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

Давай посмотрим
Total votes 1: ↑1 and ↓0+3
Comments2

Как платить налог с криптовалюты в 2024 году?

Level of difficultyEasy
Reading time3 min
Views7.3K

Всем привет! В этой статье мы расставим все точки над "И" по теме, как же все-таки платить налог с доходов от криптовалют, в том числе предпринимателям и ИП. Поехали!

Читать далее
Total votes 8: ↑5 and ↓3+4
Comments3

Английский для продакта: как я выучил язык для срочного поиска работы

Reading time9 min
Views28K

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

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

Читать далее
Total votes 16: ↑12 and ↓4+13
Comments55

Управление проектами и задачами в Obsidian

Level of difficultyMedium
Reading time13 min
Views14K

Используя Obsidian более двух лет, я привык организовывать в нём все свои заметки по проектам. Хотя Obsidian предлагает широкий набор сторонних плагинов для расширения своего функционала, мне так и не удалось найти идеальный инструмент для управления проектами и задачами. Это подтолкнуло меня к созданию нескольких автоматизаций, о которых пойдет речь дальше.

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

Пацанский английский. Ленивый способ наконец выучить английский язык: без курсов, без зубрежки, бесплатно

Level of difficultyEasy
Reading time9 min
Views158K

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

Наконец случилось чудо. В одну из очередных попыток я нащупал способ, который позволил продолжать развиваться, делать успехи, осознавать их и разжигать мой огонь всё сильнее и сильнее. Сегодня мне сложно представить день, проведенный без английского языка. И мне не хочется говорить без “изучения”, поскольку не сказал бы, что я именно учу. Скорее — постепенно “прошиваюсь” английским, как это обычно происходит с новорожденным детьми, которые постепенно начинают говорить, слушая и наблюдая за своими родителями. В настоящее время мой словарный запас не такой большой: 9 — 12 тысяч слов (зависит от теста). Я свободно смотрю видео на Ютубе разнообразной тематики (видеоуроки, спорт, фитнес, музыка, путешествия, кулинария, обзоры и т.д.), читаю документацию, компьютерную и популярную литературу, публицистику.

Читать далее
Total votes 141: ↑132 and ↓9+140
Comments289

PyQt: простая работа с потоками

Reading time4 min
Views28K
Очень часто в программах приходится использовать многопоточность. Иногда это монстрообразные пулы потоков со сложным взаимодействием, но гораздо чаще это бывает простой код, главное требование к которому — не замораживать интерфейс.

Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments5

Высоконагруженный IPC между C++ и Python

Level of difficultyMedium
Reading time6 min
Views4.1K

Несколько лет назад Аурига по заданию известного медицинского стартапа разрабатывала решение, связанное с параллельной обработкой нескольких потоков видеоданных. Ключевой особенностью технического решения была скоростная передача и обработка большого потока видеоданных от драйвера, написанного на С++, в обработчик, написанный на Python.

В процессе разработки мы успели отрефакторить код, написанный математиками, перепробовать распространённые протоколы IPC и написать свой собственный, и дать полную нагрузку на 40-ядерный Xeon.

А ещё мы дебажили Windows.

Читать далее
Total votes 15: ↑14 and ↓1+20
Comments11

И еще несколько полезных библиотек для Python (с примерами)

Reading time9 min
Views19K

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

Хотелось бы рассмотреть несколько интересных на мой взгляд библиотек.

Ознакомиться
Total votes 18: ↑18 and ↓0+18
Comments3

Параллельное программирование в Python при помощи multiprocessing и shared array

Reading time6 min
Views101K

Введение.


Python замечательный язык. Связка Python + NumPy + Matplotlib, на мой взгляд, сейчас одна из лучших для научных расчётов и быстрого прототипирования алгоритмов. Но у каждого инструмента есть свои светлые и тёмные стороны. Одной из самых дискутируемых особенностей Python является GIL – Global Interpreter Lock. Я бы отнёс эту особенность к тёмной стороне инструмента. Хотя многие со мной не согласятся.

Если кратко, то GIL не позволяет в одном интерпретаторе Python эффективно использовать больше одного потока. Защитники GIL утверждают, что однопоточные программы при наличии GIL работают намного эффективнее. Но наличие GIL означает, что параллельные вычисления с использованием множества потоков и общей памяти невозможны. А это достаточно сильное ограничения в современном многоядерном мире.

Один из способов преодоления GIL при помощи потоков на C++ был недавно рассмотрен в статье: Использование Python в многопоточном приложении на C++. Я же хочу рассмотреть другой способ преодоления ограничений GIL, основанный на multiprocessing и shared array. На мой взгляд, этот способ позволяет достаточно просто и эффективно использовать процессы и разделяемую память для прозрачного параллельного программирования в стиле множества потоков и общей памяти.
Читать дальше →
Total votes 44: ↑43 and ↓1+42
Comments15

pyqtdeploy, или упаковываем Python-программу в exe'шник… the hard way

Reading time16 min
Views43K

КДПВ


Наверняка, каждый, кто хоть раз писал что-то на Python, задумывался о том, как распространять свою программу (или, пусть даже, простой скрипт) без лишней головной боли: без необходимости устанавливать сам интерпретатор, различные зависимости, кроссплатформенно, чтобы одним файлом-exe'шником (на крайний случай, архивом) и минимально возможного размера.


Для этой цели существует немало инструментов: PyInstaller, cx_Freeze, py2exe, py2app, Nuitka и многие другие… Но что, если вы используете в своей программе PyQt? Несмотря на то, что многие (если не все) из выше перечисленных инструментов умеют упаковывать программы, использующие PyQt, существует другой инструмент от разработчиков самого PyQt под названием pyqtdeploy. К моему несчастью, я не смог найти ни одного вменяемого гайда по симу чуду, ни на русском, ни на английском. На хабре и вовсе, если верить поиску, есть всего одно упоминание, и то — в комментариях (из него я и узнал про эту утилиту). К сожалению, официальная документация написана довольно поверхностно: не указан ряд опций, которые можно использовать во время сборки, для выяснения которых мне пришлось лезть в исходники, не описан ряд тонкостей, с которыми мне пришлось столкнуться.


Данная статья не претендует на всеобъемлющее описание pyqtdeploy и работы с ним, но, в конце концов, всегда приятно иметь все в одном месте, не так ли?

Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments10

Учимся писать многопоточные и многопроцессные приложения на Python

Reading time6 min
Views415K
Эта статья не для матёрых укротителей Python’а, для которых распутать этот клубок змей — детская забава, а скорее поверхностный обзор многопоточных возможностей для недавно подсевших на питон.

К сожалению по теме многопоточности в Python не так уж много материала на русском языке, а питонеры, которые ничего не слышали, например, про GIL, мне стали попадаться с завидной регулярностью. В этой статье я постараюсь описать самые основные возможности многопоточного питона, расскажу что же такое GIL и как с ним (или без него) жить и многое другое.
Читать дальше →
Total votes 94: ↑88 and ↓6+82
Comments93

Практический гайд по процессам и потокам (и не только) в Python

Level of difficultyMedium
Reading time5 min
Views24K

За то время что я занимаюсь менторством я заметил, что большинство вопросов новичков связаны с темами: конкурентность, параллелизм, асинхронность. Подобные вопросы часто задают на собеседованиях, в работе эти знания позволяют писать более эффективные и производительные системы.

Цель статьи - понятно и доходчиво, используя примеры кода и бенчмарки рассказать о том какие инструменты есть в Python и как с их помощью добиться высокой производительности.

Читать далее
Total votes 16: ↑13 and ↓3+10
Comments7

Qt Bitcoin Trader — программа для торговли Bitcoin под Windows, Mac и Linux

Reading time7 min
Views108K
В этой статье я покажу вам, как работает программа Qt Bitcoin Trader, и поведаю историю ее разработки.
Эта программа с открытым исходным кодом позволяет быстро делать ставки на BTC-e и Mt.Gox, задавать правила для автоматической торговли.
Написана она на чистом Qt 4 с использованием OpenSSL, и, по моему мнению, в ней есть интересные особенности со стороны разработки, о которых тоже хочу рассказать.


Читать дальше →
Total votes 69: ↑54 and ↓15+39
Comments51

Модули multiprocessing и threading в Python

Level of difficultyEasy
Reading time9 min
Views9.6K

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

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

Автоматическое тестирование QT GUI с помощью python и funq

Reading time5 min
Views10K

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

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

Всё своё ношу с собой. Мои простые правила организации личной базы знаний

Reading time4 min
Views48K

Помните те времена, когда Интернет был маленьким, модемы — медленными, а провайдеры — жадными? Мы сохраняли всё полезное у себя на винчестерах, героически пытаясь вместить всё нужное в скромный объём дискового пространства. Раньше это был единственный способ обеспечить себе быстрый и эффективный доступ к информации.

А потом высокоскоростной Интернет нас избаловал — мы перестали скачивать файлы и формировать свои собственные локальные библиотеки знаний и контента. Теперь всё лежит на сайтах и в облаках. Зачем что-то скачивать, если всё это моментально доступно по одному клику?

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

Читать далее
Total votes 75: ↑67 and ↓8+76
Comments140

Suno как аранжировщик etc

Level of difficultyMedium
Reading time14 min
Views5.1K

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

Под аранжировкой обычно понимают создание инструментального трека (минусовки, backing track) на основе мелодии или мелодии + гармонии, с определенным стилем, темпом, формой/структурой. Suno генерирует песни (и инструментал) целиком с задаваемыми (относительно) стилем и формой. Показалось интересным протестировать систему на возможность создания нужной аранжировки. Особенно после своих экспериментов с Audio Input (см. статью), когда эта функция Suno стала очевидной. Да и читатели обращались с подобным вопросом. Так я затеял серию экспериментов, результаты которых представил в пяти тестах. (Все звуковые примеры и детали у меня на сайте).

За последние пару месяцев я сделал более 80 DS (dataset, исходников), как с вокалом, так и инструментальных. Причем, чаще это была не просто отрезка фрагмента до 60 сек. из готового трека, а его препарация или сборка фрагмента c нужным содержанием (вокал, аккорды, Hi-Hat Loop и т.п.).

Тест #1 / от спетой мелодии, текста... ("По-Гру-Гла-Но ...") *.

Отталкиваясь от удачного опыта с генерацией аранжировок в разных стилях на а капеллу Воробей я решил провести более детальный эксперимент: на входе спетая мелодия + текст (Lyrics) и задание Style. Классно же спеть свою мелодию, скормить Suno и получить готовую песню в нужном стиле...

Написал простую мелодию, сочинил шуточный текст, включающий Bridge, Verse и Chorus и пропел все это на простую гармонию. Сначала в темпе 90 bpm - тогда пришлось сделать 2 разных DS: Bridge+Verse и Bridge+Chorus, иначе нельзя было уложиться в ограничение в 60 сек. Затем - в темпе 102 bpm: Bridge+Chorus, здесь Bridge уже не пропевался.

Читать далее
Total votes 13: ↑13 and ↓0+17
Comments10

Попробуйте Tauri

Level of difficultyMedium
Reading time6 min
Views7.6K

Хочу рассказать про один из моих любимых Opensource проектов: Tauri. Это среда для создания десктопно-мобильных приложений на JavaScript, но быстрых и легковесных. С опциональными дополнениями на Rust, а через него и на всех других языках.

Читать далее
Total votes 24: ↑22 and ↓2+27
Comments30

Природа сознания. Как возникает и исчезает сознание

Level of difficultyEasy
Reading time5 min
Views2.7K

Каждый раз, когда я принимаю душ, мою посуду или иду куда-то пешком, то мозг пассивно прокручивает различные сценарии. Это совершенно нормально, представлять себя на поверхности Юпитера или прогонять раз за разом сценарии «ух, как бы я тогда ответил ему в разговоре!». Более того, такое предиктивное мышление – база для выживания. Наш мозг постоянно работает над составлением прогнозов относительно того, что происходит вокруг нас, чтобы учитывать возможные неожиданности. Однако, в чем природа такой связи?

Читать далее
Total votes 10: ↑5 and ↓5+1
Comments5
1
23 ...

Information

Rating
1,948-th
Location
Химки, Москва и Московская обл., Россия
Date of birth
Registered
Activity