Pull to refresh
-30
Ошнуров Андрей @andreoshread⁠-⁠only

Программист

Send message

Подборка полезных библиотек для Python с примерами #1

Reading time9 min
Views20K

У Python одно из самых больших комьюнити. Этот язык любят за его простоту, лояльность и за его универсальность, которая была достигнута созданием огромного числа библиотек и фреймворков, таких как numpy, django, flask, pygame, tornado, tensorflow и других. На сайте pypi содержится более 320 тысяч проектов от малоизвестных и заброшенных до огромных, которыми пользуются миллионы людей в различных сферах. 

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

Ознакомиться

DAM. Как работать с docker на суше, а не в облаке

Reading time9 min
Views4.1K

В статье хочу познакомить читателя с идеей, что образы docker - это такие же простые приложения, как apt пакеты. А утилита DAM (Docker Application Manager) - пример их пакетного менеджера.

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

Читать далее

Запускаем PostgreSQL в Docker: от простого к сложному

Level of difficultyEasy
Reading time12 min
Views636K

О простых и продвинутых способах запуска PostgreSQL в Docker: добавляем healthcheck, ставим на мониторинг, настраиваем параметры.

Читать далее

КОМПАС-3D под FreeBSD в среде Wine на видеокарте nVidia

Reading time4 min
Views11K

Данный пост можно рассматривать как дополнение к "КОМПАС-3D и Linux → Часть 1"

Небольшое отступление.

К фрюхе я неравнодушен давно, года с 1996-го, но использовал её ранее только как серверную ОС. О том, что бы установить FreeBSD на рабочий ноутбук, как -то даже и мысли не возникало. Но времена меняются. С месяц назад я просто почувствовал, что пора... пора расстаться с этим недоразумением под названием Windows и накатил FreeBSD 13.0 на свой рабочий ASUS VX7. Почему не Linux ? Потому, что фрюха - это наше все! О том, как проходил процесс пуско-наладки FreeBSD на отдельно взятом ноутбуке можно написать не один пост, но сейчас вопрос не об этом.

Дело в том, что мне по долгу службы часто приходится иметь дело с 3D моделями, для этой цели пару лет назад была приобретена сетевая лицензия на КОМПАС-3D, а так же оформлена подписка на Fusion 360. После перехода на фрю, оба этих инструмента мне стали недоступны и я вынужден был использовать FreeCAD. К сожалению, приходится констатировать факт - FreeCAD урод от рождения, пользоваться им можно, но крайне тяжело. Это вынудило меня потратить некоторое время на поиски альтернативного решения, а именно - как заставить Fusion 360 или КОМПАС-3D работать под FreeBSD в среде Wine.

Читать далее

Работа с СОМ-портом на Си в linux

Reading time18 min
Views88K
Телетайп, на который БЭВМ могли выводить и получать данные. Фото взято здесь.

Каждый, кто постоянно занимается электроникой и программирует встраиваемые устройства, неизбежно сталкивается с необходимостью работы с СОМ-портом под линуксом. Недаром, моя статья "UART и с чем его едят" спустя 11 лет после выпуска набирает просмотры и комментарии.

Для разработчиков чаще всего появляется задача сопрячь какой-то датчик, либо удалённое устройство с одноплатником. Да что греха таить, сейчас в 2021 году UART, наверное, самый распространённый интерфейс для обмена данными, несмотря на всю его архаичность. Далеко за примером ходить не надо, внутри смартфона, лежащего у вас в кармане, будет с десяток UART интерфейсов, самый известный из которых — это подключение SIM-карты.

Поэтому умение работать с СОМ-портами в linux особенно важно. И вот, казалось бы, UART, древнейший интерфейс, всё должно быть известно и понятно, и даже опытные программисты ломают зубы, работая с ним в линуксе. Особенный цирк с конями начинается при работе с передачей сырых данных по RS-485. Не знаю ни одного программиста, который бы не хватил горя при разработке ПО для таких решений. Самое забавное, что с более новомодным i2c работать в линуксе куда проще и понятнее, чем с ортодоксальным UART. Чтобы не было путаницы дальше, всё семейство UART (RS-232, RS-485, UART 5V, UART 3,3 и т.д.) по тексту я буду называть COM-порт или UART. Мы говорим в статье не о физическом интерфейсе, а о программной стороне вопроса.

В этой статье я хочу показать, как писать свои программы, работающие с UART в ОС Linux. И неважно на каком языке вы пишете программу для работы с UART (python, c, c++, bash, php, perl и т.д.), принцип работы и грабли будут одни и те же, так как всё равно всё упирается в системные вызовы к ядру. А непонимание того, что там происходит и приводит к различным трудноуловимым багам.
Читать дальше →

Сложить и расправить. Искусство оригами в робототехнике

Reading time8 min
Views4.6K

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

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

Читать далее

Vivaldi 4.2 — Тонкости дословного перевода

Reading time3 min
Views6.6K

Что делать человеку, если он совершенно не знает английского языка? Это просто - нужно установить Vivaldi и использовать встроенный переводчик веб-страниц. А что делать тому, кто свободно читает по-английски? Правильно - установить Vivaldi и просматривать англоязычные сайты. Но как быть, если в общем и целом английский язык понятен, но некоторые фразы вызывают затруднение с переводом? Думаю, вы уже знаете ответ.

Читать далее

Как я портировал DOS игру

Reading time22 min
Views37K

Решил портировать одну старую давно забытую игрушку с DOS на современную платформу. Эта игра, в своё время, привлекала ураганным геймплеем, неплохой разрушаемостью, возможностью включить всё оружие одновременно и устроить настоящий бедлам. В 2021 году играть в такое всё ещё интересно, но делать это в родном разрешении 640х480, как-то не очень. Поэтому решил портировать игру и накатить хай-рез патч. Получилось!

Читать далее

Экосистема ваших Big Data-кластеров из решении Apache в Docker-контейнерах на Linux-машинах

Reading time2 min
Views5.8K

Недавно в своей работе начал практиковаться с Hadoop, Spark и Hive от Apache на примере организации распределенного хранилища данных в крупном и сложном проекте. Так как я хорошо дружу с Linux и вселенной Docker, только одна команда позволит не мучиться с лишней установкой Big Data-решении от Apache, не нагружая при этом свою Linux-машину(при наличии Docker и Docker-Compose).

Читать далее

Кодогенерация в GO на примере маршалинга и анмаршалинга интерфейсных типов данных

Reading time10 min
Views5.7K

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

Давайте прикинем как это сделать на Go

Blazor WebAssembly: динамическое создание компонентов по JSON описанию

Reading time4 min
Views5.1K

В заметке описан способ динамического добавления на страницу компонентов по JSON-описанию с помощью DynamicComponent из ASP.NET Core 6.0 (в настоящее время в статусе Preview).

Динамическое создание компонентов пригодится например при реализации конструктора форм:

• Форма описывается JSON-ом;

• Элементы (или контролы) формы не ограничены предустановленным набором. Контролы можно добавлять, в том числе подгружать из других dll-библиотек.

Читать далее

8 лучших фреймворков для тестирования с помощью Python в 2021 году

Reading time9 min
Views34K

Если вы когда-нибудь думали: «С какого же языка программирования мне следует начать свое путешествие в тестирование?» Ваш ответ – Python. Но он подойдет не только начинающим! В недавнем опросе, который я провела в LinkedIn, мы видим, что среди опытных программистов 35% проголосовали за то, что Python является их самым любимым языком программирования (немного опередив всеми любимую Java, которая заняла 2-е место с 32%).

На протяжении многих лет Python действительно набирает обороты как среди тестировщиков, так и среди разработчиков, да и в целом является самым динамично развивающимся языком программирования (как видно на диаграмме трендов Stack Overflow), и мы прекрасно понимаем, что это значит. Популярность = релевантность!

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

Читать далее

Слегка ржавое EFI-приложение

Reading time11 min
Views13K
После двух твитов, оставленных на прошлой неделе, про мои игры с UEFI и Rust, несколько человек попросили опубликовать заметку, объясняющую как создать UEFI-приложение, полностью написанное на Расте и продемонстрировать тестовое окружение.

Так что сегодняшняя цель — это создание UEFI-приложения на Расте, которое распечатывает карту памяти, отфильтрованную по доступности для использования (такая память называется традиционной памятью в описании UEFI-спецификаций):

Читать дальше →

Как объединить 5 языков программирования в одном Python проекте?

Reading time7 min
Views36K

На сегодняшний день существует несколько тысяч языков программирования, каждый из которых создавался с определенной целью, пытаясь изменить и улучшить недостатки своих предшественников. Так, например, появился язык Kotlin, который был нацелен на замену Java в мобильной разработке. В 2010 году увидел свет язык Rust, разработчики которого пытались создать быстрый и безопасный язык, который закрывал бы многие недостатки C/C++.

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

Но как объединить несколько разных языков в одном приложение, чтоб это работало?

Ознакомиться

ML5.JS — это как TensorFlow только без нижних уровней

Reading time7 min
Views6.7K

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

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

Читать далее

Первые шаги в Unity

Reading time5 min
Views86K

Unity — это один из самых популярных движков на данный момент, составить ему конкуренцию может разве что Unreal Engine 4, но что у первого, что и у второго есть свои плюсы и свои минусы. Unity поддерживает почти 30 платформ, в их числе мобильные, виртуальная реальность, настольные компьютеры, консоли и так далее. Unity — это не просто хороший вариант для старта, это идеальный вариант для старта! Тут заложено использование гибкой модульной системы при создании сцен и персонажей в игре. Даже новичок способен создать крутой проект, используя готовые спрайты и конструктор движка.

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

Читать далее

Легенды и мифы процессора Эльбрус в примерах

Reading time15 min
Views67K

В ответ на мою статью про тупиковость развития линейки процессоров Эльбрус в качестве базовой платформы для отечественных general-purpose CPU, пользователь @alexanius (Алексей Маркин) написал свою статью-ответ, где привёл возражения моим тезисам. Дабы не превращать дискуссию в формат форумной перепалки, я попытаюсь структурировать изложенные возражения, максимально опустив малозначимые на мой взляд детали и не относящиеся к делу реплики. Также мы оставим на совести Алексея некорректные высказывания и переходы на личности. Это мишура, которая не поможет нам глубже понять суть проблемы.

Итак, если суммировать, то в моей статьей были приведены следующие недостатки Эльбруса:

Читать далее

Интересный способ сделать config для web js библиотеки

Reading time4 min
Views9.6K

Новое это давно забытое старое...

История о том как случайно получилось найти супер способ передать параметры в независимый javascript виджет.

GET параметры? Нет кое-что получше.

Читать далее

Создаем новое ключевое слово в C++

Reading time27 min
Views24K

C++ - один из языков, который можно назвать "легендарным". Его история насчитывает несколько десятилетий, принципы программирования на нем революционным образом менялись не раз, а черновик стандарта уже разросся до 1800+ страниц мелкого шрифта.

На C++ есть много хороших библиотек. Но нередко изменения в самом языке делали неактуальными большие куски кода, потому что они становились менее надёжными и быстрыми по сравнению с функционалом в самом языке. Правки в стандарт имеют несоизмеримо более сильное влияние, чем любая библиотека.

В этой статье мы в учебных целях напишем для C++ поддержку нового ключевого слова defer, которое будет работать во многом аналогично такому в языках Go и Swift. Это будет сделано через правку исходного кода Clang.

Создать!

Плагин IDEA Mind Map для Intellij IDEA

Reading time8 min
Views16K

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


Читать дальше →

Information

Rating
Does not participate
Location
Уфа, Башкортостан(Башкирия), Россия
Date of birth
Registered
Activity