Pull to refresh
19
0
Vladimir @mvs

Creator, founder, developer

Send message

Брифинг по дженерикам Go 1.18

Reading time9 min
Views4.9K

Добавление дженериков (generics) в Go (ранее Golang) — самое значительное изменение, которое он претерпел, с момента его релиза. Сообщество Go просило добавить дженерики с самых первых дней языка, и мы, наконец, дождались.

Реализация дженериков в Go сильно отличается от традиционных реализаций, которые можно найти в C++, но все-таки имеет некоторое сходство с реализацией дженериков в Rust. В этой статье вашему вниманию представлен обзор, нацеленный помочь вам сформировать понимание дженериков Go и продемонстрировать, как с ними работать.

Читать далее

Clean Architecture, DDD, гексагональная архитектура. Разбираем на практике blog на Symfony

Level of difficultyMedium
Reading time91 min
Views100K

Всем привет! Давайте знакомиться ;) Я Аня, и я php разработчик. Основной стек - Magento. С недавних пор начала посматривать налево на Symfony и писать свои Pet Projects на этом фреймворке.

Мне всегда нравилось писать решения которые легко бы расширялись / адаптировались под требования бизнеса (заказчика). И мне всегда хотелось сделать это более 'правильно' и красиво. Так я и познакомилась с понятиями чистой архитектурой.

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

Для нетерпеливых, вот прямая ссылка на гитхаб

Читать далее

FAQ про SLO и SLI

Level of difficultyMedium
Reading time8 min
Views9.1K

После прохождения одного из серии собеседований на SRE мне анонсировали, что на следующем будут задачки про SLO/SLI. Задач не было, но в ходе подготовки я сделал тематический конспект нескольких материалов, посвященных этой теме. Возможно, он будет вам полезен.

Понятно, что основной источник информации по теме – это Google SRE Book, но книга была опубликована давно, и мне было интересно, что по этой теме есть нового. В основном конспект основан на четырех материалах от Google: Implementing SLO, Art of SLOs (slides), SLO Document, Setting SLO Step by Step. Впоследствии я дополнил их несколькими интересными идеями из выступления Ивана Круглова.

Буду рад замечаниям и дополнениям.

Читать далее

Свой Firebase за 7$ или практический опыт внедрения Appwrite как сервера для мобильного приложения

Level of difficultyEasy
Reading time7 min
Views15K

Appwrite — это открытое BaaS решение которое содержит массу готовых модулей, основные из которых это база данных, хранилище, авторизация и функции. В рамках поста я расскажу какими функциями обладает Appwrite и личном опыте интеграции решения.

Читать далее

Минэкономразвития отменило требования к безопасности госсайтов

Level of difficultyMedium
Reading time5 min
Views3.8K
Как Минэкономразвития опубликовало фальшивый проект НПА, чтобы отменить требования к безопасности сайтов ФОИВ и доступности размещенной на них информации.


Минэкономразвития демонстрирует общественности проект НПА: легким движением руки 4 страницы превращаются… превращаются 4 страницы… всего в 2!
Читать дальше →

Идеальный лидер. Как сочетать в себе диктатора, формалиста, либерала, демократа и создать эффективную команду разработки

Reading time8 min
Views15K

Привет, Habr! На связи Андрей Непряхин, СТО компании AGIMA. В этой статье я расскажу о том, какие стили лидерства существуют, как их нужно применять на различных стадиях развития команды.

Читать далее

Как мы провели мероприятие по оптимизации использования железа и что от него получили

Level of difficultyEasy
Reading time8 min
Views2.7K

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

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

Читать далее

Пишем умный поиск по коду с Open AI

Level of difficultyMedium
Reading time6 min
Views9.9K

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

Читать далее

Гайд по эвент-сорсингу

Level of difficultyMedium
Reading time19 min
Views19K

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

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

Читать

Планировщик задач: не замораживаем вкладку при открытии страницы

Reading time21 min
Views6.2K

Современные сайты — это сложные проекты, требующие много времени на обработку JavaScript. А современные пользователи — это требовательные люди, готовые убежать к конкуренту при ощущении «что-то сайт подтормаживает». Такое ощущение у пользователя может вызываться большим Total Blocking Time, когда он подолгу не может взаимодействовать со страницей.

Что в такой ситуации делать? На нашей конференции HolyJS Виктор Хомяков из Яндекса рассказал о том, как там делали инициализацию скриптов на странице поиска более дружественной к человеку и не блокирующей UI. А также о том, как и вам уменьшить TBT, не ухудшая другие показатели.

Доклад понравился зрителям, поэтому теперь для Хабра мы сделали текстовую версию. Далее повествование идёт от лица Виктора.

Читать далее

PostgreSQL: настройка и оптимизация производительности. Часть 1

Level of difficultyMedium
Reading time9 min
Views23K

Данная статья посвящена способам повышения производительности PostgreSQL и EDB Postgres Advanced Server (EPAS) с 10 по 13 версии. Мы начнём с аппаратного обеспечения и будем двигаться вверх по стеку, оставив напоследок SQL-запросы. 

Читать далее

А вы давно заглядывали внутрь ваших зависимостей?

Level of difficultyHard
Reading time8 min
Views18K

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

Последние истории с node‑ipc и CTX заставили задуматься о том, что лежит внутри этих репозиториев. Оказалось, не только легитимный код. Там есть и попытки заработать без особых усилий, просто собирая информацию, и даже полноценные стиллеры. Причем негативных изменений стало больше после известных событий.

За подробностями о сканировании пакетов npm и PyPI добро пожаловать под кат.

Читать далее

CSS-селектор :has() и междустрочные интервалы в длинных текстах

Reading time6 min
Views4.4K


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

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

В какой сказке встречаются Баба Яга и Колобок или сказ о том как мы таск-трекер писали

Reading time15 min
Views5.1K

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

Итак, знакомьтесь. Тасктрекер "Яга", целимся импортозаместить Atlassian Jira. Система управления знаниями "Кощей" - закрывает нишу Confluence. "Колобок" (как первый релиз) - вариант более простого трекера (не всем нужна функциональность Jir'ы) - по мотивам Trello.

Читать далее

Простой бенчмарк для PHP приложений

Reading time5 min
Views5.2K

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

Для решения этой тривиальной задачи был выпущен пакет "Runtime Comparison", позволяющий сравнивать время выполнения кода без лишних затрат.

Читать далее

Как мы исправили древний сервис и ускорили вдвое поставку обновлений

Reading time7 min
Views1.6K

Недавно нам довелось перевести на актуальные рельсы устаревший сервис. На этой махине у заказчика завязано много процессов — от таргетированной рекламы фармпрепаратов до доставки пробных образцов на реальный адрес. Но она не обновлялась 8 лет, и работала на древнем фреймворке Yii 1, который не поддерживается с 2015 года. Даже незначительные изменения нужно было вносить 3 недели.

Меня зовут Никита Швыряев, я руководитель отдела разработки компании «СмартАп Технолоджи». Этот проект мы перепиливали 4 месяца. Расскажу подробно, как это было, и что получилось.

Читать далее

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

Reading time12 min
Views4.7K

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

Читать далее

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

Reading time11 min
Views11K

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

Читать далее

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

Reading time8 min
Views20K

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

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

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

Погнали!

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

Reading time9 min
Views2.1K

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

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

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

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

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

Читать далее

Information

Rating
Does not participate
Date of birth
Registered
Activity