В этом посте я опишу как создать веб-сокетный стрим в бэкенде на NestJS
и подписаться на него из фронтенд приложения на Angular
.
Привет, Хабр! Мы — Настя и Эвелина — бэкенд-разработчики Т-Банка, пишем код на Scala и горим желанием его популяризировать. Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Мотивацию черпаем из желания развиваться и делиться полученными знаниями. Приветствуем любую обратную связь! (づ ◕‿◕ )づ
Читать двадцать третий выпускМы на Хабр Карьере помогаем IT-специалистам зарабатывать больше, а компаниям — быть в курсе трендов на рынке найма.
Вместе со школой программирования Хекслет хотим помочь бэкендерам, фронтендерам, тестировщикам и аналитикам подготовиться к поиску работы, а именно — к тестовым заданиям, которые им могут предложить на этапе отбора.
Новички в сфере смогут прокачать свои навыки и бесплатно учиться на курсах Хекслета, а продвинутые специалисты — выбрать обучение, которое они давно хотели пройти, но все время откладывали.
В общем, зовем вас стать опытнее и вырасти в навыках, но для этого придется → принять вызов.
Читать далееВ предыдущих статьях мы познакомились с основами Kafka Streams и рассмотрели stateless операции. В этой статье мы погрузимся в stateful processing и создадим приложение для управления запасами в реальном времени. Шаг за шагом мы реализуем функциональность, которая позволит отслеживать состояние запасов товаров, обрабатывать поступления и продажи, а также предоставлять доступ к текущему состоянию через REST API.
Читать далееОт теории из оригинальной академической статьи до ее реализации на Python с OpenAI, Weaviate и LangChain
Читать далееПривет, меня зовут Ася Исакова, и я организационный психолог. Возможно, единственный в мире организационный психолог, который умеет создавать пулл-реквесты на GitHub. Как так вышло? Дело в том, что я 2+ года занималась тем, что выстраивала нормальную работу на удаленке без 8 звонков в день для одной распределенной команды, используя GitHub как основной инструмент. Подробности о том, что это, как это было, что получилось и вдруг вам тоже надо, под катом.
Читать далееPushy — это WebSocket‑сервер Netflix, который поддерживает долговременные WebSocket‑соединения с устройствами, на которых работает приложение Netflix. Благодаря этому данные с бэкенд‑сервисов можно отправлять на устройства по мере необходимости. При таком подходе нет нужды в постоянного опроса сервисов устройствами. За последние несколько лет Pushy пережил огромный рост, превратившись из сервиса для негарантированной доставки сообщений в неотъемлемую часть экосистемы Netflix. В этом материале вы узнаете о том, как мы развивали и масштабировали сервер Pushy, стремясь к тому, чтобы он хорошо справлялся со своими текущими обязанностями, и к тому, чтобы подготовить его к будущим нагрузкам. Он поддерживает сотни миллионов одновременных WebSocket‑подключений, доставляет адресатам сотни тысяч сообщений в секунду и удерживает стабильный уровень надёжности доставки сообщений в 99,999%.
Читать далееВсем привет! Меня зовут Евгений Иляхин, я работаю архитектором процессов безопасной разработки в Positive Technologies, вместе с командой консалтинга в области безопасной разработки мы специализируемся на внедрении AppSec в различных компаниях и всячески продвигаем этот подход в массы.
В отрасли ИБ существует множество методологий, фреймворков, моделей безопасной разработки, которые помогают встроить AppSec в цикл создания ПО: BSIMM, OWASP SAMM, BSA SSF, Microsoft SDL и другие. Каждый из них имеет свои особенности, преимущества и, скажем так, способ использования и адаптации к собственным процессам. В ходе нашей работы мы познакомились со многими из них и пришли к выводу, что российским разработчикам нужен собственный инструмент. Зачем? Что из этого получилось? Расскажу в этой статье.
Что за AppSec Table Top такой?Всем привет! Меня зовут Олег, я старший Python/Go разработчик в Cloud.ru, а в свободное от работы время я... довольно азартный человек!
Нет, вы не подумайте, я не делаю ставки на спорт, не мучаю однорукого бандита и не пытаюсь испытать удачу в рулетке, но я очень люблю конкурсы и розыгрыши в Интернете, в которых надо играть в какую-нибудь веб-игру и выигрывать призы.
В таких конкурсах для меня главное не победа и призы, а участие и дух соревнования. Правда играю в них я не совсем честно. Различными способами я умудряюсь набрать наибольшое количество очков/баллов/монеток и не тратить на это дни и недели своей жизни. А как именно - расскажу в этой статье на примере одного из недавних конкурсов, который проводился на Хабре в честь 25-летия Ростелекома.
Этот конкурс уже закончился и итоги были подведены, поэтому я решил, что могу рассказать про то, как конкурс работал и как можно обойти "официальный" способ участия.
Узнать все хитростиВсе Android-разработчики хотят одного: чтобы интерфейс их приложения был плавным и отзывчивым, а переходы экранов — быстрыми. Уверенность в плавности и чёткости интерфейса дают замеры метрик. Но как измерить ту самую плавность, как оценить гладкость анимаций? У кого-нибудь есть плавнометр или транзишинометр?
Google даёт нам Macrobenchmark и JunkStats — инструменты для оценки общей отзывчивости и стабильности интерфейса. Но их недостаточно, чтобы понять, быстро ли у нас открываются экраны.
В этой статье мы поговорим о том, как получить полную картину по метрикам UI-перформанса. Как замерить плавность и отзывчивость интерфейса, и как оценить время открытия экрана — одно из самых частых действий для пользователя. Напишем собственный транзишинометр и замерим рендер экрана до первого onDraw и до последнего, причём и во Fragments, и в Compose.
Читать далееПривет, Хабр! На связи Виктор Сергеев из команды спецпроектов МТС Диджитал. Raspberry Pi Pico произвел настоящий фурор в сообществе разработчиков в 2021 году. Микроконтроллер стоимостью всего 4 $ получил чип RP2040 от Raspberry Pi Foundation — он во многом и обеспечил успех модели. На волне популярности вышли новые системы, тоже вполне удачные. И уже в конце 2024 года Raspberry Pi Foundation представила наследника оригинальной модели — Raspberry Pi Pico 2 W на базе RP2350 стоимостью всего 7 $. Давайте разбираться, что за возможности у нового микроконтроллера.
Читать далееВсем же известно, что наше правительство покрывает полчища инопланетян, тайно исследующих человеческие организмы с плоской Земли, которой правят рептилоиды. Забавно, не правда ли? А тем не менее, это как раз то, что называется теориями заговора. Самое интересное, что они невероятно распространены и, похоже, являются частью всех современных и традиционных обществ. Исследования еще не выявили культуру, которая не придерживалась бы какой-либо разновидности верований в заговор.
Читать далееНедавно я столкнулся с забавными головоломками, связанными с простейшими двухчашечными весами. Как правило, в большей части таких задач используются монеты. Сегодня я расскажу о решении одного типа таких головоломок.
Итак, как найти одну фальшивую монету среди нескольких, сравнивая вес различных наборов монет и используя наименьшее возможное количество сравнений?
Для начала проведём анализ проблемы.
Читать далееВ этом блоге я расскажу о некоторых уязвимостях при загрузке файлов.
Во многих приложениях существует функция загрузки файлов. Однако её реализация отличается в зависимости от специфики использования. Некоторые приложения позволяют загружать только изображения, поддерживая лишь форматы, связанные с изображениями, такие как .jpg или .png. Другие приложения поддерживают загрузку различных расширений, соответствующих их бизнес-кейсам.
1. RCE через загрузку файлов
Одной из самых интересных атак, связанных с функцией загрузки файлов, является удалённое выполнение кода (Remote Code Execution, RCE). Существует несколько способов исполнения вредоносного кода с использованием загруженных файлов. Один из наиболее распространённых методов — загрузка шелла и получение дальнейшего доступа к системе.
PHP-скрипт для RCE
Попробуйте загрузить следующий код с расширением .php. Затем определите расположение и извлеките файл. В URL-адресе файла можно добавить параметр c, где можно указать команды, например, whoami.
Читать далееИз новостей: в открытый доступ вышла бета-версия Nau Engine, мобильный Balatro заработал больше 4 миллионов, Bevy 0.15, ИРИ выделит 2 млрд рублей.
Из интересностей: почему CDPR перешла на UE и какие уроки вынесла из Cyberpunk 2077, как рендерится Detroit Become Human, Analytical Anti-Aliasing, реалистичная вода с помощью стандартных шейдеров в Source Engine.
Читать далееВсем привет! Меня зовут Паша Стороженко, я продуктовый дизайнер в Купере. С конца 2023 года наша команда отвечала за направление аптек и достигла неплохих показателей. В этом году нам предложили взять еще одно направление — бытовую технику и электронику.
Прежде всего, нам нужно было разобраться, как устроен этот рынок, как клиенты выбирают магазин, товар и способ его получения, какие сложности у них возникают. Другими словами — провести дискавери направления. А так как раскачиваться по полгода не в наших правилах, мы активно взялись за дело.
Читать далееВсе знают про распределение выборочного среднего (его описывает Центральная предельная теорема), а что насчет выборочных квантилей?
В заметке я расскажу, как и зачем приближать распределения выборочных квантилей из данных с типичными распределениями: равномерное, экспоненциальное и нормальное, а также когда и какое приближение стоит использовать.
Читать далееЭто первая часть статьи, посвященной дженерикам в Go, из четырех.
Одна из последних и наиболее интересных фич в Golang — поддержка дженериков. Эта серия туториалов будет посвящена тому, что это такое, какую пользу приносит, когда их стоит использовать и как они меняют процесс написания приложений на Golang. Начнем же!
Читать далееУ меня дома есть малюсенькая домашняя «типография» (исключительно для личного использования), сердце которой – тяжеленный, весом 67 кг, цветной лазерный принтер. Он нужен для того, чтобы печатать пробники книжек, которые рисует моя супруга-художница, принты для её выставок, и всё тому подобное.
В этой статье я расскажу, как я использую систему умного дома – конкретно, датчик температуры и влажности и датчик открытия окон, плюс умные розетки — чтобы этот принтер лучше печатал на той непростой бумаге, которую я в нём использую.
Читать далееПривет, земляне. Наконец то в Blender появились средства благодаря которым мы можем манипулировать нашими ассетами на базе Geometry Nodes прямо во 3D вьюпорте программы. Для этого нам предоставили давно знакомые инструменты Gizmo, но на этот раз уже в новом качестве. Данная заметка призвана прояснить вопрос, касательно того, как с этим работать. Скачивайте свежий релиз Blender 4.3 и приступайте к изучению...
Приступить к получению знаний ->После переезда на openSUSE 15.5 я столкнулся с некой странностью. Автозапускаемые после старта приложения стали падать при попытке перезапуска.
Читать далееМногие знают, а многие возможно и не знают, что передача различной чувствительной информации в финансовой и банковской сфере, по требованиям ФСТЭК, должна защищаться отечественными алгоритмами шифрования и продуктами прошедшими сертификацию в ФСБ. Но как тестировать создаваемые продукты на отечественной криптографии, если большинство утилит тестирования ориентируется на западную криптографию ? Для Jmeter есть способ подключить отечественную криптографию.
ПодробностиПодоспело время обзора интересных и громких ИБ-инцидентов ноября. В подборке: многомиллионная афера бывшего топ-менеджера, кибер-отравитель в Disney World, отголоски взлома MOVEit в Amazon – и это еще не все.
Читать далееПривет, Хабр! На связи команда разработки App.Farm — продукта, созданного в РСХБ‑Интех. Хотели бы представить вам цикл статей о нем.
App.Farm — продукт по типу PaaS, необходимый для стандартизации процесса разработки бизнес‑приложений: от хранения исходного кода до запуска сервисов. Основные подсистемы платформы включают хранилище исходного кода и CI, хранилище артефактов, среду исполнения приложений, SSO, интеграционную подсистему, observability и т. д..
Подробнее ознакомиться с компонентами можно в обзорной статье, ранее опубликованной на Хабре: Как мы создавали PaaS‑платформу App.Farm. Сейчас мы бы хотели углубиться в детали реализации и поделиться с вами проблемами, которые мы решали, и как пришли к текущей архитектуре. Первый цикл статей мы решили посвятить одной из подсистем нашей платформы — App.Farm CI.
Читать далееВсем привет! На связи Spectr и новая рубрика «Что читают наши разработчики?». Сегодня делимся статьей о микрофронтенде.
Почему мы выбрали эту тему? Микрофронтенды становятся всё более популярными в больших приложениях. С ростом числа распределенных команд и увеличением количества функций в современных продуктах архитектура микрофронтендов позволяет командам работать параллельно и автономно, внедряя новые функции без влияния на другие части системы. Этот подход помогает ускорить процесс разработки, уменьшить риски при развертывании и упрощает интеграцию различных технологий в одном проекте.
Узнать о микрофронтенде большеВсем привет! Меня зовут Светлана Петрова, я руководитель внедрения и развития бизнес-систем. Более 15 лет занимаюсь оптимизацией и автоматизацией (или, как принято говорить сейчас, цифровизацией) бизнес-процессов крупных российских компаний. А ещё я наставник на курсе «1С-аналитик» в Яндекс Практикуме.
В статье я хочу поделиться наблюдениями и данными о возможностях развития 1С-аналитика при работе на стороне клиента (другими словами — в инхаус-разработке).
Читать далееОткуда у контейнера берётся файловая система? Чтобы разобраться, инженер Google Михал Питр воспроизвёл действия Docker и создал файловую систему своими руками. От полноценной реализации его результат отличается тем, что в нём не используется пространство имён для дополнительной изоляции.
Под катом — перевод, который поможет разобраться, как именно Docker создаёт новую файловую систему с помощью OverlayFS.
Читать далееКогда студент устраивается на работу в электронную компанию, очень здорово, если он уже умеет строить одну и ту же электронную схему разными способами, в зависимости от требований пропускной способности, максимальной тактовой частоты, размера и энергопотребления.
Как натренировать такое умение? Для новых домашних работ в программе Школы Синтеза Цифровых Схем мы решили разодрать на блоки реальный процессор и дать студентам задачу собирать разные специализированные вычислительные устройства из этих блоков, примерно как герои фильма "Безумный Макс: Дорога ярости" собирали свои боевые драндулеты из частей реальных автомобилей.
В качестве первой жертвы мы выбрали ...В последние годы IT-индустрия стала одной из самых привлекательных и востребованных сфер для карьеры. Но несмотря на многочисленные успехи тех, кто перешел в профессию без профильного образования, не каждый остается в ней надолго. Некоторые возвращаются к прежней деятельности из-за потери интереса или других сложностей.
Читать далееВсе самые важные и интересные финансовые новости в России и мире за неделю: Елисеев раскрывает заговор на Мосбирже, Telegram наконец заработал прибыль, северокорейские хакеры заполнили рынок IT-труда, Джастин Сан съел шестимиллионный банан, отмена санкций на Tornado Cash, а также психологический возраст Ди Каприо превысил 26 лет.
Читать далееТак случилось, что мы с вами живём в историческую эпоху, когда мир постоянно поляризуется. Из него словно исчезают полутона. Нейтралитет сохранять всё сложнее, общество требует четких позиций и однозначных действий под флагами той или иной идеи. В новостной ленте соседствуют посты про достижения Sweet Baby Inc. в достижении всеобщей толерантности и приходы правых и консервативных партий в ряде стран. И это не говоря про гораздо более близкие и болезненные события.
Так как основной задачей нашей психики является отражение объективной реальности, это влияет на нас – не только на эмоциональное состояние, но и на когнитивные процессы – мышление, память, восприятие. И не стоит удивляться, что поляризованный до черно-белого состояния мир влияет на нас, мягко навязывая такую же черно-белую парадигму, о которой и пойдет речь.
В рамках данной статьи мы попробуем разобраться с феноменом черно-белого мышления и понять, а как вернуть более плавное, градиентное восприятие реальности и действовать согласно этой картине мира.
В кроличью норуВ статье хочется поделиться реализацией управления освещением, которая может быть использована в различных системах "умного дома". Ключевая особенность - возможность работать вместе с обычной двухпроводной проводкой освещения.
Краткая предыстория
Идея появилась после покупки китайской светодиодной люстры, которой можно управлять с помощью радиопульта - включать, изменять яркость и цветовую температуру. Дома уже функционировал Home Assistant, и возникло логичное желание управлять этой люстрой для реализации режима "искусственный рассвет" - с ним намного комфортнее просыпаться в осенне-зимний период.
Проводка в комнате сделана давно. К люстре идет только два провода от выключателя, следовательно для любого умного управления пришлось бы держать выключатель в положении "включено" и управлять освещением только с помощью пульта. Это довольно неудобно, к тому же простых способов интегрировать пульт в систему Home Assistant я не придумал - нужно или коммутировать кнопки пульта или эмулировать радиокоманды.
Интеграция с Home Assistant
Другой способ интеграции - это переделка электроники люстры. Нужно заменить радиоуправление на модуль ESP32 под управлением ESPHome, который отлично интегрируется с Home Assistant.
Все управление освещением производится изменением состояния двух каналов яркости с помощью ШИМ-сигналов - холодного белого и теплого белого. Прошивка ESPHome умеет это "из коробки". Требуемый режим "искусственный рассвет" тоже легко реализуется - просто устанавливаем время включения на 30 минут, и получим плавное нарастание яркости.
Получается, что интегрировать люстру в систему умного дома относительно несложно, осталось придумать как сохранить возможность управления освещением с помощью существующих выключателей. Для этого нужно передавать команду от выключателя к люстре по тем же двум проводам, что и питание.
Привет, Хабр! В настоящее время используются не только SQL решения для работы с данными, тем не менее, на долю SQL приходится значительная часть систем. Также нередко бывает, что приложение генерирует SQL в зависимости от действий пользователя, например, при выборе полей или применении фильтров в отчетах, иными словами, есть динамический SQL, а не статический. Также часто для приложения есть тесты, например, соответствующие типичным активностям пользователей, и каждой активности соответствует один или несколько SQL, причем в тестах проверяется именно правильность результатов выполнения SQL.
Далее, для относительно сложных вариантов генерации SQL при изменениях бизнес-логики (или других изменениях) может измениться и сам динамически генерируемый SQL, причем результаты выполнения SQL могут остаться неизменными, однако производительность поменяется. В таких случаях изменения в производительности можно уловить при помощи бенчмарков, однако прогон бенчмарков может занимать значительное время, в связи с этим актуальна задача быстрого анализа изменений в производительности динамически генерируемого SQL. Интересны особенности анализа производительности приложения на основе SQL — добро пожаловать под кат :)
Читать далееСегодня я выхожу в эфир со статьей, которая является неким потоком сознания. Сегодня не будет практической пользы, только мои размышления о Work Life Balance. Те, кто ждёт руководство или призыв к действию, проходите мимо! А те, кто остались, добро пожаловать на борт моего корабля. Мы отправляемся в круиз по волнам Work Life Balance, через рифы ночного кодинга прямиком на остров усталости!
Читать далееРабота над ошибками
PostgreSQL: Out-of-cycle release scheduled for November 21, 2024
Дело прошлое - уже вышла 17.2 со свитой из более почтенных версий, где всё поправили. Но история поучительная.
Итак: вышла новость, с восклицательным знаком, как обычно: PostgreSQL: PostgreSQL 17.1, 16.5, 15.9, 14.14, 13.17, and 12.21 Released!
Ура! Прикрыли дыру CVE-2024-10976: в таблицах с безопасностью на уровне строк можно было подсмотреть или изменить те строки, в которые лезть не положено. После CVE-2023-2455 и CVE-2016-2193 многое поправили, но пропустили случаи подзапросов, запросов с WITH и другие. И всё это в версиях с 12 по 17. Ещё и закрыли уязвимость CVE-2024-10979. Но:
A change to ResultRelInfo - A Near Miss with with Postgres 17.1
Читать далееДля ЛЛ: пространные рассуждения, взять все и поделить.
Только я написал так и не взлетевшую статью, как на РБК вышла статья Экономисты обсудили конец «российской модели» рынка труда Какие признаки указывают на трансформацию занятости в России»
Что интересное во всей этой переписке Энгельса с Каутским, при том, что я не согласен с обоими, это не столько то, что текст напоминает очередной пересказ Прохорова - «Русская модель управления» (тезисы), а то, что в историях с обеих сторон почти нет цифр, и, что еще хуже, нет проверяемых цифр.
Читать далееКоманда Rust рада сообщить о новой версии языка — 1.83.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.
Если у вас есть предыдущая версия Rust, установленная через rustup
, то для обновления до версии 1.83.0 вам достаточно выполнить команду:
$ rustup update stable
Если у вас ещё не установлен rustup
, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.
Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta
) или nightly (rustup default nightly
). Пожалуйста, сообщайте обо всех встреченных вами ошибках.
В конце года многие из нас оглядываются назад, анализируют прошедшие месяцы, пытаются понять, что пошло не так и что можно улучшить в следующем году. Для меня конец года — это время упорядочить всё, избавиться от накопившегося цифрового шума и создать основу для продуктивного старта в следующем году. Поскольку основной рабочий инструмент для меня — это компьютер, каждый год я убеждаюсь, что организованное цифровое пространство помогает сохранять спокойствие и концентрацию.
Если вы тоже чувствуете, что накопившийся за год цифровой беспорядок вызывает усталость и раздражение, конец года — это идеальное время для цифрового ресета. Особенно это важно для людей, которые стремятся повысить свою продуктивность и сделать рабочие процессы более эффективными. Давайте вместе посмотрим, как можно избавиться от этого беспорядка и облегчить себе жизнь.
Цифровой беспорядок как причина выгорания
Вот три признака, по которым становится понятно, что пора разгребать свой цифровой завал:
Читать далееВ этом посте я опишу как создать веб-сокетный стрим в бэкенде на NestJS
и подписаться на него из фронтенд приложения на Angular
.
Привет, Хабр! Мы — Настя и Эвелина — бэкенд-разработчики Т-Банка, пишем код на Scala и горим желанием его популяризировать. Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Мотивацию черпаем из желания развиваться и делиться полученными знаниями. Приветствуем любую обратную связь! (づ ◕‿◕ )づ
Читать двадцать третий выпускМы на Хабр Карьере помогаем IT-специалистам зарабатывать больше, а компаниям — быть в курсе трендов на рынке найма.
Вместе со школой программирования Хекслет хотим помочь бэкендерам, фронтендерам, тестировщикам и аналитикам подготовиться к поиску работы, а именно — к тестовым заданиям, которые им могут предложить на этапе отбора.
Новички в сфере смогут прокачать свои навыки и бесплатно учиться на курсах Хекслета, а продвинутые специалисты — выбрать обучение, которое они давно хотели пройти, но все время откладывали.
В общем, зовем вас стать опытнее и вырасти в навыках, но для этого придется → принять вызов.
Читать далееВ предыдущих статьях мы познакомились с основами Kafka Streams и рассмотрели stateless операции. В этой статье мы погрузимся в stateful processing и создадим приложение для управления запасами в реальном времени. Шаг за шагом мы реализуем функциональность, которая позволит отслеживать состояние запасов товаров, обрабатывать поступления и продажи, а также предоставлять доступ к текущему состоянию через REST API.
Читать далееОт теории из оригинальной академической статьи до ее реализации на Python с OpenAI, Weaviate и LangChain
Читать далееПривет, меня зовут Ася Исакова, и я организационный психолог. Возможно, единственный в мире организационный психолог, который умеет создавать пулл-реквесты на GitHub. Как так вышло? Дело в том, что я 2+ года занималась тем, что выстраивала нормальную работу на удаленке без 8 звонков в день для одной распределенной команды, используя GitHub как основной инструмент. Подробности о том, что это, как это было, что получилось и вдруг вам тоже надо, под катом.
Читать далееPushy — это WebSocket‑сервер Netflix, который поддерживает долговременные WebSocket‑соединения с устройствами, на которых работает приложение Netflix. Благодаря этому данные с бэкенд‑сервисов можно отправлять на устройства по мере необходимости. При таком подходе нет нужды в постоянного опроса сервисов устройствами. За последние несколько лет Pushy пережил огромный рост, превратившись из сервиса для негарантированной доставки сообщений в неотъемлемую часть экосистемы Netflix. В этом материале вы узнаете о том, как мы развивали и масштабировали сервер Pushy, стремясь к тому, чтобы он хорошо справлялся со своими текущими обязанностями, и к тому, чтобы подготовить его к будущим нагрузкам. Он поддерживает сотни миллионов одновременных WebSocket‑подключений, доставляет адресатам сотни тысяч сообщений в секунду и удерживает стабильный уровень надёжности доставки сообщений в 99,999%.
Читать далееВсем привет! Меня зовут Евгений Иляхин, я работаю архитектором процессов безопасной разработки в Positive Technologies, вместе с командой консалтинга в области безопасной разработки мы специализируемся на внедрении AppSec в различных компаниях и всячески продвигаем этот подход в массы.
В отрасли ИБ существует множество методологий, фреймворков, моделей безопасной разработки, которые помогают встроить AppSec в цикл создания ПО: BSIMM, OWASP SAMM, BSA SSF, Microsoft SDL и другие. Каждый из них имеет свои особенности, преимущества и, скажем так, способ использования и адаптации к собственным процессам. В ходе нашей работы мы познакомились со многими из них и пришли к выводу, что российским разработчикам нужен собственный инструмент. Зачем? Что из этого получилось? Расскажу в этой статье.
Что за AppSec Table Top такой?Всем привет! Меня зовут Олег, я старший Python/Go разработчик в Cloud.ru, а в свободное от работы время я... довольно азартный человек!
Нет, вы не подумайте, я не делаю ставки на спорт, не мучаю однорукого бандита и не пытаюсь испытать удачу в рулетке, но я очень люблю конкурсы и розыгрыши в Интернете, в которых надо играть в какую-нибудь веб-игру и выигрывать призы.
В таких конкурсах для меня главное не победа и призы, а участие и дух соревнования. Правда играю в них я не совсем честно. Различными способами я умудряюсь набрать наибольшое количество очков/баллов/монеток и не тратить на это дни и недели своей жизни. А как именно - расскажу в этой статье на примере одного из недавних конкурсов, который проводился на Хабре в честь 25-летия Ростелекома.
Этот конкурс уже закончился и итоги были подведены, поэтому я решил, что могу рассказать про то, как конкурс работал и как можно обойти "официальный" способ участия.
Узнать все хитростиВсе Android-разработчики хотят одного: чтобы интерфейс их приложения был плавным и отзывчивым, а переходы экранов — быстрыми. Уверенность в плавности и чёткости интерфейса дают замеры метрик. Но как измерить ту самую плавность, как оценить гладкость анимаций? У кого-нибудь есть плавнометр или транзишинометр?
Google даёт нам Macrobenchmark и JunkStats — инструменты для оценки общей отзывчивости и стабильности интерфейса. Но их недостаточно, чтобы понять, быстро ли у нас открываются экраны.
В этой статье мы поговорим о том, как получить полную картину по метрикам UI-перформанса. Как замерить плавность и отзывчивость интерфейса, и как оценить время открытия экрана — одно из самых частых действий для пользователя. Напишем собственный транзишинометр и замерим рендер экрана до первого onDraw и до последнего, причём и во Fragments, и в Compose.
Читать далееПривет, Хабр! На связи Виктор Сергеев из команды спецпроектов МТС Диджитал. Raspberry Pi Pico произвел настоящий фурор в сообществе разработчиков в 2021 году. Микроконтроллер стоимостью всего 4 $ получил чип RP2040 от Raspberry Pi Foundation — он во многом и обеспечил успех модели. На волне популярности вышли новые системы, тоже вполне удачные. И уже в конце 2024 года Raspberry Pi Foundation представила наследника оригинальной модели — Raspberry Pi Pico 2 W на базе RP2350 стоимостью всего 7 $. Давайте разбираться, что за возможности у нового микроконтроллера.
Читать далееВсем же известно, что наше правительство покрывает полчища инопланетян, тайно исследующих человеческие организмы с плоской Земли, которой правят рептилоиды. Забавно, не правда ли? А тем не менее, это как раз то, что называется теориями заговора. Самое интересное, что они невероятно распространены и, похоже, являются частью всех современных и традиционных обществ. Исследования еще не выявили культуру, которая не придерживалась бы какой-либо разновидности верований в заговор.
Читать далееНедавно я столкнулся с забавными головоломками, связанными с простейшими двухчашечными весами. Как правило, в большей части таких задач используются монеты. Сегодня я расскажу о решении одного типа таких головоломок.
Итак, как найти одну фальшивую монету среди нескольких, сравнивая вес различных наборов монет и используя наименьшее возможное количество сравнений?
Для начала проведём анализ проблемы.
Читать далееВ этом блоге я расскажу о некоторых уязвимостях при загрузке файлов.
Во многих приложениях существует функция загрузки файлов. Однако её реализация отличается в зависимости от специфики использования. Некоторые приложения позволяют загружать только изображения, поддерживая лишь форматы, связанные с изображениями, такие как .jpg или .png. Другие приложения поддерживают загрузку различных расширений, соответствующих их бизнес-кейсам.
1. RCE через загрузку файлов
Одной из самых интересных атак, связанных с функцией загрузки файлов, является удалённое выполнение кода (Remote Code Execution, RCE). Существует несколько способов исполнения вредоносного кода с использованием загруженных файлов. Один из наиболее распространённых методов — загрузка шелла и получение дальнейшего доступа к системе.
PHP-скрипт для RCE
Попробуйте загрузить следующий код с расширением .php. Затем определите расположение и извлеките файл. В URL-адресе файла можно добавить параметр c, где можно указать команды, например, whoami.
Читать далееИз новостей: в открытый доступ вышла бета-версия Nau Engine, мобильный Balatro заработал больше 4 миллионов, Bevy 0.15, ИРИ выделит 2 млрд рублей.
Из интересностей: почему CDPR перешла на UE и какие уроки вынесла из Cyberpunk 2077, как рендерится Detroit Become Human, Analytical Anti-Aliasing, реалистичная вода с помощью стандартных шейдеров в Source Engine.
Читать далееВсем привет! Меня зовут Паша Стороженко, я продуктовый дизайнер в Купере. С конца 2023 года наша команда отвечала за направление аптек и достигла неплохих показателей. В этом году нам предложили взять еще одно направление — бытовую технику и электронику.
Прежде всего, нам нужно было разобраться, как устроен этот рынок, как клиенты выбирают магазин, товар и способ его получения, какие сложности у них возникают. Другими словами — провести дискавери направления. А так как раскачиваться по полгода не в наших правилах, мы активно взялись за дело.
Читать далееВсе знают про распределение выборочного среднего (его описывает Центральная предельная теорема), а что насчет выборочных квантилей?
В заметке я расскажу, как и зачем приближать распределения выборочных квантилей из данных с типичными распределениями: равномерное, экспоненциальное и нормальное, а также когда и какое приближение стоит использовать.
Читать далееЭто первая часть статьи, посвященной дженерикам в Go, из четырех.
Одна из последних и наиболее интересных фич в Golang — поддержка дженериков. Эта серия туториалов будет посвящена тому, что это такое, какую пользу приносит, когда их стоит использовать и как они меняют процесс написания приложений на Golang. Начнем же!
Читать далееУ меня дома есть малюсенькая домашняя «типография» (исключительно для личного использования), сердце которой – тяжеленный, весом 67 кг, цветной лазерный принтер. Он нужен для того, чтобы печатать пробники книжек, которые рисует моя супруга-художница, принты для её выставок, и всё тому подобное.
В этой статье я расскажу, как я использую систему умного дома – конкретно, датчик температуры и влажности и датчик открытия окон, плюс умные розетки — чтобы этот принтер лучше печатал на той непростой бумаге, которую я в нём использую.
Читать далееПривет, земляне. Наконец то в Blender появились средства благодаря которым мы можем манипулировать нашими ассетами на базе Geometry Nodes прямо во 3D вьюпорте программы. Для этого нам предоставили давно знакомые инструменты Gizmo, но на этот раз уже в новом качестве. Данная заметка призвана прояснить вопрос, касательно того, как с этим работать. Скачивайте свежий релиз Blender 4.3 и приступайте к изучению...
Приступить к получению знаний ->После переезда на openSUSE 15.5 я столкнулся с некой странностью. Автозапускаемые после старта приложения стали падать при попытке перезапуска.
Читать далееМногие знают, а многие возможно и не знают, что передача различной чувствительной информации в финансовой и банковской сфере, по требованиям ФСТЭК, должна защищаться отечественными алгоритмами шифрования и продуктами прошедшими сертификацию в ФСБ. Но как тестировать создаваемые продукты на отечественной криптографии, если большинство утилит тестирования ориентируется на западную криптографию ? Для Jmeter есть способ подключить отечественную криптографию.
ПодробностиПодоспело время обзора интересных и громких ИБ-инцидентов ноября. В подборке: многомиллионная афера бывшего топ-менеджера, кибер-отравитель в Disney World, отголоски взлома MOVEit в Amazon – и это еще не все.
Читать далееПривет, Хабр! На связи команда разработки App.Farm — продукта, созданного в РСХБ‑Интех. Хотели бы представить вам цикл статей о нем.
App.Farm — продукт по типу PaaS, необходимый для стандартизации процесса разработки бизнес‑приложений: от хранения исходного кода до запуска сервисов. Основные подсистемы платформы включают хранилище исходного кода и CI, хранилище артефактов, среду исполнения приложений, SSO, интеграционную подсистему, observability и т. д..
Подробнее ознакомиться с компонентами можно в обзорной статье, ранее опубликованной на Хабре: Как мы создавали PaaS‑платформу App.Farm. Сейчас мы бы хотели углубиться в детали реализации и поделиться с вами проблемами, которые мы решали, и как пришли к текущей архитектуре. Первый цикл статей мы решили посвятить одной из подсистем нашей платформы — App.Farm CI.
Читать далееВсем привет! На связи Spectr и новая рубрика «Что читают наши разработчики?». Сегодня делимся статьей о микрофронтенде.
Почему мы выбрали эту тему? Микрофронтенды становятся всё более популярными в больших приложениях. С ростом числа распределенных команд и увеличением количества функций в современных продуктах архитектура микрофронтендов позволяет командам работать параллельно и автономно, внедряя новые функции без влияния на другие части системы. Этот подход помогает ускорить процесс разработки, уменьшить риски при развертывании и упрощает интеграцию различных технологий в одном проекте.
Узнать о микрофронтенде большеВсем привет! Меня зовут Светлана Петрова, я руководитель внедрения и развития бизнес-систем. Более 15 лет занимаюсь оптимизацией и автоматизацией (или, как принято говорить сейчас, цифровизацией) бизнес-процессов крупных российских компаний. А ещё я наставник на курсе «1С-аналитик» в Яндекс Практикуме.
В статье я хочу поделиться наблюдениями и данными о возможностях развития 1С-аналитика при работе на стороне клиента (другими словами — в инхаус-разработке).
Читать далееОткуда у контейнера берётся файловая система? Чтобы разобраться, инженер Google Михал Питр воспроизвёл действия Docker и создал файловую систему своими руками. От полноценной реализации его результат отличается тем, что в нём не используется пространство имён для дополнительной изоляции.
Под катом — перевод, который поможет разобраться, как именно Docker создаёт новую файловую систему с помощью OverlayFS.
Читать далееКогда студент устраивается на работу в электронную компанию, очень здорово, если он уже умеет строить одну и ту же электронную схему разными способами, в зависимости от требований пропускной способности, максимальной тактовой частоты, размера и энергопотребления.
Как натренировать такое умение? Для новых домашних работ в программе Школы Синтеза Цифровых Схем мы решили разодрать на блоки реальный процессор и дать студентам задачу собирать разные специализированные вычислительные устройства из этих блоков, примерно как герои фильма "Безумный Макс: Дорога ярости" собирали свои боевые драндулеты из частей реальных автомобилей.
В качестве первой жертвы мы выбрали ...В последние годы IT-индустрия стала одной из самых привлекательных и востребованных сфер для карьеры. Но несмотря на многочисленные успехи тех, кто перешел в профессию без профильного образования, не каждый остается в ней надолго. Некоторые возвращаются к прежней деятельности из-за потери интереса или других сложностей.
Читать далееВсе самые важные и интересные финансовые новости в России и мире за неделю: Елисеев раскрывает заговор на Мосбирже, Telegram наконец заработал прибыль, северокорейские хакеры заполнили рынок IT-труда, Джастин Сан съел шестимиллионный банан, отмена санкций на Tornado Cash, а также психологический возраст Ди Каприо превысил 26 лет.
Читать далееТак случилось, что мы с вами живём в историческую эпоху, когда мир постоянно поляризуется. Из него словно исчезают полутона. Нейтралитет сохранять всё сложнее, общество требует четких позиций и однозначных действий под флагами той или иной идеи. В новостной ленте соседствуют посты про достижения Sweet Baby Inc. в достижении всеобщей толерантности и приходы правых и консервативных партий в ряде стран. И это не говоря про гораздо более близкие и болезненные события.
Так как основной задачей нашей психики является отражение объективной реальности, это влияет на нас – не только на эмоциональное состояние, но и на когнитивные процессы – мышление, память, восприятие. И не стоит удивляться, что поляризованный до черно-белого состояния мир влияет на нас, мягко навязывая такую же черно-белую парадигму, о которой и пойдет речь.
В рамках данной статьи мы попробуем разобраться с феноменом черно-белого мышления и понять, а как вернуть более плавное, градиентное восприятие реальности и действовать согласно этой картине мира.
В кроличью норуВ статье хочется поделиться реализацией управления освещением, которая может быть использована в различных системах "умного дома". Ключевая особенность - возможность работать вместе с обычной двухпроводной проводкой освещения.
Краткая предыстория
Идея появилась после покупки китайской светодиодной люстры, которой можно управлять с помощью радиопульта - включать, изменять яркость и цветовую температуру. Дома уже функционировал Home Assistant, и возникло логичное желание управлять этой люстрой для реализации режима "искусственный рассвет" - с ним намного комфортнее просыпаться в осенне-зимний период.
Проводка в комнате сделана давно. К люстре идет только два провода от выключателя, следовательно для любого умного управления пришлось бы держать выключатель в положении "включено" и управлять освещением только с помощью пульта. Это довольно неудобно, к тому же простых способов интегрировать пульт в систему Home Assistant я не придумал - нужно или коммутировать кнопки пульта или эмулировать радиокоманды.
Интеграция с Home Assistant
Другой способ интеграции - это переделка электроники люстры. Нужно заменить радиоуправление на модуль ESP32 под управлением ESPHome, который отлично интегрируется с Home Assistant.
Все управление освещением производится изменением состояния двух каналов яркости с помощью ШИМ-сигналов - холодного белого и теплого белого. Прошивка ESPHome умеет это "из коробки". Требуемый режим "искусственный рассвет" тоже легко реализуется - просто устанавливаем время включения на 30 минут, и получим плавное нарастание яркости.
Получается, что интегрировать люстру в систему умного дома относительно несложно, осталось придумать как сохранить возможность управления освещением с помощью существующих выключателей. Для этого нужно передавать команду от выключателя к люстре по тем же двум проводам, что и питание.
Привет, Хабр! В настоящее время используются не только SQL решения для работы с данными, тем не менее, на долю SQL приходится значительная часть систем. Также нередко бывает, что приложение генерирует SQL в зависимости от действий пользователя, например, при выборе полей или применении фильтров в отчетах, иными словами, есть динамический SQL, а не статический. Также часто для приложения есть тесты, например, соответствующие типичным активностям пользователей, и каждой активности соответствует один или несколько SQL, причем в тестах проверяется именно правильность результатов выполнения SQL.
Далее, для относительно сложных вариантов генерации SQL при изменениях бизнес-логики (или других изменениях) может измениться и сам динамически генерируемый SQL, причем результаты выполнения SQL могут остаться неизменными, однако производительность поменяется. В таких случаях изменения в производительности можно уловить при помощи бенчмарков, однако прогон бенчмарков может занимать значительное время, в связи с этим актуальна задача быстрого анализа изменений в производительности динамически генерируемого SQL. Интересны особенности анализа производительности приложения на основе SQL — добро пожаловать под кат :)
Читать далееСегодня я выхожу в эфир со статьей, которая является неким потоком сознания. Сегодня не будет практической пользы, только мои размышления о Work Life Balance. Те, кто ждёт руководство или призыв к действию, проходите мимо! А те, кто остались, добро пожаловать на борт моего корабля. Мы отправляемся в круиз по волнам Work Life Balance, через рифы ночного кодинга прямиком на остров усталости!
Читать далееРабота над ошибками
PostgreSQL: Out-of-cycle release scheduled for November 21, 2024
Дело прошлое - уже вышла 17.2 со свитой из более почтенных версий, где всё поправили. Но история поучительная.
Итак: вышла новость, с восклицательным знаком, как обычно: PostgreSQL: PostgreSQL 17.1, 16.5, 15.9, 14.14, 13.17, and 12.21 Released!
Ура! Прикрыли дыру CVE-2024-10976: в таблицах с безопасностью на уровне строк можно было подсмотреть или изменить те строки, в которые лезть не положено. После CVE-2023-2455 и CVE-2016-2193 многое поправили, но пропустили случаи подзапросов, запросов с WITH и другие. И всё это в версиях с 12 по 17. Ещё и закрыли уязвимость CVE-2024-10979. Но:
A change to ResultRelInfo - A Near Miss with with Postgres 17.1
Читать далееДля ЛЛ: пространные рассуждения, взять все и поделить.
Только я написал так и не взлетевшую статью, как на РБК вышла статья Экономисты обсудили конец «российской модели» рынка труда Какие признаки указывают на трансформацию занятости в России»
Что интересное во всей этой переписке Энгельса с Каутским, при том, что я не согласен с обоими, это не столько то, что текст напоминает очередной пересказ Прохорова - «Русская модель управления» (тезисы), а то, что в историях с обеих сторон почти нет цифр, и, что еще хуже, нет проверяемых цифр.
Читать далееКоманда Rust рада сообщить о новой версии языка — 1.83.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.
Если у вас есть предыдущая версия Rust, установленная через rustup
, то для обновления до версии 1.83.0 вам достаточно выполнить команду:
$ rustup update stable
Если у вас ещё не установлен rustup
, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.
Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta
) или nightly (rustup default nightly
). Пожалуйста, сообщайте обо всех встреченных вами ошибках.
В конце года многие из нас оглядываются назад, анализируют прошедшие месяцы, пытаются понять, что пошло не так и что можно улучшить в следующем году. Для меня конец года — это время упорядочить всё, избавиться от накопившегося цифрового шума и создать основу для продуктивного старта в следующем году. Поскольку основной рабочий инструмент для меня — это компьютер, каждый год я убеждаюсь, что организованное цифровое пространство помогает сохранять спокойствие и концентрацию.
Если вы тоже чувствуете, что накопившийся за год цифровой беспорядок вызывает усталость и раздражение, конец года — это идеальное время для цифрового ресета. Особенно это важно для людей, которые стремятся повысить свою продуктивность и сделать рабочие процессы более эффективными. Давайте вместе посмотрим, как можно избавиться от этого беспорядка и облегчить себе жизнь.
Цифровой беспорядок как причина выгорания
Вот три признака, по которым становится понятно, что пора разгребать свой цифровой завал:
Читать далее