Pull to refresh
0
0.1
Евгений @pewpew

Бэкенд разработчик

Send message

Blockbench, или Как я перестал беспокоиться и полюбил 3D-моделирование

Level of difficultyEasy
Reading time7 min
Views34K

Возможно, вы, как и я, много раз пробовали осваивать 3D-моделирование, но каждый раз ударялись о высокий входной порог. А может быть, вы выбираете себе подходящий инструмент для начинающих? Тогда вы можете представить мою радость, когда я узнал о Blockbench — минималистичном 3D-редакторе, предназначенном для создания твердотельных моделей. Для меня он пока остаётся идеальным компромиссом между сложностью обучения и возможностями.

Что такое Blockbench


Blockbench — редактор, изначально рассчитанный на моделирование блоков, предметов и скинов персонажей Minecraft (Bedrock Edition). Добавляем в сцену примитив, навешиваем на него текстуру (заморачиваться с UV-развёрткой не нужно, она создаётся автоматически), разрисовываем текстуру прямо на модели, при необходимости добавляем анимации — вуаля, у нас есть готовый 3D-объект!
Читать дальше →

Сжатие медиа для экономии места

Level of difficultyEasy
Reading time51 min
Views5.7K

Вы наверняка имеете медиа файлы закодированные не самым эффективным кодеком (H.264, JPEG, MP3). И вы можете сократить их размер вплоть до 75% перекодировав медиа современными альтернативами (H.265, AVIF, OPUS).

Использовать для этого можно консольные утилиты ffmpeg и magick.

Рассмотреть альтернативы

Адаптивный UI в движке Godot

Level of difficultyEasy
Reading time11 min
Views8.9K

Пользователи играют в игры на устройствах с разными размерами экранов, так что при разработке игр очень важен адаптивный пользовательский интерфейс (User Interface, UI). Продуманный адаптивный UI обеспечивает идеальный внешний вид на любом экране. В Godot Engine есть широкий выбор настроек и нодов, упрощающих создание адаптивного UI.

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

Читать далее

Отслеживание позиций торгового робота Московской биржи через CSV файл

Level of difficultyEasy
Reading time7 min
Views2.5K

Нахожусь в процессе написания механизма торгового робота, работающего на Московской бирже через API одного из брокеров. Брокеров имеющих своё АПИ для МосБиржи катастрофически мало — мне известно только о трёх. При этом, когда я стал публиковать модули робота (и полностью выложу готовый механизм робота на GitHub), то стал получать непонимание — например, мне писали в комментариях — зачем придумывать велосипед, когда уже есть QUIK — популярная российская платформа для биржевых торгов. В Квике уже есть готовый функционал «импорт транзакций из файла» или таблица «карман транзакций». В тех же комментариях предлагали даже рассмотреть использование платформы 1С для робота, но оказалось, что торговля все равно будет осуществляться через импорт .tri-файла в Квик.

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

Разбираемся с хранением позиций в файле

Кодогенерация моделей и миграций в Laravel

Level of difficultyEasy
Reading time4 min
Views2.5K

Да, вместо того, чтобы ручками писать все эти скрипты миграций и в особенности классы моделей их лучше просто генерить в одно мгновение, а ни сидеть, копипастить туда‑сюда названия полей и т. п. Называется всё это термином database reverse engineering, который, как и технология судя по всему не очень то прижился, а совершенно напрасно. Под reverse engineering'ом обычно понимается генерация моделей/сущностей на основе таблиц БД. Но для Laravel есть ещё и кодогенераторы миграций.

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

Читать далее

Создание Telegram Web App с FastAPI: Генерация, сканирование QR-кодов камерой устройства и деплой за 5 минут

Reading time30 min
Views16K

Привет, друзья! Ваш теплый отклик на мою прошлую статью о разработке Telegram-ботов с использованием технологии MiniApp вдохновил меня на создание нового проекта.

Сегодня вы узнаете, как создать Telegram Web App с помощью FastAPI и Aiogram 3, который сканирует и генерирует QR-коды. В статье приведены шаги от установки зависимостей и настройки вебхуков до написания кода на фронте и бэке, и до деплоя проекта.

Читать далее

SolidModelBrowser — удобный просмотр STL, 3MF, OBJ, особенно для тех, у кого завёлся 3D принтер

Level of difficultyEasy
Reading time3 min
Views9.5K

Началась эта история с того, что несколько лет назад я купил 3D принтер. Конечно, по началу не представлял толком, как эта технология работает, и насколько прочными и полезными будут его пластиковые изваяния. Однако, быстро натренировавшись и отрегулировав эту машинку, я был удивлён и вполне удовлетворён качеством пластиковых изделий, спайкой слоёв и точностью их геометрических размеров. Конечно, в последствии не обошлось без модернизаций аппарата, но сейчас не об этом.

Печатать игрушки с thingiverse мне, конечно, надоело быстро, да и брал я свой дрыгостол с большим прицелом на техничку. Принтер вскоре стал одной из любимых игрушек, а связка Blender+Cura позволяла лепить модели мелких деталей порой за считаные минуты, отправляя их затем на печать. Сломалось колёсико у дивана - не в магазин же бежать, отломилось какое-нибудь крепление или кронштейн - и уже гудит вентилятор хотэнда. Штырьки, подпятники, элементы механизмов, и конечно, куча всяких баночек и коробочек...

Библиотека STL и 3MF росла. И в какой-то момент стало понятно, что я не помню, в каком файле лежит та или иная деталь. Хоть файлы и имели осмысленные названия на английском, но я просто уже забыл, что и как назвал, и ориентироваться в разрастающейся свалке становилось всё труднее. Нужен был какой нибудь удобный просмотрщик. Вот так и зародился несколько лет назад проект Solid Model Browser.

Приложение создано на платформе WPF и работает под Windows. В окне отображается загруженная модель, панель инструментов-кнопочек, и файловая панель слева, меняющая свою прозрачность по мере её востребованности...

Читать далее

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

Reading time11 min
Views41K

Минцифры дало ответ, что действия ТБанк по получению согласия на обработку биометрии НЕ соответствую (противоречат) положениям закона⁠⁠.

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

Читать далее

Ещё один набор параметров для разблокировки Ютуба: теперь мобильный

Level of difficultyEasy
Reading time2 min
Views21K

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

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

Выбор инструмента для обхода на этой ОС был невелик: из списка на Гитхабе Валдика есть ровно три Андроид-решения: PowerTunnel, SpoofDPI и ByeDPI. Два последних у меня изначально не заработали, а первый заработал из коробки так хорошо, что я даже не узнал, что под капотом у него целый набор плагинов, в том числе LibertyTunnel, который и обеспечивает обход.

После того, как в понедельник PowerTunnel перестал справляться, я потыкался в настройки, но безуспешно. К сожалению, на Гитхабе автор проекта ничем не смог мне помочь, но я всё равно хочу выразить ему благодарность за два месяца работы мобильного интернета! (А не пародии на него).

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

Читать далее

Интерактивный Бейсик для Arduino и STM32

Level of difficultyEasy
Reading time4 min
Views5.9K

Этот проект был разработан в 2018 для занятий со школьниками - чтобы можно было программировать контроллеры в том числе через Bluetooth с телефона - притом и с интерактивным режимом (ввёл команду - светодиод загорелся). В состав входят простенький самодельный интерпретатор BASIC с версиями прошивок для AtMega328 (arduino) и STM32F103, эмулятор чтобы можно было попробовать/попрактиковаться онлайн - и Bluetooth терминал для Android (на случай программирования с телефона а не по кабелю).

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

Код выложен на GitHub так что можете попробовать сразу - хоть живьём, хоть в эмуляторе :)

Итак, что это за странная штуковина?

Битовые поля в Rust

Level of difficultyEasy
Reading time5 min
Views2.5K

Привет, Хабр!

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

Читать далее

Настройка GoodByeDPI для разных регионов и провайдеров

Level of difficultyEasy
Reading time2 min
Views466K

Всем привет, это моя первая статья на хабре. Многие пользователи GoodbyeDPI столкнулись с проблемой доступа к YouTube. Существующие гайды не всегда решают проблему, поэтому я подготовил универсальную настройку, подходящую для большинства регионов и провайдеров. Приступим.

Читать далее

Как Выигрывать в Игре Быки и Коровы (Метод Выбитых Зубов)

Level of difficultyEasy
Reading time2 min
Views4K

Существует старинная народная логическая игра. Называется быки и коровы. Её ещё называют mastermind.

В этом тексте я представил мой алгоритм для поиска решения в этой игре. Я назвал этот метод: Матрица возможных решений.

Суть алгоритма покажу в частном виде, то есть на примере.

Читать далее

Kafka для самых маленьких разработчиков, аналитиков и тестировщиков

Level of difficultyEasy
Reading time11 min
Views34K

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

С одной стороны, это может быть и хорошо. Такие шаги стимулируют индустрию. Но всё же лучше понимать, что ты делаешь, иначе проекту можно сделать только хуже. В этой статье я обращаюсь к разработчикам, аналитикам и тестировщикам, которые еще не сталкивались с Kafka по работе. Помогу понять, почему все же в микросервисной среде многие не ходят просто по REST, а используют этот инструмент - что конкретно делает Kafka и когда есть смысл её применять.

Читать далее

Воспроизводим гитарные табулатуры на Rust

Reading time11 min
Views12K

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

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

Например, вот первые четыре такта песни Smoke on the Water группы Deep Purple:

e|-----------------|-----------------|-----------------|-----------------|
B|-----------------|-----------------|-----------------|-----------------|
G|-----3---5-------|---3---6-5-------|-----3---5-----3-|-----------------|
D|-5---3---5-----5-|---3---6-5-------|-5---3---5-----3-|---5-------------|
A|-5-------------5-|-----------------|-5---------------|---5-------------|
E|-----------------|-----------------|-----------------|-----------------| <- верх

Эту песню играют в стандартном строе (EADGBe), обозначенном буквами слева, указывающими строй каждой струны. Цифры же означают, куда нужно ставить пальцы на грифе.

Кроме текстового описания стандартом де-факто стал формат, используемый в ПО Guitar Pro для рендеринга и синтезирования звука табулатуры.

Такие двоичные файлы в зависимости от версии ПО имеют расширение .gp3, .gp4, .gp5 или .gp6, их легко можно найти в Интернете на таких веб-сайтах, как Ultimate Guitar.

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

Вероятно, лучший опенсорсный плеер табулатур — это TuxGuitar, у него очень много функций, это потрясающий инструмент для обучения гитаре.

Так как TuxGuitar уже не поддерживается и написан на Java, я решил, что будет интересно написать собственный плеер табулатур на Rust.
Читать дальше →

Как объединить фронтенд с бэкендом и не сломать веб-приложение

Level of difficultyMedium
Reading time5 min
Views18K

Привет! Меня зовут Артём Шумейко, я Python-разработчик и создатель одноименного канала на YouTube. Представьте: у вас есть проект с фронтенд- и бэкенд-частью. Первый работает на одном порту и отображает данные, после — передает бэкенду. Второй работает на другом порту, принимает и обрабатывает эти данные, после чего возвращает ответ. Обычно сайты находятся на едином домене с фронтендом и бэкендом, а здесь — на двух отдельных. 

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

Читать далее

Баланс стоимости предметов в RPG с помощью линейной алгебры

Level of difficultyMedium
Reading time4 min
Views12K

Я обожаю RPG, меня привлекают их богатый сюжет, стратегическая глубина и захватывающие миры. Также меня восхищают data-driven подходы к разработке. Они не только улучшают логическую структуру игровых механик, но и гарантируют, что каждый элемент игры сбалансирован и вносит значимый вклад в опыт игрока. Баланс - один из самых сложных аспектов разработки игр, поскольку он требует тщательного внимания к взаимодействию игровых механик. Сегодня я расскажу о том, как использовать линейную алгебру для баланса стоимости предметов в игре.

Читать далее

IPv6 или противостояние занижению скорости Youtube

Level of difficultyMedium
Reading time5 min
Views79K

Если Вы являетесь счастливым обладателем маршрутизатора Mikrotik и у Вас белый IP адрес, а также надоело занижение скорости Youtube, то статья для Вас. Добро пожаловать!

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

Читать далее

Существуют ли шаровые молнии и как их объясняет современная наука?

Level of difficultyEasy
Reading time8 min
Views104K


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

Хотя почти у каждого человека в последние лет 20 с собой всегда есть телефон с видеокамерой, качественных видео с демонстрацией шаровой молнии почему-то не появилось — те, что можно найти, отличаются плохим качеством.
Читать дальше →

Information

Rating
3,966-th
Location
Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Game Developer
Senior
PHP
Git
SQL
REST
Godot Engine
GDScript
Lua
Redis
Yii framework