Обновить

Все потоки

Сначала показывать
Порог рейтинга

Журнал TIME выбрал «человеком» года «архитекторов искусственного интеллекта». Издание поместило на обложку восемь мировых ИИ-архитекторов: Марка Цукерберга, гендиректора AMD Лизу Су, главу xAI Илона Маска, главу Nvidia Дженсена Хуанга, гендиректора OpenAI Сэма Альтмана, главу лаборатории Google DeepMind Демиса Хассабиса, главу Anthropic Дарио Амодея и основательницу World Labs Фэй-Фэй Ли.

Теги:
0
Комментарии8

Киберстоматолог для экскаваторов: как мы следим за здоровьем зубов карьерной техники?

Запускаем серию роликов о том, как применяем компьютерное зрение в «Северстали».

У нас в гостях Олег Карташев, руководитель отдела компьютерного зрения в «Северстали»! В этом ролике мы расскажем о стоматологии в добыче железной руды, и вы узнаете:
💼 как сохранить здоровье зубов карьерной техники;
💼 как следить за шатающимися, но уже не молочными зубами;
💼 сколько зубов выпадает в месяц;
💼 зачем на технике коронки и как за ними следить;
💼 как мы искали зубья ковшей и погрузчиков.

Приятного просмотра. Увидимся в следующем ролике!

Теги:
0
Комментарии0

Каждый день вы выбираете: стек технологий, подрядчика, приоритетную задачу. Но на чём основан этот выбор? Чаще — на интуиции, чужом авторитете или табличке в Excel с субъективными плюсами. Результат? Упущенная выгода, техдолг и проекты, которые не окупаются. Субъективное решение — самая дорогая статья расходов в ИТ.

18 декабря в 16:00 (Мск) приглашаем вас на практический вебинар «Принятие оптимальных решений: от интуиции к ROI и ИИ». Мы покажем четкую систему, как перейти от хаоса к математически обоснованному выбору. 

Вы научитесь:

✔️ Создавать объективную параметрическую таблицу с весовыми коэффициентами, которая «изгоняет демонов субъективности».

✔️ Рассчитывать ROI и TCO: переводить любую техническую особенность на язык денег, понятный финансовому директору.

✔️ Использовать ИИ для автоматизации рутинной аналитики и поиска оптимального решения.

🕓 Когда: 18 декабря, 16:00–17:00 (Мск)

👨‍🎓 Спикер: Шеховцов Алексей — эксперт в области управления ИТ и принятия решений.

➡️ Записаться

Теги:
-2
Комментарии0

Разница между тем что написал человек и сгенерированным контентом и как их различить?

Пост полностью от начала до конца написан человеком.

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

https://habr.com/ru/articles/975696/

Чел проверил мой текст но прикол то в том что я всё брал из ранее мною написанного и это никак не могло быть сгенерированным
Чел проверил мой текст но прикол то в том что я всё брал из ранее мною написанного и это никак не могло быть сгенерированным

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

Я так понял, всем не понравилось, что я выделял текст жирным шрифтом.

А ещё... люди не переносят длинные тире в тексте — это теперь говорит о том что текст писала нейросеть. (а еще людям не нравятся многоточия... Так тоже делает нейросеть)
Мне кажется или авторы статей которым пишут нейросети делают обратное редактирование?
Например, у нейросетей все знаки препинания стоят как надо, все падежи и числа согласованы, нет перепутанных букв и тому подобного. Так что теперь пользователь действует от противного: намеренно расставляет ошибки, убирает длинные тире и "кавычки" там, где они должны быть по правилам. И вуаля — мы получаем чистый продукт, абсолютно «оригинальную» статью, и ни разу не сгенерированную.

А бывает и по-другому: пользователь сам пишет основу, приводит свои данные, но у него хромает структура и общий вид. Тогда ЛЛМ вносит правки — и статья из сырого черновика превращается в безупречный текст.

А вы не думали, что есть люди, которые просто сами умеют грамотно пользоваться знаками препинания и ставят (—) именно там, где нужно?

Есть ещё отдельная история — с маркированными списками. в посте была именно предъява за это.

Например, я хочу перечислить виды скажем, артрита: 1) ревматоидный; 2) подагрический; 3) реактивный. Такой список выглядит максимально не информативно и неказисто.
А если я всё приведу в маркированный вид:

  • Ревматоидный артрит (РА);

  • Псориатический артрит;

  • Анкилозирующий спондилит (болезнь Бехтерева);

  • Подагрический артрит;

  • Реактивный артрит;

  • Остеоартрит (деформирующий остеоартроз);

  • Ювенильный идиопатический артрит.

Тут всё информативно и понятно. Но ведь написала то нейросеть! (ведь люди не умеют пользоваться маркированными списками).

Если мы откроем любой журнал, к примеру, от 2006 года, мы увидим там хороший текст: структурированный и стилистически выверенный без всякой посторонней помощи.

И сейчас, даже если ты сам написал пост, сделал всё правильно — расставил акценты, выстроил логику и причинно-следственные связи, выверил пунктуацию со стилем, наметил в скобки «то, что нужно» и (о боже!) поставил этот знак «—» — Поздравляю ты написал текст в нейросетевом стиле.

Теги:
-1
Комментарии4

Компьютерное зрение для кода: что PVS-Studio разглядел в OpenCV

Что общего у компьютерного зрения и статического анализа? Оба ищут смысл в данных. OpenCV находит образы среди миллионов пикселей, а PVS-Studio — ошибки среди тысяч строк кода. Изучим же исходники крупнейшей библиотеки компьютерного зрения.

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

Давайте посмотрим на кусок кода из проекта:

template<typename T>
struct Ptr : public std::shared_ptr<T>;
// ....
Ptr<FlannNeighborhoodGraph> FlannNeighborhoodGraph::create(....) 
{           
    return makePtr<FlannNeighborhoodGraphImpl>(....);
}

void Utils::densitySort (const Mat &points, int knn, 
                         Mat &sorted_points, std::vector<int> &sorted_mask) 
{
  // ....
  FlannNeighborhoodGraph &graph =                                      // <=
                         *FlannNeighborhoodGraph::create(....);

  std::vector<double> sum_knn_distances (points_size, 0);
  for (int p = 0; p < points_size; p++) {
    const std::vector<double> &dists = graph.getNeighborsDistances(p);
    for (int k = 0; k < knn; k++)
      sum_knn_distances[p] += dists[k];
  }
  // ....
}

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

  1. Функция create создаёт и возвращает умный указатель на тип FlannNeighborhoodGraphImpl, и его счётчик ссылок на объект равен единице;

  2. Создаётся ссылка graph на значение этого умного указателя, при этом счётчик ссылок на объект не изменяется;

  3. Указатель является временным объектом, и поэтому после завершения инициализации счётчик ссылок уменьшится до нуля, что приведёт к освобождению управляемого объекта. Теперь ссылка указывает на разрушенный объект;

  4. В цикле for происходит обращение к невалидной ссылке.

В итоге код, который казался правильным, приводит к неопределённому поведению. Кроме того, эту проблему находит не только PVS-Studio, но и санитайзер. Пруф.

Для исправления необходимо сохранить умный указатель, тогда объект типа FlannNeighborhoodGraph будет жить до конца блока. Можно сделать так:

std::vector<double> sum_knn_distances (points_size, 0);

{
  // get neighbors
  auto graph = FlannNeighborhoodGraph::create(....);

  for (int p = 0; p < points_size; p++) {
    const std::vector<double> &dists = graph->getNeighborsDistances(p);
    for (int k = 0; k < knn; k++) 
      sum_knn_distances[p] += dists[k];
  }
}

Дополнительно ограничили область видимости graph, чтобы ресурс освободился после выполнения циклов.

Хотите узнать больше?

Статический анализ выявляет скрытые дефекты даже в больших работающих проектах. Какие ещё опасные фрагменты кода мы нашли в коде OpenCV? Полный разбор можно найти в отдельной статье.

Теги:
+3
Комментарии1

TDMS Фарватер Web: гибкая трансформация документооборота в новом интерфейсе

Приглашаем на вебинар, где разберем, как управлять проектами, процессами и документами без бумаг и удаленно.

Дата и время: 18 декабря, 11:00-12:00 (МСК)

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

Мы уверены, что современные технологии должны упрощать рутину. Именно поэтому мы создали и развиваем систему TDMS «Фарватер Web» – систему для документооборота и управления проектированием в строительстве.

На вебинаре сфокусируемся на ключевых возможностях:

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

  2. Гибкие и эргономичные бизнес-процессы. В системе реализованы оптимальные рабочие процедуры. Решение адаптируется под специфику предприятия: возможно изменение начальных настроек под нетиповые задачи и создание пользовательских каталогов в структуре проекта.

  3. Быстрый старт. Коробочное решение повышает скорость внедрения, оптимизирует планирование бюджета на внедрение и сопровождение продукта.

  4. Возможность удаленной работы. Решение имеет интерфейс, позволяющий удаленно выполнять задачи по управлению проектами и работе с документами.

  5. Современный адаптивный интерфейс. Удобство просмотра на любых устройствах, динамичные элементы управления, дашборды.

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

Для кого этот вебинар будет особенно полезен?

  • Руководители (Технические директора, руководители департаментов, ГИПы). Увидите инструмент для стратегического контроля над портфелем проектов, сроками и ресурсами.

  • Руководители проектов и их помощники. Поймете, как делегировать задачи, отслеживать исполнение и автоматизировать отчетность.

  • Главные специалисты и ответственные за бизнес-процессы. Получите представление о том, как формализовать и цифровизировать регламенты согласования.

  • ИТ-специалисты. Оцените технологический стек, подходы к внедрению, требования к инфраструктуре и возможности интеграции.

Спикер: Павел Лапонов, специалист по внедрению систем технического документооборота компании «Нанософт».

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

Регистрация на вебинар бесплатна, количество мест ограничено. Это позволит нам сохранить интерактивность и уделить внимание вопросам каждого участника.

Теги:
0
Комментарии0

Запуски 2025: менеджмент в ИТ

В этой подборке собрали три курса, которые будут полезны специалистам, стремящимся развиваться как руководители в своих направлениях.

«Lead DevOps» — 5 месяцев
Научим быть «играющим тренером» — специалистом, который одинаково уверенно разбирается и в технологиях, и в менеджменте. После курса почувствуете, что к большой ответственности прилагается большая уверенность в своих силах.

«QA Lead» — 5 месяцев
Курс поможет вырасти из QA-инженера в руководителя QA-команды. Разберём, как формировать сильную команду, управлять стратегией автоматизации и выстраивать эффективные QA/QC-процессы.

«Технический директор — СТО» — 4 месяца
Программа для технических специалистов, которые хотят развиваться как руководители. Наставники и менторы — CTO из Яндекса и других крупных компаний.

Теги:
0
Комментарии0

OpenAI представила официальный гайд по промптингу новой модели GPT-5.2. Внутри ждут готовые промgты, советы и лучшие кейсы использования — всё это можно адаптировать под свои задачи.

Теги:
+1
Комментарии1

OpenAI представила свою новую модель — GPT-5.2. Модель прокачали в офисной рутине, она умеет создавать хорошие презентации и таблицы. Также в ней улучшен кодинг и контекст. Теперь модель дольше и лучше помнит, о чём общалась с пользователем. Свежие знания до августа 2025 года. Модель почти не ошибается: на 30% меньше галлюцинаций по сравнению с GPT-5.1.

Теги:
0
Комментарии0

@Regnar, навеяло статьёй

Свалился на меня «последний из 32-битных могикан», но машинка прямо финал возможностей архитектуры — насколько я понял, видит спокойно 8 гигов рамы (PAE во все поля?), слотов не пожалели, в общем, в такое чудо бы камень хотя бы на 2 ядра, но, увы…

Я его практически не смотрел ещё и ХЗ когда посмотрю (вроде не совсем мёртвая), но превентивно задам вопрос. Допустим, поставил я туда 32-битный BunsenLabs. Допустим, я хочу запустить какое-нибудь 64-битное приложение, которое в 32 битах давно уже не обновляется. Допустим, мне пофиг, что там в плане скорости (очень важное допущение, потому что оно как бы понятно, что там будет).

Насколько это реально — настроить для него резервативию… презервацию… короче, специально обученный загон с софтовой эмуляцией 64 бит? Существуют ли решения? Чтобы их установить и отконфигурировать, обязательно пройти все круги ада, как в той статье?

Практического смысла это по понятной причине не несёт — просто пятничное.

Теги:
-2
Комментарии0

Доброго всем. Первая публикация, прошу не особо...

Не стану растекаться мыслью по древу, пост - следствие поиска по запросам типа "как лучше вставить и анимировать SVG иконки", и подобным в том же ключе. Так как самыми релевантными ответами поиска не удовлетворён, решил написать свой, во-первых, чтобы услышать сообщество. Мало ли, возможно технология уже вовсю применяется в фреймворках, и на поиск все забили "всё и так слишком очевидно".
Во-вторых, сам до сих пор копаюсь в ванильном, поэтому, если старшие товарищи найдут сей вариант приемлемым, пусть пост останется как справка, вроде "а чё, так можно было?". Если же такая практика не применима по ряду пока неизученных мной причин, пост тоже пусть остаётся дополненный комментариями, как пример того "как не надо делать". В общем.

Решил упаковать спрайт в Web Components. Для примера взял отображение файловых иконок, за подопечных три распространённых файловых формата .docs, .xls, .pdf. Раз уж мне и так пришлось испытать муки отсутствия музы( вообще ни разу не художник), прошу отнестись с пониманием к внешнему виду конечного продукта. Упор был на простоту, контролируемость, компоновку. В том смысле, что косметика человеком с утончённым восприятием этого мира может быть применима отдельно.
Да, и ещё один аспект постарался обыграть - наличие общих свойств для всех иконок, коими выбрал подложку, и текст mime типа, и уникальные для каждой иконки элементы, ими выступили "брендовые" цвета и элементы. Так, выбор иконок файловых форматов для спрайта показался оптимальным.
Далее, в общем код(сокращённо, рабочий пример по ссылке), совсем немного к нему объяснений и ссылка на песочницу. И, само собой, ожидание комментариев.

customElements.define("wc-icon-file",
  class WC_ICON_FILE extends HTMLElement {
    constructor() {
      super();
      this.#preform = '';
      this.#mime = '';
      this.#unic = '';      
    }  
    connectedCallback() {
      this.init();
      this.innerHTML=this.#preform;
    } 
    init() {
      this._mime = this.getAttribute('data-mime');
      let availableMime = {
        xlsfile: `<g class="wc-icon-${this.#mime}">
          <line style="stroke-width:3;stroke-linecap:butt;" x1="13" x2="17" y1="24" y2="24"/>
          <line style="stroke-width:3;stroke-linecap:butt;" x1="18" x2="22" y1="24" y2="24"/>
          // и т.д.
          <text x="8" y="19" class="f-mime">.xls</text>
          </g>`,
        docfile: `<g class="wc-icon-${this.#mime}">
          <line style="stroke-width:1.8;stroke-linecap:round;" x1="20" x2="24" y1="23" y2="23"/>
          <line style="stroke-width:1.3;stroke-linecap:round;" x1="16" x2="30" y1="27" y2="27"/>
          // и т.д.
          <text x="8" y="19" class="f-mime">.doc</text>
        </g>`,
          pdffile: `<path class="wc-icon-${this.#mime}" d="m 21.963376,23.938571 // и т.д. />
          <text x="8" y="19" class="f-mime">.pdf</text>` 
        }      
        this.#unic = availableMime[this.#mime];
        this.#preform = `<svg class="wc-icon-file" viewBox="0 0 48 48">
           <path class="${this.#mime}" d="M13.528 3.087 30 3l8 9-.316 28.075c-.035 3.151-1.09 
            4.143-3.716 4.11h-20.44 c-2.303.095-3.676-.718-3.716-4.11V7.197c-.03-2.459
            1.504-4.198 3.716-4.11z"/>
            ${this.#unic}
            </svg>`
  }; 
});
let wcIconFile = document.createElement('wc-icon-file');
// export {wcIconFile} по необходимости

Сам компонент на странице объявляется как обычно:

<wc-icon-file data-mime="xlsfile"></wc-icon-file>
<wc-icon-file data-mime="docfile"></wc-icon-file>
<wc-icon-file data-mime="pdffile"></wc-icon-file>    

Код прокомментирую на предмет того, что в init() пришлось соблюсти порядок объявления переменных. Для определения схожих классов с разными "модификаторами" сначала брался атрибут в компоненте. По нему же делалась выборка this.#unic впоследствии вставляемая в this.#preform . Стили здесь не привожу, отмечу лишь, что настройки :hover и анимации там вполне работают.

Благодарю, что уделили время.

Теги:
+3
Комментарии3

20 демо-уроков, которые нельзя пропустить бэкенд-разработчикам

Привет, Хабр. Сегодня делимся подборкой открытых уроков, которые пройдут в Otus в декабре. Уроки проводят преподаватели курсов в формате живых вебинаров — это шанс не только получить нужные знания, но и задать свои вопросы экспертам. Участие бесплатное (нужно только зарегистрироваться). Присоединяйтесь!

Полное расписание бесплатных демо-уроков смотрите в календаре.

Теги:
+4
Комментарии0

Как GUDDA сэкономила в три раза, развернув инфраструктуру для 1С в облаке

👨‍💻 Что за компания

GUDDA — это сеть ломбардов, магазинов электроники и ювелирных изделий. У компании есть филиалы в разных городах России, например Ростове-на-Дону, Азове, Батайске, Каменск-Шахтинске, Новочеркасске, Таганроге и Шахтах. GUDDA дает краткосрочные займы под залог, покупает и продает украшения, гаджеты и технику.

🕵️ Какая была задача

IT-инфраструктура GUDDA изначально строилась по подходу cloud native: часть инфраструктуры разместили в частном контуре, а в облаке — системы, нагрузка на которые возрастала по ходу развития бизнеса.

Компания хотела нарастить мощности для баз 1С, SQL-серверов и системы резервного копирования, поэтому решила реализовать мультиоблачную стратегию. Для этого GUDDA начала искать еще одного облачного провайдера.

Ключевым требованием стала отказоусточивость — даже минута простоя может стоить GUDDA миллионы рублей. Еще перед переездом в облако команда хотела протестировать сервисы на реальных задачах и оценить, насколько хорошо выстроена коммуникация с технической поддержкой провайдера.

👨‍🔧 Как ее решили

GUDDA в течение месяца тестировала сервисы Cloud.ru, подбирала оптимальные конфигурации процессоров и накопителей. Менеджер со стороны провайдера всегда была на связи и быстро направляла к нужным техническим специалистам, если появлялись вопросы по работе сервисов или настройке инфраструктуры.

К концу теста компания попробовала все варианты и четко знала, что реализует и сколько это будет стоить. В итоге клиент выбрал виртуальный ЦОД с высокочастотными процессорами 3,5 ГГц. 

Для миграции мы предоставили GUDDA выделенный канал с гарантированной средней скоростью 500 МБ/с — это позволило быстро перенести данные в облако. Компания получила готовую облачную инфраструктуру, в которой меньше чем за час развернула и настроила нужные виртуальные машины.

📈 Что в результате

Инфраструктура в облаке Cloud.ru работает без сбоев, а команда GUDDA может масштабировать мощности через личный кабинет, не обращаясь в поддержку.

Главный финансовый результат — содержать аналогичную инфраструктуру локально обошлось бы компании в три раза дороже, чем в облаке.

GUDDA планирует перенести в облако и другие системы, включая базы 1С для круглосуточных точек, организовать катастрофоустойчивую инфраструктуру с использованием резервного ЦОД.

Теги:
-2
Комментарии0

Ближайшие события

Привет, приятно когда kui увеличивается, даже если увеличился совсем чуть-чуть. Добавил команду helm uninstall.

helm uninstall
helm uninstall

Творите, выдумывайте, пробуйте!)

Теги:
0
Комментарии0

Премьера года: знакомьтесь с DataForge!

Вебинар — 16 декабря, 12:00

Друзья, делюсь новостью, которой горжусь: коллеги запускают премьерный вебинар и впервые подробно покажут DataForge — новую российскую self-service платформу для централизованного управления аналитическими данными.

Я внимательно следила за развитием этого продукта и на некоторых этапах принимала участие в обсуждениях — особенно за те функции, которые лично для меня, как аналитика, принципиально важны:
— быстрый сбор и систематизация витрин
— возможность видеть и настраивать бизнес-логику
— единый подход к расчётам для всех систем без бесконечного ручного труда в Excel

DataForge — это инструмент, который сам собирает и поддерживает Data Mart слой для любых связанных систем. Особенно актуален для тех, кто строит витрины на ClickHouse: автоматическая генерация витрин, согласованность расчётов для всех потребителей данных — и всё это без лишних доработок со стороны разработчиков.

О чём расскажут на вебинаре:

  • Какие задачи решает DataForge и как ускоряет работу всех подключённых систем, включая BI

  • Как устроена структура продукта: его место в архитектуре и ключевые компоненты

  • Подробно покажем семантический слой: реестры показателей, измерений, единая бизнес-логика

  • Как работает автоматическая генерация SQL и публикация витрин в базе

  • Как DataForge обеспечивает согласованность метрик и прозрачность данных в любых BI-инструментах

  • Как платформа автоматически транслирует изменения в бизнес-логике во все связанные системы

Спикеры:
Технический директор и владелец продукта DataForge

Формат:
Онлайн, 1 час живого диалога с экспертами, включая демонстрацию интерфейса и ключевых возможностей платформы

Участие бесплатное!

Регистрация по ссылке

Теги:
0
Комментарии0

Слои валидации

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

Валидация на клиенте (если он есть)

Сюда входит формат данных, обязательность полей и так далее. Чуть сложнее, когда надо проверять, например, уникальность имени пользователя или емейла, в этом случае придется ждать отправки или делать запросы на бекенд во время заполнения. Главное что надо знать про эту валидацию, то что она вспомогательная. Клиент всегда можно обойти и сделать запрос напрямую. Дублирование как ни крути, хотя и важно для UX.

Структурная валидация

Это валидация, которая, обычно, происходит на уровне самого фреймворка или в самом начале цикла обработки запроса. Для этого данные прогоняются через валидаторы json схемы, которая в идеале генерируется из openapi спеки. В самых деревянных случаях ручками (так делать не надо). Что важно понимать, это не доменная валидация (бизнес правила). Да тут можно проверить формат, наличие/отсутствие, но нельзя и не правильно пытаться проверять уникальность, выполнение каких-то условий, например количества денег на счету и тому подобное.

Кстати с точки зрения кодов ответа, на этом уровне несовпадение со схемой воспринимается не как ошибка валидации, а как неверный запрос с неверной структурой, а это код ответа 400.

Доменная валидация

Это уже уровень бизнес правил. Такая валидация включает в себя любые правила, которым должны соответствовать данные с точки зрения бизнес-логики приложения. Уникальность email, баланс на счету, ограничения переходов - все это относится к доменному слою, и проверяется глубже, после прохождения проверки структуры. Во фреймворках это слой, который часто реализуется внутри моделей (если они есть). В любом случае такие валидации должны быть вынесены в какой-то свой слой, который можно переиспользовать для разных точек входа, асинхронной обработки и т.п.

Доменные проверки, как и клиентские могут дублироваться, если завязаны на консистентность базы данных. Например во многих фреймворках (с orm) есть валидация на уникальность, которая делает sql-запрос, но в документации у этого валидатора всегда написано, что это не надежно (из-за конкурентности) и в таких ситуациях обязательно делать индексы в базе данных.

В случае провала такой валидации, в api принято возвращать код 422

Валидация на уровне базы данных

Все предыдущие уровни не могут дать 100% гарантий, особенно учитывая, что данные в базе обновляются далеко не только по запросам снаружи. Поэтому есть вещи, которые обязательно делать на уровне базы данных. Сюда относятся уникальные индексы, внешние ключи (если делаете их), nullable, ограничение по длине и т.д. Технически многие базы данных позволяют писать кастомные валидации, которые соблазнительно использовать как доменную валидацию. Не надо этого делать :)

Проверка корректности данных

Это тип валидации "ни туда ни сюда", потому что он может выполняться в разных слоях, в зависимости от используемого стека. К таким проверкам относится подтверждение пароля или, например, емейла. С точки зрения бизнес-логики, этой части вообще не существует, она есть только на уровне форм, потому что все давно привыкли так писать (хотя необходимость под вопросом). При этом ни в базе, ни в дальнейшей работе оно никак не используется и вообще это не данные, которые куда-то сохраняются.

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

Больше про разработку в моем телеграм-канале Организованное программирование

Теги:
+3
Комментарии0

Где учиться кибербезопасности?

На Хабр Карьере мы собираем для вас лучшие и самые актуальные курсы, чтобы обучение было максимально полезным.

Сегодня мы решили собрать для вас подборку курсов по кибербезопасности — одному из самых востребованных сейчас направлений в IT. Взгляните:

Защита информации. Шифрование, резервное копирование и защита от утечек данных.

Информационная безопасность. Обеспечение безопасности корпоративных сервисов, разработка и внедрение политик безопасности.

Анализ вредоносных программ. Анализ вредоносного ПО (вирусы, трояны, программы-вымогатели) и разработка защиты.

Кибербезопасность. Общее направление: защищаем сети, системы и приложения от атак.

Системное администрирование. Администрирование серверов, сетей, IT-инфраструктуры, настройка прав и обеспечение стабильности работы систем.

Мониторинг сетей. Мониторинг сетевой активности, выявление аномалий и угроз, настройка систем обнаружения вторжений и анализ трафика.

→ Еще больше полезных курсов на нашей витрине

Теги:
+1
Комментарии0

Прошли аттестацию высшего уровня защиты данных УЗ-1 🛡

Официально подтвердили максимальный уровень защищенности нашей инфраструктуры.

Теперь вы можете размещать медицинские системы и работать с любыми специальными категориями данных (здоровье, биометрия).

➖ Локации: Москва, Санкт-Петербург, Новосибирск
➖ Защита: аппаратные межсетевые экраны, IDS/IPS, сканирование уязвимостей, контроль целостности среды виртуализации

Ссылка на документы →

Теги:
+11
Комментарии5

Наконец-то радостная новость от хедхантера :)

С 15 декабря доступ к соискательскому API hh будет закрыт. Мы приняли это решение, чтобы обеспечить безопасность и сохранить прозрачность для всех, кто пользуется платформой hh.

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

К сожалению, альтернативных форматов работы с соискательским API нет.

Теперь больше никаких С**ий, и прочих подобных ботов, мешающие нам, честным специалистам, поиск работы :)

Теги:
0
Комментарии32

Демонстрационный атлас Luxms BI: лучшие практики в одном месте

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

Атлас содержит более 40 демонстрационных дэшбордов, каждый из которых показывает конкретную функцию Luxms BI: от стилизации таблиц и условий форматирования до использования write-back, LPE-выражений, расширенного расчетного функционала и многого другого.

Каждый дэшборд – это компактный «мини-кейc». Справа – готовая визуализация, слева – объяснение, из чего она состоит и как настроена. Вы сразу понимаете механику, видите конечный результат и можете повторить его у себя в проекте.

Демоатлас Luxms BI
Демоатлас Luxms BI

Все примеры построены на локальных кубах, которые устанавливаются вместе с пакетом. Это значит, что можно изучить структуру данных и свободно экспериментировать с собственными сценариями.

Атлас объясняет, как решить большое количество прикладных задач: как покрасить строки в таблице, как настроить write-back, как выполнить расчет, как скрыть столбец, как настроить действие по клику, как внедрить интерактивные элементы и многое другое.

Готовые решения, собранные в одном месте, делают работу с платформой намного проще, атлас выполняет роль и некого справочника лучших практик, и источника быстрых находок для разработчиков, аналитиков, или тех, кто только начинает знакомство с Luxms BI.

Посмотреть видеообзор и узнать, как получить доступ к демоатласу, можно на нашем сайте.

Теги:
0
Комментарии0