• Валидация строк с validate.it.js

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


      • не должно быть короче 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','_']);
      Читать дальше →
    • Паттерн Стратегия на JavaScript

        Ранее я уже публиковал перевод статьи с таким же названием. И под ней товарищ aTei оставил комментарий:


        По-моему кое-чего не хватает в этой статье и в статье в википедие — примера в стиле «Было плохо — стало хорошо». Сразу получается «хорошо» и не достаточно ясно, что это действительно хорошо. Буду благодарен за такой пример.

        Ответа на него так никто и не дал до сих пор. За 3 года я набрался опыта смелости и теперь, как ответ на этот комментарий, хочу написать о паттерне Стратегия от своего имени.


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

        Читать дальше →
      • BTSync как средство бэкапа

          День добрый комрады. Спустя некоторое время, как я устроился системным администратором, я стал сталкиваться с такой бедой задачей:

          Специфичный юзкейс, решаемый в данной статье


          Подходит сотрудник с просьбой восстановить файл который вчера/сегодня/только-что удалили, а сейчас он кровь-из-носу понадобился. При этом дату создания файла он не помнит, а дату последнего изменения и знать не знает, ибо с файлом в разное время могли работать множество разных сотрудников. И восстановить нужно, разумеется, последнюю версию.
          Либо файл вчера/сегодня/только-что случайно и фатально отредактировали/перезаписали. И восстановить нужно, соответственно, предпоследнюю версию.

          Итак, исходные данные:
          • Имя файла и его адрес: известны хотя бы примерно
          • Дата создания искомой версии файла: не известна
          • Бэкап ежедневный, инкрементальный или равный ему по ресурсоёмкости. Полный и разностный не используются ввиду ограниченности объёмов дискового пространства в хранилище/приемнике бэкапов.
          Читать дальше →
        • Telephone Directory

            Телефонный справочник для Active Directory




            Для тех, кто статью читать не захочет, сразу репозиторий на github.

            А остальных под катом ждёт бессвязная и бессмысленная история о том, как я дошёл до жизни такой, при помощи node-webkit, написал приложение, которого джва года ждал.
            итак...
          • Паттерн Стратегия на Javascript

            • Translation
            • Tutorial
            От переводчика:
            Я собрался изучить новый для меня паттерн Стратегия, но не нашёл толкового русского описания его реализации на javascript. Статья на wiki пугает своей сложностью, а наглядность примера оставляет желать лучшего. По этому и взялся за перевод этой статьи, одновременно разбираясь, что же из себя представляет данный паттерн.
            Спойлеры и текст, выделенный серым, являются моими комментариями.

            Далее мы разберём примеры того, как я использую СТРАТЕГИЮ в Javascript, и как он используется реальной библиотекой, для разбиения её на небольшие части.
            поехали
            • +20
            • 29.2k
            • 8
          • Вышел test.it v1.1.0 — что дальше?

              Добрый день хабр.
              Вчера вышла версия 1.1.0 test.it — фреймворка для тестирования js кода.
              Он, наконец, обзавёлся функционалом, отсутствие которого делало его неполноценным:
              • Асинхронные тесты/группы
              • Запуск отдельных тестов/групп
              А так же прочими мелочами.

              картинка для привлечения внимания
              Кто не любит много слов — Сайт на котором можно увидеть код в действии, GitHub, Wiki
              ченджлог c подробностями и небольшой опрос
            • test.it — не опять, а снова

              • Tutorial
              Добрый день хабр.
              После моей статьи о test.it прошла вечность неделя. И как я не планировал растянуть этот срок хотя бы на месяц, но пришло время для новой публикации.
              Картинка для привлечения внимания:

              С того времени библиотека (во многом благодаря хабравчанам) обросла новым функционалом.
              А ввиду того, что синтаксис, приведённый в прошлой статье, в текущей версии работает не полностью, откладывать эту статью ещё на 3 недели у меня нету права.

              Кто не любит много слов — Сайт на котором можно увидеть код в действии, GitHub, Wiki
              И так, что же нового?
              • +25
              • 8.3k
              • 5
            • test.it — тестирование JavaScript или мой велосипед с вложенностью и подробным выводом

              • Tutorial
              Внимание! В статье содержатся примеры работы до релизной (до v1.0.0) версии библиотеки.
              Скоро выйдет ещё одна статья. Эта только в качестве ознакомления. Всю необходимую для использования библиотеки информацию можно получить в README и комментариях в коде.


              Картинка для привлечения внимания:
              test.it habrahabr
              Я — начинающий веб-разработчик. И не так давно мне захотелось научиться работать так, как это делают настоящие программисты.
              Под этим я понимал 3 основных элемента:
              1. Использование системы контроля версий.
              2. Грамотное комментирование кода.
              3. TDD или хотя бы простое юнит-тестирование кода.

              Для первого пришлось освоить азы git, и создать свой первый репозиторий на github. Для второго выбрал JsDoc, из-за которого пришлось перебраться с notepad++ на sublime text (только там был соответствующий плагин).
              А вот с третьим, неожиданно для меня, возникли серьёзные трудности.
              с которыми я решил бороться велосипедом
            • FireBug* Console API

                Введение


                Firebug добавляет глобальную переменную с именем «console» к каждой веб-странице, загруженной в Firefox. Этот объект содержит много методов, которые возволят Вам писать на консоль Firebug и показывать информацию, проходящую через скрипты.
                firebug.ru

                К нашему счастью, не только firebug обладает данным функционалом:
                • Chrome Javascript console — практически точный аналог
                • Opera Dragonfly console — функционал реализован частично
                • Firefox Web console — функционал реализован частично

                Эта статья — мануал по Console API.
                Примеры даны из chromeChrome 28.0.1500.72 m, firebugFirebug 1.11.3, firefoxFirefox 22.0, operaOpera 12.15 (версия до ухода с presto)
                Читать дальше →
              • Каким я хочу видеть HTML6

                Заранее хочу предупредить, что тут вы не найдёте каких-либо исследований на тему развития веба и html в частности. Тут не будет ни оценки важности CSS3 ни семантики тегов html4 — html5. Это просто крик в пустоту о том, каким инструментом я, как верстальщик, хотел бы пользоваться.
                Если интересно, прошу пожаловать под кат.
                Читать дальше →