После нашего кейса с информационной защитой для государственного учета алмазов, изумрудов и сапфиров, мы были уверены: это самые дорогие физические объекты, которые нам когда-либо доведется защищать в информационном пространстве. А потом появился контракт с МосгорБТИ.
Просто вспомните, сколько стоит средняя квартира в Москве. В пересчете на караты — это не один и не два бриллианта, а целая россыпь. А уж если речь о земле в пределах Садового кольца… Только вместо сейфа — база данных, а вместо охраны — продуманная ИБ-инфраструктура.
Читать далееВ рамках инициативы поддержки и популяризации open-source в России, я выложил в открытый доступ минимально жизнеспособную версию (MVP) своей галереи готовых решений, которая призвана упростить запуск проектов для малого бизнеса, разработчиков и энтузиастов.
Если объяснить просто — это некий аналог WordPress, но не для сайтов, а для готовых решений и данных, которые можно устанавливать и разворачивать буквально за пару минут.
Первое опубликованное решение — Telegram-бот для автоматического сбора брифов от клиентов.
Читать далееpg_stat_statements — стандартное расширение PostgreSQL для сбора статистики выполнения SQL-запросов. Статистика позволяет анализировать поведение запросов во времени, выявлять проблемные участки и принимать обоснованные решения по оптимизации. Однако в системах с высокой конкуренцией pg_stat_statements само по себе может стать узким местом и вызывать просадки производительности. В этой статье разбираем, в каких сценариях расширение становится источником проблем, как устроено сэмплирование и в каких случаях его применение позволяет снизить накладные расходы.
Читать далееДоброго времени суток, Хабр!
Сегодня хотел бы поговорить об анемичной модели — одном из самых дискуссионных топиков (особенно для приверженцев DDD) и о том, как, по моему мнению, правильно её готовить. Для кого-то анемичная модель — это антипаттерн, тогда как для других это единственный правильный способ реализации приложений. Многие использовали её годами и даже не знали, как она называется, и что кем-то она считается антипаттерном. Реальность же такова, что анемичная модель — это инструмент, который может подходить или не подходить в зависимости от ситуации, но при этом является очень популярным и, по факту, «стандартом де-факто» для многих программистов и организаций. Хотя в последние годы я и вижу тенденцию к тому, что DDD и, соответственно, богатая доменная модель становятся всё популярнее, пока что, по моему мнению, им далеко до популярности анемичной модели.
Читать далееИли как рассмешить миллионы и влюбить в себя клиента с одного ролика про брови
1 апреля — день, когда бренды могут оторваться по полной. Никаких тебе KPI, строгих брифов и «продающего оффера». Только креатив, абсурд и смех сквозь сторис. Но вот что интересно: иногда такая шутка дает бренду больше, чем весь его медиаплан за квартал. Я разложил по полочкам, почему первоапрельские приколы работают, а ещё — собрал кейсы, которые лично мне показались гениальными.
Читать далееЧто, если навигатор перестанет упрямо твердить «Развернитесь!», когда вы свернули с маршрута и предложит новый, более вам подходящий?
Изначально мы хотели решить этот конкретный кейс, ведь слишком прямолинейный алгоритм не допускал, что пользователь может намеренно выбрать другой путь, и всегда стоял на своём. Решать проблему начали с логики перестроения и реализовали алгоритм дискриминации маршрута. По сути, этот алгоритм научился строить маршруты, которые не были похожи на изначальный.
Узнать подробнееPHPBench - это, кажется, крайне не популярный фреймворк для тестирования производительности кода на PHP. По крайней мере за 18 лет он мне ни разу нигде не встретился, а услышал об нём примерно года назад. Фреймворк PHPUnit-подобный, где бенчмарки, как и тесты из PHPUnit объединяются в классы, группы и т.д. и т.п. Чтобы много не болтать, давайте напишем чуть кода и отбенчмаркаем его.
Я пошагово опишу всё, чтобы вы могли быстро повторить всё это у себя. Вначале создаём директорию в которой будем химичить и переходим в неё:
Читать далееКогда я вижу очередную статью или видеоурок про тестирование кода, я почти уверен, что мне опять расскажут про моки.
Создаётся впечатление, что это самый лучший и правильный способ писать тесты, и вообще, невозможно обойтись без моков. Это не так! Можно писать тестируемый код без моков. Более того, использование моков следует избегать и использовать их только в специфичных случаях.
Читать далееСегодня мы обсудим самый интересный и важный вопрос в человеческой истории — есть ли хоть где-нибудь кто-то кроме нас? По-хорошему этот вопрос стоило бы расширить на «есть ли где-нибудь что-то кроме нас», но обо всем по порядку. К 75-летию Парадокса Ферми и 30-летию проекта «Феникс» рассказываем, как лучшие умы человечества искали внеземную жизнь — как они все еще ее ищут — и почему, судя по всему, они никогда ничего не найдут, и мы одни во Вселенной.
Читать далееПривет, Хабр!
Сегодня разберёмся с юнит‑тестами в C# на основе xUnit v3 — библиотеки, которая стала практически стандартом де‑факто в.NET‑среде.
Почему именно xUnit? Всё просто: его создали Джим Ньюкирк и Брэд Уилсон — разработчики NUnit. Они решили выкинуть всю архаику вроде [SetUp], [TearDown] и прочих рудиментов и построили фреймворк с нуля, строго под TDD. Весной вышла xUnit v3 2.0.2, в которой завезли Assert.MultipleAsync, полностью обновили сериализацию. А в.NET 9 уже штатно продвигается Microsoft.Testing.Platform (MTP) — сверхлёгкий тестовый рантайм, с которым xUnit v3 работает прямо из коробки. Короче говоря, это самый нативный выбор под.NET 9 на сегодня.
Читать далееЛюбите холодный лимонад в жаркий летний день? Тогда вам будет интересно узнать, как телематическое оборудование обеспечивает контроль за работой холодильного оборудования, поддержание нужной температуры и качество продукции в магазинах.
Разберем проект компании TN-GROUP с «Черноголовкой», где с недорогим железом удалось закрыть весь нужный функционал для 300 холодильников.
Читать далееНаписал хорошую SEO-статью, залетел в топы выдачи по Яндексу и Google, собираешь по несколько тысяч просмотров ежемесячно, тебя лайкают, но лидов с этой статьи — нуль, продаж — нет, итоговая ценность статьи — отсутствует, бюджет слит.
Эта проблема преследовала меня первые полтора года карьеры: у меня не было ни наставника, ни интересного кейса, которые могли бы меня научить. Но на нынешнем месте у меня появился наставник, и он объяснил мне, в чем дело. За это я ему бесконечно благодарен, и хочу теперь поделиться тем же с тобой.
Этот материал для начинающего маркетолога — не для опытных профессионалов.
Читать далее10 новых российских продуктов для проверки Telegram-каналов на наличие нежелательного контента, создания виджетов для сайтов и квиз-статей и многого другого. Битва за «Продукт недели» началась!
Product Radar — здесь каждую неделю публикуются лучшие онлайн-сервисы и железки от русскоязычных команд.
Читать далееПосле событий 2022 года большинство издателей перестали работать с Россией. Многие игры исчезли из продажи в российском регионе, и покупать их приходится, прибегая к различным ухищрениям. Пострадала и озвучка: большинство игр теперь хорошо, если имеют субтитры на русском языке, а дубляж и вовсе стал редкостью.
На этом фоне популярными стали неофициальные озвучки от сторонних студий вроде GamesVoice и Mechanics VoiceOver. Впрочем, порой своих русскоязычных поклонников радует Sony, Capcom, Activision и несколько других издателей. Собрали подборку главных игр, вышедших с 2022 года, с полной русской локализацией — таких, что запустил и комфортно играешь.
Читать далееНеделя назад мой проект был "швейцарским ножом в картонной коробке". Сегодня это настоящая платформа с PWA, AI-анализом по зонам, системой защиты от ботов, отслеживанием износа снаряжения, прогнозом погоды для маршрутов и детальной аналитикой клубов. Рассказываю, что изменилось под капотом и почему это важно.
Читать далее— Я не продаю часы, — ответил я.
— Ну хорошо, тогда что насчёт дней, недель, месяцев? Мне нужно хоть что-то, чтобы прикинуть потенциальные расходы.
— Я обычно оцениваю работу под ключ. Часовой ставки у меня нет.
— У всех есть такая ставка, хотят они того или нет.
— Что ж, здесь я вынужден согласиться. Но всё же хотелось бы для начала внимательно взглянуть на проект, от него многое будет зависеть, — попробовал я соскочить с темы.
Потенциальный клиент не стал дальше на меня давить. А уже потом я, засыпая поздним вечером и переваривая события дня, хлопал себя по лбу со словами: «Надо было просто ответить, что он застал меня подобным вопросом врасплох и что я готов ответить на него чуть позже!».
Почему же я сразу не назвал своей часовой ставки?
Читать далее