Search
Write a publication
Pull to refresh
78
0
Роман @RomeoGolf

инженер-программист

Send message

ИИ-помощник редактора на Хабре: семь раз вайб-код — один раз поймешь

Level of difficultyEasy
Reading time18 min
Views2.1K

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

Со временем число текстов в блоге YADRO неуклонно растет. А моя оперативная память редактора остается неизменной: пара-тройка последних месяцев плюс несколько ярких вспышек пораньше. Зато растет FOMO — тревога, что я мог бы найти новые возможности для развития блога, будь мой фокус шире. Поможет ли здесь искусственный интеллект? «Отличный кейс!» — ответила ChatGPT, и я начал первую версию проекта.

Читать далее

Полное руководство по всем видам тестирования

Level of difficultyEasy
Reading time21 min
Views13K

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

Читать далее

Регулярные выражения простыми словами. Часть 2

Level of difficultyEasy
Reading time10 min
Views27K

Разработчики делятся на три типа: те, кто уже понимает регулярные выражения и порой решает сложные задачи одной строкой; те, кто все еще боится их и всячески избегает; и те, кто уже прочитал первую часть этой серии статей и полон оптимизма разобраться с этими магическими письменами. Эта статья специально для третьих, чтобы им было проще стать первыми.
Читать дальше →

Регулярные выражения простыми словами. Часть 1

Level of difficultyEasy
Reading time7 min
Views57K

Разработчики делятся на два типа: тех, кто уже понимает регулярные выражения и порой решает сложные задачи одной строкой, и тех, кто все еще боится и всячески их избегает. Эта статья специально для вторых, чтобы им было проще стать первыми. Она либо поможет преодолеть «регекспофобию», либо усугубит ее. В любом случае, добро пожаловать под кат.
Читать дальше →

Регулярные выражения простыми словами. Часть 3

Level of difficultyEasy
Reading time11 min
Views9.3K

Разработчики делятся на три типа: тех, кто уже понимает регулярные выражения и порой решает сложные задачи одной строкой; тех, кто все еще боится их и всячески избегает; и тех, кто уже прочитал первую и вторую части этой серии статей и полон оптимизма разобраться с этими магическими письменами. Эта статья специально для третьих, чтобы обратно их напугать, ведь в этой части мы рассмотрим одну из самых сложных, но в буквальном смысле захватывающих тем.
Читать дальше →

Преобразование JSON в объекты C++ на этапе компиляции: демонстрация возможностей принятой в C++26 рефлексии

Level of difficultyMedium
Reading time8 min
Views7.8K

На прошлой неделе в Софии, столице Болгарии, закончилась работа над стандартом C++26, который помимо контрактов, std::execution и всего прочего теперь включает и рефлексию.

В этой статье будет продемонстрирован один из примеров её использования: преобразование строк в формате JSON в объекты C++ на этапе компиляции.

Читать далее

На сколько же медленнее произвольный доступ на самом деле?

Level of difficultyEasy
Reading time11 min
Views3.3K

Как вы, наверно, знаете, из-за наличия в компьютере различных кэшей (L1, L2, L3...) и того, что операции с памятью выполняются с линиями кэша размером примерно 64 байт каждая, для обеспечения максимальной производительности мы должны писать программы, обеспечивающие локальность.

(Разумеется, диск здесь не показан)

Но насколько хорошо вы это осознаёте? Допустим, у нас есть массив чисел с плавающей запятой и массив индексов первого массива. Есть программа, складывающая числа из первого массива в порядке, определяемом вторым массивом. То есть в этом примере мы будем складывать ε + α + δ + ζ + β + γ в таком порядке:

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

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

2. Сколько в среднем тратится на каждый элемент в порядке от первого до последнего?

3. Насколько медленнее произвольный порядок последовательного в случае массивов, умещающихся в RAM?

4. Насколько медленнее произвольный порядок последовательного в случае массивов, не умещающихся в RAM?

5. Достаточно ли стандартного тасования Фишера-Йейтса для массивов перемешанных индексов для получения произвольного порядка?

6. Насколько медленнее порядок от первого до последнего в случае массивов, не умещающихся в RAM, при использовании файлов с отображением в память?

7. Максимально ли быстры файлы с отображением в память?

Если вы уже знаете ответы на эти вопросы, то это замечательно! Если же нет, то делайте ваши предположения и проверьте их, прочитав пост.

Читать далее

Галопом по архитектуре. Часть 3. Когда руки чешутся все переделать

Level of difficultyHard
Reading time24 min
Views5.9K

Как вы думаете, нужно ли архитектуру на вашем текущем проекте подвергнуть масштабному пересмотру и исправлению? Ставлю на то, что большинство читателей ответят положительно. И эта часть именно про это. В ней мы рассмотрим:

1. Когда сложившаяся архитектура подлежит масштабным изменениям.

2. Что не менее важно, когда лучше оставить, как есть.

3. Ключевые признаки проблем в архитектуре.

4. Основные способы исправления таких проблем.

Но для начала мы вспомним, что было в предыдущих сериях. В первой части мы прошлись по теории и выяснили:

1. Что техническая реализация заметно влияет на успехи бизнеса, хоть и не очень критично;

2. Что из всех аспектов технической реализации наибольший вклад в успех вносит именно архитектура;

3. Что самое важное свойство архитектуры — максимальная независимость команд друг от друга;

4. Что это свойство вытекает напрямую из двух фундаментальных характеристик программного обеспечения: coupling и cohesion, где coupling — характеристика связи двух точек системы/кодовой базы; а cohesion — характеристика того, насколько плотно упакованы такие связи в компоненты.

Во второй части мы уже перешли к практике построения архитектуры с нуля. Мы узнали:

1. Что попытки угадать с архитектурой до старта проекта обычно проваливаются.

2. Что маленькие команды работают буквально в разы эффективнее, чем большие.

3. Что лучший способ разделить софт между командами - делать это постепенно. Начать с одной команды и уже затем дробить систему по обнаруженным в процессе разработки границам.

Теперь перейдем к вопросу, что же делать, если «все уже украдено до нас».

Читать далее

Об ошибках округления и способах борьбы с ними

Level of difficultyMedium
Reading time6 min
Views4.9K

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

Читать далее

Плохие JOIN’ы: приемы, которые (нечаянно) кладут прод

Level of difficultyEasy
Reading time5 min
Views26K

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

В этой статье разбираем один из самых коварных способов убить базу — плохие JOIN'ы. Казалось бы, простое дело: связать пару таблиц — и вперёд. Но если в ON засунуть LOWER(email), забыть про индексы или перепутать LEFT JOIN с INNER — сервер мигом начнет дышать на ладан.

Читать далее

15 минут — и у тебя бесплатная ИИ-модель для генерации кода, текста, чтения иллюстраций

Level of difficultyEasy
Reading time11 min
Views66K

Я устал платить за GPT и думать, куда уходят данные. Нашёл Gemma 3 12B от Google и LM Studio — установил всё за 15 минут. В статье — подробная инструкция и советы, как запустить свою Gemma даже без опыта в ML.

Читать далее

Конструктор шины PCIe

Level of difficultyEasy
Reading time3 min
Views5.6K

Приводится решение для снятия ограничений на количество дисков и контроллеров шины PCIe, подключаемых к материнской плате. В качестве примера взят компактный компьютер, у которого для подключения дополнительных дисков доступен только один M.2

Читать далее

Сложно о простом. Как работает интернет. Часть 5. Будущее (ли?) сетей: IPv6, SDN и Overlay сети

Level of difficultyEasy
Reading time18 min
Views7.7K

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

В предыдущей статье я рассказывал о различиях LAN, MAN, WAN, что такое сети Clos и иерархию операторов.

В этом цикле я не стану учить вас настраивать оборудование и проектировать сети. Я расскажу об основных (и не только) принципах построения сети, а также о функционировании сети и сетевых протоколов в стеке TCP/IP.

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

Читать далее

RFID-метки для программиста: как они устроены и как с ними работать

Level of difficultyHard
Reading time7 min
Views5.6K

RFID-технология давно стала частью повседневности — мы встречаем её в проездных, пропусках, банковских картах, системах доступа и даже в метках на одежде. Но что на самом деле происходит, когда мы подносим метку к считывателю? Как устроена эта метка внутри? Какие данные она хранит, и как программа может их прочитать или изменить?

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

Читать далее

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

Level of difficultyEasy
Reading time15 min
Views23K

Магии не существует, а есть способы планирования, которые помогают работать эффективнее и продвигаться в больших и сложных делах. Мы собрали 42 способа, инструмента, подхода к планированию: как базовые, так и новаторские. Разберем, как ими пользоваться и насколько они хороши.

Читать далее

Почему C++ считает мой класс копируемым, если его нельзя скопировать?

Level of difficultyMedium
Reading time3 min
Views6.2K

Рассмотрим следующий сценарий:

template<typename T>
struct Base
{
// Есть конструктор по умолчанию
Base() = default;

// Некопируемый
Base(Base const &) = delete;
};

template<typename T>
struct Derived : Base<T>
{
Derived() = default;
Derived(Derived const& d) : Base<T>(d) {}
};
// Это assertion выполняется?
static_assert(
std::is_copy_constructible_v<Derived<int>>);

Почему выполняется это assertion? Очевидно, что скопировать Derived<int> нельзя, ведь при этом мы попытаемся скопировать некопируемый Base<int>. И в самом деле, если попробовать скопировать его, то мы получим ошибку.

Читать далее

Про обогреватели

Level of difficultyEasy
Reading time25 min
Views24K
Хватит! Хватит мёрзнуть и терпеть бредни копирайтеров про электрические отопительные приборы!

Зима (долго готовил, уже лето) располагает поговорить про обогреватели. Разберёмся, чем отличаются разные обогреватели, зачем их столько напридумывали, и где нам маркетологи вместе с копирайтерами пытаются продать барахло втридорога. Внимание: текст писал злой инженер — могут попадаться формулы.

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

Функциональное и объектно-ориентированное проектирование

Level of difficultyMedium
Reading time6 min
Views7.2K

В современном обучении программированию, как правило, основное внимание уделяется парадигме объектно-ориентированного программирования (OOP) и вытекающей из неё методологии объектно-ориентированного проектирования (OOD). Определённый ренессанс в наше время испытывает парадигма функционального программирования, но практически никогда в связке с ней не рассматривается функциональное проектирование. Попытаемся осветить наше видение этих вопросов.

Читать далее

Эти CSS-техники устарели

Level of difficultyMedium
Reading time6 min
Views20K


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


Общаясь с коллегами, я заметил, что они незнакомы с последними возможностями CSS. Как обычно, у всех свои причины. У кого-то много повседневной рутины. Кому-то в принципе неинтересно, что нового происходит в CSS. А кто-то по привычке использует подходы десятилетней давности и ему норм.


Как фанату CSS, мне грустно. Сколько же прикольных вещей проходит мимо них. Да и их код может быть меньше, надёжнее и проще для понимания. В общем, я собрал несколько фрагментов кода, которые были популярны давным-давно, и переписал их с помощью новых возможностей CSS.


Давайте посмотрим, что я вам подготовил.

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

Information

Rating
3,682-nd
Location
Свердловская обл., Россия
Date of birth
Registered
Activity