Pull to refresh
18
Karma
5.1
Rating
Vladimir @mvs

Creator, founder, developer

Групповой видеозвонок на сайт

JavaScript *Node.JS *ReactJS *TypeScript *
Retrospective
Sandbox

Ещё одна история изучения и использования технологии WebRTC (Web Real-time Communication). Краткое описание создания готовой библиотеки для её переиспользования в разных проектах.

Читать далее
Total votes 8: ↑8 and ↓0 +8
Views 1.7K
Comments 2

В очередь, ...! Как управлять состоянием системы через события

PHP *Programming *System Analysis and Design *Designing and refactoring *

Существует множество разных подходов к построению архитектуры серверных приложений. В данной статье рассмотрим Event-driven архитектуру (она же событийно-ориентированная). Рассмотрим основные принципы, как перейти от связей Компонент А <-> Компонент В, к связям через события Компонент А -> Событие А -> Компонент Б и зачем это нужно?

Читать далее
Total votes 14: ↑14 and ↓0 +14
Views 3.6K
Comments 14

Взлет и падение Vuetify. Некролог

Website development *JavaScript *HTML *VueJS *TypeScript *
Retrospective

Vuetify - один из самых популярных Material Design фреймворков для Vue, которому недавно исполнилось 6 лет. И 6 января 2023 года его основатель заявил, что проект Vuetify перестал окупаться и он ищет работу. Отсюда - некролог в названии статьи.

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

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

Погнали!
Total votes 28: ↑26 and ↓2 +24
Views 11K
Comments 43

Достигаем Product of the Day на Product Hunt с Trello доской

Reading room Social networks and communities Finance in IT DIY IT-companies
Tutorial
Translation

Недавно я обнаружил, что на Product Hunt можно получить звание «Продукт дня» практически с чем угодно. Мне удалось занять место № 4 в списке продуктов дня на Product Hunt с помощью доски Trello. В этой статье я хотел бы поделиться некоторыми советами о том, как добиться успеха на Product Hunt, и объяснить причины. В целом, это был полезный опыт, и я рекомендую попробовать это сделать ВСЕМ, кто разрабатывает продукт на мировой рынок.

Эта статья включает в себя следующие разделы:

1. Product Hunt 101. Мое руководство и советы по запуску PH

2. Запуск доски Trello на Product Hunt

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

Читать далее
Total votes 6: ↑4 and ↓2 +2
Views 965
Comments 2

GlitchTip вместо Sentry. Как мы бесплатно настроили мониторинг ошибок

Constanta corporate blog DevOps *
Review

Привет, хабр! Меня зовут Алексей и я системный инженер в компании Constanta, мы с командой занимаемся практиками DevOps, развиваем процессы ci/cd и мониторинга.

Представьте, что у вас есть 10 серверов и 20 микросервисов на них, а релизы проходят каждую неделю. Вы уже мониторите жизнеспособность сервисов и докера с помощью zabbix или prometheus, а с помощью ELK или grailog собираете логи. Кажется, что хорошо, но в таком потоке релизов, хотфиксов и строчек кода нужно быстро ориентироваться в ошибках внутри приложения, которые не влияют на жизнеспособность сервиса, но мешают его правильной работе.

Стоп! Есть же Sentry, скажете вы. И будете правы. Он удобен, хорошо описан, есть документация, комьюнити и поддержка. Однако, есть одно "но".

Читать далее
Total votes 7: ↑7 and ↓0 +7
Views 2K
Comments 5

API platform по быстрому

PHP *Symfony *Doctrine ORM *API *
Tutorial

API platform это полнофункциональный REST API, который вы получите за считанные минуты. Вот неполный список фич:

- Генерация CRUD

- Поддержка GraphQL

- Машиночитаемая документация API в форматах Hydra и Swagger/Open API, гененрится из метаданных PHPDoc, Serializer, Validator и Doctrine ORM / MongoDB ODM

- Хорошая удобочитаемая документация, созданная с использованием пользовательского интерфейса Swagger (включая песочницу) и / или ReDoc

- Пагинация

- Куча фильтров

- Проверка с использованием компонента Symfony Validator (с поддержкой групп)

- Расширенные правила аутентификации и авторизации

- Расширенная сериализация благодаря компоненту Symfony Serializer (поддержка групп, встраивание отношений, максимальная глубина...)

- Поддержка JWT и OAuth- Файлы и \DateTime, сериализация и десериализация

- Все полностью настраивается благодаря мощной системе событий и сильному ООП.

Читать далее
Total votes 6: ↑4 and ↓2 +2
Views 2.3K
Comments 11

Как выбрать NewSQL-СУБД для вашей компании

QIWI corporate blog SQL *Data storage *Distributed systems *

Привет! Меня зовут Пётр, я менеджер по отказоустойчивости в QIWI. В этом посте мы поговорим про выбор новых классов продуктов. Как-то раз мы с одним разработчиком из другой компании стали обсуждать, почему бы не выбрать для работы какую-то распределенную СУБД, поддерживающую SQL? Из этой дискуссии родился мой доклад для нашей QIWI Server Party. Представляю вам его текстовую версию.

Читать далее
Total votes 35: ↑33 and ↓2 +31
Views 5.5K
Comments 10

Flamingo, Go ahead! или Как реализовать DDD в Go?

«Актив» corporate blog Programming *Go *
Case

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

При проектировании нового программного решения была поставлена задача выбрать язык и фреймворк. По результатам проведенного исследования был выбран язык Go, как обеспечивающий высокую производительность вместе со скоростью разработки, а также фреймворк Flamingo для реализации принципов Domain Driven Design. Всем, кому интересно узнать, что же за птица такая Flamingo, приглашаю под кат.

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

Для .Net, например, есть ASP.NET Boilerplate (https://aspnetboilerplate.com/), полностью реализующая все компоненты DDD – Entity, Value, Repository, Domain Service, Unit of Work и еще много всего. Но мы для одной из своих внутренних информационных систем используем Go. 

Мы решили использовать фреймворк Flamingo, распространяемый под лицензией MIT. Он разработан немецкой компанией AOE GmbH в 2018 году и к настоящему моменту “дорос” до версии 3.4 и до 331 звезды на Github. Flamingo используется в информационных системах аэропортов Окланда, Франкфурта и Хитроу, а также в T-Mobile.

Читать далее
Total votes 5: ↑4 and ↓1 +3
Views 3.9K
Comments 11

У вас нет причин использовать alpine для python-проектов

Python *DevOps *

По мотивам моего доклада на PyCon "Контейнеризация Python без боли". На своей практике я постоянно сталкиваюсь со спорами какой базовый образ лучше использовать для проектов: alpine или debian. Аргументы есть и у той, и у другой стороны, но мне это настолько надоело, что я решил сам разобраться и наконец-то поставить точку. В конце концов "В наше время верить нельзя никому, даже себе. Но мне - можно." (с)

Читать далее
Total votes 19: ↑17 and ↓2 +15
Views 4.1K
Comments 19

Честные модули внутри PHP: теперь они существуют

VK corporate blog Конференции Олега Бунина (Онтико) corporate blog Open source *PHP *Perfect code *

Низкий порог входа и строгость языка программирования — вещи обычно несовместимые. Потому что ты либо, как Rust, бьёшь по рукам borrow checker’ом — либо, как PHP, позволяешь не задумываться о типах и быстро прототипировать. 

На самом деле, если писать код грамотно, это становится неважным и язык перестаёт иметь значение. Архитектура важнее языка, и хороший код на PHP ничем не отличается от аналогичного кода на любом другом ООП-языке. Другое дело, что возможность «любой домохозяйке» писать на PHP сопровождается и риском наворотить полное неподдерживаемое безобразие. Поэтому нам нужны тайпхинты, линтеры, статические анализаторы и подобные инструменты. 

Но в PHP есть и ещё один изъян: в нём любой класс, функция или константа — глобальны. Можно создать класс из любого места в коде, и нет способа скрыть его или сделать деталью реализации где-то в отдельной папке. Иными словами, в PHP нет того, что в других языках называется модулями.

Наша новая open-source разработка называется Modulite и внедряет в PHP модули. Это сквозная технология: мы внедряемся в IDE, в PHPStan, в KPHP, в CI, в Composer — и делаем так, будто бы модули нативно есть в языке PHP.

Читать далее
Total votes 61: ↑58 and ↓3 +55
Views 5.8K
Comments 10

Как мы интегрировали и настроили для работы Conventional Commits в PHPStorm

PHP *Git *Version control systems *Project management *

Поднялся вопрос стандартизации коммитов в команде. До этого были такие правила, мы пишем номер задачи и через тире описание того, что было сделано кратко. Номер задачи берется из номера issue. Например: #1 - реализован функционал сборки прода. Но, это надоело и стало как-то неудобно, когда у нас есть четкое деление задач на фиксы, фичи и так далее.

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

В нашей команде принято по максимуму IDE и его возможности. То есть, коммиты мы делаем не через консоль, а через встроенные утилиты. Поэтому, сразу пошли искать плагины, которые есть в PHPStorm и нашли вот эти 2 важных плагина: Conventional Commit и Git Commit Template. После их установки видим новые кнопки в окне коммита:

Читать далее
Total votes 7: ↑6 and ↓1 +5
Views 1.4K
Comments 9

SimpleX – первый мессенджер без идентификаторов пользователей

Privacy Accelerator corporate blog Information Security *Instant Messaging *Open source *Start-up development

Сегодня рассказываем про анонимный мессенджер SimpleX, который написан на Haskell и позволяет, в том числе, использовать сеть Tor для общения.  

​​SimpleX – не только один из немногих мессенджеров, который не собирает данные пользователей, но и единственный на сегодняшний день мессенджер, который не использует идентификаторы для профилей пользователей, даже случайные числа. Также он полностью open source, и каждый может принять участие в его разработке.

Читать далее
Total votes 40: ↑39 and ↓1 +38
Views 17K
Comments 53

Создаем аватарки с помощью нейросети Stable Diffusion и DreamBooth

Python *Machine learning *
Sandbox

"Портрет, сделанный нейросетью" - все чаще читаем в новостной ленте, и каждый хотел бы сделать себе подобный, но удобные сервисы, просящие монету, или желание разбираться самому, отталкивают. Не нужно ничего скачивать. Час времени и каждый сможет сделать себе аватарку!

Читать далее
Total votes 17: ↑15 and ↓2 +13
Views 20K
Comments 2

Централизация логирования микросервисов с Graylog

OTUS corporate blog Microservices *

Трассировка и анализ ошибок в микросервисной архитектуре без средств централизации логирования обычно причиняет неудобства, поскольку для понимания “что и на каком микросервисе умерло” приходится обходить микросервисы по очереди, сверять и сопоставлять данные в логах. В данной статье рассматривается централизация логирования с помощью Graylog, с примерами кода на Python.

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

Читать далее
Total votes 11: ↑9 and ↓2 +7
Views 6K
Comments 0

DBA: хранение списков — таблица, массив, строка?

Тензор corporate blog PostgreSQL *SQL *Database Administration *ERP-systems *

Достаточно часто при проектировании схемы БД возникает задача сохранить по основной сущности некоторый набор простых второстепенных данных.

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

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

Давайте посмотрим, какие варианты хранения таких данных мы можем использовать в PostgreSQL, и какой из них окажется в разы более эффективным.

Читать далее
Total votes 22: ↑18 and ↓4 +14
Views 7K
Comments 21

Как тестировать методы REST API

IT systems testing *API *Web services testing *Mobile applications testing *
✏️ Technotext 2022

Когда ручного тестировщика впервые просишь проверить метод REST API, того охватывает паника: «Как это делать? Я вообще почти ничего не знаю про API. Что делать? Как это тестировать?»

Спокойно. Без паники =) Я уже рассказывала на простом языке, что такое API. А сегодня я расскажу о том, как его тестировать. На самом деле почти также, как GUI: в первую очередь это тест-дизайн и придумывание проверок, а потом уже всякие API-штучки. Но и про них не стоит забывать.

Я дам вам чек-лист, к которому вы сможете обращаться потом — «так, это проверил, и это, и это. А вот это забыл, пойду посмотрю!». А потом мы обсудим каждый пункт — зачем это проверять и как.

После теории будет практика! Для неё возьмем метод doRegister системы Users — он находится в открытом доступе, можете дергать по ходу чтения и проверять =) 

Читать далее
Total votes 14: ↑11 and ↓3 +8
Views 27K
Comments 17

Как сделать питч-дек и запитчить всё на свете

Venture investment Start-up development Business Models *Presentations
Tutorial

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

В этом материале разбираемся:

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

Читать далее
Total votes 15: ↑12 and ↓3 +9
Views 2.7K
Comments 6

Как с нуля разработать систему аналитики для телеграм бота?

Python *PostgreSQL *Project management *Start-up development Mobile App Analytics *

Всем привет! Мы команда Dev’s Battle. В этом посте расскажем о том, как мы создавали для нашего продукта (MMO RPG игра в телеграм) собственную систему аналитики

Читать далее
Total votes 6: ↑4 and ↓2 +2
Views 2.9K
Comments 4

Оптимизация Dockerfile для уменьшения размера и быстрой сборки образов

FirstVDS corporate blog System administration *Server optimization *

У каждого образа Docker есть свой размер, который он занимает на жёстком диске. Порой бывает так, что контейнер с запущенным приложением на языке программирования Go, который содержит в себе всего лишь одну строчку с выводом фразы «Hello, world!» может занимать сотни Мб, в то время как существуют образы содержащие легковесные ОС весом всего лишь 5 Мб (alpine).

В этой статье будут подробно рассмотрены способы оптимизации файла Dockerfile с целью уменьшения размера готового образа и ускорения его сборки.

Читать далее
Total votes 31: ↑27 and ↓4 +23
Views 7K
Comments 27

JSON:API 一 это не JSON API

Учи.ру corporate blog Singula Team corporate blog Ruby *Programming *Conferences

Это третий доклад с прошедшей Ruby Russia. В нём Александр Меркулов, team lead UCHI.ru рассказывает, как его команда решила поэкспериментировать с JSON:API, и что из этого вышло.

Читать далее
Total votes 13: ↑12 and ↓1 +11
Views 2K
Comments 4

Information

Rating
639-th
Date of birth
Registered
Activity