Рубрика «validation» - 2

Если вспомнить все ТЗ с описаниями валидации полей — они всегда выглядили примерно так:

  • не должно быть короче 6 символов
  • не должно превышать 12 символов
  • должно включать только латинские символы, цифры и знак подчёркивания

Требования часто приходят набором простых однозначных фраз. А мы, программисты, переводим эти требования в код.

Можно превращать их в одно ультимативное регулярное выражение, вроде

const validateLogin = login => /^[a-zA-z_d]{6,12}$/.test(login);

Но лучше писать более простые функций которые легче читать и связывать с непосредственным ТЗ:

const charMatch = new RegExp('^[a-zA-Z_0-9]*$');
const validateLogin = login => {
    if (login.length < 6) return false;
    if (login.length > 12) return false;
    if (!charMatch.test(login)) return false;
    return true;
};

А что если ещё сильнее упростить этот код до чего-то вроде:

const validateLogin = login => 
  validate(login)
    .notLessThan(6)
    .notLongerThan(12)
    .hasOnly(['a-z','A-Z','0-9','_']);

Читать полностью »

Пару лет назад я увидел на хабре статью про LIVR и с тех пор использую библиотеку на всех проектах. С переходом на React я адаптировал для валидации ее же, т.к. существующие решения не предлагали гибкости которой мне хотелось. Свое решение я уже использую на двух проектах и решил выложить в npm — может кому-то еще оно покажетсяя удобным.
Пакет называется react-livr-validation.
Читать полностью »

Применение принципа poka-yoke в программировании на примере PHP - 1

Всем привет! Я Алексей Грезов, разработчик Server Team Badoo. Мы в Badoo всегда стараемся сделать так, чтобы наш код было легко поддерживать, развивать и переиспользовать, ведь от этих параметров зависит, насколько быстро и качественно мы сможем реализовать какую-либо фичу. Одним из способов достижения этой цели является написание такого кода, который просто не позволит совершить ошибку. Максимально строгий интерфейс не даст ошибиться с порядком его вызова. Минимальное количество внутренних состояний гарантирует ожидаемость результатов. На днях я увидел статью, в которой как раз описывается, как применение этих методов упрощает жизнь разработчикам. Итак, предлагаю вашему вниманию перевод статьи про принцип "poka-yoke".

Читать полностью »

Пишем Guard - 1

Привет!

Есть несколько способов проверять аргументы на правильность. Например, для проверки на null можно использовать:

  1. if (!ReferenceEquals(arg, null)) throw…
  2. Code Contracts: Contract.Requires(!ReferenceEquals(arg, null))
  3. Guard.IsNotNull(arg, nameof(arg))

В статье я рассмотрю только третий вариант (все примеры кода — для C#, однако некоторые из них будут полезны и в Java).

Читать полностью »

в 10:57, , рубрики: php, validation, валидация, метки:

Знакомство с Rock Validate - 1Валидация данных является одной из множества практик в разработке безопасного web-приложения. Даже совсем «юный» разработчик при первом своём знакомстве с html-формой пытается вывести красивое сообщение об ошибке. Что уж говорить про модель в каком-нибудь навороченном фреймворке. А потому…

Предлагаю вашему вниманию библиотеку для валидации данных с кастомизацией, интернационализацией и иными «плюшками». Используя известный инструмент Respect/Validation с множеством вбитых по ходу костылей, я в какой-то момент сказал себе: Хватит!

Были поставлены задачи:

  • сохранить элегантный синтаксис (сцепной принцип для правил);
  • реализовать «лёгкую» и гибкую альтернативу;
  • добавить интернационализацию;
  • предоставить возможность добавлять свои правила;
  • подготовить фундамент для санитизатора — обеспечить единый стиль реализации для обеих библиотек.

Читать полностью »

При устройстве на работу java программистом меня попросили написать тестовое web приложение «Телефонный справочник». Хочу поделиться с вами этим «шедевром».

Вид и функциональность приложения

  • Добавление;
  • Удаление;
  • Поиск;
  • Валидация данных.

Читать полностью »

Когда я только начинал задумываться о том, чтобы приобщиться к миру веб-разработки, и выбирал язык, с которого начну, одна из википедий мне напела, что в основе философии Rails лежат 2 принципа: Convention over configuration (CoC) и Don’t Repeat Yourself (DRY). Что касается первого — я тогда вобще не понял о чём речь, а вот второй понял, принял и ожидал, что в недрах этого замечательного фреймворка, я отыщу нативный инструмент, позволяющий мне один раз написать правила валидации для атрибутов модели, и потом использовать эти правила как для front, так и для back проверок.
Читать полностью »

Доброго времени суток, читатели!

Я хочу рассказать вам о том, как я восстанавливал прошивку RAID-контроллера LSI MegaRAID после неудачного обновления.
Когда эта беда случилась со мной, то информации об этом я практически не нашел, хотя, допускаю, что плохо гуглил.

Анамнез

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

Зачастую, особенно в случае с 1U серверами я беру их уже с интегрированным контроллером LSI MegaRAID.

Но проблема с ними заключается в том, что сама Supermicro не очень охотно выкладывает прошивки для встроенных контроллеров, так что я их обычно прошиваю актуальной прошивкой (масло масляное, да) от аналогичного контроллера LSI. Проблем не возникало до этих пор.

Недавно привезли несколько серверов с контроллерами LSI 2208 на борту и достаточно старой прошивкой.
Т.к. дискретные контроллеры на этих чипах я тоже активно использую, то особо не сомневаясь загрузился с флешки с Linux-ом, запустил привычное:

./MegaCli64 -AdpFwFlash -f mr2208.rom -a0

и пошел заниматься дальше своими делами.

Когда я в следующий раз обратил взор на терминал сервера, то увидел ту же самую картину, что и была — «Flashing firmware...» и никакого результата. Беда, подумал Штирлиц.
Читать полностью »

Все началось с новой работы, на которой пришлось отказать от Zend и перейти на Yii. При создании личного кабинета для сайта потребовались динамическое добавление полей в форме. После ковыряния в интернете пришло такое решение. Поехали:
Читать полностью »

При разработке веб приложений, мы используем Asp.net MVC и backbone.js. При написании логики проверки достоверности у нас возникла проблема дублирования кода. Логику приходится описывать в модели на сервере и в модели backbone на клиенте. Хотелось бы автоматически перенести правила валиции с сервера на клиент. Для решения этой проблемы мы реализовали аналог стандартной ненавязчивой проверки достоверности данных MVC для backbone.js Подробности ниже.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js