Pull to refresh
62
0

Программист

Send message

Обзор нововведений в C# 10

Reading time6 min
Views36K

В данной статье мы рассмотрим новую версию языка C# 10, которая включает в себя небольшой список изменений относительно C# 9. Ниже приведены их описания вместе с поясняющими фрагментами кода. Давайте их рассмотрим.

Читать далее

Разработка системы заметок с нуля. Часть 3: знакомство с Neo4j, работа над микросервисами CategoryService и APIService

Reading time18 min
Views6.4K

Мы продолжаем разрабатывать систему заметок с нуля. В третьей части серии материалов мы познакомимся с графовой базой Neo4j, напишем CategoryService и реализуем клиента к новому сервису в APIService.

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

Во второй части мы спроектировали и разработали RESTful API Service на Golang cо Swagger и авторизацией.

Теперь разработаем сервис управления категориями CategoryService. Категории мы делаем в виде дерева с большой вложенностью, в теории — бесконечной. Сервис будем разрабатывать на языке Python, а в качестве хранилища используем Neo4j.

Читать далее

Как привести в порядок Core Web Vitals за три дня, если у тебя Wordpress

Reading time7 min
Views4.4K


Если пару лет назад инструмент PageSpeed показывал оценку близкую к 100, то сегодня она может быть даже не 50, а 39, как в случае моего Pet-проекта. Большинство изменений, о которых пойдет речь ниже, связано с отказом от устаревающих решений.
Читать дальше →

Как из одной базы данных сделать 10 разных, храня только инкременты: обзор решения

Reading time3 min
Views7.2K
История очень простая: есть большая продуктовая база данных. Она нужна пяти-шести командам разработки, тестировщикам и другим командам. Можно сделать штук 10 разных инстансов + БД, но обычно это дорого и долго. Гораздо лучше взять одну мастер-базу и хранить её инкременты для тех команд, которые с ней работают. Для этого есть специальные утилиты. Если лет пять назад они только начинали распространяться в России, то теперь их использование — абсолютно нормальная практика.

Давайте посмотрим, как это работает, на примере Actifio:

image
Слева — Shapshots, на их основе можно создавать виртуальные БД (VDB).

Итак, берём продуктовую базу и начинаем её клонировать. Нужно это для того, чтобы, в частности, получать тестовую базу за 15 минут, а не за две недели (а бывает и дольше), как обычно в крупных компаниях.
Читать дальше →

Автоматическая виртуализация рендеринга произвольной вёрстки

Reading time29 min
Views26K

Здравствуйте, меня зовут Дмитрий Карловский и я.. прибыл к вам из недалёкого будущего. Недалёкого, потому что там уже всё и все тормозят. Писец подкрался к нам незаметно: сначала перестали расти мощности компьютеров, потом пропускная способность сетей. А пользователи… они продолжали генерировать контент как не в себя. В итоге, за считанные годы UX интерфейсов деградировал настолько, что ими стало невозможно пользоваться и многие пользователи поспешили перейти на облачный стриминг своих браузеров, которые работают на суперкомпьютерах, принадлежащих корпорациям, которые не дают людям устанавливать на них блокировщики рекламы. Поэтому я пришёл к вам именно сейчас, в этот момент, когда проблема уже заметна, но ещё можно всё исправить, пока не стало слишком поздно.

Лонгрид

Полезные бесполезные фичи C#

Reading time5 min
Views12K

В 53 выпуске подкаста DotNet & More (site, youtube) мы обсуждали фичи C# 10 и разбирали их применимость в будущем. И уже потом возник вопрос: все ли языковые конструкции из C#1, 2, 3, 4 и т.д. мы применяем? И даже если они безбожно устарели, существуют ли ситуации, в которых им найдется применение?

Читать далее

Переход с iptables на nftables. Краткий справочник

Reading time18 min
Views160K
image

В Debian теперь нет iptables. Во всяком случае, по умолчанию.

Узнал я об этом, когда на Debian 11 ввёл команду iptables и получил “command not found”. Сильно удивился и стал читать документацию. Оказалось, теперь нужно использовать nftables.

Хорошие новости: одна утилита nft заменяет четыре прежних — iptables, ip6tables, ebtables и arptables.

Плохие новости: документация (man nft) содержит больше 3 тысяч строк.

Чтобы вам не пришлось всё это читать, я написал небольшое руководство по переходу с iptables на nftables. Точнее, краткое практическое пособие по основам nftables. Без углубления в теорию и сложные места. С примерами.
Читать дальше →

Сравнение подходов к реализации распределенных транзакций для микросервисов

Reading time21 min
Views45K

Как архитектор-консультант в Red Hat, я имел возможность поработать над множеством проектов для наших клиентов. У каждого из них есть свои особенности, которые, однако, имеют некоторые общие черты. Большинство клиентов хотят знать, как скоординировать запись в несколько систем одновременно. Ответ на этот вопрос обычно включает подробное объяснение двойной записи, распределенных транзакций, современных альтернатив, а также возможных сценариев сбоев и недостатков каждого подхода. Как правило, именно в этот момент заказчик понимает, что разделение монолитного приложения на микросервисы - долгий и сложный путь, обычно требующий компромиссов.

Читать далее

Запросы в PostgreSQL: 5. Вложенный цикл

Reading time19 min
Views28K

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

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

Читать далее

Аналоговое и цифровое питание. Мифы и реальность

Reading time8 min
Views38K

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

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

Параметры операционных усилителей. Как измерить и какие возникают сложности?

Reading time10 min
Views40K

Операционный усилитель – одна из базовых схем аналоговой электроники, на основе которой можно строить сложные системы. Данный элемент присутствует почти во всех интегральных микросхемах: управление питанием (AC/DC, DC/DC, LDO…), АЦП, ЦАП, интерфейсы, синтезаторы частот, микроконтроллеры и тд. Система, в которой будет использоваться усилитель накладывает определенные ограничения на его параметры. Как измерить параметры усилителя и какие с какими трудностями можно столкнуться?

Читать далее

Компоненты-конструкторы: мощь ng-content в Angular

Reading time9 min
Views18K

Проекция контента — одна из базовых возможностей Angular, о которой слышали почти все. А с недавних пор по ней появилась и хорошая официальная документация. Тем не менее в реальных задачах разработчики часто обходят ng-content стороной, прибегая к более сложным и перегруженным решениям и усложняя дальнейшее использование и поддержку компонента.

В этой статье я хотел бы показать несколько типовых кейсов для ng-content при разработке многократно используемых компонентов. А еще — рассказать о преимуществах, которые они могут нам дать.

Давайте посмотрим

Пользовательские шаблоны и расширения для Visual Studio под проект (Часть 1: шаблоны элементов)

Reading time6 min
Views9.4K

В магазине Visual Studio есть множество различных расширений на все случаи жизни. Есть в сети различные их подборки, которые могут упростить жизнь в общих или конкретных случаях. Однако я, почему-то, никогда не встречал шаблоны или расширения заточенные под проект.

Читать далее

Критерии качества вёрстки 2021

Reading time32 min
Views52K

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

С тех пор в разработке интерфейсов произошло море изменений: сначала в продакшн пришли флексы, потом подтянулись гриды, умер IE, все переехали из Фотошопа в Фигму, и много чего ещё. Каждое это изменение влияло на наши критерии, и мы постоянно их дорабатывали.

Сейчас пришло время обсудить с сообществом обновлённые критерии.

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

Читать далее

Оптимизация .NET приложений: большой результат маленьких правок

Reading time19 min
Views21K

0852_NETAppsPerf_MinChangesMajorRes_ru/image1.png


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

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

Разработка 64-битного графического UEFI-приложения в Visual Studio

Reading time9 min
Views18K
Зимой в блоге RUVDS было несколько статей о написании загрузчиков для «классического» BIOS, в т.ч. симпатичная графическая демка, целиком помещающаяся в загрузочном секторе и работающая в VGA-режиме 320×200. Комментаторы справедливо отмечали, что в наступившем 2021 г. нет смысла осваивать это лютое легаси;
а вот статей про “Hello, World” на UEFI да с графикой действительно не хватает. Больше того — я таких вообще не припомню.» (MinimumLaw)
Под катом мы пошагово перепишем ту бутсекторную демку под UEFI, и она будет работать в полноцветном видеорежиме с высоким разрешением. С другой стороны, вместо 512 байт она будет занимать несколько десятков КБ.

Когда используется Power Delivery, и что происходит при установлении соединения между блоком питания и устройством

Reading time6 min
Views41K

В прошлый раз я рассказывал про минимальный набор компонентов, который может быть включён в устройство для поддержки базовых функций USB-C. Но бывают ситуации, когда этих базовых возможностей недостаточно – например, нужно использовать несколько профилей напряжения, чтобы блок питания от одного устройства подходил к другому. Или же есть необходимость подстроить сами профили. Или просто нужна бОльшая мощность питания (в случае с USB-C доступный максимум – 15 Вт). Во всех этих ситуациях на помощь придёт стандарт Power Delivery. Он, например, используется в линейке зарядных устройств Apple – профили с бОльшим напряжением доставляют бОльшую мощность к устройству и позволяют его быстро заряжать. В нашем смарт-экране SberPortal есть узлы, которые требуют значительной мощности питания – прежде всего это высокопроизводительная система на кристалле (SoС) и акустика. Один только звук требует около 30 Вт. Поэтому при разработке устройства пришлось усложнить систему питания и реализовать Power Delivery. Об этом стандарте и пойдёт ниже речь.

Также разберёмся в его особенностях и посмотрим, как со временем изменился способ передачи данных в стандарте. А ещё я расскажу и покажу с помощью анализатора протокола, что происходит при установлении подключения в устройствах, на примере ноутбука с Power Delivery. Затем посмотрим, как мы реализовали PD в нашем смарт-экране SberPortal.

Читать далее

Руководство Google по стилю в C++. Часть 1

Reading time4 min
Views69K
Часть 1. Вступление
Часть 2. Заголовочные файлы
Часть 3. Область видимости
Часть 4. Классы
Часть 5. Функции
Часть 6. Специфика Google
Часть 7. Ещё возможности C++
Часть 8. Именование
Часть 9. Комментарии
Часть 10. Форматирование
Часть 11. Исключения из правил

Изменения 2019-2024


Все мы при написании кода пользуемся правилами оформления кода. Иногда изобретаются свои правила, в других случаях используются готовые стайлгайды. Хотя все C++ программисты читают на английском легче, чем на родном, приятнее иметь руководство на последнем.
Эта статья является переводом части руководства Google по стилю в C++ на русский язык.
Исходная статья (fork на github), обновляемый перевод.
Это вступительная часть руководства, в которой рассматриваются общие вопросы «Зачем?»
Также после перевода будет несколько ответов на возможные вопросы.
Читать дальше →

Горячая перезагрузка .NET: новая возможность для редактирования кода во время выполнения приложений

Reading time6 min
Views11K

Сегодня мы с радостью представляем возможность «горячей перезагрузки» для .NET, которая уже доступна в Visual Studio 2019 16.11 (предварительная версия 1), а также в .NET 6 (предварительная версия 4) через инструмент командной строки dotnet watch. В этой статье мы расскажем, что такое горячая перезагрузка .NET, как приступить к ее использованию, как мы планируем развивать эту возможность в будущем, а также какие виды правок кода и языки поддерживаются на данный момент.

Читать далее

Пишем первый плейбук Ansible

Reading time10 min
Views83K

Статья подготовлена на основе уроков из открытой темы "Установка LEMP стека с помощью Ansible" курса по Ansible от Слёрм. Автор – Всеволод Севостьянов, Lead Engineer в Vene.io (Affiliate marketing solution). Первые две темы курса доступны на Youtube.

Материал этого урока будет интересен тем, кто разобрался с установкой Ansible и готов написать свой первый плейбук. Результатом будет плейбук, устанавливающий nginx на удалённой машине.

Читать далее

Information

Rating
4,551-st
Date of birth
Registered
Activity