← 17 марта 2025     

18 марта 2025 на Хабре были опубликованы 23 статьи.

Как быстро найти цены на совместимую с Home Assistant бытовую технику: мой опыт автоматизации поиска цен

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

Недавно захотел подобрать себе робот-пылесос, а на сайте Home Assistant как обычно указаны только обобщенные интеграции. При этом на сайте Алисы приведены тысячи конкретных совместимых устройств, правда без цены и даже без указания выпускается ли до сих пор эта модель или нет.

И тут мне пришла в голову идея: поместить эти совместимые устройства в Google Таблицу, а затем написать Google Apps Script, который через поиск найти цены на все эти устройства, а затем я уже выберу конкретное устройство исходя из моего бюджета.

Поиск цен через Гугл Таблицу

Год успешной работы тестировщиком: мифы, усвоенные на курсах, и реальность

Жизнь каждого человека складывается по-разному: кто-то с 16 лет уже четко знает, что ему интересно, а кто-то приходит к этому гораздо позже. Я отношусь ко второму типу. Отучившись в вузе и не проработав ни дня по профессии, я находилась в постоянном размышлении, к чему у меня лежит душа, что может приносить стабильный доход, что будет с этим миром и где в нем мое место. Я пошла в продажи, основываясь на принципе “Нужно попробовать, а дальше посмотрим”. Но продажи не вдохновляли меня от слова “совсем”. Жизненный опыт постепенно накапливался, но у меня не было никаких идей, как реализовать свои хотелки. И вот в очередной раз я начала новую главу своей жизни, пытаясь следовать своим потребностям и мечтам, - я занялась машинным обучением ИИ. В этой статье я расскажу, как я осваивала профессию тестировщика программного обеспечения.

Читать далее

Интервью с командой проекта «Поморский коч»

Когда речь заходит о САПР, чаще всего представляешь себе промышленное производство, конструирование сложных механизмов. Однако находятся и более любопытные варианты применения систем проектирования, например, историческое судостроение.

Мы познакомились с командой проекта «Поморский коч», которая строит на верфи в Архангельске старинное судно. На таких судах средневековые мореплаватели ходили по арктическим морям, преодолевая льды и шторма, и осваивали сибирские реки.

Читать далее

[Перевод] Переносимый код: Fighting the Lemmings

Сергей Каличев, старший разработчик, Angie Software

Однажды, давным-давно, я наткнулся на одну хорошую статью по разработке переносимого кода и решил её перевести. Когда же это было... ё-моё, в 2008 году, 17 лет назад! Обалдеть, как время летит. Статья называлась "Fighting the Lemmings", автор Martin Husemann. Выложил перевод на LOR. С тех пор много воды утекло и, когда я попытался поискать статью в Интернете, то обнаружил, что ни оригинальной статьи, ни перевода, найти практически невозможно. Перевод ещё сохранился в глубоких закромах OpenNet, а оригинал только в архиве Интернета. Ссылки на PDF-ки тоже протухли и больше не работают. Обидно, это ведь такая нетленка для системщиков. Понятно, что переносимость уже сто раз пережёвана в других статьях и книгах, но тут всё было сконцентрировано и написано доходчиво. При этом актуальность до сих пор не потеряна. Ну а что, собственно, кардинально поменялось в разработке переносимого кода на C с тех пор? Если не обращать внимание на упоминания некоторых архитектур и ОС, которые сейчас, да и во времена перевода, звучат, как придания старины глубокой, то в остальном, обо всех особенностях разработки переносимого кода, описанных в статье, надо помнить и сегодня. Выкладываю текст, как он есть, без каких-либо современных правок.

Для тех, кому удобнее читать в PDF, вот ссылки:

PDF оригинальной статьи

PDF перевода

А теперь сама статья.

Читать далее

Скриншотное тестирование во фронтенде: современный подход к поиску визуальных багов

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

Традиционные подходы к тестированию на многих уровнях уже не успевают за реалиями разработки: ручное тестирование становится слишком трудоёмким, а написание unit- или end-to-end-тестов не всегда позволяет отследить именно визуальные изменения. И здесь на помощь приходит методология скриншотного тестирования — мощный инструмент для выявления визуальных багов, появляющихся в интерфейсе. Он позволяет убедиться в том, что ваш продукт отображается так, как задумано, и избавляет команду от многих сюрпризов.

Читать далее

Извлекаем файлы из образа повреждённого диска: ddrescue, losetup и немного магии

Проблема повреждённых жёстких дисков знакома многим. Диск начинает работать со сбоями, система зависает, файлы исчезают. В этой статье мы разберём, как спасти данные: создадим образ повреждённого диска с ddrescue, подключим его через losetup, смонтируем разделы и извлечём файлы. Также рассмотрим восстановление удалённых данных с помощью утилит TestDisk и PhotoRec и разберём, что делать в случае проблем с NTFS.

Читать далее

Как СберМобайл завод оцифровал, и кому это вообще нужно

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

Читать далее

Три мушкетера из мира DevSecOps. Внедряем инструменты для развития AppSec-процессов

Привет, Хабр! С вами Максим Коровенков, DevSecOps Lead в Купер.техе. Продолжаем цикл статей про построение DevSecOps с нуля. Это большой гайд from zero to, надеюсь, hero.

Читать далее

Программный код в Big data и Power law

В статье приводятся оригинальные модули Python и даётся пояснение по их применению в задачах распределённой децентрализованной сети по типу блокчейн или, другими словами, в процессах самоорганизованной критичности (SOC). В научных публикациях чаще встречается физический термин SOC в качестве концепции, включающей процессы турбулентности, детонации, землетрясения, нейросети, фондовая волатильность, социальный рейтинг и другие.

Для процессов SOC характерно отсутствие управляющих параметров и масштабная инвариантность. Универсальность сложных процессов SOC со степенным законом Power law имеет тот же характер, как и универсальность простых линейных систем, не обладающих масштабной инвариантностью, по отношению к закону нормального распределения вероятности.

Зависимость от масштаба возникает при аналого-цифровом преобразовании битов в позиционную систему счисления и проявляется в законе нормального распределения вероятности в виде дисперсии и математического ожидания. Потеря масштабной инвариантности в позиционной системе счисления компенсируется приобретением принципа причинности. Например, в Древнем Риме, где была принята непозиционная система счисления, вычисляли, что «после того - не вследствие того» и сильно удивились бы истории с падающим на Ньютона яблоком.

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

Читать далее

Фундаментальная проблема TLS/SSL или как потерять доверие к доверенным центрам

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

Поехали!

Вывоз вторсырья от двери, помощник для тренировок – и еще 8 российских стартапов

10 новых российских продуктов для создания игровых квизов, создания мини-приложений для медклиник, поиска автодилеров и поставщиков авто по параллельному импорту и многого другого. Битва за «Продукт недели» началась!

Product Radar — здесь каждую неделю публикуются лучшие онлайн-сервисы и железки от русскоязычных команд.

Читать далее

Первые в России: как мы стали хостинг-провайдером на отечественной ОС

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

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

В рамках внедрения российской ОС мы ставили перед собой несколько задач: обеспечить высокую производительность и стабильность работы серверов, минимизировать риски, связанные с использованием иностранного ПО, а также поддержать развитие отечественной IT-индустрии. В данной статье мы поделимся выводами и опытом, полученными в ходе реализации этого проекта, а также рассмотрим его влияние на рынок хостинг-услуг в России.

Читать далее

Как красиво «завернуть» devops-пайплайн и не сгореть на проде

Привет, Хабр! Меня зовут Максим Бочкарев, в IT я с 2005 года и сейчас руковожу devops-направлением в компании ЕВРАЗ. За эти годы я успел повидать множество граблей, на которые мы наступали, пытаясь построить нормальную систему CI/CD. И сегодня хочу рассказать, как мы прошли путь от «кустарного производства» пайплайнов к промышленным масштабам, не потеряв по дороге ни одного девопса и не спалив продакшен.

Читать далее

Грех не использовать? Станет ли Dante лекарством от всех болезней AV over IP

В коммерческих цифровых аудиосетях нет закрытых экосистем с ограничениями, которые нельзя обойти. За это стоит поблагодарить Dante. Протокол, разработанный Audinate для передачи несжатого аудио по IP, без костылей решил проблемы дрейфа таймингов, джиттера, приоритизации аудиотрафика в гигабитных сетях. И, что особенно ценно, сделал это без привязки к одному производителю.

Фактически Audinate поставили на себя — создали отраслевой стандарт в AVoIP, получили поддержку 600 производителей оборудования* и сохранили независимый статус. Но будет ли эта база достаточной, чтобы стать конкурентом в NDI в AVoIP — большой вопрос.

Читать далее

[Перевод] Полное руководство (с кодом) AI агента с использованием LangGraph

Что делает AI агента умнее обычного LLM? AI агенты помогают преодолеть фрагментарность традиционных подходов, сохраняют контекст между операциями и адаптируются к задачам на лету.

Узнайте, как создать своего первого AI агента с помощью LangGraph, не погружаясь в сложности.
Репозиторий автора с примерами AI агентов собрал уже более 6000 звезд на GitHub!

Читать далее

Записки оптимизатора 1С (ч.10): Как понять, что процессор — основная боль на вашем сервере СУБД MS SQL Server?

Назрел пост, связанный нагрузкой на процессор сервера СУБД MS SQL Server.

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

Когда нагрузка на процессоре ~100%, огромные очереди к нему, то тут действительно всё просто и обсуждать особо нечего. Сценарий простой: либо ищем что его нагружает, либо система переросла процессор и ему пора накинуть мощностей.

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

Читать далее

[Перевод] Как ИИ трансформирует разработку стратегии

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

Читать далее

Процедура обнаружения взаимоблокировок в PostgreSQL

РostgreSQL автоматически обнаруживает взаимоблокировки. В статье рассматривается процедура обнаружения взаимоблокировок, трудоёмкость процедуры обнаружения, причины, по которым параметр конфигурации log_lock_waits зависит от параметра deadlock_timeout и что влияет на выбор его значения.

Обычно, приводятся примеры взаимоблокировки двух процессов, но заблокироваться может и более двух процессов. Параметр конфигурации deadlock_timeout устанавливает время ожидания получения блокировки, по истечении которого будет выполняться проверка на наличие взаимоблокировки. Параметр log_lock_waits типа boolean (по умолчанию false) позволяет получить в логе кластера сообщение о том, что сессия ждёт получения блокировки дольше, чем значение deadlock_timeout.

Процедура обнаружения взаимоблокировок

Если процесс не может получить блокировку, то он засыпает и устанавливает себе таймер, чтобы проснуться через время, заданное параметром конфигурации deadlock_timeout (по умолчанию 1 секунда). Процесс проснётся до истечения таймаута, если блокировка ему будет предоставлена. По завершению таймаута процесс начинает процедуру обнаружения взаимоблокировки.

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

Если взаимоблокировки нет, то процесс снова заснёт и больше не будет проверять, есть ли взаимоблокировка до получения блокировки или прерывания транзакции в соответствии с параметрами transaction_timeout и аналогичными параметрами. Почему процесс не будет дальше поверять ситуацию возникновения взаимоблокировки с частотой deadlock_timeout?

Читать далее

Как WirenBoard помогал садоводству

У всех IT-шников есть свободное время. Его не всегда достаточно и иногда хочется заменить своё присутствие алгоритмом или целой системой. А кому-то хочется отдохнуть от моделей, потоков данных, презентаций и совещаний. Но что делать, если 5 дней в неделю ты занят, а на даче нужен полив?

Перефразируя Валентина Берестова:

Как автономно поливать?
Чтоб свояка не доставать
И лишку не трясти соседа
Не ждать дождя после обеда.
А так, чтобы само включилось
Само пролилось, освежилось.
Где надо подогрев сработал,
А у меня свои заботы!

Читать далее

Конфликт глазами работника

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

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

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

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

Почему этот рассказ выбивается за рамки обычного:

Читаем...

Камеры трясутся, шум зашкаливает, а сравнивать нужно: как справляются алгоритмы?

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

Если эти вопросы вам интересны – добро пожаловать в мир сравнения медиаконтента! Сегодня мы разберем, какие бывают методы, их плюсы и минусы, а главное – расскажем о наших экспериментах, где мы проверили, какие алгоритмы лучше справляются с реальными проблемами.

Читать далее

Low-hanging fruit

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

Однако если такие правки не решают реальных проблем, это превращается в поверхностный рефакторинг, создающий лишь иллюзию прогресса. Это можно описать метафорой low-hanging fruit — когда разработчики выбирают самые лёгкие и очевидные задачи, избегая более сложных и значимых изменений.

Читать далее

[Перевод] Глава 8: Реализация API. API-интерфейсы для самых маленьких

Структура мини-курса Мини-курс API-интерфейсы для самых маленьких.

Вы сделали это. Теперь вы знаете все, что нужно знать об API, по крайней мере, на вводном уровне. Итак, как вы можете использовать все эти приобретенные знания с пользой? В этой главе мы рассмотрим, как превратить знания в работающее программное обеспечение, выделив три основополагающих компонента любой реализации API, как AI и платформы для автоматизации бизнес-процессов и интеграции приложений могут повысить эфективность вашего труда.

Читать далее

← 17 марта 2025